diff --git a/dist/bundle.js b/dist/bundle.js index dff5a44..d0c2f28 100644 --- a/dist/bundle.js +++ b/dist/bundle.js @@ -1,2 +1,2 @@ /*! For license information please see bundle.js.LICENSE.txt */ -(()=>{var n={714:(n,e)=>{var t;!function(){var a=9007199254740992,i="0123456789",r="abcdefghijklmnopqrstuvwxyz",o=r.toUpperCase(),s=i+"abcdef";function l(n){this.name="UnsupportedError",this.message=n||"This feature is not supported on this platform"}l.prototype=new Error,l.prototype.constructor=l;var c=Array.prototype.slice;function u(n){if(!(this instanceof u))return n||(n=null),null===n?new u:new u(n);if("function"==typeof n)return this.random=n,this;arguments.length&&(this.seed=0);for(var e=0;e100,"Chance: Likelihood accepts values from 0 to 100."),100*this.random()t,"Chance: Max specified is out of range with fixed. Max should be, at most, "+t),n=d(n,{min:i,max:t});var r=(this.integer({min:n.min*e,max:n.max*e})/e).toFixed(n.fixed);return parseFloat(r)},u.prototype.integer=function(n){return h((n=d(n,{min:-9007199254740992,max:a})).min>n.max,"Chance: Min cannot be greater than Max."),Math.floor(this.random()*(n.max-n.min+1)+n.min)},u.prototype.natural=function(n){if("number"==typeof(n=d(n,{min:0,max:a})).numerals&&(h(n.numerals<1,"Chance: Numerals cannot be less than one."),n.min=Math.pow(10,n.numerals-1),n.max=Math.pow(10,n.numerals)-1),h(n.min<0,"Chance: Min cannot be less than zero."),n.exclude){for(var e in h(!Array.isArray(n.exclude),"Chance: exclude must be an array."),n.exclude)h(!Number.isInteger(n.exclude[e]),"Chance: exclude must be numbers.");var t=n.min+this.natural({max:n.max-n.min-n.exclude.length}),i=n.exclude.sort();for(var r in i){if(tn.max,"Chance: Min cannot be greater than Max.");var e=b.primes[b.primes.length-1];if(n.max>e)for(var t=e+2;t<=n.max;++t)this.is_prime(t)&&b.primes.push(t);var a=b.primes.filter((function(e){return e>=n.min&&e<=n.max}));return this.pick(a)},u.prototype.is_prime=function(n){if(n%1||n<2)return!1;if(n%2==0)return 2===n;if(n%3==0)return 3===n;for(var e=Math.sqrt(n),t=5;t<=e;t+=6)if(n%t==0||n%(t+2)==0)return!1;return!0},u.prototype.hex=function(n){h((n=d(n,{min:0,max:a,casing:"lower"})).min<0,"Chance: Min cannot be less than zero.");var e=this.natural({min:n.min,max:n.max});return"upper"===n.casing?e.toString(16).toUpperCase():e.toString(16)},u.prototype.letter=function(n){n=d(n,{casing:"lower"});var e=this.character({pool:"abcdefghijklmnopqrstuvwxyz"});return"upper"===n.casing&&(e=e.toUpperCase()),e},u.prototype.string=function(n){0===(n=d(n,{min:5,max:20})).length||n.length||(n.length=this.natural({min:n.min,max:n.max})),h(n.length<0,"Chance: Length cannot be less than zero.");var e=n.length;return this.n(this.character,e,n).join("")},m.prototype={substitute:function(){return this.c}},p.prototype={substitute:function(){if(!/[{}\\]/.test(this.c))throw new Error('Invalid escape sequence: "\\'+this.c+'".');return this.c}},g.prototype={replacers:{"#":function(n){return n.character({pool:i})},A:function(n){return n.character({pool:o})},a:function(n){return n.character({pool:r})}},substitute:function(n){var e=this.replacers[this.c];if(!e)throw new Error('Invalid replacement character: "'+this.c+'".');return e(n)}},u.prototype.template=function(n){if(!n)throw new Error("Template string is required");var e=this;return function(n){for(var e=[],t="identity",a=0;as)throw new RangeError("Chance: num is likely too large for sample set")}return r},u.prototype.n=function(n,e){h("function"!=typeof n,"Chance: The first argument must be a function."),void 0===e&&(e=1);var t=e,a=[],i=c.call(arguments,2);for(t=Math.max(0,t);t--;null)a.push(n.apply(this,i));return a},u.prototype.pad=function(n,e,t){return t=t||"0",(n+="").length>=e?n:new Array(e-n.length+1).join(t)+n},u.prototype.pick=function(n,e){if(0===n.length)throw new RangeError("Chance: Cannot pick() from an empty array");return e&&1!==e?this.shuffle(n).slice(0,e):n[this.natural({max:n.length-1})]},u.prototype.pickone=function(n){if(0===n.length)throw new RangeError("Chance: Cannot pickone() from an empty array");return n[this.natural({max:n.length-1})]},u.prototype.pickset=function(n,e){if(0===e)return[];if(0===n.length)throw new RangeError("Chance: Cannot pickset() from an empty array");if(e<0)throw new RangeError("Chance: Count must be a positive number");if(e&&1!==e){var t=n.slice(0),a=t.length;return this.n((function(){var n=this.natural({max:--a}),e=t[n];return t[n]=t[a],e}),Math.min(a,e))}return[this.pickone(n)]},u.prototype.shuffle=function(n){for(var e,t,a=[],i=0,r=Number(n.length),o=(t=r,Array.apply(null,Array(t)).map((function(n,e){return e}))),s=r-1,l=0;l0&&(i+=a)}if(0===i)throw new RangeError("Chance: No valid entries in array weights");var o,s=this.random()*i,l=0,c=-1;for(r=0;r0){if(s<=l){o=r;break}c=r}r===e.length-1&&(o=c)}var u=n[o];return(t=void 0!==t&&t)&&(n.splice(o,1),e.splice(o,1)),u},u.prototype.paragraph=function(n){var e=(n=d(n)).sentences||this.natural({min:3,max:7}),t=this.n(this.sentence,e),a=!0===n.linebreak?"\n":" ";return t.join(a)},u.prototype.sentence=function(n){var e,t=(n=d(n)).words||this.natural({min:12,max:18}),a=n.punctuation;return e=this.n(this.word,t).join(" "),e=this.capitalize(e),!1===a||/^[.?;!:]$/.test(a)||(a="."),a&&(e+=a),e},u.prototype.syllable=function(n){for(var e,t=(n=d(n)).length||this.natural({min:2,max:3}),a="bcdfghjklmnprstvwz",i="aeiou",r=a+i,o="",s=0;sBigInt(a),"Chance: length must be between 1 and "+String(a));var e=this.get("emojis");"all"===n.category&&(n.category=this.pickone(Object.keys(e)));var t=e[n.category];return h(void 0===t,"Chance: Unrecognised emoji category: ["+n.category+"]."),this.pickset(t,n.length).map((function(n){return String.fromCodePoint(n)})).join("")},u.prototype.age=function(n){var e;switch((n=d(n)).type){case"child":e={min:0,max:12};break;case"teen":e={min:13,max:19};break;case"adult":default:e={min:18,max:65};break;case"senior":e={min:65,max:100};break;case"all":e={min:0,max:100}}return this.natural(e)},u.prototype.birthday=function(n){var e=this.age(n),t=new Date,a=t.getFullYear();if(n&&n.type){var i=new Date,r=new Date;i.setFullYear(a-e-1),r.setFullYear(a-e),n=d(n,{min:i,max:r})}else if(!n||void 0===n.minAge&&void 0===n.maxAge)n=d(n,{year:a-e});else{h(n.minAge<0,"Chance: MinAge cannot be less than zero."),h(n.minAge>n.maxAge,"Chance: MinAge cannot be greater than MaxAge.");var o=void 0!==n.minAge?n.minAge:0,s=void 0!==n.maxAge?n.maxAge:100,l=new Date(a-s-1,t.getMonth(),t.getDate()),c=new Date(a-o,t.getMonth(),t.getDate());l.setDate(l.getDate()+1),c.setDate(c.getDate()+1),c.setMilliseconds(c.getMilliseconds()-1),n=d(n,{min:l,max:c})}return this.date(n)},u.prototype.cpf=function(n){n=d(n,{formatted:!0});var e=this.n(this.natural,9,{max:9}),t=2*e[8]+3*e[7]+4*e[6]+5*e[5]+6*e[4]+7*e[3]+8*e[2]+9*e[1]+10*e[0];(t=11-t%11)>=10&&(t=0);var a=2*t+3*e[8]+4*e[7]+5*e[6]+6*e[5]+7*e[4]+8*e[3]+9*e[2]+10*e[1]+11*e[0];(a=11-a%11)>=10&&(a=0);var i=""+e[0]+e[1]+e[2]+"."+e[3]+e[4]+e[5]+"."+e[6]+e[7]+e[8]+"-"+t+a;return n.formatted?i:i.replace(/\D/g,"")},u.prototype.cnpj=function(n){n=d(n,{formatted:!0});var e=this.n(this.natural,12,{max:12}),t=2*e[11]+3*e[10]+4*e[9]+5*e[8]+6*e[7]+7*e[6]+8*e[5]+9*e[4]+2*e[3]+3*e[2]+4*e[1]+5*e[0];(t=11-t%11)<2&&(t=0);var a=2*t+3*e[11]+4*e[10]+5*e[9]+6*e[8]+7*e[7]+8*e[6]+9*e[5]+2*e[4]+3*e[3]+4*e[2]+5*e[1]+6*e[0];(a=11-a%11)<2&&(a=0);var i=""+e[0]+e[1]+"."+e[2]+e[3]+e[4]+"."+e[5]+e[6]+e[7]+"/"+e[8]+e[9]+e[10]+e[11]+"-"+t+a;return n.formatted?i:i.replace(/\D/g,"")},u.prototype.first=function(n){return n=d(n,{gender:this.gender(),nationality:"en"}),this.pick(this.get("firstNames")[n.gender.toLowerCase()][n.nationality.toLowerCase()])},u.prototype.profession=function(n){return(n=d(n)).rank?this.pick(["Apprentice ","Junior ","Senior ","Lead "])+this.pick(this.get("profession")):this.pick(this.get("profession"))},u.prototype.company=function(){return this.pick(this.get("company"))},u.prototype.gender=function(n){return n=d(n,{extraGenders:[]}),this.pick(["Male","Female"].concat(n.extraGenders))},u.prototype.last=function(n){if("*"===(n=d(n,{nationality:"*"})).nationality){var e=[],t=this.get("lastNames");return Object.keys(t).forEach((function(n){e=e.concat(t[n])})),this.pick(e)}return this.pick(this.get("lastNames")[n.nationality.toLowerCase()])},u.prototype.israelId=function(){for(var n=this.string({pool:"0123456789",length:8}),e=0,t=0;t","<=",">=","="]);n.range&&(e=n.range);var t="";return n.include_prerelease&&(t=this.weighted(["","-dev","-beta","-alpha"],[50,10,5,1])),e+this.rpg("3d10").join(".")+t},u.prototype.tlds=function(){return["com","org","edu","gov","co.uk","net","io","ac","ad","ae","af","ag","ai","al","am","ao","aq","ar","as","at","au","aw","ax","az","ba","bb","bd","be","bf","bg","bh","bi","bj","bm","bn","bo","br","bs","bt","bv","bw","by","bz","ca","cc","cd","cf","cg","ch","ci","ck","cl","cm","cn","co","cr","cu","cv","cw","cx","cy","cz","de","dj","dk","dm","do","dz","ec","ee","eg","eh","er","es","et","eu","fi","fj","fk","fm","fo","fr","ga","gb","gd","ge","gf","gg","gh","gi","gl","gm","gn","gp","gq","gr","gs","gt","gu","gw","gy","hk","hm","hn","hr","ht","hu","id","ie","il","im","in","io","iq","ir","is","it","je","jm","jo","jp","ke","kg","kh","ki","km","kn","kp","kr","kw","ky","kz","la","lb","lc","li","lk","lr","ls","lt","lu","lv","ly","ma","mc","md","me","mg","mh","mk","ml","mm","mn","mo","mp","mq","mr","ms","mt","mu","mv","mw","mx","my","mz","na","nc","ne","nf","ng","ni","nl","no","np","nr","nu","nz","om","pa","pe","pf","pg","ph","pk","pl","pm","pn","pr","ps","pt","pw","py","qa","re","ro","rs","ru","rw","sa","sb","sc","sd","se","sg","sh","si","sj","sk","sl","sm","sn","so","sr","ss","st","su","sv","sx","sy","sz","tc","td","tf","tg","th","tj","tk","tl","tm","tn","to","tr","tt","tv","tw","tz","ua","ug","uk","us","uy","uz","va","vc","ve","vg","vi","vn","vu","wf","ws","ye","yt","za","zm","zw"]},u.prototype.tld=function(){return this.pick(this.tlds())},u.prototype.twitter=function(){return"@"+this.word()},u.prototype.url=function(n){var e=(n=d(n,{protocol:"http",domain:this.domain(n),domain_prefix:"",path:this.word(),extensions:[]})).extensions.length>0?"."+this.pick(n.extensions):"",t=n.domain_prefix?n.domain_prefix+"."+n.domain:n.domain;return n.protocol+"://"+t+"/"+n.path+e},u.prototype.port=function(){return this.integer({min:0,max:65535})},u.prototype.locale=function(n){return(n=d(n)).region?this.pick(this.get("locale_regions")):this.pick(this.get("locale_languages"))},u.prototype.locales=function(n){return(n=d(n)).region?this.get("locale_regions"):this.get("locale_languages")},u.prototype.loremPicsum=function(n){var e=(n=d(n,{width:500,height:500,greyscale:!1,blurred:!1})).greyscale?"g/":"",t=n.blurred?"/?blur":"/?random";return"https://picsum.photos/"+e+n.width+"/"+n.height+t},u.prototype.address=function(n){return n=d(n),this.natural({min:5,max:2e3})+" "+this.street(n)},u.prototype.altitude=function(n){return n=d(n,{fixed:5,min:0,max:8848}),this.floating({min:n.min,max:n.max,fixed:n.fixed})},u.prototype.areacode=function(n){var e=(n=d(n,{parens:!0})).exampleNumber?"555":this.natural({min:2,max:9}).toString()+this.natural({min:0,max:8}).toString()+this.natural({min:0,max:9}).toString();return n.parens?"("+e+")":e},u.prototype.city=function(){return this.capitalize(this.word({syllables:3}))},u.prototype.coordinates=function(n){return this.latitude(n)+", "+this.longitude(n)},u.prototype.countries=function(){return this.get("countries")},u.prototype.country=function(n){n=d(n);var e=this.pick(this.countries());return n.raw?e:n.full?e.name:e.abbreviation},u.prototype.depth=function(n){return n=d(n,{fixed:5,min:-10994,max:0}),this.floating({min:n.min,max:n.max,fixed:n.fixed})},u.prototype.geohash=function(n){return n=d(n,{length:7}),this.string({length:n.length,pool:"0123456789bcdefghjkmnpqrstuvwxyz"})},u.prototype.geojson=function(n){return this.latitude(n)+", "+this.longitude(n)+", "+this.altitude(n)},u.prototype.latitude=function(n){var[e,t,a]=["ddm","dms","dd"],i=(n=d(n,n&&n.format&&[e,t].includes(n.format.toLowerCase())?{min:0,max:89,fixed:4}:{fixed:5,min:-90,max:90,format:a})).format.toLowerCase();switch(i!==e&&i!==t||(h(n.min<0||n.min>89,"Chance: Min specified is out of range. Should be between 0 - 89"),h(n.max<0||n.max>89,"Chance: Max specified is out of range. Should be between 0 - 89"),h(n.fixed>4,"Chance: Fixed specified should be below or equal to 4")),i){case e:return this.integer({min:n.min,max:n.max})+"°"+this.floating({min:0,max:59,fixed:n.fixed});case t:return this.integer({min:n.min,max:n.max})+"°"+this.integer({min:0,max:59})+"’"+this.floating({min:0,max:59,fixed:n.fixed})+"”";default:return this.floating({min:n.min,max:n.max,fixed:n.fixed})}},u.prototype.longitude=function(n){var[e,t,a]=["ddm","dms","dd"],i=(n=d(n,n&&n.format&&[e,t].includes(n.format.toLowerCase())?{min:0,max:179,fixed:4}:{fixed:5,min:-180,max:180,format:a})).format.toLowerCase();switch(i!==e&&i!==t||(h(n.min<0||n.min>179,"Chance: Min specified is out of range. Should be between 0 - 179"),h(n.max<0||n.max>179,"Chance: Max specified is out of range. Should be between 0 - 179"),h(n.fixed>4,"Chance: Fixed specified should be below or equal to 4")),i){case e:return this.integer({min:n.min,max:n.max})+"°"+this.floating({min:0,max:59.9999,fixed:n.fixed});case t:return this.integer({min:n.min,max:n.max})+"°"+this.integer({min:0,max:59})+"’"+this.floating({min:0,max:59.9999,fixed:n.fixed})+"”";default:return this.floating({min:n.min,max:n.max,fixed:n.fixed})}},u.prototype.phone=function(n){var e,t,a=this,i=function(n){var e=[];return n.sections.forEach((function(n){e.push(a.string({pool:"0123456789",length:n}))})),n.area+e.join(" ")};switch((n=d(n,{formatted:!0,country:"us",mobile:!1,exampleNumber:!1})).formatted||(n.parens=!1),n.country){case"fr":n.mobile?(e=this.pick(["06","07"])+a.string({pool:"0123456789",length:8}),t=n.formatted?e.match(/../g).join(" "):e):(e=this.pick(["01"+this.pick(["30","34","39","40","41","42","43","44","45","46","47","48","49","53","55","56","58","60","64","69","70","72","73","74","75","76","77","78","79","80","81","82","83"])+a.string({pool:"0123456789",length:6}),"02"+this.pick(["14","18","22","23","28","29","30","31","32","33","34","35","36","37","38","40","41","43","44","45","46","47","48","49","50","51","52","53","54","56","57","61","62","69","72","76","77","78","85","90","96","97","98","99"])+a.string({pool:"0123456789",length:6}),"03"+this.pick(["10","20","21","22","23","24","25","26","27","28","29","39","44","45","51","52","54","55","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","80","81","82","83","84","85","86","87","88","89","90"])+a.string({pool:"0123456789",length:6}),"04"+this.pick(["11","13","15","20","22","26","27","30","32","34","37","42","43","44","50","56","57","63","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","88","89","90","91","92","93","94","95","97","98"])+a.string({pool:"0123456789",length:6}),"05"+this.pick(["08","16","17","19","24","31","32","33","34","35","40","45","46","47","49","53","55","56","57","58","59","61","62","63","64","65","67","79","81","82","86","87","90","94"])+a.string({pool:"0123456789",length:6}),"09"+a.string({pool:"0123456789",length:8})]),t=n.formatted?e.match(/../g).join(" "):e);break;case"uk":n.mobile?(e=this.pick([{area:"07"+this.pick(["4","5","7","8","9"]),sections:[2,6]},{area:"07624 ",sections:[6]}]),t=n.formatted?i(e):i(e).replace(" ","")):(e=this.pick([{area:"01"+this.character({pool:"234569"})+"1 ",sections:[3,4]},{area:"020 "+this.character({pool:"378"}),sections:[3,4]},{area:"023 "+this.character({pool:"89"}),sections:[3,4]},{area:"024 7",sections:[3,4]},{area:"028 "+this.pick(["25","28","37","71","82","90","92","95"]),sections:[2,4]},{area:"012"+this.pick(["04","08","54","76","97","98"])+" ",sections:[6]},{area:"013"+this.pick(["63","64","84","86"])+" ",sections:[6]},{area:"014"+this.pick(["04","20","60","61","80","88"])+" ",sections:[6]},{area:"015"+this.pick(["24","27","62","66"])+" ",sections:[6]},{area:"016"+this.pick(["06","29","35","47","59","95"])+" ",sections:[6]},{area:"017"+this.pick(["26","44","50","68"])+" ",sections:[6]},{area:"018"+this.pick(["27","37","84","97"])+" ",sections:[6]},{area:"019"+this.pick(["00","05","35","46","49","63","95"])+" ",sections:[6]}]),t=n.formatted?i(e):i(e).replace(" ","","g"));break;case"za":n.mobile?(e=this.pick(["060"+this.pick(["3","4","5","6","7","8","9"])+a.string({pool:"0123456789",length:6}),"061"+this.pick(["0","1","2","3","4","5","8"])+a.string({pool:"0123456789",length:6}),"06"+a.string({pool:"0123456789",length:7}),"071"+this.pick(["0","1","2","3","4","5","6","7","8","9"])+a.string({pool:"0123456789",length:6}),"07"+this.pick(["2","3","4","6","7","8","9"])+a.string({pool:"0123456789",length:7}),"08"+this.pick(["0","1","2","3","4","5"])+a.string({pool:"0123456789",length:7})]),t=n.formatted||e):(e=this.pick(["01"+this.pick(["0","1","2","3","4","5","6","7","8"])+a.string({pool:"0123456789",length:7}),"02"+this.pick(["1","2","3","4","7","8"])+a.string({pool:"0123456789",length:7}),"03"+this.pick(["1","2","3","5","6","9"])+a.string({pool:"0123456789",length:7}),"04"+this.pick(["1","2","3","4","5","6","7","8","9"])+a.string({pool:"0123456789",length:7}),"05"+this.pick(["1","3","4","6","7","8"])+a.string({pool:"0123456789",length:7})]),t=n.formatted||e);break;case"us":var r=this.areacode(n).toString(),o=this.natural({min:2,max:9}).toString()+this.natural({min:0,max:9}).toString()+this.natural({min:0,max:9}).toString(),s=this.natural({min:1e3,max:9999}).toString();t=n.formatted?r+" "+o+"-"+s:r+o+s;break;case"br":var l,c=this.pick(["11","12","13","14","15","16","17","18","19","21","22","24","27","28","31","32","33","34","35","37","38","41","42","43","44","45","46","47","48","49","51","53","54","55","61","62","63","64","65","66","67","68","69","71","73","74","75","77","79","81","82","83","84","85","86","87","88","89","91","92","93","94","95","96","97","98","99"]);l=n.mobile?"9"+a.string({pool:"0123456789",length:4}):this.natural({min:2e3,max:5999}).toString();var u=a.string({pool:"0123456789",length:4});t=n.formatted?"("+c+") "+l+"-"+u:c+l+u}return t},u.prototype.postal=function(){return this.character({pool:"XVTSRPNKLMHJGECBA"})+this.natural({max:9})+this.character({alpha:!0,casing:"upper"})+" "+(this.natural({max:9})+this.character({alpha:!0,casing:"upper"})+this.natural({max:9}))},u.prototype.postcode=function(){return this.pick(this.get("postcodeAreas")).code+this.natural({max:9})+(this.bool()?this.character({alpha:!0,casing:"upper"}):"")+" "+(this.natural({max:9})+(this.character({alpha:!0,casing:"upper"})+this.character({alpha:!0,casing:"upper"})))},u.prototype.counties=function(n){return n=d(n,{country:"uk"}),this.get("counties")[n.country.toLowerCase()]},u.prototype.county=function(n){return this.pick(this.counties(n)).name},u.prototype.provinces=function(n){return n=d(n,{country:"ca"}),this.get("provinces")[n.country.toLowerCase()]},u.prototype.province=function(n){return n&&n.full?this.pick(this.provinces(n)).name:this.pick(this.provinces(n)).abbreviation},u.prototype.state=function(n){return n&&n.full?this.pick(this.states(n)).name:this.pick(this.states(n)).abbreviation},u.prototype.states=function(n){var e;switch((n=d(n,{country:"us",us_states_and_dc:!0})).country.toLowerCase()){case"us":var t=this.get("us_states_and_dc"),a=this.get("territories"),i=this.get("armed_forces");e=[],n.us_states_and_dc&&(e=e.concat(t)),n.territories&&(e=e.concat(a)),n.armed_forces&&(e=e.concat(i));break;case"it":case"mx":e=this.get("country_regions")[n.country.toLowerCase()];break;case"uk":e=this.get("counties")[n.country.toLowerCase()]}return e},u.prototype.street=function(n){var e;switch((n=d(n,{country:"us",syllables:2})).country.toLowerCase()){case"us":e=this.word({syllables:n.syllables}),e=this.capitalize(e),e+=" ",e+=n.short_suffix?this.street_suffix(n).abbreviation:this.street_suffix(n).name;break;case"it":e=this.word({syllables:n.syllables}),e=this.capitalize(e),e=(n.short_suffix?this.street_suffix(n).abbreviation:this.street_suffix(n).name)+" "+e}return e},u.prototype.street_suffix=function(n){return n=d(n,{country:"us"}),this.pick(this.street_suffixes(n))},u.prototype.street_suffixes=function(n){return n=d(n,{country:"us"}),this.get("street_suffixes")[n.country.toLowerCase()]},u.prototype.zip=function(n){var e=this.n(this.natural,5,{max:9});return n&&!0===n.plusfour&&(e.push("-"),e=e.concat(this.n(this.natural,4,{max:9}))),e.join("")},u.prototype.ampm=function(){return this.bool()?"am":"pm"},u.prototype.date=function(n){var e,t;if(n&&(n.min||n.max)){var a=void 0!==(n=d(n,{american:!0,string:!1})).min?n.min.getTime():1,i=void 0!==n.max?n.max.getTime():864e13;t=new Date(this.integer({min:a,max:i}))}else{var r=this.month({raw:!0}),o=r.days;n&&n.month&&(o=this.get("months")[(n.month%12+12)%12].days),n=d(n,{year:parseInt(this.year(),10),month:r.numeric-1,day:this.natural({min:1,max:o}),hour:this.hour({twentyfour:!0}),minute:this.minute(),second:this.second(),millisecond:this.millisecond(),american:!0,string:!1}),t=new Date(n.year,n.month,n.day,n.hour,n.minute,n.second,n.millisecond)}return e=n.american?t.getMonth()+1+"/"+t.getDate()+"/"+t.getFullYear():t.getDate()+"/"+(t.getMonth()+1)+"/"+t.getFullYear(),n.string?e:t},u.prototype.hammertime=function(n){return this.date(n).getTime()},u.prototype.hour=function(n){return h((n=d(n,{min:n&&n.twentyfour?0:1,max:n&&n.twentyfour?23:12})).min<0,"Chance: Min cannot be less than 0."),h(n.twentyfour&&n.max>23,"Chance: Max cannot be greater than 23 for twentyfour option."),h(!n.twentyfour&&n.max>12,"Chance: Max cannot be greater than 12."),h(n.min>n.max,"Chance: Min cannot be greater than Max."),this.natural({min:n.min,max:n.max})},u.prototype.millisecond=function(){return this.natural({max:999})},u.prototype.minute=u.prototype.second=function(n){return h((n=d(n,{min:0,max:59})).min<0,"Chance: Min cannot be less than 0."),h(n.max>59,"Chance: Max cannot be greater than 59."),h(n.min>n.max,"Chance: Min cannot be greater than Max."),this.natural({min:n.min,max:n.max})},u.prototype.month=function(n){h((n=d(n,{min:1,max:12})).min<1,"Chance: Min cannot be less than 1."),h(n.max>12,"Chance: Max cannot be greater than 12."),h(n.min>n.max,"Chance: Min cannot be greater than Max.");var e=this.pick(this.months().slice(n.min-1,n.max));return n.raw?e:e.name},u.prototype.months=function(){return this.get("months")},u.prototype.second=function(){return this.natural({max:59})},u.prototype.timestamp=function(){return this.natural({min:1,max:parseInt((new Date).getTime()/1e3,10)})},u.prototype.weekday=function(n){var e=["Monday","Tuesday","Wednesday","Thursday","Friday"];return(n=d(n,{weekday_only:!1})).weekday_only||(e.push("Saturday"),e.push("Sunday")),this.pickone(e)},u.prototype.year=function(n){return(n=d(n,{min:(new Date).getFullYear()})).max=void 0!==n.max?n.max:n.min+100,this.natural(n).toString()},u.prototype.cc=function(n){var e,t,a;return t=(e=(n=d(n)).type?this.cc_type({name:n.type,raw:!0}):this.cc_type({raw:!0})).prefix.split(""),a=e.length-e.prefix.length-1,(t=t.concat(this.n(this.integer,a,{min:0,max:9}))).push(this.luhn_calculate(t.join(""))),t.join("")},u.prototype.cc_types=function(){return this.get("cc_types")},u.prototype.cc_type=function(n){n=d(n);var e=this.cc_types(),t=null;if(n.name){for(var a=0;a3&&(t=e?t.substr(0,3):t[0]+t.substr(2,2)),t.length<3&&(a=t,t=n.toUpperCase().split("").map((function(n){return-1!=="AEIOU".indexOf(n)?n:void 0})).join("").substr(0,3-a.length)),a+=t),a};return o=o.concat(s(a,!0),s(t),function(n,e,t){return n.getFullYear().toString().substr(2)+["A","B","C","D","E","H","L","M","P","R","S","T"][n.getMonth()]+t.pad(n.getDate()+("female"===e.toLowerCase()?40:0),2)}(i,e,this),r.toUpperCase().split("")).join(""),(o+=function(n){for(var e="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",t="ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ",a="ABCDEFGHIJKLMNOPQRSTUVWXYZ",i=0,r=0;r<15;r++)i+=r%2!=0?a.indexOf(t[e.indexOf(n[r])]):"BAKPLCQDREVOSFTGUHMINJWZYX".indexOf(t[e.indexOf(n[r])]);return a[i%26]}(o.toUpperCase())).toUpperCase()},u.prototype.pl_pesel=function(){for(var n=this.natural({min:1,max:9999999999}),e=this.pad(n,10).split(""),t=0;t0;i--)a[i-1]=this.natural({min:1,max:t[1]});return void 0!==e.sum&&e.sum?a.reduce((function(n,e){return n+e})):a}throw new RangeError("Chance: A type of die roll must be included")},u.prototype.guid=function(n){n=d(n,{version:5});var e="abcdef1234567890";return this.string({pool:e,length:8})+"-"+this.string({pool:e,length:4})+"-"+n.version+this.string({pool:e,length:3})+"-"+this.string({pool:"ab89",length:1})+this.string({pool:e,length:3})+"-"+this.string({pool:e,length:12})},u.prototype.hash=function(n){var e="upper"===(n=d(n,{length:40,casing:"lower"})).casing?s.toUpperCase():s;return this.string({pool:e,length:n.length})},u.prototype.luhn_check=function(n){var e=n.toString();return+e.substring(e.length-1)===this.luhn_calculate(+e.substring(0,e.length-1))},u.prototype.luhn_calculate=function(n){for(var e,t=n.toString().split("").reverse(),a=0,i=0,r=t.length;r>i;++i)e=+t[i],i%2==0&&(e*=2)>9&&(e-=9),a+=e;return 9*a%10},u.prototype.md5=function(n){var e={str:"",key:null,raw:!1};if(n)if("string"==typeof n)e.str=n,n={};else{if("object"!=typeof n)return null;if("Array"===n.constructor)return null}else e.str=this.string(),n={};if(!(e=d(n,e)).str)throw new Error("A parameter is required to return an md5 hash.");return this.bimd5.md5(e.str,e.key,e.raw)},u.prototype.file=function(n){var e,t=n||{},a="fileExtension",i=Object.keys(this.get("fileExtension"));if(e=this.word({length:t.length}),t.extension)return e+"."+t.extension;if(t.extensions){if(Array.isArray(t.extensions))return e+"."+this.pickone(t.extensions);if(t.extensions.constructor===Object){var r=t.extensions,o=Object.keys(r);return e+"."+this.pickone(r[this.pickone(o)])}throw new Error("Chance: Extensions must be an Array or Object")}if(t.fileType){var s=t.fileType;if(-1!==i.indexOf(s))return e+"."+this.pickone(this.get(a)[s]);throw new RangeError("Chance: Expect file type value to be 'raster', 'vector', '3d' or 'document'")}return e+"."+this.pickone(this.get(a)[this.pickone(i)])},u.prototype.fileWithContent=function(n){var e=n||{},t="fileName"in e?e.fileName:this.file().split(".")[0];if(t+="."+("fileExtension"in e?e.fileExtension:this.file().split(".")[1]),"number"!=typeof e.fileSize)throw new Error("File size must be an integer");return{fileData:this.buffer({length:e.fileSize}),fileName:t}};var b={firstNames:{male:{en:["James","John","Robert","Michael","William","David","Richard","Joseph","Charles","Thomas","Christopher","Daniel","Matthew","George","Donald","Anthony","Paul","Mark","Edward","Steven","Kenneth","Andrew","Brian","Joshua","Kevin","Ronald","Timothy","Jason","Jeffrey","Frank","Gary","Ryan","Nicholas","Eric","Stephen","Jacob","Larry","Jonathan","Scott","Raymond","Justin","Brandon","Gregory","Samuel","Benjamin","Patrick","Jack","Henry","Walter","Dennis","Jerry","Alexander","Peter","Tyler","Douglas","Harold","Aaron","Jose","Adam","Arthur","Zachary","Carl","Nathan","Albert","Kyle","Lawrence","Joe","Willie","Gerald","Roger","Keith","Jeremy","Terry","Harry","Ralph","Sean","Jesse","Roy","Louis","Billy","Austin","Bruce","Eugene","Christian","Bryan","Wayne","Russell","Howard","Fred","Ethan","Jordan","Philip","Alan","Juan","Randy","Vincent","Bobby","Dylan","Johnny","Phillip","Victor","Clarence","Ernest","Martin","Craig","Stanley","Shawn","Travis","Bradley","Leonard","Earl","Gabriel","Jimmy","Francis","Todd","Noah","Danny","Dale","Cody","Carlos","Allen","Frederick","Logan","Curtis","Alex","Joel","Luis","Norman","Marvin","Glenn","Tony","Nathaniel","Rodney","Melvin","Alfred","Steve","Cameron","Chad","Edwin","Caleb","Evan","Antonio","Lee","Herbert","Jeffery","Isaac","Derek","Ricky","Marcus","Theodore","Elijah","Luke","Jesus","Eddie","Troy","Mike","Dustin","Ray","Adrian","Bernard","Leroy","Angel","Randall","Wesley","Ian","Jared","Mason","Hunter","Calvin","Oscar","Clifford","Jay","Shane","Ronnie","Barry","Lucas","Corey","Manuel","Leo","Tommy","Warren","Jackson","Isaiah","Connor","Don","Dean","Jon","Julian","Miguel","Bill","Lloyd","Charlie","Mitchell","Leon","Jerome","Darrell","Jeremiah","Alvin","Brett","Seth","Floyd","Jim","Blake","Micheal","Gordon","Trevor","Lewis","Erik","Edgar","Vernon","Devin","Gavin","Jayden","Chris","Clyde","Tom","Derrick","Mario","Brent","Marc","Herman","Chase","Dominic","Ricardo","Franklin","Maurice","Max","Aiden","Owen","Lester","Gilbert","Elmer","Gene","Francisco","Glen","Cory","Garrett","Clayton","Sam","Jorge","Chester","Alejandro","Jeff","Harvey","Milton","Cole","Ivan","Andre","Duane","Landon"],it:["Adolfo","Alberto","Aldo","Alessandro","Alessio","Alfredo","Alvaro","Andrea","Angelo","Angiolo","Antonino","Antonio","Attilio","Benito","Bernardo","Bruno","Carlo","Cesare","Christian","Claudio","Corrado","Cosimo","Cristian","Cristiano","Daniele","Dario","David","Davide","Diego","Dino","Domenico","Duccio","Edoardo","Elia","Elio","Emanuele","Emiliano","Emilio","Enrico","Enzo","Ettore","Fabio","Fabrizio","Federico","Ferdinando","Fernando","Filippo","Francesco","Franco","Gabriele","Giacomo","Giampaolo","Giampiero","Giancarlo","Gianfranco","Gianluca","Gianmarco","Gianni","Gino","Giorgio","Giovanni","Giuliano","Giulio","Giuseppe","Graziano","Gregorio","Guido","Iacopo","Jacopo","Lapo","Leonardo","Lorenzo","Luca","Luciano","Luigi","Manuel","Marcello","Marco","Marino","Mario","Massimiliano","Massimo","Matteo","Mattia","Maurizio","Mauro","Michele","Mirko","Mohamed","Nello","Neri","Niccolò","Nicola","Osvaldo","Otello","Paolo","Pier Luigi","Piero","Pietro","Raffaele","Remo","Renato","Renzo","Riccardo","Roberto","Rolando","Romano","Salvatore","Samuele","Sandro","Sergio","Silvano","Simone","Stefano","Thomas","Tommaso","Ubaldo","Ugo","Umberto","Valerio","Valter","Vasco","Vincenzo","Vittorio"],nl:["Aaron","Abel","Adam","Adriaan","Albert","Alexander","Ali","Arjen","Arno","Bart","Bas","Bastiaan","Benjamin","Bob","Boris","Bram","Brent","Cas","Casper","Chris","Christiaan","Cornelis","Daan","Daley","Damian","Dani","Daniel","Daniël","David","Dean","Dirk","Dylan","Egbert","Elijah","Erik","Erwin","Evert","Ezra","Fabian","Fedde","Finn","Florian","Floris","Frank","Frans","Frederik","Freek","Geert","Gerard","Gerben","Gerrit","Gijs","Guus","Hans","Hendrik","Henk","Herman","Hidde","Hugo","Jaap","Jan Jaap","Jan-Willem","Jack","Jacob","Jan","Jason","Jasper","Jayden","Jelle","Jelte","Jens","Jeroen","Jesse","Jim","Job","Joep","Johannes","John","Jonathan","Joris","Joshua","Joël","Julian","Kees","Kevin","Koen","Lars","Laurens","Leendert","Lennard","Lodewijk","Luc","Luca","Lucas","Lukas","Luuk","Maarten","Marcus","Martijn","Martin","Matthijs","Maurits","Max","Mees","Melle","Mick","Mika","Milan","Mohamed","Mohammed","Morris","Muhammed","Nathan","Nick","Nico","Niek","Niels","Noah","Noud","Olivier","Oscar","Owen","Paul","Pepijn","Peter","Pieter","Pim","Quinten","Reinier","Rens","Robin","Ruben","Sam","Samuel","Sander","Sebastiaan","Sem","Sep","Sepp","Siem","Simon","Stan","Stef","Steven","Stijn","Sven","Teun","Thijmen","Thijs","Thomas","Tijn","Tim","Timo","Tobias","Tom","Victor","Vince","Willem","Wim","Wouter","Yusuf"],fr:["Aaron","Abdon","Abel","Abélard","Abelin","Abondance","Abraham","Absalon","Acace","Achaire","Achille","Adalard","Adalbald","Adalbéron","Adalbert","Adalric","Adam","Adegrin","Adel","Adelin","Andelin","Adelphe","Adam","Adéodat","Adhémar","Adjutor","Adolphe","Adonis","Adon","Adrien","Agapet","Agathange","Agathon","Agilbert","Agénor","Agnan","Aignan","Agrippin","Aimable","Aimé","Alain","Alban","Albin","Aubin","Albéric","Albert","Albertet","Alcibiade","Alcide","Alcée","Alcime","Aldonce","Aldric","Aldéric","Aleaume","Alexandre","Alexis","Alix","Alliaume","Aleaume","Almine","Almire","Aloïs","Alphée","Alphonse","Alpinien","Alverède","Amalric","Amaury","Amandin","Amant","Ambroise","Amédée","Amélien","Amiel","Amour","Anaël","Anastase","Anatole","Ancelin","Andéol","Andoche","André","Andoche","Ange","Angelin","Angilbe","Anglebert","Angoustan","Anicet","Anne","Annibal","Ansbert","Anselme","Anthelme","Antheaume","Anthime","Antide","Antoine","Antonius","Antonin","Apollinaire","Apollon","Aquilin","Arcade","Archambaud","Archambeau","Archange","Archibald","Arian","Ariel","Ariste","Aristide","Armand","Armel","Armin","Arnould","Arnaud","Arolde","Arsène","Arsinoé","Arthaud","Arthème","Arthur","Ascelin","Athanase","Aubry","Audebert","Audouin","Audran","Audric","Auguste","Augustin","Aurèle","Aurélien","Aurian","Auxence","Axel","Aymard","Aymeric","Aymon","Aymond","Balthazar","Baptiste","Barnabé","Barthélemy","Bartimée","Basile","Bastien","Baudouin","Bénigne","Benjamin","Benoît","Bérenger","Bérard","Bernard","Bertrand","Blaise","Bon","Boniface","Bouchard","Brice","Brieuc","Bruno","Brunon","Calixte","Calliste","Camélien","Camille","Camillien","Candide","Caribert","Carloman","Cassandre","Cassien","Cédric","Céleste","Célestin","Célien","Césaire","César","Charles","Charlemagne","Childebert","Chilpéric","Chrétien","Christian","Christodule","Christophe","Chrysostome","Clarence","Claude","Claudien","Cléandre","Clément","Clotaire","Côme","Constance","Constant","Constantin","Corentin","Cyprien","Cyriaque","Cyrille","Cyril","Damien","Daniel","David","Delphin","Denis","Désiré","Didier","Dieudonné","Dimitri","Dominique","Dorian","Dorothée","Edgard","Edmond","Édouard","Éleuthère","Élie","Élisée","Émeric","Émile","Émilien","Emmanuel","Enguerrand","Épiphane","Éric","Esprit","Ernest","Étienne","Eubert","Eudes","Eudoxe","Eugène","Eusèbe","Eustache","Évariste","Évrard","Fabien","Fabrice","Falba","Félicité","Félix","Ferdinand","Fiacre","Fidèle","Firmin","Flavien","Flodoard","Florent","Florentin","Florestan","Florian","Fortuné","Foulques","Francisque","François","Français","Franciscus","Francs","Frédéric","Fulbert","Fulcran","Fulgence","Gabin","Gabriel","Gaël","Garnier","Gaston","Gaspard","Gatien","Gaud","Gautier","Gédéon","Geoffroy","Georges","Géraud","Gérard","Gerbert","Germain","Gervais","Ghislain","Gilbert","Gilles","Girart","Gislebert","Gondebaud","Gonthier","Gontran","Gonzague","Grégoire","Guérin","Gui","Guillaume","Gustave","Guy","Guyot","Hardouin","Hector","Hédelin","Hélier","Henri","Herbert","Herluin","Hervé","Hilaire","Hildebert","Hincmar","Hippolyte","Honoré","Hubert","Hugues","Innocent","Isabeau","Isidore","Jacques","Japhet","Jason","Jean","Jeannel","Jeannot","Jérémie","Jérôme","Joachim","Joanny","Job","Jocelyn","Joël","Johan","Jonas","Jonathan","Joseph","Josse","Josselin","Jourdain","Jude","Judicaël","Jules","Julien","Juste","Justin","Lambert","Landry","Laurent","Lazare","Léandre","Léon","Léonard","Léopold","Leu","Loup","Leufroy","Libère","Liétald","Lionel","Loïc","Longin","Lorrain","Lorraine","Lothaire","Louis","Loup","Luc","Lucas","Lucien","Ludolphe","Ludovic","Macaire","Malo","Mamert","Manassé","Marc","Marceau","Marcel","Marcelin","Marius","Marseille","Martial","Martin","Mathurin","Matthias","Mathias","Matthieu","Maugis","Maurice","Mauricet","Maxence","Maxime","Maximilien","Mayeul","Médéric","Melchior","Mence","Merlin","Mérovée","Michaël","Michel","Moïse","Morgan","Nathan","Nathanaël","Narcisse","Néhémie","Nestor","Nestor","Nicéphore","Nicolas","Noé","Noël","Norbert","Normand","Normands","Octave","Odilon","Odon","Oger","Olivier","Oury","Pacôme","Palémon","Parfait","Pascal","Paterne","Patrice","Paul","Pépin","Perceval","Philémon","Philibert","Philippe","Philothée","Pie","Pierre","Pierrick","Prosper","Quentin","Raoul","Raphaël","Raymond","Régis","Réjean","Rémi","Renaud","René","Reybaud","Richard","Robert","Roch","Rodolphe","Rodrigue","Roger","Roland","Romain","Romuald","Roméo","Rome","Ronan","Roselin","Salomon","Samuel","Savin","Savinien","Scholastique","Sébastien","Séraphin","Serge","Séverin","Sidoine","Sigebert","Sigismond","Silvère","Simon","Siméon","Sixte","Stanislas","Stéphane","Stephan","Sylvain","Sylvestre","Tancrède","Tanguy","Taurin","Théodore","Théodose","Théophile","Théophraste","Thibault","Thibert","Thierry","Thomas","Timoléon","Timothée","Titien","Tonnin","Toussaint","Trajan","Tristan","Turold","Tim","Ulysse","Urbain","Valentin","Valère","Valéry","Venance","Venant","Venceslas","Vianney","Victor","Victorien","Victorin","Vigile","Vincent","Vital","Vitalien","Vivien","Waleran","Wandrille","Xavier","Xénophon","Yves","Zacharie","Zaché","Zéphirin"]},female:{en:["Mary","Emma","Elizabeth","Minnie","Margaret","Ida","Alice","Bertha","Sarah","Annie","Clara","Ella","Florence","Cora","Martha","Laura","Nellie","Grace","Carrie","Maude","Mabel","Bessie","Jennie","Gertrude","Julia","Hattie","Edith","Mattie","Rose","Catherine","Lillian","Ada","Lillie","Helen","Jessie","Louise","Ethel","Lula","Myrtle","Eva","Frances","Lena","Lucy","Edna","Maggie","Pearl","Daisy","Fannie","Josephine","Dora","Rosa","Katherine","Agnes","Marie","Nora","May","Mamie","Blanche","Stella","Ellen","Nancy","Effie","Sallie","Nettie","Della","Lizzie","Flora","Susie","Maud","Mae","Etta","Harriet","Sadie","Caroline","Katie","Lydia","Elsie","Kate","Susan","Mollie","Alma","Addie","Georgia","Eliza","Lulu","Nannie","Lottie","Amanda","Belle","Charlotte","Rebecca","Ruth","Viola","Olive","Amelia","Hannah","Jane","Virginia","Emily","Matilda","Irene","Kathryn","Esther","Willie","Henrietta","Ollie","Amy","Rachel","Sara","Estella","Theresa","Augusta","Ora","Pauline","Josie","Lola","Sophia","Leona","Anne","Mildred","Ann","Beulah","Callie","Lou","Delia","Eleanor","Barbara","Iva","Louisa","Maria","Mayme","Evelyn","Estelle","Nina","Betty","Marion","Bettie","Dorothy","Luella","Inez","Lela","Rosie","Allie","Millie","Janie","Cornelia","Victoria","Ruby","Winifred","Alta","Celia","Christine","Beatrice","Birdie","Harriett","Mable","Myra","Sophie","Tillie","Isabel","Sylvia","Carolyn","Isabelle","Leila","Sally","Ina","Essie","Bertie","Nell","Alberta","Katharine","Lora","Rena","Mina","Rhoda","Mathilda","Abbie","Eula","Dollie","Hettie","Eunice","Fanny","Ola","Lenora","Adelaide","Christina","Lelia","Nelle","Sue","Johanna","Lilly","Lucinda","Minerva","Lettie","Roxie","Cynthia","Helena","Hilda","Hulda","Bernice","Genevieve","Jean","Cordelia","Marian","Francis","Jeanette","Adeline","Gussie","Leah","Lois","Lura","Mittie","Hallie","Isabella","Olga","Phoebe","Teresa","Hester","Lida","Lina","Winnie","Claudia","Marguerite","Vera","Cecelia","Bess","Emilie","Rosetta","Verna","Myrtie","Cecilia","Elva","Olivia","Ophelia","Georgie","Elnora","Violet","Adele","Lily","Linnie","Loretta","Madge","Polly","Virgie","Eugenia","Lucile","Lucille","Mabelle","Rosalie"],it:["Ada","Adriana","Alessandra","Alessia","Alice","Angela","Anna","Anna Maria","Annalisa","Annita","Annunziata","Antonella","Arianna","Asia","Assunta","Aurora","Barbara","Beatrice","Benedetta","Bianca","Bruna","Camilla","Carla","Carlotta","Carmela","Carolina","Caterina","Catia","Cecilia","Chiara","Cinzia","Clara","Claudia","Costanza","Cristina","Daniela","Debora","Diletta","Dina","Donatella","Elena","Eleonora","Elisa","Elisabetta","Emanuela","Emma","Eva","Federica","Fernanda","Fiorella","Fiorenza","Flora","Franca","Francesca","Gabriella","Gaia","Gemma","Giada","Gianna","Gina","Ginevra","Giorgia","Giovanna","Giulia","Giuliana","Giuseppa","Giuseppina","Grazia","Graziella","Greta","Ida","Ilaria","Ines","Iolanda","Irene","Irma","Isabella","Jessica","Laura","Lea","Letizia","Licia","Lidia","Liliana","Lina","Linda","Lisa","Livia","Loretta","Luana","Lucia","Luciana","Lucrezia","Luisa","Manuela","Mara","Marcella","Margherita","Maria","Maria Cristina","Maria Grazia","Maria Luisa","Maria Pia","Maria Teresa","Marina","Marisa","Marta","Martina","Marzia","Matilde","Melissa","Michela","Milena","Mirella","Monica","Natalina","Nella","Nicoletta","Noemi","Olga","Paola","Patrizia","Piera","Pierina","Raffaella","Rebecca","Renata","Rina","Rita","Roberta","Rosa","Rosanna","Rossana","Rossella","Sabrina","Sandra","Sara","Serena","Silvana","Silvia","Simona","Simonetta","Sofia","Sonia","Stefania","Susanna","Teresa","Tina","Tiziana","Tosca","Valentina","Valeria","Vanda","Vanessa","Vanna","Vera","Veronica","Vilma","Viola","Virginia","Vittoria"],nl:["Ada","Arianne","Afke","Amanda","Amber","Amy","Aniek","Anita","Anja","Anna","Anne","Annelies","Annemarie","Annette","Anouk","Astrid","Aukje","Barbara","Bianca","Carla","Carlijn","Carolien","Chantal","Charlotte","Claudia","Daniëlle","Debora","Diane","Dora","Eline","Elise","Ella","Ellen","Emma","Esmee","Evelien","Esther","Erica","Eva","Femke","Fleur","Floor","Froukje","Gea","Gerda","Hanna","Hanneke","Heleen","Hilde","Ilona","Ina","Inge","Ingrid","Iris","Isabel","Isabelle","Janneke","Jasmijn","Jeanine","Jennifer","Jessica","Johanna","Joke","Julia","Julie","Karen","Karin","Katja","Kim","Lara","Laura","Lena","Lianne","Lieke","Lilian","Linda","Lisa","Lisanne","Lotte","Louise","Maaike","Manon","Marga","Maria","Marissa","Marit","Marjolein","Martine","Marleen","Melissa","Merel","Miranda","Michelle","Mirjam","Mirthe","Naomi","Natalie","Nienke","Nina","Noortje","Olivia","Patricia","Paula","Paulien","Ramona","Ria","Rianne","Roos","Rosanne","Ruth","Sabrina","Sandra","Sanne","Sara","Saskia","Silvia","Sofia","Sophie","Sonja","Suzanne","Tamara","Tess","Tessa","Tineke","Valerie","Vanessa","Veerle","Vera","Victoria","Wendy","Willeke","Yvonne","Zoë"],fr:["Abdon","Abel","Abigaëlle","Abigaïl","Acacius","Acanthe","Adalbert","Adalsinde","Adegrine","Adélaïde","Adèle","Adélie","Adeline","Adeltrude","Adolphe","Adonis","Adrastée","Adrehilde","Adrienne","Agathe","Agilbert","Aglaé","Aignan","Agneflète","Agnès","Agrippine","Aimé","Alaine","Alaïs","Albane","Albérade","Alberte","Alcide","Alcine","Alcyone","Aldegonde","Aleth","Alexandrine","Alexine","Alice","Aliénor","Aliette","Aline","Alix","Alizé","Aloïse","Aloyse","Alphonsine","Althée","Amaliane","Amalthée","Amande","Amandine","Amant","Amarande","Amaranthe","Amaryllis","Ambre","Ambroisie","Amélie","Améthyste","Aminte","Anaël","Anaïs","Anastasie","Anatole","Ancelin","Andrée","Anémone","Angadrême","Angèle","Angeline","Angélique","Angilbert","Anicet","Annabelle","Anne","Annette","Annick","Annie","Annonciade","Ansbert","Anstrudie","Anthelme","Antigone","Antoinette","Antonine","Aphélie","Apolline","Apollonie","Aquiline","Arabelle","Arcadie","Archange","Argine","Ariane","Aricie","Ariel","Arielle","Arlette","Armance","Armande","Armandine","Armelle","Armide","Armelle","Armin","Arnaud","Arsène","Arsinoé","Artémis","Arthur","Ascelin","Ascension","Assomption","Astarté","Astérie","Astrée","Astrid","Athalie","Athanasie","Athina","Aube","Albert","Aude","Audrey","Augustine","Aure","Aurélie","Aurélien","Aurèle","Aurore","Auxence","Aveline","Abigaëlle","Avoye","Axelle","Aymard","Azalée","Adèle","Adeline","Barbe","Basilisse","Bathilde","Béatrice","Béatrix","Bénédicte","Bérengère","Bernadette","Berthe","Bertille","Beuve","Blanche","Blanc","Blandine","Brigitte","Brune","Brunehilde","Callista","Camille","Capucine","Carine","Caroline","Cassandre","Catherine","Cécile","Céleste","Célestine","Céline","Chantal","Charlène","Charline","Charlotte","Chloé","Christelle","Christiane","Christine","Claire","Clara","Claude","Claudine","Clarisse","Clémence","Clémentine","Cléo","Clio","Clotilde","Coline","Conception","Constance","Coralie","Coraline","Corentine","Corinne","Cyrielle","Daniel","Daniel","Daphné","Débora","Delphine","Denise","Diane","Dieudonné","Dominique","Doriane","Dorothée","Douce","Édith","Edmée","Éléonore","Éliane","Élia","Éliette","Élisabeth","Élise","Ella","Élodie","Éloïse","Elsa","Émeline","Émérance","Émérentienne","Émérencie","Émilie","Emma","Emmanuelle","Emmelie","Ernestine","Esther","Estelle","Eudoxie","Eugénie","Eulalie","Euphrasie","Eusébie","Évangéline","Eva","Ève","Évelyne","Fanny","Fantine","Faustine","Félicie","Fernande","Flavie","Fleur","Flore","Florence","Florie","Fortuné","France","Francia","Françoise","Francine","Gabrielle","Gaëlle","Garance","Geneviève","Georgette","Gerberge","Germaine","Gertrude","Gisèle","Guenièvre","Guilhemine","Guillemette","Gustave","Gwenael","Hélène","Héloïse","Henriette","Hermine","Hermione","Hippolyte","Honorine","Hortense","Huguette","Ines","Irène","Irina","Iris","Isabeau","Isabelle","Iseult","Isolde","Ismérie","Jacinthe","Jacqueline","Jade","Janine","Jeanne","Jocelyne","Joëlle","Joséphine","Judith","Julia","Julie","Jules","Juliette","Justine","Katy","Kathy","Katie","Laura","Laure","Laureline","Laurence","Laurene","Lauriane","Laurianne","Laurine","Léa","Léna","Léonie","Léon","Léontine","Lorraine","Lucie","Lucienne","Lucille","Ludivine","Lydie","Lydie","Megane","Madeleine","Magali","Maguelone","Mallaury","Manon","Marceline","Margot","Marguerite","Marianne","Marie","Myriam","Marie","Marine","Marion","Marlène","Marthe","Martine","Mathilde","Maud","Maureen","Mauricette","Maxime","Mélanie","Melissa","Mélissandre","Mélisande","Mélodie","Michel","Micheline","Mireille","Miriam","Moïse","Monique","Morgane","Muriel","Mylène","Nadège","Nadine","Nathalie","Nicole","Nicolette","Nine","Noël","Noémie","Océane","Odette","Odile","Olive","Olivia","Olympe","Ombline","Ombeline","Ophélie","Oriande","Oriane","Ozanne","Pascale","Pascaline","Paule","Paulette","Pauline","Priscille","Prisca","Prisque","Pécine","Pélagie","Pénélope","Perrine","Pétronille","Philippine","Philomène","Philothée","Primerose","Prudence","Pulchérie","Quentine","Quiéta","Quintia","Quintilla","Rachel","Raphaëlle","Raymonde","Rebecca","Régine","Réjeanne","René","Rita","Rita","Rolande","Romane","Rosalie","Rose","Roseline","Sabine","Salomé","Sandra","Sandrine","Sarah","Ségolène","Séverine","Sibylle","Simone","Sixt","Solange","Soline","Solène","Sophie","Stéphanie","Suzanne","Sylvain","Sylvie","Tatiana","Thaïs","Théodora","Thérèse","Tiphaine","Ursule","Valentine","Valérie","Véronique","Victoire","Victorine","Vinciane","Violette","Virginie","Viviane","Xavière","Yolande","Ysaline","Yvette","Yvonne","Zélie","Zita","Zoé"]}},lastNames:{en:["Smith","Johnson","Williams","Jones","Brown","Davis","Miller","Wilson","Moore","Taylor","Anderson","Thomas","Jackson","White","Harris","Martin","Thompson","Garcia","Martinez","Robinson","Clark","Rodriguez","Lewis","Lee","Walker","Hall","Allen","Young","Hernandez","King","Wright","Lopez","Hill","Scott","Green","Adams","Baker","Gonzalez","Nelson","Carter","Mitchell","Perez","Roberts","Turner","Phillips","Campbell","Parker","Evans","Edwards","Collins","Stewart","Sanchez","Morris","Rogers","Reed","Cook","Morgan","Bell","Murphy","Bailey","Rivera","Cooper","Richardson","Cox","Howard","Ward","Torres","Peterson","Gray","Ramirez","James","Watson","Brooks","Kelly","Sanders","Price","Bennett","Wood","Barnes","Ross","Henderson","Coleman","Jenkins","Perry","Powell","Long","Patterson","Hughes","Flores","Washington","Butler","Simmons","Foster","Gonzales","Bryant","Alexander","Russell","Griffin","Diaz","Hayes","Myers","Ford","Hamilton","Graham","Sullivan","Wallace","Woods","Cole","West","Jordan","Owens","Reynolds","Fisher","Ellis","Harrison","Gibson","McDonald","Cruz","Marshall","Ortiz","Gomez","Murray","Freeman","Wells","Webb","Simpson","Stevens","Tucker","Porter","Hunter","Hicks","Crawford","Henry","Boyd","Mason","Morales","Kennedy","Warren","Dixon","Ramos","Reyes","Burns","Gordon","Shaw","Holmes","Rice","Robertson","Hunt","Black","Daniels","Palmer","Mills","Nichols","Grant","Knight","Ferguson","Rose","Stone","Hawkins","Dunn","Perkins","Hudson","Spencer","Gardner","Stephens","Payne","Pierce","Berry","Matthews","Arnold","Wagner","Willis","Ray","Watkins","Olson","Carroll","Duncan","Snyder","Hart","Cunningham","Bradley","Lane","Andrews","Ruiz","Harper","Fox","Riley","Armstrong","Carpenter","Weaver","Greene","Lawrence","Elliott","Chavez","Sims","Austin","Peters","Kelley","Franklin","Lawson","Fields","Gutierrez","Ryan","Schmidt","Carr","Vasquez","Castillo","Wheeler","Chapman","Oliver","Montgomery","Richards","Williamson","Johnston","Banks","Meyer","Bishop","McCoy","Howell","Alvarez","Morrison","Hansen","Fernandez","Garza","Harvey","Little","Burton","Stanley","Nguyen","George","Jacobs","Reid","Kim","Fuller","Lynch","Dean","Gilbert","Garrett","Romero","Welch","Larson","Frazier","Burke","Hanson","Day","Mendoza","Moreno","Bowman","Medina","Fowler","Brewer","Hoffman","Carlson","Silva","Pearson","Holland","Douglas","Fleming","Jensen","Vargas","Byrd","Davidson","Hopkins","May","Terry","Herrera","Wade","Soto","Walters","Curtis","Neal","Caldwell","Lowe","Jennings","Barnett","Graves","Jimenez","Horton","Shelton","Barrett","Obrien","Castro","Sutton","Gregory","McKinney","Lucas","Miles","Craig","Rodriquez","Chambers","Holt","Lambert","Fletcher","Watts","Bates","Hale","Rhodes","Pena","Beck","Newman","Haynes","McDaniel","Mendez","Bush","Vaughn","Parks","Dawson","Santiago","Norris","Hardy","Love","Steele","Curry","Powers","Schultz","Barker","Guzman","Page","Munoz","Ball","Keller","Chandler","Weber","Leonard","Walsh","Lyons","Ramsey","Wolfe","Schneider","Mullins","Benson","Sharp","Bowen","Daniel","Barber","Cummings","Hines","Baldwin","Griffith","Valdez","Hubbard","Salazar","Reeves","Warner","Stevenson","Burgess","Santos","Tate","Cross","Garner","Mann","Mack","Moss","Thornton","Dennis","McGee","Farmer","Delgado","Aguilar","Vega","Glover","Manning","Cohen","Harmon","Rodgers","Robbins","Newton","Todd","Blair","Higgins","Ingram","Reese","Cannon","Strickland","Townsend","Potter","Goodwin","Walton","Rowe","Hampton","Ortega","Patton","Swanson","Joseph","Francis","Goodman","Maldonado","Yates","Becker","Erickson","Hodges","Rios","Conner","Adkins","Webster","Norman","Malone","Hammond","Flowers","Cobb","Moody","Quinn","Blake","Maxwell","Pope","Floyd","Osborne","Paul","McCarthy","Guerrero","Lindsey","Estrada","Sandoval","Gibbs","Tyler","Gross","Fitzgerald","Stokes","Doyle","Sherman","Saunders","Wise","Colon","Gill","Alvarado","Greer","Padilla","Simon","Waters","Nunez","Ballard","Schwartz","McBride","Houston","Christensen","Klein","Pratt","Briggs","Parsons","McLaughlin","Zimmerman","French","Buchanan","Moran","Copeland","Roy","Pittman","Brady","McCormick","Holloway","Brock","Poole","Frank","Logan","Owen","Bass","Marsh","Drake","Wong","Jefferson","Park","Morton","Abbott","Sparks","Patrick","Norton","Huff","Clayton","Massey","Lloyd","Figueroa","Carson","Bowers","Roberson","Barton","Tran","Lamb","Harrington","Casey","Boone","Cortez","Clarke","Mathis","Singleton","Wilkins","Cain","Bryan","Underwood","Hogan","McKenzie","Collier","Luna","Phelps","McGuire","Allison","Bridges","Wilkerson","Nash","Summers","Atkins"],it:["Acciai","Aglietti","Agostini","Agresti","Ahmed","Aiazzi","Albanese","Alberti","Alessi","Alfani","Alinari","Alterini","Amato","Ammannati","Ancillotti","Andrei","Andreini","Andreoni","Angeli","Anichini","Antonelli","Antonini","Arena","Ariani","Arnetoli","Arrighi","Baccani","Baccetti","Bacci","Bacherini","Badii","Baggiani","Baglioni","Bagni","Bagnoli","Baldassini","Baldi","Baldini","Ballerini","Balli","Ballini","Balloni","Bambi","Banchi","Bandinelli","Bandini","Bani","Barbetti","Barbieri","Barchielli","Bardazzi","Bardelli","Bardi","Barducci","Bargellini","Bargiacchi","Barni","Baroncelli","Baroncini","Barone","Baroni","Baronti","Bartalesi","Bartoletti","Bartoli","Bartolini","Bartoloni","Bartolozzi","Basagni","Basile","Bassi","Batacchi","Battaglia","Battaglini","Bausi","Becagli","Becattini","Becchi","Becucci","Bellandi","Bellesi","Belli","Bellini","Bellucci","Bencini","Benedetti","Benelli","Beni","Benini","Bensi","Benucci","Benvenuti","Berlincioni","Bernacchioni","Bernardi","Bernardini","Berni","Bernini","Bertelli","Berti","Bertini","Bessi","Betti","Bettini","Biagi","Biagini","Biagioni","Biagiotti","Biancalani","Bianchi","Bianchini","Bianco","Biffoli","Bigazzi","Bigi","Biliotti","Billi","Binazzi","Bindi","Bini","Biondi","Bizzarri","Bocci","Bogani","Bolognesi","Bonaiuti","Bonanni","Bonciani","Boncinelli","Bondi","Bonechi","Bongini","Boni","Bonini","Borchi","Boretti","Borghi","Borghini","Borgioli","Borri","Borselli","Boschi","Bottai","Bracci","Braccini","Brandi","Braschi","Bravi","Brazzini","Breschi","Brilli","Brizzi","Brogelli","Brogi","Brogioni","Brunelli","Brunetti","Bruni","Bruno","Brunori","Bruschi","Bucci","Bucciarelli","Buccioni","Bucelli","Bulli","Burberi","Burchi","Burgassi","Burroni","Bussotti","Buti","Caciolli","Caiani","Calabrese","Calamai","Calamandrei","Caldini","Calo'","Calonaci","Calosi","Calvelli","Cambi","Camiciottoli","Cammelli","Cammilli","Campolmi","Cantini","Capanni","Capecchi","Caponi","Cappelletti","Cappelli","Cappellini","Cappugi","Capretti","Caputo","Carbone","Carboni","Cardini","Carlesi","Carletti","Carli","Caroti","Carotti","Carrai","Carraresi","Carta","Caruso","Casalini","Casati","Caselli","Casini","Castagnoli","Castellani","Castelli","Castellucci","Catalano","Catarzi","Catelani","Cavaciocchi","Cavallaro","Cavallini","Cavicchi","Cavini","Ceccarelli","Ceccatelli","Ceccherelli","Ceccherini","Cecchi","Cecchini","Cecconi","Cei","Cellai","Celli","Cellini","Cencetti","Ceni","Cenni","Cerbai","Cesari","Ceseri","Checcacci","Checchi","Checcucci","Cheli","Chellini","Chen","Cheng","Cherici","Cherubini","Chiaramonti","Chiarantini","Chiarelli","Chiari","Chiarini","Chiarugi","Chiavacci","Chiesi","Chimenti","Chini","Chirici","Chiti","Ciabatti","Ciampi","Cianchi","Cianfanelli","Cianferoni","Ciani","Ciapetti","Ciappi","Ciardi","Ciatti","Cicali","Ciccone","Cinelli","Cini","Ciobanu","Ciolli","Cioni","Cipriani","Cirillo","Cirri","Ciucchi","Ciuffi","Ciulli","Ciullini","Clemente","Cocchi","Cognome","Coli","Collini","Colombo","Colzi","Comparini","Conforti","Consigli","Conte","Conti","Contini","Coppini","Coppola","Corsi","Corsini","Corti","Cortini","Cosi","Costa","Costantini","Costantino","Cozzi","Cresci","Crescioli","Cresti","Crini","Curradi","D'Agostino","D'Alessandro","D'Amico","D'Angelo","Daddi","Dainelli","Dallai","Danti","Davitti","De Angelis","De Luca","De Marco","De Rosa","De Santis","De Simone","De Vita","Degl'Innocenti","Degli Innocenti","Dei","Del Lungo","Del Re","Di Marco","Di Stefano","Dini","Diop","Dobre","Dolfi","Donati","Dondoli","Dong","Donnini","Ducci","Dumitru","Ermini","Esposito","Evangelisti","Fabbri","Fabbrini","Fabbrizzi","Fabbroni","Fabbrucci","Fabiani","Facchini","Faggi","Fagioli","Failli","Faini","Falciani","Falcini","Falcone","Fallani","Falorni","Falsini","Falugiani","Fancelli","Fanelli","Fanetti","Fanfani","Fani","Fantappie'","Fantechi","Fanti","Fantini","Fantoni","Farina","Fattori","Favilli","Fedi","Fei","Ferrante","Ferrara","Ferrari","Ferraro","Ferretti","Ferri","Ferrini","Ferroni","Fiaschi","Fibbi","Fiesoli","Filippi","Filippini","Fini","Fioravanti","Fiore","Fiorentini","Fiorini","Fissi","Focardi","Foggi","Fontana","Fontanelli","Fontani","Forconi","Formigli","Forte","Forti","Fortini","Fossati","Fossi","Francalanci","Franceschi","Franceschini","Franchi","Franchini","Franci","Francini","Francioni","Franco","Frassineti","Frati","Fratini","Frilli","Frizzi","Frosali","Frosini","Frullini","Fusco","Fusi","Gabbrielli","Gabellini","Gagliardi","Galanti","Galardi","Galeotti","Galletti","Galli","Gallo","Gallori","Gambacciani","Gargani","Garofalo","Garuglieri","Gashi","Gasperini","Gatti","Gelli","Gensini","Gentile","Gentili","Geri","Gerini","Gheri","Ghini","Giachetti","Giachi","Giacomelli","Gianassi","Giani","Giannelli","Giannetti","Gianni","Giannini","Giannoni","Giannotti","Giannozzi","Gigli","Giordano","Giorgetti","Giorgi","Giovacchini","Giovannelli","Giovannetti","Giovannini","Giovannoni","Giuliani","Giunti","Giuntini","Giusti","Gonnelli","Goretti","Gori","Gradi","Gramigni","Grassi","Grasso","Graziani","Grazzini","Greco","Grifoni","Grillo","Grimaldi","Grossi","Gualtieri","Guarducci","Guarino","Guarnieri","Guasti","Guerra","Guerri","Guerrini","Guidi","Guidotti","He","Hoxha","Hu","Huang","Iandelli","Ignesti","Innocenti","Jin","La Rosa","Lai","Landi","Landini","Lanini","Lapi","Lapini","Lari","Lascialfari","Lastrucci","Latini","Lazzeri","Lazzerini","Lelli","Lenzi","Leonardi","Leoncini","Leone","Leoni","Lepri","Li","Liao","Lin","Linari","Lippi","Lisi","Livi","Lombardi","Lombardini","Lombardo","Longo","Lopez","Lorenzi","Lorenzini","Lorini","Lotti","Lu","Lucchesi","Lucherini","Lunghi","Lupi","Madiai","Maestrini","Maffei","Maggi","Maggini","Magherini","Magini","Magnani","Magnelli","Magni","Magnolfi","Magrini","Malavolti","Malevolti","Manca","Mancini","Manetti","Manfredi","Mangani","Mannelli","Manni","Mannini","Mannucci","Manuelli","Manzini","Marcelli","Marchese","Marchetti","Marchi","Marchiani","Marchionni","Marconi","Marcucci","Margheri","Mari","Mariani","Marilli","Marinai","Marinari","Marinelli","Marini","Marino","Mariotti","Marsili","Martelli","Martinelli","Martini","Martino","Marzi","Masi","Masini","Masoni","Massai","Materassi","Mattei","Matteini","Matteucci","Matteuzzi","Mattioli","Mattolini","Matucci","Mauro","Mazzanti","Mazzei","Mazzetti","Mazzi","Mazzini","Mazzocchi","Mazzoli","Mazzoni","Mazzuoli","Meacci","Mecocci","Meini","Melani","Mele","Meli","Mengoni","Menichetti","Meoni","Merlini","Messeri","Messina","Meucci","Miccinesi","Miceli","Micheli","Michelini","Michelozzi","Migliori","Migliorini","Milani","Miniati","Misuri","Monaco","Montagnani","Montagni","Montanari","Montelatici","Monti","Montigiani","Montini","Morandi","Morandini","Morelli","Moretti","Morganti","Mori","Morini","Moroni","Morozzi","Mugnai","Mugnaini","Mustafa","Naldi","Naldini","Nannelli","Nanni","Nannini","Nannucci","Nardi","Nardini","Nardoni","Natali","Ndiaye","Nencetti","Nencini","Nencioni","Neri","Nesi","Nesti","Niccolai","Niccoli","Niccolini","Nigi","Nistri","Nocentini","Noferini","Novelli","Nucci","Nuti","Nutini","Oliva","Olivieri","Olmi","Orlandi","Orlandini","Orlando","Orsini","Ortolani","Ottanelli","Pacciani","Pace","Paci","Pacini","Pagani","Pagano","Paggetti","Pagliai","Pagni","Pagnini","Paladini","Palagi","Palchetti","Palloni","Palmieri","Palumbo","Pampaloni","Pancani","Pandolfi","Pandolfini","Panerai","Panichi","Paoletti","Paoli","Paolini","Papi","Papini","Papucci","Parenti","Parigi","Parisi","Parri","Parrini","Pasquini","Passeri","Pecchioli","Pecorini","Pellegrini","Pepi","Perini","Perrone","Peruzzi","Pesci","Pestelli","Petri","Petrini","Petrucci","Pettini","Pezzati","Pezzatini","Piani","Piazza","Piazzesi","Piazzini","Piccardi","Picchi","Piccini","Piccioli","Pieraccini","Pieraccioni","Pieralli","Pierattini","Pieri","Pierini","Pieroni","Pietrini","Pini","Pinna","Pinto","Pinzani","Pinzauti","Piras","Pisani","Pistolesi","Poggesi","Poggi","Poggiali","Poggiolini","Poli","Pollastri","Porciani","Pozzi","Pratellesi","Pratesi","Prosperi","Pruneti","Pucci","Puccini","Puccioni","Pugi","Pugliese","Puliti","Querci","Quercioli","Raddi","Radu","Raffaelli","Ragazzini","Ranfagni","Ranieri","Rastrelli","Raugei","Raveggi","Renai","Renzi","Rettori","Ricci","Ricciardi","Ridi","Ridolfi","Rigacci","Righi","Righini","Rinaldi","Risaliti","Ristori","Rizzo","Rocchi","Rocchini","Rogai","Romagnoli","Romanelli","Romani","Romano","Romei","Romeo","Romiti","Romoli","Romolini","Rontini","Rosati","Roselli","Rosi","Rossetti","Rossi","Rossini","Rovai","Ruggeri","Ruggiero","Russo","Sabatini","Saccardi","Sacchetti","Sacchi","Sacco","Salerno","Salimbeni","Salucci","Salvadori","Salvestrini","Salvi","Salvini","Sanesi","Sani","Sanna","Santi","Santini","Santoni","Santoro","Santucci","Sardi","Sarri","Sarti","Sassi","Sbolci","Scali","Scarpelli","Scarselli","Scopetani","Secci","Selvi","Senatori","Senesi","Serafini","Sereni","Serra","Sestini","Sguanci","Sieni","Signorini","Silvestri","Simoncini","Simonetti","Simoni","Singh","Sodi","Soldi","Somigli","Sorbi","Sorelli","Sorrentino","Sottili","Spina","Spinelli","Staccioli","Staderini","Stefanelli","Stefani","Stefanini","Stella","Susini","Tacchi","Tacconi","Taddei","Tagliaferri","Tamburini","Tanganelli","Tani","Tanini","Tapinassi","Tarchi","Tarchiani","Targioni","Tassi","Tassini","Tempesti","Terzani","Tesi","Testa","Testi","Tilli","Tinti","Tirinnanzi","Toccafondi","Tofanari","Tofani","Tognaccini","Tonelli","Tonini","Torelli","Torrini","Tosi","Toti","Tozzi","Trambusti","Trapani","Tucci","Turchi","Ugolini","Ulivi","Valente","Valenti","Valentini","Vangelisti","Vanni","Vannini","Vannoni","Vannozzi","Vannucchi","Vannucci","Ventura","Venturi","Venturini","Vestri","Vettori","Vichi","Viciani","Vieri","Vigiani","Vignoli","Vignolini","Vignozzi","Villani","Vinci","Visani","Vitale","Vitali","Viti","Viviani","Vivoli","Volpe","Volpi","Wang","Wu","Xu","Yang","Ye","Zagli","Zani","Zanieri","Zanobini","Zecchi","Zetti","Zhang","Zheng","Zhou","Zhu","Zingoni","Zini","Zoppi"],nl:["Albers","Alblas","Appelman","Baars","Baas","Bakker","Blank","Bleeker","Blok","Blom","Boer","Boers","Boldewijn","Boon","Boot","Bos","Bosch","Bosma","Bosman","Bouma","Bouman","Bouwman","Brands","Brouwer","Burger","Buijs","Buitenhuis","Ceder","Cohen","Dekker","Dekkers","Dijkman","Dijkstra","Driessen","Drost","Engel","Evers","Faber","Franke","Gerritsen","Goedhart","Goossens","Groen","Groenenberg","Groot","Haan","Hart","Heemskerk","Hendriks","Hermans","Hoekstra","Hofman","Hopman","Huisman","Jacobs","Jansen","Janssen","Jonker","Jaspers","Keijzer","Klaassen","Klein","Koek","Koenders","Kok","Kool","Koopman","Koopmans","Koning","Koster","Kramer","Kroon","Kuijpers","Kuiper","Kuipers","Kurt","Koster","Kwakman","Los","Lubbers","Maas","Markus","Martens","Meijer","Mol","Molenaar","Mulder","Nieuwenhuis","Peeters","Peters","Pengel","Pieters","Pool","Post","Postma","Prins","Pronk","Reijnders","Rietveld","Roest","Roos","Sanders","Schaap","Scheffer","Schenk","Schilder","Schipper","Schmidt","Scholten","Schouten","Schut","Schutte","Schuurman","Simons","Smeets","Smit","Smits","Snel","Swinkels","Tas","Terpstra","Timmermans","Tol","Tromp","Troost","Valk","Veenstra","Veldkamp","Verbeek","Verheul","Verhoeven","Vermeer","Vermeulen","Verweij","Vink","Visser","Voorn","Vos","Wagenaar","Wiersema","Willems","Willemsen","Witteveen","Wolff","Wolters","Zijlstra","Zwart","de Beer","de Boer","de Bruijn","de Bruin","de Graaf","de Groot","de Haan","de Haas","de Jager","de Jong","de Jonge","de Koning","de Lange","de Leeuw","de Ridder","de Rooij","de Ruiter","de Vos","de Vries","de Waal","de Wit","de Zwart","van Beek","van Boven","van Dam","van Dijk","van Dongen","van Doorn","van Egmond","van Eijk","van Es","van Gelder","van Gelderen","van Houten","van Hulst","van Kempen","van Kesteren","van Leeuwen","van Loon","van Mill","van Noord","van Ommen","van Ommeren","van Oosten","van Oostveen","van Rijn","van Schaik","van Veen","van Vliet","van Wijk","van Wijngaarden","van den Poel","van de Pol","van den Ploeg","van de Ven","van den Berg","van den Bosch","van den Brink","van den Broek","van den Heuvel","van der Heijden","van der Horst","van der Hulst","van der Kroon","van der Laan","van der Linden","van der Meer","van der Meij","van der Meulen","van der Molen","van der Sluis","van der Spek","van der Veen","van der Velde","van der Velden","van der Vliet","van der Wal"],uk:["Smith","Jones","Williams","Taylor","Brown","Davies","Evans","Wilson","Thomas","Johnson","Roberts","Robinson","Thompson","Wright","Walker","White","Edwards","Hughes","Green","Hall","Lewis","Harris","Clarke","Patel","Jackson","Wood","Turner","Martin","Cooper","Hill","Ward","Morris","Moore","Clark","Lee","King","Baker","Harrison","Morgan","Allen","James","Scott","Phillips","Watson","Davis","Parker","Price","Bennett","Young","Griffiths","Mitchell","Kelly","Cook","Carter","Richardson","Bailey","Collins","Bell","Shaw","Murphy","Miller","Cox","Richards","Khan","Marshall","Anderson","Simpson","Ellis","Adams","Singh","Begum","Wilkinson","Foster","Chapman","Powell","Webb","Rogers","Gray","Mason","Ali","Hunt","Hussain","Campbell","Matthews","Owen","Palmer","Holmes","Mills","Barnes","Knight","Lloyd","Butler","Russell","Barker","Fisher","Stevens","Jenkins","Murray","Dixon","Harvey","Graham","Pearson","Ahmed","Fletcher","Walsh","Kaur","Gibson","Howard","Andrews","Stewart","Elliott","Reynolds","Saunders","Payne","Fox","Ford","Pearce","Day","Brooks","West","Lawrence","Cole","Atkinson","Bradley","Spencer","Gill","Dawson","Ball","Burton","O'brien","Watts","Rose","Booth","Perry","Ryan","Grant","Wells","Armstrong","Francis","Rees","Hayes","Hart","Hudson","Newman","Barrett","Webster","Hunter","Gregory","Carr","Lowe","Page","Marsh","Riley","Dunn","Woods","Parsons","Berry","Stone","Reid","Holland","Hawkins","Harding","Porter","Robertson","Newton","Oliver","Reed","Kennedy","Williamson","Bird","Gardner","Shah","Dean","Lane","Cooke","Bates","Henderson","Parry","Burgess","Bishop","Walton","Burns","Nicholson","Shepherd","Ross","Cross","Long","Freeman","Warren","Nicholls","Hamilton","Byrne","Sutton","Mcdonald","Yates","Hodgson","Robson","Curtis","Hopkins","O'connor","Harper","Coleman","Watkins","Moss","Mccarthy","Chambers","O'neill","Griffin","Sharp","Hardy","Wheeler","Potter","Osborne","Johnston","Gordon","Doyle","Wallace","George","Jordan","Hutchinson","Rowe","Burke","May","Pritchard","Gilbert","Willis","Higgins","Read","Miles","Stevenson","Stephenson","Hammond","Arnold","Buckley","Walters","Hewitt","Barber","Nelson","Slater","Austin","Sullivan","Whitehead","Mann","Frost","Lambert","Stephens","Blake","Akhtar","Lynch","Goodwin","Barton","Woodward","Thomson","Cunningham","Quinn","Barnett","Baxter","Bibi","Clayton","Nash","Greenwood","Jennings","Holt","Kemp","Poole","Gallagher","Bond","Stokes","Tucker","Davidson","Fowler","Heath","Norman","Middleton","Lawson","Banks","French","Stanley","Jarvis","Gibbs","Ferguson","Hayward","Carroll","Douglas","Dickinson","Todd","Barlow","Peters","Lucas","Knowles","Hartley","Miah","Simmons","Morton","Alexander","Field","Morrison","Norris","Townsend","Preston","Hancock","Thornton","Baldwin","Burrows","Briggs","Parkinson","Reeves","Macdonald","Lamb","Black","Abbott","Sanders","Thorpe","Holden","Tomlinson","Perkins","Ashton","Rhodes","Fuller","Howe","Bryant","Vaughan","Dale","Davey","Weston","Bartlett","Whittaker","Davison","Kent","Skinner","Birch","Morley","Daniels","Glover","Howell","Cartwright","Pugh","Humphreys","Goddard","Brennan","Wall","Kirby","Bowen","Savage","Bull","Wong","Dobson","Smart","Wilkins","Kirk","Fraser","Duffy","Hicks","Patterson","Bradshaw","Little","Archer","Warner","Waters","O'sullivan","Farrell","Brookes","Atkins","Kay","Dodd","Bentley","Flynn","John","Schofield","Short","Haynes","Wade","Butcher","Henry","Sanderson","Crawford","Sheppard","Bolton","Coates","Giles","Gould","Houghton","Gibbons","Pratt","Manning","Law","Hooper","Noble","Dyer","Rahman","Clements","Moran","Sykes","Chan","Doherty","Connolly","Joyce","Franklin","Hobbs","Coles","Herbert","Steele","Kerr","Leach","Winter","Owens","Duncan","Naylor","Fleming","Horton","Finch","Fitzgerald","Randall","Carpenter","Marsden","Browne","Garner","Pickering","Hale","Dennis","Vincent","Chadwick","Chandler","Sharpe","Nolan","Lyons","Hurst","Collier","Peacock","Howarth","Faulkner","Rice","Pollard","Welch","Norton","Gough","Sinclair","Blackburn","Bryan","Conway","Power","Cameron","Daly","Allan","Hanson","Gardiner","Boyle","Myers","Turnbull","Wallis","Mahmood","Sims","Swift","Iqbal","Pope","Brady","Chamberlain","Rowley","Tyler","Farmer","Metcalfe","Hilton","Godfrey","Holloway","Parkin","Bray","Talbot","Donnelly","Nixon","Charlton","Benson","Whitehouse","Barry","Hope","Lord","North","Storey","Connor","Potts","Bevan","Hargreaves","Mclean","Mistry","Bruce","Howells","Hyde","Parkes","Wyatt","Fry","Lees","O'donnell","Craig","Forster","Mckenzie","Humphries","Mellor","Carey","Ingram","Summers","Leonard"],de:["Müller","Schmidt","Schneider","Fischer","Weber","Meyer","Wagner","Becker","Schulz","Hoffmann","Schäfer","Koch","Bauer","Richter","Klein","Wolf","Schröder","Neumann","Schwarz","Zimmermann","Braun","Krüger","Hofmann","Hartmann","Lange","Schmitt","Werner","Schmitz","Krause","Meier","Lehmann","Schmid","Schulze","Maier","Köhler","Herrmann","König","Walter","Mayer","Huber","Kaiser","Fuchs","Peters","Lang","Scholz","Möller","Weiß","Jung","Hahn","Schubert","Vogel","Friedrich","Keller","Günther","Frank","Berger","Winkler","Roth","Beck","Lorenz","Baumann","Franke","Albrecht","Schuster","Simon","Ludwig","Böhm","Winter","Kraus","Martin","Schumacher","Krämer","Vogt","Stein","Jäger","Otto","Sommer","Groß","Seidel","Heinrich","Brandt","Haas","Schreiber","Graf","Schulte","Dietrich","Ziegler","Kuhn","Kühn","Pohl","Engel","Horn","Busch","Bergmann","Thomas","Voigt","Sauer","Arnold","Wolff","Pfeiffer"],jp:["Sato","Suzuki","Takahashi","Tanaka","Watanabe","Ito","Yamamoto","Nakamura","Kobayashi","Kato","Yoshida","Yamada","Sasaki","Yamaguchi","Saito","Matsumoto","Inoue","Kimura","Hayashi","Shimizu","Yamazaki","Mori","Abe","Ikeda","Hashimoto","Yamashita","Ishikawa","Nakajima","Maeda","Fujita","Ogawa","Goto","Okada","Hasegawa","Murakami","Kondo","Ishii","Saito","Sakamoto","Endo","Aoki","Fujii","Nishimura","Fukuda","Ota","Miura","Fujiwara","Okamoto","Matsuda","Nakagawa","Nakano","Harada","Ono","Tamura","Takeuchi","Kaneko","Wada","Nakayama","Ishida","Ueda","Morita","Hara","Shibata","Sakai","Kudo","Yokoyama","Miyazaki","Miyamoto","Uchida","Takagi","Ando","Taniguchi","Ohno","Maruyama","Imai","Takada","Fujimoto","Takeda","Murata","Ueno","Sugiyama","Masuda","Sugawara","Hirano","Kojima","Otsuka","Chiba","Kubo","Matsui","Iwasaki","Sakurai","Kinoshita","Noguchi","Matsuo","Nomura","Kikuchi","Sano","Onishi","Sugimoto","Arai"],es:["Garcia","Fernandez","Lopez","Martinez","Gonzalez","Rodriguez","Sanchez","Perez","Martin","Gomez","Ruiz","Diaz","Hernandez","Alvarez","Jimenez","Moreno","Munoz","Alonso","Romero","Navarro","Gutierrez","Torres","Dominguez","Gil","Vazquez","Blanco","Serrano","Ramos","Castro","Suarez","Sanz","Rubio","Ortega","Molina","Delgado","Ortiz","Morales","Ramirez","Marin","Iglesias","Santos","Castillo","Garrido","Calvo","Pena","Cruz","Cano","Nunez","Prieto","Diez","Lozano","Vidal","Pascual","Ferrer","Medina","Vega","Leon","Herrero","Vicente","Mendez","Guerrero","Fuentes","Campos","Nieto","Cortes","Caballero","Ibanez","Lorenzo","Pastor","Gimenez","Saez","Soler","Marquez","Carrasco","Herrera","Montero","Arias","Crespo","Flores","Andres","Aguilar","Hidalgo","Cabrera","Mora","Duran","Velasco","Rey","Pardo","Roman","Vila","Bravo","Merino","Moya","Soto","Izquierdo","Reyes","Redondo","Marcos","Carmona","Menendez"],fr:["Martin","Bernard","Thomas","Petit","Robert","Richard","Durand","Dubois","Moreau","Laurent","Simon","Michel","Lefèvre","Leroy","Roux","David","Bertrand","Morel","Fournier","Girard","Bonnet","Dupont","Lambert","Fontaine","Rousseau","Vincent","Müller","Lefèvre","Faure","André","Mercier","Blanc","Guérin","Boyer","Garnier","Chevalier","François","Legrand","Gauthier","Garcia","Perrin","Robin","Clément","Morin","Nicolas","Henry","Roussel","Matthieu","Gautier","Masson","Marchand","Duval","Denis","Dumont","Marie","Lemaire","Noël","Meyer","Dufour","Meunier","Brun","Blanchard","Giraud","Joly","Rivière","Lucas","Brunet","Gaillard","Barbier","Arnaud","Martínez","Gérard","Roche","Renard","Schmitt","Roy","Leroux","Colin","Vidal","Caron","Picard","Roger","Fabre","Aubert","Lemoine","Renaud","Dumas","Lacroix","Olivier","Philippe","Bourgeois","Pierre","Benoît","Rey","Leclerc","Payet","Rolland","Leclercq","Guillaume","Lecomte","López","Jean","Dupuy","Guillot","Hubert","Berger","Carpentier","Sánchez","Dupuis","Moulin","Louis","Deschamps","Huet","Vasseur","Perez","Boucher","Fleury","Royer","Klein","Jacquet","Adam","Paris","Poirier","Marty","Aubry","Guyot","Carré","Charles","Renault","Charpentier","Ménard","Maillard","Baron","Bertin","Bailly","Hervé","Schneider","Fernández","Le GallGall","Collet","Léger","Bouvier","Julien","Prévost","Millet","Perrot","Daniel","Le RouxRoux","Cousin","Germain","Breton","Besson","Langlois","Rémi","Le GoffGoff","Pelletier","Lévêque","Perrier","Leblanc","Barré","Lebrun","Marchal","Weber","Mallet","Hamon","Boulanger","Jacob","Monnier","Michaud","Rodríguez","Guichard","Gillet","Étienne","Grondin","Poulain","Tessier","Chevallier","Collin","Chauvin","Da SilvaSilva","Bouchet","Gay","Lemaître","Bénard","Maréchal","Humbert","Reynaud","Antoine","Hoarau","Perret","Barthélemy","Cordier","Pichon","Lejeune","Gilbert","Lamy","Delaunay","Pasquier","Carlier","LaporteLaporte"]},postcodeAreas:[{code:"AB"},{code:"AL"},{code:"B"},{code:"BA"},{code:"BB"},{code:"BD"},{code:"BH"},{code:"BL"},{code:"BN"},{code:"BR"},{code:"BS"},{code:"BT"},{code:"CA"},{code:"CB"},{code:"CF"},{code:"CH"},{code:"CM"},{code:"CO"},{code:"CR"},{code:"CT"},{code:"CV"},{code:"CW"},{code:"DA"},{code:"DD"},{code:"DE"},{code:"DG"},{code:"DH"},{code:"DL"},{code:"DN"},{code:"DT"},{code:"DY"},{code:"E"},{code:"EC"},{code:"EH"},{code:"EN"},{code:"EX"},{code:"FK"},{code:"FY"},{code:"G"},{code:"GL"},{code:"GU"},{code:"GY"},{code:"HA"},{code:"HD"},{code:"HG"},{code:"HP"},{code:"HR"},{code:"HS"},{code:"HU"},{code:"HX"},{code:"IG"},{code:"IM"},{code:"IP"},{code:"IV"},{code:"JE"},{code:"KA"},{code:"KT"},{code:"KW"},{code:"KY"},{code:"L"},{code:"LA"},{code:"LD"},{code:"LE"},{code:"LL"},{code:"LN"},{code:"LS"},{code:"LU"},{code:"M"},{code:"ME"},{code:"MK"},{code:"ML"},{code:"N"},{code:"NE"},{code:"NG"},{code:"NN"},{code:"NP"},{code:"NR"},{code:"NW"},{code:"OL"},{code:"OX"},{code:"PA"},{code:"PE"},{code:"PH"},{code:"PL"},{code:"PO"},{code:"PR"},{code:"RG"},{code:"RH"},{code:"RM"},{code:"S"},{code:"SA"},{code:"SE"},{code:"SG"},{code:"SK"},{code:"SL"},{code:"SM"},{code:"SN"},{code:"SO"},{code:"SP"},{code:"SR"},{code:"SS"},{code:"ST"},{code:"SW"},{code:"SY"},{code:"TA"},{code:"TD"},{code:"TF"},{code:"TN"},{code:"TQ"},{code:"TR"},{code:"TS"},{code:"TW"},{code:"UB"},{code:"W"},{code:"WA"},{code:"WC"},{code:"WD"},{code:"WF"},{code:"WN"},{code:"WR"},{code:"WS"},{code:"WV"},{code:"YO"},{code:"ZE"}],countries:[{name:"Afghanistan",abbreviation:"AF"},{name:"Åland Islands",abbreviation:"AX"},{name:"Albania",abbreviation:"AL"},{name:"Algeria",abbreviation:"DZ"},{name:"American Samoa",abbreviation:"AS"},{name:"Andorra",abbreviation:"AD"},{name:"Angola",abbreviation:"AO"},{name:"Anguilla",abbreviation:"AI"},{name:"Antarctica",abbreviation:"AQ"},{name:"Antigua and Barbuda",abbreviation:"AG"},{name:"Argentina",abbreviation:"AR"},{name:"Armenia",abbreviation:"AM"},{name:"Aruba",abbreviation:"AW"},{name:"Australia",abbreviation:"AU"},{name:"Austria",abbreviation:"AT"},{name:"Azerbaijan",abbreviation:"AZ"},{name:"Bahamas",abbreviation:"BS"},{name:"Bahrain",abbreviation:"BH"},{name:"Bangladesh",abbreviation:"BD"},{name:"Barbados",abbreviation:"BB"},{name:"Belarus",abbreviation:"BY"},{name:"Belgium",abbreviation:"BE"},{name:"Belize",abbreviation:"BZ"},{name:"Benin",abbreviation:"BJ"},{name:"Bermuda",abbreviation:"BM"},{name:"Bhutan",abbreviation:"BT"},{name:"Plurinational State of Bolivia",abbreviation:"BO"},{name:"Bonaire, Sint Eustatius and Saba",abbreviation:"BQ"},{name:"Bosnia and Herzegovina",abbreviation:"BA"},{name:"Botswana",abbreviation:"BW"},{name:"Bouvet Island",abbreviation:"BV"},{name:"Brazil",abbreviation:"BR"},{name:"British Indian Ocean Territory",abbreviation:"IO"},{name:"Brunei Darussalam",abbreviation:"BN"},{name:"Bulgaria",abbreviation:"BG"},{name:"Burkina Faso",abbreviation:"BF"},{name:"Burundi",abbreviation:"BI"},{name:"Cabo Verde",abbreviation:"CV"},{name:"Cambodia",abbreviation:"KH"},{name:"Cameroon",abbreviation:"CM"},{name:"Canada",abbreviation:"CA"},{name:"Cayman Islands",abbreviation:"KY"},{name:"Central African Republic",abbreviation:"CF"},{name:"Chad",abbreviation:"TD"},{name:"Chile",abbreviation:"CL"},{name:"China",abbreviation:"CN"},{name:"Christmas Island",abbreviation:"CX"},{name:"Cocos (Keeling) Islands",abbreviation:"CC"},{name:"Colombia",abbreviation:"CO"},{name:"Comoros",abbreviation:"KM"},{name:"Congo",abbreviation:"CG"},{name:"Democratic Republic of the Congo",abbreviation:"CD"},{name:"Cook Islands",abbreviation:"CK"},{name:"Costa Rica",abbreviation:"CR"},{name:"Côte d'Ivoire",abbreviation:"CI"},{name:"Croatia",abbreviation:"HR"},{name:"Cuba",abbreviation:"CU"},{name:"Curaçao",abbreviation:"CW"},{name:"Cyprus",abbreviation:"CY"},{name:"Czechia",abbreviation:"CZ"},{name:"Denmark",abbreviation:"DK"},{name:"Djibouti",abbreviation:"DJ"},{name:"Dominica",abbreviation:"DM"},{name:"Dominican Republic",abbreviation:"DO"},{name:"Ecuador",abbreviation:"EC"},{name:"Egypt",abbreviation:"EG"},{name:"El Salvador",abbreviation:"SV"},{name:"Equatorial Guinea",abbreviation:"GQ"},{name:"Eritrea",abbreviation:"ER"},{name:"Estonia",abbreviation:"EE"},{name:"Eswatini",abbreviation:"SZ"},{name:"Ethiopia",abbreviation:"ET"},{name:"Falkland Islands (Malvinas)",abbreviation:"FK"},{name:"Faroe Islands",abbreviation:"FO"},{name:"Fiji",abbreviation:"FJ"},{name:"Finland",abbreviation:"FI"},{name:"France",abbreviation:"FR"},{name:"French Guiana",abbreviation:"GF"},{name:"French Polynesia",abbreviation:"PF"},{name:"French Southern Territories",abbreviation:"TF"},{name:"Gabon",abbreviation:"GA"},{name:"Gambia",abbreviation:"GM"},{name:"Georgia",abbreviation:"GE"},{name:"Germany",abbreviation:"DE"},{name:"Ghana",abbreviation:"GH"},{name:"Gibraltar",abbreviation:"GI"},{name:"Greece",abbreviation:"GR"},{name:"Greenland",abbreviation:"GL"},{name:"Grenada",abbreviation:"GD"},{name:"Guadeloupe",abbreviation:"GP"},{name:"Guam",abbreviation:"GU"},{name:"Guatemala",abbreviation:"GT"},{name:"Guernsey",abbreviation:"GG"},{name:"Guinea",abbreviation:"GN"},{name:"Guinea-Bissau",abbreviation:"GW"},{name:"Guyana",abbreviation:"GY"},{name:"Haiti",abbreviation:"HT"},{name:"Heard Island and McDonald Islands",abbreviation:"HM"},{name:"Holy See",abbreviation:"VA"},{name:"Honduras",abbreviation:"HN"},{name:"Hong Kong",abbreviation:"HK"},{name:"Hungary",abbreviation:"HU"},{name:"Iceland",abbreviation:"IS"},{name:"India",abbreviation:"IN"},{name:"Indonesia",abbreviation:"ID"},{name:"Islamic Republic of Iran",abbreviation:"IR"},{name:"Iraq",abbreviation:"IQ"},{name:"Ireland",abbreviation:"IE"},{name:"Isle of Man",abbreviation:"IM"},{name:"Israel",abbreviation:"IL"},{name:"Italy",abbreviation:"IT"},{name:"Jamaica",abbreviation:"JM"},{name:"Japan",abbreviation:"JP"},{name:"Jersey",abbreviation:"JE"},{name:"Jordan",abbreviation:"JO"},{name:"Kazakhstan",abbreviation:"KZ"},{name:"Kenya",abbreviation:"KE"},{name:"Kiribati",abbreviation:"KI"},{name:"Democratic People's Republic of Korea",abbreviation:"KP"},{name:"Republic of Korea",abbreviation:"KR"},{name:"Kuwait",abbreviation:"KW"},{name:"Kyrgyzstan",abbreviation:"KG"},{name:"Lao People's Democratic Republic",abbreviation:"LA"},{name:"Latvia",abbreviation:"LV"},{name:"Lebanon",abbreviation:"LB"},{name:"Lesotho",abbreviation:"LS"},{name:"Liberia",abbreviation:"LR"},{name:"Libya",abbreviation:"LY"},{name:"Liechtenstein",abbreviation:"LI"},{name:"Lithuania",abbreviation:"LT"},{name:"Luxembourg",abbreviation:"LU"},{name:"Macao",abbreviation:"MO"},{name:"Madagascar",abbreviation:"MG"},{name:"Malawi",abbreviation:"MW"},{name:"Malaysia",abbreviation:"MY"},{name:"Maldives",abbreviation:"MV"},{name:"Mali",abbreviation:"ML"},{name:"Malta",abbreviation:"MT"},{name:"Marshall Islands",abbreviation:"MH"},{name:"Martinique",abbreviation:"MQ"},{name:"Mauritania",abbreviation:"MR"},{name:"Mauritius",abbreviation:"MU"},{name:"Mayotte",abbreviation:"YT"},{name:"Mexico",abbreviation:"MX"},{name:"Federated States of Micronesia",abbreviation:"FM"},{name:"Republic of Moldova",abbreviation:"MD"},{name:"Monaco",abbreviation:"MC"},{name:"Mongolia",abbreviation:"MN"},{name:"Montenegro",abbreviation:"ME"},{name:"Montserrat",abbreviation:"MS"},{name:"Morocco",abbreviation:"MA"},{name:"Mozambique",abbreviation:"MZ"},{name:"Myanmar",abbreviation:"MM"},{name:"Namibia",abbreviation:"NA"},{name:"Nauru",abbreviation:"NR"},{name:"Nepal",abbreviation:"NP"},{name:"Kingdom of the Netherlands",abbreviation:"NL"},{name:"New Caledonia",abbreviation:"NC"},{name:"New Zealand",abbreviation:"NZ"},{name:"Nicaragua",abbreviation:"NI"},{name:"Niger",abbreviation:"NE"},{name:"Nigeria",abbreviation:"NG"},{name:"Niue",abbreviation:"NU"},{name:"Norfolk Island",abbreviation:"NF"},{name:"North Macedonia",abbreviation:"MK"},{name:"Northern Mariana Islands",abbreviation:"MP"},{name:"Norway",abbreviation:"NO"},{name:"Oman",abbreviation:"OM"},{name:"Pakistan",abbreviation:"PK"},{name:"Palau",abbreviation:"PW"},{name:"State of Palestine",abbreviation:"PS"},{name:"Panama",abbreviation:"PA"},{name:"Papua New Guinea",abbreviation:"PG"},{name:"Paraguay",abbreviation:"PY"},{name:"Peru",abbreviation:"PE"},{name:"Philippines",abbreviation:"PH"},{name:"Pitcairn",abbreviation:"PN"},{name:"Poland",abbreviation:"PL"},{name:"Portugal",abbreviation:"PT"},{name:"Puerto Rico",abbreviation:"PR"},{name:"Qatar",abbreviation:"QA"},{name:"Réunion",abbreviation:"RE"},{name:"Romania",abbreviation:"RO"},{name:"Russian Federation",abbreviation:"RU"},{name:"Rwanda",abbreviation:"RW"},{name:"Saint Barthélemy",abbreviation:"BL"},{name:"Saint Helena, Ascension and Tristan da Cunha",abbreviation:"SH"},{name:"Saint Kitts and Nevis",abbreviation:"KN"},{name:"Saint Lucia",abbreviation:"LC"},{name:"Saint Martin (French part)",abbreviation:"MF"},{name:"Saint Pierre and Miquelon",abbreviation:"PM"},{name:"Saint Vincent and the Grenadines",abbreviation:"VC"},{name:"Samoa",abbreviation:"WS"},{name:"San Marino",abbreviation:"SM"},{name:"Sao Tome and Principe",abbreviation:"ST"},{name:"Saudi Arabia",abbreviation:"SA"},{name:"Senegal",abbreviation:"SN"},{name:"Serbia",abbreviation:"RS"},{name:"Seychelles",abbreviation:"SC"},{name:"Sierra Leone",abbreviation:"SL"},{name:"Singapore",abbreviation:"SG"},{name:"Sint Maarten (Dutch part)",abbreviation:"SX"},{name:"Slovakia",abbreviation:"SK"},{name:"Slovenia",abbreviation:"SI"},{name:"Solomon Islands",abbreviation:"SB"},{name:"Somalia",abbreviation:"SO"},{name:"South Africa",abbreviation:"ZA"},{name:"South Georgia and the South Sandwich Islands",abbreviation:"GS"},{name:"South Sudan",abbreviation:"SS"},{name:"Spain",abbreviation:"ES"},{name:"Sri Lanka",abbreviation:"LK"},{name:"Sudan",abbreviation:"SD"},{name:"Suriname",abbreviation:"SR"},{name:"Svalbard and Jan Mayen",abbreviation:"SJ"},{name:"Sweden",abbreviation:"SE"},{name:"Switzerland",abbreviation:"CH"},{name:"Syrian Arab Republic",abbreviation:"SY"},{name:"Taiwan, Province of China",abbreviation:"TW"},{name:"Tajikistan",abbreviation:"TJ"},{name:"United Republic of Tanzania",abbreviation:"TZ"},{name:"Thailand",abbreviation:"TH"},{name:"Timor-Leste",abbreviation:"TL"},{name:"Togo",abbreviation:"TG"},{name:"Tokelau",abbreviation:"TK"},{name:"Tonga",abbreviation:"TO"},{name:"Trinidad and Tobago",abbreviation:"TT"},{name:"Tunisia",abbreviation:"TN"},{name:"Türkiye",abbreviation:"TR"},{name:"Turkmenistan",abbreviation:"TM"},{name:"Turks and Caicos Islands",abbreviation:"TC"},{name:"Tuvalu",abbreviation:"TV"},{name:"Uganda",abbreviation:"UG"},{name:"Ukraine",abbreviation:"UA"},{name:"United Arab Emirates",abbreviation:"AE"},{name:"United Kingdom of Great Britain and Northern Ireland",abbreviation:"GB"},{name:"United States Minor Outlying Islands",abbreviation:"UM"},{name:"United States of America",abbreviation:"US"},{name:"Uruguay",abbreviation:"UY"},{name:"Uzbekistan",abbreviation:"UZ"},{name:"Vanuatu",abbreviation:"VU"},{name:"Bolivarian Republic of Venezuela",abbreviation:"VE"},{name:"Viet Nam",abbreviation:"VN"},{name:"Virgin Islands (British)",abbreviation:"VG"},{name:"Virgin Islands (U.S.)",abbreviation:"VI"},{name:"Wallis and Futuna",abbreviation:"WF"},{name:"Western Sahara",abbreviation:"EH"},{name:"Yemen",abbreviation:"YE"},{name:"Zambia",abbreviation:"ZM"},{name:"Zimbabwe",abbreviation:"ZW"}],counties:{uk:[{name:"Bath and North East Somerset"},{name:"Aberdeenshire"},{name:"Anglesey"},{name:"Angus"},{name:"Bedford"},{name:"Blackburn with Darwen"},{name:"Blackpool"},{name:"Bournemouth"},{name:"Bracknell Forest"},{name:"Brighton & Hove"},{name:"Bristol"},{name:"Buckinghamshire"},{name:"Cambridgeshire"},{name:"Carmarthenshire"},{name:"Central Bedfordshire"},{name:"Ceredigion"},{name:"Cheshire East"},{name:"Cheshire West and Chester"},{name:"Clackmannanshire"},{name:"Conwy"},{name:"Cornwall"},{name:"County Antrim"},{name:"County Armagh"},{name:"County Down"},{name:"County Durham"},{name:"County Fermanagh"},{name:"County Londonderry"},{name:"County Tyrone"},{name:"Cumbria"},{name:"Darlington"},{name:"Denbighshire"},{name:"Derby"},{name:"Derbyshire"},{name:"Devon"},{name:"Dorset"},{name:"Dumfries and Galloway"},{name:"Dundee"},{name:"East Lothian"},{name:"East Riding of Yorkshire"},{name:"East Sussex"},{name:"Edinburgh?"},{name:"Essex"},{name:"Falkirk"},{name:"Fife"},{name:"Flintshire"},{name:"Gloucestershire"},{name:"Greater London"},{name:"Greater Manchester"},{name:"Gwent"},{name:"Gwynedd"},{name:"Halton"},{name:"Hampshire"},{name:"Hartlepool"},{name:"Herefordshire"},{name:"Hertfordshire"},{name:"Highlands"},{name:"Hull"},{name:"Isle of Wight"},{name:"Isles of Scilly"},{name:"Kent"},{name:"Lancashire"},{name:"Leicester"},{name:"Leicestershire"},{name:"Lincolnshire"},{name:"Lothian"},{name:"Luton"},{name:"Medway"},{name:"Merseyside"},{name:"Mid Glamorgan"},{name:"Middlesbrough"},{name:"Milton Keynes"},{name:"Monmouthshire"},{name:"Moray"},{name:"Norfolk"},{name:"North East Lincolnshire"},{name:"North Lincolnshire"},{name:"North Somerset"},{name:"North Yorkshire"},{name:"Northamptonshire"},{name:"Northumberland"},{name:"Nottingham"},{name:"Nottinghamshire"},{name:"Oxfordshire"},{name:"Pembrokeshire"},{name:"Perth and Kinross"},{name:"Peterborough"},{name:"Plymouth"},{name:"Poole"},{name:"Portsmouth"},{name:"Powys"},{name:"Reading"},{name:"Redcar and Cleveland"},{name:"Rutland"},{name:"Scottish Borders"},{name:"Shropshire"},{name:"Slough"},{name:"Somerset"},{name:"South Glamorgan"},{name:"South Gloucestershire"},{name:"South Yorkshire"},{name:"Southampton"},{name:"Southend-on-Sea"},{name:"Staffordshire"},{name:"Stirlingshire"},{name:"Stockton-on-Tees"},{name:"Stoke-on-Trent"},{name:"Strathclyde"},{name:"Suffolk"},{name:"Surrey"},{name:"Swindon"},{name:"Telford and Wrekin"},{name:"Thurrock"},{name:"Torbay"},{name:"Tyne and Wear"},{name:"Warrington"},{name:"Warwickshire"},{name:"West Berkshire"},{name:"West Glamorgan"},{name:"West Lothian"},{name:"West Midlands"},{name:"West Sussex"},{name:"West Yorkshire"},{name:"Western Isles"},{name:"Wiltshire"},{name:"Windsor and Maidenhead"},{name:"Wokingham"},{name:"Worcestershire"},{name:"Wrexham"},{name:"York"}]},provinces:{ca:[{name:"Alberta",abbreviation:"AB"},{name:"British Columbia",abbreviation:"BC"},{name:"Manitoba",abbreviation:"MB"},{name:"New Brunswick",abbreviation:"NB"},{name:"Newfoundland and Labrador",abbreviation:"NL"},{name:"Nova Scotia",abbreviation:"NS"},{name:"Ontario",abbreviation:"ON"},{name:"Prince Edward Island",abbreviation:"PE"},{name:"Quebec",abbreviation:"QC"},{name:"Saskatchewan",abbreviation:"SK"},{name:"Northwest Territories",abbreviation:"NT"},{name:"Nunavut",abbreviation:"NU"},{name:"Yukon",abbreviation:"YT"}],it:[{name:"Agrigento",abbreviation:"AG",code:84},{name:"Alessandria",abbreviation:"AL",code:6},{name:"Ancona",abbreviation:"AN",code:42},{name:"Aosta",abbreviation:"AO",code:7},{name:"L'Aquila",abbreviation:"AQ",code:66},{name:"Arezzo",abbreviation:"AR",code:51},{name:"Ascoli-Piceno",abbreviation:"AP",code:44},{name:"Asti",abbreviation:"AT",code:5},{name:"Avellino",abbreviation:"AV",code:64},{name:"Bari",abbreviation:"BA",code:72},{name:"Barletta-Andria-Trani",abbreviation:"BT",code:72},{name:"Belluno",abbreviation:"BL",code:25},{name:"Benevento",abbreviation:"BN",code:62},{name:"Bergamo",abbreviation:"BG",code:16},{name:"Biella",abbreviation:"BI",code:96},{name:"Bologna",abbreviation:"BO",code:37},{name:"Bolzano",abbreviation:"BZ",code:21},{name:"Brescia",abbreviation:"BS",code:17},{name:"Brindisi",abbreviation:"BR",code:74},{name:"Cagliari",abbreviation:"CA",code:92},{name:"Caltanissetta",abbreviation:"CL",code:85},{name:"Campobasso",abbreviation:"CB",code:70},{name:"Carbonia Iglesias",abbreviation:"CI",code:70},{name:"Caserta",abbreviation:"CE",code:61},{name:"Catania",abbreviation:"CT",code:87},{name:"Catanzaro",abbreviation:"CZ",code:79},{name:"Chieti",abbreviation:"CH",code:69},{name:"Como",abbreviation:"CO",code:13},{name:"Cosenza",abbreviation:"CS",code:78},{name:"Cremona",abbreviation:"CR",code:19},{name:"Crotone",abbreviation:"KR",code:101},{name:"Cuneo",abbreviation:"CN",code:4},{name:"Enna",abbreviation:"EN",code:86},{name:"Fermo",abbreviation:"FM",code:86},{name:"Ferrara",abbreviation:"FE",code:38},{name:"Firenze",abbreviation:"FI",code:48},{name:"Foggia",abbreviation:"FG",code:71},{name:"Forli-Cesena",abbreviation:"FC",code:71},{name:"Frosinone",abbreviation:"FR",code:60},{name:"Genova",abbreviation:"GE",code:10},{name:"Gorizia",abbreviation:"GO",code:31},{name:"Grosseto",abbreviation:"GR",code:53},{name:"Imperia",abbreviation:"IM",code:8},{name:"Isernia",abbreviation:"IS",code:94},{name:"La-Spezia",abbreviation:"SP",code:66},{name:"Latina",abbreviation:"LT",code:59},{name:"Lecce",abbreviation:"LE",code:75},{name:"Lecco",abbreviation:"LC",code:97},{name:"Livorno",abbreviation:"LI",code:49},{name:"Lodi",abbreviation:"LO",code:98},{name:"Lucca",abbreviation:"LU",code:46},{name:"Macerata",abbreviation:"MC",code:43},{name:"Mantova",abbreviation:"MN",code:20},{name:"Massa-Carrara",abbreviation:"MS",code:45},{name:"Matera",abbreviation:"MT",code:77},{name:"Medio Campidano",abbreviation:"VS",code:77},{name:"Messina",abbreviation:"ME",code:83},{name:"Milano",abbreviation:"MI",code:15},{name:"Modena",abbreviation:"MO",code:36},{name:"Monza-Brianza",abbreviation:"MB",code:36},{name:"Napoli",abbreviation:"NA",code:63},{name:"Novara",abbreviation:"NO",code:3},{name:"Nuoro",abbreviation:"NU",code:91},{name:"Ogliastra",abbreviation:"OG",code:91},{name:"Olbia Tempio",abbreviation:"OT",code:91},{name:"Oristano",abbreviation:"OR",code:95},{name:"Padova",abbreviation:"PD",code:28},{name:"Palermo",abbreviation:"PA",code:82},{name:"Parma",abbreviation:"PR",code:34},{name:"Pavia",abbreviation:"PV",code:18},{name:"Perugia",abbreviation:"PG",code:54},{name:"Pesaro-Urbino",abbreviation:"PU",code:41},{name:"Pescara",abbreviation:"PE",code:68},{name:"Piacenza",abbreviation:"PC",code:33},{name:"Pisa",abbreviation:"PI",code:50},{name:"Pistoia",abbreviation:"PT",code:47},{name:"Pordenone",abbreviation:"PN",code:93},{name:"Potenza",abbreviation:"PZ",code:76},{name:"Prato",abbreviation:"PO",code:100},{name:"Ragusa",abbreviation:"RG",code:88},{name:"Ravenna",abbreviation:"RA",code:39},{name:"Reggio-Calabria",abbreviation:"RC",code:35},{name:"Reggio-Emilia",abbreviation:"RE",code:35},{name:"Rieti",abbreviation:"RI",code:57},{name:"Rimini",abbreviation:"RN",code:99},{name:"Roma",abbreviation:"Roma",code:58},{name:"Rovigo",abbreviation:"RO",code:29},{name:"Salerno",abbreviation:"SA",code:65},{name:"Sassari",abbreviation:"SS",code:90},{name:"Savona",abbreviation:"SV",code:9},{name:"Siena",abbreviation:"SI",code:52},{name:"Siracusa",abbreviation:"SR",code:89},{name:"Sondrio",abbreviation:"SO",code:14},{name:"Taranto",abbreviation:"TA",code:73},{name:"Teramo",abbreviation:"TE",code:67},{name:"Terni",abbreviation:"TR",code:55},{name:"Torino",abbreviation:"TO",code:1},{name:"Trapani",abbreviation:"TP",code:81},{name:"Trento",abbreviation:"TN",code:22},{name:"Treviso",abbreviation:"TV",code:26},{name:"Trieste",abbreviation:"TS",code:32},{name:"Udine",abbreviation:"UD",code:30},{name:"Varese",abbreviation:"VA",code:12},{name:"Venezia",abbreviation:"VE",code:27},{name:"Verbania",abbreviation:"VB",code:27},{name:"Vercelli",abbreviation:"VC",code:2},{name:"Verona",abbreviation:"VR",code:23},{name:"Vibo-Valentia",abbreviation:"VV",code:102},{name:"Vicenza",abbreviation:"VI",code:24},{name:"Viterbo",abbreviation:"VT",code:56}]},nationalities:[{name:"Afghan"},{name:"Albanian"},{name:"Algerian"},{name:"American"},{name:"Andorran"},{name:"Angolan"},{name:"Antiguans"},{name:"Argentinean"},{name:"Armenian"},{name:"Australian"},{name:"Austrian"},{name:"Azerbaijani"},{name:"Bahami"},{name:"Bahraini"},{name:"Bangladeshi"},{name:"Barbadian"},{name:"Barbudans"},{name:"Batswana"},{name:"Belarusian"},{name:"Belgian"},{name:"Belizean"},{name:"Beninese"},{name:"Bhutanese"},{name:"Bolivian"},{name:"Bosnian"},{name:"Brazilian"},{name:"British"},{name:"Bruneian"},{name:"Bulgarian"},{name:"Burkinabe"},{name:"Burmese"},{name:"Burundian"},{name:"Cambodian"},{name:"Cameroonian"},{name:"Canadian"},{name:"Cape Verdean"},{name:"Central African"},{name:"Chadian"},{name:"Chilean"},{name:"Chinese"},{name:"Colombian"},{name:"Comoran"},{name:"Congolese"},{name:"Costa Rican"},{name:"Croatian"},{name:"Cuban"},{name:"Cypriot"},{name:"Czech"},{name:"Danish"},{name:"Djibouti"},{name:"Dominican"},{name:"Dutch"},{name:"East Timorese"},{name:"Ecuadorean"},{name:"Egyptian"},{name:"Emirian"},{name:"Equatorial Guinean"},{name:"Eritrean"},{name:"Estonian"},{name:"Ethiopian"},{name:"Fijian"},{name:"Filipino"},{name:"Finnish"},{name:"French"},{name:"Gabonese"},{name:"Gambian"},{name:"Georgian"},{name:"German"},{name:"Ghanaian"},{name:"Greek"},{name:"Grenadian"},{name:"Guatemalan"},{name:"Guinea-Bissauan"},{name:"Guinean"},{name:"Guyanese"},{name:"Haitian"},{name:"Herzegovinian"},{name:"Honduran"},{name:"Hungarian"},{name:"I-Kiribati"},{name:"Icelander"},{name:"Indian"},{name:"Indonesian"},{name:"Iranian"},{name:"Iraqi"},{name:"Irish"},{name:"Israeli"},{name:"Italian"},{name:"Ivorian"},{name:"Jamaican"},{name:"Japanese"},{name:"Jordanian"},{name:"Kazakhstani"},{name:"Kenyan"},{name:"Kittian and Nevisian"},{name:"Kuwaiti"},{name:"Kyrgyz"},{name:"Laotian"},{name:"Latvian"},{name:"Lebanese"},{name:"Liberian"},{name:"Libyan"},{name:"Liechtensteiner"},{name:"Lithuanian"},{name:"Luxembourger"},{name:"Macedonian"},{name:"Malagasy"},{name:"Malawian"},{name:"Malaysian"},{name:"Maldivan"},{name:"Malian"},{name:"Maltese"},{name:"Marshallese"},{name:"Mauritanian"},{name:"Mauritian"},{name:"Mexican"},{name:"Micronesian"},{name:"Moldovan"},{name:"Monacan"},{name:"Mongolian"},{name:"Moroccan"},{name:"Mosotho"},{name:"Motswana"},{name:"Mozambican"},{name:"Namibian"},{name:"Nauruan"},{name:"Nepalese"},{name:"New Zealander"},{name:"Nicaraguan"},{name:"Nigerian"},{name:"Nigerien"},{name:"North Korean"},{name:"Northern Irish"},{name:"Norwegian"},{name:"Omani"},{name:"Pakistani"},{name:"Palauan"},{name:"Panamanian"},{name:"Papua New Guinean"},{name:"Paraguayan"},{name:"Peruvian"},{name:"Polish"},{name:"Portuguese"},{name:"Qatari"},{name:"Romani"},{name:"Russian"},{name:"Rwandan"},{name:"Saint Lucian"},{name:"Salvadoran"},{name:"Samoan"},{name:"San Marinese"},{name:"Sao Tomean"},{name:"Saudi"},{name:"Scottish"},{name:"Senegalese"},{name:"Serbian"},{name:"Seychellois"},{name:"Sierra Leonean"},{name:"Singaporean"},{name:"Slovakian"},{name:"Slovenian"},{name:"Solomon Islander"},{name:"Somali"},{name:"South African"},{name:"South Korean"},{name:"Spanish"},{name:"Sri Lankan"},{name:"Sudanese"},{name:"Surinamer"},{name:"Swazi"},{name:"Swedish"},{name:"Swiss"},{name:"Syrian"},{name:"Taiwanese"},{name:"Tajik"},{name:"Tanzanian"},{name:"Thai"},{name:"Togolese"},{name:"Tongan"},{name:"Trinidadian or Tobagonian"},{name:"Tunisian"},{name:"Turkish"},{name:"Tuvaluan"},{name:"Ugandan"},{name:"Ukrainian"},{name:"Uruguaya"},{name:"Uzbekistani"},{name:"Venezuela"},{name:"Vietnamese"},{name:"Wels"},{name:"Yemenit"},{name:"Zambia"},{name:"Zimbabwe"}],locale_languages:["aa","ab","ae","af","ak","am","an","ar","as","av","ay","az","ba","be","bg","bh","bi","bm","bn","bo","br","bs","ca","ce","ch","co","cr","cs","cu","cv","cy","da","de","dv","dz","ee","el","en","eo","es","et","eu","fa","ff","fi","fj","fo","fr","fy","ga","gd","gl","gn","gu","gv","ha","he","hi","ho","hr","ht","hu","hy","hz","ia","id","ie","ig","ii","ik","io","is","it","iu","ja","jv","ka","kg","ki","kj","kk","kl","km","kn","ko","kr","ks","ku","kv","kw","ky","la","lb","lg","li","ln","lo","lt","lu","lv","mg","mh","mi","mk","ml","mn","mr","ms","mt","my","na","nb","nd","ne","ng","nl","nn","no","nr","nv","ny","oc","oj","om","or","os","pa","pi","pl","ps","pt","qu","rm","rn","ro","ru","rw","sa","sc","sd","se","sg","si","sk","sl","sm","sn","so","sq","sr","ss","st","su","sv","sw","ta","te","tg","th","ti","tk","tl","tn","to","tr","ts","tt","tw","ty","ug","uk","ur","uz","ve","vi","vo","wa","wo","xh","yi","yo","za","zh","zu"],locale_regions:["agq-CM","asa-TZ","ast-ES","bas-CM","bem-ZM","bez-TZ","brx-IN","cgg-UG","chr-US","dav-KE","dje-NE","dsb-DE","dua-CM","dyo-SN","ebu-KE","ewo-CM","fil-PH","fur-IT","gsw-CH","gsw-FR","gsw-LI","guz-KE","haw-US","hsb-DE","jgo-CM","jmc-TZ","kab-DZ","kam-KE","kde-TZ","kea-CV","khq-ML","kkj-CM","kln-KE","kok-IN","ksb-TZ","ksf-CM","ksh-DE","lag-TZ","lkt-US","luo-KE","luy-KE","mas-KE","mas-TZ","mer-KE","mfe-MU","mgh-MZ","mgo-CM","mua-CM","naq-NA","nmg-CM","nnh-CM","nus-SD","nyn-UG","rof-TZ","rwk-TZ","sah-RU","saq-KE","sbp-TZ","seh-MZ","ses-ML","shi-Latn","shi-Latn-MA","shi-Tfng","shi-Tfng-MA","smn-FI","teo-KE","teo-UG","twq-NE","tzm-Latn","tzm-Latn-MA","vai-Latn","vai-Latn-LR","vai-Vaii","vai-Vaii-LR","vun-TZ","wae-CH","xog-UG","yav-CM","zgh-MA","af-NA","af-ZA","ak-GH","am-ET","ar-001","ar-AE","ar-BH","ar-DJ","ar-DZ","ar-EG","ar-EH","ar-ER","ar-IL","ar-IQ","ar-JO","ar-KM","ar-KW","ar-LB","ar-LY","ar-MA","ar-MR","ar-OM","ar-PS","ar-QA","ar-SA","ar-SD","ar-SO","ar-SS","ar-SY","ar-TD","ar-TN","ar-YE","as-IN","az-Cyrl","az-Cyrl-AZ","az-Latn","az-Latn-AZ","be-BY","bg-BG","bm-Latn","bm-Latn-ML","bn-BD","bn-IN","bo-CN","bo-IN","br-FR","bs-Cyrl","bs-Cyrl-BA","bs-Latn","bs-Latn-BA","ca-AD","ca-ES","ca-ES-VALENCIA","ca-FR","ca-IT","cs-CZ","cy-GB","da-DK","da-GL","de-AT","de-BE","de-CH","de-DE","de-LI","de-LU","dz-BT","ee-GH","ee-TG","el-CY","el-GR","en-001","en-150","en-AG","en-AI","en-AS","en-AU","en-BB","en-BE","en-BM","en-BS","en-BW","en-BZ","en-CA","en-CC","en-CK","en-CM","en-CX","en-DG","en-DM","en-ER","en-FJ","en-FK","en-FM","en-GB","en-GD","en-GG","en-GH","en-GI","en-GM","en-GU","en-GY","en-HK","en-IE","en-IM","en-IN","en-IO","en-JE","en-JM","en-KE","en-KI","en-KN","en-KY","en-LC","en-LR","en-LS","en-MG","en-MH","en-MO","en-MP","en-MS","en-MT","en-MU","en-MW","en-MY","en-NA","en-NF","en-NG","en-NR","en-NU","en-NZ","en-PG","en-PH","en-PK","en-PN","en-PR","en-PW","en-RW","en-SB","en-SC","en-SD","en-SG","en-SH","en-SL","en-SS","en-SX","en-SZ","en-TC","en-TK","en-TO","en-TT","en-TV","en-TZ","en-UG","en-UM","en-US","en-US-POSIX","en-VC","en-VG","en-VI","en-VU","en-WS","en-ZA","en-ZM","en-ZW","eo-001","es-419","es-AR","es-BO","es-CL","es-CO","es-CR","es-CU","es-DO","es-EA","es-EC","es-ES","es-GQ","es-GT","es-HN","es-IC","es-MX","es-NI","es-PA","es-PE","es-PH","es-PR","es-PY","es-SV","es-US","es-UY","es-VE","et-EE","eu-ES","fa-AF","fa-IR","ff-CM","ff-GN","ff-MR","ff-SN","fi-FI","fo-FO","fr-BE","fr-BF","fr-BI","fr-BJ","fr-BL","fr-CA","fr-CD","fr-CF","fr-CG","fr-CH","fr-CI","fr-CM","fr-DJ","fr-DZ","fr-FR","fr-GA","fr-GF","fr-GN","fr-GP","fr-GQ","fr-HT","fr-KM","fr-LU","fr-MA","fr-MC","fr-MF","fr-MG","fr-ML","fr-MQ","fr-MR","fr-MU","fr-NC","fr-NE","fr-PF","fr-PM","fr-RE","fr-RW","fr-SC","fr-SN","fr-SY","fr-TD","fr-TG","fr-TN","fr-VU","fr-WF","fr-YT","fy-NL","ga-IE","gd-GB","gl-ES","gu-IN","gv-IM","ha-Latn","ha-Latn-GH","ha-Latn-NE","ha-Latn-NG","he-IL","hi-IN","hr-BA","hr-HR","hu-HU","hy-AM","id-ID","ig-NG","ii-CN","is-IS","it-CH","it-IT","it-SM","ja-JP","ka-GE","ki-KE","kk-Cyrl","kk-Cyrl-KZ","kl-GL","km-KH","kn-IN","ko-KP","ko-KR","ks-Arab","ks-Arab-IN","kw-GB","ky-Cyrl","ky-Cyrl-KG","lb-LU","lg-UG","ln-AO","ln-CD","ln-CF","ln-CG","lo-LA","lt-LT","lu-CD","lv-LV","mg-MG","mk-MK","ml-IN","mn-Cyrl","mn-Cyrl-MN","mr-IN","ms-Latn","ms-Latn-BN","ms-Latn-MY","ms-Latn-SG","mt-MT","my-MM","nb-NO","nb-SJ","nd-ZW","ne-IN","ne-NP","nl-AW","nl-BE","nl-BQ","nl-CW","nl-NL","nl-SR","nl-SX","nn-NO","om-ET","om-KE","or-IN","os-GE","os-RU","pa-Arab","pa-Arab-PK","pa-Guru","pa-Guru-IN","pl-PL","ps-AF","pt-AO","pt-BR","pt-CV","pt-GW","pt-MO","pt-MZ","pt-PT","pt-ST","pt-TL","qu-BO","qu-EC","qu-PE","rm-CH","rn-BI","ro-MD","ro-RO","ru-BY","ru-KG","ru-KZ","ru-MD","ru-RU","ru-UA","rw-RW","se-FI","se-NO","se-SE","sg-CF","si-LK","sk-SK","sl-SI","sn-ZW","so-DJ","so-ET","so-KE","so-SO","sq-AL","sq-MK","sq-XK","sr-Cyrl","sr-Cyrl-BA","sr-Cyrl-ME","sr-Cyrl-RS","sr-Cyrl-XK","sr-Latn","sr-Latn-BA","sr-Latn-ME","sr-Latn-RS","sr-Latn-XK","sv-AX","sv-FI","sv-SE","sw-CD","sw-KE","sw-TZ","sw-UG","ta-IN","ta-LK","ta-MY","ta-SG","te-IN","th-TH","ti-ER","ti-ET","to-TO","tr-CY","tr-TR","ug-Arab","ug-Arab-CN","uk-UA","ur-IN","ur-PK","uz-Arab","uz-Arab-AF","uz-Cyrl","uz-Cyrl-UZ","uz-Latn","uz-Latn-UZ","vi-VN","yi-001","yo-BJ","yo-NG","zh-Hans","zh-Hans-CN","zh-Hans-HK","zh-Hans-MO","zh-Hans-SG","zh-Hant","zh-Hant-HK","zh-Hant-MO","zh-Hant-TW","zu-ZA"],us_states_and_dc:[{name:"Alabama",abbreviation:"AL"},{name:"Alaska",abbreviation:"AK"},{name:"Arizona",abbreviation:"AZ"},{name:"Arkansas",abbreviation:"AR"},{name:"California",abbreviation:"CA"},{name:"Colorado",abbreviation:"CO"},{name:"Connecticut",abbreviation:"CT"},{name:"Delaware",abbreviation:"DE"},{name:"District of Columbia",abbreviation:"DC"},{name:"Florida",abbreviation:"FL"},{name:"Georgia",abbreviation:"GA"},{name:"Hawaii",abbreviation:"HI"},{name:"Idaho",abbreviation:"ID"},{name:"Illinois",abbreviation:"IL"},{name:"Indiana",abbreviation:"IN"},{name:"Iowa",abbreviation:"IA"},{name:"Kansas",abbreviation:"KS"},{name:"Kentucky",abbreviation:"KY"},{name:"Louisiana",abbreviation:"LA"},{name:"Maine",abbreviation:"ME"},{name:"Maryland",abbreviation:"MD"},{name:"Massachusetts",abbreviation:"MA"},{name:"Michigan",abbreviation:"MI"},{name:"Minnesota",abbreviation:"MN"},{name:"Mississippi",abbreviation:"MS"},{name:"Missouri",abbreviation:"MO"},{name:"Montana",abbreviation:"MT"},{name:"Nebraska",abbreviation:"NE"},{name:"Nevada",abbreviation:"NV"},{name:"New Hampshire",abbreviation:"NH"},{name:"New Jersey",abbreviation:"NJ"},{name:"New Mexico",abbreviation:"NM"},{name:"New York",abbreviation:"NY"},{name:"North Carolina",abbreviation:"NC"},{name:"North Dakota",abbreviation:"ND"},{name:"Ohio",abbreviation:"OH"},{name:"Oklahoma",abbreviation:"OK"},{name:"Oregon",abbreviation:"OR"},{name:"Pennsylvania",abbreviation:"PA"},{name:"Rhode Island",abbreviation:"RI"},{name:"South Carolina",abbreviation:"SC"},{name:"South Dakota",abbreviation:"SD"},{name:"Tennessee",abbreviation:"TN"},{name:"Texas",abbreviation:"TX"},{name:"Utah",abbreviation:"UT"},{name:"Vermont",abbreviation:"VT"},{name:"Virginia",abbreviation:"VA"},{name:"Washington",abbreviation:"WA"},{name:"West Virginia",abbreviation:"WV"},{name:"Wisconsin",abbreviation:"WI"},{name:"Wyoming",abbreviation:"WY"}],territories:[{name:"American Samoa",abbreviation:"AS"},{name:"Federated States of Micronesia",abbreviation:"FM"},{name:"Guam",abbreviation:"GU"},{name:"Marshall Islands",abbreviation:"MH"},{name:"Northern Mariana Islands",abbreviation:"MP"},{name:"Puerto Rico",abbreviation:"PR"},{name:"Virgin Islands, U.S.",abbreviation:"VI"}],armed_forces:[{name:"Armed Forces Europe",abbreviation:"AE"},{name:"Armed Forces Pacific",abbreviation:"AP"},{name:"Armed Forces the Americas",abbreviation:"AA"}],country_regions:{it:[{name:"Valle d'Aosta",abbreviation:"VDA"},{name:"Piemonte",abbreviation:"PIE"},{name:"Lombardia",abbreviation:"LOM"},{name:"Veneto",abbreviation:"VEN"},{name:"Trentino Alto Adige",abbreviation:"TAA"},{name:"Friuli Venezia Giulia",abbreviation:"FVG"},{name:"Liguria",abbreviation:"LIG"},{name:"Emilia Romagna",abbreviation:"EMR"},{name:"Toscana",abbreviation:"TOS"},{name:"Umbria",abbreviation:"UMB"},{name:"Marche",abbreviation:"MAR"},{name:"Abruzzo",abbreviation:"ABR"},{name:"Lazio",abbreviation:"LAZ"},{name:"Campania",abbreviation:"CAM"},{name:"Puglia",abbreviation:"PUG"},{name:"Basilicata",abbreviation:"BAS"},{name:"Molise",abbreviation:"MOL"},{name:"Calabria",abbreviation:"CAL"},{name:"Sicilia",abbreviation:"SIC"},{name:"Sardegna",abbreviation:"SAR"}],mx:[{name:"Aguascalientes",abbreviation:"AGU"},{name:"Baja California",abbreviation:"BCN"},{name:"Baja California Sur",abbreviation:"BCS"},{name:"Campeche",abbreviation:"CAM"},{name:"Chiapas",abbreviation:"CHP"},{name:"Chihuahua",abbreviation:"CHH"},{name:"Ciudad de México",abbreviation:"DIF"},{name:"Coahuila",abbreviation:"COA"},{name:"Colima",abbreviation:"COL"},{name:"Durango",abbreviation:"DUR"},{name:"Guanajuato",abbreviation:"GUA"},{name:"Guerrero",abbreviation:"GRO"},{name:"Hidalgo",abbreviation:"HID"},{name:"Jalisco",abbreviation:"JAL"},{name:"México",abbreviation:"MEX"},{name:"Michoacán",abbreviation:"MIC"},{name:"Morelos",abbreviation:"MOR"},{name:"Nayarit",abbreviation:"NAY"},{name:"Nuevo León",abbreviation:"NLE"},{name:"Oaxaca",abbreviation:"OAX"},{name:"Puebla",abbreviation:"PUE"},{name:"Querétaro",abbreviation:"QUE"},{name:"Quintana Roo",abbreviation:"ROO"},{name:"San Luis Potosí",abbreviation:"SLP"},{name:"Sinaloa",abbreviation:"SIN"},{name:"Sonora",abbreviation:"SON"},{name:"Tabasco",abbreviation:"TAB"},{name:"Tamaulipas",abbreviation:"TAM"},{name:"Tlaxcala",abbreviation:"TLA"},{name:"Veracruz",abbreviation:"VER"},{name:"Yucatán",abbreviation:"YUC"},{name:"Zacatecas",abbreviation:"ZAC"}]},street_suffixes:{us:[{name:"Avenue",abbreviation:"Ave"},{name:"Boulevard",abbreviation:"Blvd"},{name:"Center",abbreviation:"Ctr"},{name:"Circle",abbreviation:"Cir"},{name:"Court",abbreviation:"Ct"},{name:"Drive",abbreviation:"Dr"},{name:"Extension",abbreviation:"Ext"},{name:"Glen",abbreviation:"Gln"},{name:"Grove",abbreviation:"Grv"},{name:"Heights",abbreviation:"Hts"},{name:"Highway",abbreviation:"Hwy"},{name:"Junction",abbreviation:"Jct"},{name:"Key",abbreviation:"Key"},{name:"Lane",abbreviation:"Ln"},{name:"Loop",abbreviation:"Loop"},{name:"Manor",abbreviation:"Mnr"},{name:"Mill",abbreviation:"Mill"},{name:"Park",abbreviation:"Park"},{name:"Parkway",abbreviation:"Pkwy"},{name:"Pass",abbreviation:"Pass"},{name:"Path",abbreviation:"Path"},{name:"Pike",abbreviation:"Pike"},{name:"Place",abbreviation:"Pl"},{name:"Plaza",abbreviation:"Plz"},{name:"Point",abbreviation:"Pt"},{name:"Ridge",abbreviation:"Rdg"},{name:"River",abbreviation:"Riv"},{name:"Road",abbreviation:"Rd"},{name:"Square",abbreviation:"Sq"},{name:"Street",abbreviation:"St"},{name:"Terrace",abbreviation:"Ter"},{name:"Trail",abbreviation:"Trl"},{name:"Turnpike",abbreviation:"Tpke"},{name:"View",abbreviation:"Vw"},{name:"Way",abbreviation:"Way"}],it:[{name:"Accesso",abbreviation:"Acc."},{name:"Alzaia",abbreviation:"Alz."},{name:"Arco",abbreviation:"Arco"},{name:"Archivolto",abbreviation:"Acv."},{name:"Arena",abbreviation:"Arena"},{name:"Argine",abbreviation:"Argine"},{name:"Bacino",abbreviation:"Bacino"},{name:"Banchi",abbreviation:"Banchi"},{name:"Banchina",abbreviation:"Ban."},{name:"Bastioni",abbreviation:"Bas."},{name:"Belvedere",abbreviation:"Belv."},{name:"Borgata",abbreviation:"B.ta"},{name:"Borgo",abbreviation:"B.go"},{name:"Calata",abbreviation:"Cal."},{name:"Calle",abbreviation:"Calle"},{name:"Campiello",abbreviation:"Cam."},{name:"Campo",abbreviation:"Cam."},{name:"Canale",abbreviation:"Can."},{name:"Carraia",abbreviation:"Carr."},{name:"Cascina",abbreviation:"Cascina"},{name:"Case sparse",abbreviation:"c.s."},{name:"Cavalcavia",abbreviation:"Cv."},{name:"Circonvallazione",abbreviation:"Cv."},{name:"Complanare",abbreviation:"C.re"},{name:"Contrada",abbreviation:"C.da"},{name:"Corso",abbreviation:"C.so"},{name:"Corte",abbreviation:"C.te"},{name:"Cortile",abbreviation:"C.le"},{name:"Diramazione",abbreviation:"Dir."},{name:"Fondaco",abbreviation:"F.co"},{name:"Fondamenta",abbreviation:"F.ta"},{name:"Fondo",abbreviation:"F.do"},{name:"Frazione",abbreviation:"Fr."},{name:"Isola",abbreviation:"Is."},{name:"Largo",abbreviation:"L.go"},{name:"Litoranea",abbreviation:"Lit."},{name:"Lungolago",abbreviation:"L.go lago"},{name:"Lungo Po",abbreviation:"l.go Po"},{name:"Molo",abbreviation:"Molo"},{name:"Mura",abbreviation:"Mura"},{name:"Passaggio privato",abbreviation:"pass. priv."},{name:"Passeggiata",abbreviation:"Pass."},{name:"Piazza",abbreviation:"P.zza"},{name:"Piazzale",abbreviation:"P.le"},{name:"Ponte",abbreviation:"P.te"},{name:"Portico",abbreviation:"P.co"},{name:"Rampa",abbreviation:"Rampa"},{name:"Regione",abbreviation:"Reg."},{name:"Rione",abbreviation:"R.ne"},{name:"Rio",abbreviation:"Rio"},{name:"Ripa",abbreviation:"Ripa"},{name:"Riva",abbreviation:"Riva"},{name:"Rondò",abbreviation:"Rondò"},{name:"Rotonda",abbreviation:"Rot."},{name:"Sagrato",abbreviation:"Sagr."},{name:"Salita",abbreviation:"Sal."},{name:"Scalinata",abbreviation:"Scal."},{name:"Scalone",abbreviation:"Scal."},{name:"Slargo",abbreviation:"Sl."},{name:"Sottoportico",abbreviation:"Sott."},{name:"Strada",abbreviation:"Str."},{name:"Stradale",abbreviation:"Str.le"},{name:"Strettoia",abbreviation:"Strett."},{name:"Traversa",abbreviation:"Trav."},{name:"Via",abbreviation:"V."},{name:"Viale",abbreviation:"V.le"},{name:"Vicinale",abbreviation:"Vic.le"},{name:"Vicolo",abbreviation:"Vic."}],uk:[{name:"Avenue",abbreviation:"Ave"},{name:"Close",abbreviation:"Cl"},{name:"Court",abbreviation:"Ct"},{name:"Crescent",abbreviation:"Cr"},{name:"Drive",abbreviation:"Dr"},{name:"Garden",abbreviation:"Gdn"},{name:"Gardens",abbreviation:"Gdns"},{name:"Green",abbreviation:"Gn"},{name:"Grove",abbreviation:"Gr"},{name:"Lane",abbreviation:"Ln"},{name:"Mount",abbreviation:"Mt"},{name:"Place",abbreviation:"Pl"},{name:"Park",abbreviation:"Pk"},{name:"Ridge",abbreviation:"Rdg"},{name:"Road",abbreviation:"Rd"},{name:"Square",abbreviation:"Sq"},{name:"Street",abbreviation:"St"},{name:"Terrace",abbreviation:"Ter"},{name:"Valley",abbreviation:"Val"}]},months:[{name:"January",short_name:"Jan",numeric:"01",days:31},{name:"February",short_name:"Feb",numeric:"02",days:28},{name:"March",short_name:"Mar",numeric:"03",days:31},{name:"April",short_name:"Apr",numeric:"04",days:30},{name:"May",short_name:"May",numeric:"05",days:31},{name:"June",short_name:"Jun",numeric:"06",days:30},{name:"July",short_name:"Jul",numeric:"07",days:31},{name:"August",short_name:"Aug",numeric:"08",days:31},{name:"September",short_name:"Sep",numeric:"09",days:30},{name:"October",short_name:"Oct",numeric:"10",days:31},{name:"November",short_name:"Nov",numeric:"11",days:30},{name:"December",short_name:"Dec",numeric:"12",days:31}],cc_types:[{name:"American Express",short_name:"amex",prefix:"34",length:15},{name:"Bankcard",short_name:"bankcard",prefix:"5610",length:16},{name:"China UnionPay",short_name:"chinaunion",prefix:"62",length:16},{name:"Diners Club Carte Blanche",short_name:"dccarte",prefix:"300",length:14},{name:"Diners Club enRoute",short_name:"dcenroute",prefix:"2014",length:15},{name:"Diners Club International",short_name:"dcintl",prefix:"36",length:14},{name:"Diners Club United States & Canada",short_name:"dcusc",prefix:"54",length:16},{name:"Discover Card",short_name:"discover",prefix:"6011",length:16},{name:"InstaPayment",short_name:"instapay",prefix:"637",length:16},{name:"JCB",short_name:"jcb",prefix:"3528",length:16},{name:"Laser",short_name:"laser",prefix:"6304",length:16},{name:"Maestro",short_name:"maestro",prefix:"5018",length:16},{name:"Mastercard",short_name:"mc",prefix:"51",length:16},{name:"Solo",short_name:"solo",prefix:"6334",length:16},{name:"Switch",short_name:"switch",prefix:"4903",length:16},{name:"Visa",short_name:"visa",prefix:"4",length:16},{name:"Visa Electron",short_name:"electron",prefix:"4026",length:16}],currency_types:[{code:"AED",name:"United Arab Emirates Dirham"},{code:"AFN",name:"Afghanistan Afghani"},{code:"ALL",name:"Albania Lek"},{code:"AMD",name:"Armenia Dram"},{code:"ANG",name:"Netherlands Antilles Guilder"},{code:"AOA",name:"Angola Kwanza"},{code:"ARS",name:"Argentina Peso"},{code:"AUD",name:"Australia Dollar"},{code:"AWG",name:"Aruba Guilder"},{code:"AZN",name:"Azerbaijan New Manat"},{code:"BAM",name:"Bosnia and Herzegovina Convertible Marka"},{code:"BBD",name:"Barbados Dollar"},{code:"BDT",name:"Bangladesh Taka"},{code:"BGN",name:"Bulgaria Lev"},{code:"BHD",name:"Bahrain Dinar"},{code:"BIF",name:"Burundi Franc"},{code:"BMD",name:"Bermuda Dollar"},{code:"BND",name:"Brunei Darussalam Dollar"},{code:"BOB",name:"Bolivia Boliviano"},{code:"BRL",name:"Brazil Real"},{code:"BSD",name:"Bahamas Dollar"},{code:"BTN",name:"Bhutan Ngultrum"},{code:"BWP",name:"Botswana Pula"},{code:"BYR",name:"Belarus Ruble"},{code:"BZD",name:"Belize Dollar"},{code:"CAD",name:"Canada Dollar"},{code:"CDF",name:"Congo/Kinshasa Franc"},{code:"CHF",name:"Switzerland Franc"},{code:"CLP",name:"Chile Peso"},{code:"CNY",name:"China Yuan Renminbi"},{code:"COP",name:"Colombia Peso"},{code:"CRC",name:"Costa Rica Colon"},{code:"CUC",name:"Cuba Convertible Peso"},{code:"CUP",name:"Cuba Peso"},{code:"CVE",name:"Cape Verde Escudo"},{code:"CZK",name:"Czech Republic Koruna"},{code:"DJF",name:"Djibouti Franc"},{code:"DKK",name:"Denmark Krone"},{code:"DOP",name:"Dominican Republic Peso"},{code:"DZD",name:"Algeria Dinar"},{code:"EGP",name:"Egypt Pound"},{code:"ERN",name:"Eritrea Nakfa"},{code:"ETB",name:"Ethiopia Birr"},{code:"EUR",name:"Euro Member Countries"},{code:"FJD",name:"Fiji Dollar"},{code:"FKP",name:"Falkland Islands (Malvinas) Pound"},{code:"GBP",name:"United Kingdom Pound"},{code:"GEL",name:"Georgia Lari"},{code:"GGP",name:"Guernsey Pound"},{code:"GHS",name:"Ghana Cedi"},{code:"GIP",name:"Gibraltar Pound"},{code:"GMD",name:"Gambia Dalasi"},{code:"GNF",name:"Guinea Franc"},{code:"GTQ",name:"Guatemala Quetzal"},{code:"GYD",name:"Guyana Dollar"},{code:"HKD",name:"Hong Kong Dollar"},{code:"HNL",name:"Honduras Lempira"},{code:"HRK",name:"Croatia Kuna"},{code:"HTG",name:"Haiti Gourde"},{code:"HUF",name:"Hungary Forint"},{code:"IDR",name:"Indonesia Rupiah"},{code:"ILS",name:"Israel Shekel"},{code:"IMP",name:"Isle of Man Pound"},{code:"INR",name:"India Rupee"},{code:"IQD",name:"Iraq Dinar"},{code:"IRR",name:"Iran Rial"},{code:"ISK",name:"Iceland Krona"},{code:"JEP",name:"Jersey Pound"},{code:"JMD",name:"Jamaica Dollar"},{code:"JOD",name:"Jordan Dinar"},{code:"JPY",name:"Japan Yen"},{code:"KES",name:"Kenya Shilling"},{code:"KGS",name:"Kyrgyzstan Som"},{code:"KHR",name:"Cambodia Riel"},{code:"KMF",name:"Comoros Franc"},{code:"KPW",name:"Korea (North) Won"},{code:"KRW",name:"Korea (South) Won"},{code:"KWD",name:"Kuwait Dinar"},{code:"KYD",name:"Cayman Islands Dollar"},{code:"KZT",name:"Kazakhstan Tenge"},{code:"LAK",name:"Laos Kip"},{code:"LBP",name:"Lebanon Pound"},{code:"LKR",name:"Sri Lanka Rupee"},{code:"LRD",name:"Liberia Dollar"},{code:"LSL",name:"Lesotho Loti"},{code:"LTL",name:"Lithuania Litas"},{code:"LYD",name:"Libya Dinar"},{code:"MAD",name:"Morocco Dirham"},{code:"MDL",name:"Moldova Leu"},{code:"MGA",name:"Madagascar Ariary"},{code:"MKD",name:"Macedonia Denar"},{code:"MMK",name:"Myanmar (Burma) Kyat"},{code:"MNT",name:"Mongolia Tughrik"},{code:"MOP",name:"Macau Pataca"},{code:"MRO",name:"Mauritania Ouguiya"},{code:"MUR",name:"Mauritius Rupee"},{code:"MVR",name:"Maldives (Maldive Islands) Rufiyaa"},{code:"MWK",name:"Malawi Kwacha"},{code:"MXN",name:"Mexico Peso"},{code:"MYR",name:"Malaysia Ringgit"},{code:"MZN",name:"Mozambique Metical"},{code:"NAD",name:"Namibia Dollar"},{code:"NGN",name:"Nigeria Naira"},{code:"NIO",name:"Nicaragua Cordoba"},{code:"NOK",name:"Norway Krone"},{code:"NPR",name:"Nepal Rupee"},{code:"NZD",name:"New Zealand Dollar"},{code:"OMR",name:"Oman Rial"},{code:"PAB",name:"Panama Balboa"},{code:"PEN",name:"Peru Nuevo Sol"},{code:"PGK",name:"Papua New Guinea Kina"},{code:"PHP",name:"Philippines Peso"},{code:"PKR",name:"Pakistan Rupee"},{code:"PLN",name:"Poland Zloty"},{code:"PYG",name:"Paraguay Guarani"},{code:"QAR",name:"Qatar Riyal"},{code:"RON",name:"Romania New Leu"},{code:"RSD",name:"Serbia Dinar"},{code:"RUB",name:"Russia Ruble"},{code:"RWF",name:"Rwanda Franc"},{code:"SAR",name:"Saudi Arabia Riyal"},{code:"SBD",name:"Solomon Islands Dollar"},{code:"SCR",name:"Seychelles Rupee"},{code:"SDG",name:"Sudan Pound"},{code:"SEK",name:"Sweden Krona"},{code:"SGD",name:"Singapore Dollar"},{code:"SHP",name:"Saint Helena Pound"},{code:"SLL",name:"Sierra Leone Leone"},{code:"SOS",name:"Somalia Shilling"},{code:"SPL",name:"Seborga Luigino"},{code:"SRD",name:"Suriname Dollar"},{code:"STD",name:"São Tomé and Príncipe Dobra"},{code:"SVC",name:"El Salvador Colon"},{code:"SYP",name:"Syria Pound"},{code:"SZL",name:"Swaziland Lilangeni"},{code:"THB",name:"Thailand Baht"},{code:"TJS",name:"Tajikistan Somoni"},{code:"TMT",name:"Turkmenistan Manat"},{code:"TND",name:"Tunisia Dinar"},{code:"TOP",name:"Tonga Pa'anga"},{code:"TRY",name:"Turkey Lira"},{code:"TTD",name:"Trinidad and Tobago Dollar"},{code:"TVD",name:"Tuvalu Dollar"},{code:"TWD",name:"Taiwan New Dollar"},{code:"TZS",name:"Tanzania Shilling"},{code:"UAH",name:"Ukraine Hryvnia"},{code:"UGX",name:"Uganda Shilling"},{code:"USD",name:"United States Dollar"},{code:"UYU",name:"Uruguay Peso"},{code:"UZS",name:"Uzbekistan Som"},{code:"VEF",name:"Venezuela Bolivar"},{code:"VND",name:"Viet Nam Dong"},{code:"VUV",name:"Vanuatu Vatu"},{code:"WST",name:"Samoa Tala"},{code:"XAF",name:"Communauté Financière Africaine (BEAC) CFA Franc BEAC"},{code:"XCD",name:"East Caribbean Dollar"},{code:"XDR",name:"International Monetary Fund (IMF) Special Drawing Rights"},{code:"XOF",name:"Communauté Financière Africaine (BCEAO) Franc"},{code:"XPF",name:"Comptoirs Français du Pacifique (CFP) Franc"},{code:"YER",name:"Yemen Rial"},{code:"ZAR",name:"South Africa Rand"},{code:"ZMW",name:"Zambia Kwacha"},{code:"ZWD",name:"Zimbabwe Dollar"}],colorNames:["AliceBlue","Black","Navy","DarkBlue","MediumBlue","Blue","DarkGreen","Green","Teal","DarkCyan","DeepSkyBlue","DarkTurquoise","MediumSpringGreen","Lime","SpringGreen","Aqua","Cyan","MidnightBlue","DodgerBlue","LightSeaGreen","ForestGreen","SeaGreen","DarkSlateGray","LimeGreen","MediumSeaGreen","Turquoise","RoyalBlue","SteelBlue","DarkSlateBlue","MediumTurquoise","Indigo","DarkOliveGreen","CadetBlue","CornflowerBlue","RebeccaPurple","MediumAquaMarine","DimGray","SlateBlue","OliveDrab","SlateGray","LightSlateGray","MediumSlateBlue","LawnGreen","Chartreuse","Aquamarine","Maroon","Purple","Olive","Gray","SkyBlue","LightSkyBlue","BlueViolet","DarkRed","DarkMagenta","SaddleBrown","Ivory","White","DarkSeaGreen","LightGreen","MediumPurple","DarkViolet","PaleGreen","DarkOrchid","YellowGreen","Sienna","Brown","DarkGray","LightBlue","GreenYellow","PaleTurquoise","LightSteelBlue","PowderBlue","FireBrick","DarkGoldenRod","MediumOrchid","RosyBrown","DarkKhaki","Silver","MediumVioletRed","IndianRed","Peru","Chocolate","Tan","LightGray","Thistle","Orchid","GoldenRod","PaleVioletRed","Crimson","Gainsboro","Plum","BurlyWood","LightCyan","Lavender","DarkSalmon","Violet","PaleGoldenRod","LightCoral","Khaki","AliceBlue","HoneyDew","Azure","SandyBrown","Wheat","Beige","WhiteSmoke","MintCream","GhostWhite","Salmon","AntiqueWhite","Linen","LightGoldenRodYellow","OldLace","Red","Fuchsia","Magenta","DeepPink","OrangeRed","Tomato","HotPink","Coral","DarkOrange","LightSalmon","Orange","LightPink","Pink","Gold","PeachPuff","NavajoWhite","Moccasin","Bisque","MistyRose","BlanchedAlmond","PapayaWhip","LavenderBlush","SeaShell","Cornsilk","LemonChiffon","FloralWhite","Snow","Yellow","LightYellow"],company:["3Com Corp","3M Company","A.G. Edwards Inc.","Abbott Laboratories","Abercrombie & Fitch Co.","ABM Industries Incorporated","Ace Hardware Corporation","ACT Manufacturing Inc.","Acterna Corp.","Adams Resources & Energy, Inc.","ADC Telecommunications, Inc.","Adelphia Communications Corporation","Administaff, Inc.","Adobe Systems Incorporated","Adolph Coors Company","Advance Auto Parts, Inc.","Advanced Micro Devices, Inc.","AdvancePCS, Inc.","Advantica Restaurant Group, Inc.","The AES Corporation","Aetna Inc.","Affiliated Computer Services, Inc.","AFLAC Incorporated","AGCO Corporation","Agilent Technologies, Inc.","Agway Inc.","Apartment Investment and Management Company","Air Products and Chemicals, Inc.","Airborne, Inc.","Airgas, Inc.","AK Steel Holding Corporation","Alaska Air Group, Inc.","Alberto-Culver Company","Albertson's, Inc.","Alcoa Inc.","Alleghany Corporation","Allegheny Energy, Inc.","Allegheny Technologies Incorporated","Allergan, Inc.","ALLETE, Inc.","Alliant Energy Corporation","Allied Waste Industries, Inc.","Allmerica Financial Corporation","The Allstate Corporation","ALLTEL Corporation","The Alpine Group, Inc.","Amazon.com, Inc.","AMC Entertainment Inc.","American Power Conversion Corporation","Amerada Hess Corporation","AMERCO","Ameren Corporation","America West Holdings Corporation","American Axle & Manufacturing Holdings, Inc.","American Eagle Outfitters, Inc.","American Electric Power Company, Inc.","American Express Company","American Financial Group, Inc.","American Greetings Corporation","American International Group, Inc.","American Standard Companies Inc.","American Water Works Company, Inc.","AmerisourceBergen Corporation","Ames Department Stores, Inc.","Amgen Inc.","Amkor Technology, Inc.","AMR Corporation","AmSouth Bancorp.","Amtran, Inc.","Anadarko Petroleum Corporation","Analog Devices, Inc.","Anheuser-Busch Companies, Inc.","Anixter International Inc.","AnnTaylor Inc.","Anthem, Inc.","AOL Time Warner Inc.","Aon Corporation","Apache Corporation","Apple Computer, Inc.","Applera Corporation","Applied Industrial Technologies, Inc.","Applied Materials, Inc.","Aquila, Inc.","ARAMARK Corporation","Arch Coal, Inc.","Archer Daniels Midland Company","Arkansas Best Corporation","Armstrong Holdings, Inc.","Arrow Electronics, Inc.","ArvinMeritor, Inc.","Ashland Inc.","Astoria Financial Corporation","AT&T Corp.","Atmel Corporation","Atmos Energy Corporation","Audiovox Corporation","Autoliv, Inc.","Automatic Data Processing, Inc.","AutoNation, Inc.","AutoZone, Inc.","Avaya Inc.","Avery Dennison Corporation","Avista Corporation","Avnet, Inc.","Avon Products, Inc.","Baker Hughes Incorporated","Ball Corporation","Bank of America Corporation","The Bank of New York Company, Inc.","Bank One Corporation","Banknorth Group, Inc.","Banta Corporation","Barnes & Noble, Inc.","Bausch & Lomb Incorporated","Baxter International Inc.","BB&T Corporation","The Bear Stearns Companies Inc.","Beazer Homes USA, Inc.","Beckman Coulter, Inc.","Becton, Dickinson and Company","Bed Bath & Beyond Inc.","Belk, Inc.","Bell Microproducts Inc.","BellSouth Corporation","Belo Corp.","Bemis Company, Inc.","Benchmark Electronics, Inc.","Berkshire Hathaway Inc.","Best Buy Co., Inc.","Bethlehem Steel Corporation","Beverly Enterprises, Inc.","Big Lots, Inc.","BJ Services Company","BJ's Wholesale Club, Inc.","The Black & Decker Corporation","Black Hills Corporation","BMC Software, Inc.","The Boeing Company","Boise Cascade Corporation","Borders Group, Inc.","BorgWarner Inc.","Boston Scientific Corporation","Bowater Incorporated","Briggs & Stratton Corporation","Brightpoint, Inc.","Brinker International, Inc.","Bristol-Myers Squibb Company","Broadwing, Inc.","Brown Shoe Company, Inc.","Brown-Forman Corporation","Brunswick Corporation","Budget Group, Inc.","Burlington Coat Factory Warehouse Corporation","Burlington Industries, Inc.","Burlington Northern Santa Fe Corporation","Burlington Resources Inc.","C. H. Robinson Worldwide Inc.","Cablevision Systems Corp","Cabot Corp","Cadence Design Systems, Inc.","Calpine Corp.","Campbell Soup Co.","Capital One Financial Corp.","Cardinal Health Inc.","Caremark Rx Inc.","Carlisle Cos. Inc.","Carpenter Technology Corp.","Casey's General Stores Inc.","Caterpillar Inc.","CBRL Group Inc.","CDI Corp.","CDW Computer Centers Inc.","CellStar Corp.","Cendant Corp","Cenex Harvest States Cooperatives","Centex Corp.","CenturyTel Inc.","Ceridian Corp.","CH2M Hill Cos. Ltd.","Champion Enterprises Inc.","Charles Schwab Corp.","Charming Shoppes Inc.","Charter Communications Inc.","Charter One Financial Inc.","ChevronTexaco Corp.","Chiquita Brands International Inc.","Chubb Corp","Ciena Corp.","Cigna Corp","Cincinnati Financial Corp.","Cinergy Corp.","Cintas Corp.","Circuit City Stores Inc.","Cisco Systems Inc.","Citigroup, Inc","Citizens Communications Co.","CKE Restaurants Inc.","Clear Channel Communications Inc.","The Clorox Co.","CMGI Inc.","CMS Energy Corp.","CNF Inc.","Coca-Cola Co.","Coca-Cola Enterprises Inc.","Colgate-Palmolive Co.","Collins & Aikman Corp.","Comcast Corp.","Comdisco Inc.","Comerica Inc.","Comfort Systems USA Inc.","Commercial Metals Co.","Community Health Systems Inc.","Compass Bancshares Inc","Computer Associates International Inc.","Computer Sciences Corp.","Compuware Corp.","Comverse Technology Inc.","ConAgra Foods Inc.","Concord EFS Inc.","Conectiv, Inc","Conoco Inc","Conseco Inc.","Consolidated Freightways Corp.","Consolidated Edison Inc.","Constellation Brands Inc.","Constellation Emergy Group Inc.","Continental Airlines Inc.","Convergys Corp.","Cooper Cameron Corp.","Cooper Industries Ltd.","Cooper Tire & Rubber Co.","Corn Products International Inc.","Corning Inc.","Costco Wholesale Corp.","Countrywide Credit Industries Inc.","Coventry Health Care Inc.","Cox Communications Inc.","Crane Co.","Crompton Corp.","Crown Cork & Seal Co. Inc.","CSK Auto Corp.","CSX Corp.","Cummins Inc.","CVS Corp.","Cytec Industries Inc.","D&K Healthcare Resources, Inc.","D.R. Horton Inc.","Dana Corporation","Danaher Corporation","Darden Restaurants Inc.","DaVita Inc.","Dean Foods Company","Deere & Company","Del Monte Foods Co","Dell Computer Corporation","Delphi Corp.","Delta Air Lines Inc.","Deluxe Corporation","Devon Energy Corporation","Di Giorgio Corporation","Dial Corporation","Diebold Incorporated","Dillard's Inc.","DIMON Incorporated","Dole Food Company, Inc.","Dollar General Corporation","Dollar Tree Stores, Inc.","Dominion Resources, Inc.","Domino's Pizza LLC","Dover Corporation, Inc.","Dow Chemical Company","Dow Jones & Company, Inc.","DPL Inc.","DQE Inc.","Dreyer's Grand Ice Cream, Inc.","DST Systems, Inc.","DTE Energy Co.","E.I. Du Pont de Nemours and Company","Duke Energy Corp","Dun & Bradstreet Inc.","DURA Automotive Systems Inc.","DynCorp","Dynegy Inc.","E*Trade Group, Inc.","E.W. Scripps Company","Earthlink, Inc.","Eastman Chemical Company","Eastman Kodak Company","Eaton Corporation","Echostar Communications Corporation","Ecolab Inc.","Edison International","EGL Inc.","El Paso Corporation","Electronic Arts Inc.","Electronic Data Systems Corp.","Eli Lilly and Company","EMC Corporation","Emcor Group Inc.","Emerson Electric Co.","Encompass Services Corporation","Energizer Holdings Inc.","Energy East Corporation","Engelhard Corporation","Enron Corp.","Entergy Corporation","Enterprise Products Partners L.P.","EOG Resources, Inc.","Equifax Inc.","Equitable Resources Inc.","Equity Office Properties Trust","Equity Residential Properties Trust","Estee Lauder Companies Inc.","Exelon Corporation","Exide Technologies","Expeditors International of Washington Inc.","Express Scripts Inc.","ExxonMobil Corporation","Fairchild Semiconductor International Inc.","Family Dollar Stores Inc.","Farmland Industries Inc.","Federal Mogul Corp.","Federated Department Stores Inc.","Federal Express Corp.","Felcor Lodging Trust Inc.","Ferro Corp.","Fidelity National Financial Inc.","Fifth Third Bancorp","First American Financial Corp.","First Data Corp.","First National of Nebraska Inc.","First Tennessee National Corp.","FirstEnergy Corp.","Fiserv Inc.","Fisher Scientific International Inc.","FleetBoston Financial Co.","Fleetwood Enterprises Inc.","Fleming Companies Inc.","Flowers Foods Inc.","Flowserv Corp","Fluor Corp","FMC Corp","Foamex International Inc","Foot Locker Inc","Footstar Inc.","Ford Motor Co","Forest Laboratories Inc.","Fortune Brands Inc.","Foster Wheeler Ltd.","FPL Group Inc.","Franklin Resources Inc.","Freeport McMoran Copper & Gold Inc.","Frontier Oil Corp","Furniture Brands International Inc.","Gannett Co., Inc.","Gap Inc.","Gateway Inc.","GATX Corporation","Gemstar-TV Guide International Inc.","GenCorp Inc.","General Cable Corporation","General Dynamics Corporation","General Electric Company","General Mills Inc","General Motors Corporation","Genesis Health Ventures Inc.","Gentek Inc.","Gentiva Health Services Inc.","Genuine Parts Company","Genuity Inc.","Genzyme Corporation","Georgia Gulf Corporation","Georgia-Pacific Corporation","Gillette Company","Gold Kist Inc.","Golden State Bancorp Inc.","Golden West Financial Corporation","Goldman Sachs Group Inc.","Goodrich Corporation","The Goodyear Tire & Rubber Company","Granite Construction Incorporated","Graybar Electric Company Inc.","Great Lakes Chemical Corporation","Great Plains Energy Inc.","GreenPoint Financial Corp.","Greif Bros. Corporation","Grey Global Group Inc.","Group 1 Automotive Inc.","Guidant Corporation","H&R Block Inc.","H.B. Fuller Company","H.J. Heinz Company","Halliburton Co.","Harley-Davidson Inc.","Harman International Industries Inc.","Harrah's Entertainment Inc.","Harris Corp.","Harsco Corp.","Hartford Financial Services Group Inc.","Hasbro Inc.","Hawaiian Electric Industries Inc.","HCA Inc.","Health Management Associates Inc.","Health Net Inc.","Healthsouth Corp","Henry Schein Inc.","Hercules Inc.","Herman Miller Inc.","Hershey Foods Corp.","Hewlett-Packard Company","Hibernia Corp.","Hillenbrand Industries Inc.","Hilton Hotels Corp.","Hollywood Entertainment Corp.","Home Depot Inc.","Hon Industries Inc.","Honeywell International Inc.","Hormel Foods Corp.","Host Marriott Corp.","Household International Corp.","Hovnanian Enterprises Inc.","Hub Group Inc.","Hubbell Inc.","Hughes Supply Inc.","Humana Inc.","Huntington Bancshares Inc.","Idacorp Inc.","IDT Corporation","IKON Office Solutions Inc.","Illinois Tool Works Inc.","IMC Global Inc.","Imperial Sugar Company","IMS Health Inc.","Ingles Market Inc","Ingram Micro Inc.","Insight Enterprises Inc.","Integrated Electrical Services Inc.","Intel Corporation","International Paper Co.","Interpublic Group of Companies Inc.","Interstate Bakeries Corporation","International Business Machines Corp.","International Flavors & Fragrances Inc.","International Multifoods Corporation","Intuit Inc.","IT Group Inc.","ITT Industries Inc.","Ivax Corp.","J.B. Hunt Transport Services Inc.","J.C. Penny Co.","J.P. Morgan Chase & Co.","Jabil Circuit Inc.","Jack In The Box Inc.","Jacobs Engineering Group Inc.","JDS Uniphase Corp.","Jefferson-Pilot Co.","John Hancock Financial Services Inc.","Johnson & Johnson","Johnson Controls Inc.","Jones Apparel Group Inc.","KB Home","Kellogg Company","Kellwood Company","Kelly Services Inc.","Kemet Corp.","Kennametal Inc.","Kerr-McGee Corporation","KeyCorp","KeySpan Corp.","Kimball International Inc.","Kimberly-Clark Corporation","Kindred Healthcare Inc.","KLA-Tencor Corporation","K-Mart Corp.","Knight-Ridder Inc.","Kohl's Corp.","KPMG Consulting Inc.","Kroger Co.","L-3 Communications Holdings Inc.","Laboratory Corporation of America Holdings","Lam Research Corporation","LandAmerica Financial Group Inc.","Lands' End Inc.","Landstar System Inc.","La-Z-Boy Inc.","Lear Corporation","Legg Mason Inc.","Leggett & Platt Inc.","Lehman Brothers Holdings Inc.","Lennar Corporation","Lennox International Inc.","Level 3 Communications Inc.","Levi Strauss & Co.","Lexmark International Inc.","Limited Inc.","Lincoln National Corporation","Linens 'n Things Inc.","Lithia Motors Inc.","Liz Claiborne Inc.","Lockheed Martin Corporation","Loews Corporation","Longs Drug Stores Corporation","Louisiana-Pacific Corporation","Lowe's Companies Inc.","LSI Logic Corporation","The LTV Corporation","The Lubrizol Corporation","Lucent Technologies Inc.","Lyondell Chemical Company","M & T Bank Corporation","Magellan Health Services Inc.","Mail-Well Inc.","Mandalay Resort Group","Manor Care Inc.","Manpower Inc.","Marathon Oil Corporation","Mariner Health Care Inc.","Markel Corporation","Marriott International Inc.","Marsh & McLennan Companies Inc.","Marsh Supermarkets Inc.","Marshall & Ilsley Corporation","Martin Marietta Materials Inc.","Masco Corporation","Massey Energy Company","MasTec Inc.","Mattel Inc.","Maxim Integrated Products Inc.","Maxtor Corporation","Maxxam Inc.","The May Department Stores Company","Maytag Corporation","MBNA Corporation","McCormick & Company Incorporated","McDonald's Corporation","The McGraw-Hill Companies Inc.","McKesson Corporation","McLeodUSA Incorporated","M.D.C. Holdings Inc.","MDU Resources Group Inc.","MeadWestvaco Corporation","Medtronic Inc.","Mellon Financial Corporation","The Men's Wearhouse Inc.","Merck & Co., Inc.","Mercury General Corporation","Merrill Lynch & Co. Inc.","Metaldyne Corporation","Metals USA Inc.","MetLife Inc.","Metris Companies Inc","MGIC Investment Corporation","MGM Mirage","Michaels Stores Inc.","Micron Technology Inc.","Microsoft Corporation","Milacron Inc.","Millennium Chemicals Inc.","Mirant Corporation","Mohawk Industries Inc.","Molex Incorporated","The MONY Group Inc.","Morgan Stanley Dean Witter & Co.","Motorola Inc.","MPS Group Inc.","Murphy Oil Corporation","Nabors Industries Inc","Nacco Industries Inc","Nash Finch Company","National City Corp.","National Commerce Financial Corporation","National Fuel Gas Company","National Oilwell Inc","National Rural Utilities Cooperative Finance Corporation","National Semiconductor Corporation","National Service Industries Inc","Navistar International Corporation","NCR Corporation","The Neiman Marcus Group Inc.","New Jersey Resources Corporation","New York Times Company","Newell Rubbermaid Inc","Newmont Mining Corporation","Nextel Communications Inc","Nicor Inc","Nike Inc","NiSource Inc","Noble Energy Inc","Nordstrom Inc","Norfolk Southern Corporation","Nortek Inc","North Fork Bancorporation Inc","Northeast Utilities System","Northern Trust Corporation","Northrop Grumman Corporation","NorthWestern Corporation","Novellus Systems Inc","NSTAR","NTL Incorporated","Nucor Corp","Nvidia Corp","NVR Inc","Northwest Airlines Corp","Occidental Petroleum Corp","Ocean Energy Inc","Office Depot Inc.","OfficeMax Inc","OGE Energy Corp","Oglethorpe Power Corp.","Ohio Casualty Corp.","Old Republic International Corp.","Olin Corp.","OM Group Inc","Omnicare Inc","Omnicom Group","On Semiconductor Corp","ONEOK Inc","Oracle Corp","Oshkosh Truck Corp","Outback Steakhouse Inc.","Owens & Minor Inc.","Owens Corning","Owens-Illinois Inc","Oxford Health Plans Inc","Paccar Inc","PacifiCare Health Systems Inc","Packaging Corp. of America","Pactiv Corp","Pall Corp","Pantry Inc","Park Place Entertainment Corp","Parker Hannifin Corp.","Pathmark Stores Inc.","Paychex Inc","Payless Shoesource Inc","Penn Traffic Co.","Pennzoil-Quaker State Company","Pentair Inc","Peoples Energy Corp.","PeopleSoft Inc","Pep Boys Manny, Moe & Jack","Potomac Electric Power Co.","Pepsi Bottling Group Inc.","PepsiAmericas Inc.","PepsiCo Inc.","Performance Food Group Co.","Perini Corp","PerkinElmer Inc","Perot Systems Corp","Petco Animal Supplies Inc.","Peter Kiewit Sons', Inc.","PETsMART Inc","Pfizer Inc","Pacific Gas & Electric Corp.","Pharmacia Corp","Phar Mor Inc.","Phelps Dodge Corp.","Philip Morris Companies Inc.","Phillips Petroleum Co","Phillips Van Heusen Corp.","Phoenix Companies Inc","Pier 1 Imports Inc.","Pilgrim's Pride Corporation","Pinnacle West Capital Corp","Pioneer-Standard Electronics Inc.","Pitney Bowes Inc.","Pittston Brinks Group","Plains All American Pipeline LP","PNC Financial Services Group Inc.","PNM Resources Inc","Polaris Industries Inc.","Polo Ralph Lauren Corp","PolyOne Corp","Popular Inc","Potlatch Corp","PPG Industries Inc","PPL Corp","Praxair Inc","Precision Castparts Corp","Premcor Inc.","Pride International Inc","Primedia Inc","Principal Financial Group Inc.","Procter & Gamble Co.","Pro-Fac Cooperative Inc.","Progress Energy Inc","Progressive Corporation","Protective Life Corp","Provident Financial Group","Providian Financial Corp.","Prudential Financial Inc.","PSS World Medical Inc","Public Service Enterprise Group Inc.","Publix Super Markets Inc.","Puget Energy Inc.","Pulte Homes Inc","Qualcomm Inc","Quanta Services Inc.","Quantum Corp","Quest Diagnostics Inc.","Questar Corp","Quintiles Transnational","Qwest Communications Intl Inc","R.J. Reynolds Tobacco Company","R.R. Donnelley & Sons Company","Radio Shack Corporation","Raymond James Financial Inc.","Raytheon Company","Reader's Digest Association Inc.","Reebok International Ltd.","Regions Financial Corp.","Regis Corporation","Reliance Steel & Aluminum Co.","Reliant Energy Inc.","Rent A Center Inc","Republic Services Inc","Revlon Inc","RGS Energy Group Inc","Rite Aid Corp","Riverwood Holding Inc.","RoadwayCorp","Robert Half International Inc.","Rock-Tenn Co","Rockwell Automation Inc","Rockwell Collins Inc","Rohm & Haas Co.","Ross Stores Inc","RPM Inc.","Ruddick Corp","Ryder System Inc","Ryerson Tull Inc","Ryland Group Inc.","Sabre Holdings Corp","Safeco Corp","Safeguard Scientifics Inc.","Safeway Inc","Saks Inc","Sanmina-SCI Inc","Sara Lee Corp","SBC Communications Inc","Scana Corp.","Schering-Plough Corp","Scholastic Corp","SCI Systems Onc.","Science Applications Intl. Inc.","Scientific-Atlanta Inc","Scotts Company","Seaboard Corp","Sealed Air Corp","Sears Roebuck & Co","Sempra Energy","Sequa Corp","Service Corp. International","ServiceMaster Co","Shaw Group Inc","Sherwin-Williams Company","Shopko Stores Inc","Siebel Systems Inc","Sierra Health Services Inc","Sierra Pacific Resources","Silgan Holdings Inc.","Silicon Graphics Inc","Simon Property Group Inc","SLM Corporation","Smith International Inc","Smithfield Foods Inc","Smurfit-Stone Container Corp","Snap-On Inc","Solectron Corp","Solutia Inc","Sonic Automotive Inc.","Sonoco Products Co.","Southern Company","Southern Union Company","SouthTrust Corp.","Southwest Airlines Co","Southwest Gas Corp","Sovereign Bancorp Inc.","Spartan Stores Inc","Spherion Corp","Sports Authority Inc","Sprint Corp.","SPX Corp","St. Jude Medical Inc","St. Paul Cos.","Staff Leasing Inc.","StanCorp Financial Group Inc","Standard Pacific Corp.","Stanley Works","Staples Inc","Starbucks Corp","Starwood Hotels & Resorts Worldwide Inc","State Street Corp.","Stater Bros. Holdings Inc.","Steelcase Inc","Stein Mart Inc","Stewart & Stevenson Services Inc","Stewart Information Services Corp","Stilwell Financial Inc","Storage Technology Corporation","Stryker Corp","Sun Healthcare Group Inc.","Sun Microsystems Inc.","SunGard Data Systems Inc.","Sunoco Inc.","SunTrust Banks Inc","Supervalu Inc","Swift Transportation, Co., Inc","Symbol Technologies Inc","Synovus Financial Corp.","Sysco Corp","Systemax Inc.","Target Corp.","Tech Data Corporation","TECO Energy Inc","Tecumseh Products Company","Tektronix Inc","Teleflex Incorporated","Telephone & Data Systems Inc","Tellabs Inc.","Temple-Inland Inc","Tenet Healthcare Corporation","Tenneco Automotive Inc.","Teradyne Inc","Terex Corp","Tesoro Petroleum Corp.","Texas Industries Inc.","Texas Instruments Incorporated","Textron Inc","Thermo Electron Corporation","Thomas & Betts Corporation","Tiffany & Co","Timken Company","TJX Companies Inc","TMP Worldwide Inc","Toll Brothers Inc","Torchmark Corporation","Toro Company","Tower Automotive Inc.","Toys 'R' Us Inc","Trans World Entertainment Corp.","TransMontaigne Inc","Transocean Inc","TravelCenters of America Inc.","Triad Hospitals Inc","Tribune Company","Trigon Healthcare Inc.","Trinity Industries Inc","Trump Hotels & Casino Resorts Inc.","TruServ Corporation","TRW Inc","TXU Corp","Tyson Foods Inc","U.S. Bancorp","U.S. Industries Inc.","UAL Corporation","UGI Corporation","Unified Western Grocers Inc","Union Pacific Corporation","Union Planters Corp","Unisource Energy Corp","Unisys Corporation","United Auto Group Inc","United Defense Industries Inc.","United Parcel Service Inc","United Rentals Inc","United Stationers Inc","United Technologies Corporation","UnitedHealth Group Incorporated","Unitrin Inc","Universal Corporation","Universal Forest Products Inc","Universal Health Services Inc","Unocal Corporation","Unova Inc","UnumProvident Corporation","URS Corporation","US Airways Group Inc","US Oncology Inc","USA Interactive","USFreighways Corporation","USG Corporation","UST Inc","Valero Energy Corporation","Valspar Corporation","Value City Department Stores Inc","Varco International Inc","Vectren Corporation","Veritas Software Corporation","Verizon Communications Inc","VF Corporation","Viacom Inc","Viad Corp","Viasystems Group Inc","Vishay Intertechnology Inc","Visteon Corporation","Volt Information Sciences Inc","Vulcan Materials Company","W.R. Berkley Corporation","W.R. Grace & Co","W.W. Grainger Inc","Wachovia Corporation","Wakenhut Corporation","Walgreen Co","Wallace Computer Services Inc","Wal-Mart Stores Inc","Walt Disney Co","Walter Industries Inc","Washington Mutual Inc","Washington Post Co.","Waste Management Inc","Watsco Inc","Weatherford International Inc","Weis Markets Inc.","Wellpoint Health Networks Inc","Wells Fargo & Company","Wendy's International Inc","Werner Enterprises Inc","WESCO International Inc","Western Digital Inc","Western Gas Resources Inc","WestPoint Stevens Inc","Weyerhauser Company","WGL Holdings Inc","Whirlpool Corporation","Whole Foods Market Inc","Willamette Industries Inc.","Williams Companies Inc","Williams Sonoma Inc","Winn Dixie Stores Inc","Wisconsin Energy Corporation","Wm Wrigley Jr Company","World Fuel Services Corporation","WorldCom Inc","Worthington Industries Inc","WPS Resources Corporation","Wyeth","Wyndham International Inc","Xcel Energy Inc","Xerox Corp","Xilinx Inc","XO Communications Inc","Yellow Corporation","York International Corp","Yum Brands Inc.","Zale Corporation","Zions Bancorporation"],fileExtension:{raster:["bmp","gif","gpl","ico","jpeg","psd","png","psp","raw","tiff"],vector:["3dv","amf","awg","ai","cgm","cdr","cmx","dxf","e2d","egt","eps","fs","odg","svg","xar"],"3d":["3dmf","3dm","3mf","3ds","an8","aoi","blend","cal3d","cob","ctm","iob","jas","max","mb","mdx","obj","x","x3d"],document:["doc","docx","dot","html","xml","odt","odm","ott","csv","rtf","tex","xhtml","xps"]},timezones:[{name:"Dateline Standard Time",abbr:"DST",offset:-12,isdst:!1,text:"(UTC-12:00) International Date Line West",utc:["Etc/GMT+12"]},{name:"UTC-11",abbr:"U",offset:-11,isdst:!1,text:"(UTC-11:00) Coordinated Universal Time-11",utc:["Etc/GMT+11","Pacific/Midway","Pacific/Niue","Pacific/Pago_Pago"]},{name:"Hawaiian Standard Time",abbr:"HST",offset:-10,isdst:!1,text:"(UTC-10:00) Hawaii",utc:["Etc/GMT+10","Pacific/Honolulu","Pacific/Johnston","Pacific/Rarotonga","Pacific/Tahiti"]},{name:"Alaskan Standard Time",abbr:"AKDT",offset:-8,isdst:!0,text:"(UTC-09:00) Alaska",utc:["America/Anchorage","America/Juneau","America/Nome","America/Sitka","America/Yakutat"]},{name:"Pacific Standard Time (Mexico)",abbr:"PDT",offset:-7,isdst:!0,text:"(UTC-08:00) Baja California",utc:["America/Santa_Isabel"]},{name:"Pacific Daylight Time",abbr:"PDT",offset:-7,isdst:!0,text:"(UTC-07:00) Pacific Time (US & Canada)",utc:["America/Dawson","America/Los_Angeles","America/Tijuana","America/Vancouver","America/Whitehorse"]},{name:"Pacific Standard Time",abbr:"PST",offset:-8,isdst:!1,text:"(UTC-08:00) Pacific Time (US & Canada)",utc:["America/Dawson","America/Los_Angeles","America/Tijuana","America/Vancouver","America/Whitehorse","PST8PDT"]},{name:"US Mountain Standard Time",abbr:"UMST",offset:-7,isdst:!1,text:"(UTC-07:00) Arizona",utc:["America/Creston","America/Dawson_Creek","America/Hermosillo","America/Phoenix","Etc/GMT+7"]},{name:"Mountain Standard Time (Mexico)",abbr:"MDT",offset:-6,isdst:!0,text:"(UTC-07:00) Chihuahua, La Paz, Mazatlan",utc:["America/Chihuahua","America/Mazatlan"]},{name:"Mountain Standard Time",abbr:"MDT",offset:-6,isdst:!0,text:"(UTC-07:00) Mountain Time (US & Canada)",utc:["America/Boise","America/Cambridge_Bay","America/Denver","America/Edmonton","America/Inuvik","America/Ojinaga","America/Yellowknife","MST7MDT"]},{name:"Central America Standard Time",abbr:"CAST",offset:-6,isdst:!1,text:"(UTC-06:00) Central America",utc:["America/Belize","America/Costa_Rica","America/El_Salvador","America/Guatemala","America/Managua","America/Tegucigalpa","Etc/GMT+6","Pacific/Galapagos"]},{name:"Central Standard Time",abbr:"CDT",offset:-5,isdst:!0,text:"(UTC-06:00) Central Time (US & Canada)",utc:["America/Chicago","America/Indiana/Knox","America/Indiana/Tell_City","America/Matamoros","America/Menominee","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Rainy_River","America/Rankin_Inlet","America/Resolute","America/Winnipeg","CST6CDT"]},{name:"Central Standard Time (Mexico)",abbr:"CDT",offset:-5,isdst:!0,text:"(UTC-06:00) Guadalajara, Mexico City, Monterrey",utc:["America/Bahia_Banderas","America/Cancun","America/Merida","America/Mexico_City","America/Monterrey"]},{name:"Canada Central Standard Time",abbr:"CCST",offset:-6,isdst:!1,text:"(UTC-06:00) Saskatchewan",utc:["America/Regina","America/Swift_Current"]},{name:"SA Pacific Standard Time",abbr:"SPST",offset:-5,isdst:!1,text:"(UTC-05:00) Bogota, Lima, Quito",utc:["America/Bogota","America/Cayman","America/Coral_Harbour","America/Eirunepe","America/Guayaquil","America/Jamaica","America/Lima","America/Panama","America/Rio_Branco","Etc/GMT+5"]},{name:"Eastern Standard Time",abbr:"EDT",offset:-4,isdst:!0,text:"(UTC-05:00) Eastern Time (US & Canada)",utc:["America/Detroit","America/Havana","America/Indiana/Petersburg","America/Indiana/Vincennes","America/Indiana/Winamac","America/Iqaluit","America/Kentucky/Monticello","America/Louisville","America/Montreal","America/Nassau","America/New_York","America/Nipigon","America/Pangnirtung","America/Port-au-Prince","America/Thunder_Bay","America/Toronto","EST5EDT"]},{name:"US Eastern Standard Time",abbr:"UEDT",offset:-4,isdst:!0,text:"(UTC-05:00) Indiana (East)",utc:["America/Indiana/Marengo","America/Indiana/Vevay","America/Indianapolis"]},{name:"Venezuela Standard Time",abbr:"VST",offset:-4.5,isdst:!1,text:"(UTC-04:30) Caracas",utc:["America/Caracas"]},{name:"Paraguay Standard Time",abbr:"PYT",offset:-4,isdst:!1,text:"(UTC-04:00) Asuncion",utc:["America/Asuncion"]},{name:"Atlantic Standard Time",abbr:"ADT",offset:-3,isdst:!0,text:"(UTC-04:00) Atlantic Time (Canada)",utc:["America/Glace_Bay","America/Goose_Bay","America/Halifax","America/Moncton","America/Thule","Atlantic/Bermuda"]},{name:"Central Brazilian Standard Time",abbr:"CBST",offset:-4,isdst:!1,text:"(UTC-04:00) Cuiaba",utc:["America/Campo_Grande","America/Cuiaba"]},{name:"SA Western Standard Time",abbr:"SWST",offset:-4,isdst:!1,text:"(UTC-04:00) Georgetown, La Paz, Manaus, San Juan",utc:["America/Anguilla","America/Antigua","America/Aruba","America/Barbados","America/Blanc-Sablon","America/Boa_Vista","America/Curacao","America/Dominica","America/Grand_Turk","America/Grenada","America/Guadeloupe","America/Guyana","America/Kralendijk","America/La_Paz","America/Lower_Princes","America/Manaus","America/Marigot","America/Martinique","America/Montserrat","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Santo_Domingo","America/St_Barthelemy","America/St_Kitts","America/St_Lucia","America/St_Thomas","America/St_Vincent","America/Tortola","Etc/GMT+4"]},{name:"Pacific SA Standard Time",abbr:"PSST",offset:-4,isdst:!1,text:"(UTC-04:00) Santiago",utc:["America/Santiago","Antarctica/Palmer"]},{name:"Newfoundland Standard Time",abbr:"NDT",offset:-2.5,isdst:!0,text:"(UTC-03:30) Newfoundland",utc:["America/St_Johns"]},{name:"E. South America Standard Time",abbr:"ESAST",offset:-3,isdst:!1,text:"(UTC-03:00) Brasilia",utc:["America/Sao_Paulo"]},{name:"Argentina Standard Time",abbr:"AST",offset:-3,isdst:!1,text:"(UTC-03:00) Buenos Aires",utc:["America/Argentina/La_Rioja","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Buenos_Aires","America/Catamarca","America/Cordoba","America/Jujuy","America/Mendoza"]},{name:"SA Eastern Standard Time",abbr:"SEST",offset:-3,isdst:!1,text:"(UTC-03:00) Cayenne, Fortaleza",utc:["America/Araguaina","America/Belem","America/Cayenne","America/Fortaleza","America/Maceio","America/Paramaribo","America/Recife","America/Santarem","Antarctica/Rothera","Atlantic/Stanley","Etc/GMT+3"]},{name:"Greenland Standard Time",abbr:"GDT",offset:-3,isdst:!0,text:"(UTC-03:00) Greenland",utc:["America/Godthab"]},{name:"Montevideo Standard Time",abbr:"MST",offset:-3,isdst:!1,text:"(UTC-03:00) Montevideo",utc:["America/Montevideo"]},{name:"Bahia Standard Time",abbr:"BST",offset:-3,isdst:!1,text:"(UTC-03:00) Salvador",utc:["America/Bahia"]},{name:"UTC-02",abbr:"U",offset:-2,isdst:!1,text:"(UTC-02:00) Coordinated Universal Time-02",utc:["America/Noronha","Atlantic/South_Georgia","Etc/GMT+2"]},{name:"Mid-Atlantic Standard Time",abbr:"MDT",offset:-1,isdst:!0,text:"(UTC-02:00) Mid-Atlantic - Old",utc:[]},{name:"Azores Standard Time",abbr:"ADT",offset:0,isdst:!0,text:"(UTC-01:00) Azores",utc:["America/Scoresbysund","Atlantic/Azores"]},{name:"Cape Verde Standard Time",abbr:"CVST",offset:-1,isdst:!1,text:"(UTC-01:00) Cape Verde Is.",utc:["Atlantic/Cape_Verde","Etc/GMT+1"]},{name:"Morocco Standard Time",abbr:"MDT",offset:1,isdst:!0,text:"(UTC) Casablanca",utc:["Africa/Casablanca","Africa/El_Aaiun"]},{name:"UTC",abbr:"UTC",offset:0,isdst:!1,text:"(UTC) Coordinated Universal Time",utc:["America/Danmarkshavn","Etc/GMT"]},{name:"GMT Standard Time",abbr:"GMT",offset:0,isdst:!1,text:"(UTC) Edinburgh, London",utc:["Europe/Isle_of_Man","Europe/Guernsey","Europe/Jersey","Europe/London"]},{name:"British Summer Time",abbr:"BST",offset:1,isdst:!0,text:"(UTC+01:00) Edinburgh, London",utc:["Europe/Isle_of_Man","Europe/Guernsey","Europe/Jersey","Europe/London"]},{name:"GMT Standard Time",abbr:"GDT",offset:1,isdst:!0,text:"(UTC) Dublin, Lisbon",utc:["Atlantic/Canary","Atlantic/Faeroe","Atlantic/Madeira","Europe/Dublin","Europe/Lisbon"]},{name:"Greenwich Standard Time",abbr:"GST",offset:0,isdst:!1,text:"(UTC) Monrovia, Reykjavik",utc:["Africa/Abidjan","Africa/Accra","Africa/Bamako","Africa/Banjul","Africa/Bissau","Africa/Conakry","Africa/Dakar","Africa/Freetown","Africa/Lome","Africa/Monrovia","Africa/Nouakchott","Africa/Ouagadougou","Africa/Sao_Tome","Atlantic/Reykjavik","Atlantic/St_Helena"]},{name:"W. Europe Standard Time",abbr:"WEDT",offset:2,isdst:!0,text:"(UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna",utc:["Arctic/Longyearbyen","Europe/Amsterdam","Europe/Andorra","Europe/Berlin","Europe/Busingen","Europe/Gibraltar","Europe/Luxembourg","Europe/Malta","Europe/Monaco","Europe/Oslo","Europe/Rome","Europe/San_Marino","Europe/Stockholm","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Zurich"]},{name:"Central Europe Standard Time",abbr:"CEDT",offset:2,isdst:!0,text:"(UTC+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague",utc:["Europe/Belgrade","Europe/Bratislava","Europe/Budapest","Europe/Ljubljana","Europe/Podgorica","Europe/Prague","Europe/Tirane"]},{name:"Romance Standard Time",abbr:"RDT",offset:2,isdst:!0,text:"(UTC+01:00) Brussels, Copenhagen, Madrid, Paris",utc:["Africa/Ceuta","Europe/Brussels","Europe/Copenhagen","Europe/Madrid","Europe/Paris"]},{name:"Central European Standard Time",abbr:"CEDT",offset:2,isdst:!0,text:"(UTC+01:00) Sarajevo, Skopje, Warsaw, Zagreb",utc:["Europe/Sarajevo","Europe/Skopje","Europe/Warsaw","Europe/Zagreb"]},{name:"W. Central Africa Standard Time",abbr:"WCAST",offset:1,isdst:!1,text:"(UTC+01:00) West Central Africa",utc:["Africa/Algiers","Africa/Bangui","Africa/Brazzaville","Africa/Douala","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Luanda","Africa/Malabo","Africa/Ndjamena","Africa/Niamey","Africa/Porto-Novo","Africa/Tunis","Etc/GMT-1"]},{name:"Namibia Standard Time",abbr:"NST",offset:1,isdst:!1,text:"(UTC+01:00) Windhoek",utc:["Africa/Windhoek"]},{name:"GTB Standard Time",abbr:"GDT",offset:3,isdst:!0,text:"(UTC+02:00) Athens, Bucharest",utc:["Asia/Nicosia","Europe/Athens","Europe/Bucharest","Europe/Chisinau"]},{name:"Middle East Standard Time",abbr:"MEDT",offset:3,isdst:!0,text:"(UTC+02:00) Beirut",utc:["Asia/Beirut"]},{name:"Egypt Standard Time",abbr:"EST",offset:2,isdst:!1,text:"(UTC+02:00) Cairo",utc:["Africa/Cairo"]},{name:"Syria Standard Time",abbr:"SDT",offset:3,isdst:!0,text:"(UTC+02:00) Damascus",utc:["Asia/Damascus"]},{name:"E. Europe Standard Time",abbr:"EEDT",offset:3,isdst:!0,text:"(UTC+02:00) E. Europe",utc:["Asia/Nicosia","Europe/Athens","Europe/Bucharest","Europe/Chisinau","Europe/Helsinki","Europe/Kiev","Europe/Mariehamn","Europe/Nicosia","Europe/Riga","Europe/Sofia","Europe/Tallinn","Europe/Uzhgorod","Europe/Vilnius","Europe/Zaporozhye"]},{name:"South Africa Standard Time",abbr:"SAST",offset:2,isdst:!1,text:"(UTC+02:00) Harare, Pretoria",utc:["Africa/Blantyre","Africa/Bujumbura","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Kigali","Africa/Lubumbashi","Africa/Lusaka","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Etc/GMT-2"]},{name:"FLE Standard Time",abbr:"FDT",offset:3,isdst:!0,text:"(UTC+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius",utc:["Europe/Helsinki","Europe/Kiev","Europe/Mariehamn","Europe/Riga","Europe/Sofia","Europe/Tallinn","Europe/Uzhgorod","Europe/Vilnius","Europe/Zaporozhye"]},{name:"Turkey Standard Time",abbr:"TDT",offset:3,isdst:!1,text:"(UTC+03:00) Istanbul",utc:["Europe/Istanbul"]},{name:"Israel Standard Time",abbr:"JDT",offset:3,isdst:!0,text:"(UTC+02:00) Jerusalem",utc:["Asia/Jerusalem"]},{name:"Libya Standard Time",abbr:"LST",offset:2,isdst:!1,text:"(UTC+02:00) Tripoli",utc:["Africa/Tripoli"]},{name:"Jordan Standard Time",abbr:"JST",offset:3,isdst:!1,text:"(UTC+03:00) Amman",utc:["Asia/Amman"]},{name:"Arabic Standard Time",abbr:"AST",offset:3,isdst:!1,text:"(UTC+03:00) Baghdad",utc:["Asia/Baghdad"]},{name:"Kaliningrad Standard Time",abbr:"KST",offset:3,isdst:!1,text:"(UTC+02:00) Kaliningrad",utc:["Europe/Kaliningrad"]},{name:"Arab Standard Time",abbr:"AST",offset:3,isdst:!1,text:"(UTC+03:00) Kuwait, Riyadh",utc:["Asia/Aden","Asia/Bahrain","Asia/Kuwait","Asia/Qatar","Asia/Riyadh"]},{name:"E. Africa Standard Time",abbr:"EAST",offset:3,isdst:!1,text:"(UTC+03:00) Nairobi",utc:["Africa/Addis_Ababa","Africa/Asmera","Africa/Dar_es_Salaam","Africa/Djibouti","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Mogadishu","Africa/Nairobi","Antarctica/Syowa","Etc/GMT-3","Indian/Antananarivo","Indian/Comoro","Indian/Mayotte"]},{name:"Moscow Standard Time",abbr:"MSK",offset:3,isdst:!1,text:"(UTC+03:00) Moscow, St. Petersburg, Volgograd, Minsk",utc:["Europe/Kirov","Europe/Moscow","Europe/Simferopol","Europe/Volgograd","Europe/Minsk"]},{name:"Samara Time",abbr:"SAMT",offset:4,isdst:!1,text:"(UTC+04:00) Samara, Ulyanovsk, Saratov",utc:["Europe/Astrakhan","Europe/Samara","Europe/Ulyanovsk"]},{name:"Iran Standard Time",abbr:"IDT",offset:4.5,isdst:!0,text:"(UTC+03:30) Tehran",utc:["Asia/Tehran"]},{name:"Arabian Standard Time",abbr:"AST",offset:4,isdst:!1,text:"(UTC+04:00) Abu Dhabi, Muscat",utc:["Asia/Dubai","Asia/Muscat","Etc/GMT-4"]},{name:"Azerbaijan Standard Time",abbr:"ADT",offset:5,isdst:!0,text:"(UTC+04:00) Baku",utc:["Asia/Baku"]},{name:"Mauritius Standard Time",abbr:"MST",offset:4,isdst:!1,text:"(UTC+04:00) Port Louis",utc:["Indian/Mahe","Indian/Mauritius","Indian/Reunion"]},{name:"Georgian Standard Time",abbr:"GET",offset:4,isdst:!1,text:"(UTC+04:00) Tbilisi",utc:["Asia/Tbilisi"]},{name:"Caucasus Standard Time",abbr:"CST",offset:4,isdst:!1,text:"(UTC+04:00) Yerevan",utc:["Asia/Yerevan"]},{name:"Afghanistan Standard Time",abbr:"AST",offset:4.5,isdst:!1,text:"(UTC+04:30) Kabul",utc:["Asia/Kabul"]},{name:"West Asia Standard Time",abbr:"WAST",offset:5,isdst:!1,text:"(UTC+05:00) Ashgabat, Tashkent",utc:["Antarctica/Mawson","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Dushanbe","Asia/Oral","Asia/Samarkand","Asia/Tashkent","Etc/GMT-5","Indian/Kerguelen","Indian/Maldives"]},{name:"Yekaterinburg Time",abbr:"YEKT",offset:5,isdst:!1,text:"(UTC+05:00) Yekaterinburg",utc:["Asia/Yekaterinburg"]},{name:"Pakistan Standard Time",abbr:"PKT",offset:5,isdst:!1,text:"(UTC+05:00) Islamabad, Karachi",utc:["Asia/Karachi"]},{name:"India Standard Time",abbr:"IST",offset:5.5,isdst:!1,text:"(UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi",utc:["Asia/Kolkata"]},{name:"Sri Lanka Standard Time",abbr:"SLST",offset:5.5,isdst:!1,text:"(UTC+05:30) Sri Jayawardenepura",utc:["Asia/Colombo"]},{name:"Nepal Standard Time",abbr:"NST",offset:5.75,isdst:!1,text:"(UTC+05:45) Kathmandu",utc:["Asia/Kathmandu"]},{name:"Central Asia Standard Time",abbr:"CAST",offset:6,isdst:!1,text:"(UTC+06:00) Nur-Sultan (Astana)",utc:["Antarctica/Vostok","Asia/Almaty","Asia/Bishkek","Asia/Qyzylorda","Asia/Urumqi","Etc/GMT-6","Indian/Chagos"]},{name:"Bangladesh Standard Time",abbr:"BST",offset:6,isdst:!1,text:"(UTC+06:00) Dhaka",utc:["Asia/Dhaka","Asia/Thimphu"]},{name:"Myanmar Standard Time",abbr:"MST",offset:6.5,isdst:!1,text:"(UTC+06:30) Yangon (Rangoon)",utc:["Asia/Rangoon","Indian/Cocos"]},{name:"SE Asia Standard Time",abbr:"SAST",offset:7,isdst:!1,text:"(UTC+07:00) Bangkok, Hanoi, Jakarta",utc:["Antarctica/Davis","Asia/Bangkok","Asia/Hovd","Asia/Jakarta","Asia/Phnom_Penh","Asia/Pontianak","Asia/Saigon","Asia/Vientiane","Etc/GMT-7","Indian/Christmas"]},{name:"N. Central Asia Standard Time",abbr:"NCAST",offset:7,isdst:!1,text:"(UTC+07:00) Novosibirsk",utc:["Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk"]},{name:"China Standard Time",abbr:"CST",offset:8,isdst:!1,text:"(UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi",utc:["Asia/Hong_Kong","Asia/Macau","Asia/Shanghai"]},{name:"North Asia Standard Time",abbr:"NAST",offset:8,isdst:!1,text:"(UTC+08:00) Krasnoyarsk",utc:["Asia/Krasnoyarsk"]},{name:"Singapore Standard Time",abbr:"MPST",offset:8,isdst:!1,text:"(UTC+08:00) Kuala Lumpur, Singapore",utc:["Asia/Brunei","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Makassar","Asia/Manila","Asia/Singapore","Etc/GMT-8"]},{name:"W. Australia Standard Time",abbr:"WAST",offset:8,isdst:!1,text:"(UTC+08:00) Perth",utc:["Antarctica/Casey","Australia/Perth"]},{name:"Taipei Standard Time",abbr:"TST",offset:8,isdst:!1,text:"(UTC+08:00) Taipei",utc:["Asia/Taipei"]},{name:"Ulaanbaatar Standard Time",abbr:"UST",offset:8,isdst:!1,text:"(UTC+08:00) Ulaanbaatar",utc:["Asia/Choibalsan","Asia/Ulaanbaatar"]},{name:"North Asia East Standard Time",abbr:"NAEST",offset:8,isdst:!1,text:"(UTC+08:00) Irkutsk",utc:["Asia/Irkutsk"]},{name:"Japan Standard Time",abbr:"JST",offset:9,isdst:!1,text:"(UTC+09:00) Osaka, Sapporo, Tokyo",utc:["Asia/Dili","Asia/Jayapura","Asia/Tokyo","Etc/GMT-9","Pacific/Palau"]},{name:"Korea Standard Time",abbr:"KST",offset:9,isdst:!1,text:"(UTC+09:00) Seoul",utc:["Asia/Pyongyang","Asia/Seoul"]},{name:"Cen. Australia Standard Time",abbr:"CAST",offset:9.5,isdst:!1,text:"(UTC+09:30) Adelaide",utc:["Australia/Adelaide","Australia/Broken_Hill"]},{name:"AUS Central Standard Time",abbr:"ACST",offset:9.5,isdst:!1,text:"(UTC+09:30) Darwin",utc:["Australia/Darwin"]},{name:"E. Australia Standard Time",abbr:"EAST",offset:10,isdst:!1,text:"(UTC+10:00) Brisbane",utc:["Australia/Brisbane","Australia/Lindeman"]},{name:"AUS Eastern Standard Time",abbr:"AEST",offset:10,isdst:!1,text:"(UTC+10:00) Canberra, Melbourne, Sydney",utc:["Australia/Melbourne","Australia/Sydney"]},{name:"West Pacific Standard Time",abbr:"WPST",offset:10,isdst:!1,text:"(UTC+10:00) Guam, Port Moresby",utc:["Antarctica/DumontDUrville","Etc/GMT-10","Pacific/Guam","Pacific/Port_Moresby","Pacific/Saipan","Pacific/Truk"]},{name:"Tasmania Standard Time",abbr:"TST",offset:10,isdst:!1,text:"(UTC+10:00) Hobart",utc:["Australia/Currie","Australia/Hobart"]},{name:"Yakutsk Standard Time",abbr:"YST",offset:9,isdst:!1,text:"(UTC+09:00) Yakutsk",utc:["Asia/Chita","Asia/Khandyga","Asia/Yakutsk"]},{name:"Central Pacific Standard Time",abbr:"CPST",offset:11,isdst:!1,text:"(UTC+11:00) Solomon Is., New Caledonia",utc:["Antarctica/Macquarie","Etc/GMT-11","Pacific/Efate","Pacific/Guadalcanal","Pacific/Kosrae","Pacific/Noumea","Pacific/Ponape"]},{name:"Vladivostok Standard Time",abbr:"VST",offset:11,isdst:!1,text:"(UTC+11:00) Vladivostok",utc:["Asia/Sakhalin","Asia/Ust-Nera","Asia/Vladivostok"]},{name:"New Zealand Standard Time",abbr:"NZST",offset:12,isdst:!1,text:"(UTC+12:00) Auckland, Wellington",utc:["Antarctica/McMurdo","Pacific/Auckland"]},{name:"UTC+12",abbr:"U",offset:12,isdst:!1,text:"(UTC+12:00) Coordinated Universal Time+12",utc:["Etc/GMT-12","Pacific/Funafuti","Pacific/Kwajalein","Pacific/Majuro","Pacific/Nauru","Pacific/Tarawa","Pacific/Wake","Pacific/Wallis"]},{name:"Fiji Standard Time",abbr:"FST",offset:12,isdst:!1,text:"(UTC+12:00) Fiji",utc:["Pacific/Fiji"]},{name:"Magadan Standard Time",abbr:"MST",offset:12,isdst:!1,text:"(UTC+12:00) Magadan",utc:["Asia/Anadyr","Asia/Kamchatka","Asia/Magadan","Asia/Srednekolymsk"]},{name:"Kamchatka Standard Time",abbr:"KDT",offset:13,isdst:!0,text:"(UTC+12:00) Petropavlovsk-Kamchatsky - Old",utc:["Asia/Kamchatka"]},{name:"Tonga Standard Time",abbr:"TST",offset:13,isdst:!1,text:"(UTC+13:00) Nuku'alofa",utc:["Etc/GMT-13","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Tongatapu"]},{name:"Samoa Standard Time",abbr:"SST",offset:13,isdst:!1,text:"(UTC+13:00) Samoa",utc:["Pacific/Apia"]}],profession:["Airline Pilot","Academic Team","Accountant","Account Executive","Actor","Actuary","Acquisition Analyst","Administrative Asst.","Administrative Analyst","Administrator","Advertising Director","Aerospace Engineer","Agent","Agricultural Inspector","Agricultural Scientist","Air Traffic Controller","Animal Trainer","Anthropologist","Appraiser","Architect","Art Director","Artist","Astronomer","Athletic Coach","Auditor","Author","Baker","Banker","Bankruptcy Attorney","Benefits Manager","Biologist","Bio-feedback Specialist","Biomedical Engineer","Biotechnical Researcher","Broadcaster","Broker","Building Manager","Building Contractor","Building Inspector","Business Analyst","Business Planner","Business Manager","Buyer","Call Center Manager","Career Counselor","Cash Manager","Ceramic Engineer","Chief Executive Officer","Chief Operation Officer","Chef","Chemical Engineer","Chemist","Child Care Manager","Chief Medical Officer","Chiropractor","Cinematographer","City Housing Manager","City Manager","Civil Engineer","Claims Manager","Clinical Research Assistant","Collections Manager","Compliance Manager","Comptroller","Computer Manager","Commercial Artist","Communications Affairs Director","Communications Director","Communications Engineer","Compensation Analyst","Computer Programmer","Computer Ops. Manager","Computer Engineer","Computer Operator","Computer Graphics Specialist","Construction Engineer","Construction Manager","Consultant","Consumer Relations Manager","Contract Administrator","Copyright Attorney","Copywriter","Corporate Planner","Corrections Officer","Cosmetologist","Credit Analyst","Cruise Director","Chief Information Officer","Chief Technology Officer","Customer Service Manager","Cryptologist","Dancer","Data Security Manager","Database Manager","Day Care Instructor","Dentist","Designer","Design Engineer","Desktop Publisher","Developer","Development Officer","Diamond Merchant","Dietitian","Direct Marketer","Director","Distribution Manager","Diversity Manager","Economist","EEO Compliance Manager","Editor","Education Adminator","Electrical Engineer","Electro Optical Engineer","Electronics Engineer","Embassy Management","Employment Agent","Engineer Technician","Entrepreneur","Environmental Analyst","Environmental Attorney","Environmental Engineer","Environmental Specialist","Escrow Officer","Estimator","Executive Assistant","Executive Director","Executive Recruiter","Facilities Manager","Family Counselor","Fashion Events Manager","Fashion Merchandiser","Fast Food Manager","Film Producer","Film Production Assistant","Financial Analyst","Financial Planner","Financier","Fine Artist","Wildlife Specialist","Fitness Consultant","Flight Attendant","Flight Engineer","Floral Designer","Food & Beverage Director","Food Service Manager","Forestry Technician","Franchise Management","Franchise Sales","Fraud Investigator","Freelance Writer","Fund Raiser","General Manager","Geologist","General Counsel","Geriatric Specialist","Gerontologist","Glamour Photographer","Golf Club Manager","Gourmet Chef","Graphic Designer","Grounds Keeper","Hazardous Waste Manager","Health Care Manager","Health Therapist","Health Service Administrator","Hearing Officer","Home Economist","Horticulturist","Hospital Administrator","Hotel Manager","Human Resources Manager","Importer","Industrial Designer","Industrial Engineer","Information Director","Inside Sales","Insurance Adjuster","Interior Decorator","Internal Controls Director","International Acct.","International Courier","International Lawyer","Interpreter","Investigator","Investment Banker","Investment Manager","IT Architect","IT Project Manager","IT Systems Analyst","Jeweler","Joint Venture Manager","Journalist","Labor Negotiator","Labor Organizer","Labor Relations Manager","Lab Services Director","Lab Technician","Land Developer","Landscape Architect","Law Enforcement Officer","Lawyer","Lead Software Engineer","Lead Software Test Engineer","Leasing Manager","Legal Secretary","Library Manager","Litigation Attorney","Loan Officer","Lobbyist","Logistics Manager","Maintenance Manager","Management Consultant","Managed Care Director","Managing Partner","Manufacturing Director","Manpower Planner","Marine Biologist","Market Res. Analyst","Marketing Director","Materials Manager","Mathematician","Membership Chairman","Mechanic","Mechanical Engineer","Media Buyer","Medical Investor","Medical Secretary","Medical Technician","Mental Health Counselor","Merchandiser","Metallurgical Engineering","Meteorologist","Microbiologist","MIS Manager","Motion Picture Director","Multimedia Director","Musician","Network Administrator","Network Specialist","Network Operator","New Product Manager","Novelist","Nuclear Engineer","Nuclear Specialist","Nutritionist","Nursing Administrator","Occupational Therapist","Oceanographer","Office Manager","Operations Manager","Operations Research Director","Optical Technician","Optometrist","Organizational Development Manager","Outplacement Specialist","Paralegal","Park Ranger","Patent Attorney","Payroll Specialist","Personnel Specialist","Petroleum Engineer","Pharmacist","Photographer","Physical Therapist","Physician","Physician Assistant","Physicist","Planning Director","Podiatrist","Political Analyst","Political Scientist","Politician","Portfolio Manager","Preschool Management","Preschool Teacher","Principal","Private Banker","Private Investigator","Probation Officer","Process Engineer","Producer","Product Manager","Product Engineer","Production Engineer","Production Planner","Professional Athlete","Professional Coach","Professor","Project Engineer","Project Manager","Program Manager","Property Manager","Public Administrator","Public Safety Director","PR Specialist","Publisher","Purchasing Agent","Publishing Director","Quality Assurance Specialist","Quality Control Engineer","Quality Control Inspector","Radiology Manager","Railroad Engineer","Real Estate Broker","Recreational Director","Recruiter","Redevelopment Specialist","Regulatory Affairs Manager","Registered Nurse","Rehabilitation Counselor","Relocation Manager","Reporter","Research Specialist","Restaurant Manager","Retail Store Manager","Risk Analyst","Safety Engineer","Sales Engineer","Sales Trainer","Sales Promotion Manager","Sales Representative","Sales Manager","Service Manager","Sanitation Engineer","Scientific Programmer","Scientific Writer","Securities Analyst","Security Consultant","Security Director","Seminar Presenter","Ship's Officer","Singer","Social Director","Social Program Planner","Social Research","Social Scientist","Social Worker","Sociologist","Software Developer","Software Engineer","Software Test Engineer","Soil Scientist","Special Events Manager","Special Education Teacher","Special Projects Director","Speech Pathologist","Speech Writer","Sports Event Manager","Statistician","Store Manager","Strategic Alliance Director","Strategic Planning Director","Stress Reduction Specialist","Stockbroker","Surveyor","Structural Engineer","Superintendent","Supply Chain Director","System Engineer","Systems Analyst","Systems Programmer","System Administrator","Tax Specialist","Teacher","Technical Support Specialist","Technical Illustrator","Technical Writer","Technology Director","Telecom Analyst","Telemarketer","Theatrical Director","Title Examiner","Tour Escort","Tour Guide Director","Traffic Manager","Trainer Translator","Transportation Manager","Travel Agent","Treasurer","TV Programmer","Underwriter","Union Representative","University Administrator","University Dean","Urban Planner","Veterinarian","Vendor Relations Director","Viticulturist","Warehouse Manager"],animals:{ocean:["Acantharea","Anemone","Angelfish King","Ahi Tuna","Albacore","American Oyster","Anchovy","Armored Snail","Arctic Char","Atlantic Bluefin Tuna","Atlantic Cod","Atlantic Goliath Grouper","Atlantic Trumpetfish","Atlantic Wolffish","Baleen Whale","Banded Butterflyfish","Banded Coral Shrimp","Banded Sea Krait","Barnacle","Barndoor Skate","Barracuda","Basking Shark","Bass","Beluga Whale","Bluebanded Goby","Bluehead Wrasse","Bluefish","Bluestreak Cleaner-Wrasse","Blue Marlin","Blue Shark","Blue Spiny Lobster","Blue Tang","Blue Whale","Broadclub Cuttlefish","Bull Shark","Chambered Nautilus","Chilean Basket Star","Chilean Jack Mackerel","Chinook Salmon","Christmas Tree Worm","Clam","Clown Anemonefish","Clown Triggerfish","Cod","Coelacanth","Cockscomb Cup Coral","Common Fangtooth","Conch","Cookiecutter Shark","Copepod","Coral","Corydoras","Cownose Ray","Crab","Crown-of-Thorns Starfish","Cushion Star","Cuttlefish","California Sea Otters","Dolphin","Dolphinfish","Dory","Devil Fish","Dugong","Dumbo Octopus","Dungeness Crab","Eccentric Sand Dollar","Edible Sea Cucumber","Eel","Elephant Seal","Elkhorn Coral","Emperor Shrimp","Estuarine Crocodile","Fathead Sculpin","Fiddler Crab","Fin Whale","Flameback","Flamingo Tongue Snail","Flashlight Fish","Flatback Turtle","Flatfish","Flying Fish","Flounder","Fluke","French Angelfish","Frilled Shark","Fugu (also called Pufferfish)","Gar","Geoduck","Giant Barrel Sponge","Giant Caribbean Sea Anemone","Giant Clam","Giant Isopod","Giant Kingfish","Giant Oarfish","Giant Pacific Octopus","Giant Pyrosome","Giant Sea Star","Giant Squid","Glowing Sucker Octopus","Giant Tube Worm","Goblin Shark","Goosefish","Great White Shark","Greenland Shark","Grey Atlantic Seal","Grouper","Grunion","Guineafowl Puffer","Haddock","Hake","Halibut","Hammerhead Shark","Hapuka","Harbor Porpoise","Harbor Seal","Hatchetfish","Hawaiian Monk Seal","Hawksbill Turtle","Hector's Dolphin","Hermit Crab","Herring","Hoki","Horn Shark","Horseshoe Crab","Humpback Anglerfish","Humpback Whale","Icefish","Imperator Angelfish","Irukandji Jellyfish","Isopod","Ivory Bush Coral","Japanese Spider Crab","Jellyfish","John Dory","Juan Fernandez Fur Seal","Killer Whale","Kiwa Hirsuta","Krill","Lagoon Triggerfish","Lamprey","Leafy Seadragon","Leopard Seal","Limpet","Ling","Lionfish","Lions Mane Jellyfish","Lobe Coral","Lobster","Loggerhead Turtle","Longnose Sawshark","Longsnout Seahorse","Lophelia Coral","Marrus Orthocanna","Manatee","Manta Ray","Marlin","Megamouth Shark","Mexican Lookdown","Mimic Octopus","Moon Jelly","Mollusk","Monkfish","Moray Eel","Mullet","Mussel","Megaladon","Napoleon Wrasse","Nassau Grouper","Narwhal","Nautilus","Needlefish","Northern Seahorse","North Atlantic Right Whale","Northern Red Snapper","Norway Lobster","Nudibranch","Nurse Shark","Oarfish","Ocean Sunfish","Oceanic Whitetip Shark","Octopus","Olive Sea Snake","Orange Roughy","Ostracod","Otter","Oyster","Pacific Angelshark","Pacific Blackdragon","Pacific Halibut","Pacific Sardine","Pacific Sea Nettle Jellyfish","Pacific White Sided Dolphin","Pantropical Spotted Dolphin","Patagonian Toothfish","Peacock Mantis Shrimp","Pelagic Thresher Shark","Penguin","Peruvian Anchoveta","Pilchard","Pink Salmon","Pinniped","Plankton","Porpoise","Polar Bear","Portuguese Man o' War","Pycnogonid Sea Spider","Quahog","Queen Angelfish","Queen Conch","Queen Parrotfish","Queensland Grouper","Ragfish","Ratfish","Rattail Fish","Ray","Red Drum","Red King Crab","Ringed Seal","Risso's Dolphin","Ross Seals","Sablefish","Salmon","Sand Dollar","Sandbar Shark","Sawfish","Sarcastic Fringehead","Scalloped Hammerhead Shark","Seahorse","Sea Cucumber","Sea Lion","Sea Urchin","Seal","Shark","Shortfin Mako Shark","Shovelnose Guitarfish","Shrimp","Silverside Fish","Skipjack Tuna","Slender Snipe Eel","Smalltooth Sawfish","Smelts","Sockeye Salmon","Southern Stingray","Sponge","Spotted Porcupinefish","Spotted Dolphin","Spotted Eagle Ray","Spotted Moray","Squid","Squidworm","Starfish","Stickleback","Stonefish","Stoplight Loosejaw","Sturgeon","Swordfish","Tan Bristlemouth","Tasseled Wobbegong","Terrible Claw Lobster","Threespot Damselfish","Tiger Prawn","Tiger Shark","Tilefish","Toadfish","Tropical Two-Wing Flyfish","Tuna","Umbrella Squid","Velvet Crab","Venus Flytrap Sea Anemone","Vigtorniella Worm","Viperfish","Vampire Squid","Vaquita","Wahoo","Walrus","West Indian Manatee","Whale","Whale Shark","Whiptail Gulper","White-Beaked Dolphin","White-Ring Garden Eel","White Shrimp","Wobbegong","Wrasse","Wreckfish","Xiphosura","Yellowtail Damselfish","Yelloweye Rockfish","Yellow Cup Black Coral","Yellow Tube Sponge","Yellowfin Tuna","Zebrashark","Zooplankton"],desert:["Aardwolf","Addax","African Wild Ass","Ant","Antelope","Armadillo","Baboon","Badger","Bat","Bearded Dragon","Beetle","Bird","Black-footed Cat","Boa","Brown Bear","Bustard","Butterfly","Camel","Caracal","Caracara","Caterpillar","Centipede","Cheetah","Chipmunk","Chuckwalla","Climbing Mouse","Coati","Cobra","Cotton Rat","Cougar","Courser","Crane Fly","Crow","Dassie Rat","Dove","Dunnart","Eagle","Echidna","Elephant","Emu","Falcon","Fly","Fox","Frogmouth","Gecko","Geoffroy's Cat","Gerbil","Grasshopper","Guanaco","Gundi","Hamster","Hawk","Hedgehog","Hyena","Hyrax","Jackal","Kangaroo","Kangaroo Rat","Kestrel","Kowari","Kultarr","Leopard","Lion","Macaw","Meerkat","Mouse","Oryx","Ostrich","Owl","Pronghorn","Python","Rabbit","Raccoon","Rattlesnake","Rhinoceros","Sand Cat","Spectacled Bear","Spiny Mouse","Starling","Stick Bug","Tarantula","Tit","Toad","Tortoise","Tyrant Flycatcher","Viper","Vulture","Waxwing","Xerus","Zebra"],grassland:["Aardvark","Aardwolf","Accentor","African Buffalo","African Wild Dog","Alpaca","Anaconda","Ant","Anteater","Antelope","Armadillo","Baboon","Badger","Bandicoot","Barbet","Bat","Bee","Bee-eater","Beetle","Bird","Bison","Black-footed Cat","Black-footed Ferret","Bluebird","Boa","Bowerbird","Brown Bear","Bush Dog","Bushshrike","Bustard","Butterfly","Buzzard","Caracal","Caracara","Cardinal","Caterpillar","Cheetah","Chipmunk","Civet","Climbing Mouse","Clouded Leopard","Coati","Cobra","Cockatoo","Cockroach","Common Genet","Cotton Rat","Cougar","Courser","Coyote","Crane","Crane Fly","Cricket","Crow","Culpeo","Death Adder","Deer","Deer Mouse","Dingo","Dinosaur","Dove","Drongo","Duck","Duiker","Dunnart","Eagle","Echidna","Elephant","Elk","Emu","Falcon","Finch","Flea","Fly","Flying Frog","Fox","Frog","Frogmouth","Garter Snake","Gazelle","Gecko","Geoffroy's Cat","Gerbil","Giant Tortoise","Giraffe","Grasshopper","Grison","Groundhog","Grouse","Guanaco","Guinea Pig","Hamster","Harrier","Hartebeest","Hawk","Hedgehog","Helmetshrike","Hippopotamus","Hornbill","Hyena","Hyrax","Impala","Jackal","Jaguar","Jaguarundi","Kangaroo","Kangaroo Rat","Kestrel","Kultarr","Ladybug","Leopard","Lion","Macaw","Meerkat","Mouse","Newt","Oryx","Ostrich","Owl","Pangolin","Pheasant","Prairie Dog","Pronghorn","Przewalski's Horse","Python","Quoll","Rabbit","Raven","Rhinoceros","Shelduck","Sloth Bear","Spectacled Bear","Squirrel","Starling","Stick Bug","Tamandua","Tasmanian Devil","Thornbill","Thrush","Toad","Tortoise"],forest:["Agouti","Anaconda","Anoa","Ant","Anteater","Antelope","Armadillo","Asian Black Bear","Aye-aye","Babirusa","Baboon","Badger","Bandicoot","Banteng","Barbet","Basilisk","Bat","Bearded Dragon","Bee","Bee-eater","Beetle","Bettong","Binturong","Bird-of-paradise","Bongo","Bowerbird","Bulbul","Bush Dog","Bushbaby","Bushshrike","Butterfly","Buzzard","Caecilian","Cardinal","Cassowary","Caterpillar","Centipede","Chameleon","Chimpanzee","Cicada","Civet","Clouded Leopard","Coati","Cobra","Cockatoo","Cockroach","Colugo","Cotinga","Cotton Rat","Cougar","Crane Fly","Cricket","Crocodile","Crow","Cuckoo","Cuscus","Death Adder","Deer","Dhole","Dingo","Dinosaur","Drongo","Duck","Duiker","Eagle","Echidna","Elephant","Finch","Flat-headed Cat","Flea","Flowerpecker","Fly","Flying Frog","Fossa","Frog","Frogmouth","Gaur","Gecko","Gorilla","Grison","Hawaiian Honeycreeper","Hawk","Hedgehog","Helmetshrike","Hornbill","Hyrax","Iguana","Jackal","Jaguar","Jaguarundi","Kestrel","Ladybug","Lemur","Leopard","Lion","Macaw","Mandrill","Margay","Monkey","Mouse","Mouse Deer","Newt","Okapi","Old World Flycatcher","Orangutan","Owl","Pangolin","Peafowl","Pheasant","Possum","Python","Quokka","Rabbit","Raccoon","Red Panda","Red River Hog","Rhinoceros","Sloth Bear","Spectacled Bear","Squirrel","Starling","Stick Bug","Sun Bear","Tamandua","Tamarin","Tapir","Tarantula","Thrush","Tiger","Tit","Toad","Tortoise","Toucan","Trogon","Trumpeter","Turaco","Turtle","Tyrant Flycatcher","Viper","Vulture","Wallaby","Warbler","Wasp","Waxwing","Weaver","Weaver-finch","Whistler","White-eye","Whydah","Woodswallow","Worm","Wren","Xenops","Yellowjacket","Accentor","African Buffalo","American Black Bear","Anole","Bird","Bison","Boa","Brown Bear","Chipmunk","Common Genet","Copperhead","Coyote","Deer Mouse","Dormouse","Elk","Emu","Fisher","Fox","Garter Snake","Giant Panda","Giant Tortoise","Groundhog","Grouse","Guanaco","Himalayan Tahr","Kangaroo","Koala","Numbat","Quoll","Raccoon dog","Tasmanian Devil","Thornbill","Turkey","Vole","Weasel","Wildcat","Wolf","Wombat","Woodchuck","Woodpecker"],farm:["Alpaca","Buffalo","Banteng","Cow","Cat","Chicken","Carp","Camel","Donkey","Dog","Duck","Emu","Goat","Gayal","Guinea","Goose","Horse","Honey","Llama","Pig","Pigeon","Rhea","Rabbit","Sheep","Silkworm","Turkey","Yak","Zebu"],pet:["Bearded Dragon","Birds","Burro","Cats","Chameleons","Chickens","Chinchillas","Chinese Water Dragon","Cows","Dogs","Donkey","Ducks","Ferrets","Fish","Geckos","Geese","Gerbils","Goats","Guinea Fowl","Guinea Pigs","Hamsters","Hedgehogs","Horses","Iguanas","Llamas","Lizards","Mice","Mule","Peafowl","Pigs and Hogs","Pigeons","Ponies","Pot Bellied Pig","Rabbits","Rats","Sheep","Skinks","Snakes","Stick Insects","Sugar Gliders","Tarantula","Turkeys","Turtles"],zoo:["Aardvark","African Wild Dog","Aldabra Tortoise","American Alligator","American Bison","Amur Tiger","Anaconda","Andean Condor","Asian Elephant","Baby Doll Sheep","Bald Eagle","Barred Owl","Blue Iguana","Boer Goat","California Sea Lion","Caribbean Flamingo","Chinchilla","Collared Lemur","Coquerel's Sifaka","Cuban Amazon Parrot","Ebony Langur","Fennec Fox","Fossa","Gelada","Giant Anteater","Giraffe","Gorilla","Grizzly Bear","Henkel's Leaf-tailed Gecko","Indian Gharial","Indian Rhinoceros","King Cobra","King Vulture","Komodo Dragon","Linne's Two-toed Sloth","Lion","Little Penguin","Madagascar Tree Boa","Magellanic Penguin","Malayan Tapir","Malayan Tiger","Matschies Tree Kangaroo","Mini Donkey","Monarch Butterfly","Nile crocodile","North American Porcupine","Nubian Ibex","Okapi","Poison Dart Frog","Polar Bear","Pygmy Marmoset","Radiated Tortoise","Red Panda","Red Ruffed Lemur","Ring-tailed Lemur","Ring-tailed Mongoose","Rock Hyrax","Small Clawed Asian Otter","Snow Leopard","Snowy Owl","Southern White-faced Owl","Southern White Rhinocerous","Squirrel Monkey","Tufted Puffin","White Cheeked Gibbon","White-throated Bee Eater","Zebra"]},primes:[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019,3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163,3167,3169,3181,3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259,3271,3299,3301,3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371,3373,3389,3391,3407,3413,3433,3449,3457,3461,3463,3467,3469,3491,3499,3511,3517,3527,3529,3533,3539,3541,3547,3557,3559,3571,3581,3583,3593,3607,3613,3617,3623,3631,3637,3643,3659,3671,3673,3677,3691,3697,3701,3709,3719,3727,3733,3739,3761,3767,3769,3779,3793,3797,3803,3821,3823,3833,3847,3851,3853,3863,3877,3881,3889,3907,3911,3917,3919,3923,3929,3931,3943,3947,3967,3989,4001,4003,4007,4013,4019,4021,4027,4049,4051,4057,4073,4079,4091,4093,4099,4111,4127,4129,4133,4139,4153,4157,4159,4177,4201,4211,4217,4219,4229,4231,4241,4243,4253,4259,4261,4271,4273,4283,4289,4297,4327,4337,4339,4349,4357,4363,4373,4391,4397,4409,4421,4423,4441,4447,4451,4457,4463,4481,4483,4493,4507,4513,4517,4519,4523,4547,4549,4561,4567,4583,4591,4597,4603,4621,4637,4639,4643,4649,4651,4657,4663,4673,4679,4691,4703,4721,4723,4729,4733,4751,4759,4783,4787,4789,4793,4799,4801,4813,4817,4831,4861,4871,4877,4889,4903,4909,4919,4931,4933,4937,4943,4951,4957,4967,4969,4973,4987,4993,4999,5003,5009,5011,5021,5023,5039,5051,5059,5077,5081,5087,5099,5101,5107,5113,5119,5147,5153,5167,5171,5179,5189,5197,5209,5227,5231,5233,5237,5261,5273,5279,5281,5297,5303,5309,5323,5333,5347,5351,5381,5387,5393,5399,5407,5413,5417,5419,5431,5437,5441,5443,5449,5471,5477,5479,5483,5501,5503,5507,5519,5521,5527,5531,5557,5563,5569,5573,5581,5591,5623,5639,5641,5647,5651,5653,5657,5659,5669,5683,5689,5693,5701,5711,5717,5737,5741,5743,5749,5779,5783,5791,5801,5807,5813,5821,5827,5839,5843,5849,5851,5857,5861,5867,5869,5879,5881,5897,5903,5923,5927,5939,5953,5981,5987,6007,6011,6029,6037,6043,6047,6053,6067,6073,6079,6089,6091,6101,6113,6121,6131,6133,6143,6151,6163,6173,6197,6199,6203,6211,6217,6221,6229,6247,6257,6263,6269,6271,6277,6287,6299,6301,6311,6317,6323,6329,6337,6343,6353,6359,6361,6367,6373,6379,6389,6397,6421,6427,6449,6451,6469,6473,6481,6491,6521,6529,6547,6551,6553,6563,6569,6571,6577,6581,6599,6607,6619,6637,6653,6659,6661,6673,6679,6689,6691,6701,6703,6709,6719,6733,6737,6761,6763,6779,6781,6791,6793,6803,6823,6827,6829,6833,6841,6857,6863,6869,6871,6883,6899,6907,6911,6917,6947,6949,6959,6961,6967,6971,6977,6983,6991,6997,7001,7013,7019,7027,7039,7043,7057,7069,7079,7103,7109,7121,7127,7129,7151,7159,7177,7187,7193,7207,7211,7213,7219,7229,7237,7243,7247,7253,7283,7297,7307,7309,7321,7331,7333,7349,7351,7369,7393,7411,7417,7433,7451,7457,7459,7477,7481,7487,7489,7499,7507,7517,7523,7529,7537,7541,7547,7549,7559,7561,7573,7577,7583,7589,7591,7603,7607,7621,7639,7643,7649,7669,7673,7681,7687,7691,7699,7703,7717,7723,7727,7741,7753,7757,7759,7789,7793,7817,7823,7829,7841,7853,7867,7873,7877,7879,7883,7901,7907,7919,7927,7933,7937,7949,7951,7963,7993,8009,8011,8017,8039,8053,8059,8069,8081,8087,8089,8093,8101,8111,8117,8123,8147,8161,8167,8171,8179,8191,8209,8219,8221,8231,8233,8237,8243,8263,8269,8273,8287,8291,8293,8297,8311,8317,8329,8353,8363,8369,8377,8387,8389,8419,8423,8429,8431,8443,8447,8461,8467,8501,8513,8521,8527,8537,8539,8543,8563,8573,8581,8597,8599,8609,8623,8627,8629,8641,8647,8663,8669,8677,8681,8689,8693,8699,8707,8713,8719,8731,8737,8741,8747,8753,8761,8779,8783,8803,8807,8819,8821,8831,8837,8839,8849,8861,8863,8867,8887,8893,8923,8929,8933,8941,8951,8963,8969,8971,8999,9001,9007,9011,9013,9029,9041,9043,9049,9059,9067,9091,9103,9109,9127,9133,9137,9151,9157,9161,9173,9181,9187,9199,9203,9209,9221,9227,9239,9241,9257,9277,9281,9283,9293,9311,9319,9323,9337,9341,9343,9349,9371,9377,9391,9397,9403,9413,9419,9421,9431,9433,9437,9439,9461,9463,9467,9473,9479,9491,9497,9511,9521,9533,9539,9547,9551,9587,9601,9613,9619,9623,9629,9631,9643,9649,9661,9677,9679,9689,9697,9719,9721,9733,9739,9743,9749,9767,9769,9781,9787,9791,9803,9811,9817,9829,9833,9839,9851,9857,9859,9871,9883,9887,9901,9907,9923,9929,9931,9941,9949,9967,9973,10007],emotions:["love","joy","surprise","anger","sadness","fear"],music_genres:{general:["Rock","Pop","Hip-Hop","Jazz","Classical","Electronic","Country","R&B","Reggae","Blues","Metal","Folk","Alternative","Punk","Disco","Funk","Techno","Indie","Gospel","Dance","Children's","World"],alternative:["Art Punk","Alternative Rock","Britpunk","College Rock","Crossover Thrash","Crust Punk","Emo / Emocore","Experimental Rock","Folk Punk","Goth / Gothic Rock","Grunge","Hardcore Punk","Hard Rock","Indie Rock","Lo-fi","Musique Concrète","New Wave","Progressive Rock","Punk","Shoegaze","Steampunk"],blues:["Acoustic Blues","African Blues","Blues Rock","Blues Shouter","British Blues","Canadian Blues","Chicago Blues","Classic Blues","Classic Female Blues","Contemporary Blues","Country Blues","Dark Blues","Delta Blues","Detroit Blues","Doom Blues","Electric Blues","Folk Blues","Gospel Blues","Harmonica Blues","Hill Country Blues","Hokum Blues","Jazz Blues","Jump Blues","Kansas City Blues","Louisiana Blues","Memphis Blues","Modern Blues","New Orlean Blues","NY Blues","Piano Blues","Piedmont Blues","Punk Blues","Ragtime Blues","Rhythm Blues","Soul Blues","St.Louis Blues","Soul Blues","Swamp Blues","Texas Blues","Urban Blues","Vandeville","West Coast Blues"],"children's":["Lullabies","Sing - Along","Stories"],classical:["Avant-Garde","Ballet","Baroque","Cantata","Chamber Music","String Quartet","Chant","Choral","Classical Crossover","Concerto","Concerto Grosso","Contemporary Classical","Early Music","Expressionist","High Classical","Impressionist","Mass Requiem","Medieval","Minimalism","Modern Composition","Modern Classical","Opera","Oratorio","Orchestral","Organum","Renaissance","Romantic (early period)","Romantic (later period)","Sonata","Symphonic","Symphony","Twelve-tone","Wedding Music"],country:["Alternative Country","Americana","Australian Country","Bakersfield Sound","Bluegrass","Blues Country","Cajun Fiddle Tunes","Christian Country","Classic Country","Close Harmony","Contemporary Bluegrass","Contemporary Country","Country Gospel","Country Pop","Country Rap","Country Rock","Country Soul","Cowboy / Western","Cowpunk","Dansband","Honky Tonk","Franco-Country","Gulf and Western","Hellbilly Music","Honky Tonk","Instrumental Country","Lubbock Sound","Nashville Sound","Neotraditional Country","Outlaw Country","Progressive","Psychobilly / Punkabilly","Red Dirt","Sertanejo","Texas County","Traditional Bluegrass","Traditional Country","Truck-Driving Country","Urban Cowboy","Western Swing"],dance:["Club / Club Dance","Breakcore","Breakbeat / Breakstep","Chillstep","Deep House","Dubstep","Dancehall","Electro House","Electroswing","Exercise","Future Garage","Garage","Glitch Hop","Glitch Pop","Grime","Hardcore","Hard Dance","Hi-NRG / Eurodance","Horrorcore","House","Jackin House","Jungle / Drum n bass","Liquid Dub","Regstep","Speedcore","Techno","Trance","Trap"],electronic:["2-Step","8bit","Ambient","Asian Underground","Bassline","Chillwave","Chiptune","Crunk","Downtempo","Drum & Bass","Hard Step","Electro","Electro-swing","Electroacoustic","Electronica","Electronic Rock","Eurodance","Hardstyle","Hi-Nrg","IDM/Experimental","Industrial","Trip Hop","Vaporwave","UK Garage","House","Dubstep","Deep House","EDM","Future Bass","Psychedelic trance"],jazz:["Acid Jazz","Afro-Cuban Jazz","Avant-Garde Jazz","Bebop","Big Band","Blue Note","British Dance Band (Jazz)","Cape Jazz","Chamber Jazz","Contemporary Jazz","Continental Jazz","Cool Jazz","Crossover Jazz","Dark Jazz","Dixieland","Early Jazz","Electro Swing (Jazz)","Ethio-jazz","Ethno-Jazz","European Free Jazz","Free Funk (Avant-Garde / Funk Jazz)","Free Jazz","Fusion","Gypsy Jazz","Hard Bop","Indo Jazz","Jazz Blues","Jazz-Funk (see Free Funk)","Jazz-Fusion","Jazz Rap","Jazz Rock","Kansas City Jazz","Latin Jazz","M-Base Jazz","Mainstream Jazz","Modal Jazz","Neo-Bop","Neo-Swing","Nu Jazz","Orchestral Jazz","Post-Bop","Punk Jazz","Ragtime","Ska Jazz","Skiffle (also Folk)","Smooth Jazz","Soul Jazz","Swing Jazz","Straight-Ahead Jazz","Trad Jazz","Third Stream","Jazz-Funk","Free Jazz","West Coast Jazz"],metal:["Heavy Metal","Speed Metal","Thrash Metal","Power Metal","Death Metal","Black Metal","Pagan Metal","Viking Metal","Folk Metal","Symphonic Metal","Gothic Metal","Glam Metal","Hair Metal","Doom Metal","Groove Metal","Industrial Metal","Modern Metal","Neoclassical Metal","New Wave Of British Heavy Metal","Post Metal","Progressive Metal","Avantgarde Metal","Sludge","Djent","Drone","Kawaii Metal","Pirate Metal","Nu Metal","Neue Deutsche Härte","Math Metal","Crossover","Grindcore","Hardcore","Metalcore","Deathcore","Post Hardcore","Mathcore"],folk:["American Folk Revival","Anti - Folk","British Folk Revival","Contemporary Folk","Filk Music","Freak Folk","Indie Folk","Industrial Folk","Neofolk","Progressive Folk","Psychedelic Folk","Sung Poetry","Techno - Folk","Folk Rock","Old-time Music","Bluegrass","Appalachian","Roots Revival","Celtic","Indie Folk"],pop:["Adult Contemporary","Arab Pop","Baroque","Britpop","Bubblegum Pop","Chamber Pop","Chanson","Christian Pop","Classical Crossover","Europop","Austropop","Balkan Pop","French Pop","Korean Pop","Japanese Pop","Chinese Pop","Latin Pop","Laïkó","Nederpop","Russian Pop","Dance Pop","Dream Pop","Electro Pop","Iranian Pop","Jangle Pop","Latin Ballad","Levenslied","Louisiana Swamp Pop","Mexican Pop","Motorpop","New Romanticism","Orchestral Pop","Pop Rap","Popera","Pop / Rock","Pop Punk","Power Pop","Psychedelic Pop","Russian Pop","Schlager","Soft Rock","Sophisti - Pop","Space Age Pop","Sunshine Pop","Surf Pop","Synthpop","Teen Pop","Traditional Pop Music","Turkish Pop","Vispop","Wonky Pop"],"r&b":["(Carolina) Beach Music","Contemporary R & B","Disco","Doo Wop","Funk","Modern Soul","Motown","Neo - Soul","Northern Soul","Psychedelic Soul","Quiet Storm","Soul","Soul Blues","Southern Soul"],reggae:["2 - Tone","Dub","Roots Reggae","Reggae Fusion","Reggae en Español","Spanish Reggae","Reggae 110","Reggae Bultrón","Romantic Flow","Lovers Rock","Raggamuffin","Ragga","Dancehall","Ska"],rock:["Acid Rock","Adult - Oriented Rock","Afro Punk","Adult Alternative","Alternative Rock","American Traditional Rock","Anatolian Rock","Arena Rock","Art Rock","Blues - Rock","British Invasion","Cock Rock","Death Metal / Black Metal","Doom Metal","Glam Rock","Gothic Metal","Grind Core","Hair Metal","Hard Rock","Math Metal","Math Rock","Metal","Metal Core","Noise Rock","Jam Bands","Post Punk","Post Rock","Prog - Rock / Art Rock","Progressive Metal","Psychedelic","Rock & Roll","Rockabilly","Roots Rock","Singer / Songwriter","Southern Rock","Spazzcore","Stoner Metal","Surf","Technical Death Metal","Tex - Mex","Thrash Metal","Time Lord Rock(Trock)","Trip - hop","Yacht Rock","School House Rock"],"hip-hop":["Alternative Rap","Avant - Garde","Bounce","Chap Hop","Christian Hip Hop","Conscious Hip Hop","Country - Rap","Grunk","Crunkcore","Cumbia Rap","Dirty South","East Coast","Brick City Club","Hardcore Hip Hop","Mafioso Rap","New Jersey Hip Hop","Freestyle Rap","G - Funk","Gangsta Rap","Golden Age","Grime","Hardcore Rap","Hip - Hop","Hip Pop","Horrorcore","Hyphy","Industrial Hip Hop","Instrumental Hip Hop","Jazz Rap","Latin Rap","Low Bap","Lyrical Hip Hop","Merenrap","Midwest Hip Hop","Chicago Hip Hop","Detroit Hip Hop","Horrorcore","St.Louis Hip Hop","Twin Cities Hip Hop","Motswako","Nerdcore","New Jack Swing","New School Hip Hop","Old School Rap","Rap","Trap","Turntablism","Underground Rap","West Coast Rap","East Coast Rap","Trap","UK Grime","Hyphy","Emo-rap","Cloud rap","G-funk","Boom Bap","Mumble","Drill","UK Drill","Soundcloud Rap","Lo-fi"],punk:["Afro-punk","Anarcho punk","Art punk","Christian punk","Crust punk","Deathrock","Egg punk","Garage punk","Glam punk","Hardcore punk","Horror punk","Incelcore/e-punk","Oi!","Peace punk","Punk pathetique","Queercore","Riot Grrrl","Skate punk","Street punk","Taqwacore","Trallpunk"],disco:["Nu-disco","Disco-funk","Hi-NRG","Italo Disco","Eurodisco","Boogie","Space Disco","Post-disco","Electro Disco","Disco House","Disco Pop","Soulful House"],funk:["Funk Rock","P-Funk (Parliament-Funkadelic)","Psychedelic Funk","Funk Metal","Electro-Funk","Go-go","Boogie-Funk","Jazz-Funk","Soul-Funk","Funky Disco","Nu-Funk","Afrobeat","Latin Funk","G-Funk","Acid Jazz","Funktronica","Folk-Funk","Space Funk","Ambient Funk","Hard Funk","Fusion Funk"],techno:["Acid Techno","Ambient Techno","Detroit Techno","Dub Techno","Minimal Techno","Industrial Techno","Hard Techno","Trance","Progressive Techno","Tech House","Electronica","Breakbeat Techno","Electro Techno","Melodic Techno","Experimental Techno","Dark Techno","Ebm","Hypnotic Techno","Psychedelic Techno","Rave Techno","Techno-Pop"],indie:["Indie Rock","Indie Pop","Indie Folk","Indie Electronic","Indie Punk","Indie Hip-Hop","Dream Pop","Shoegaze","Lo-fi","Chillwave","Freak Folk","Noise Pop","Math Rock","Post-Punk","Garage Rock","Experimental Indie","Surf Rock","Alternative Country","Indie Soul","Art Rock","Indie R&B","Indietronica","Emo","Post-Rock","Indie Pop-Rock","Indie Synthpop","Noise Rock","Psych Folk","Indie Blues"],gospel:["Traditional Gospel","Contemporary Gospel","Southern Gospel","Black Gospel","Urban Contemporary Gospel","Gospel Blues","Bluegrass Gospel","Country Gospel","Praise and Worship","Christian Hip-Hop","Gospel Jazz","Reggae Gospel","African Gospel","Latin Gospel","R&B Gospel","Gospel Choir","Acappella Gospel","Instrumental Gospel","Gospel Rap"],world:["African","Arabic","Asian","Caribbean","Celtic","European","Latin American","Middle Eastern","Native American","Polynesian","Reggae","Ska","Salsa","Flamenco","Bossa Nova","Tango","Fado","Klezmer","Balkan","Afrobeat","Mongolian Throat Singing","Indian Classical","Gamelan","Sufi Music","Zydeco","Kora Music","Andean Music","Irish Traditional","Gypsy Jazz","Bollywood","Bhangra","Jawaiian","Hawaiian Slack Key Guitar","Calypso","Cuban Son","Taiko Drumming","African Highlife","Merengue","Tuvan Throat Singing"]},emojis:{smileys_and_emotion:["0x1f600","0x1f603","0x1f604","0x1f601","0x1f606","0x1f605","0x1f923","0x1f602","0x1f642","0x1f643","0x1fae0","0x1f609","0x1f60a","0x1f607","0x1f970","0x1f60d","0x1f929","0x1f618","0x1f617","0x263a","0x1f61a","0x1f619","0x1f972","0x1f60b","0x1f61b","0x1f61c","0x1f92a","0x1f61d","0x1f911","0x1f917","0x1f92d","0x1fae2","0x1fae3","0x1f92b","0x1f914","0x1fae1","0x1f910","0x1f928","0x1f610","0x1f611","0x1f636","0x1fae5","0x1f636","0x200d","0x1f32b","0xfe0f","0x1f60f","0x1f612","0x1f644","0x1f62c","0x1f62e","0x200d","0x1f4a8","0x1f925","0x1fae8","0x1f642","0x200d","0x2194","0xfe0f","0x1f642","0x200d","0x2195","0xfe0f","0x1f60c","0x1f614","0x1f62a","0x1f924","0x1f634","0x1f637","0x1f912","0x1f915","0x1f922","0x1f92e","0x1f927","0x1f975","0x1f976","0x1f974","0x1f635","0x1f635","0x200d","0x1f4ab","0x1f92f","0x1f920","0x1f973","0x1f978","0x1f60e","0x1f913","0x1f9d0","0x1f615","0x1fae4","0x1f61f","0x1f641","0x2639","0x1f62e","0x1f62f","0x1f632","0x1f633","0x1f97a","0x1f979","0x1f626","0x1f627","0x1f628","0x1f630","0x1f625","0x1f622","0x1f62d","0x1f631","0x1f616","0x1f623","0x1f61e","0x1f613","0x1f629","0x1f62b","0x1f971","0x1f624","0x1f621","0x1f620","0x1f92c","0x1f608","0x1f47f","0x1f480","0x2620","0x1f4a9","0x1f921","0x1f479","0x1f47a","0x1f47b","0x1f47d","0x1f47e","0x1f916","0x1f63a","0x1f638","0x1f639","0x1f63b","0x1f63c","0x1f63d","0x1f640","0x1f63f","0x1f63e","0x1f648","0x1f649","0x1f64a","0x1f48c","0x1f498","0x1f49d","0x1f496","0x1f497","0x1f493","0x1f49e","0x1f495","0x1f49f","0x2763","0x1f494","0x2764","0xfe0f","0x200d","0x1f525","0x2764","0xfe0f","0x200d","0x1fa79","0x2764","0x1fa77","0x1f9e1","0x1f49b","0x1f49a","0x1f499","0x1fa75","0x1f49c","0x1f90e","0x1f5a4","0x1fa76","0x1f90d","0x1f48b","0x1f4af","0x1f4a2","0x1f4a5","0x1f4ab","0x1f4a6","0x1f4a8","0x1f573","0x1f4ac","0x1f441","0xfe0f","0x200d","0x1f5e8","0xfe0f","0x1f5e8","0x1f5ef","0x1f4ad","0x1f4a4"],people_and_body:["0x1f44b","0x1f91a","0x1f590","0x270b","0x1f596","0x1faf1","0x1faf2","0x1faf3","0x1faf4","0x1faf7","0x1faf8","0x1f44c","0x1f90c","0x1f90f","0x270c","0x1f91e","0x1faf0","0x1f91f","0x1f918","0x1f919","0x1f448","0x1f449","0x1f446","0x1f595","0x1f447","0x261d","0x1faf5","0x1f44d","0x1f44e","0x270a","0x1f44a","0x1f91b","0x1f91c","0x1f44f","0x1f64c","0x1faf6","0x1f450","0x1f932","0x1f91d","0x1f64f","0x270d","0x1f485","0x1f933","0x1f4aa","0x1f9be","0x1f9bf","0x1f9b5","0x1f9b6","0x1f442","0x1f9bb","0x1f443","0x1f9e0","0x1fac0","0x1fac1","0x1f9b7","0x1f9b4","0x1f440","0x1f441","0x1f445","0x1f444","0x1fae6","0x1f476","0x1f9d2","0x1f466","0x1f467","0x1f9d1","0x1f471","0x1f468","0x1f9d4","0x1f9d4","0x200d","0x2642","0xfe0f","0x1f9d4","0x200d","0x2640","0xfe0f","0x1f468","0x200d","0x1f9b0","0x1f468","0x200d","0x1f9b1","0x1f468","0x200d","0x1f9b3","0x1f468","0x200d","0x1f9b2","0x1f469","0x1f469","0x200d","0x1f9b0","0x1f9d1","0x200d","0x1f9b0","0x1f469","0x200d","0x1f9b1","0x1f9d1","0x200d","0x1f9b1","0x1f469","0x200d","0x1f9b3","0x1f9d1","0x200d","0x1f9b3","0x1f469","0x200d","0x1f9b2","0x1f9d1","0x200d","0x1f9b2","0x1f471","0x200d","0x2640","0xfe0f","0x1f471","0x200d","0x2642","0xfe0f","0x1f9d3","0x1f474","0x1f475","0x1f64d","0x1f64d","0x200d","0x2642","0xfe0f","0x1f64d","0x200d","0x2640","0xfe0f","0x1f64e","0x1f64e","0x200d","0x2642","0xfe0f","0x1f64e","0x200d","0x2640","0xfe0f","0x1f645","0x1f645","0x200d","0x2642","0xfe0f","0x1f645","0x200d","0x2640","0xfe0f","0x1f646","0x1f646","0x200d","0x2642","0xfe0f","0x1f646","0x200d","0x2640","0xfe0f","0x1f481","0x1f481","0x200d","0x2642","0xfe0f","0x1f481","0x200d","0x2640","0xfe0f","0x1f64b","0x1f64b","0x200d","0x2642","0xfe0f","0x1f64b","0x200d","0x2640","0xfe0f","0x1f9cf","0x1f9cf","0x200d","0x2642","0xfe0f","0x1f9cf","0x200d","0x2640","0xfe0f","0x1f647","0x1f647","0x200d","0x2642","0xfe0f","0x1f647","0x200d","0x2640","0xfe0f","0x1f926","0x1f926","0x200d","0x2642","0xfe0f","0x1f926","0x200d","0x2640","0xfe0f","0x1f937","0x1f937","0x200d","0x2642","0xfe0f","0x1f937","0x200d","0x2640","0xfe0f","0x1f9d1","0x200d","0x2695","0xfe0f","0x1f468","0x200d","0x2695","0xfe0f","0x1f469","0x200d","0x2695","0xfe0f","0x1f9d1","0x200d","0x1f393","0x1f468","0x200d","0x1f393","0x1f469","0x200d","0x1f393","0x1f9d1","0x200d","0x1f3eb","0x1f468","0x200d","0x1f3eb","0x1f469","0x200d","0x1f3eb","0x1f9d1","0x200d","0x2696","0xfe0f","0x1f468","0x200d","0x2696","0xfe0f","0x1f469","0x200d","0x2696","0xfe0f","0x1f9d1","0x200d","0x1f33e","0x1f468","0x200d","0x1f33e","0x1f469","0x200d","0x1f33e","0x1f9d1","0x200d","0x1f373","0x1f468","0x200d","0x1f373","0x1f469","0x200d","0x1f373","0x1f9d1","0x200d","0x1f527","0x1f468","0x200d","0x1f527","0x1f469","0x200d","0x1f527","0x1f9d1","0x200d","0x1f3ed","0x1f468","0x200d","0x1f3ed","0x1f469","0x200d","0x1f3ed","0x1f9d1","0x200d","0x1f4bc","0x1f468","0x200d","0x1f4bc","0x1f469","0x200d","0x1f4bc","0x1f9d1","0x200d","0x1f52c","0x1f468","0x200d","0x1f52c","0x1f469","0x200d","0x1f52c","0x1f9d1","0x200d","0x1f4bb","0x1f468","0x200d","0x1f4bb","0x1f469","0x200d","0x1f4bb","0x1f9d1","0x200d","0x1f3a4","0x1f468","0x200d","0x1f3a4","0x1f469","0x200d","0x1f3a4","0x1f9d1","0x200d","0x1f3a8","0x1f468","0x200d","0x1f3a8","0x1f469","0x200d","0x1f3a8","0x1f9d1","0x200d","0x2708","0xfe0f","0x1f468","0x200d","0x2708","0xfe0f","0x1f469","0x200d","0x2708","0xfe0f","0x1f9d1","0x200d","0x1f680","0x1f468","0x200d","0x1f680","0x1f469","0x200d","0x1f680","0x1f9d1","0x200d","0x1f692","0x1f468","0x200d","0x1f692","0x1f469","0x200d","0x1f692","0x1f46e","0x1f46e","0x200d","0x2642","0xfe0f","0x1f46e","0x200d","0x2640","0xfe0f","0x1f575","0x1f575","0xfe0f","0x200d","0x2642","0xfe0f","0x1f575","0xfe0f","0x200d","0x2640","0xfe0f","0x1f482","0x1f482","0x200d","0x2642","0xfe0f","0x1f482","0x200d","0x2640","0xfe0f","0x1f977","0x1f477","0x1f477","0x200d","0x2642","0xfe0f","0x1f477","0x200d","0x2640","0xfe0f","0x1fac5","0x1f934","0x1f478","0x1f473","0x1f473","0x200d","0x2642","0xfe0f","0x1f473","0x200d","0x2640","0xfe0f","0x1f472","0x1f9d5","0x1f935","0x1f935","0x200d","0x2642","0xfe0f","0x1f935","0x200d","0x2640","0xfe0f","0x1f470","0x1f470","0x200d","0x2642","0xfe0f","0x1f470","0x200d","0x2640","0xfe0f","0x1f930","0x1fac3","0x1fac4","0x1f931","0x1f469","0x200d","0x1f37c","0x1f468","0x200d","0x1f37c","0x1f9d1","0x200d","0x1f37c","0x1f47c","0x1f385","0x1f936","0x1f9d1","0x200d","0x1f384","0x1f9b8","0x1f9b8","0x200d","0x2642","0xfe0f","0x1f9b8","0x200d","0x2640","0xfe0f","0x1f9b9","0x1f9b9","0x200d","0x2642","0xfe0f","0x1f9b9","0x200d","0x2640","0xfe0f","0x1f9d9","0x1f9d9","0x200d","0x2642","0xfe0f","0x1f9d9","0x200d","0x2640","0xfe0f","0x1f9da","0x1f9da","0x200d","0x2642","0xfe0f","0x1f9da","0x200d","0x2640","0xfe0f","0x1f9db","0x1f9db","0x200d","0x2642","0xfe0f","0x1f9db","0x200d","0x2640","0xfe0f","0x1f9dc","0x1f9dc","0x200d","0x2642","0xfe0f","0x1f9dc","0x200d","0x2640","0xfe0f","0x1f9dd","0x1f9dd","0x200d","0x2642","0xfe0f","0x1f9dd","0x200d","0x2640","0xfe0f","0x1f9de","0x1f9de","0x200d","0x2642","0xfe0f","0x1f9de","0x200d","0x2640","0xfe0f","0x1f9df","0x1f9df","0x200d","0x2642","0xfe0f","0x1f9df","0x200d","0x2640","0xfe0f","0x1f9cc","0x1f486","0x1f486","0x200d","0x2642","0xfe0f","0x1f486","0x200d","0x2640","0xfe0f","0x1f487","0x1f487","0x200d","0x2642","0xfe0f","0x1f487","0x200d","0x2640","0xfe0f","0x1f6b6","0x1f6b6","0x200d","0x2642","0xfe0f","0x1f6b6","0x200d","0x2640","0xfe0f","0x1f6b6","0x200d","0x27a1","0xfe0f","0x1f6b6","0x200d","0x2640","0xfe0f","0x200d","0x27a1","0xfe0f","0x1f6b6","0x200d","0x2642","0xfe0f","0x200d","0x27a1","0xfe0f","0x1f9cd","0x1f9cd","0x200d","0x2642","0xfe0f","0x1f9cd","0x200d","0x2640","0xfe0f","0x1f9ce","0x1f9ce","0x200d","0x2642","0xfe0f","0x1f9ce","0x200d","0x2640","0xfe0f","0x1f9ce","0x200d","0x27a1","0xfe0f","0x1f9ce","0x200d","0x2640","0xfe0f","0x200d","0x27a1","0xfe0f","0x1f9ce","0x200d","0x2642","0xfe0f","0x200d","0x27a1","0xfe0f","0x1f9d1","0x200d","0x1f9af","0x1f9d1","0x200d","0x1f9af","0x200d","0x27a1","0xfe0f","0x1f468","0x200d","0x1f9af","0x1f468","0x200d","0x1f9af","0x200d","0x27a1","0xfe0f","0x1f469","0x200d","0x1f9af","0x1f469","0x200d","0x1f9af","0x200d","0x27a1","0xfe0f","0x1f9d1","0x200d","0x1f9bc","0x1f9d1","0x200d","0x1f9bc","0x200d","0x27a1","0xfe0f","0x1f468","0x200d","0x1f9bc","0x1f468","0x200d","0x1f9bc","0x200d","0x27a1","0xfe0f","0x1f469","0x200d","0x1f9bc","0x1f469","0x200d","0x1f9bc","0x200d","0x27a1","0xfe0f","0x1f9d1","0x200d","0x1f9bd","0x1f9d1","0x200d","0x1f9bd","0x200d","0x27a1","0xfe0f","0x1f468","0x200d","0x1f9bd","0x1f468","0x200d","0x1f9bd","0x200d","0x27a1","0xfe0f","0x1f469","0x200d","0x1f9bd","0x1f469","0x200d","0x1f9bd","0x200d","0x27a1","0xfe0f","0x1f3c3","0x1f3c3","0x200d","0x2642","0xfe0f","0x1f3c3","0x200d","0x2640","0xfe0f","0x1f3c3","0x200d","0x27a1","0xfe0f","0x1f3c3","0x200d","0x2640","0xfe0f","0x200d","0x27a1","0xfe0f","0x1f3c3","0x200d","0x2642","0xfe0f","0x200d","0x27a1","0xfe0f","0x1f483","0x1f57a","0x1f574","0x1f46f","0x1f46f","0x200d","0x2642","0xfe0f","0x1f46f","0x200d","0x2640","0xfe0f","0x1f9d6","0x1f9d6","0x200d","0x2642","0xfe0f","0x1f9d6","0x200d","0x2640","0xfe0f","0x1f9d7","0x1f9d7","0x200d","0x2642","0xfe0f","0x1f9d7","0x200d","0x2640","0xfe0f","0x1f93a","0x1f3c7","0x26f7","0x1f3c2","0x1f3cc","0x1f3cc","0xfe0f","0x200d","0x2642","0xfe0f","0x1f3cc","0xfe0f","0x200d","0x2640","0xfe0f","0x1f3c4","0x1f3c4","0x200d","0x2642","0xfe0f","0x1f3c4","0x200d","0x2640","0xfe0f","0x1f6a3","0x1f6a3","0x200d","0x2642","0xfe0f","0x1f6a3","0x200d","0x2640","0xfe0f","0x1f3ca","0x1f3ca","0x200d","0x2642","0xfe0f","0x1f3ca","0x200d","0x2640","0xfe0f","0x26f9","0x26f9","0xfe0f","0x200d","0x2642","0xfe0f","0x26f9","0xfe0f","0x200d","0x2640","0xfe0f","0x1f3cb","0x1f3cb","0xfe0f","0x200d","0x2642","0xfe0f","0x1f3cb","0xfe0f","0x200d","0x2640","0xfe0f","0x1f6b4","0x1f6b4","0x200d","0x2642","0xfe0f","0x1f6b4","0x200d","0x2640","0xfe0f","0x1f6b5","0x1f6b5","0x200d","0x2642","0xfe0f","0x1f6b5","0x200d","0x2640","0xfe0f","0x1f938","0x1f938","0x200d","0x2642","0xfe0f","0x1f938","0x200d","0x2640","0xfe0f","0x1f93c","0x1f93c","0x200d","0x2642","0xfe0f","0x1f93c","0x200d","0x2640","0xfe0f","0x1f93d","0x1f93d","0x200d","0x2642","0xfe0f","0x1f93d","0x200d","0x2640","0xfe0f","0x1f93e","0x1f93e","0x200d","0x2642","0xfe0f","0x1f93e","0x200d","0x2640","0xfe0f","0x1f939","0x1f939","0x200d","0x2642","0xfe0f","0x1f939","0x200d","0x2640","0xfe0f","0x1f9d8","0x1f9d8","0x200d","0x2642","0xfe0f","0x1f9d8","0x200d","0x2640","0xfe0f","0x1f6c0","0x1f6cc","0x1f9d1","0x200d","0x1f91d","0x200d","0x1f9d1","0x1f46d","0x1f46b","0x1f46c","0x1f48f","0x1f469","0x200d","0x2764","0xfe0f","0x200d","0x1f48b","0x200d","0x1f468","0x1f468","0x200d","0x2764","0xfe0f","0x200d","0x1f48b","0x200d","0x1f468","0x1f469","0x200d","0x2764","0xfe0f","0x200d","0x1f48b","0x200d","0x1f469","0x1f491","0x1f469","0x200d","0x2764","0xfe0f","0x200d","0x1f468","0x1f468","0x200d","0x2764","0xfe0f","0x200d","0x1f468","0x1f469","0x200d","0x2764","0xfe0f","0x200d","0x1f469","0x1f468","0x200d","0x1f469","0x200d","0x1f466","0x1f468","0x200d","0x1f469","0x200d","0x1f467","0x1f468","0x200d","0x1f469","0x200d","0x1f467","0x200d","0x1f466","0x1f468","0x200d","0x1f469","0x200d","0x1f466","0x200d","0x1f466","0x1f468","0x200d","0x1f469","0x200d","0x1f467","0x200d","0x1f467","0x1f468","0x200d","0x1f468","0x200d","0x1f466","0x1f468","0x200d","0x1f468","0x200d","0x1f467","0x1f468","0x200d","0x1f468","0x200d","0x1f467","0x200d","0x1f466","0x1f468","0x200d","0x1f468","0x200d","0x1f466","0x200d","0x1f466","0x1f468","0x200d","0x1f468","0x200d","0x1f467","0x200d","0x1f467","0x1f469","0x200d","0x1f469","0x200d","0x1f466","0x1f469","0x200d","0x1f469","0x200d","0x1f467","0x1f469","0x200d","0x1f469","0x200d","0x1f467","0x200d","0x1f466","0x1f469","0x200d","0x1f469","0x200d","0x1f466","0x200d","0x1f466","0x1f469","0x200d","0x1f469","0x200d","0x1f467","0x200d","0x1f467","0x1f468","0x200d","0x1f466","0x1f468","0x200d","0x1f466","0x200d","0x1f466","0x1f468","0x200d","0x1f467","0x1f468","0x200d","0x1f467","0x200d","0x1f466","0x1f468","0x200d","0x1f467","0x200d","0x1f467","0x1f469","0x200d","0x1f466","0x1f469","0x200d","0x1f466","0x200d","0x1f466","0x1f469","0x200d","0x1f467","0x1f469","0x200d","0x1f467","0x200d","0x1f466","0x1f469","0x200d","0x1f467","0x200d","0x1f467","0x1f5e3","0x1f464","0x1f465","0x1fac2","0x1f46a","0x1f9d1","0x200d","0x1f9d1","0x200d","0x1f9d2","0x1f9d1","0x200d","0x1f9d1","0x200d","0x1f9d2","0x200d","0x1f9d2","0x1f9d1","0x200d","0x1f9d2","0x1f9d1","0x200d","0x1f9d2","0x200d","0x1f9d2","0x1f463"],animals_and_nature:["0x1f435","0x1f412","0x1f98d","0x1f9a7","0x1f436","0x1f415","0x1f9ae","0x1f415","0x200d","0x1f9ba","0x1f429","0x1f43a","0x1f98a","0x1f99d","0x1f431","0x1f408","0x1f408","0x200d","0x2b1b","0x1f981","0x1f42f","0x1f405","0x1f406","0x1f434","0x1face","0x1facf","0x1f40e","0x1f984","0x1f993","0x1f98c","0x1f9ac","0x1f42e","0x1f402","0x1f403","0x1f404","0x1f437","0x1f416","0x1f417","0x1f43d","0x1f40f","0x1f411","0x1f410","0x1f42a","0x1f42b","0x1f999","0x1f992","0x1f418","0x1f9a3","0x1f98f","0x1f99b","0x1f42d","0x1f401","0x1f400","0x1f439","0x1f430","0x1f407","0x1f43f","0x1f9ab","0x1f994","0x1f987","0x1f43b","0x1f43b","0x200d","0x2744","0xfe0f","0x1f428","0x1f43c","0x1f9a5","0x1f9a6","0x1f9a8","0x1f998","0x1f9a1","0x1f43e","0x1f983","0x1f414","0x1f413","0x1f423","0x1f424","0x1f425","0x1f426","0x1f427","0x1f54a","0x1f985","0x1f986","0x1f9a2","0x1f989","0x1f9a4","0x1fab6","0x1f9a9","0x1f99a","0x1f99c","0x1fabd","0x1f426","0x200d","0x2b1b","0x1fabf","0x1f426","0x200d","0x1f525","0x1f438","0x1f40a","0x1f422","0x1f98e","0x1f40d","0x1f432","0x1f409","0x1f995","0x1f996","0x1f433","0x1f40b","0x1f42c","0x1f9ad","0x1f41f","0x1f420","0x1f421","0x1f988","0x1f419","0x1f41a","0x1fab8","0x1fabc","0x1f40c","0x1f98b","0x1f41b","0x1f41c","0x1f41d","0x1fab2","0x1f41e","0x1f997","0x1fab3","0x1f577","0x1f578","0x1f982","0x1f99f","0x1fab0","0x1fab1","0x1f9a0","0x1f490","0x1f338","0x1f4ae","0x1fab7","0x1f3f5","0x1f339","0x1f940","0x1f33a","0x1f33b","0x1f33c","0x1f337","0x1fabb","0x1f331","0x1fab4","0x1f332","0x1f333","0x1f334","0x1f335","0x1f33e","0x1f33f","0x2618","0x1f340","0x1f341","0x1f342","0x1f343","0x1fab9","0x1faba","0x1f344"],food_and_drink:["0x1f347","0x1f348","0x1f349","0x1f34a","0x1f34b","0x1f34b","0x200d","0x1f7e9","0x1f34c","0x1f34d","0x1f96d","0x1f34e","0x1f34f","0x1f350","0x1f351","0x1f352","0x1f353","0x1fad0","0x1f95d","0x1f345","0x1fad2","0x1f965","0x1f951","0x1f346","0x1f954","0x1f955","0x1f33d","0x1f336","0x1fad1","0x1f952","0x1f96c","0x1f966","0x1f9c4","0x1f9c5","0x1f95c","0x1fad8","0x1f330","0x1fada","0x1fadb","0x1f344","0x200d","0x1f7eb","0x1f35e","0x1f950","0x1f956","0x1fad3","0x1f968","0x1f96f","0x1f95e","0x1f9c7","0x1f9c0","0x1f356","0x1f357","0x1f969","0x1f953","0x1f354","0x1f35f","0x1f355","0x1f32d","0x1f96a","0x1f32e","0x1f32f","0x1fad4","0x1f959","0x1f9c6","0x1f95a","0x1f373","0x1f958","0x1f372","0x1fad5","0x1f963","0x1f957","0x1f37f","0x1f9c8","0x1f9c2","0x1f96b","0x1f371","0x1f358","0x1f359","0x1f35a","0x1f35b","0x1f35c","0x1f35d","0x1f360","0x1f362","0x1f363","0x1f364","0x1f365","0x1f96e","0x1f361","0x1f95f","0x1f960","0x1f961","0x1f980","0x1f99e","0x1f990","0x1f991","0x1f9aa","0x1f366","0x1f367","0x1f368","0x1f369","0x1f36a","0x1f382","0x1f370","0x1f9c1","0x1f967","0x1f36b","0x1f36c","0x1f36d","0x1f36e","0x1f36f","0x1f37c","0x1f95b","0x2615","0x1fad6","0x1f375","0x1f376","0x1f37e","0x1f377","0x1f378","0x1f379","0x1f37a","0x1f37b","0x1f942","0x1f943","0x1fad7","0x1f964","0x1f9cb","0x1f9c3","0x1f9c9","0x1f9ca","0x1f962","0x1f37d","0x1f374","0x1f944","0x1f52a","0x1fad9","0x1f3fa"],travel_and_places:["0x1f30d","0x1f30e","0x1f30f","0x1f310","0x1f5fa","0x1f5fe","0x1f9ed","0x1f3d4","0x26f0","0x1f30b","0x1f5fb","0x1f3d5","0x1f3d6","0x1f3dc","0x1f3dd","0x1f3de","0x1f3df","0x1f3db","0x1f3d7","0x1f9f1","0x1faa8","0x1fab5","0x1f6d6","0x1f3d8","0x1f3da","0x1f3e0","0x1f3e1","0x1f3e2","0x1f3e3","0x1f3e4","0x1f3e5","0x1f3e6","0x1f3e8","0x1f3e9","0x1f3ea","0x1f3eb","0x1f3ec","0x1f3ed","0x1f3ef","0x1f3f0","0x1f492","0x1f5fc","0x1f5fd","0x26ea","0x1f54c","0x1f6d5","0x1f54d","0x26e9","0x1f54b","0x26f2","0x26fa","0x1f301","0x1f303","0x1f3d9","0x1f304","0x1f305","0x1f306","0x1f307","0x1f309","0x2668","0x1f3a0","0x1f6dd","0x1f3a1","0x1f3a2","0x1f488","0x1f3aa","0x1f682","0x1f683","0x1f684","0x1f685","0x1f686","0x1f687","0x1f688","0x1f689","0x1f68a","0x1f69d","0x1f69e","0x1f68b","0x1f68c","0x1f68d","0x1f68e","0x1f690","0x1f691","0x1f692","0x1f693","0x1f694","0x1f695","0x1f696","0x1f697","0x1f698","0x1f699","0x1f6fb","0x1f69a","0x1f69b","0x1f69c","0x1f3ce","0x1f3cd","0x1f6f5","0x1f9bd","0x1f9bc","0x1f6fa","0x1f6b2","0x1f6f4","0x1f6f9","0x1f6fc","0x1f68f","0x1f6e3","0x1f6e4","0x1f6e2","0x26fd","0x1f6de","0x1f6a8","0x1f6a5","0x1f6a6","0x1f6d1","0x1f6a7","0x2693","0x1f6df","0x26f5","0x1f6f6","0x1f6a4","0x1f6f3","0x26f4","0x1f6e5","0x1f6a2","0x2708","0x1f6e9","0x1f6eb","0x1f6ec","0x1fa82","0x1f4ba","0x1f681","0x1f69f","0x1f6a0","0x1f6a1","0x1f6f0","0x1f680","0x1f6f8","0x1f6ce","0x1f9f3","0x231b","0x23f3","0x231a","0x23f0","0x23f1","0x23f2","0x1f570","0x1f55b","0x1f567","0x1f550","0x1f55c","0x1f551","0x1f55d","0x1f552","0x1f55e","0x1f553","0x1f55f","0x1f554","0x1f560","0x1f555","0x1f561","0x1f556","0x1f562","0x1f557","0x1f563","0x1f558","0x1f564","0x1f559","0x1f565","0x1f55a","0x1f566","0x1f311","0x1f312","0x1f313","0x1f314","0x1f315","0x1f316","0x1f317","0x1f318","0x1f319","0x1f31a","0x1f31b","0x1f31c","0x1f321","0x2600","0x1f31d","0x1f31e","0x1fa90","0x2b50","0x1f31f","0x1f320","0x1f30c","0x2601","0x26c5","0x26c8","0x1f324","0x1f325","0x1f326","0x1f327","0x1f328","0x1f329","0x1f32a","0x1f32b","0x1f32c","0x1f300","0x1f308","0x1f302","0x2602","0x2614","0x26f1","0x26a1","0x2744","0x2603","0x26c4","0x2604","0x1f525","0x1f4a7","0x1f30a"],activities:["0x1f383","0x1f384","0x1f386","0x1f387","0x1f9e8","0x2728","0x1f388","0x1f389","0x1f38a","0x1f38b","0x1f38d","0x1f38e","0x1f38f","0x1f390","0x1f391","0x1f9e7","0x1f380","0x1f381","0x1f397","0x1f39f","0x1f3ab","0x1f396","0x1f3c6","0x1f3c5","0x1f947","0x1f948","0x1f949","0x26bd","0x26be","0x1f94e","0x1f3c0","0x1f3d0","0x1f3c8","0x1f3c9","0x1f3be","0x1f94f","0x1f3b3","0x1f3cf","0x1f3d1","0x1f3d2","0x1f94d","0x1f3d3","0x1f3f8","0x1f94a","0x1f94b","0x1f945","0x26f3","0x26f8","0x1f3a3","0x1f93f","0x1f3bd","0x1f3bf","0x1f6f7","0x1f94c","0x1f3af","0x1fa80","0x1fa81","0x1f52b","0x1f3b1","0x1f52e","0x1fa84","0x1f3ae","0x1f579","0x1f3b0","0x1f3b2","0x1f9e9","0x1f9f8","0x1fa85","0x1faa9","0x1fa86","0x2660","0x2665","0x2666","0x2663","0x265f","0x1f0cf","0x1f004","0x1f3b4","0x1f3ad","0x1f5bc","0x1f3a8","0x1f9f5","0x1faa1","0x1f9f6","0x1faa2"],objects:["0x1f453","0x1f576","0x1f97d","0x1f97c","0x1f9ba","0x1f454","0x1f455","0x1f456","0x1f9e3","0x1f9e4","0x1f9e5","0x1f9e6","0x1f457","0x1f458","0x1f97b","0x1fa71","0x1fa72","0x1fa73","0x1f459","0x1f45a","0x1faad","0x1f45b","0x1f45c","0x1f45d","0x1f6cd","0x1f392","0x1fa74","0x1f45e","0x1f45f","0x1f97e","0x1f97f","0x1f460","0x1f461","0x1fa70","0x1f462","0x1faae","0x1f451","0x1f452","0x1f3a9","0x1f393","0x1f9e2","0x1fa96","0x26d1","0x1f4ff","0x1f484","0x1f48d","0x1f48e","0x1f507","0x1f508","0x1f509","0x1f50a","0x1f4e2","0x1f4e3","0x1f4ef","0x1f514","0x1f515","0x1f3bc","0x1f3b5","0x1f3b6","0x1f399","0x1f39a","0x1f39b","0x1f3a4","0x1f3a7","0x1f4fb","0x1f3b7","0x1fa97","0x1f3b8","0x1f3b9","0x1f3ba","0x1f3bb","0x1fa95","0x1f941","0x1fa98","0x1fa87","0x1fa88","0x1f4f1","0x1f4f2","0x260e","0x1f4de","0x1f4df","0x1f4e0","0x1f50b","0x1faab","0x1f50c","0x1f4bb","0x1f5a5","0x1f5a8","0x2328","0x1f5b1","0x1f5b2","0x1f4bd","0x1f4be","0x1f4bf","0x1f4c0","0x1f9ee","0x1f3a5","0x1f39e","0x1f4fd","0x1f3ac","0x1f4fa","0x1f4f7","0x1f4f8","0x1f4f9","0x1f4fc","0x1f50d","0x1f50e","0x1f56f","0x1f4a1","0x1f526","0x1f3ee","0x1fa94","0x1f4d4","0x1f4d5","0x1f4d6","0x1f4d7","0x1f4d8","0x1f4d9","0x1f4da","0x1f4d3","0x1f4d2","0x1f4c3","0x1f4dc","0x1f4c4","0x1f4f0","0x1f5de","0x1f4d1","0x1f516","0x1f3f7","0x1f4b0","0x1fa99","0x1f4b4","0x1f4b5","0x1f4b6","0x1f4b7","0x1f4b8","0x1f4b3","0x1f9fe","0x1f4b9","0x2709","0x1f4e7","0x1f4e8","0x1f4e9","0x1f4e4","0x1f4e5","0x1f4e6","0x1f4eb","0x1f4ea","0x1f4ec","0x1f4ed","0x1f4ee","0x1f5f3","0x270f","0x2712","0x1f58b","0x1f58a","0x1f58c","0x1f58d","0x1f4dd","0x1f4bc","0x1f4c1","0x1f4c2","0x1f5c2","0x1f4c5","0x1f4c6","0x1f5d2","0x1f5d3","0x1f4c7","0x1f4c8","0x1f4c9","0x1f4ca","0x1f4cb","0x1f4cc","0x1f4cd","0x1f4ce","0x1f587","0x1f4cf","0x1f4d0","0x2702","0x1f5c3","0x1f5c4","0x1f5d1","0x1f512","0x1f513","0x1f50f","0x1f510","0x1f511","0x1f5dd","0x1f528","0x1fa93","0x26cf","0x2692","0x1f6e0","0x1f5e1","0x2694","0x1f4a3","0x1fa83","0x1f3f9","0x1f6e1","0x1fa9a","0x1f527","0x1fa9b","0x1f529","0x2699","0x1f5dc","0x2696","0x1f9af","0x1f517","0x26d3","0xfe0f","0x200d","0x1f4a5","0x26d3","0x1fa9d","0x1f9f0","0x1f9f2","0x1fa9c","0x2697","0x1f9ea","0x1f9eb","0x1f9ec","0x1f52c","0x1f52d","0x1f4e1","0x1f489","0x1fa78","0x1f48a","0x1fa79","0x1fa7c","0x1fa7a","0x1fa7b","0x1f6aa","0x1f6d7","0x1fa9e","0x1fa9f","0x1f6cf","0x1f6cb","0x1fa91","0x1f6bd","0x1faa0","0x1f6bf","0x1f6c1","0x1faa4","0x1fa92","0x1f9f4","0x1f9f7","0x1f9f9","0x1f9fa","0x1f9fb","0x1faa3","0x1f9fc","0x1fae7","0x1faa5","0x1f9fd","0x1f9ef","0x1f6d2","0x1f6ac","0x26b0","0x1faa6","0x26b1","0x1f9ff","0x1faac","0x1f5ff","0x1faa7","0x1faaa"],symbols:["0x1f3e7","0x1f6ae","0x1f6b0","0x267f","0x1f6b9","0x1f6ba","0x1f6bb","0x1f6bc","0x1f6be","0x1f6c2","0x1f6c3","0x1f6c4","0x1f6c5","0x26a0","0x1f6b8","0x26d4","0x1f6ab","0x1f6b3","0x1f6ad","0x1f6af","0x1f6b1","0x1f6b7","0x1f4f5","0x1f51e","0x2622","0x2623","0x2b06","0x2197","0x27a1","0x2198","0x2b07","0x2199","0x2b05","0x2196","0x2195","0x2194","0x21a9","0x21aa","0x2934","0x2935","0x1f503","0x1f504","0x1f519","0x1f51a","0x1f51b","0x1f51c","0x1f51d","0x1f6d0","0x269b","0x1f549","0x2721","0x2638","0x262f","0x271d","0x2626","0x262a","0x262e","0x1f54e","0x1f52f","0x1faaf","0x2648","0x2649","0x264a","0x264b","0x264c","0x264d","0x264e","0x264f","0x2650","0x2651","0x2652","0x2653","0x26ce","0x1f500","0x1f501","0x1f502","0x25b6","0x23e9","0x23ed","0x23ef","0x25c0","0x23ea","0x23ee","0x1f53c","0x23eb","0x1f53d","0x23ec","0x23f8","0x23f9","0x23fa","0x23cf","0x1f3a6","0x1f505","0x1f506","0x1f4f6","0x1f6dc","0x1f4f3","0x1f4f4","0x2640","0x2642","0x26a7","0x2716","0x2795","0x2796","0x2797","0x1f7f0","0x267e","0x203c","0x2049","0x2753","0x2754","0x2755","0x2757","0x3030","0x1f4b1","0x1f4b2","0x2695","0x267b","0x269c","0x1f531","0x1f4db","0x1f530","0x2b55","0x2705","0x2611","0x2714","0x274c","0x274e","0x27b0","0x27bf","0x303d","0x2733","0x2734","0x2747","0x00a9","0x00ae","0x2122","0x0023","0xfe0f","0x20e3","0x002a","0xfe0f","0x20e3","0x0030","0xfe0f","0x20e3","0x0031","0xfe0f","0x20e3","0x0032","0xfe0f","0x20e3","0x0033","0xfe0f","0x20e3","0x0034","0xfe0f","0x20e3","0x0035","0xfe0f","0x20e3","0x0036","0xfe0f","0x20e3","0x0037","0xfe0f","0x20e3","0x0038","0xfe0f","0x20e3","0x0039","0xfe0f","0x20e3","0x1f51f","0x1f520","0x1f521","0x1f522","0x1f523","0x1f524","0x1f170","0x1f18e","0x1f171","0x1f191","0x1f192","0x1f193","0x2139","0x1f194","0x24c2","0x1f195","0x1f196","0x1f17e","0x1f197","0x1f17f","0x1f198","0x1f199","0x1f19a","0x1f201","0x1f202","0x1f237","0x1f236","0x1f22f","0x1f250","0x1f239","0x1f21a","0x1f232","0x1f251","0x1f238","0x1f234","0x1f233","0x3297","0x3299","0x1f23a","0x1f235","0x1f534","0x1f7e0","0x1f7e1","0x1f7e2","0x1f535","0x1f7e3","0x1f7e4","0x26ab","0x26aa","0x1f7e5","0x1f7e7","0x1f7e8","0x1f7e9","0x1f7e6","0x1f7ea","0x1f7eb","0x2b1b","0x2b1c","0x25fc","0x25fb","0x25fe","0x25fd","0x25aa","0x25ab","0x1f536","0x1f537","0x1f538","0x1f539","0x1f53a","0x1f53b","0x1f4a0","0x1f518","0x1f533","0x1f532"],flags:["0x1f3c1","0x1f6a9","0x1f38c","0x1f3f4","0x1f3f3","0x1f3f3","0xfe0f","0x200d","0x1f308","0x1f3f3","0xfe0f","0x200d","0x26a7","0xfe0f","0x1f3f4","0x200d","0x2620","0xfe0f","0x1f1e6","0x1f1e8","0x1f1e6","0x1f1e9","0x1f1e6","0x1f1ea","0x1f1e6","0x1f1eb","0x1f1e6","0x1f1ec","0x1f1e6","0x1f1ee","0x1f1e6","0x1f1f1","0x1f1e6","0x1f1f2","0x1f1e6","0x1f1f4","0x1f1e6","0x1f1f6","0x1f1e6","0x1f1f7","0x1f1e6","0x1f1f8","0x1f1e6","0x1f1f9","0x1f1e6","0x1f1fa","0x1f1e6","0x1f1fc","0x1f1e6","0x1f1fd","0x1f1e6","0x1f1ff","0x1f1e7","0x1f1e6","0x1f1e7","0x1f1e7","0x1f1e7","0x1f1e9","0x1f1e7","0x1f1ea","0x1f1e7","0x1f1eb","0x1f1e7","0x1f1ec","0x1f1e7","0x1f1ed","0x1f1e7","0x1f1ee","0x1f1e7","0x1f1ef","0x1f1e7","0x1f1f1","0x1f1e7","0x1f1f2","0x1f1e7","0x1f1f3","0x1f1e7","0x1f1f4","0x1f1e7","0x1f1f6","0x1f1e7","0x1f1f7","0x1f1e7","0x1f1f8","0x1f1e7","0x1f1f9","0x1f1e7","0x1f1fb","0x1f1e7","0x1f1fc","0x1f1e7","0x1f1fe","0x1f1e7","0x1f1ff","0x1f1e8","0x1f1e6","0x1f1e8","0x1f1e8","0x1f1e8","0x1f1e9","0x1f1e8","0x1f1eb","0x1f1e8","0x1f1ec","0x1f1e8","0x1f1ed","0x1f1e8","0x1f1ee","0x1f1e8","0x1f1f0","0x1f1e8","0x1f1f1","0x1f1e8","0x1f1f2","0x1f1e8","0x1f1f3","0x1f1e8","0x1f1f4","0x1f1e8","0x1f1f5","0x1f1e8","0x1f1f7","0x1f1e8","0x1f1fa","0x1f1e8","0x1f1fb","0x1f1e8","0x1f1fc","0x1f1e8","0x1f1fd","0x1f1e8","0x1f1fe","0x1f1e8","0x1f1ff","0x1f1e9","0x1f1ea","0x1f1e9","0x1f1ec","0x1f1e9","0x1f1ef","0x1f1e9","0x1f1f0","0x1f1e9","0x1f1f2","0x1f1e9","0x1f1f4","0x1f1e9","0x1f1ff","0x1f1ea","0x1f1e6","0x1f1ea","0x1f1e8","0x1f1ea","0x1f1ea","0x1f1ea","0x1f1ec","0x1f1ea","0x1f1ed","0x1f1ea","0x1f1f7","0x1f1ea","0x1f1f8","0x1f1ea","0x1f1f9","0x1f1ea","0x1f1fa","0x1f1eb","0x1f1ee","0x1f1eb","0x1f1ef","0x1f1eb","0x1f1f0","0x1f1eb","0x1f1f2","0x1f1eb","0x1f1f4","0x1f1eb","0x1f1f7","0x1f1ec","0x1f1e6","0x1f1ec","0x1f1e7","0x1f1ec","0x1f1e9","0x1f1ec","0x1f1ea","0x1f1ec","0x1f1eb","0x1f1ec","0x1f1ec","0x1f1ec","0x1f1ed","0x1f1ec","0x1f1ee","0x1f1ec","0x1f1f1","0x1f1ec","0x1f1f2","0x1f1ec","0x1f1f3","0x1f1ec","0x1f1f5","0x1f1ec","0x1f1f6","0x1f1ec","0x1f1f7","0x1f1ec","0x1f1f8","0x1f1ec","0x1f1f9","0x1f1ec","0x1f1fa","0x1f1ec","0x1f1fc","0x1f1ec","0x1f1fe","0x1f1ed","0x1f1f0","0x1f1ed","0x1f1f2","0x1f1ed","0x1f1f3","0x1f1ed","0x1f1f7","0x1f1ed","0x1f1f9","0x1f1ed","0x1f1fa","0x1f1ee","0x1f1e8","0x1f1ee","0x1f1e9","0x1f1ee","0x1f1ea","0x1f1ee","0x1f1f1","0x1f1ee","0x1f1f2","0x1f1ee","0x1f1f3","0x1f1ee","0x1f1f4","0x1f1ee","0x1f1f6","0x1f1ee","0x1f1f7","0x1f1ee","0x1f1f8","0x1f1ee","0x1f1f9","0x1f1ef","0x1f1ea","0x1f1ef","0x1f1f2","0x1f1ef","0x1f1f4","0x1f1ef","0x1f1f5","0x1f1f0","0x1f1ea","0x1f1f0","0x1f1ec","0x1f1f0","0x1f1ed","0x1f1f0","0x1f1ee","0x1f1f0","0x1f1f2","0x1f1f0","0x1f1f3","0x1f1f0","0x1f1f5","0x1f1f0","0x1f1f7","0x1f1f0","0x1f1fc","0x1f1f0","0x1f1fe","0x1f1f0","0x1f1ff","0x1f1f1","0x1f1e6","0x1f1f1","0x1f1e7","0x1f1f1","0x1f1e8","0x1f1f1","0x1f1ee","0x1f1f1","0x1f1f0","0x1f1f1","0x1f1f7","0x1f1f1","0x1f1f8","0x1f1f1","0x1f1f9","0x1f1f1","0x1f1fa","0x1f1f1","0x1f1fb","0x1f1f1","0x1f1fe","0x1f1f2","0x1f1e6","0x1f1f2","0x1f1e8","0x1f1f2","0x1f1e9","0x1f1f2","0x1f1ea","0x1f1f2","0x1f1eb","0x1f1f2","0x1f1ec","0x1f1f2","0x1f1ed","0x1f1f2","0x1f1f0","0x1f1f2","0x1f1f1","0x1f1f2","0x1f1f2","0x1f1f2","0x1f1f3","0x1f1f2","0x1f1f4","0x1f1f2","0x1f1f5","0x1f1f2","0x1f1f6","0x1f1f2","0x1f1f7","0x1f1f2","0x1f1f8","0x1f1f2","0x1f1f9","0x1f1f2","0x1f1fa","0x1f1f2","0x1f1fb","0x1f1f2","0x1f1fc","0x1f1f2","0x1f1fd","0x1f1f2","0x1f1fe","0x1f1f2","0x1f1ff","0x1f1f3","0x1f1e6","0x1f1f3","0x1f1e8","0x1f1f3","0x1f1ea","0x1f1f3","0x1f1eb","0x1f1f3","0x1f1ec","0x1f1f3","0x1f1ee","0x1f1f3","0x1f1f1","0x1f1f3","0x1f1f4","0x1f1f3","0x1f1f5","0x1f1f3","0x1f1f7","0x1f1f3","0x1f1fa","0x1f1f3","0x1f1ff","0x1f1f4","0x1f1f2","0x1f1f5","0x1f1e6","0x1f1f5","0x1f1ea","0x1f1f5","0x1f1eb","0x1f1f5","0x1f1ec","0x1f1f5","0x1f1ed","0x1f1f5","0x1f1f0","0x1f1f5","0x1f1f1","0x1f1f5","0x1f1f2","0x1f1f5","0x1f1f3","0x1f1f5","0x1f1f7","0x1f1f5","0x1f1f8","0x1f1f5","0x1f1f9","0x1f1f5","0x1f1fc","0x1f1f5","0x1f1fe","0x1f1f6","0x1f1e6","0x1f1f7","0x1f1ea","0x1f1f7","0x1f1f4","0x1f1f7","0x1f1f8","0x1f1f7","0x1f1fa","0x1f1f7","0x1f1fc","0x1f1f8","0x1f1e6","0x1f1f8","0x1f1e7","0x1f1f8","0x1f1e8","0x1f1f8","0x1f1e9","0x1f1f8","0x1f1ea","0x1f1f8","0x1f1ec","0x1f1f8","0x1f1ed","0x1f1f8","0x1f1ee","0x1f1f8","0x1f1ef","0x1f1f8","0x1f1f0","0x1f1f8","0x1f1f1","0x1f1f8","0x1f1f2","0x1f1f8","0x1f1f3","0x1f1f8","0x1f1f4","0x1f1f8","0x1f1f7","0x1f1f8","0x1f1f8","0x1f1f8","0x1f1f9","0x1f1f8","0x1f1fb","0x1f1f8","0x1f1fd","0x1f1f8","0x1f1fe","0x1f1f8","0x1f1ff","0x1f1f9","0x1f1e6","0x1f1f9","0x1f1e8","0x1f1f9","0x1f1e9","0x1f1f9","0x1f1eb","0x1f1f9","0x1f1ec","0x1f1f9","0x1f1ed","0x1f1f9","0x1f1ef","0x1f1f9","0x1f1f0","0x1f1f9","0x1f1f1","0x1f1f9","0x1f1f2","0x1f1f9","0x1f1f3","0x1f1f9","0x1f1f4","0x1f1f9","0x1f1f7","0x1f1f9","0x1f1f9","0x1f1f9","0x1f1fb","0x1f1f9","0x1f1fc","0x1f1f9","0x1f1ff","0x1f1fa","0x1f1e6","0x1f1fa","0x1f1ec","0x1f1fa","0x1f1f2","0x1f1fa","0x1f1f3","0x1f1fa","0x1f1f8","0x1f1fa","0x1f1fe","0x1f1fa","0x1f1ff","0x1f1fb","0x1f1e6","0x1f1fb","0x1f1e8","0x1f1fb","0x1f1ea","0x1f1fb","0x1f1ec","0x1f1fb","0x1f1ee","0x1f1fb","0x1f1f3","0x1f1fb","0x1f1fa","0x1f1fc","0x1f1eb","0x1f1fc","0x1f1f8","0x1f1fd","0x1f1f0","0x1f1fe","0x1f1ea","0x1f1fe","0x1f1f9","0x1f1ff","0x1f1e6","0x1f1ff","0x1f1f2","0x1f1ff","0x1f1fc","0x1f3f4","0xe0067","0xe0062","0xe0065","0xe006e","0xe0067","0xe007f","0x1f3f4","0xe0067","0xe0062","0xe0073","0xe0063","0xe0074","0xe007f","0x1f3f4","0xe0067","0xe0062","0xe0077","0xe006c","0xe0073","0xe007f"]}},v=Object.prototype.hasOwnProperty,x=Object.keys||function(n){var e=[];for(var t in n)v.call(n,t)&&e.push(t);return e};function k(n,e){var t=Array.isArray(n),a=e||(t?new Array(n.length):{});return t?function(n,e){for(var t=0,a=n.length;t0)return this.normal_pool(n);var e,t,a,i=n.mean,r=n.dev;do{e=(t=2*this.random()-1)*t+(a=2*this.random()-1)*a}while(e>=1);return r*(t*Math.sqrt(-2*Math.log(e)/e))+i},u.prototype.normal_pool=function(n){var e=0;do{var t=Math.round(this.normal({mean:n.mean,dev:n.dev}));if(t=0)return n.pool[t];e++}while(e<100);throw new RangeError("Chance: Your pool is too small for the given mean and standard deviation. Please adjust.")},u.prototype.radio=function(n){var e="";switch((n=d(n,{side:"?"})).side.toLowerCase()){case"east":case"e":e="W";break;case"west":case"w":e="K";break;default:e=this.character({pool:"KW"})}return e+this.character({alpha:!0,casing:"upper"})+this.character({alpha:!0,casing:"upper"})+this.character({alpha:!0,casing:"upper"})},u.prototype.set=function(n,e){"string"==typeof n?b[n]=e:b=k(n,b)},u.prototype.tv=function(n){return this.radio(n)},u.prototype.cnpj=function(){var n=this.n(this.natural,8,{max:9}),e=2+6*n[7]+7*n[6]+8*n[5]+9*n[4]+2*n[3]+3*n[2]+4*n[1]+5*n[0];(e=11-e%11)>=10&&(e=0);var t=2*e+3+7*n[7]+8*n[6]+9*n[5]+2*n[4]+3*n[3]+4*n[2]+5*n[1]+6*n[0];return(t=11-t%11)>=10&&(t=0),""+n[0]+n[1]+"."+n[2]+n[3]+n[4]+"."+n[5]+n[6]+n[7]+"/0001-"+e+t},u.prototype.emotion=function(){return this.pick(this.get("emotions"))},u.prototype.mersenne_twister=function(n){return new w(n)},u.prototype.blueimp_md5=function(){return new C};var w=function(n){void 0===n&&(n=Math.floor(Math.random()*Math.pow(10,13))),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(n)};w.prototype.init_genrand=function(n){for(this.mt[0]=n>>>0,this.mti=1;this.mti>>30,this.mt[this.mti]=(1812433253*((4294901760&n)>>>16)<<16)+1812433253*(65535&n)+this.mti,this.mt[this.mti]>>>=0},w.prototype.init_by_array=function(n,e){var t,a,i=1,r=0;for(this.init_genrand(19650218),t=this.N>e?this.N:e;t;t--)a=this.mt[i-1]^this.mt[i-1]>>>30,this.mt[i]=(this.mt[i]^(1664525*((4294901760&a)>>>16)<<16)+1664525*(65535&a))+n[r]+r,this.mt[i]>>>=0,r++,++i>=this.N&&(this.mt[0]=this.mt[this.N-1],i=1),r>=e&&(r=0);for(t=this.N-1;t;t--)a=this.mt[i-1]^this.mt[i-1]>>>30,this.mt[i]=(this.mt[i]^(1566083941*((4294901760&a)>>>16)<<16)+1566083941*(65535&a))-i,this.mt[i]>>>=0,++i>=this.N&&(this.mt[0]=this.mt[this.N-1],i=1);this.mt[0]=2147483648},w.prototype.genrand_int32=function(){var n,e=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var t;for(this.mti===this.N+1&&this.init_genrand(5489),t=0;t>>1^e[1&n];for(;t>>1^e[1&n];n=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^n>>>1^e[1&n],this.mti=0}return n=this.mt[this.mti++],n^=n>>>11,n^=n<<7&2636928640,n^=n<<15&4022730752,(n^=n>>>18)>>>0},w.prototype.genrand_int31=function(){return this.genrand_int32()>>>1},w.prototype.genrand_real1=function(){return this.genrand_int32()*(1/4294967295)},w.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},w.prototype.genrand_real3=function(){return(this.genrand_int32()+.5)*(1/4294967296)},w.prototype.genrand_res53=function(){return(67108864*(this.genrand_int32()>>>5)+(this.genrand_int32()>>>6))*(1/9007199254740992)};var C=function(){};C.prototype.VERSION="1.0.1",C.prototype.safe_add=function(n,e){var t=(65535&n)+(65535&e);return(n>>16)+(e>>16)+(t>>16)<<16|65535&t},C.prototype.bit_roll=function(n,e){return n<>>32-e},C.prototype.md5_cmn=function(n,e,t,a,i,r){return this.safe_add(this.bit_roll(this.safe_add(this.safe_add(e,n),this.safe_add(a,r)),i),t)},C.prototype.md5_ff=function(n,e,t,a,i,r,o){return this.md5_cmn(e&t|~e&a,n,e,i,r,o)},C.prototype.md5_gg=function(n,e,t,a,i,r,o){return this.md5_cmn(e&a|t&~a,n,e,i,r,o)},C.prototype.md5_hh=function(n,e,t,a,i,r,o){return this.md5_cmn(e^t^a,n,e,i,r,o)},C.prototype.md5_ii=function(n,e,t,a,i,r,o){return this.md5_cmn(t^(e|~a),n,e,i,r,o)},C.prototype.binl_md5=function(n,e){n[e>>5]|=128<>>9<<4)]=e;var t,a,i,r,o,s=1732584193,l=-271733879,c=-1732584194,u=271733878;for(t=0;t>5]>>>e%32&255);return t},C.prototype.rstr2binl=function(n){var e,t=[];for(t[(n.length>>2)-1]=void 0,e=0;e>5]|=(255&n.charCodeAt(e/8))<16&&(i=this.binl_md5(i,8*n.length)),t=0;t<16;t+=1)r[t]=909522486^i[t],o[t]=1549556828^i[t];return a=this.binl_md5(r.concat(this.rstr2binl(e)),512+8*e.length),this.binl2rstr(this.binl_md5(o.concat(a),640))},C.prototype.rstr2hex=function(n){var e,t,a="0123456789abcdef",i="";for(t=0;t>>4&15)+a.charAt(15&e);return i},C.prototype.str2rstr_utf8=function(n){return unescape(encodeURIComponent(n))},C.prototype.raw_md5=function(n){return this.rstr_md5(this.str2rstr_utf8(n))},C.prototype.hex_md5=function(n){return this.rstr2hex(this.raw_md5(n))},C.prototype.raw_hmac_md5=function(n,e){return this.rstr_hmac_md5(this.str2rstr_utf8(n),this.str2rstr_utf8(e))},C.prototype.hex_hmac_md5=function(n,e){return this.rstr2hex(this.raw_hmac_md5(n,e))},C.prototype.md5=function(n,e,t){return e?t?this.raw_hmac_md5(e,n):this.hex_hmac_md5(e,n):t?this.raw_md5(n):this.hex_md5(n)},n.exports&&(e=n.exports=u),e.Chance=u,void 0===(t=function(){return u}.apply(e,[]))||(n.exports=t),"undefined"!=typeof importScripts&&(chance=new u,self.Chance=u),"object"==typeof window&&"object"==typeof window.document&&(window.Chance=u,window.chance=new u)}()},42:(n,e,t)=>{"use strict";t.r(e),t.d(e,{TRIES:()=>i,WORD_LENGTH:()=>a});const a=5,i=6}},e={};function t(a){var i=e[a];if(void 0!==i)return i.exports;var r=e[a]={exports:{}};return n[a](r,r.exports,t),r.exports}t.n=n=>{var e=n&&n.__esModule?()=>n.default:()=>n;return t.d(e,{a:e}),e},t.d=(n,e)=>{for(var a in e)t.o(e,a)&&!t.o(n,a)&&Object.defineProperty(n,a,{enumerable:!0,get:e[a]})},t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),t.o=(n,e)=>Object.prototype.hasOwnProperty.call(n,e),t.r=n=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})};var a={};(()=>{"use strict";t.d(a,{O:()=>_d});var n=t(42);const e="aahed\naalii\naapas\naargh\naarti\nabaca\nabaci\naback\nabacs\nabaft\nabaht\nabaka\nabamp\naband\nabase\nabash\nabask\nabate\nabaya\nabbas\nabbed\nabbes\nabbey\nabbot\nabcee\nabeam\nabear\nabeat\nabeer\nabele\nabeng\nabers\nabets\nabeys\nabhor\nabide\nabies\nabius\nabjad\nabjud\nabled\nabler\nables\nablet\nablow\nabmho\nabnet\nabode\nabohm\naboil\naboma\naboon\nabord\nabore\naborn\nabort\nabout\nabove\nabram\nabray\nabrim\nabrin\nabris\nabsey\nabsit\nabuna\nabune\nabura\naburn\nabuse\nabuts\nabuzz\nabyes\nabysm\nabyss\nacais\nacara\nacari\naccas\naccha\naccoy\naccra\nacedy\nacene\nacerb\nacers\naceta\nachar\nached\nacher\naches\nachey\nachoo\nacids\nacidy\nacies\nacing\nacini\nackee\nacker\nacmes\nacmic\nacned\nacnes\nacock\nacoel\nacold\nacone\nacorn\nacral\nacred\nacres\nacrid\nacron\nacros\nacryl\nactas\nacted\nactin\nacton\nactor\nactus\nacute\nacyls\nadage\nadapt\nadats\nadawn\nadaws\nadays\nadbot\naddas\naddax\nadded\nadder\naddin\naddio\naddle\naddra\nadead\nadeem\nadept\nadhan\nadhoc\nadieu\nadios\nadits\nadlib\nadman\nadmen\nadmin\nadmit\nadmix\nadnex\nadobe\nadobo\nadoon\nadopt\nadorb\nadore\nadorn\nadown\nadoze\nadrad\nadraw\nadred\nadret\nadrip\nadsum\naduki\nadult\nadunc\nadust\nadvew\nadvts\nadyta\nadyts\nadzed\nadzes\naecia\naedes\naeger\naegis\naeons\naerie\naeros\naesir\naevum\nafald\nafanc\nafara\nafars\nafear\naffix\naffly\nafion\nafire\nafizz\naflaj\naflap\naflow\nafoam\nafoot\nafore\nafoul\nafret\nafrit\nafros\nafter\naftos\nagain\nagals\nagama\nagami\nagamy\nagape\nagars\nagasp\nagast\nagate\nagaty\nagave\nagaze\nagbas\nagene\nagent\nagers\naggag\nagger\naggie\naggri\naggro\naggry\naghas\nagidi\nagila\nagile\naging\nagios\nagism\nagist\nagita\naglee\naglet\nagley\nagloo\naglow\naglus\nagmas\nagoge\nagogo\nagone\nagons\nagony\nagood\nagora\nagree\nagria\nagrin\nagros\nagrum\nagued\nagues\naguey\naguna\nagush\naguti\nahead\naheap\nahent\nahigh\nahind\nahing\nahint\nahold\nahole\nahull\nahuru\naidas\naided\naider\naides\naidoi\naidos\naiery\naigas\naight\nailed\naimag\naimak\naimed\naimer\nainee\nainga\naioli\naired\nairer\nairns\nairth\nairts\naisle\naitch\naitus\naiver\naixes\naiyah\naiyee\naiyoh\naiyoo\naizle\najies\najiva\najuga\najupa\najwan\nakara\nakees\nakela\nakene\naking\nakita\nakkas\nakker\nakoia\nakoja\nakoya\naksed\nakses\nalaap\nalack\nalala\nalamo\naland\nalane\nalang\nalans\nalant\nalapa\nalaps\nalarm\nalary\nalata\nalate\nalays\nalbas\nalbee\nalbid\nalbum\nalcea\nalces\nalcid\nalcos\naldea\nalder\naldol\naleak\naleck\nalecs\naleem\nalefs\naleft\naleph\nalert\nalews\naleye\nalfas\nalgae\nalgal\nalgas\nalgid\nalgin\nalgor\nalgos\nalgum\nalias\nalibi\nalick\nalien\nalifs\nalign\nalike\nalims\naline\nalios\nalist\nalive\naliya\nalkie\nalkin\nalkos\nalkyd\nalkyl\nallan\nallay\nallee\nallel\nallen\naller\nalley\nallin\nallis\nallod\nallot\nallow\nalloy\nallus\nallyl\nalmah\nalmas\nalmeh\nalmes\nalmud\nalmug\nalods\naloed\naloes\naloft\naloha\naloin\nalone\nalong\naloof\naloos\nalose\naloud\nalowe\nalpha\naltar\nalter\naltho\naltos\nalula\nalums\nalumy\nalure\nalurk\nalvar\nalway\namahs\namain\namari\namaro\namass\namate\namaut\namaze\namban\namber\nambit\namble\nambos\nambry\nameba\nameer\namend\namene\namens\nament\namias\namice\namici\namide\namido\namids\namies\namiga\namigo\namine\namino\namins\namirs\namiss\namity\namlas\namman\nammas\nammon\nammos\namnia\namnic\namnio\namoks\namole\namong\namore\namort\namour\namove\namowt\namped\nample\namply\nampul\namrit\namuck\namuse\namyls\nanana\nanata\nancho\nancle\nancon\nandic\nandro\nanear\nanele\nanent\nangas\nangel\nanger\nangle\nanglo\nangry\nangst\nanigh\nanile\nanils\nanima\nanime\nanimi\nanion\nanise\nanker\nankhs\nankle\nankus\nanlas\nannal\nannan\nannas\nannat\nannex\nannoy\nannul\nannum\nannus\nanoas\nanode\nanole\nanomy\nansae\nansas\nantae\nantar\nantas\nanted\nantes\nantic\nantis\nantra\nantre\nantsy\nanura\nanvil\nanyon\naorta\napace\napage\napaid\napart\napayd\napays\napeak\napeek\napers\napert\napery\napgar\naphid\naphis\napian\naping\napiol\napish\napism\napnea\napode\napods\napols\napoop\naport\nappal\nappam\nappay\nappel\napple\napply\nappro\nappts\nappui\nappuy\napres\napron\napses\napsis\napsos\napted\napter\naptly\naquae\naquas\naraba\naraks\narame\narars\narbah\narbas\narbor\narced\narchi\narcos\narcus\nardeb\nardor\nardri\naread\nareae\nareal\narear\nareas\nareca\naredd\narede\narefy\nareic\narena\narene\narepa\narere\narete\narets\narett\nargal\nargan\nargil\nargle\nargol\nargon\nargot\nargue\nargus\narhat\narias\nariel\nariki\narils\nariot\narise\narish\narith\narked\narled\narles\narmed\narmer\narmet\narmil\narmor\narnas\narnis\narnut\naroba\naroha\naroid\naroma\narose\narpas\narpen\narrah\narras\narray\narret\narris\narrow\narroz\narsed\narses\narsey\narsis\narson\nartal\nartel\narter\nartic\nartis\nartly\nartsy\naruhe\narums\narval\narvee\narvos\naryls\nasada\nasana\nascon\nascot\nascus\nasdic\nashed\nashen\nashes\nashet\naside\nasity\naskar\nasked\nasker\naskew\naskoi\naskos\naspen\nasper\naspic\naspie\naspis\naspro\nassai\nassam\nassay\nassed\nasses\nasset\nassez\nassot\naster\nastir\nastun\nasura\nasway\naswim\nasyla\nataps\nataxy\natigi\natilt\natimy\natlas\natman\natmas\natmos\natocs\natoke\natoks\natoll\natoms\natomy\natone\natony\natopy\natria\natrip\nattap\nattar\nattas\natter\nattic\natuas\naucht\naudad\naudax\naudio\naudit\naugen\nauger\nauges\naught\naugur\naulas\naulic\nauloi\naulos\naumil\naunes\naunts\naunty\naurae\naural\naurar\nauras\naurei\naures\nauric\nauris\naurum\nautos\nauxin\navail\navale\navant\navast\navels\navens\navers\navert\navgas\navian\navine\navion\navise\naviso\navize\navoid\navows\navyze\nawait\nawake\naward\naware\nawari\nawarn\nawash\nawato\nawave\naways\nawdls\naweel\naweto\nawful\nawing\nawkin\nawmry\nawned\nawner\nawoke\nawols\nawork\naxels\naxial\naxile\naxils\naxing\naxiom\naxion\naxite\naxled\naxles\naxman\naxmen\naxoid\naxone\naxons\nayahs\nayaya\nayelp\naygre\nayins\naymag\nayont\nayres\nayrie\nazans\nazide\nazido\nazine\nazlon\nazoic\nazole\nazons\nazote\nazoth\nazuki\nazure\nazurn\nazury\nazygy\nazyme\nazyms\nbaaed\nbaals\nbaaps\nbabas\nbabby\nbabel\nbabes\nbabka\nbaboo\nbabul\nbabus\nbacca\nbacco\nbaccy\nbacha\nbachs\nbacks\nbacky\nbacne\nbacon\nbadam\nbaddy\nbadge\nbadly\nbaels\nbaffs\nbaffy\nbafta\nbafts\nbagel\nbaggy\nbaghs\nbagie\nbagsy\nbagua\nbahts\nbahus\nbahut\nbaiks\nbaile\nbails\nbairn\nbaisa\nbaith\nbaits\nbaiza\nbaize\nbajan\nbajra\nbajri\nbajus\nbaked\nbaken\nbaker\nbakes\nbakra\nbalas\nbalds\nbaldy\nbaled\nbaler\nbales\nbalks\nbalky\nballo\nballs\nbally\nbalms\nbalmy\nbaloi\nbalon\nbaloo\nbalot\nbalsa\nbalti\nbalun\nbalus\nbalut\nbamas\nbambi\nbamma\nbammy\nbanak\nbanal\nbanco\nbancs\nbanda\nbandh\nbands\nbandy\nbaned\nbanes\nbangs\nbania\nbanjo\nbanks\nbanky\nbanns\nbants\nbantu\nbanty\nbantz\nbanya\nbaons\nbaozi\nbappu\nbapus\nbarbe\nbarbs\nbarby\nbarca\nbarde\nbardo\nbards\nbardy\nbared\nbarer\nbares\nbarfi\nbarfs\nbarfy\nbarge\nbaric\nbarks\nbarky\nbarms\nbarmy\nbarns\nbarny\nbaron\nbarps\nbarra\nbarre\nbarro\nbarry\nbarye\nbasal\nbasan\nbasas\nbased\nbasen\nbaser\nbases\nbasha\nbasho\nbasic\nbasij\nbasil\nbasin\nbasis\nbasks\nbason\nbasse\nbassi\nbasso\nbassy\nbasta\nbaste\nbasti\nbasto\nbasts\nbatch\nbated\nbates\nbathe\nbaths\nbatik\nbaton\nbatos\nbatta\nbatts\nbattu\nbatty\nbauds\nbauks\nbaulk\nbaurs\nbavin\nbawds\nbawdy\nbawks\nbawls\nbawns\nbawrs\nbawty\nbayas\nbayed\nbayer\nbayes\nbayle\nbayou\nbayts\nbazar\nbazas\nbazoo\nbball\nbdays\nbeach\nbeads\nbeady\nbeaks\nbeaky\nbeals\nbeams\nbeamy\nbeano\nbeans\nbeany\nbeard\nbeare\nbears\nbeast\nbeath\nbeats\nbeaty\nbeaus\nbeaut\nbeaux\nbebop\nbecap\nbecke\nbecks\nbedad\nbedel\nbedes\nbedew\nbedim\nbedye\nbeech\nbeedi\nbeefs\nbeefy\nbeeps\nbeers\nbeery\nbeets\nbefit\nbefog\nbegad\nbegan\nbegar\nbegat\nbegem\nbeget\nbegin\nbegob\nbegot\nbegum\nbegun\nbeige\nbeigy\nbeing\nbeins\nbeira\nbeisa\nbekah\nbelah\nbelar\nbelay\nbelch\nbelee\nbelga\nbelie\nbelit\nbelle\nbelli\nbello\nbells\nbelly\nbelon\nbelow\nbelts\nbelve\nbemad\nbemas\nbemix\nbemud\nbench\nbends\nbendy\nbenes\nbenet\nbenga\nbenis\nbenji\nbenne\nbenni\nbenny\nbento\nbents\nbenty\nbepat\nberay\nberes\nberet\nbergs\nberko\nberks\nberme\nberms\nberob\nberry\nberth\nberyl\nbesat\nbesaw\nbesee\nbeses\nbeset\nbesit\nbesom\nbesot\nbesti\nbests\nbetas\nbeted\nbetel\nbetes\nbeths\nbetid\nbeton\nbetta\nbetty\nbevan\nbevel\nbever\nbevor\nbevue\nbevvy\nbewdy\nbewet\nbewig\nbezel\nbezes\nbezil\nbezzy\nbhais\nbhaji\nbhang\nbhats\nbhava\nbhels\nbhoot\nbhuna\nbhuts\nbiach\nbiali\nbialy\nbibbs\nbibes\nbibis\nbible\nbiccy\nbicep\nbices\nbicky\nbiddy\nbided\nbider\nbides\nbidet\nbidis\nbidon\nbidri\nbield\nbiers\nbiffo\nbiffs\nbiffy\nbifid\nbigae\nbiggs\nbiggy\nbigha\nbight\nbigly\nbigos\nbigot\nbihon\nbijou\nbiked\nbiker\nbikes\nbikie\nbikky\nbilal\nbilat\nbilbo\nbilby\nbiled\nbiles\nbilge\nbilgy\nbilks\nbills\nbilly\nbimah\nbimas\nbimbo\nbinal\nbindi\nbinds\nbiner\nbines\nbinge\nbingo\nbings\nbingy\nbinit\nbinks\nbinky\nbints\nbiogs\nbiome\nbions\nbiont\nbiose\nbiota\nbiped\nbipod\nbippy\nbirch\nbirdo\nbirds\nbiris\nbirks\nbirle\nbirls\nbiros\nbirrs\nbirse\nbirsy\nbirth\nbirze\nbirzz\nbises\nbisks\nbisom\nbison\nbitch\nbiter\nbites\nbitey\nbitos\nbitou\nbitsy\nbitte\nbitts\nbitty\nbivia\nbivvy\nbizes\nbizzo\nbizzy\nblabs\nblack\nblade\nblads\nblady\nblaer\nblaes\nblaff\nblags\nblahs\nblain\nblame\nblams\nblanc\nbland\nblank\nblare\nblart\nblase\nblash\nblast\nblate\nblats\nblatt\nblaud\nblawn\nblaws\nblays\nblaze\nbleah\nbleak\nblear\nbleat\nblebs\nblech\nbleed\nbleep\nblees\nblend\nblent\nblert\nbless\nblest\nblets\nbleys\nblimp\nblimy\nblind\nbling\nblini\nblink\nblins\nbliny\nblips\nbliss\nblist\nblite\nblits\nblitz\nblive\nbloat\nblobs\nblock\nblocs\nblogs\nbloke\nblond\nblonx\nblood\nblook\nbloom\nbloop\nblore\nblots\nblown\nblows\nblowy\nblubs\nblude\nbluds\nbludy\nblued\nbluer\nblues\nbluet\nbluey\nbluff\nbluid\nblume\nblunk\nblunt\nblurb\nblurs\nblurt\nblush\nblype\nboabs\nboaks\nboard\nboars\nboart\nboast\nboats\nboaty\nbobac\nbobak\nbobas\nbobby\nbobol\nbobos\nbocca\nbocce\nbocci\nboche\nbocks\nboded\nbodes\nbodge\nbodgy\nbodhi\nbodle\nbodoh\nboeps\nboers\nboeti\nboets\nboeuf\nboffo\nboffs\nbogan\nbogey\nboggy\nbogie\nbogle\nbogue\nbogus\nbohea\nbohos\nboils\nboing\nboink\nboite\nboked\nbokeh\nbokes\nbokos\nbolar\nbolas\nboldo\nbolds\nboles\nbolet\nbolix\nbolks\nbolls\nbolos\nbolts\nbolus\nbomas\nbombe\nbombo\nbombs\nbomoh\nbomor\nbonce\nbonds\nboned\nboner\nbones\nboney\nbongo\nbongs\nbonie\nbonks\nbonne\nbonny\nbonum\nbonus\nbonza\nbonze\nbooai\nbooay\nboobs\nbooby\nboody\nbooed\nboofy\nboogy\nboohs\nbooks\nbooky\nbools\nbooms\nboomy\nboong\nboons\nboord\nboors\nboose\nboost\nbooth\nboots\nbooty\nbooze\nboozy\nboppy\nborak\nboral\nboras\nborax\nborde\nbords\nbored\nboree\nborek\nborel\nborer\nbores\nborgo\nboric\nborks\nborms\nborna\nborne\nboron\nborts\nborty\nbortz\nbosey\nbosie\nbosks\nbosky\nbosom\nboson\nbossa\nbossy\nbosun\nbotas\nbotch\nboteh\nbotel\nbotes\nbotew\nbothy\nbotos\nbotte\nbotts\nbotty\nbouge\nbough\nbouks\nboule\nboult\nbound\nbouns\nbourd\nbourg\nbourn\nbouse\nbousy\nbouts\nboutu\nbovid\nbowat\nbowed\nbowel\nbower\nbowes\nbowet\nbowie\nbowls\nbowne\nbowrs\nbowse\nboxed\nboxen\nboxer\nboxes\nboxla\nboxty\nboyar\nboyau\nboyed\nboyey\nboyfs\nboygs\nboyla\nboyly\nboyos\nboysy\nbozos\nbraai\nbrace\nbrach\nbrack\nbract\nbrads\nbraes\nbrags\nbrahs\nbraid\nbrail\nbrain\nbrake\nbraks\nbraky\nbrame\nbrand\nbrane\nbrank\nbrans\nbrant\nbrash\nbrass\nbrast\nbrats\nbrava\nbrave\nbravi\nbravo\nbrawl\nbrawn\nbraws\nbraxy\nbrays\nbraza\nbraze\nbread\nbreak\nbream\nbrede\nbreds\nbreed\nbreem\nbreer\nbrees\nbreid\nbreis\nbreme\nbrens\nbrent\nbrere\nbrers\nbreve\nbrews\nbreys\nbriar\nbribe\nbrick\nbride\nbrief\nbrier\nbries\nbrigs\nbriki\nbriks\nbrill\nbrims\nbrine\nbring\nbrink\nbrins\nbriny\nbrios\nbrise\nbrisk\nbriss\nbrith\nbrits\nbritt\nbrize\nbroad\nbroch\nbrock\nbrods\nbrogh\nbrogs\nbroil\nbroke\nbrome\nbromo\nbronc\nbrond\nbrood\nbrook\nbrool\nbroom\nbroos\nbrose\nbrosy\nbroth\nbrown\nbrows\nbruck\nbrugh\nbruhs\nbruin\nbruit\nbruja\nbrujo\nbrule\nbrume\nbrung\nbrunt\nbrush\nbrusk\nbrust\nbrute\nbruts\nbruvs\nbuats\nbuaze\nbubal\nbubas\nbubba\nbubbe\nbubby\nbubus\nbuchu\nbucko\nbucks\nbucku\nbudas\nbuddy\nbuded\nbudes\nbudge\nbudis\nbudos\nbuena\nbuffa\nbuffe\nbuffi\nbuffo\nbuffs\nbuffy\nbufos\nbufty\nbugan\nbuggy\nbugle\nbuhls\nbuhrs\nbuiks\nbuild\nbuilt\nbuist\nbukes\nbukos\nbulbs\nbulge\nbulgy\nbulks\nbulky\nbulla\nbulls\nbully\nbulse\nbumbo\nbumfs\nbumph\nbumps\nbumpy\nbunas\nbunce\nbunch\nbunco\nbunde\nbundh\nbunds\nbundt\nbundu\nbundy\nbungs\nbungy\nbunia\nbunje\nbunjy\nbunko\nbunks\nbunns\nbunny\nbunts\nbunty\nbunya\nbuoys\nbuppy\nburan\nburas\nburbs\nburds\nburet\nburfi\nburgh\nburgs\nburin\nburka\nburke\nburks\nburls\nburly\nburns\nburnt\nburoo\nburps\nburqa\nburra\nburro\nburrs\nburry\nbursa\nburse\nburst\nbusby\nbused\nbuses\nbushy\nbusks\nbusky\nbussu\nbusti\nbusts\nbusty\nbutch\nbuteo\nbutes\nbutle\nbutoh\nbutte\nbutts\nbutty\nbutut\nbutyl\nbuxom\nbuyer\nbuyin\nbuzzy\nbwana\nbwazi\nbyded\nbydes\nbyked\nbykes\nbylaw\nbyres\nbyrls\nbyssi\nbytes\nbyway\ncaaed\ncabal\ncabas\ncabby\ncaber\ncabin\ncable\ncabob\ncaboc\ncabre\ncacao\ncacas\ncache\ncacks\ncacky\ncacti\ncaddy\ncadee\ncades\ncadet\ncadge\ncadgy\ncadie\ncadis\ncadre\ncaeca\ncaese\ncafes\ncaffe\ncaffs\ncaged\ncager\ncages\ncagey\ncagot\ncahow\ncaids\ncains\ncaird\ncairn\ncajon\ncajun\ncaked\ncakes\ncakey\ncalfs\ncalid\ncalif\ncalix\ncalks\ncalla\ncalle\ncalls\ncalms\ncalmy\ncalos\ncalpa\ncalps\ncalve\ncalyx\ncaman\ncamas\ncamel\ncameo\ncames\ncamis\ncamos\ncampi\ncampo\ncamps\ncampy\ncamus\ncanal\ncando\ncandy\ncaned\ncaneh\ncaner\ncanes\ncangs\ncanid\ncanna\ncanns\ncanny\ncanoe\ncanon\ncanso\ncanst\ncanti\ncanto\ncants\ncanty\ncapas\ncapax\ncaped\ncaper\ncapes\ncapex\ncaphs\ncapiz\ncaple\ncapon\ncapos\ncapot\ncapri\ncapul\ncaput\ncarap\ncarat\ncarbo\ncarbs\ncarby\ncardi\ncards\ncardy\ncared\ncarer\ncares\ncaret\ncarex\ncargo\ncarks\ncarle\ncarls\ncarne\ncarns\ncarny\ncarob\ncarol\ncarom\ncaron\ncarpe\ncarpi\ncarps\ncarrs\ncarry\ncarse\ncarta\ncarte\ncarts\ncarve\ncarvy\ncasas\ncasco\ncased\ncaser\ncases\ncasks\ncasky\ncaste\ncasts\ncasus\ncatch\ncater\ncates\ncatty\ncauda\ncauks\ncauld\ncaulk\ncauls\ncaums\ncaups\ncauri\ncausa\ncause\ncavas\ncaved\ncavel\ncaver\ncaves\ncavie\ncavil\ncavus\ncawed\ncawks\ncaxon\ncease\nceaze\ncebid\ncecal\ncecum\ncedar\nceded\nceder\ncedes\ncedis\nceiba\nceili\nceils\nceleb\ncella\ncelli\ncello\ncells\ncelly\ncelom\ncelts\ncense\ncento\ncents\ncentu\nceorl\ncepes\ncerci\ncered\nceres\ncerge\nceria\nceric\ncerne\nceroc\nceros\ncerts\ncerty\ncesse\ncesta\ncesti\ncetes\ncetyl\ncezve\nchaap\nchaat\nchace\nchack\nchaco\nchado\nchads\nchafe\nchaff\nchaft\nchain\nchair\nchais\nchalk\nchals\nchamp\nchams\nchana\nchang\nchank\nchant\nchaos\nchape\nchaps\nchapt\nchara\nchard\nchare\nchark\ncharm\ncharr\nchars\nchart\nchary\nchase\nchasm\nchats\nchava\nchave\nchavs\nchawk\nchawl\nchaws\nchaya\nchays\ncheap\ncheat\ncheba\ncheck\nchedi\ncheeb\ncheek\ncheep\ncheer\ncheet\nchefs\ncheka\nchela\nchelp\nchemo\nchems\nchere\nchert\nchess\nchest\ncheth\nchevy\nchews\nchewy\nchiao\nchias\nchiba\nchibs\nchica\nchich\nchick\nchico\nchics\nchide\nchief\nchiel\nchiko\nchiks\nchild\nchile\nchili\nchill\nchimb\nchime\nchimo\nchimp\nchina\nchine\nching\nchink\nchino\nchins\nchips\nchirk\nchirl\nchirm\nchiro\nchirp\nchirr\nchirt\nchiru\nchiti\nchits\nchiva\nchive\nchivs\nchivy\nchizz\nchock\nchoco\nchocs\nchode\nchogs\nchoil\nchoir\nchoke\nchoko\nchoky\nchola\ncholi\ncholo\nchomp\nchons\nchoof\nchook\nchoom\nchoon\nchops\nchord\nchore\nchose\nchoss\nchota\nchott\nchout\nchoux\nchowk\nchows\nchubs\nchuck\nchufa\nchuff\nchugs\nchump\nchums\nchunk\nchurl\nchurn\nchurr\nchuse\nchute\nchuts\nchyle\nchyme\nchynd\ncibol\ncided\ncider\ncides\nciels\ncigar\nciggy\ncilia\ncills\ncimar\ncimex\ncinch\ncinct\ncines\ncinqs\ncions\ncippi\ncirca\ncircs\ncires\ncirls\ncirri\ncisco\ncissy\ncists\ncital\ncited\ncitee\nciter\ncites\ncives\ncivet\ncivic\ncivie\ncivil\ncivvy\nclach\nclack\nclade\nclads\nclaes\nclags\nclaim\nclair\nclame\nclamp\nclams\nclang\nclank\nclans\nclaps\nclapt\nclaro\nclart\nclary\nclash\nclasp\nclass\nclast\nclats\nclaut\nclave\nclavi\nclaws\nclays\nclean\nclear\ncleat\ncleck\ncleek\ncleep\nclefs\ncleft\nclegs\ncleik\nclems\nclepe\nclept\nclerk\ncleve\nclews\nclick\nclied\nclies\ncliff\nclift\nclimb\nclime\ncline\ncling\nclink\nclint\nclipe\nclips\nclipt\nclits\ncloak\ncloam\nclock\nclods\ncloff\nclogs\ncloke\nclomb\nclomp\nclone\nclonk\nclons\ncloop\ncloot\nclops\nclose\nclote\ncloth\nclots\ncloud\nclour\nclous\nclout\nclove\nclown\nclows\ncloye\ncloys\ncloze\nclubs\ncluck\nclued\nclues\ncluey\nclump\nclung\nclunk\nclype\ncnida\ncoach\ncoact\ncoady\ncoala\ncoals\ncoaly\ncoapt\ncoarb\ncoast\ncoate\ncoati\ncoats\ncobbs\ncobby\ncobia\ncoble\ncobot\ncobra\ncobza\ncocas\ncocci\ncocco\ncocks\ncocky\ncocoa\ncocos\ncocus\ncodas\ncodec\ncoded\ncoden\ncoder\ncodes\ncodex\ncodon\ncoeds\ncoffs\ncogie\ncogon\ncogue\ncohab\ncohen\ncohoe\ncohog\ncohos\ncoifs\ncoign\ncoils\ncoins\ncoirs\ncoits\ncoked\ncokes\ncokey\ncolas\ncolby\ncolds\ncoled\ncoles\ncoley\ncolic\ncolin\ncolle\ncolls\ncolly\ncolog\ncolon\ncolor\ncolts\ncolza\ncomae\ncomal\ncomas\ncombe\ncombi\ncombo\ncombs\ncomby\ncomer\ncomes\ncomet\ncomfy\ncomic\ncomix\ncomma\ncomme\ncommo\ncomms\ncommy\ncompo\ncomps\ncompt\ncomte\ncomus\nconch\ncondo\nconed\ncones\nconex\nconey\nconfs\nconga\nconge\ncongo\nconia\nconic\nconin\nconks\nconky\nconne\nconns\nconte\nconto\nconus\nconvo\ncooch\ncooed\ncooee\ncooer\ncooey\ncoofs\ncooks\ncooky\ncools\ncooly\ncoomb\ncooms\ncoomy\ncoons\ncoops\ncoopt\ncoost\ncoots\ncooty\ncooze\ncopal\ncopay\ncoped\ncopen\ncoper\ncopes\ncopha\ncoppy\ncopra\ncopse\ncopsy\ncoqui\ncoral\ncoram\ncorbe\ncorby\ncorda\ncords\ncored\ncorer\ncores\ncorey\ncorgi\ncoria\ncorks\ncorky\ncorms\ncorni\ncorno\ncorns\ncornu\ncorny\ncorps\ncorse\ncorso\ncosec\ncosed\ncoses\ncoset\ncosey\ncosie\ncosta\ncoste\ncosts\ncotan\ncotch\ncoted\ncotes\ncoths\ncotta\ncotts\ncouch\ncoude\ncough\ncould\ncount\ncoupe\ncoups\ncourb\ncourd\ncoure\ncours\ncourt\ncouta\ncouth\ncoved\ncoven\ncover\ncoves\ncovet\ncovey\ncovin\ncowal\ncowan\ncowed\ncower\ncowks\ncowls\ncowps\ncowry\ncoxae\ncoxal\ncoxed\ncoxes\ncoxib\ncoyau\ncoyed\ncoyer\ncoyly\ncoypu\ncozed\ncozen\ncozes\ncozey\ncozie\ncraal\ncrabs\ncrack\ncraft\ncrags\ncraic\ncraig\ncrake\ncrame\ncramp\ncrams\ncrane\ncrank\ncrans\ncrape\ncraps\ncrapy\ncrare\ncrash\ncrass\ncrate\ncrave\ncrawl\ncraws\ncrays\ncraze\ncrazy\ncreak\ncream\ncredo\ncreds\ncreed\ncreek\ncreel\ncreep\ncrees\ncrein\ncrema\ncreme\ncrems\ncrena\ncrepe\ncreps\ncrept\ncrepy\ncress\ncrest\ncrewe\ncrews\ncrias\ncribo\ncribs\ncrick\ncried\ncrier\ncries\ncrime\ncrimp\ncrims\ncrine\ncrink\ncrins\ncrios\ncripe\ncrips\ncrise\ncrisp\ncriss\ncrith\ncrits\ncroak\ncroci\ncrock\ncrocs\ncroft\ncrogs\ncromb\ncrome\ncrone\ncronk\ncrons\ncrony\ncrook\ncrool\ncroon\ncrops\ncrore\ncross\ncrost\ncroup\ncrout\ncrowd\ncrowl\ncrown\ncrows\ncroze\ncruck\ncrude\ncrudo\ncruds\ncrudy\ncruel\ncrues\ncruet\ncruft\ncrumb\ncrump\ncrunk\ncruor\ncrura\ncruse\ncrush\ncrust\ncrusy\ncruve\ncrwth\ncryer\ncryne\ncrypt\nctene\ncubby\ncubeb\ncubed\ncuber\ncubes\ncubic\ncubit\ncucks\ncudda\ncuddy\ncueca\ncuffo\ncuffs\ncuifs\ncuing\ncuish\ncuits\ncukes\nculch\nculet\nculex\nculls\ncully\nculms\nculpa\nculti\ncults\nculty\ncumec\ncumin\ncundy\ncunei\ncunit\ncunny\ncunts\ncupel\ncupid\ncuppa\ncuppy\ncupro\ncurat\ncurbs\ncurch\ncurds\ncurdy\ncured\ncurer\ncures\ncuret\ncurfs\ncuria\ncurie\ncurio\ncurli\ncurls\ncurly\ncurns\ncurny\ncurrs\ncurry\ncurse\ncursi\ncurst\ncurve\ncurvy\ncusec\ncushy\ncusks\ncusps\ncuspy\ncusso\ncusum\ncutch\ncuter\ncutes\ncutey\ncutie\ncutin\ncutis\ncutto\ncutty\ncutup\ncuvee\ncuzes\ncwtch\ncyano\ncyans\ncyber\ncycad\ncycas\ncycle\ncyclo\ncyder\ncylix\ncymae\ncymar\ncymas\ncymes\ncymol\ncynic\ncysts\ncytes\ncyton\nczars\ndaals\ndabba\ndaces\ndacha\ndacks\ndadah\ndadas\ndaddy\ndadis\ndadla\ndados\ndaffs\ndaffy\ndagga\ndaggy\ndagos\ndahis\ndahls\ndaiko\ndaily\ndaine\ndaint\ndairy\ndaisy\ndaker\ndaled\ndalek\ndales\ndalis\ndalle\ndally\ndalts\ndaman\ndamar\ndames\ndamme\ndamna\ndamns\ndamps\ndampy\ndance\ndancy\ndanda\ndandy\ndangs\ndanio\ndanks\ndanny\ndanse\ndants\ndappy\ndaraf\ndarbs\ndarcy\ndared\ndarer\ndares\ndarga\ndargs\ndaric\ndaris\ndarks\ndarky\ndarls\ndarns\ndarre\ndarts\ndarzi\ndashi\ndashy\ndatal\ndated\ndater\ndates\ndatil\ndatos\ndatto\ndatum\ndaube\ndaubs\ndauby\ndauds\ndault\ndaunt\ndaurs\ndauts\ndaven\ndavit\ndawah\ndawds\ndawed\ndawen\ndawgs\ndawks\ndawns\ndawts\ndayal\ndayan\ndaych\ndaynt\ndazed\ndazer\ndazes\ndbags\ndeads\ndeair\ndeals\ndealt\ndeans\ndeare\ndearn\ndears\ndeary\ndeash\ndeath\ndeave\ndeaws\ndeawy\ndebag\ndebar\ndebby\ndebel\ndebes\ndebit\ndebts\ndebud\ndebug\ndebur\ndebus\ndebut\ndebye\ndecad\ndecaf\ndecal\ndecan\ndecay\ndecim\ndecko\ndecks\ndecor\ndecos\ndecoy\ndecry\ndecyl\ndedal\ndeeds\ndeedy\ndeely\ndeems\ndeens\ndeeps\ndeere\ndeers\ndeets\ndeeve\ndeevs\ndefat\ndefer\ndeffo\ndefis\ndefog\ndegas\ndegum\ndegus\ndeice\ndeids\ndeify\ndeign\ndeils\ndeink\ndeism\ndeist\ndeity\ndeked\ndekes\ndekko\ndelay\ndeled\ndeles\ndelfs\ndelft\ndelis\ndella\ndells\ndelly\ndelos\ndelph\ndelta\ndelts\ndelve\ndeman\ndemes\ndemic\ndemit\ndemob\ndemoi\ndemon\ndemos\ndemot\ndempt\ndemur\ndenar\ndenay\ndench\ndenes\ndenet\ndenim\ndenis\ndense\ndente\ndents\ndeoch\ndeoxy\ndepot\ndepth\nderat\nderay\nderby\ndered\nderes\nderig\nderma\nderms\nderns\nderny\nderos\nderpy\nderro\nderry\nderth\ndervs\ndesex\ndeshi\ndesis\ndesks\ndesse\ndetag\ndeter\ndetox\ndeuce\ndevas\ndevel\ndevil\ndevis\ndevon\ndevos\ndevot\ndewan\ndewar\ndewax\ndewed\ndexes\ndexie\ndexys\ndhaba\ndhaks\ndhals\ndhikr\ndhobi\ndhole\ndholl\ndhols\ndhoni\ndhoti\ndhows\ndhuti\ndiact\ndials\ndiana\ndiane\ndiary\ndiazo\ndibbs\ndiced\ndicer\ndices\ndicey\ndicht\ndicks\ndicky\ndicot\ndicta\ndicto\ndicts\ndictu\ndicty\ndiddy\ndidie\ndidis\ndidos\ndidst\ndiebs\ndiels\ndiene\ndiets\ndiffs\ndight\ndigit\ndikas\ndiked\ndiker\ndikes\ndikey\ndildo\ndilli\ndills\ndilly\ndimbo\ndimer\ndimes\ndimly\ndimps\ndinar\ndined\ndiner\ndines\ndinge\ndingo\ndings\ndingy\ndinic\ndinks\ndinky\ndinlo\ndinna\ndinos\ndints\ndioch\ndiode\ndiols\ndiota\ndippy\ndipso\ndiram\ndirer\ndirge\ndirke\ndirks\ndirls\ndirts\ndirty\ndisas\ndisci\ndisco\ndiscs\ndishy\ndisks\ndisme\ndital\nditas\nditch\ndited\ndites\nditsy\nditto\nditts\nditty\nditzy\ndivan\ndivas\ndived\ndiver\ndives\ndivey\ndivis\ndivna\ndivos\ndivot\ndivvy\ndiwan\ndixie\ndixit\ndiyas\ndizen\ndizzy\ndjinn\ndjins\ndoabs\ndoats\ndobby\ndobes\ndobie\ndobla\ndoble\ndobra\ndobro\ndocht\ndocks\ndocos\ndocus\ndoddy\ndodge\ndodgy\ndodos\ndoeks\ndoers\ndoest\ndoeth\ndoffs\ndogal\ndogan\ndoges\ndogey\ndoggo\ndoggy\ndogie\ndogly\ndogma\ndohyo\ndoilt\ndoily\ndoing\ndoits\ndojos\ndolce\ndolci\ndoled\ndolee\ndoles\ndoley\ndolia\ndolie\ndolls\ndolly\ndolma\ndolor\ndolos\ndolts\ndomal\ndomed\ndomes\ndomic\ndonah\ndonas\ndonee\ndoner\ndonga\ndongs\ndonko\ndonna\ndonne\ndonny\ndonor\ndonsy\ndonut\ndoobs\ndooce\ndoody\ndoofs\ndooks\ndooky\ndoole\ndools\ndooly\ndooms\ndoomy\ndoona\ndoorn\ndoors\ndoozy\ndopas\ndoped\ndoper\ndopes\ndopey\ndoppe\ndorad\ndorba\ndorbs\ndoree\ndores\ndoric\ndoris\ndorje\ndorks\ndorky\ndorms\ndormy\ndorps\ndorrs\ndorsa\ndorse\ndorts\ndorty\ndosai\ndosas\ndosed\ndoseh\ndoser\ndoses\ndosha\ndotal\ndoted\ndoter\ndotes\ndotty\ndouar\ndoubt\ndouce\ndoucs\ndough\ndouks\ndoula\ndouma\ndoums\ndoups\ndoura\ndouse\ndouts\ndoved\ndoven\ndover\ndoves\ndovie\ndowak\ndowar\ndowds\ndowdy\ndowed\ndowel\ndower\ndowfs\ndowie\ndowle\ndowls\ndowly\ndowna\ndowns\ndowny\ndowps\ndowry\ndowse\ndowts\ndoxed\ndoxes\ndoxie\ndoyen\ndoyly\ndozed\ndozen\ndozer\ndozes\ndrabs\ndrack\ndraco\ndraff\ndraft\ndrags\ndrail\ndrain\ndrake\ndrama\ndrams\ndrank\ndrant\ndrape\ndraps\ndrapy\ndrats\ndrave\ndrawl\ndrawn\ndraws\ndrays\ndread\ndream\ndrear\ndreck\ndreed\ndreer\ndrees\ndregs\ndreks\ndrent\ndrere\ndress\ndrest\ndreys\ndribs\ndrice\ndried\ndrier\ndries\ndrift\ndrill\ndrily\ndrink\ndrips\ndript\ndrive\ndrock\ndroid\ndroil\ndroit\ndroke\ndrole\ndroll\ndrome\ndrone\ndrony\ndroob\ndroog\ndrook\ndrool\ndroop\ndrops\ndropt\ndross\ndrouk\ndrove\ndrown\ndrows\ndrubs\ndrugs\ndruid\ndrums\ndrunk\ndrupe\ndruse\ndrusy\ndruxy\ndryad\ndryas\ndryer\ndryly\ndsobo\ndsomo\nduads\nduals\nduans\nduars\ndubbo\ndubby\nducal\nducat\nduces\nduchy\nducks\nducky\nducti\nducts\nduddy\nduded\ndudes\nduels\nduets\nduett\nduffs\ndufus\nduing\nduits\ndukas\nduked\ndukes\ndukka\ndukun\ndulce\ndules\ndulia\ndulls\ndully\ndulse\ndumas\ndumbo\ndumbs\ndumka\ndumky\ndummy\ndumps\ndumpy\ndunam\ndunce\ndunch\ndunes\ndungs\ndungy\ndunks\ndunno\ndunny\ndunsh\ndunts\nduomi\nduomo\nduped\nduper\ndupes\nduple\nduply\nduppy\ndural\nduras\ndured\ndures\ndurgy\ndurns\nduroc\nduros\nduroy\ndurra\ndurrs\ndurry\ndurst\ndurum\ndurzi\ndusks\ndusky\ndusts\ndusty\ndutch\nduvet\nduxes\ndwaal\ndwale\ndwalm\ndwams\ndwamy\ndwang\ndwarf\ndwaum\ndweeb\ndwell\ndwelt\ndwile\ndwine\ndyads\ndyers\ndying\ndyked\ndykes\ndykey\ndykon\ndynel\ndynes\ndynos\ndzhos\neager\neagle\neagly\neagre\nealed\neales\neaned\neards\neared\nearls\nearly\nearns\nearnt\nearst\nearth\neased\neasel\neaser\neases\neasle\neasts\neaten\neater\neathe\neatin\neaved\neaver\neaves\nebank\nebbed\nebbet\nebena\nebene\nebike\nebons\nebony\nebook\necads\necard\necash\neched\neches\nechos\necigs\neclat\necole\necrus\nedema\nedged\nedger\nedges\nedict\nedify\nedile\nedits\neduce\neduct\neejit\neensy\neerie\neeven\neever\neevns\neffed\neffer\nefits\negads\negers\negest\neggar\negged\negger\negmas\negret\nehing\neider\neidos\neight\neigne\neiked\neikon\neilds\neiron\neisel\neject\nejido\nekdam\neking\nekkas\nelain\neland\nelans\nelate\nelbow\nelchi\nelder\neldin\nelect\neleet\nelegy\nelemi\nelfed\nelfin\neliad\nelide\nelint\nelite\nelmen\neloge\nelogy\neloin\nelope\nelops\nelpee\nelsin\nelude\nelute\nelvan\nelven\nelver\nelves\nemacs\nemail\nembar\nembay\nembed\nember\nembog\nembow\nembox\nembus\nemcee\nemeer\nemend\nemerg\nemery\nemeus\nemics\nemirs\nemits\nemmas\nemmer\nemmet\nemmew\nemmys\nemoji\nemong\nemote\nemove\nempts\nempty\nemule\nemure\nemyde\nemyds\nenact\nenarm\nenate\nended\nender\nendew\nendow\nendue\nenema\nenemy\nenews\nenfix\neniac\nenjoy\nenlit\nenmew\nennog\nennui\nenoki\nenols\nenorm\nenows\nenrol\nensew\nensky\nensue\nenter\nentia\nentre\nentry\nenure\nenurn\nenvoi\nenvoy\nenzym\neolid\neorls\neosin\nepact\nepees\nepena\nepene\nephah\nephas\nephod\nephor\nepics\nepoch\nepode\nepopt\nepoxy\neppie\nepris\nequal\neques\nequid\nequip\nerase\nerbia\nerect\nerevs\nergon\nergos\nergot\nerhus\nerica\nerick\nerics\nering\nerned\nernes\nerode\nerose\nerred\nerror\nerses\neruct\nerugo\nerupt\neruvs\nerven\nervil\nescar\nescot\nesile\neskar\nesker\nesnes\nesrog\nessay\nesses\nester\nestoc\nestop\nestro\netage\netape\netats\netens\nethal\nether\nethic\nethne\nethos\nethyl\netics\netnas\netrog\nettin\nettle\netude\netuis\netwee\netyma\neughs\neuked\neupad\neuros\neusol\nevade\nevegs\nevens\nevent\nevert\nevery\nevets\nevhoe\nevict\nevils\nevite\nevohe\nevoke\newers\newest\newhow\newked\nexact\nexalt\nexams\nexcel\nexeat\nexecs\nexeem\nexeme\nexert\nexfil\nexier\nexies\nexile\nexine\nexing\nexist\nexite\nexits\nexode\nexome\nexons\nexpat\nexpel\nexpos\nextol\nextra\nexude\nexuls\nexult\nexurb\neyass\neyers\neying\neyots\neyras\neyres\neyrie\neyrir\nezine\nfabbo\nfabby\nfable\nfaced\nfacer\nfaces\nfacet\nfacey\nfacia\nfacie\nfacta\nfacto\nfacts\nfacty\nfaddy\nfaded\nfader\nfades\nfadge\nfados\nfaena\nfaery\nfaffs\nfaffy\nfaggy\nfagin\nfagot\nfaiks\nfails\nfaine\nfains\nfaint\nfaire\nfairs\nfairy\nfaith\nfaked\nfaker\nfakes\nfakey\nfakie\nfakir\nfalaj\nfales\nfalls\nfalse\nfalsy\nfamed\nfames\nfanal\nfancy\nfands\nfanes\nfanga\nfango\nfangs\nfanks\nfanny\nfanon\nfanos\nfanum\nfaqir\nfarad\nfarce\nfarci\nfarcy\nfards\nfared\nfarer\nfares\nfarle\nfarls\nfarms\nfaros\nfarro\nfarse\nfarts\nfasci\nfasti\nfasts\nfatal\nfated\nfates\nfatly\nfatso\nfatty\nfatwa\nfauch\nfaugh\nfauld\nfault\nfauna\nfauns\nfaurd\nfaute\nfauts\nfauve\nfavas\nfavel\nfaver\nfaves\nfavor\nfavus\nfawns\nfawny\nfaxed\nfaxes\nfayed\nfayer\nfayne\nfayre\nfazed\nfazes\nfeals\nfeard\nfeare\nfears\nfeart\nfease\nfeast\nfeats\nfeaze\nfecal\nfeces\nfecht\nfecit\nfecks\nfedai\nfedex\nfeebs\nfeeds\nfeels\nfeely\nfeens\nfeers\nfeese\nfeeze\nfehme\nfeign\nfeint\nfeist\nfelch\nfelid\nfelix\nfella\nfells\nfelly\nfelon\nfelts\nfelty\nfemal\nfemes\nfemic\nfemme\nfemmy\nfemur\nfence\nfends\nfendy\nfenis\nfenks\nfenny\nfents\nfeods\nfeoff\nferal\nferer\nferes\nferia\nferly\nfermi\nferms\nferns\nferny\nferox\nferry\nfesse\nfesta\nfests\nfesty\nfetal\nfetas\nfetch\nfeted\nfetes\nfetid\nfetor\nfetta\nfetts\nfetus\nfetwa\nfeuar\nfeuds\nfeued\nfever\nfewer\nfeyed\nfeyer\nfeyly\nfezes\nfezzy\nfiars\nfiats\nfiber\nfibre\nfibro\nfices\nfiche\nfichu\nficin\nficos\nficta\nficus\nfides\nfidge\nfidos\nfidus\nfiefs\nfield\nfiend\nfient\nfiere\nfieri\nfiers\nfiery\nfiest\nfifed\nfifer\nfifes\nfifis\nfifth\nfifty\nfiggy\nfight\nfigos\nfiked\nfikes\nfilar\nfilch\nfiled\nfiler\nfiles\nfilet\nfilii\nfilks\nfille\nfillo\nfills\nfilly\nfilmi\nfilms\nfilmy\nfilon\nfilos\nfilth\nfilum\nfinal\nfinca\nfinch\nfinds\nfined\nfiner\nfines\nfinis\nfinks\nfinny\nfinos\nfiord\nfiqhs\nfique\nfired\nfirer\nfires\nfirie\nfirks\nfirma\nfirms\nfirni\nfirns\nfirry\nfirst\nfirth\nfiscs\nfisho\nfishy\nfisks\nfists\nfisty\nfitch\nfitly\nfitna\nfitte\nfitts\nfiver\nfives\nfixed\nfixer\nfixes\nfixie\nfixit\nfizzy\nfjeld\nfjord\nflabs\nflack\nflaff\nflags\nflail\nflair\nflake\nflaks\nflaky\nflame\nflamm\nflams\nflamy\nflane\nflank\nflans\nflaps\nflare\nflary\nflash\nflask\nflats\nflava\nflawn\nflaws\nflawy\nflaxy\nflays\nfleam\nfleas\nfleck\nfleek\nfleer\nflees\nfleet\nflegs\nfleme\nflesh\nfleur\nflews\nflexi\nflexo\nfleys\nflick\nflics\nflied\nflier\nflies\nflimp\nflims\nfling\nflint\nflips\nflirs\nflirt\nflisk\nflite\nflits\nflitt\nfloat\nflobs\nflock\nflocs\nfloes\nflogs\nflong\nflood\nfloor\nflops\nflora\nflore\nflors\nflory\nflosh\nfloss\nflota\nflote\nflour\nflout\nflown\nflows\nflowy\nflubs\nflued\nflues\nfluey\nfluff\nfluid\nfluke\nfluky\nflume\nflump\nflung\nflunk\nfluor\nflurr\nflush\nflute\nfluty\nfluyt\nflyby\nflyer\nflyin\nflype\nflyte\nfnarr\nfoals\nfoams\nfoamy\nfocal\nfocus\nfoehn\nfogey\nfoggy\nfogie\nfogle\nfogos\nfogou\nfohns\nfoids\nfoils\nfoins\nfoist\nfolds\nfoley\nfolia\nfolic\nfolie\nfolio\nfolks\nfolky\nfolly\nfomes\nfonda\nfonds\nfondu\nfones\nfonio\nfonly\nfonts\nfoods\nfoody\nfools\nfoots\nfooty\nforam\nforay\nforbs\nforby\nforce\nfordo\nfords\nforel\nfores\nforex\nforge\nforgo\nforks\nforky\nforma\nforme\nforms\nforte\nforth\nforts\nforty\nforum\nforza\nforze\nfossa\nfosse\nfouat\nfouds\nfouer\nfouet\nfoule\nfouls\nfound\nfount\nfours\nfouth\nfovea\nfowls\nfowth\nfoxed\nfoxes\nfoxie\nfoyer\nfoyle\nfoyne\nfrabs\nfrack\nfract\nfrags\nfrail\nfraim\nfrais\nframe\nfranc\nfrank\nfrape\nfraps\nfrass\nfrate\nfrati\nfrats\nfraud\nfraus\nfrays\nfreak\nfreed\nfreer\nfrees\nfreet\nfreit\nfremd\nfrena\nfreon\nfrere\nfresh\nfrets\nfriar\nfribs\nfried\nfrier\nfries\nfrigs\nfrill\nfrise\nfrisk\nfrist\nfrita\nfrite\nfrith\nfrits\nfritt\nfritz\nfrize\nfrizz\nfrock\nfroes\nfrogs\nfromm\nfrond\nfrons\nfront\nfroom\nfrore\nfrorn\nfrory\nfrosh\nfrost\nfroth\nfrown\nfrows\nfrowy\nfroyo\nfroze\nfrugs\nfruit\nfrump\nfrush\nfrust\nfryer\nfubar\nfubby\nfubsy\nfucks\nfucus\nfuddy\nfudge\nfudgy\nfuels\nfuero\nfuffs\nfuffy\nfugal\nfuggy\nfugie\nfugio\nfugis\nfugle\nfugly\nfugue\nfugus\nfujis\nfulla\nfulls\nfully\nfulth\nfulwa\nfumed\nfumer\nfumes\nfumet\nfunda\nfundi\nfundo\nfunds\nfundy\nfungi\nfungo\nfungs\nfunic\nfunis\nfunks\nfunky\nfunny\nfunsy\nfunts\nfural\nfuran\nfurca\nfurls\nfurol\nfuror\nfuros\nfurrs\nfurry\nfurth\nfurze\nfurzy\nfused\nfusee\nfusel\nfuses\nfusil\nfusks\nfussy\nfusts\nfusty\nfuton\nfuzed\nfuzee\nfuzes\nfuzil\nfuzzy\nfyces\nfyked\nfykes\nfyles\nfyrds\nfytte\ngabba\ngabby\ngable\ngaddi\ngades\ngadge\ngadgy\ngadid\ngadis\ngadje\ngadjo\ngadso\ngaffe\ngaffs\ngaged\ngager\ngages\ngaids\ngaily\ngains\ngairs\ngaita\ngaits\ngaitt\ngajos\ngalah\ngalas\ngalax\ngalea\ngaled\ngales\ngalia\ngalis\ngalls\ngally\ngalop\ngalut\ngalvo\ngamas\ngamay\ngamba\ngambe\ngambo\ngambs\ngamed\ngamer\ngames\ngamey\ngamic\ngamin\ngamma\ngamme\ngammy\ngamps\ngamut\nganch\ngandy\nganef\nganev\ngangs\nganja\nganks\nganof\ngants\ngaols\ngaped\ngaper\ngapes\ngapos\ngappy\ngaram\ngarba\ngarbe\ngarbo\ngarbs\ngarda\ngarde\ngares\ngaris\ngarms\ngarni\ngarre\ngarri\ngarth\ngarum\ngases\ngashy\ngasps\ngaspy\ngassy\ngasts\ngatch\ngated\ngater\ngates\ngaths\ngator\ngauch\ngaucy\ngauds\ngaudy\ngauge\ngauje\ngault\ngaums\ngaumy\ngaunt\ngaups\ngaurs\ngauss\ngauze\ngauzy\ngavel\ngavot\ngawcy\ngawds\ngawks\ngawky\ngawps\ngawsy\ngayal\ngayer\ngayly\ngazal\ngazar\ngazed\ngazer\ngazes\ngazon\ngazoo\ngeals\ngeans\ngeare\ngears\ngeasa\ngeats\ngebur\ngecko\ngecks\ngeeks\ngeeky\ngeeps\ngeese\ngeest\ngeist\ngeits\ngelds\ngelee\ngelid\ngelly\ngelts\ngemel\ngemma\ngemmy\ngemot\ngenae\ngenal\ngenas\ngenes\ngenet\ngenic\ngenie\ngenii\ngenin\ngenio\ngenip\ngenny\ngenoa\ngenom\ngenre\ngenro\ngents\ngenty\ngenua\ngenus\ngeode\ngeoid\ngerah\ngerbe\ngeres\ngerle\ngerms\ngermy\ngerne\ngesse\ngesso\ngeste\ngests\ngetas\ngetup\ngeums\ngeyan\ngeyer\nghast\nghats\nghaut\nghazi\nghees\nghest\nghost\nghoul\nghusl\nghyll\ngiant\ngibed\ngibel\ngiber\ngibes\ngibli\ngibus\ngiddy\ngifts\ngigas\ngighe\ngigot\ngigue\ngilas\ngilds\ngilet\ngilia\ngills\ngilly\ngilpy\ngilts\ngimel\ngimme\ngimps\ngimpy\nginch\nginga\nginge\ngings\nginks\nginny\nginzo\ngipon\ngippo\ngippy\ngipsy\ngirds\ngirlf\ngirls\ngirly\ngirns\ngiron\ngiros\ngirrs\ngirsh\ngirth\ngirts\ngismo\ngisms\ngists\ngitch\ngites\ngiust\ngived\ngiven\ngiver\ngives\ngizmo\nglace\nglade\nglads\nglady\nglaik\nglair\nglamp\nglams\ngland\nglans\nglare\nglary\nglass\nglatt\nglaum\nglaur\nglaze\nglazy\ngleam\nglean\ngleba\nglebe\ngleby\nglede\ngleds\ngleed\ngleek\nglees\ngleet\ngleis\nglens\nglent\ngleys\nglial\nglias\nglibs\nglide\ngliff\nglift\nglike\nglime\nglims\nglint\nglisk\nglits\nglitz\ngloam\ngloat\nglobe\nglobi\nglobs\ngloby\nglode\nglogg\ngloms\ngloom\ngloop\nglops\nglory\ngloss\nglost\nglout\nglove\nglows\nglowy\ngloze\nglued\ngluer\nglues\ngluey\nglugg\nglugs\nglume\nglums\ngluon\nglute\ngluts\nglyph\ngnapi\ngnarl\ngnarr\ngnars\ngnash\ngnats\ngnawn\ngnaws\ngnome\ngnows\ngoads\ngoafs\ngoaft\ngoals\ngoary\ngoats\ngoaty\ngoave\ngoban\ngobar\ngobbe\ngobbi\ngobbo\ngobby\ngobis\ngobos\ngodet\ngodly\ngodso\ngoels\ngoers\ngoest\ngoeth\ngoety\ngofer\ngoffs\ngogga\ngogos\ngoier\ngoing\ngojis\ngokes\ngolds\ngoldy\ngolem\ngoles\ngolfs\ngolly\ngolpe\ngolps\ngombo\ngomer\ngompa\ngonad\ngonch\ngonef\ngoner\ngongs\ngonia\ngonif\ngonks\ngonna\ngonof\ngonys\ngonzo\ngooby\ngoodo\ngoods\ngoody\ngooey\ngoofs\ngoofy\ngoogs\ngooks\ngooky\ngoold\ngools\ngooly\ngoomy\ngoons\ngoony\ngoops\ngoopy\ngoors\ngoory\ngoose\ngoosy\ngopak\ngopik\ngoral\ngoras\ngoray\ngorbs\ngordo\ngored\ngores\ngorge\ngoris\ngorms\ngormy\ngorps\ngorse\ngorsy\ngosht\ngosse\ngotch\ngoths\ngothy\ngotta\ngouch\ngouge\ngouks\ngoura\ngourd\ngouts\ngouty\ngoved\ngoves\ngowan\ngowds\ngowfs\ngowks\ngowls\ngowns\ngoxes\ngoyim\ngoyle\ngraal\ngrabs\ngrace\ngrade\ngrads\ngraff\ngraft\ngrail\ngrain\ngraip\ngrama\ngrame\ngramp\ngrams\ngrana\ngrand\ngrano\ngrans\ngrant\ngrape\ngraph\ngrapy\ngrasp\ngrass\ngrata\ngrate\ngrats\ngrave\ngravs\ngravy\ngrays\ngraze\ngreat\ngrebe\ngrebo\ngrece\ngreed\ngreek\ngreen\ngrees\ngreet\ngrege\ngrego\ngrein\ngrens\ngreps\ngrese\ngreve\ngrews\ngreys\ngrice\ngride\ngrids\ngrief\ngriff\ngrift\ngrigs\ngrike\ngrill\ngrime\ngrimy\ngrind\ngrins\ngriot\ngripe\ngrips\ngript\ngripy\ngrise\ngrist\ngrisy\ngrith\ngrits\ngrize\ngroan\ngroat\ngrody\ngrogs\ngroin\ngroks\ngroma\ngroms\ngrone\ngroof\ngroom\ngrope\ngross\ngrosz\ngrots\ngrouf\ngroup\ngrout\ngrove\ngrovy\ngrowl\ngrown\ngrows\ngrrls\ngrrrl\ngrubs\ngrued\ngruel\ngrues\ngrufe\ngruff\ngrume\ngrump\ngrund\ngrunt\ngryce\ngryde\ngryke\ngrype\ngrypt\nguaco\nguana\nguano\nguans\nguard\nguars\nguava\ngubba\ngucks\ngucky\ngudes\nguess\nguest\nguffs\ngugas\nguggl\nguide\nguido\nguids\nguild\nguile\nguilt\nguimp\nguiro\nguise\ngulab\ngulag\ngular\ngulas\ngulch\ngules\ngulet\ngulfs\ngulfy\ngulls\ngully\ngulph\ngulps\ngulpy\ngumbo\ngumma\ngummi\ngummy\ngumps\ngunas\ngundi\ngundy\ngunge\ngungy\ngunks\ngunky\ngunny\nguppy\nguqin\ngurdy\ngurge\ngurks\ngurls\ngurly\ngurns\ngurry\ngursh\ngurus\ngushy\ngusla\ngusle\ngusli\ngussy\ngusto\ngusts\ngusty\ngutsy\ngutta\ngutty\nguyed\nguyle\nguyot\nguyse\ngwine\ngyals\ngyans\ngybed\ngybes\ngyeld\ngymps\ngynae\ngynie\ngynny\ngynos\ngyoza\ngypes\ngypos\ngyppo\ngyppy\ngypsy\ngyral\ngyred\ngyres\ngyron\ngyros\ngyrus\ngytes\ngyved\ngyver\ngyves\nhaafs\nhaars\nhaats\nhabit\nhable\nhabus\nhacek\nhacks\nhacky\nhadal\nhaded\nhades\nhadji\nhadst\nhaems\nhaere\nhaets\nhaffs\nhafiz\nhafta\nhafts\nhaggs\nhaham\nhahas\nhaick\nhaika\nhaiks\nhaiku\nhails\nhaily\nhains\nhaint\nhairs\nhairy\nhaith\nhajes\nhajis\nhajji\nhakam\nhakas\nhakea\nhakes\nhakim\nhakus\nhalal\nhaldi\nhaled\nhaler\nhales\nhalfa\nhalfs\nhalid\nhallo\nhalls\nhalma\nhalms\nhalon\nhalos\nhalse\nhalsh\nhalts\nhalva\nhalve\nhalwa\nhamal\nhamba\nhamed\nhamel\nhames\nhammy\nhamza\nhanap\nhance\nhanch\nhandi\nhands\nhandy\nhangi\nhangs\nhanks\nhanky\nhansa\nhanse\nhants\nhaole\nhaoma\nhapas\nhapax\nhaply\nhappi\nhappy\nhapus\nharam\nhards\nhardy\nhared\nharem\nhares\nharim\nharks\nharls\nharms\nharns\nharos\nharps\nharpy\nharry\nharsh\nharts\nhashy\nhasks\nhasps\nhasta\nhaste\nhasty\nhatch\nhated\nhater\nhates\nhatha\nhathi\nhatty\nhauds\nhaufs\nhaugh\nhaugo\nhauld\nhaulm\nhauls\nhault\nhauns\nhaunt\nhause\nhaute\nhavan\nhavel\nhaven\nhaver\nhaves\nhavoc\nhawed\nhawks\nhawms\nhawse\nhayed\nhayer\nhayey\nhayle\nhazan\nhazed\nhazel\nhazer\nhazes\nhazle\nheads\nheady\nheald\nheals\nheame\nheaps\nheapy\nheard\nheare\nhears\nheart\nheast\nheath\nheats\nheaty\nheave\nheavy\nheben\nhebes\nhecht\nhecks\nheder\nhedge\nhedgy\nheeds\nheedy\nheels\nheeze\nhefte\nhefts\nhefty\nheiau\nheids\nheigh\nheils\nheirs\nheist\nhejab\nhejra\nheled\nheles\nhelio\nhelix\nhella\nhello\nhells\nhelly\nhelms\nhelos\nhelot\nhelps\nhelve\nhemal\nhemes\nhemic\nhemin\nhemps\nhempy\nhence\nhench\nhends\nhenge\nhenna\nhenny\nhenry\nhents\nhepar\nherbs\nherby\nherds\nheres\nherls\nherma\nherms\nherns\nheron\nheros\nherps\nherry\nherse\nhertz\nherye\nhesps\nhests\nhetes\nheths\nheuch\nheugh\nhevea\nhevel\nhewed\nhewer\nhewgh\nhexad\nhexed\nhexer\nhexes\nhexyl\nheyed\nhiant\nhibas\nhicks\nhided\nhider\nhides\nhiems\nhifis\nhighs\nhight\nhijab\nhijra\nhiked\nhiker\nhikes\nhikoi\nhilar\nhilch\nhillo\nhills\nhilly\nhilsa\nhilts\nhilum\nhilus\nhimbo\nhinau\nhinds\nhinge\nhings\nhinky\nhinny\nhints\nhiois\nhiped\nhiper\nhipes\nhiply\nhippo\nhippy\nhired\nhiree\nhirer\nhires\nhissy\nhists\nhitch\nhithe\nhived\nhiver\nhives\nhizen\nhoach\nhoaed\nhoagy\nhoard\nhoars\nhoary\nhoast\nhobby\nhobos\nhocks\nhocus\nhodad\nhodja\nhoers\nhogan\nhogen\nhoggs\nhoghs\nhogoh\nhogos\nhohed\nhoick\nhoied\nhoiks\nhoing\nhoise\nhoist\nhokas\nhoked\nhokes\nhokey\nhokis\nhokku\nhokum\nholds\nholed\nholes\nholey\nholks\nholla\nhollo\nholly\nholme\nholms\nholon\nholos\nholts\nhomas\nhomed\nhomer\nhomes\nhomey\nhomie\nhomme\nhomos\nhonan\nhonda\nhonds\nhoned\nhoner\nhones\nhoney\nhongi\nhongs\nhonks\nhonky\nhonor\nhooch\nhoods\nhoody\nhooey\nhoofs\nhoogo\nhooha\nhooka\nhooks\nhooky\nhooly\nhoons\nhoops\nhoord\nhoors\nhoosh\nhoots\nhooty\nhoove\nhopak\nhoped\nhoper\nhopes\nhoppy\nhorah\nhoral\nhoras\nhorde\nhoris\nhorks\nhorme\nhorns\nhorny\nhorse\nhorst\nhorsy\nhosed\nhosel\nhosen\nhoser\nhoses\nhosey\nhosta\nhosts\nhotch\nhotel\nhoten\nhotis\nhotly\nhotte\nhotty\nhouff\nhoufs\nhough\nhound\nhouri\nhours\nhouse\nhouts\nhovea\nhoved\nhovel\nhoven\nhover\nhoves\nhoway\nhowbe\nhowdy\nhowes\nhowff\nhowfs\nhowks\nhowls\nhowre\nhowso\nhowto\nhoxed\nhoxes\nhoyas\nhoyed\nhoyle\nhubba\nhubby\nhucks\nhudna\nhudud\nhuers\nhuffs\nhuffy\nhuger\nhuggy\nhuhus\nhuias\nhuies\nhukou\nhulas\nhules\nhulks\nhulky\nhullo\nhulls\nhully\nhuman\nhumas\nhumfs\nhumic\nhumid\nhumor\nhumph\nhumps\nhumpy\nhumus\nhunch\nhundo\nhunks\nhunky\nhunts\nhurds\nhurls\nhurly\nhurra\nhurry\nhurst\nhurts\nhurty\nhushy\nhusks\nhusky\nhusos\nhussy\nhutch\nhutia\nhuzza\nhuzzy\nhwyls\nhydel\nhydra\nhydro\nhyena\nhyens\nhygge\nhying\nhykes\nhylas\nhyleg\nhyles\nhylic\nhymen\nhymns\nhynde\nhyoid\nhyped\nhyper\nhypes\nhypha\nhyphy\nhypos\nhyrax\nhyson\nhythe\niambi\niambs\nibrik\nicers\niched\niches\nichor\nicier\nicily\nicing\nicker\nickle\nicons\nictal\nictic\nictus\nidant\niddah\niddat\niddut\nideal\nideas\nidees\nident\nidiom\nidiot\nidled\nidler\nidles\nidlis\nidola\nidols\nidyll\nidyls\niftar\nigapo\nigged\nigloo\niglus\nignis\nihram\niiwis\nikans\nikats\nikons\nileac\nileal\nileum\nileus\niliac\niliad\nilial\nilium\niller\nillth\nimage\nimago\nimagy\nimams\nimari\nimaum\nimbar\nimbed\nimbos\nimbue\nimide\nimido\nimids\nimine\nimino\nimlis\nimmew\nimmit\nimmix\nimped\nimpel\nimpis\nimply\nimpot\nimpro\nimshi\nimshy\ninane\ninapt\ninarm\ninbox\ninbye\nincas\nincel\nincle\nincog\nincur\nincus\nincut\nindew\nindex\nindia\nindie\nindol\nindow\nindri\nindue\ninept\ninerm\ninert\ninfer\ninfix\ninfos\ninfra\ningan\ningle\ningot\ninion\ninked\ninker\ninkle\ninlay\ninlet\ninned\ninner\ninnie\ninnit\ninorb\ninput\ninros\ninrun\ninsee\ninset\ninspo\nintel\ninter\nintil\nintis\nintra\nintro\ninula\ninure\ninurn\ninust\ninvar\ninver\ninwit\niodic\niodid\niodin\nionic\nioras\niotas\nippon\nirade\nirate\nirids\niring\nirked\niroko\nirone\nirons\nirony\nisbas\nishes\nisled\nisles\nislet\nisnae\nissei\nissue\nistle\nitchy\nitems\nither\nivied\nivies\nivory\nixias\nixnay\nixora\nixtle\nizard\nizars\nizzat\njaaps\njabot\njacal\njacet\njacks\njacky\njaded\njades\njafas\njaffa\njagas\njager\njaggs\njaggy\njagir\njagra\njails\njaker\njakes\njakey\njakie\njalap\njaleo\njalop\njambe\njambo\njambs\njambu\njames\njammy\njamon\njamun\njanes\njanky\njanns\njanny\njanty\njapan\njaped\njaper\njapes\njarks\njarls\njarps\njarta\njarul\njasey\njaspe\njasps\njatha\njatis\njatos\njauks\njaune\njaunt\njaups\njavas\njavel\njawan\njawed\njawns\njaxie\njazzy\njeans\njeats\njebel\njedis\njeels\njeely\njeeps\njeera\njeers\njeeze\njefes\njeffs\njehad\njehus\njelab\njello\njells\njelly\njembe\njemmy\njenny\njeons\njerid\njerks\njerky\njerry\njesse\njessy\njests\njesus\njetee\njetes\njeton\njetty\njeune\njewed\njewel\njewie\njhala\njheel\njhils\njiaos\njibba\njibbs\njibed\njiber\njibes\njiffs\njiffy\njiggy\njigot\njihad\njills\njilts\njimmy\njimpy\njingo\njings\njinks\njinne\njinni\njinns\njirds\njirga\njirre\njisms\njitis\njitty\njived\njiver\njives\njivey\njnana\njobed\njobes\njocko\njocks\njocky\njocos\njodel\njoeys\njohns\njoins\njoint\njoist\njoked\njoker\njokes\njokey\njokol\njoled\njoles\njolie\njollo\njolls\njolly\njolts\njolty\njomon\njomos\njones\njongs\njonty\njooks\njoram\njorts\njorum\njotas\njotty\njotun\njoual\njougs\njouks\njoule\njours\njoust\njowar\njowed\njowls\njowly\njoyed\njubas\njubes\njucos\njudas\njudge\njudgy\njudos\njugal\njugum\njuice\njuicy\njujus\njuked\njukes\njukus\njulep\njulia\njumar\njumbo\njumby\njumps\njumpy\njunco\njunks\njunky\njunta\njunto\njupes\njupon\njural\njurat\njurel\njures\njuris\njuror\njuste\njusts\njutes\njutty\njuves\njuvie\nkaama\nkabab\nkabar\nkabob\nkacha\nkacks\nkadai\nkades\nkadis\nkafir\nkagos\nkagus\nkahal\nkaiak\nkaids\nkaies\nkaifs\nkaika\nkaiks\nkails\nkaims\nkaing\nkains\nkajal\nkakas\nkakis\nkalam\nkalas\nkales\nkalif\nkalis\nkalpa\nkalua\nkamas\nkames\nkamik\nkamis\nkamme\nkanae\nkanal\nkanas\nkanat\nkandy\nkaneh\nkanes\nkanga\nkangs\nkanji\nkants\nkanzu\nkaons\nkapai\nkapas\nkapha\nkaphs\nkapok\nkapow\nkappa\nkapur\nkapus\nkaput\nkarai\nkaras\nkarat\nkaree\nkarez\nkarks\nkarma\nkarns\nkaroo\nkaros\nkarri\nkarst\nkarsy\nkarts\nkarzy\nkasha\nkasme\nkatal\nkatas\nkatis\nkatti\nkaugh\nkauri\nkauru\nkaury\nkaval\nkavas\nkawas\nkawau\nkawed\nkayak\nkayle\nkayos\nkazis\nkazoo\nkbars\nkcals\nkeaki\nkebab\nkebar\nkebob\nkecks\nkedge\nkedgy\nkeech\nkeefs\nkeeks\nkeels\nkeema\nkeeno\nkeens\nkeeps\nkeets\nkeeve\nkefir\nkehua\nkeirs\nkelep\nkelim\nkells\nkelly\nkelps\nkelpy\nkelts\nkelty\nkembo\nkembs\nkemps\nkempt\nkempy\nkenaf\nkench\nkendo\nkenos\nkente\nkents\nkepis\nkerbs\nkerel\nkerfs\nkerky\nkerma\nkerne\nkerns\nkeros\nkerry\nkerve\nkesar\nkests\nketas\nketch\nketes\nketol\nkevel\nkevil\nkexes\nkeyed\nkeyer\nkhadi\nkhads\nkhafs\nkhaki\nkhana\nkhans\nkhaph\nkhats\nkhaya\nkhazi\nkheda\nkheer\nkheth\nkhets\nkhirs\nkhoja\nkhors\nkhoum\nkhuds\nkhula\nkhyal\nkiaat\nkiack\nkiaki\nkiang\nkiasu\nkibbe\nkibbi\nkibei\nkibes\nkibla\nkicks\nkicky\nkiddo\nkiddy\nkidel\nkideo\nkidge\nkiefs\nkiers\nkieve\nkievs\nkight\nkikay\nkikes\nkikoi\nkiley\nkilig\nkilim\nkills\nkilns\nkilos\nkilps\nkilts\nkilty\nkimbo\nkimet\nkinas\nkinda\nkinds\nkindy\nkines\nkings\nkingy\nkinin\nkinks\nkinky\nkinos\nkiore\nkiosk\nkipah\nkipas\nkipes\nkippa\nkipps\nkipsy\nkirby\nkirks\nkirns\nkirri\nkisan\nkissy\nkists\nkitab\nkited\nkiter\nkites\nkithe\nkiths\nkitke\nkitty\nkitul\nkivas\nkiwis\nklang\nklaps\nklett\nklick\nklieg\nkliks\nklong\nkloof\nkluge\nklutz\nknack\nknags\nknaps\nknarl\nknars\nknaur\nknave\nknawe\nknead\nkneed\nkneel\nknees\nknell\nknelt\nknick\nknife\nknish\nknits\nknive\nknobs\nknock\nknoll\nknoop\nknops\nknosp\nknots\nknoud\nknout\nknowd\nknowe\nknown\nknows\nknubs\nknule\nknurl\nknurr\nknurs\nknuts\nkoala\nkoans\nkoaps\nkoban\nkobos\nkoels\nkoffs\nkofta\nkogal\nkohas\nkohen\nkohls\nkoine\nkoiwi\nkojis\nkokam\nkokas\nkoker\nkokra\nkokum\nkolas\nkolos\nkombi\nkombu\nkonbu\nkondo\nkonks\nkooks\nkooky\nkoori\nkopek\nkophs\nkopje\nkoppa\nkorai\nkoran\nkoras\nkorat\nkores\nkoris\nkorma\nkoros\nkorun\nkorus\nkoses\nkotch\nkotos\nkotow\nkoura\nkraal\nkrabs\nkraft\nkrais\nkrait\nkrang\nkrans\nkranz\nkraut\nkrays\nkreef\nkreen\nkreep\nkreng\nkrewe\nkrill\nkriol\nkrona\nkrone\nkroon\nkrubi\nkrump\nkrunk\nksars\nkubie\nkudos\nkudus\nkudzu\nkufis\nkugel\nkuias\nkukri\nkukus\nkulak\nkulan\nkulas\nkulfi\nkumis\nkumys\nkunas\nkunds\nkuris\nkurre\nkurta\nkurus\nkusso\nkusti\nkutai\nkutas\nkutch\nkutis\nkutus\nkuyas\nkuzus\nkvass\nkvell\nkwaai\nkwela\nkwink\nkwirl\nkyack\nkyaks\nkyang\nkyars\nkyats\nkybos\nkydst\nkyles\nkylie\nkylin\nkylix\nkyloe\nkynde\nkynds\nkypes\nkyrie\nkytes\nkythe\nkyudo\nlaarf\nlaari\nlabda\nlabel\nlabia\nlabis\nlabne\nlabor\nlabra\nlaccy\nlaced\nlacer\nlaces\nlacet\nlacey\nlacis\nlacka\nlacks\nlacky\nladdu\nladdy\nladed\nladee\nladen\nlader\nlades\nladle\nladoo\nlaers\nlaevo\nlagan\nlagar\nlager\nlaggy\nlahal\nlahar\nlaich\nlaics\nlaide\nlaids\nlaigh\nlaika\nlaiks\nlaird\nlairs\nlairy\nlaith\nlaity\nlaked\nlaker\nlakes\nlakhs\nlakin\nlaksa\nlaldy\nlalls\nlamas\nlambs\nlamby\nlamed\nlamer\nlames\nlamia\nlammy\nlamps\nlanai\nlanas\nlance\nlanch\nlande\nlands\nlaned\nlanes\nlanks\nlanky\nlants\nlapas\nlapel\nlapin\nlapis\nlapje\nlappa\nlappy\nlapse\nlarch\nlards\nlardy\nlaree\nlares\nlarfs\nlarga\nlarge\nlargo\nlaris\nlarks\nlarky\nlarns\nlarnt\nlarum\nlarva\nlased\nlaser\nlases\nlassi\nlasso\nlassu\nlassy\nlasts\nlatah\nlatch\nlated\nlaten\nlater\nlatex\nlathe\nlathi\nlaths\nlathy\nlatke\nlatte\nlatus\nlauan\nlauch\nlaude\nlauds\nlaufs\nlaugh\nlaund\nlaura\nlaval\nlavas\nlaved\nlaver\nlaves\nlavra\nlavvy\nlawed\nlawer\nlawin\nlawks\nlawns\nlawny\nlawsy\nlaxed\nlaxer\nlaxes\nlaxly\nlayby\nlayed\nlayer\nlayin\nlayup\nlazar\nlazed\nlazes\nlazos\nlazzi\nlazzo\nleach\nleads\nleady\nleafs\nleafy\nleaks\nleaky\nleams\nleans\nleant\nleany\nleaps\nleapt\nleare\nlearn\nlears\nleary\nlease\nleash\nleast\nleats\nleave\nleavy\nleaze\nleben\nleccy\nleche\nledes\nledge\nledgy\nledum\nleear\nleech\nleeks\nleeps\nleers\nleery\nleese\nleets\nleeze\nlefte\nlefts\nlefty\nlegal\nleger\nleges\nlegge\nleggo\nleggy\nlegit\nlegno\nlehrs\nlehua\nleirs\nleish\nleman\nlemed\nlemel\nlemes\nlemma\nlemme\nlemon\nlemur\nlends\nlenes\nlengs\nlenis\nlenos\nlense\nlenti\nlento\nleone\nlepak\nleper\nlepid\nlepra\nlepta\nlered\nleres\nlerps\nlesbo\nleses\nlesos\nlests\nletch\nlethe\nletty\nletup\nleuch\nleuco\nleuds\nleugh\nlevas\nlevee\nlevel\nlever\nleves\nlevin\nlevis\nlewis\nlexes\nlexis\nlezes\nlezza\nlezzo\nlezzy\nliana\nliane\nliang\nliard\nliars\nliart\nlibel\nliber\nlibor\nlibra\nlibre\nlibri\nlicet\nlichi\nlicht\nlicit\nlicks\nlidar\nlidos\nliefs\nliege\nliens\nliers\nlieus\nlieve\nlifer\nlifes\nlifey\nlifts\nligan\nliger\nligge\nlight\nligne\nliked\nliken\nliker\nlikes\nlikin\nlilac\nlills\nlilos\nlilts\nlilty\nliman\nlimas\nlimax\nlimba\nlimbi\nlimbo\nlimbs\nlimby\nlimed\nlimen\nlimes\nlimey\nlimit\nlimma\nlimns\nlimos\nlimpa\nlimps\nlinac\nlinch\nlinds\nlindy\nlined\nlinen\nliner\nlines\nliney\nlinga\nlingo\nlings\nlingy\nlinin\nlinks\nlinky\nlinns\nlinny\nlinos\nlints\nlinty\nlinum\nlinux\nlions\nlipas\nlipes\nlipid\nlipin\nlipos\nlippy\nliras\nlirks\nlirot\nlises\nlisks\nlisle\nlisps\nlists\nlitai\nlitas\nlited\nlitem\nliter\nlites\nlithe\nlitho\nliths\nlitie\nlitre\nlived\nliven\nliver\nlives\nlivid\nlivor\nlivre\nliwaa\nliwas\nllama\nllano\nloach\nloads\nloafs\nloams\nloamy\nloans\nloast\nloath\nloave\nlobar\nlobby\nlobed\nlobes\nlobos\nlobus\nlocal\nloche\nlochs\nlochy\nlocie\nlocis\nlocks\nlocky\nlocos\nlocum\nlocus\nloden\nlodes\nlodge\nloess\nlofts\nlofty\nlogan\nloges\nloggy\nlogia\nlogic\nlogie\nlogin\nlogoi\nlogon\nlogos\nlohan\nloids\nloins\nloipe\nloirs\nlokes\nlokey\nlokum\nlolas\nloled\nlollo\nlolls\nlolly\nlolog\nlolos\nlomas\nlomed\nlomes\nloner\nlonga\nlonge\nlongs\nlooby\nlooed\nlooey\nloofa\nloofs\nlooie\nlooks\nlooky\nlooms\nloons\nloony\nloops\nloopy\nloord\nloose\nloots\nloped\nloper\nlopes\nloppy\nloral\nloran\nlords\nlordy\nlorel\nlores\nloric\nloris\nlorry\nlosed\nlosel\nlosen\nloser\nloses\nlossy\nlotah\nlotas\nlotes\nlotic\nlotos\nlotsa\nlotta\nlotte\nlotto\nlotus\nloued\nlough\nlouie\nlouis\nlouma\nlound\nlouns\nloupe\nloups\nloure\nlours\nloury\nlouse\nlousy\nlouts\nlovat\nloved\nlovee\nlover\nloves\nlovey\nlovie\nlowan\nlowed\nlowen\nlower\nlowes\nlowly\nlownd\nlowne\nlowns\nlowps\nlowry\nlowse\nlowth\nlowts\nloxed\nloxes\nloyal\nlozen\nluach\nluaus\nlubed\nlubes\nlubra\nluces\nlucid\nlucks\nlucky\nlucre\nludes\nludic\nludos\nluffa\nluffs\nluged\nluger\nluges\nlulls\nlulus\nlumas\nlumbi\nlumen\nlumme\nlummy\nlumps\nlumpy\nlunar\nlunas\nlunch\nlunes\nlunet\nlunge\nlungi\nlungs\nlunks\nlunts\nlupin\nlupus\nlurch\nlured\nlurer\nlures\nlurex\nlurgi\nlurgy\nlurid\nlurks\nlurry\nlurve\nluser\nlushy\nlusks\nlusts\nlusty\nlusus\nlutea\nluted\nluter\nlutes\nluvvy\nluxed\nluxer\nluxes\nlweis\nlyams\nlyard\nlyart\nlyase\nlycea\nlycee\nlycra\nlying\nlymes\nlymph\nlynch\nlynes\nlyres\nlyric\nlysed\nlyses\nlysin\nlysis\nlysol\nlyssa\nlyted\nlytes\nlythe\nlytic\nlytta\nmaaed\nmaare\nmaars\nmaban\nmabes\nmacas\nmacaw\nmacca\nmaced\nmacer\nmaces\nmache\nmachi\nmacho\nmachs\nmacka\nmacks\nmacle\nmacon\nmacro\nmacte\nmadal\nmadam\nmadar\nmaddy\nmadge\nmadid\nmadly\nmados\nmadre\nmaedi\nmaerl\nmafia\nmafic\nmafts\nmagas\nmages\nmaggs\nmagic\nmagma\nmagna\nmagot\nmagus\nmahal\nmahem\nmahis\nmahoe\nmahrs\nmahua\nmahwa\nmaids\nmaiko\nmaiks\nmaile\nmaill\nmailo\nmails\nmaims\nmains\nmaire\nmairs\nmaise\nmaist\nmaize\nmajas\nmajat\nmajoe\nmajor\nmajos\nmakaf\nmakai\nmakan\nmakar\nmakee\nmaker\nmakes\nmakie\nmakis\nmakos\nmalae\nmalai\nmalam\nmalar\nmalas\nmalax\nmaleo\nmales\nmalic\nmalik\nmalis\nmalky\nmalls\nmalms\nmalmy\nmalts\nmalty\nmalus\nmalva\nmalwa\nmamak\nmamas\nmamba\nmambo\nmambu\nmamee\nmamey\nmamie\nmamil\nmamma\nmammy\nmanas\nmanat\nmandi\nmands\nmandy\nmaneb\nmaned\nmaneh\nmanes\nmanet\nmanga\nmange\nmangi\nmango\nmangs\nmangy\nmania\nmanic\nmanie\nmanis\nmanks\nmanky\nmanly\nmanna\nmanny\nmanoa\nmanor\nmanos\nmanse\nmanso\nmanta\nmante\nmanto\nmants\nmanty\nmanul\nmanus\nmanzo\nmapau\nmapes\nmaple\nmapou\nmappy\nmaqam\nmaqui\nmarae\nmarah\nmaral\nmaran\nmaras\nmaray\nmarch\nmarcs\nmards\nmardy\nmares\nmarga\nmarge\nmargo\nmargs\nmaria\nmarid\nmaril\nmarka\nmarks\nmarle\nmarls\nmarly\nmarma\nmarms\nmaron\nmaror\nmarra\nmarri\nmarry\nmarse\nmarsh\nmarts\nmarua\nmarvy\nmasas\nmased\nmaser\nmases\nmasha\nmashy\nmasks\nmason\nmassa\nmasse\nmassy\nmasts\nmasty\nmasur\nmasus\nmasut\nmatai\nmatch\nmated\nmater\nmates\nmatey\nmathe\nmaths\nmatin\nmatlo\nmatra\nmatsu\nmatte\nmatts\nmatty\nmatza\nmatzo\nmauby\nmauds\nmauka\nmaula\nmauls\nmaums\nmaumy\nmaund\nmaunt\nmauri\nmausy\nmauts\nmauve\nmauvy\nmauzy\nmaven\nmavie\nmavin\nmavis\nmawed\nmawks\nmawky\nmawla\nmawns\nmawps\nmawrs\nmaxed\nmaxes\nmaxim\nmaxis\nmayan\nmayas\nmaybe\nmayed\nmayor\nmayos\nmayst\nmazac\nmazak\nmazar\nmazas\nmazed\nmazel\nmazer\nmazes\nmazet\nmazey\nmazut\nmbari\nmbars\nmbila\nmbira\nmbret\nmbube\nmbuga\nmeads\nmeake\nmeaks\nmeals\nmealy\nmeane\nmeans\nmeant\nmeany\nmeare\nmease\nmeath\nmeats\nmeaty\nmebbe\nmebos\nmecca\nmecha\nmechs\nmecks\nmecum\nmedal\nmedia\nmedic\nmedii\nmedin\nmedle\nmeech\nmeeds\nmeeja\nmeeps\nmeers\nmeets\nmeffs\nmeids\nmeiko\nmeils\nmeins\nmeint\nmeiny\nmeism\nmeith\nmekka\nmelam\nmelas\nmelba\nmelch\nmelds\nmelee\nmeles\nmelic\nmelik\nmells\nmeloe\nmelon\nmelos\nmelts\nmelty\nmemes\nmemic\nmemos\nmenad\nmence\nmends\nmened\nmenes\nmenge\nmengs\nmenil\nmensa\nmense\nmensh\nmenta\nmento\nments\nmenus\nmeous\nmeows\nmerch\nmercs\nmercy\nmerde\nmerds\nmered\nmerel\nmerer\nmeres\nmerge\nmeril\nmeris\nmerit\nmerks\nmerle\nmerls\nmerry\nmerse\nmersk\nmesad\nmesal\nmesas\nmesca\nmesel\nmesem\nmeses\nmeshy\nmesia\nmesic\nmesne\nmeson\nmessy\nmesto\nmesyl\nmetal\nmetas\nmeted\nmeteg\nmetel\nmeter\nmetes\nmethi\nmetho\nmeths\nmethy\nmetic\nmetif\nmetis\nmetol\nmetre\nmetro\nmetta\nmeums\nmeuse\nmeved\nmeves\nmewed\nmewls\nmeynt\nmezes\nmezza\nmezze\nmezzo\nmgals\nmhorr\nmiais\nmiaou\nmiaow\nmiasm\nmiaul\nmicas\nmiche\nmichi\nmicht\nmicks\nmicky\nmicos\nmicra\nmicro\nmiddy\nmidge\nmidgy\nmidis\nmidst\nmiens\nmieux\nmieve\nmiffs\nmiffy\nmifty\nmiggs\nmight\nmigma\nmigod\nmihas\nmihis\nmikan\nmiked\nmikes\nmikos\nmikra\nmikva\nmilch\nmilds\nmiler\nmiles\nmilfs\nmilia\nmilko\nmilks\nmilky\nmille\nmills\nmilly\nmilor\nmilos\nmilpa\nmilts\nmilty\nmiltz\nmimed\nmimeo\nmimer\nmimes\nmimic\nmimis\nmimsy\nminae\nminar\nminas\nmince\nmincy\nmindi\nminds\nmined\nminer\nmines\nminge\nmingi\nmings\nmingy\nminim\nminis\nminke\nminks\nminny\nminor\nminos\nminse\nmints\nminty\nminus\nminxy\nmiraa\nmirah\nmirch\nmired\nmires\nmirex\nmirid\nmirin\nmirkn\nmirks\nmirky\nmirls\nmirly\nmiros\nmirrl\nmirrs\nmirth\nmirvs\nmirza\nmisal\nmisch\nmisdo\nmiser\nmises\nmisgo\nmisky\nmisls\nmisos\nmissa\nmissy\nmisto\nmists\nmisty\nmitas\nmitch\nmiter\nmites\nmitey\nmitie\nmitis\nmitre\nmitry\nmitta\nmitts\nmivey\nmivvy\nmixed\nmixen\nmixer\nmixes\nmixie\nmixis\nmixte\nmixup\nmiyas\nmizen\nmizes\nmizzy\nmmkay\nmneme\nmoais\nmoaky\nmoals\nmoana\nmoans\nmoany\nmoars\nmoats\nmobby\nmobed\nmobee\nmobes\nmobey\nmobie\nmoble\nmobos\nmocap\nmocha\nmochi\nmochs\nmochy\nmocks\nmocky\nmocos\nmocus\nmodal\nmodel\nmodem\nmoder\nmodes\nmodge\nmodii\nmodin\nmodoc\nmodom\nmodus\nmoeni\nmoers\nmofos\nmogar\nmogas\nmoggy\nmogos\nmogra\nmogue\nmogul\nmohar\nmohel\nmohos\nmohrs\nmohua\nmohur\nmoile\nmoils\nmoira\nmoire\nmoist\nmoits\nmoity\nmojos\nmoker\nmokes\nmokey\nmokis\nmokky\nmokos\nmokus\nmolal\nmolar\nmolas\nmolds\nmoldy\nmoled\nmoler\nmoles\nmoley\nmolie\nmolla\nmolle\nmollo\nmolls\nmolly\nmoloi\nmolos\nmolto\nmolts\nmolue\nmolvi\nmolys\nmomes\nmomie\nmomma\nmomme\nmommy\nmomos\nmompe\nmomus\nmonad\nmonal\nmonas\nmonde\nmondo\nmoner\nmoney\nmongo\nmongs\nmonic\nmonie\nmonks\nmonos\nmonpe\nmonte\nmonth\nmonty\nmoobs\nmooch\nmoods\nmoody\nmooed\nmooey\nmooks\nmoola\nmooli\nmools\nmooly\nmoong\nmooni\nmoons\nmoony\nmoops\nmoors\nmoory\nmoose\nmooth\nmoots\nmoove\nmoped\nmoper\nmopes\nmopey\nmoppy\nmopsy\nmopus\nmorae\nmorah\nmoral\nmoran\nmoras\nmorat\nmoray\nmoree\nmorel\nmores\nmorgy\nmoria\nmorin\nmormo\nmorna\nmorne\nmorns\nmoron\nmoror\nmorph\nmorra\nmorro\nmorse\nmorts\nmoruk\nmosed\nmoses\nmosey\nmosks\nmosso\nmossy\nmoste\nmosto\nmosts\nmoted\nmotel\nmoten\nmotes\nmotet\nmotey\nmoths\nmothy\nmotif\nmotis\nmoton\nmotor\nmotte\nmotto\nmotts\nmotty\nmotus\nmotza\nmouch\nmoues\nmoufs\nmould\nmoule\nmouls\nmoult\nmouly\nmound\nmount\nmoups\nmourn\nmouse\nmoust\nmousy\nmouth\nmoved\nmover\nmoves\nmovie\nmowas\nmowed\nmower\nmowie\nmowra\nmoxas\nmoxie\nmoyas\nmoyle\nmoyls\nmozed\nmozes\nmozos\nmpret\nmrads\nmsasa\nmtepe\nmucho\nmucic\nmucid\nmucin\nmucko\nmucks\nmucky\nmucor\nmucro\nmucus\nmudar\nmuddy\nmudge\nmudif\nmudim\nmudir\nmudra\nmuffs\nmuffy\nmufti\nmugga\nmuggs\nmuggy\nmugho\nmugil\nmugos\nmuhly\nmuids\nmuils\nmuirs\nmuiry\nmuist\nmujik\nmukim\nmukti\nmulai\nmulch\nmulct\nmuled\nmules\nmuley\nmulga\nmulie\nmulla\nmulls\nmulse\nmulsh\nmumbo\nmumms\nmummy\nmumph\nmumps\nmumsy\nmumus\nmunch\nmunds\nmundu\nmunga\nmunge\nmungi\nmungo\nmungs\nmungy\nmunia\nmunis\nmunja\nmunjs\nmunts\nmuntu\nmuons\nmural\nmuras\nmured\nmures\nmurex\nmurgh\nmurgi\nmurid\nmurks\nmurky\nmurls\nmurly\nmurra\nmurre\nmurri\nmurrs\nmurry\nmurth\nmurti\nmuruk\nmurva\nmusar\nmusca\nmused\nmusee\nmuser\nmuses\nmuset\nmusha\nmushy\nmusic\nmusit\nmusks\nmusky\nmusos\nmusse\nmussy\nmusta\nmusth\nmusts\nmusty\nmutas\nmutch\nmuted\nmuter\nmutes\nmutha\nmutic\nmutis\nmuton\nmutti\nmutts\nmutum\nmuvva\nmuxed\nmuxes\nmuzak\nmuzzy\nmvula\nmvule\nmvuli\nmyall\nmyals\nmylar\nmynah\nmynas\nmyoid\nmyoma\nmyons\nmyope\nmyops\nmyopy\nmyrrh\nmysid\nmysie\nmythi\nmyths\nmythy\nmyxos\nmzees\nnaams\nnaans\nnaats\nnabam\nnabby\nnabes\nnabis\nnabks\nnabla\nnabob\nnache\nnacho\nnacre\nnadas\nnadir\nnaeve\nnaevi\nnaffs\nnagar\nnagas\nnages\nnaggy\nnagor\nnahal\nnaiad\nnaibs\nnaice\nnaids\nnaieo\nnaifs\nnaiks\nnails\nnaily\nnains\nnaios\nnaira\nnairu\nnaive\nnajib\nnakas\nnaked\nnaker\nnakfa\nnalas\nnaled\nnalla\nnamad\nnamak\nnamaz\nnamed\nnamer\nnames\nnamma\nnamus\nnanas\nnance\nnancy\nnandu\nnanna\nnanny\nnanos\nnante\nnanti\nnanto\nnants\nnanty\nnanua\nnapas\nnaped\nnapes\nnapoh\nnapoo\nnappa\nnappe\nnappy\nnaras\nnarco\nnarcs\nnards\nnares\nnaric\nnaris\nnarks\nnarky\nnarod\nnarra\nnarre\nnasal\nnashi\nnasho\nnasis\nnason\nnasty\nnasus\nnatak\nnatal\nnatch\nnates\nnatis\nnatto\nnatty\nnatya\nnauch\nnaunt\nnaval\nnavar\nnaved\nnavel\nnaves\nnavew\nnavvy\nnawab\nnawal\nnazar\nnazes\nnazir\nnazis\nnazzy\nnduja\nneafe\nneals\nneant\nneaps\nnears\nneath\nneato\nneats\nnebby\nnebek\nnebel\nneche\nnecks\nneddy\nneebs\nneeds\nneedy\nneefs\nneeld\nneele\nneemb\nneems\nneeps\nneese\nneeze\nnefie\nnegri\nnegro\nnegus\nneifs\nneigh\nneist\nneive\nnelia\nnelis\nnelly\nnemas\nnemic\nnemns\nnempt\nnenes\nnenta\nneons\nneosa\nneoza\nneper\nnepit\nneral\nneram\nnerds\nnerdy\nnerfs\nnerka\nnerks\nnerol\nnerts\nnertz\nnerve\nnervy\nneski\nnests\nnesty\nnetas\nnetes\nnetop\nnetta\nnetts\nnetty\nneuks\nneume\nneums\nnevel\nnever\nneves\nnevis\nnevus\nnevvy\nnewbs\nnewed\nnewel\nnewer\nnewie\nnewly\nnewsy\nnewts\nnexal\nnexin\nnexts\nnexum\nnexus\nngaio\nngaka\nngana\nngapi\nngati\nngege\nngoma\nngoni\nngram\nngwee\nnibby\nnicad\nniced\nnicer\nnicey\nniche\nnicht\nnicks\nnicky\nnicol\nnidal\nnided\nnides\nnidor\nnidus\nniece\nniefs\nniess\nnieve\nnifes\nniffs\nniffy\nnifle\nnifty\nniger\nnigga\nnighs\nnight\nnigre\nnigua\nnihil\nnikab\nnikah\nnikau\nnilas\nnills\nnimbi\nnimbs\nnimby\nnimps\nniner\nnines\nninja\nninny\nninon\nninta\nninth\nniopo\nnioza\nnipas\nnipet\nnippy\nniqab\nnirls\nnirly\nnisei\nnisin\nnisse\nnisus\nnital\nniter\nnites\nnitid\nniton\nnitre\nnitro\nnitry\nnitta\nnitto\nnitty\nnival\nnivas\nnivel\nnixed\nnixer\nnixes\nnixie\nnizam\nnjirl\nnkosi\nnmoli\nnmols\nnoahs\nnobby\nnoble\nnobly\nnocks\nnodal\nnoddy\nnoded\nnodes\nnodum\nnodus\nnoels\nnoema\nnoeme\nnogal\nnoggs\nnoggy\nnohow\nnoias\nnoils\nnoily\nnoint\nnoire\nnoirs\nnoise\nnoisy\nnokes\nnoles\nnolle\nnolls\nnolos\nnomad\nnomas\nnomen\nnomes\nnomic\nnomoi\nnomos\nnonan\nnonas\nnonce\nnoncy\nnonda\nnondo\nnones\nnonet\nnongs\nnonic\nnonis\nnonna\nnonno\nnonny\nnonyl\nnoobs\nnoois\nnooit\nnooks\nnooky\nnoone\nnoons\nnoops\nnoose\nnoove\nnopal\nnoria\nnorie\nnoris\nnorks\nnorma\nnorms\nnorth\nnosed\nnoser\nnoses\nnosey\nnoshi\nnosir\nnotal\nnotam\nnotch\nnoted\nnoter\nnotes\nnotum\nnougs\nnouja\nnould\nnoule\nnouls\nnouns\nnouny\nnoups\nnoust\nnovae\nnovas\nnovel\nnovia\nnovio\nnovum\nnoway\nnowds\nnowed\nnowls\nnowts\nnowty\nnoxal\nnoxas\nnoxes\nnoyau\nnoyed\nnoyes\nnrtta\nnrtya\nnsima\nnubby\nnubia\nnucha\nnucin\nnuddy\nnuder\nnudes\nnudge\nnudgy\nnudie\nnudzh\nnuevo\nnuffs\nnugae\nnujol\nnuked\nnukes\nnulla\nnullo\nnulls\nnully\nnumbs\nnumen\nnummy\nnumps\nnunks\nnunky\nnunny\nnunus\nnuque\nnurds\nnurdy\nnurls\nnurrs\nnurse\nnurts\nnurtz\nnused\nnuses\nnutso\nnutsy\nnutty\nnyaff\nnyala\nnyams\nnying\nnylon\nnymph\nnyong\nnyssa\nnyung\nnyuse\nnyuze\noafos\noaked\noaken\noaker\noakum\noared\noarer\noasal\noases\noasis\noasts\noaten\noater\noaths\noaves\nobang\nobbos\nobeah\nobeli\nobese\nobeys\nobias\nobied\nobiit\nobits\nobjet\noboes\nobole\noboli\nobols\noccam\noccur\nocean\nocher\noches\nochre\nochry\nocker\nocote\nocrea\noctad\noctal\noctan\noctas\noctet\noctic\noctli\noctyl\noculi\nodahs\nodals\nodder\noddly\nodeon\nodeum\nodism\nodist\nodium\nodoom\nodors\nodour\nodums\nodyle\nodyls\nofays\noffal\noffed\noffer\noffie\noflag\noften\nofter\nofuro\nogams\nogeed\nogees\noggin\nogham\nogive\nogled\nogler\nogles\nogmic\nogres\nohelo\nohias\nohing\nohmic\nohone\noicks\noidia\noiled\noiler\noilet\noinks\noints\noiran\nojime\nokapi\nokays\nokehs\nokies\noking\nokole\nokras\nokrug\noktas\nolate\nolden\nolder\noldie\noldly\nolehs\noleic\nolein\nolent\noleos\noleum\noleyl\noligo\nolios\noliva\nolive\nollas\nollav\noller\nollie\nology\nolona\nolpae\nolpes\nomasa\nomber\nombre\nombus\nomdah\nomdas\nomdda\nomdeh\nomees\nomega\nomens\nomers\nomiai\nomits\nomlah\nommel\nommin\nomnes\nomovs\nomrah\nomuls\noncer\nonces\noncet\noncus\nondes\nondol\nonely\noners\nonery\nongon\nonion\nonium\nonkus\nonlap\nonlay\nonmun\nonned\nonsen\nonset\nontal\nontic\nooaas\noobit\noohed\nooids\noojah\noomph\noonts\noopak\nooped\noopsy\noorie\nooses\nootid\nooyah\noozed\noozes\noozie\noozle\nopahs\nopals\nopens\nopepe\nopera\nopery\nopgaf\nopihi\nopine\noping\nopium\noppos\nopsat\nopsin\nopsit\nopted\nopter\noptic\nopzit\norach\noracy\norals\norang\norans\norant\norate\norbat\norbed\norbic\norbit\norcas\norcin\norder\nordie\nordos\noread\norfes\norful\norgan\norgia\norgic\norgue\noribi\noriel\norigo\norixa\norles\norlon\norlop\normer\nornee\nornis\norped\norpin\norris\nortet\northo\norval\norzos\nosars\noscar\nosetr\noseys\noshac\nosier\noskin\noslin\nosmic\nosmol\nosone\nossia\nostia\notaku\notary\nother\nothyl\notium\nottar\notter\nottos\noubit\nouche\noucht\noueds\nouens\nought\nouija\noulks\noumas\nounce\noundy\noupas\nouped\nouphe\nouphs\nourey\nourie\nousel\nousia\nousts\noutby\noutdo\nouted\nouten\nouter\noutgo\noutie\noutre\noutro\noutta\nouzel\nouzos\novals\novary\novate\novels\novens\novers\novert\novine\novism\novist\novoid\novoli\novolo\novule\noware\nowari\nowche\nowers\nowies\nowing\nowled\nowler\nowlet\nowned\nowner\nownio\nowres\nowrie\nowsen\noxbow\noxeas\noxers\noxeye\noxide\noxids\noxies\noxime\noxims\noxine\noxlip\noxman\noxmen\noxter\noyama\noyers\nozeki\nozena\nozone\nozzie\npaaho\npaals\npaans\npacai\npacas\npacay\npaced\npacer\npaces\npacey\npacha\npacks\npacky\npacos\npacta\npacts\npadam\npadas\npaddo\npaddy\npadis\npadle\npadma\npadou\npadre\npadri\npaean\npaedo\npaeon\npagan\npaged\npager\npages\npagle\npagne\npagod\npagri\npahit\npahos\npahus\npaiks\npails\npains\npaint\npaipe\npaips\npaire\npairs\npaisa\npaise\npakay\npakka\npakki\npakua\npakul\npalak\npalar\npalas\npalay\npalea\npaled\npaler\npales\npalet\npalis\npalki\npalla\npalls\npallu\npally\npalms\npalmy\npalpi\npalps\npalsa\npalsy\npalus\npamby\npampa\npanax\npance\npanch\npanda\npands\npandy\npaned\npanel\npanes\npanga\npangs\npanic\npanim\npanir\npanko\npanks\npanna\npanne\npanni\npanny\npansy\npanto\npants\npanty\npaoli\npaolo\npapad\npapal\npapas\npapaw\npaper\npapes\npapey\npappi\npappy\npapri\nparae\nparas\nparch\nparcs\npardi\npards\npardy\npared\nparen\npareo\nparer\npares\npareu\nparev\nparge\npargo\nparid\nparis\nparka\nparki\nparks\nparky\nparle\nparly\nparma\nparmo\nparms\nparol\nparps\nparra\nparrs\nparry\nparse\nparte\nparti\nparts\nparty\nparve\nparvo\npasag\npasar\npasch\npaseo\npases\npasha\npashm\npaska\npasmo\npaspy\npasse\npassu\npasta\npaste\npasts\npasty\npatas\npatch\npated\npatee\npatel\npaten\npater\npates\npaths\npatia\npatin\npatio\npatka\npatly\npatsy\npatta\npatte\npattu\npatty\npatus\npauas\npauls\npause\npauxi\npavan\npavas\npaved\npaven\npaver\npaves\npavid\npavie\npavin\npavis\npavon\npavvy\npawas\npawaw\npawed\npawer\npawks\npawky\npawls\npawns\npaxes\npayed\npayee\npayer\npayor\npaysd\npeace\npeach\npeage\npeags\npeake\npeaks\npeaky\npeals\npeans\npeare\npearl\npears\npeart\npease\npeasy\npeats\npeaty\npeavy\npeaze\npebas\npecan\npechs\npecia\npecke\npecks\npecky\npects\npedal\npedes\npedis\npedon\npedos\npedro\npeece\npeeks\npeeky\npeels\npeely\npeens\npeent\npeeoy\npeepe\npeeps\npeepy\npeers\npeery\npeeve\npeevo\npeggy\npeghs\npegma\npegos\npeine\npeins\npeise\npeisy\npeize\npekan\npekau\npekea\npekes\npekid\npekin\npekoe\npelas\npelau\npelch\npeles\npelfs\npells\npelma\npelog\npelon\npelsh\npelta\npelts\npelus\npenal\npence\npends\npendu\npened\npenes\npengo\npenie\npenis\npenks\npenna\npenne\npenni\npenny\npense\npensy\npents\npeola\npeons\npeony\npepla\npeple\npepon\npepos\npeppy\npepsi\npequi\nperae\nperai\nperce\nperch\npercs\nperdu\nperdy\nperea\nperes\nperfs\nperil\nperis\nperks\nperky\nperle\nperls\nperms\npermy\nperne\nperns\nperog\nperps\nperry\nperse\npersp\nperst\nperts\nperve\npervo\npervs\npervy\npesch\npesky\npesos\npesta\npesto\npests\npesty\npetal\npetar\npeter\npetit\npetos\npetre\npetri\npetti\npetto\npetty\npewed\npewee\npewit\npeyse\npfftt\nphage\nphang\nphare\npharm\nphase\nphasm\npheer\npheme\nphene\npheon\nphese\nphial\nphies\nphish\nphizz\nphlox\nphobe\nphoca\nphone\nphono\nphons\nphony\nphooh\nphooo\nphota\nphoto\nphots\nphoty\nphpht\nphubs\nphuts\nphutu\nphwat\nphyla\nphyle\nphyma\nphynx\nphysa\npiais\npiani\npiano\npians\npibal\npical\npicas\npiccy\npicey\npichi\npicks\npicky\npicon\npicot\npicra\npicul\npiece\npieds\npiend\npiers\npiert\npieta\npiets\npiety\npiezo\npiggy\npight\npigly\npigmy\npiing\npikas\npikau\npiked\npikel\npiker\npikes\npikey\npikis\npikul\npilae\npilaf\npilao\npilar\npilau\npilaw\npilch\npilea\npiled\npilei\npiler\npiles\npiley\npilin\npilis\npills\npilon\npilot\npilow\npilum\npilus\npimas\npimps\npinas\npinax\npince\npinch\npinda\npinds\npined\npiner\npines\npiney\npinga\npinge\npingo\npings\npinko\npinks\npinky\npinna\npinny\npinol\npinon\npinot\npinta\npinto\npints\npinup\npions\npiony\npious\npioye\npioys\npipal\npipas\npiped\npiper\npipes\npipet\npipid\npipis\npipit\npippy\npipul\npique\npiqui\npirai\npirks\npirls\npirns\npirog\npirre\npirri\npirrs\npisco\npises\npisky\npisos\npissy\npiste\npitas\npitch\npiths\npithy\npiton\npitot\npitso\npitsu\npitta\npittu\npiuma\npiums\npivos\npivot\npixel\npixes\npixie\npiyut\npized\npizer\npizes\npizza\nplaas\nplace\nplack\nplaga\nplage\nplaid\nplaig\nplain\nplait\nplanc\nplane\nplanh\nplank\nplans\nplant\nplaps\nplash\nplasm\nplast\nplate\nplats\nplatt\nplaty\nplaud\nplaur\nplavs\nplaya\nplays\nplaza\nplead\npleas\npleat\nplebe\nplebs\npleck\npleep\nplein\nplena\nplene\npleno\npleon\nplesh\nplets\nplews\nplexi\nplica\nplied\nplier\nplies\npligs\nplims\npling\nplink\nplips\nplish\nploat\nploce\nplock\nplods\nploit\nplomb\nplong\nplonk\nplook\nploot\nplops\nplore\nplots\nplotz\nplouk\nplout\nplows\nplowt\nploye\nploys\npluck\npluds\nplues\npluff\nplugs\npluke\nplumb\nplume\nplump\nplums\nplumy\nplung\nplunk\npluot\nplups\nplush\nplute\npluto\npluty\nplyer\npneus\npoach\npoaka\npoake\npoalo\npobby\npoboy\npocan\npoche\npocho\npocks\npocky\npodal\npoddy\npodex\npodge\npodgy\npodia\npodos\npodus\npoems\npoena\npoeps\npoesy\npoete\npoets\npogey\npogge\npoggy\npogos\npogue\npohed\npoilu\npoind\npoint\npoire\npoise\npokal\npoked\npoker\npokes\npokey\npokie\npokit\npolar\npoled\npoler\npoles\npoley\npolio\npolis\npolje\npolka\npolks\npollo\npolls\npolly\npolos\npolts\npolyp\npolys\npomas\npombe\npomes\npomme\npommy\npomos\npompa\npomps\nponce\nponcy\nponds\npondy\npones\nponey\nponga\npongo\npongs\npongy\nponks\nponor\nponto\nponts\nponty\nponzu\npooay\npooch\npoods\npooed\npooey\npoofs\npoofy\npoohs\npoohy\npooja\npooka\npooks\npools\npooly\npoons\npoopa\npoops\npoopy\npoori\npoort\npoots\npooty\npoove\npoovy\npopes\npopia\npopos\npoppa\npoppy\npopsy\npopup\nporae\nporal\nporch\npored\nporer\npores\nporey\nporge\nporgy\nporin\nporks\nporky\nporno\nporns\nporny\nporta\nporte\nporth\nports\nporty\nporus\nposca\nposed\nposer\nposes\nposet\nposey\nposho\nposit\nposol\nposse\nposte\nposts\npotae\npotai\npotch\npoted\npotes\npotin\npotoo\npotro\npotsy\npotto\npotts\npotty\npouce\npouch\npouff\npoufs\npoufy\npouis\npouke\npouks\npoule\npoulp\npoult\npound\npoupe\npoupt\npours\npousy\npouts\npouty\npovos\npowan\npower\npowie\npowin\npowis\npowlt\npownd\npowns\npowny\npowre\npowsy\npoxed\npoxes\npoyas\npoynt\npoyou\npoyse\npozzy\npraam\nprads\nprags\nprahu\nprams\nprana\nprang\nprank\npraos\npraps\nprase\nprate\nprats\npratt\npraty\npraus\nprawn\nprays\npreak\npredy\npreed\npreem\npreen\nprees\npreif\npreke\nprems\npremy\nprent\npreon\npreop\npreps\npresa\nprese\npress\nprest\npreta\npreux\npreve\nprexy\npreys\nprial\nprian\nprice\nprick\npricy\npride\npridy\npried\nprief\nprier\npries\nprigs\nprill\nprima\nprime\nprimi\nprimo\nprimp\nprims\nprimy\npring\nprink\nprint\nprion\nprior\nprise\nprism\npriss\nprius\nprivy\nprize\nproal\nproas\nprobe\nprobs\nproby\nprodd\nprods\nproem\nprofs\nprogs\nproin\nproke\nprole\nproll\npromo\nproms\nprone\nprong\npronk\nproof\nprook\nproot\nprops\nprora\nprore\nprose\nproso\npross\nprost\nprosy\nproto\nproud\nproul\nprove\nprowk\nprowl\nprows\nproxy\nproyn\nprude\nprune\npruno\nprunt\npruny\npruta\npryan\npryer\npryse\npsalm\npseud\npshaw\npshut\npsias\npsion\npsoae\npsoai\npsoas\npsora\npsych\npsyop\nptish\nptype\npubby\npubco\npubes\npubic\npubis\npubsy\npucan\npucer\npuces\npucka\npucks\npuddy\npudge\npudgy\npudic\npudor\npudsy\npudus\npuers\npuffa\npuffs\npuffy\npuggy\npugil\npuhas\npujah\npujas\npukas\npuked\npuker\npukes\npukey\npukka\npukus\npulao\npulas\npuled\npuler\npules\npulik\npulis\npulka\npulks\npulli\npulls\npully\npulmo\npulps\npulpy\npulse\npulus\npulut\npumas\npumie\npumps\npumpy\npunas\npunce\npunch\npunga\npungi\npungo\npungs\npungy\npunim\npunji\npunka\npunks\npunky\npunny\npunto\npunts\npunty\npupae\npupal\npupas\npupil\npuppa\npuppy\npupus\npurao\npurau\npurda\npurdy\npured\npuree\npurer\npures\npurga\npurge\npurin\npuris\npurls\npuros\npurps\npurpy\npurre\npurrs\npurry\npurse\npursy\npurty\npuses\npushy\npusle\npussy\nputas\nputer\nputid\nputin\nputon\nputos\nputti\nputto\nputts\nputtu\nputty\nputza\npuuko\npuyas\npuzel\npuzta\npwned\npyats\npyets\npygal\npygmy\npyins\npylon\npyned\npynes\npyoid\npyots\npyral\npyran\npyres\npyrex\npyric\npyros\npyrus\npyuff\npyxed\npyxes\npyxie\npyxis\npzazz\nqadis\nqaids\nqajaq\nqanat\nqapik\nqibla\nqilas\nqipao\nqophs\nqorma\nquabs\nquack\nquads\nquaff\nquags\nquail\nquair\nquais\nquake\nquaky\nquale\nqualm\nqualy\nquank\nquant\nquare\nquark\nquarl\nquart\nquash\nquasi\nquass\nquate\nquats\nquawk\nquaws\nquayd\nquays\nqubit\nquean\nqueck\nqueek\nqueem\nqueen\nqueer\nquell\nqueme\nquena\nquern\nquery\nqueso\nquest\nquete\nqueue\nqueyn\nqueys\nqueyu\nquibs\nquich\nquick\nquids\nquies\nquiet\nquiff\nquila\nquill\nquilt\nquims\nquina\nquine\nquink\nquino\nquins\nquint\nquipo\nquips\nquipu\nquire\nquirk\nquirl\nquirt\nquist\nquite\nquits\nquoad\nquods\nquoif\nquoin\nquois\nquoit\nquoll\nquonk\nquops\nquork\nquorl\nquota\nquote\nquoth\nquouk\nquoys\nquran\nqursh\nquyte\nraads\nraake\nrabat\nrabbi\nrabic\nrabid\nrabis\nraced\nracer\nraces\nrache\nracks\nracon\nradar\nraddi\nraddy\nradge\nradgy\nradif\nradii\nradio\nradix\nradon\nrafee\nraffs\nraffy\nrafik\nrafiq\nrafts\nrafty\nragas\nragde\nraged\nragee\nrager\nrages\nragga\nraggs\nraggy\nragis\nragus\nrahed\nrahui\nraiah\nraias\nraids\nraike\nraiks\nraile\nrails\nraine\nrains\nrainy\nraird\nraise\nraita\nraith\nraits\nrajah\nrajas\nrajes\nraked\nrakee\nraker\nrakes\nrakhi\nrakia\nrakis\nrakki\nraksi\nrakus\nrales\nralli\nrally\nralph\nramal\nramee\nramen\nrames\nramet\nramie\nramin\nramis\nrammy\nramon\nramps\nramse\nramsh\nramus\nranas\nrance\nranch\nrando\nrands\nrandy\nraned\nranee\nranes\nranga\nrange\nrangi\nrangs\nrangy\nranid\nranis\nranke\nranks\nranns\nranny\nranse\nrants\nranty\nraped\nrapee\nraper\nrapes\nraphe\nrapid\nrapin\nrappe\nrapso\nrared\nraree\nrarer\nrares\nrarks\nrasam\nrasas\nrased\nraser\nrases\nrasps\nraspy\nrasse\nrasta\nratal\nratan\nratas\nratch\nrated\nratel\nrater\nrates\nratha\nrathe\nraths\nratio\nratoo\nratos\nratti\nratty\nratus\nrauli\nrauns\nraupo\nraved\nravel\nraven\nraver\nraves\nravey\nravin\nrawdy\nrawer\nrawin\nrawks\nrawly\nrawns\nraxed\nraxes\nrayah\nrayas\nrayed\nrayle\nrayls\nrayne\nrayon\nrazai\nrazed\nrazee\nrazer\nrazes\nrazet\nrazoo\nrazor\nreach\nreact\nreadd\nreads\nready\nreais\nreaks\nrealm\nrealo\nreals\nreame\nreams\nreamy\nreans\nreaps\nreard\nrearm\nrears\nreast\nreata\nreate\nreave\nrebab\nrebar\nrebbe\nrebec\nrebel\nrebid\nrebit\nrebop\nrebud\nrebus\nrebut\nrebuy\nrecal\nrecap\nrecce\nrecco\nreccy\nrecep\nrecit\nrecks\nrecon\nrecta\nrecte\nrecti\nrecto\nrecue\nrecur\nrecut\nredan\nredds\nreddy\nreded\nredes\nredia\nredid\nredif\nredig\nredip\nredly\nredon\nredos\nredox\nredry\nredub\nredug\nredux\nredye\nreeaf\nreech\nreede\nreeds\nreedy\nreefs\nreefy\nreeks\nreeky\nreels\nreely\nreems\nreens\nreerd\nreest\nreeve\nreeze\nrefan\nrefed\nrefel\nrefer\nreffo\nrefis\nrefit\nrefix\nrefly\nrefry\nregal\nregar\nreges\nreget\nregex\nreggo\nregia\nregie\nregle\nregma\nregna\nregos\nregot\nregur\nrehab\nrehem\nreifs\nreify\nreign\nreiki\nreiks\nreine\nreing\nreink\nreins\nreird\nreist\nreive\nrejas\nrejig\nrejon\nreked\nrekes\nrekey\nrelax\nrelay\nrelet\nrelic\nrelie\nrelit\nrello\nrelos\nreman\nremap\nremen\nremet\nremex\nremit\nremix\nremou\nrenal\nrenay\nrends\nrendu\nrenew\nreney\nrenga\nrengs\nrenig\nrenin\nrenks\nrenne\nrenos\nrente\nrents\nreoil\nreorg\nrepas\nrepat\nrepay\nrepeg\nrepel\nrepen\nrepin\nrepla\nreply\nrepos\nrepot\nrepps\nrepro\nrepun\nreput\nreran\nrerig\nrerun\nresam\nresat\nresaw\nresay\nresee\nreses\nreset\nresew\nresid\nresin\nresit\nresod\nresol\nresow\nresto\nrests\nresty\nresue\nresus\nretag\nretam\nretax\nretch\nretem\nretia\nretie\nretin\nretip\nretox\nretro\nretry\nreune\nreups\nreuse\nrevel\nrevet\nrevie\nrevow\nrevue\nrewan\nrewax\nrewed\nrewet\nrewin\nrewon\nrewth\nrexes\nrezes\nrhabd\nrheas\nrheid\nrheme\nrheum\nrhies\nrhime\nrhine\nrhino\nrhody\nrhomb\nrhone\nrhumb\nrhyme\nrhymy\nrhyne\nrhyta\nriads\nrials\nriant\nriata\nriato\nribas\nribby\nribes\nriced\nricer\nrices\nricey\nriche\nricht\nricin\nricks\nrider\nrides\nridge\nridgy\nridic\nriels\nriems\nrieve\nrifer\nriffs\nriffy\nrifle\nrifte\nrifts\nrifty\nriggs\nright\nrigid\nrigmo\nrigol\nrigor\nrikka\nrikwa\nriled\nriles\nriley\nrille\nrills\nrilly\nrimae\nrimed\nrimer\nrimes\nrimon\nrimus\nrince\nrinds\nrindy\nrines\nringe\nrings\nringy\nrinks\nrinse\nrioja\nrione\nriots\nrioty\nriped\nripen\nriper\nripes\nripps\nriqqs\nrisen\nriser\nrises\nrishi\nrisks\nrisky\nrisps\nrists\nrisus\nrites\nrithe\nritts\nritzy\nrival\nrivas\nrived\nrivel\nriven\nriver\nrives\nrivet\nriyal\nrizas\nroach\nroads\nroady\nroake\nroaky\nroams\nroans\nroany\nroars\nroary\nroast\nroate\nrobbo\nrobed\nrober\nrobes\nrobin\nroble\nrobot\nrobug\nrobur\nroche\nrocks\nrocky\nroded\nrodeo\nrodes\nrodny\nroers\nrogan\nroger\nrogue\nroguy\nrohan\nrohes\nrohun\nrohus\nroids\nroils\nroily\nroins\nroist\nrojak\nrojis\nroked\nroker\nrokes\nrokey\nrokos\nrolag\nroleo\nroles\nrolfs\nrolls\nrolly\nromal\nroman\nromeo\nromer\nromps\nrompu\nrompy\nronde\nrondo\nroneo\nrones\nronin\nronne\nronte\nronts\nronuk\nroods\nroofs\nroofy\nrooks\nrooky\nrooms\nroomy\nroons\nroops\nroopy\nroosa\nroose\nroost\nroots\nrooty\nroped\nroper\nropes\nropey\nroque\nroral\nrores\nroric\nrorid\nrorie\nrorts\nrorty\nrosal\nrosco\nrosed\nroses\nroset\nrosha\nroshi\nrosin\nrosit\nrosps\nrossa\nrosso\nrosti\nrosts\nrotal\nrotan\nrotas\nrotch\nroted\nrotes\nrotis\nrotls\nroton\nrotor\nrotos\nrotta\nrotte\nrotto\nrotty\nrouen\nroues\nrouet\nroufs\nrouge\nrough\nrougy\nrouks\nrouky\nroule\nrouls\nroums\nround\nroups\nroupy\nrouse\nroust\nroute\nrouth\nrouts\nroved\nroven\nrover\nroves\nrowan\nrowdy\nrowed\nrowel\nrowen\nrower\nrowet\nrowie\nrowme\nrownd\nrowns\nrowth\nrowts\nroyal\nroyet\nroyne\nroyst\nrozes\nrozet\nrozit\nruach\nruana\nrubai\nruban\nrubby\nrubel\nrubes\nrubin\nrubio\nruble\nrubli\nrubor\nrubus\nruche\nruchy\nrucks\nrudas\nrudds\nruddy\nruder\nrudes\nrudie\nrudis\nrueda\nruers\nruffe\nruffs\nruffy\nrufus\nrugae\nrugal\nrugas\nrugby\nruggy\nruice\nruing\nruins\nrukhs\nruled\nruler\nrules\nrully\nrumal\nrumba\nrumbo\nrumen\nrumes\nrumly\nrummy\nrumor\nrumpo\nrumps\nrumpy\nrunce\nrunch\nrunds\nruned\nruner\nrunes\nrungs\nrunic\nrunny\nrunos\nrunts\nrunty\nrunup\nruote\nrupee\nrupia\nrural\nrurps\nrurus\nrusas\nruses\nrushy\nrusks\nrusky\nrusma\nrusse\nrusts\nrusty\nruths\nrutin\nrutty\nruvid\nryals\nrybat\nryiji\nryijy\nryked\nrykes\nrymer\nrymme\nrynds\nryoti\nryots\nryper\nrypin\nrythe\nryugi\nsaags\nsabal\nsabed\nsaber\nsabes\nsabha\nsabin\nsabir\nsabji\nsable\nsabos\nsabot\nsabra\nsabre\nsabzi\nsacks\nsacra\nsacre\nsaddo\nsaddy\nsades\nsadhe\nsadhu\nsadic\nsadis\nsadly\nsados\nsadza\nsaeta\nsafed\nsafer\nsafes\nsagar\nsagas\nsager\nsages\nsaggy\nsagos\nsagum\nsahab\nsaheb\nsahib\nsaice\nsaick\nsaics\nsaids\nsaiga\nsails\nsaims\nsaine\nsains\nsaint\nsairs\nsaist\nsaith\nsajou\nsakai\nsaker\nsakes\nsakia\nsakis\nsakti\nsalad\nsalal\nsalas\nsalat\nsalep\nsales\nsalet\nsalic\nsalis\nsalix\nsalle\nsally\nsalmi\nsalol\nsalon\nsalop\nsalpa\nsalps\nsalsa\nsalse\nsalto\nsalts\nsalty\nsalud\nsalue\nsalut\nsalve\nsalvo\nsaman\nsamas\nsamba\nsambo\nsamek\nsamel\nsamen\nsames\nsamey\nsamfi\nsamfu\nsammy\nsampi\nsamps\nsanad\nsands\nsandy\nsaned\nsaner\nsanes\nsanga\nsangh\nsango\nsangs\nsanko\nsansa\nsanto\nsants\nsaola\nsapan\nsapid\nsapor\nsappy\nsaran\nsards\nsared\nsaree\nsarge\nsargo\nsarin\nsarir\nsaris\nsarks\nsarky\nsarod\nsaros\nsarus\nsarvo\nsaser\nsasin\nsasse\nsassy\nsatai\nsatay\nsated\nsatem\nsater\nsates\nsatin\nsatis\nsatyr\nsauba\nsauce\nsauch\nsaucy\nsaugh\nsauls\nsault\nsauna\nsaunf\nsaunt\nsaury\nsaute\nsauts\nsauve\nsaved\nsaver\nsaves\nsavey\nsavin\nsavor\nsavoy\nsavvy\nsawah\nsawed\nsawer\nsaxes\nsayas\nsayed\nsayee\nsayer\nsayid\nsayne\nsayon\nsayst\nsazes\nscabs\nscads\nscaff\nscags\nscail\nscala\nscald\nscale\nscall\nscalp\nscaly\nscamp\nscams\nscand\nscans\nscant\nscapa\nscape\nscapi\nscare\nscarf\nscarp\nscars\nscart\nscary\nscath\nscats\nscatt\nscaud\nscaup\nscaur\nscaws\nsceat\nscena\nscend\nscene\nscent\nschav\nschif\nschmo\nschul\nschwa\nscifi\nscind\nscion\nscire\nsclim\nscobe\nscody\nscoff\nscogs\nscold\nscone\nscoog\nscoop\nscoot\nscopa\nscope\nscops\nscore\nscorn\nscorp\nscote\nscots\nscoug\nscoup\nscour\nscout\nscowl\nscowp\nscows\nscrab\nscrae\nscrag\nscram\nscran\nscrap\nscrat\nscraw\nscray\nscree\nscrew\nscrim\nscrip\nscrob\nscrod\nscrog\nscroo\nscrow\nscrub\nscrum\nscuba\nscudi\nscudo\nscuds\nscuff\nscuft\nscugs\nsculk\nscull\nsculp\nsculs\nscums\nscups\nscurf\nscurs\nscuse\nscuta\nscute\nscuts\nscuzz\nscyes\nsdayn\nsdein\nseals\nseame\nseams\nseamy\nseans\nseare\nsears\nsease\nseats\nseaze\nsebum\nsecco\nsechs\nsects\nsedan\nseder\nsedes\nsedge\nsedgy\nsedum\nseeds\nseedy\nseeks\nseeld\nseels\nseely\nseems\nseeps\nseepy\nseers\nsefer\nsegar\nsegas\nsegni\nsegno\nsegol\nsegos\nsegue\nsehri\nseifs\nseils\nseine\nseirs\nseise\nseism\nseity\nseiza\nseize\nsekos\nsekts\nselah\nseles\nselfs\nselfy\nselky\nsella\nselle\nsells\nselva\nsemas\nsemee\nsemen\nsemes\nsemie\nsemis\nsenas\nsends\nsenes\nsenex\nsengi\nsenna\nsenor\nsensa\nsense\nsensi\nsensu\nsente\nsenti\nsents\nsenvy\nsenza\nsepad\nsepal\nsepia\nsepic\nsepoy\nseppo\nsepta\nsepts\nserac\nserai\nseral\nsered\nserer\nseres\nserfs\nserge\nseria\nseric\nserif\nserin\nserir\nserks\nseron\nserow\nserra\nserre\nserrs\nserry\nserum\nserve\nservo\nsesey\nsessa\nsetae\nsetal\nseter\nseths\nseton\nsetts\nsetup\nsevak\nseven\nsever\nsevir\nsewan\nsewar\nsewed\nsewel\nsewen\nsewer\nsewin\nsexed\nsexer\nsexes\nsexor\nsexto\nsexts\nseyen\nsezes\nshack\nshade\nshads\nshady\nshaft\nshags\nshahs\nshaka\nshake\nshako\nshakt\nshaky\nshale\nshall\nshalm\nshalt\nshaly\nshama\nshame\nshams\nshand\nshank\nshans\nshape\nshaps\nshard\nshare\nshark\nsharn\nsharp\nshart\nshash\nshaul\nshave\nshawl\nshawm\nshawn\nshaws\nshaya\nshays\nshchi\nsheaf\nsheal\nshear\nsheas\nsheds\nsheel\nsheen\nsheep\nsheer\nsheet\nsheik\nshelf\nshell\nshend\nsheng\nshent\nsheol\nsherd\nshere\nshero\nshets\nsheva\nshewn\nshews\nshiai\nshied\nshiel\nshier\nshies\nshift\nshill\nshily\nshims\nshine\nshins\nshiny\nshiok\nships\nshire\nshirk\nshirr\nshirs\nshirt\nshish\nshiso\nshist\nshite\nshits\nshiur\nshiva\nshive\nshivs\nshlep\nshlub\nshmek\nshmoe\nshoal\nshoat\nshock\nshoed\nshoer\nshoes\nshogi\nshogs\nshoji\nshojo\nshola\nshone\nshonk\nshook\nshool\nshoon\nshoos\nshoot\nshope\nshops\nshore\nshorl\nshorn\nshort\nshote\nshots\nshott\nshoud\nshout\nshove\nshowd\nshown\nshows\nshowy\nshoyu\nshred\nshrew\nshris\nshrow\nshrub\nshrug\nshtar\nshtik\nshtum\nshtup\nshuba\nshuck\nshule\nshuln\nshuls\nshuns\nshunt\nshura\nshush\nshute\nshuts\nshwas\nshyer\nshyly\nsials\nsibbs\nsibia\nsibyl\nsices\nsicht\nsicko\nsicks\nsicky\nsidas\nsided\nsider\nsides\nsidey\nsidha\nsidhe\nsidle\nsiege\nsield\nsiens\nsient\nsieth\nsieur\nsieve\nsifts\nsighs\nsight\nsigil\nsigla\nsigma\nsigna\nsigns\nsigri\nsijos\nsikas\nsiker\nsikes\nsilds\nsiled\nsilen\nsiler\nsiles\nsilex\nsilks\nsilky\nsills\nsilly\nsilos\nsilts\nsilty\nsilva\nsimar\nsimas\nsimba\nsimis\nsimps\nsimul\nsince\nsinds\nsined\nsines\nsinew\nsinge\nsings\nsinhs\nsinks\nsinky\nsinsi\nsinus\nsiped\nsipes\nsippy\nsired\nsiree\nsiren\nsires\nsirih\nsiris\nsiroc\nsirra\nsirup\nsisal\nsises\nsissy\nsista\nsists\nsitar\nsitch\nsited\nsites\nsithe\nsitka\nsitup\nsitus\nsiver\nsixer\nsixes\nsixmo\nsixte\nsixth\nsixty\nsizar\nsized\nsizel\nsizer\nsizes\nskags\nskail\nskald\nskank\nskarn\nskart\nskate\nskats\nskatt\nskaws\nskean\nskear\nskeds\nskeed\nskeef\nskeen\nskeer\nskees\nskeet\nskeev\nskeez\nskegg\nskegs\nskein\nskelf\nskell\nskelm\nskelp\nskene\nskens\nskeos\nskeps\nskerm\nskers\nskets\nskews\nskids\nskied\nskier\nskies\nskiey\nskiff\nskill\nskimo\nskimp\nskims\nskink\nskins\nskint\nskios\nskips\nskirl\nskirr\nskirt\nskite\nskits\nskive\nskivy\nsklim\nskoal\nskobe\nskody\nskoff\nskofs\nskogs\nskols\nskool\nskort\nskosh\nskran\nskrik\nskroo\nskuas\nskugs\nskulk\nskull\nskunk\nskyed\nskyer\nskyey\nskyfs\nskyre\nskyrs\nskyte\nslabs\nslack\nslade\nslaes\nslags\nslaid\nslain\nslake\nslams\nslane\nslang\nslank\nslant\nslaps\nslart\nslash\nslate\nslats\nslaty\nslave\nslaws\nslays\nslebs\nsleds\nsleek\nsleep\nsleer\nsleet\nslept\nslews\nsleys\nslice\nslick\nslide\nslier\nslily\nslime\nslims\nslimy\nsling\nslink\nslipe\nslips\nslipt\nslish\nslits\nslive\nsloan\nslobs\nsloes\nslogs\nsloid\nslojd\nsloka\nslomo\nsloom\nsloop\nsloot\nslope\nslops\nslopy\nslorm\nslosh\nsloth\nslots\nslove\nslows\nsloyd\nslubb\nslubs\nslued\nslues\nsluff\nslugs\nsluit\nslump\nslums\nslung\nslunk\nslurb\nslurp\nslurs\nsluse\nslush\nsluts\nslyer\nslyly\nslype\nsmaak\nsmack\nsmaik\nsmall\nsmalm\nsmalt\nsmarm\nsmart\nsmash\nsmaze\nsmear\nsmeek\nsmees\nsmeik\nsmeke\nsmell\nsmelt\nsmerk\nsmews\nsmick\nsmile\nsmily\nsmirk\nsmirr\nsmirs\nsmite\nsmith\nsmits\nsmize\nsmock\nsmogs\nsmoke\nsmoko\nsmoky\nsmolt\nsmoor\nsmoot\nsmore\nsmorg\nsmote\nsmout\nsmowt\nsmugs\nsmurs\nsmush\nsmuts\nsnabs\nsnack\nsnafu\nsnags\nsnail\nsnake\nsnaky\nsnaps\nsnare\nsnarf\nsnark\nsnarl\nsnars\nsnary\nsnash\nsnath\nsnaws\nsnead\nsneak\nsneap\nsnebs\nsneck\nsneds\nsneed\nsneer\nsnees\nsnell\nsnibs\nsnick\nsnide\nsnied\nsnies\nsniff\nsnift\nsnigs\nsnipe\nsnips\nsnipy\nsnirt\nsnits\nsnive\nsnobs\nsnods\nsnoek\nsnoep\nsnogs\nsnoke\nsnood\nsnook\nsnool\nsnoop\nsnoot\nsnore\nsnort\nsnots\nsnout\nsnowk\nsnows\nsnowy\nsnubs\nsnuck\nsnuff\nsnugs\nsnush\nsnyes\nsoaks\nsoaps\nsoapy\nsoare\nsoars\nsoave\nsobas\nsober\nsocas\nsoces\nsocia\nsocko\nsocks\nsocle\nsodas\nsoddy\nsodic\nsodom\nsofar\nsofas\nsofta\nsofts\nsofty\nsoger\nsoggy\nsohur\nsoils\nsoily\nsojas\nsojus\nsokah\nsoken\nsokes\nsokol\nsolah\nsolan\nsolar\nsolas\nsolde\nsoldi\nsoldo\nsolds\nsoled\nsolei\nsoler\nsoles\nsolid\nsolon\nsolos\nsolum\nsolus\nsolve\nsoman\nsomas\nsonar\nsonce\nsonde\nsones\nsongo\nsongs\nsongy\nsonic\nsonly\nsonne\nsonny\nsonse\nsonsy\nsooey\nsooks\nsooky\nsoole\nsools\nsooms\nsoops\nsoote\nsooth\nsoots\nsooty\nsophs\nsophy\nsopor\nsoppy\nsopra\nsoral\nsoras\nsorbi\nsorbo\nsorbs\nsorda\nsordo\nsords\nsored\nsoree\nsorel\nsorer\nsores\nsorex\nsorgo\nsorns\nsorra\nsorry\nsorta\nsorts\nsorus\nsoths\nsotol\nsotto\nsouce\nsouct\nsough\nsouks\nsouls\nsouly\nsoums\nsound\nsoups\nsoupy\nsours\nsouse\nsouth\nsouts\nsowar\nsowce\nsowed\nsower\nsowff\nsowfs\nsowle\nsowls\nsowms\nsownd\nsowne\nsowps\nsowse\nsowth\nsoxes\nsoyas\nsoyle\nsoyuz\nsozin\nspace\nspack\nspacy\nspade\nspado\nspads\nspaed\nspaer\nspaes\nspags\nspahi\nspail\nspain\nspait\nspake\nspald\nspale\nspall\nspalt\nspams\nspane\nspang\nspank\nspans\nspard\nspare\nspark\nspars\nspart\nspasm\nspate\nspats\nspaul\nspawl\nspawn\nspaws\nspayd\nspays\nspaza\nspazz\nspeak\nspeal\nspean\nspear\nspeat\nspeck\nspecs\nspect\nspeed\nspeel\nspeer\nspeil\nspeir\nspeks\nspeld\nspelk\nspell\nspelt\nspend\nspent\nspeos\nsperm\nspesh\nspets\nspeug\nspews\nspewy\nspial\nspica\nspice\nspick\nspics\nspicy\nspide\nspied\nspiel\nspier\nspies\nspiff\nspifs\nspike\nspiks\nspiky\nspile\nspill\nspilt\nspims\nspina\nspine\nspink\nspins\nspiny\nspire\nspirt\nspiry\nspite\nspits\nspitz\nspivs\nsplat\nsplay\nsplit\nsplog\nspode\nspods\nspoil\nspoke\nspoof\nspook\nspool\nspoom\nspoon\nspoor\nspoot\nspore\nspork\nsport\nsposa\nsposh\nsposo\nspots\nspout\nsprad\nsprag\nsprat\nspray\nspred\nspree\nsprew\nsprig\nsprit\nsprod\nsprog\nsprue\nsprug\nspuds\nspued\nspuer\nspues\nspugs\nspule\nspume\nspumy\nspunk\nspurn\nspurs\nspurt\nsputa\nspyal\nspyre\nsquab\nsquad\nsquat\nsquaw\nsquee\nsqueg\nsquib\nsquid\nsquit\nsquiz\nsrsly\nstabs\nstack\nstade\nstaff\nstage\nstags\nstagy\nstaid\nstaig\nstain\nstair\nstake\nstale\nstalk\nstall\nstamp\nstand\nstane\nstang\nstank\nstans\nstaph\nstaps\nstare\nstark\nstarn\nstarr\nstars\nstart\nstary\nstash\nstate\nstats\nstatu\nstaun\nstave\nstaws\nstays\nstead\nsteak\nsteal\nsteam\nstean\nstear\nstedd\nstede\nsteds\nsteed\nsteek\nsteel\nsteem\nsteen\nsteep\nsteer\nsteez\nsteik\nsteil\nstein\nstela\nstele\nstell\nsteme\nstems\nstend\nsteno\nstens\nstent\nsteps\nstept\nstere\nstern\nstets\nstews\nstewy\nsteys\nstich\nstick\nstied\nsties\nstiff\nstilb\nstile\nstill\nstilt\nstime\nstims\nstimy\nsting\nstink\nstint\nstipa\nstipe\nstire\nstirk\nstirp\nstirs\nstive\nstivy\nstoae\nstoai\nstoas\nstoat\nstobs\nstock\nstoep\nstogs\nstogy\nstoic\nstoit\nstoke\nstole\nstoln\nstoma\nstomp\nstond\nstone\nstong\nstonk\nstonn\nstony\nstood\nstook\nstool\nstoop\nstoor\nstope\nstops\nstopt\nstore\nstork\nstorm\nstory\nstoss\nstots\nstott\nstoun\nstoup\nstour\nstout\nstove\nstown\nstowp\nstows\nstrad\nstrae\nstrag\nstrak\nstrap\nstraw\nstray\nstrep\nstrew\nstria\nstrig\nstrim\nstrip\nstrop\nstrow\nstroy\nstrum\nstrut\nstubs\nstuck\nstucs\nstude\nstuds\nstudy\nstuff\nstull\nstulm\nstumm\nstump\nstums\nstung\nstunk\nstuns\nstunt\nstupa\nstupe\nsture\nsturt\nstush\nstyed\nstyes\nstyle\nstyli\nstylo\nstyme\nstymy\nstyre\nstyte\nsuave\nsubah\nsubak\nsubas\nsubby\nsuber\nsubha\nsucci\nsucks\nsucky\nsucre\nsudan\nsudds\nsudor\nsudsy\nsuede\nsuent\nsuers\nsuete\nsuets\nsuety\nsugan\nsugar\nsughs\nsugos\nsuhur\nsuids\nsuing\nsuint\nsuite\nsuits\nsujee\nsukhs\nsukis\nsukuk\nsulci\nsulfa\nsulfo\nsulks\nsulky\nsulls\nsully\nsulph\nsulus\nsumac\nsumis\nsumma\nsumos\nsumph\nsumps\nsunis\nsunks\nsunna\nsunns\nsunny\nsunts\nsunup\nsuona\nsuped\nsuper\nsupes\nsupra\nsurah\nsural\nsuras\nsurat\nsurds\nsured\nsurer\nsures\nsurfs\nsurfy\nsurge\nsurgy\nsurly\nsurra\nsused\nsuses\nsushi\nsusus\nsutor\nsutra\nsutta\nswabs\nswack\nswads\nswage\nswags\nswail\nswain\nswale\nswaly\nswami\nswamp\nswamy\nswang\nswank\nswans\nswaps\nswapt\nsward\nsware\nswarf\nswarm\nswart\nswash\nswath\nswats\nswayl\nsways\nsweal\nswear\nsweat\nswede\nsweed\nsweel\nsweep\nsweer\nswees\nsweet\nsweir\nswell\nswelt\nswept\nswerf\nsweys\nswies\nswift\nswigs\nswile\nswill\nswims\nswine\nswing\nswink\nswipe\nswire\nswirl\nswish\nswiss\nswith\nswits\nswive\nswizz\nswobs\nswole\nswoll\nswoln\nswoon\nswoop\nswops\nswopt\nsword\nswore\nsworn\nswots\nswoun\nswung\nsybbe\nsybil\nsyboe\nsybow\nsycee\nsyces\nsycon\nsyeds\nsyens\nsyker\nsykes\nsylis\nsylph\nsylva\nsymar\nsynch\nsyncs\nsynds\nsyned\nsynes\nsynod\nsynth\nsyped\nsypes\nsyphs\nsyrah\nsyren\nsyrup\nsysop\nsythe\nsyver\ntaals\ntaata\ntabac\ntabby\ntaber\ntabes\ntabid\ntabis\ntabla\ntable\ntabls\ntaboo\ntabor\ntabos\ntabun\ntabus\ntacan\ntaces\ntacet\ntache\ntachi\ntacho\ntachs\ntacit\ntacks\ntacky\ntacos\ntacts\ntadah\ntaels\ntaffy\ntafia\ntaggy\ntagma\ntagua\ntahas\ntahrs\ntaiga\ntaigs\ntaiko\ntails\ntains\ntaint\ntaira\ntaish\ntaits\ntajes\ntakas\ntaken\ntaker\ntakes\ntakhi\ntakht\ntakin\ntakis\ntakky\ntalak\ntalaq\ntalar\ntalas\ntalcs\ntalcy\ntalea\ntaler\ntales\ntalik\ntalks\ntalky\ntalls\ntally\ntalma\ntalon\ntalpa\ntaluk\ntalus\ntamal\ntamas\ntamed\ntamer\ntames\ntamin\ntamis\ntammy\ntamps\ntanas\ntanga\ntangi\ntango\ntangs\ntangy\ntanhs\ntania\ntanka\ntanks\ntanky\ntanna\ntansu\ntansy\ntante\ntanti\ntanto\ntanty\ntapas\ntaped\ntapen\ntaper\ntapes\ntapet\ntapir\ntapis\ntappa\ntapus\ntaras\ntardo\ntards\ntardy\ntared\ntares\ntarga\ntarge\ntarka\ntarns\ntaroc\ntarok\ntaros\ntarot\ntarps\ntarre\ntarry\ntarse\ntarsi\ntarte\ntarts\ntarty\ntarzy\ntasar\ntasca\ntased\ntaser\ntases\ntasks\ntassa\ntasse\ntasso\ntaste\ntasto\ntasty\ntatar\ntater\ntates\ntaths\ntatie\ntatou\ntatts\ntatty\ntatus\ntaube\ntauld\ntaunt\ntauon\ntaupe\ntauts\ntauty\ntavah\ntavas\ntaver\ntawaf\ntawai\ntawas\ntawed\ntawer\ntawie\ntawny\ntawse\ntawts\ntaxed\ntaxer\ntaxes\ntaxis\ntaxol\ntaxon\ntaxor\ntaxus\ntayra\ntazza\ntazze\nteach\nteade\nteads\nteaed\nteaks\nteals\nteams\ntears\nteary\ntease\nteats\nteaze\ntechs\ntechy\ntecta\ntecum\nteddy\nteels\nteems\nteend\nteene\nteens\nteeny\nteers\nteeth\nteets\nteffs\nteggs\ntegua\ntegus\ntehee\ntehrs\nteiid\nteils\nteind\nteins\ntekke\ntelae\ntelco\nteles\ntelex\ntelia\ntelic\ntells\ntelly\nteloi\ntelos\ntemed\ntemes\ntempi\ntempo\ntemps\ntempt\ntemse\ntench\ntends\ntendu\ntenes\ntenet\ntenge\ntenia\ntenne\ntenno\ntenny\ntenon\ntenor\ntense\ntenth\ntents\ntenty\ntenue\ntepal\ntepas\ntepee\ntepid\ntepoy\nterai\nteras\nterce\nterek\nteres\nterfe\nterfs\nterga\nterms\nterne\nterns\nterra\nterre\nterry\nterse\nterts\nterza\ntesla\ntesta\nteste\ntests\ntesty\ntetes\nteths\ntetra\ntetri\nteuch\nteugh\ntewed\ntewel\ntewit\ntexas\ntexes\ntexta\ntexts\nthack\nthagi\nthaim\nthale\nthali\nthana\nthane\nthang\nthank\nthans\nthanx\ntharm\nthars\nthaws\nthawt\nthawy\nthebe\ntheca\ntheed\ntheek\nthees\ntheft\nthegn\ntheic\nthein\ntheir\nthelf\nthema\ntheme\nthens\ntheor\ntheow\nthere\ntherm\nthese\nthesp\ntheta\nthete\nthews\nthewy\nthick\nthief\nthigh\nthigs\nthilk\nthill\nthine\nthing\nthink\nthins\nthiol\nthird\nthirl\nthoft\nthole\ntholi\nthong\nthorn\nthoro\nthorp\nthose\nthots\nthous\nthowl\nthrae\nthraw\nthree\nthrew\nthrid\nthrip\nthrob\nthroe\nthrow\nthrum\nthuds\nthugs\nthuja\nthumb\nthump\nthunk\nthurl\nthuya\nthyme\nthymi\nthymy\ntians\ntiara\ntiare\ntiars\ntibia\ntical\nticca\nticed\ntices\ntichy\nticks\nticky\ntidal\ntiddy\ntided\ntides\ntiefs\ntiers\ntiffs\ntifos\ntifts\ntiger\ntiges\ntight\ntigon\ntikas\ntikes\ntikia\ntikis\ntikka\ntilak\ntilde\ntiled\ntiler\ntiles\ntills\ntilly\ntilth\ntilts\ntimbo\ntimed\ntimer\ntimes\ntimid\ntimon\ntimps\ntinas\ntinct\ntinds\ntinea\ntined\ntines\ntinge\ntings\ntinks\ntinny\ntinto\ntints\ntinty\ntipis\ntippy\ntipsy\ntipup\ntired\ntires\ntirls\ntiros\ntirrs\ntirth\ntitan\ntitar\ntitas\ntitch\ntiter\ntithe\ntithi\ntitin\ntitir\ntitis\ntitle\ntitre\ntitty\ntitup\ntiyin\ntiyns\ntizes\ntizzy\ntoads\ntoady\ntoast\ntoaze\ntocks\ntocky\ntocos\ntoday\ntodde\ntoddy\ntodea\ntodos\ntoeas\ntoffs\ntoffy\ntofts\ntofus\ntogae\ntogas\ntoged\ntoges\ntogue\ntohos\ntoidy\ntoile\ntoils\ntoing\ntoise\ntoits\ntoity\ntokay\ntoked\ntoken\ntoker\ntokes\ntokos\ntolan\ntolar\ntolas\ntoled\ntoles\ntolls\ntolly\ntolts\ntolus\ntolyl\ntoman\ntombo\ntombs\ntomen\ntomes\ntomia\ntomin\ntomme\ntommy\ntomos\ntomoz\ntonal\ntondi\ntondo\ntoned\ntoner\ntones\ntoney\ntonga\ntongs\ntonic\ntonka\ntonks\ntonne\ntonus\ntools\ntooms\ntoons\ntooth\ntoots\ntopaz\ntoped\ntopee\ntopek\ntoper\ntopes\ntophe\ntophi\ntophs\ntopic\ntopis\ntopoi\ntopos\ntoppy\ntoque\ntorah\ntoran\ntoras\ntorch\ntorcs\ntores\ntoric\ntorii\ntoros\ntorot\ntorrs\ntorse\ntorsi\ntorsk\ntorso\ntorta\ntorte\ntorts\ntorus\ntosas\ntosed\ntoses\ntoshy\ntossy\ntosyl\ntotal\ntoted\ntotem\ntoter\ntotes\ntotty\ntouch\ntough\ntouks\ntouns\ntours\ntouse\ntousy\ntouts\ntouze\ntouzy\ntowai\ntowed\ntowel\ntower\ntowie\ntowno\ntowns\ntowny\ntowse\ntowsy\ntowts\ntowze\ntowzy\ntoxic\ntoxin\ntoyed\ntoyer\ntoyon\ntoyos\ntozed\ntozes\ntozie\ntrabs\ntrace\ntrack\ntract\ntrade\ntrads\ntrady\ntraga\ntragi\ntrags\ntragu\ntraik\ntrail\ntrain\ntrait\ntramp\ntrams\ntrank\ntranq\ntrans\ntrant\ntrape\ntrapo\ntraps\ntrapt\ntrash\ntrass\ntrats\ntratt\ntrave\ntrawl\ntrayf\ntrays\ntread\ntreat\ntreck\ntreed\ntreen\ntrees\ntrefa\ntreif\ntreks\ntrema\ntrems\ntrend\ntress\ntrest\ntrets\ntrews\ntreyf\ntreys\ntriac\ntriad\ntrial\ntribe\ntrice\ntrick\ntride\ntried\ntrier\ntries\ntrifa\ntriff\ntrigo\ntrigs\ntrike\ntrild\ntrill\ntrims\ntrine\ntrins\ntriol\ntrior\ntrios\ntripe\ntrips\ntripy\ntrist\ntrite\ntroad\ntroak\ntroat\ntrock\ntrode\ntrods\ntrogs\ntrois\ntroke\ntroll\ntromp\ntrona\ntronc\ntrone\ntronk\ntrons\ntroop\ntrooz\ntrope\ntropo\ntroth\ntrots\ntrout\ntrove\ntrows\ntroys\ntruce\ntruck\ntrued\ntruer\ntrues\ntrugo\ntrugs\ntrull\ntruly\ntrump\ntrunk\ntruss\ntrust\ntruth\ntryer\ntryke\ntryma\ntryps\ntryst\ntsade\ntsadi\ntsars\ntsked\ntsuba\ntsubo\ntuans\ntuart\ntuath\ntubae\ntubal\ntubar\ntubas\ntubby\ntubed\ntuber\ntubes\ntucks\ntufas\ntuffe\ntuffs\ntufts\ntufty\ntugra\ntuile\ntuina\ntuism\ntuktu\ntules\ntulip\ntulle\ntulpa\ntulps\ntulsi\ntumid\ntummy\ntumor\ntumps\ntumpy\ntunas\ntunds\ntuned\ntuner\ntunes\ntungs\ntunic\ntunny\ntupek\ntupik\ntuple\ntuque\nturbo\nturds\nturfs\nturfy\nturks\nturme\nturms\nturns\nturnt\nturon\nturps\nturrs\ntushy\ntusks\ntusky\ntutee\ntutes\ntutor\ntutti\ntutty\ntutus\ntuxes\ntuyer\ntwaes\ntwain\ntwals\ntwang\ntwank\ntwats\ntways\ntweak\ntweed\ntweel\ntween\ntweep\ntweer\ntweet\ntwerk\ntwerp\ntwice\ntwier\ntwigs\ntwill\ntwilt\ntwine\ntwink\ntwins\ntwiny\ntwire\ntwirk\ntwirl\ntwirp\ntwist\ntwite\ntwits\ntwixt\ntwocs\ntwoer\ntwonk\ntwyer\ntyees\ntyers\ntying\ntyiyn\ntykes\ntyler\ntymps\ntynde\ntyned\ntynes\ntypal\ntyped\ntypes\ntypey\ntypic\ntypos\ntypps\ntypto\ntyran\ntyred\ntyres\ntyros\ntythe\ntzars\nubacs\nubity\nudals\nudder\nudons\nudyog\nugali\nugged\nuhlan\nuhuru\nukase\nulama\nulans\nulcer\nulema\nulmin\nulmos\nulnad\nulnae\nulnar\nulnas\nulpan\nultra\nulvas\nulyie\nulzie\numami\numbel\number\numble\numbos\numbra\numbre\numiac\numiak\numiaq\nummah\nummas\nummed\numped\numphs\numpie\numpty\numrah\numras\nunagi\nunais\nunapt\nunarm\nunary\nunaus\nunbag\nunban\nunbar\nunbed\nunbid\nunbox\nuncap\nunces\nuncia\nuncle\nuncos\nuncoy\nuncus\nuncut\nundam\nundee\nunder\nundid\nundos\nundue\nundug\nuneth\nunfed\nunfit\nunfix\nungag\nunget\nungod\nungot\nungum\nunhat\nunhip\nunica\nunify\nunion\nunios\nunite\nunits\nunity\nunjam\nunked\nunket\nunkey\nunkid\nunkut\nunlap\nunlaw\nunlay\nunled\nunleg\nunlet\nunlid\nunlit\nunmad\nunman\nunmet\nunmew\nunmix\nunode\nunold\nunown\nunpay\nunpeg\nunpen\nunpin\nunply\nunpot\nunput\nunred\nunrid\nunrig\nunrip\nunsaw\nunsay\nunsee\nunset\nunsew\nunsex\nunsod\nunsub\nuntag\nuntax\nuntie\nuntil\nuntin\nunwed\nunwet\nunwit\nunwon\nunzip\nupbow\nupbye\nupdos\nupdry\nupend\nupful\nupjet\nuplay\nupled\nuplit\nupped\nupper\nupran\nuprun\nupsee\nupset\nupsey\nuptak\nupter\nuptie\nuraei\nurali\nuraos\nurare\nurari\nurase\nurate\nurban\nurbex\nurbia\nurdee\nureal\nureas\nuredo\nureic\nureid\nurena\nurent\nurged\nurger\nurges\nurial\nurine\nurite\nurman\nurnal\nurned\nurped\nursae\nursid\nurson\nurubu\nurupa\nurvas\nusage\nusens\nusers\nuseta\nusher\nusing\nusnea\nusnic\nusque\nustad\nuster\nusual\nusure\nusurp\nusury\nuteri\nutero\nutile\nutter\nuveal\nuveas\nuvula\nvacas\nvacay\nvacua\nvacui\nvacuo\nvadas\nvaded\nvades\nvadge\nvagal\nvague\nvagus\nvaids\nvails\nvaire\nvairs\nvairy\nvajra\nvakas\nvakil\nvales\nvalet\nvalid\nvalis\nvalli\nvalor\nvalse\nvalue\nvalve\nvamps\nvampy\nvanda\nvaned\nvanes\nvanga\nvangs\nvants\nvaped\nvaper\nvapes\nvapid\nvapor\nvaran\nvaras\nvarda\nvardo\nvardy\nvarec\nvares\nvaria\nvarix\nvarna\nvarus\nvarve\nvasal\nvases\nvasts\nvasty\nvatas\nvatha\nvatic\nvatje\nvatos\nvatus\nvauch\nvault\nvaunt\nvaute\nvauts\nvawte\nvaxes\nveale\nveals\nvealy\nveena\nveeps\nveers\nveery\nvegan\nvegas\nveges\nveggo\nvegie\nvegos\nvehme\nveils\nveily\nveins\nveiny\nvelar\nvelds\nveldt\nveles\nvells\nvelum\nvenae\nvenal\nvenas\nvends\nvendu\nveney\nvenge\nvenin\nvenom\nventi\nvents\nvenue\nvenus\nverba\nverbs\nverde\nverge\nverra\nverre\nverry\nversa\nverse\nverso\nverst\nverte\nverts\nvertu\nverve\nvespa\nvesta\nvests\nvetch\nveuve\nveves\nvexed\nvexer\nvexes\nvexil\nvezir\nvials\nviand\nvibed\nvibes\nvibex\nvibey\nvicar\nviced\nvices\nvichy\nvicus\nvideo\nviers\nvieux\nviews\nviewy\nvifda\nviffs\nvigas\nvigia\nvigil\nvigor\nvilde\nviler\nvilla\nville\nvilli\nvills\nvimen\nvinal\nvinas\nvinca\nvined\nviner\nvines\nvinew\nvinho\nvinic\nvinny\nvinos\nvints\nvinyl\nviola\nviold\nviols\nviper\nviral\nvired\nvireo\nvires\nvirga\nvirge\nvirgo\nvirid\nvirls\nvirtu\nvirus\nvisas\nvised\nvises\nvisie\nvisit\nvisna\nvisne\nvison\nvisor\nvista\nvisto\nvitae\nvital\nvitas\nvitex\nvitro\nvitta\nvivas\nvivat\nvivda\nviver\nvives\nvivid\nvivos\nvivre\nvixen\nvizir\nvizor\nvlast\nvleis\nvlies\nvlogs\nvoars\nvobla\nvocab\nvocal\nvoces\nvoddy\nvodka\nvodou\nvodun\nvoema\nvogie\nvogue\nvoice\nvoici\nvoids\nvoila\nvoile\nvoips\nvolae\nvolar\nvoled\nvoles\nvolet\nvolke\nvolks\nvolta\nvolte\nvolti\nvolts\nvolva\nvolve\nvomer\nvomit\nvoted\nvoter\nvotes\nvouch\nvouge\nvoulu\nvowed\nvowel\nvower\nvoxel\nvoxes\nvozhd\nvraic\nvrils\nvroom\nvrous\nvrouw\nvrows\nvuggs\nvuggy\nvughs\nvughy\nvulgo\nvulns\nvulva\nvutty\nvygie\nvying\nwaacs\nwacke\nwacko\nwacks\nwacky\nwadas\nwadds\nwaddy\nwaded\nwader\nwades\nwadge\nwadis\nwadts\nwafer\nwaffs\nwafts\nwaged\nwager\nwages\nwagga\nwagon\nwagyu\nwahay\nwahey\nwahoo\nwaide\nwaifs\nwaift\nwails\nwains\nwairs\nwaist\nwaite\nwaits\nwaive\nwakas\nwaked\nwaken\nwaker\nwakes\nwakfs\nwaldo\nwalds\nwaled\nwaler\nwales\nwalie\nwalis\nwalks\nwalla\nwalls\nwally\nwalty\nwaltz\nwamed\nwames\nwamus\nwands\nwaned\nwanes\nwaney\nwangs\nwanks\nwanky\nwanle\nwanly\nwanna\nwanta\nwants\nwanty\nwanze\nwaqfs\nwarbs\nwarby\nwards\nwared\nwares\nwarez\nwarks\nwarms\nwarns\nwarps\nwarre\nwarst\nwarts\nwarty\nwases\nwashi\nwashy\nwasms\nwasps\nwaspy\nwaste\nwasts\nwatap\nwatch\nwater\nwatts\nwauff\nwaugh\nwauks\nwaulk\nwauls\nwaurs\nwaved\nwaver\nwaves\nwavey\nwawas\nwawes\nwawls\nwaxed\nwaxen\nwaxer\nwaxes\nwayed\nwazir\nwazoo\nweald\nweals\nweamb\nweans\nwears\nweary\nweave\nwebby\nweber\nwecht\nwedel\nwedge\nwedgy\nweeds\nweedy\nweeis\nweeke\nweeks\nweels\nweems\nweens\nweeny\nweeps\nweepy\nweest\nweete\nweets\nwefte\nwefts\nweids\nweigh\nweils\nweird\nweirs\nweise\nweize\nwekas\nwelch\nwelds\nwelke\nwelks\nwelkt\nwells\nwelly\nwelsh\nwelts\nwembs\nwench\nwends\nwenge\nwenny\nwents\nwerfs\nweros\nwersh\nwests\nwetas\nwetly\nwexed\nwexes\nwhack\nwhale\nwhamo\nwhams\nwhang\nwhaps\nwhare\nwharf\nwhata\nwhats\nwhaup\nwhaur\nwheal\nwhear\nwheat\nwheek\nwheel\nwheen\nwheep\nwheft\nwhelk\nwhelm\nwhelp\nwhens\nwhere\nwhets\nwhews\nwheys\nwhich\nwhids\nwhies\nwhiff\nwhift\nwhigs\nwhile\nwhilk\nwhims\nwhine\nwhins\nwhiny\nwhios\nwhips\nwhipt\nwhirl\nwhirr\nwhirs\nwhish\nwhisk\nwhiss\nwhist\nwhite\nwhits\nwhity\nwhizz\nwhole\nwhomp\nwhoof\nwhoop\nwhoot\nwhops\nwhore\nwhorl\nwhort\nwhose\nwhoso\nwhows\nwhump\nwhups\nwhyda\nwicca\nwicks\nwicky\nwiddy\nwiden\nwider\nwides\nwidow\nwidth\nwield\nwiels\nwifed\nwifes\nwifey\nwifie\nwifts\nwifty\nwigan\nwigga\nwiggy\nwight\nwikis\nwilco\nwilds\nwiled\nwiles\nwilga\nwilis\nwilja\nwills\nwilly\nwilts\nwimps\nwimpy\nwince\nwinch\nwinds\nwindy\nwined\nwines\nwiney\nwinge\nwings\nwingy\nwinks\nwinky\nwinna\nwinns\nwinos\nwinze\nwiped\nwiper\nwipes\nwired\nwirer\nwires\nwirra\nwirri\nwised\nwiser\nwises\nwisha\nwisht\nwisps\nwispy\nwists\nwitan\nwitch\nwited\nwites\nwithe\nwiths\nwithy\nwitty\nwived\nwiver\nwives\nwizen\nwizes\nwizzo\nwoads\nwoady\nwoald\nwocks\nwodge\nwodgy\nwoful\nwojus\nwoken\nwoker\nwokka\nwolds\nwolfs\nwolly\nwolve\nwoman\nwomas\nwombs\nwomby\nwomen\nwomyn\nwonga\nwongi\nwonks\nwonky\nwonts\nwoods\nwoody\nwooed\nwooer\nwoofs\nwoofy\nwoold\nwools\nwooly\nwoons\nwoops\nwoopy\nwoose\nwoosh\nwootz\nwoozy\nwords\nwordy\nworks\nworky\nworld\nworms\nwormy\nworry\nworse\nworst\nworth\nworts\nwould\nwound\nwoven\nwowed\nwowee\nwowse\nwoxen\nwrack\nwrang\nwraps\nwrapt\nwrast\nwrate\nwrath\nwrawl\nwreak\nwreck\nwrens\nwrest\nwrick\nwried\nwrier\nwries\nwring\nwrist\nwrite\nwrits\nwroke\nwrong\nwroot\nwrote\nwroth\nwrung\nwryer\nwryly\nwuddy\nwudus\nwuffs\nwulls\nwunga\nwurst\nwuses\nwushu\nwussy\nwuxia\nwyled\nwyles\nwynds\nwynns\nwyted\nwytes\nwythe\nxebec\nxenia\nxenic\nxenon\nxeric\nxerox\nxerus\nxoana\nxolos\nxrays\nxviii\nxylan\nxylem\nxylic\nxylol\nxylyl\nxysti\nxysts\nyaars\nyaass\nyabas\nyabba\nyabby\nyacca\nyacht\nyacka\nyacks\nyadda\nyaffs\nyager\nyages\nyagis\nyagna\nyahoo\nyaird\nyajna\nyakka\nyakow\nyales\nyamen\nyampa\nyampy\nyamun\nyandy\nyangs\nyanks\nyapok\nyapon\nyapps\nyappy\nyarak\nyarco\nyards\nyarer\nyarfa\nyarks\nyarns\nyarra\nyarrs\nyarta\nyarto\nyates\nyatra\nyauds\nyauld\nyaups\nyawed\nyawey\nyawls\nyawns\nyawny\nyawps\nyayas\nybore\nyclad\nycled\nycond\nydrad\nydred\nyeads\nyeahs\nyealm\nyeans\nyeard\nyearn\nyears\nyeast\nyecch\nyechs\nyechy\nyedes\nyeeds\nyeeek\nyeesh\nyeggs\nyelks\nyells\nyelms\nyelps\nyelts\nyenta\nyente\nyerba\nyerds\nyerks\nyeses\nyesks\nyests\nyesty\nyetis\nyetts\nyeuch\nyeuks\nyeuky\nyeven\nyeves\nyewen\nyexed\nyexes\nyfere\nyield\nyiked\nyikes\nyills\nyince\nyipes\nyippy\nyirds\nyirks\nyirrs\nyirth\nyites\nyitie\nylems\nylide\nylids\nylike\nylkes\nymolt\nympes\nyobbo\nyobby\nyocks\nyodel\nyodhs\nyodle\nyogas\nyogee\nyoghs\nyogic\nyogin\nyogis\nyohah\nyohay\nyoick\nyojan\nyokan\nyoked\nyokeg\nyokel\nyoker\nyokes\nyokul\nyolks\nyolky\nyolps\nyomim\nyomps\nyonic\nyonis\nyonks\nyonny\nyoofs\nyoops\nyopos\nyoppo\nyores\nyorga\nyorks\nyorps\nyouks\nyoung\nyourn\nyours\nyourt\nyouse\nyouth\nyowed\nyowes\nyowie\nyowls\nyowsa\nyowza\nyoyos\nyrapt\nyrent\nyrivd\nyrneh\nysame\nytost\nyuans\nyucas\nyucca\nyucch\nyucko\nyucks\nyucky\nyufts\nyugas\nyuked\nyukes\nyukky\nyukos\nyulan\nyules\nyummo\nyummy\nyumps\nyupon\nyuppy\nyurta\nyurts\nyuzus\nzabra\nzacks\nzaida\nzaide\nzaidy\nzaire\nzakat\nzamac\nzamak\nzaman\nzambo\nzamia\nzamis\nzanja\nzante\nzanza\nzanze\nzappy\nzarda\nzarfs\nzaris\nzatis\nzawns\nzaxes\nzayde\nzayin\nzazen\nzeals\nzebec\nzebra\nzebub\nzebus\nzedas\nzeera\nzeins\nzendo\nzerda\nzerks\nzeros\nzests\nzesty\nzetas\nzexes\nzezes\nzhomo\nzhush\nzhuzh\nzibet\nziffs\nzigan\nzikrs\nzilas\nzilch\nzilla\nzills\nzimbi\nzimbs\nzinco\nzincs\nzincy\nzineb\nzines\nzings\nzingy\nzinke\nzinky\nzinos\nzippo\nzippy\nziram\nzitis\nzitty\nzizel\nzizit\nzlote\nzloty\nzoaea\nzobos\nzobus\nzocco\nzoeae\nzoeal\nzoeas\nzoism\nzoist\nzokor\nzolle\nzombi\nzonae\nzonal\nzonda\nzoned\nzoner\nzones\nzonks\nzooea\nzooey\nzooid\nzooks\nzooms\nzoomy\nzoons\nzooty\nzoppa\nzoppo\nzoril\nzoris\nzorro\nzorse\nzouks\nzowee\nzowie\nzulus\nzupan\nzupas\nzuppa\nzurfs\nzuzim\nzygal\nzygon\nzymes\nzymic".split("\n"),i=(n,e,t=[])=>{const a=document.createElementNS("http://www.w3.org/2000/svg",n);return Object.keys(e).forEach((n=>{a.setAttribute(n,String(e[n]))})),t.length&&t.forEach((n=>{const e=i(...n);a.appendChild(e)})),a},r=n=>"string"==typeof n?n:n&&n.class?n.class&&"string"==typeof n.class?n.class.split(" "):n.class&&Array.isArray(n.class)?n.class:"":"",o=(n,{nameAttr:e,icons:t,attrs:a})=>{const o=n.getAttribute(e);if(null==o)return;const s=t[o.replace(/(\w)(\w*)(_|-|\s*)/g,((n,e,t)=>e.toUpperCase()+t.toLowerCase()))];if(!s)return console.warn(`${n.outerHTML} icon name was not found in the provided icons object.`);const l=(n=>Array.from(n.attributes).reduce(((n,e)=>(n[e.name]=e.value,n)),{}))(n),[c,u,d]=s,h={...u,"data-lucide":o,...a,...l},f=["lucide",`lucide-${o}`,l,a].flatMap(r).map((n=>n.trim())).filter(Boolean).filter(((n,e,t)=>t.indexOf(n)===e)).join(" ");f&&Object.assign(h,{class:f});const m=(([n,e,t])=>i(n,e,t))([c,h,d]);return n.parentNode?.replaceChild(m,n)},s={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};var l=function(n,e,t,a){return new(t||(t=Promise))((function(i,r){function o(n){try{l(a.next(n))}catch(n){r(n)}}function s(n){try{l(a.throw(n))}catch(n){r(n)}}function l(n){var e;n.done?i(n.value):(e=n.value,e instanceof t?e:new t((function(n){n(e)}))).then(o,s)}l((a=a.apply(n,e||[])).next())}))};(({icons:n={},nameAttr:e="data-lucide",attrs:t={}}={})=>{if(!Object.values(n).length)throw new Error("Please provide an icons object.\nIf you want to use all the icons you can import it like:\n `import { createIcons, icons } from 'lucide';\nlucide.createIcons({icons});`");if("undefined"==typeof document)throw new Error("`createIcons()` only works in a browser environment.");const a=document.querySelectorAll(`[${e}]`);if(Array.from(a).forEach((a=>o(a,{nameAttr:e,icons:n,attrs:t}))),"data-lucide"===e){const e=document.querySelectorAll("[icon-name]");e.length>0&&(console.warn("[Lucide] Some icons were found with the now deprecated icon-name attribute. These will still be replaced for backwards compatibility, but will no longer be supported in v1.0 and you should switch to data-lucide"),Array.from(e).forEach((e=>o(e,{nameAttr:"icon-name",icons:n,attrs:t}))))}})({icons:{Info:["svg",s,[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"M12 16v-4"}],["path",{d:"M12 8h.01"}]]],ChartBar:["svg",s,[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16"}],["path",{d:"M7 16h8"}],["path",{d:"M7 11h12"}],["path",{d:"M7 6h3"}]]],Trophy:["svg",s,[["path",{d:"M6 9H4.5a2.5 2.5 0 0 1 0-5H6"}],["path",{d:"M18 9h1.5a2.5 2.5 0 0 0 0-5H18"}],["path",{d:"M4 22h16"}],["path",{d:"M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20.24 7 22"}],["path",{d:"M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20.24 17 22"}],["path",{d:"M18 2H6v7a6 6 0 0 0 12 0V2Z"}]]],CircleUserRound:["svg",s,[["path",{d:"M18 20a6 6 0 0 0-12 0"}],["circle",{cx:"12",cy:"10",r:"4"}],["circle",{cx:"12",cy:"12",r:"10"}]]],Settings2:["svg",s,[["path",{d:"M20 7h-9"}],["path",{d:"M14 17H5"}],["circle",{cx:"17",cy:"17",r:"3"}],["circle",{cx:"7",cy:"7",r:"3"}]]]}}),t(42);const c=document.querySelector(".wordle-grid-container"),u=document.querySelector(".key-container"),d=document.querySelector(".winner-note");let h=[];function f(n=!0){u.style.opacity=n?"0.5":"1",u.style.pointerEvents=n?"none":"all"}function m(n,e,t,a){return l(this,void 0,void 0,(function*(){return new Promise(((i,r)=>{y(d.firstElementChild,n),d.classList.add(a.toString()),setTimeout((()=>{d.classList.add("displayed")}),e),setTimeout((()=>{d.classList.remove("displayed"),setTimeout((()=>{d.classList.contains("displayed")||d.classList.remove(a.toString())}),250),h.forEach((n=>{n.style.opacity="1"})),i()}),t+e)}))}))}function p(e,t){return h[e*n.WORD_LENGTH+t]}function g(e){const t=h.slice(e*n.WORD_LENGTH,e*n.WORD_LENGTH+n.WORD_LENGTH);let a="";return t.forEach((n=>a+=n.firstElementChild.textContent)),a}function y(n,e){n.textContent=e}function b(n,e,t=500,a=250,i){return l(this,void 0,void 0,(function*(){return new Promise(((r,o)=>l(this,void 0,void 0,(function*(){"dixie"===e.word.toLowerCase()&&t>0&&(yield m("❤️❤️❤️",0,1500,"message"));for(let o=0;o{s.classList.add("flipped")}),o*a),setTimeout((()=>l(this,void 0,void 0,(function*(){let t=document.querySelector(`.keycode-${e.word[o].toLowerCase()}`);"Correct"===e.result[o]?(s.classList.add("correct"),t.classList.add("correct"),t.classList.remove("misplaced"),t.classList.remove("wrong")):"Misplaced"===e.result[o]?(s.classList.add("misplaced"),t.classList.contains("correct")||t.classList.add("misplaced"),t.classList.remove("wrong")):(s.classList.add("wrong"),t.classList.contains("correct")||t.classList.contains("misplaced")||t.classList.add("wrong")),o===e.result.length-1&&(i&&e.correctLetters()===e.result.length&&(yield v(n)),r())}))),o*a+t/2)}}))))}))}function v(e){return l(this,void 0,void 0,(function*(){return new Promise(((t,a)=>{setTimeout((()=>{for(let t=0;t=e*n.WORD_LENGTH+n.WORD_LENGTH||t{i.classList.add("jumped"),a===n.WORD_LENGTH-1&&setTimeout((()=>{t()}),500)}),100*a)}}),250)}))}))}var x=t(714);const k=new(t.n(x)())("yet-another-wordle-clone!!!").shuffle(["aback","abase","abate","abbey","abbot","abhor","abide","abled","abode","abort","about","above","abuse","abyss","acorn","acrid","actor","acute","adage","adapt","adept","admin","admit","adobe","adopt","adore","adorn","adult","affix","afire","afoot","afoul","after","again","agape","agate","agent","agile","aging","aglow","agony","agora","agree","ahead","aider","aisle","alarm","album","alert","algae","alibi","alien","align","alike","alive","allay","alley","allot","allow","alloy","aloft","alone","along","aloof","aloud","alpha","altar","alter","amass","amaze","amber","amble","amend","amiss","amity","among","ample","amply","amuse","angel","anger","angle","angry","angst","anime","ankle","annex","annoy","annul","anode","antic","anvil","aorta","apart","aphid","aping","apnea","apple","apply","apron","aptly","arbor","ardor","arena","argue","arise","armor","aroma","arose","array","arrow","arson","artsy","ascot","ashen","aside","askew","assay","asset","atoll","atone","attic","audio","audit","augur","aunty","avail","avert","avian","avoid","await","awake","award","aware","awash","awful","awoke","axial","axiom","axion","azure","bacon","badge","badly","bagel","baggy","baker","baler","balmy","banal","banjo","barge","baron","basal","basic","basil","basin","basis","baste","batch","bathe","baton","batty","bawdy","bayou","beach","beady","beard","beast","beech","beefy","befit","began","begat","beget","begin","begun","being","belch","belie","belle","belly","below","bench","beret","berry","berth","beset","betel","bevel","bezel","bible","bicep","biddy","bigot","bilge","billy","binge","bingo","biome","birch","birth","bison","bitty","black","blade","blame","bland","blank","blare","blast","blaze","bleak","bleat","bleed","bleep","blend","bless","blimp","blind","blink","bliss","blitz","bloat","block","bloke","blond","blood","bloom","blown","bluer","bluff","blunt","blurb","blurt","blush","board","boast","bobby","boney","bongo","bonus","booby","boost","booth","booty","booze","boozy","borax","borne","bosom","bossy","botch","bough","boule","bound","bowel","boxer","brace","braid","brain","brake","brand","brash","brass","brave","bravo","brawl","brawn","bread","break","breed","briar","bribe","brick","bride","brief","brine","bring","brink","briny","brisk","broad","broil","broke","brood","brook","broom","broth","brown","brunt","brush","brute","buddy","budge","buggy","bugle","build","built","bulge","bulky","bully","bunch","bunny","burly","burnt","burst","bused","bushy","butch","butte","buxom","buyer","bylaw","cabal","cabby","cabin","cable","cacao","cache","cacti","caddy","cadet","cagey","cairn","camel","cameo","canal","candy","canny","canoe","canon","caper","caput","carat","cargo","carol","carry","carve","caste","catch","cater","catty","caulk","cause","cavil","cease","cedar","cello","chafe","chaff","chain","chair","chalk","champ","chant","chaos","chard","charm","chart","chase","chasm","cheap","cheat","check","cheek","cheer","chess","chest","chick","chide","chief","child","chili","chill","chime","china","chirp","chock","choir","choke","chord","chore","chose","chuck","chump","chunk","churn","chute","cider","cigar","cinch","circa","civic","civil","clack","claim","clamp","clang","clank","clash","clasp","class","clean","clear","cleat","cleft","clerk","click","cliff","climb","cling","clink","cloak","clock","clone","close","cloth","cloud","clout","clove","clown","cluck","clued","clump","clung","coach","coast","cobra","cocoa","colon","color","comet","comfy","comic","comma","conch","condo","conic","copse","coral","corer","corny","couch","cough","could","count","coupe","court","coven","cover","covet","covey","cower","coyly","crack","craft","cramp","crane","crank","crash","crass","crate","crave","crawl","craze","crazy","creak","cream","credo","creed","creek","creep","creme","crepe","crept","cress","crest","crick","cried","crier","crime","crimp","crisp","croak","crock","crone","crony","crook","cross","croup","crowd","crown","crude","cruel","crumb","crump","crush","crust","crypt","cubic","cumin","curio","curly","curry","curse","curve","curvy","cutie","cyber","cycle","cynic","daddy","daily","dairy","daisy","dally","dance","dandy","datum","daunt","dealt","death","debar","debit","debug","debut","decal","decay","decor","decoy","decry","defer","deign","deity","delay","delta","delve","demon","demur","denim","dense","depot","depth","derby","deter","detox","deuce","devil","diary","dicey","digit","dilly","dimly","diner","dingo","dingy","diode","dirge","dirty","disco","ditch","ditto","ditty","diver","dixie","dizzy","dodge","dodgy","dogma","doing","dolly","donor","donut","dopey","doubt","dough","dowdy","dowel","downy","dowry","dozen","draft","drain","drake","drama","drank","drape","drawl","drawn","dread","dream","dress","dried","drier","drift","drill","drink","drive","droit","droll","drone","drool","droop","dross","drove","drown","druid","drunk","dryer","dryly","duchy","dully","dummy","dumpy","dunce","dusky","dusty","dutch","duvet","dwarf","dwell","dwelt","dying","eager","eagle","early","earth","easel","eaten","eater","ebony","eclat","edict","edify","eerie","egret","eight","eject","eking","elate","elbow","elder","elect","elegy","elfin","elide","elite","elope","elude","email","embed","ember","emcee","empty","enact","endow","enema","enemy","enjoy","ennui","ensue","enter","entry","envoy","epoch","epoxy","equal","equip","erase","erect","erode","error","erupt","essay","ester","ether","ethic","ethos","etude","evade","event","every","evict","evoke","exact","exalt","excel","exert","exile","exist","expel","extol","extra","exult","eying","fable","facet","faint","fairy","faith","false","fancy","fanny","farce","fatal","fatty","fault","fauna","favor","feast","fecal","feign","fella","felon","femme","femur","fence","feral","ferry","fetal","fetch","fetid","fetus","fever","fewer","fiber","fibre","ficus","field","fiend","fiery","fifth","fifty","fight","filer","filet","filly","filmy","filth","final","finch","finer","first","fishy","fixer","fizzy","fjord","flack","flail","flair","flake","flaky","flame","flank","flare","flash","flask","fleck","fleet","flesh","flick","flier","fling","flint","flirt","float","flock","flood","floor","flora","floss","flour","flout","flown","fluff","fluid","fluke","flume","flung","flunk","flush","flute","flyer","foamy","focal","focus","foggy","foist","folio","folly","foray","force","forge","forgo","forte","forth","forty","forum","found","foyer","frail","frame","frank","fraud","freak","freed","freer","fresh","friar","fried","frill","frisk","fritz","frock","frond","front","frost","froth","frown","froze","fruit","fudge","fugue","fully","fungi","funky","funny","furor","furry","fussy","fuzzy","gaffe","gaily","gamer","gamma","gamut","gassy","gaudy","gauge","gaunt","gauze","gavel","gawky","gayer","gayly","gazer","gecko","geeky","geese","genie","genre","ghost","ghoul","giant","giddy","gipsy","girly","girth","given","giver","glade","gland","glare","glass","glaze","gleam","glean","glide","glint","gloat","globe","gloom","glory","gloss","glove","glyph","gnash","gnome","godly","going","golem","golly","gonad","goner","goody","gooey","goofy","goose","gorge","gouge","gourd","grace","grade","graft","grail","grain","grand","grant","grape","graph","grasp","grass","grate","grave","gravy","graze","great","greed","green","greet","grief","grill","grime","grimy","grind","gripe","groan","groin","groom","grope","gross","group","grout","grove","growl","grown","gruel","gruff","grunt","guard","guava","guess","guest","guide","guild","guile","guilt","guise","gulch","gully","gumbo","gummy","guppy","gusto","gusty","gypsy","habit","hairy","halve","handy","happy","hardy","harem","harpy","harry","harsh","haste","hasty","hatch","hater","haunt","haute","haven","havoc","hazel","heady","heard","heart","heath","heave","heavy","hedge","hefty","heist","helix","hello","hence","heron","hilly","hinge","hippo","hippy","hitch","hoard","hobby","hoist","holly","homer","honey","honor","horde","horny","horse","hotel","hotly","hound","house","hovel","hover","howdy","human","humid","humor","humph","humus","hunch","hunky","hurry","husky","hussy","hutch","hydro","hyena","hymen","hyper","icily","icing","ideal","idiom","idiot","idler","idyll","igloo","iliac","image","imbue","impel","imply","inane","inbox","incur","index","inept","inert","infer","ingot","inlay","inlet","inner","input","inter","intro","ionic","irate","irony","islet","issue","itchy","ivory","jaunt","jazzy","jelly","jerky","jetty","jewel","jiffy","joint","joist","joker","jolly","joust","judge","juice","juicy","jumbo","jumpy","junta","junto","juror","kappa","karma","kayak","kebab","khaki","kinky","kiosk","kitty","knack","knave","knead","kneed","kneel","knelt","knife","knock","knoll","known","koala","krill","label","labor","laden","ladle","lager","lance","lanky","lapel","lapse","large","larva","lasso","latch","later","lathe","latte","laugh","layer","leach","leafy","leaky","leant","leapt","learn","lease","leash","least","leave","ledge","leech","leery","lefty","legal","leggy","lemon","lemur","leper","level","lever","libel","liege","light","liken","lilac","limbo","limit","linen","liner","lingo","lipid","lithe","liver","livid","llama","loamy","loath","lobby","local","locus","lodge","lofty","logic","login","loopy","loose","lorry","loser","louse","lousy","lover","lower","lowly","loyal","lucid","lucky","lumen","lumpy","lunar","lunch","lunge","lupus","lurch","lurid","lusty","lying","lymph","lynch","lyric","macaw","macho","macro","madam","madly","mafia","magic","magma","maize","major","maker","mambo","mamma","mammy","manga","mange","mango","mangy","mania","manic","manly","manor","maple","march","marry","marsh","mason","masse","match","matey","mauve","maxim","maybe","mayor","mealy","meant","meaty","mecca","medal","media","medic","melee","melon","mercy","merge","merit","merry","metal","meter","metro","micro","midge","midst","might","milky","mimic","mince","miner","minim","minor","minty","minus","mirth","miser","missy","mocha","modal","model","modem","mogul","moist","molar","moldy","money","month","moody","moose","moral","moron","morph","mossy","motel","motif","motor","motto","moult","mound","mount","mourn","mouse","mouth","mover","movie","mower","mucky","mucus","muddy","mulch","mummy","munch","mural","murky","mushy","music","musky","musty","myrrh","nadir","naive","nanny","nasal","nasty","natal","naval","navel","needy","neigh","nerdy","nerve","never","newer","newly","nicer","niche","niece","night","ninja","ninny","ninth","noble","nobly","noise","noisy","nomad","noose","north","nosey","notch","novel","nudge","nurse","nutty","nylon","nymph","oaken","obese","occur","ocean","octal","octet","odder","oddly","offal","offer","often","olden","older","olive","ombre","omega","onion","onset","opera","opine","opium","optic","orbit","order","organ","other","otter","ought","ounce","outdo","outer","outgo","ovary","ovate","overt","ovine","ovoid","owing","owner","oxide","ozone","paddy","pagan","paint","paler","palsy","panel","panic","pansy","papal","paper","parer","parka","parry","parse","party","pasta","paste","pasty","patch","patio","patsy","patty","pause","payee","payer","peace","peach","pearl","pecan","pedal","penal","pence","penne","penny","perch","peril","perky","pesky","pesto","petal","petty","phase","phone","phony","photo","piano","picky","piece","piety","piggy","pilot","pinch","piney","pinky","pinto","piper","pique","pitch","pithy","pivot","pixel","pixie","pizza","place","plaid","plain","plait","plane","plank","plant","plate","plaza","plead","pleat","plied","plier","pluck","plumb","plume","plump","plunk","plush","poesy","point","poise","poker","polar","polka","polyp","pooch","poppy","porch","poser","posit","posse","pouch","pound","pouty","power","prank","prawn","preen","press","price","prick","pride","pried","prime","primo","print","prior","prism","privy","prize","probe","prone","prong","proof","prose","proud","prove","prowl","proxy","prude","prune","psalm","pubic","pudgy","puffy","pulpy","pulse","punch","pupal","pupil","puppy","puree","purer","purge","purse","pushy","putty","pygmy","quack","quail","quake","qualm","quark","quart","quash","quasi","queen","queer","quell","query","quest","queue","quick","quiet","quill","quilt","quirk","quite","quota","quote","quoth","rabbi","rabid","racer","radar","radii","radio","rainy","raise","rajah","rally","ralph","ramen","ranch","randy","range","rapid","rarer","raspy","ratio","ratty","raven","rayon","razor","reach","react","ready","realm","rearm","rebar","rebel","rebus","rebut","recap","recur","recut","reedy","refer","refit","regal","rehab","reign","relax","relay","relic","remit","renal","renew","repay","repel","reply","rerun","reset","resin","retch","retro","retry","reuse","revel","revue","rhino","rhyme","rider","ridge","rifle","right","rigid","rigor","rinse","ripen","riper","risen","riser","risky","rival","river","rivet","roach","roast","robin","robot","rocky","rodeo","roger","rogue","roomy","roost","rotor","rouge","rough","round","rouse","route","rover","rowdy","rower","royal","ruddy","ruder","rugby","ruler","rumba","rumor","rupee","rural","rusty","sadly","safer","saint","salad","sally","salon","salsa","salty","salve","salvo","sandy","saner","sappy","sassy","satin","satyr","sauce","saucy","sauna","saute","savor","savoy","savvy","scald","scale","scalp","scaly","scamp","scant","scare","scarf","scary","scene","scent","scion","scoff","scold","scone","scoop","scope","score","scorn","scour","scout","scowl","scram","scrap","scree","screw","scrub","scrum","scuba","sedan","seedy","segue","seize","semen","sense","sepia","serif","serum","serve","setup","seven","sever","sewer","shack","shade","shady","shaft","shake","shaky","shale","shall","shalt","shame","shank","shape","shard","share","shark","sharp","shave","shawl","shear","sheen","sheep","sheer","sheet","sheik","shelf","shell","shied","shift","shine","shiny","shire","shirk","shirt","shoal","shock","shone","shook","shoot","shore","shorn","short","shout","shove","shown","showy","shrew","shrub","shrug","shuck","shunt","shush","shyly","siege","sieve","sight","sigma","silky","silly","since","sinew","singe","siren","sissy","sixth","sixty","skate","skier","skiff","skill","skimp","skirt","skulk","skull","skunk","slack","slain","slang","slant","slash","slate","slave","sleek","sleep","sleet","slept","slice","slick","slide","slime","slimy","sling","slink","sloop","slope","slosh","sloth","slump","slung","slunk","slurp","slush","slyly","smack","small","smart","smash","smear","smell","smelt","smile","smirk","smite","smith","smock","smoke","smoky","smote","snack","snail","snake","snaky","snare","snarl","sneak","sneer","snide","sniff","snipe","snoop","snore","snort","snout","snowy","snuck","snuff","soapy","sober","soggy","solar","solid","solve","sonar","sonic","sooth","sooty","sorry","sound","south","sower","space","spade","spank","spare","spark","spasm","spawn","speak","spear","speck","speed","spell","spelt","spend","spent","sperm","spice","spicy","spied","spiel","spike","spiky","spill","spilt","spine","spiny","spire","spite","splat","split","spoil","spoke","spoof","spook","spool","spoon","spore","sport","spout","spray","spree","sprig","spunk","spurn","spurt","squad","squat","squib","stack","staff","stage","staid","stain","stair","stake","stale","stalk","stall","stamp","stand","stank","stare","stark","start","stash","state","stave","stead","steak","steal","steam","steed","steel","steep","steer","stein","stern","stick","stiff","still","stilt","sting","stink","stint","stock","stoic","stoke","stole","stomp","stone","stony","stood","stool","stoop","store","stork","storm","story","stout","stove","strap","straw","stray","strip","strut","stuck","study","stuff","stump","stung","stunk","stunt","style","suave","sugar","suing","suite","sulky","sully","sumac","sunny","super","surer","surge","surly","sushi","swami","swamp","swarm","swash","swath","swear","sweat","sweep","sweet","swell","swept","swift","swill","swine","swing","swirl","swish","swoon","swoop","sword","swore","sworn","swung","synod","syrup","tabby","table","taboo","tacit","tacky","taffy","taint","taken","taker","tally","talon","tamer","tango","tangy","taper","tapir","tardy","tarot","taste","tasty","tatty","taunt","tawny","teach","teary","tease","teddy","teeth","tempo","tenet","tenor","tense","tenth","tepee","tepid","terra","terse","testy","thank","theft","their","theme","there","these","theta","thick","thief","thigh","thing","think","third","thong","thorn","those","three","threw","throb","throw","thrum","thumb","thump","thyme","tiara","tibia","tidal","tiger","tight","tilde","timer","timid","tipsy","titan","tithe","title","toast","today","toddy","token","tonal","tonga","tonic","tooth","topaz","topic","torch","torso","torus","total","totem","touch","tough","towel","tower","toxic","toxin","trace","track","tract","trade","trail","train","trait","tramp","trash","trawl","tread","treat","trend","triad","trial","tribe","trice","trick","tried","tripe","trite","troll","troop","trope","trout","trove","truce","truck","truer","truly","trump","trunk","truss","trust","truth","tryst","tubal","tuber","tulip","tulle","tumor","tunic","turbo","tutor","twang","tweak","tweed","tweet","twice","twine","twirl","twist","twixt","tying","udder","ulcer","ultra","umbra","uncle","uncut","under","undid","undue","unfed","unfit","unify","union","unite","unity","unlit","unmet","unset","untie","until","unwed","unzip","upper","upset","urban","urine","usage","usher","using","usual","usurp","utile","utter","vague","valet","valid","valor","value","valve","vapid","vapor","vault","vaunt","vegan","venom","venue","verge","verse","verso","verve","vicar","video","vigil","vigor","villa","vinyl","viola","viper","viral","virus","visit","visor","vista","vital","vivid","vixen","vocal","vodka","vogue","voice","voila","vomit","voter","vouch","vowel","vying","wacky","wafer","wager","wagon","waist","waive","waltz","warty","waste","watch","water","waver","waxen","weary","weave","wedge","weedy","weigh","weird","welch","welsh","wench","whack","whale","wharf","wheat","wheel","whelp","where","which","whiff","while","whine","whiny","whirl","whisk","white","whole","whoop","whose","widen","wider","widow","width","wield","wight","willy","wimpy","wince","winch","windy","wiser","wispy","witch","witty","woken","woman","women","woody","wooer","wooly","woozy","wordy","world","worry","worse","worst","worth","would","wound","woven","wrack","wrath","wreak","wreck","wrest","wring","wrist","write","wrong","wrote","wrung","wryly","yacht","yearn","yeast","yield","young","youth","zebra","zesty","zonal"]);function w(){return k[k.length%(n=new Date,(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate())-Date.UTC(n.getFullYear(),0,0))/24/60/60/1e3)];var n}function C(){const n=new Date,e=new Date(n);return e.setHours(24,0,0,0),e.getTime()}function S(){return C()-(new Date).getTime()}k.length;const A=()=>JSON.parse(localStorage.getItem("userData")),T=()=>JSON.parse(localStorage.getItem("gameState")),I=()=>JSON.parse(localStorage.getItem("settings"));function E(){let n={guesses:[],wordToGuess:w(),ttl:C(),triggered:0};L=n,localStorage.setItem("gameState",JSON.stringify(L))}function M(n,e){"gamesPlayed"===n?R.gamesPlayed=e:"gamesWon"===n?R.gamesWon=e:"winRate"===n?R.winRate=e:"currentStreak"===n?R.currentStreak=e:"longestStreak"===n&&(R.longestStreak=e),localStorage.setItem("userData",JSON.stringify(R))}function P(n){D.theme=n,localStorage.setItem("settings",JSON.stringify(D))}function _(n){D.mode=n,localStorage.setItem("settings",JSON.stringify(D))}let R,D,L=T();const N=function(n){const e=[];let t=0;for(let a=0;a>6|192,e[t++]=63&i|128):55296==(64512&i)&&a+1>18|240,e[t++]=i>>12&63|128,e[t++]=i>>6&63|128,e[t++]=63&i|128):(e[t++]=i>>12|224,e[t++]=i>>6&63|128,e[t++]=63&i|128)}return e},B={byteToCharMap_:null,charToByteMap_:null,byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",get ENCODED_VALS(){return this.ENCODED_VALS_BASE+"+/="},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+"-_."},HAS_NATIVE_SUPPORT:"function"==typeof atob,encodeByteArray(n,e){if(!Array.isArray(n))throw Error("encodeByteArray takes an array as a parameter");this.init_();const t=e?this.byteToCharMapWebSafe_:this.byteToCharMap_,a=[];for(let e=0;e>2,u=(3&i)<<4|o>>4;let d=(15&o)<<2|l>>6,h=63&l;s||(h=64,r||(d=64)),a.push(t[c],t[u],t[d],t[h])}return a.join("")},encodeString(n,e){return this.HAS_NATIVE_SUPPORT&&!e?btoa(n):this.encodeByteArray(N(n),e)},decodeString(n,e){return this.HAS_NATIVE_SUPPORT&&!e?atob(n):function(n){const e=[];let t=0,a=0;for(;t191&&i<224){const r=n[t++];e[a++]=String.fromCharCode((31&i)<<6|63&r)}else if(i>239&&i<365){const r=((7&i)<<18|(63&n[t++])<<12|(63&n[t++])<<6|63&n[t++])-65536;e[a++]=String.fromCharCode(55296+(r>>10)),e[a++]=String.fromCharCode(56320+(1023&r))}else{const r=n[t++],o=n[t++];e[a++]=String.fromCharCode((15&i)<<12|(63&r)<<6|63&o)}}return e.join("")}(this.decodeStringToByteArray(n,e))},decodeStringToByteArray(n,e){this.init_();const t=e?this.charToByteMapWebSafe_:this.charToByteMap_,a=[];for(let e=0;e>4;if(a.push(l),64!==o){const n=r<<4&240|o>>2;if(a.push(n),64!==s){const n=o<<6&192|s;a.push(n)}}}return a},init_(){if(!this.byteToCharMap_){this.byteToCharMap_={},this.charToByteMap_={},this.byteToCharMapWebSafe_={},this.charToByteMapWebSafe_={};for(let n=0;n=this.ENCODED_VALS_BASE.length&&(this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(n)]=n,this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(n)]=n)}}};class z extends Error{constructor(){super(...arguments),this.name="DecodeBase64StringError"}}const O=function(n){return function(n){const e=N(n);return B.encodeByteArray(e,!0)}(n).replace(/\./g,"")},F=function(n){try{return B.decodeString(n,!0)}catch(n){console.error("base64Decode failed: ",n)}return null},G=()=>{try{return function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==t.g)return t.g;throw new Error("Unable to locate global object.")}().__FIREBASE_DEFAULTS__||(()=>{if("undefined"==typeof process||void 0===process.env)return;const n=process.env.__FIREBASE_DEFAULTS__;return n?JSON.parse(n):void 0})()||(()=>{if("undefined"==typeof document)return;let n;try{n=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch(n){return}const e=n&&F(n[1]);return e&&JSON.parse(e)})()}catch(n){return void console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${n}`)}},j=n=>{var e,t;return null===(t=null===(e=G())||void 0===e?void 0:e.emulatorHosts)||void 0===t?void 0:t[n]},U=()=>{var n;return null===(n=G())||void 0===n?void 0:n.config},H=n=>{var e;return null===(e=G())||void 0===e?void 0:e[`_${n}`]};class V{constructor(){this.reject=()=>{},this.resolve=()=>{},this.promise=new Promise(((n,e)=>{this.resolve=n,this.reject=e}))}wrapCallback(n){return(e,t)=>{e?this.reject(e):this.resolve(t),"function"==typeof n&&(this.promise.catch((()=>{})),1===n.length?n(e):n(e,t))}}}function W(){return"undefined"!=typeof navigator&&"string"==typeof navigator.userAgent?navigator.userAgent:""}function K(){const n="object"==typeof chrome?chrome.runtime:"object"==typeof browser?browser.runtime:void 0;return"object"==typeof n&&void 0!==n.id}function q(){try{return"object"==typeof indexedDB}catch(n){return!1}}function J(){return new Promise(((n,e)=>{try{let t=!0;const a="validate-browser-context-for-indexeddb-analytics-module",i=self.indexedDB.open(a);i.onsuccess=()=>{i.result.close(),t||self.indexedDB.deleteDatabase(a),n(!0)},i.onupgradeneeded=()=>{t=!1},i.onerror=()=>{var n;e((null===(n=i.error)||void 0===n?void 0:n.message)||"")}}catch(n){e(n)}}))}class $ extends Error{constructor(n,e,t){super(e),this.code=n,this.customData=t,this.name="FirebaseError",Object.setPrototypeOf(this,$.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,Y.prototype.create)}}class Y{constructor(n,e,t){this.service=n,this.serviceName=e,this.errors=t}create(n,...e){const t=e[0]||{},a=`${this.service}/${n}`,i=this.errors[n],r=i?function(n,e){return n.replace(Q,((n,t)=>{const a=e[t];return null!=a?String(a):`<${t}?>`}))}(i,t):"Error",o=`${this.serviceName}: ${r} (${a}).`;return new $(a,o,t)}}const Q=/\{\$([^}]+)}/g;function X(n,e){if(n===e)return!0;const t=Object.keys(n),a=Object.keys(e);for(const i of t){if(!a.includes(i))return!1;const t=n[i],r=e[i];if(Z(t)&&Z(r)){if(!X(t,r))return!1}else if(t!==r)return!1}for(const n of a)if(!t.includes(n))return!1;return!0}function Z(n){return null!==n&&"object"==typeof n}function nn(n){const e=[];for(const[t,a]of Object.entries(n))Array.isArray(a)?a.forEach((n=>{e.push(encodeURIComponent(t)+"="+encodeURIComponent(n))})):e.push(encodeURIComponent(t)+"="+encodeURIComponent(a));return e.length?"&"+e.join("&"):""}function en(n){const e={};return n.replace(/^\?/,"").split("&").forEach((n=>{if(n){const[t,a]=n.split("=");e[decodeURIComponent(t)]=decodeURIComponent(a)}})),e}function tn(n){const e=n.indexOf("?");if(!e)return"";const t=n.indexOf("#",e);return n.substring(e,t>0?t:void 0)}class an{constructor(n,e){this.observers=[],this.unsubscribes=[],this.observerCount=0,this.task=Promise.resolve(),this.finalized=!1,this.onNoObservers=e,this.task.then((()=>{n(this)})).catch((n=>{this.error(n)}))}next(n){this.forEachObserver((e=>{e.next(n)}))}error(n){this.forEachObserver((e=>{e.error(n)})),this.close(n)}complete(){this.forEachObserver((n=>{n.complete()})),this.close()}subscribe(n,e,t){let a;if(void 0===n&&void 0===e&&void 0===t)throw new Error("Missing Observer.");a=function(n,e){if("object"!=typeof n||null===n)return!1;for(const e of["next","error","complete"])if(e in n&&"function"==typeof n[e])return!0;return!1}(n)?n:{next:n,error:e,complete:t},void 0===a.next&&(a.next=rn),void 0===a.error&&(a.error=rn),void 0===a.complete&&(a.complete=rn);const i=this.unsubscribeOne.bind(this,this.observers.length);return this.finalized&&this.task.then((()=>{try{this.finalError?a.error(this.finalError):a.complete()}catch(n){}})),this.observers.push(a),i}unsubscribeOne(n){void 0!==this.observers&&void 0!==this.observers[n]&&(delete this.observers[n],this.observerCount-=1,0===this.observerCount&&void 0!==this.onNoObservers&&this.onNoObservers(this))}forEachObserver(n){if(!this.finalized)for(let e=0;e{if(void 0!==this.observers&&void 0!==this.observers[n])try{e(this.observers[n])}catch(n){"undefined"!=typeof console&&console.error&&console.error(n)}}))}close(n){this.finalized||(this.finalized=!0,void 0!==n&&(this.finalError=n),this.task.then((()=>{this.observers=void 0,this.onNoObservers=void 0})))}}function rn(){}const on=1e3,sn=2,ln=144e5,cn=.5;function un(n,e=on,t=sn){const a=e*Math.pow(t,n),i=Math.round(cn*a*(Math.random()-.5)*2);return Math.min(ln,a+i)}function dn(n){return n&&n._delegate?n._delegate:n}class hn{constructor(n,e,t){this.name=n,this.instanceFactory=e,this.type=t,this.multipleInstances=!1,this.serviceProps={},this.instantiationMode="LAZY",this.onInstanceCreated=null}setInstantiationMode(n){return this.instantiationMode=n,this}setMultipleInstances(n){return this.multipleInstances=n,this}setServiceProps(n){return this.serviceProps=n,this}setInstanceCreatedCallback(n){return this.onInstanceCreated=n,this}}const fn="[DEFAULT]";class mn{constructor(n,e){this.name=n,this.container=e,this.component=null,this.instances=new Map,this.instancesDeferred=new Map,this.instancesOptions=new Map,this.onInitCallbacks=new Map}get(n){const e=this.normalizeInstanceIdentifier(n);if(!this.instancesDeferred.has(e)){const n=new V;if(this.instancesDeferred.set(e,n),this.isInitialized(e)||this.shouldAutoInitialize())try{const t=this.getOrInitializeService({instanceIdentifier:e});t&&n.resolve(t)}catch(n){}}return this.instancesDeferred.get(e).promise}getImmediate(n){var e;const t=this.normalizeInstanceIdentifier(null==n?void 0:n.identifier),a=null!==(e=null==n?void 0:n.optional)&&void 0!==e&&e;if(!this.isInitialized(t)&&!this.shouldAutoInitialize()){if(a)return null;throw Error(`Service ${this.name} is not available`)}try{return this.getOrInitializeService({instanceIdentifier:t})}catch(n){if(a)return null;throw n}}getComponent(){return this.component}setComponent(n){if(n.name!==this.name)throw Error(`Mismatching Component ${n.name} for Provider ${this.name}.`);if(this.component)throw Error(`Component for ${this.name} has already been provided`);if(this.component=n,this.shouldAutoInitialize()){if(function(n){return"EAGER"===n.instantiationMode}(n))try{this.getOrInitializeService({instanceIdentifier:fn})}catch(n){}for(const[n,e]of this.instancesDeferred.entries()){const t=this.normalizeInstanceIdentifier(n);try{const n=this.getOrInitializeService({instanceIdentifier:t});e.resolve(n)}catch(n){}}}}clearInstance(n=fn){this.instancesDeferred.delete(n),this.instancesOptions.delete(n),this.instances.delete(n)}async delete(){const n=Array.from(this.instances.values());await Promise.all([...n.filter((n=>"INTERNAL"in n)).map((n=>n.INTERNAL.delete())),...n.filter((n=>"_delete"in n)).map((n=>n._delete()))])}isComponentSet(){return null!=this.component}isInitialized(n=fn){return this.instances.has(n)}getOptions(n=fn){return this.instancesOptions.get(n)||{}}initialize(n={}){const{options:e={}}=n,t=this.normalizeInstanceIdentifier(n.instanceIdentifier);if(this.isInitialized(t))throw Error(`${this.name}(${t}) has already been initialized`);if(!this.isComponentSet())throw Error(`Component ${this.name} has not been registered yet`);const a=this.getOrInitializeService({instanceIdentifier:t,options:e});for(const[n,e]of this.instancesDeferred.entries())t===this.normalizeInstanceIdentifier(n)&&e.resolve(a);return a}onInit(n,e){var t;const a=this.normalizeInstanceIdentifier(e),i=null!==(t=this.onInitCallbacks.get(a))&&void 0!==t?t:new Set;i.add(n),this.onInitCallbacks.set(a,i);const r=this.instances.get(a);return r&&n(r,a),()=>{i.delete(n)}}invokeOnInitCallbacks(n,e){const t=this.onInitCallbacks.get(e);if(t)for(const a of t)try{a(n,e)}catch(n){}}getOrInitializeService({instanceIdentifier:n,options:e={}}){let t=this.instances.get(n);if(!t&&this.component&&(t=this.component.instanceFactory(this.container,{instanceIdentifier:(a=n,a===fn?void 0:a),options:e}),this.instances.set(n,t),this.instancesOptions.set(n,e),this.invokeOnInitCallbacks(t,n),this.component.onInstanceCreated))try{this.component.onInstanceCreated(this.container,n,t)}catch(n){}var a;return t||null}normalizeInstanceIdentifier(n=fn){return this.component?this.component.multipleInstances?n:fn:n}shouldAutoInitialize(){return!!this.component&&"EXPLICIT"!==this.component.instantiationMode}}class pn{constructor(n){this.name=n,this.providers=new Map}addComponent(n){const e=this.getProvider(n.name);if(e.isComponentSet())throw new Error(`Component ${n.name} has already been registered with ${this.name}`);e.setComponent(n)}addOrOverwriteComponent(n){this.getProvider(n.name).isComponentSet()&&this.providers.delete(n.name),this.addComponent(n)}getProvider(n){if(this.providers.has(n))return this.providers.get(n);const e=new mn(n,this);return this.providers.set(n,e),e}getProviders(){return Array.from(this.providers.values())}}const gn=[];var yn,bn;(bn=yn||(yn={}))[bn.DEBUG=0]="DEBUG",bn[bn.VERBOSE=1]="VERBOSE",bn[bn.INFO=2]="INFO",bn[bn.WARN=3]="WARN",bn[bn.ERROR=4]="ERROR",bn[bn.SILENT=5]="SILENT";const vn={debug:yn.DEBUG,verbose:yn.VERBOSE,info:yn.INFO,warn:yn.WARN,error:yn.ERROR,silent:yn.SILENT},xn=yn.INFO,kn={[yn.DEBUG]:"log",[yn.VERBOSE]:"log",[yn.INFO]:"info",[yn.WARN]:"warn",[yn.ERROR]:"error"},wn=(n,e,...t)=>{if(ee.some((e=>n instanceof e));let An,Tn;const In=new WeakMap,En=new WeakMap,Mn=new WeakMap,Pn=new WeakMap,_n=new WeakMap;let Rn={get(n,e,t){if(n instanceof IDBTransaction){if("done"===e)return En.get(n);if("objectStoreNames"===e)return n.objectStoreNames||Mn.get(n);if("store"===e)return t.objectStoreNames[1]?void 0:t.objectStore(t.objectStoreNames[0])}return Ln(n[e])},set:(n,e,t)=>(n[e]=t,!0),has:(n,e)=>n instanceof IDBTransaction&&("done"===e||"store"===e)||e in n};function Dn(n){return"function"==typeof n?(e=n)!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(Tn||(Tn=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(...n){return e.apply(Nn(this),n),Ln(In.get(this))}:function(...n){return Ln(e.apply(Nn(this),n))}:function(n,...t){const a=e.call(Nn(this),n,...t);return Mn.set(a,n.sort?n.sort():[n]),Ln(a)}:(n instanceof IDBTransaction&&function(n){if(En.has(n))return;const e=new Promise(((e,t)=>{const a=()=>{n.removeEventListener("complete",i),n.removeEventListener("error",r),n.removeEventListener("abort",r)},i=()=>{e(),a()},r=()=>{t(n.error||new DOMException("AbortError","AbortError")),a()};n.addEventListener("complete",i),n.addEventListener("error",r),n.addEventListener("abort",r)}));En.set(n,e)}(n),Sn(n,An||(An=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(n,Rn):n);var e}function Ln(n){if(n instanceof IDBRequest)return function(n){const e=new Promise(((e,t)=>{const a=()=>{n.removeEventListener("success",i),n.removeEventListener("error",r)},i=()=>{e(Ln(n.result)),a()},r=()=>{t(n.error),a()};n.addEventListener("success",i),n.addEventListener("error",r)}));return e.then((e=>{e instanceof IDBCursor&&In.set(e,n)})).catch((()=>{})),_n.set(e,n),e}(n);if(Pn.has(n))return Pn.get(n);const e=Dn(n);return e!==n&&(Pn.set(n,e),_n.set(e,n)),e}const Nn=n=>_n.get(n);function Bn(n,e,{blocked:t,upgrade:a,blocking:i,terminated:r}={}){const o=indexedDB.open(n,e),s=Ln(o);return a&&o.addEventListener("upgradeneeded",(n=>{a(Ln(o.result),n.oldVersion,n.newVersion,Ln(o.transaction),n)})),t&&o.addEventListener("blocked",(n=>t(n.oldVersion,n.newVersion,n))),s.then((n=>{r&&n.addEventListener("close",(()=>r())),i&&n.addEventListener("versionchange",(n=>i(n.oldVersion,n.newVersion,n)))})).catch((()=>{})),s}const zn=["get","getKey","getAll","getAllKeys","count"],On=["put","add","delete","clear"],Fn=new Map;function Gn(n,e){if(!(n instanceof IDBDatabase)||e in n||"string"!=typeof e)return;if(Fn.get(e))return Fn.get(e);const t=e.replace(/FromIndex$/,""),a=e!==t,i=On.includes(t);if(!(t in(a?IDBIndex:IDBObjectStore).prototype)||!i&&!zn.includes(t))return;const r=async function(n,...e){const r=this.transaction(n,i?"readwrite":"readonly");let o=r.store;return a&&(o=o.index(e.shift())),(await Promise.all([o[t](...e),i&&r.done]))[0]};return Fn.set(e,r),r}var jn;jn=Rn,Rn={...jn,get:(n,e,t)=>Gn(n,e)||jn.get(n,e,t),has:(n,e)=>!!Gn(n,e)||jn.has(n,e)};class Un{constructor(n){this.container=n}getPlatformInfoString(){return this.container.getProviders().map((n=>{if(function(n){const e=n.getComponent();return"VERSION"===(null==e?void 0:e.type)}(n)){const e=n.getImmediate();return`${e.library}/${e.version}`}return null})).filter((n=>n)).join(" ")}}const Hn="@firebase/app",Vn="0.10.11",Wn=new Cn("@firebase/app"),Kn="[DEFAULT]",qn={[Hn]:"fire-core","@firebase/app-compat":"fire-core-compat","@firebase/analytics":"fire-analytics","@firebase/analytics-compat":"fire-analytics-compat","@firebase/app-check":"fire-app-check","@firebase/app-check-compat":"fire-app-check-compat","@firebase/auth":"fire-auth","@firebase/auth-compat":"fire-auth-compat","@firebase/database":"fire-rtdb","@firebase/database-compat":"fire-rtdb-compat","@firebase/functions":"fire-fn","@firebase/functions-compat":"fire-fn-compat","@firebase/installations":"fire-iid","@firebase/installations-compat":"fire-iid-compat","@firebase/messaging":"fire-fcm","@firebase/messaging-compat":"fire-fcm-compat","@firebase/performance":"fire-perf","@firebase/performance-compat":"fire-perf-compat","@firebase/remote-config":"fire-rc","@firebase/remote-config-compat":"fire-rc-compat","@firebase/storage":"fire-gcs","@firebase/storage-compat":"fire-gcs-compat","@firebase/firestore":"fire-fst","@firebase/firestore-compat":"fire-fst-compat","@firebase/vertexai-preview":"fire-vertex","fire-js":"fire-js",firebase:"fire-js-all"},Jn=new Map,$n=new Map,Yn=new Map;function Qn(n,e){try{n.container.addComponent(e)}catch(t){Wn.debug(`Component ${e.name} failed to register with FirebaseApp ${n.name}`,t)}}function Xn(n){const e=n.name;if(Yn.has(e))return Wn.debug(`There were multiple attempts to register component ${e}.`),!1;Yn.set(e,n);for(const e of Jn.values())Qn(e,n);for(const e of $n.values())Qn(e,n);return!0}function Zn(n,e){const t=n.container.getProvider("heartbeat").getImmediate({optional:!0});return t&&t.triggerHeartbeat(),n.container.getProvider(e)}function ne(n){return void 0!==n.settings}const ee=new Y("app","Firebase",{"no-app":"No Firebase App '{$appName}' has been created - call initializeApp() first","bad-app-name":"Illegal App name: '{$appName}'","duplicate-app":"Firebase App named '{$appName}' already exists with different options or config","app-deleted":"Firebase App named '{$appName}' already deleted","server-app-deleted":"Firebase Server App has been deleted","no-options":"Need to provide options, when not being deployed to hosting via source.","invalid-app-argument":"firebase.{$appName}() takes either no argument or a Firebase App instance.","invalid-log-argument":"First argument to `onLog` must be null or a function.","idb-open":"Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.","idb-get":"Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.","idb-set":"Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.","idb-delete":"Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}.","finalization-registry-not-supported":"FirebaseServerApp deleteOnDeref field defined but the JS runtime does not support FinalizationRegistry.","invalid-server-app-environment":"FirebaseServerApp is not for use in browser environments."});class te{constructor(n,e,t){this._isDeleted=!1,this._options=Object.assign({},n),this._config=Object.assign({},e),this._name=e.name,this._automaticDataCollectionEnabled=e.automaticDataCollectionEnabled,this._container=t,this.container.addComponent(new hn("app",(()=>this),"PUBLIC"))}get automaticDataCollectionEnabled(){return this.checkDestroyed(),this._automaticDataCollectionEnabled}set automaticDataCollectionEnabled(n){this.checkDestroyed(),this._automaticDataCollectionEnabled=n}get name(){return this.checkDestroyed(),this._name}get options(){return this.checkDestroyed(),this._options}get config(){return this.checkDestroyed(),this._config}get container(){return this._container}get isDeleted(){return this._isDeleted}set isDeleted(n){this._isDeleted=n}checkDestroyed(){if(this.isDeleted)throw ee.create("app-deleted",{appName:this._name})}}const ae="10.13.2";function ie(n,e={}){let t=n;"object"!=typeof e&&(e={name:e});const a=Object.assign({name:Kn,automaticDataCollectionEnabled:!1},e),i=a.name;if("string"!=typeof i||!i)throw ee.create("bad-app-name",{appName:String(i)});if(t||(t=U()),!t)throw ee.create("no-options");const r=Jn.get(i);if(r){if(X(t,r.options)&&X(a,r.config))return r;throw ee.create("duplicate-app",{appName:i})}const o=new pn(i);for(const n of Yn.values())o.addComponent(n);const s=new te(t,a,o);return Jn.set(i,s),s}function re(n=Kn){const e=Jn.get(n);if(!e&&n===Kn&&U())return ie();if(!e)throw ee.create("no-app",{appName:n});return e}function oe(n,e,t){var a;let i=null!==(a=qn[n])&&void 0!==a?a:n;t&&(i+=`-${t}`);const r=i.match(/\s|\//),o=e.match(/\s|\//);if(r||o){const n=[`Unable to register library "${i}" with version "${e}":`];return r&&n.push(`library name "${i}" contains illegal characters (whitespace or "/")`),r&&o&&n.push("and"),o&&n.push(`version name "${e}" contains illegal characters (whitespace or "/")`),void Wn.warn(n.join(" "))}Xn(new hn(`${i}-version`,(()=>({library:i,version:e})),"VERSION"))}const se="firebase-heartbeat-database",le=1,ce="firebase-heartbeat-store";let ue=null;function de(){return ue||(ue=Bn(se,le,{upgrade:(n,e)=>{if(0===e)try{n.createObjectStore(ce)}catch(n){console.warn(n)}}}).catch((n=>{throw ee.create("idb-open",{originalErrorMessage:n.message})}))),ue}async function he(n,e){try{const t=(await de()).transaction(ce,"readwrite"),a=t.objectStore(ce);await a.put(e,fe(n)),await t.done}catch(n){if(n instanceof $)Wn.warn(n.message);else{const e=ee.create("idb-set",{originalErrorMessage:null==n?void 0:n.message});Wn.warn(e.message)}}}function fe(n){return`${n.name}!${n.options.appId}`}class me{constructor(n){this.container=n,this._heartbeatsCache=null;const e=this.container.getProvider("app").getImmediate();this._storage=new ge(e),this._heartbeatsCachePromise=this._storage.read().then((n=>(this._heartbeatsCache=n,n)))}async triggerHeartbeat(){var n,e;try{const t=this.container.getProvider("platform-logger").getImmediate().getPlatformInfoString(),a=pe();if(null==(null===(n=this._heartbeatsCache)||void 0===n?void 0:n.heartbeats)&&(this._heartbeatsCache=await this._heartbeatsCachePromise,null==(null===(e=this._heartbeatsCache)||void 0===e?void 0:e.heartbeats)))return;if(this._heartbeatsCache.lastSentHeartbeatDate===a||this._heartbeatsCache.heartbeats.some((n=>n.date===a)))return;return this._heartbeatsCache.heartbeats.push({date:a,agent:t}),this._heartbeatsCache.heartbeats=this._heartbeatsCache.heartbeats.filter((n=>{const e=new Date(n.date).valueOf();return Date.now()-e<=2592e6})),this._storage.overwrite(this._heartbeatsCache)}catch(n){Wn.warn(n)}}async getHeartbeatsHeader(){var n;try{if(null===this._heartbeatsCache&&await this._heartbeatsCachePromise,null==(null===(n=this._heartbeatsCache)||void 0===n?void 0:n.heartbeats)||0===this._heartbeatsCache.heartbeats.length)return"";const e=pe(),{heartbeatsToSend:t,unsentEntries:a}=function(n,e=1024){const t=[];let a=n.slice();for(const i of n){const n=t.find((n=>n.agent===i.agent));if(n){if(n.dates.push(i.date),ye(t)>e){n.dates.pop();break}}else if(t.push({agent:i.agent,dates:[i.date]}),ye(t)>e){t.pop();break}a=a.slice(1)}return{heartbeatsToSend:t,unsentEntries:a}}(this._heartbeatsCache.heartbeats),i=O(JSON.stringify({version:2,heartbeats:t}));return this._heartbeatsCache.lastSentHeartbeatDate=e,a.length>0?(this._heartbeatsCache.heartbeats=a,await this._storage.overwrite(this._heartbeatsCache)):(this._heartbeatsCache.heartbeats=[],this._storage.overwrite(this._heartbeatsCache)),i}catch(n){return Wn.warn(n),""}}}function pe(){return(new Date).toISOString().substring(0,10)}class ge{constructor(n){this.app=n,this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}async runIndexedDBEnvironmentCheck(){return!!q()&&J().then((()=>!0)).catch((()=>!1))}async read(){if(await this._canUseIndexedDBPromise){const n=await async function(n){try{const e=(await de()).transaction(ce),t=await e.objectStore(ce).get(fe(n));return await e.done,t}catch(n){if(n instanceof $)Wn.warn(n.message);else{const e=ee.create("idb-get",{originalErrorMessage:null==n?void 0:n.message});Wn.warn(e.message)}}}(this.app);return(null==n?void 0:n.heartbeats)?n:{heartbeats:[]}}return{heartbeats:[]}}async overwrite(n){var e;if(await this._canUseIndexedDBPromise){const t=await this.read();return he(this.app,{lastSentHeartbeatDate:null!==(e=n.lastSentHeartbeatDate)&&void 0!==e?e:t.lastSentHeartbeatDate,heartbeats:n.heartbeats})}}async add(n){var e;if(await this._canUseIndexedDBPromise){const t=await this.read();return he(this.app,{lastSentHeartbeatDate:null!==(e=n.lastSentHeartbeatDate)&&void 0!==e?e:t.lastSentHeartbeatDate,heartbeats:[...t.heartbeats,...n.heartbeats]})}}}function ye(n){return O(JSON.stringify({version:2,heartbeats:n})).length}Xn(new hn("platform-logger",(n=>new Un(n)),"PRIVATE")),Xn(new hn("heartbeat",(n=>new me(n)),"PRIVATE")),oe(Hn,Vn,""),oe(Hn,Vn,"esm2017"),oe("fire-js",""),oe("firebase","10.13.2","app");const be="@firebase/installations",ve="0.6.9",xe=1e4,ke=`w:${ve}`,we="FIS_v2",Ce="https://firebaseinstallations.googleapis.com/v1",Se=36e5,Ae=new Y("installations","Installations",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"not-registered":"Firebase Installation is not registered.","installation-not-found":"Firebase Installation not found.","request-failed":'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',"app-offline":"Could not process request. Application offline.","delete-pending-registration":"Can't delete installation while there is a pending registration request."});function Te(n){return n instanceof $&&n.code.includes("request-failed")}function Ie({projectId:n}){return`${Ce}/projects/${n}/installations`}function Ee(n){return{token:n.token,requestStatus:2,expiresIn:(e=n.expiresIn,Number(e.replace("s","000"))),creationTime:Date.now()};var e}async function Me(n,e){const t=(await e.json()).error;return Ae.create("request-failed",{requestName:n,serverCode:t.code,serverMessage:t.message,serverStatus:t.status})}function Pe({apiKey:n}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":n})}async function _e(n){const e=await n();return e.status>=500&&e.status<600?n():e}function Re(n){return new Promise((e=>{setTimeout(e,n)}))}const De=/^[cdef][\w-]{21}$/,Le="";function Ne(){try{const n=new Uint8Array(17);(self.crypto||self.msCrypto).getRandomValues(n),n[0]=112+n[0]%16;const e=function(n){var e;return(e=n,btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_")).substr(0,22)}(n);return De.test(e)?e:Le}catch(n){return Le}}function Be(n){return`${n.appName}!${n.appId}`}const ze=new Map;function Oe(n,e){const t=Be(n);Fe(t,e),function(n,e){const t=(!Ge&&"BroadcastChannel"in self&&(Ge=new BroadcastChannel("[Firebase] FID Change"),Ge.onmessage=n=>{Fe(n.data.key,n.data.fid)}),Ge);t&&t.postMessage({key:n,fid:e}),0===ze.size&&Ge&&(Ge.close(),Ge=null)}(t,e)}function Fe(n,e){const t=ze.get(n);if(t)for(const n of t)n(e)}let Ge=null;const je="firebase-installations-database",Ue=1,He="firebase-installations-store";let Ve=null;function We(){return Ve||(Ve=Bn(je,Ue,{upgrade:(n,e)=>{0===e&&n.createObjectStore(He)}})),Ve}async function Ke(n,e){const t=Be(n),a=(await We()).transaction(He,"readwrite"),i=a.objectStore(He),r=await i.get(t);return await i.put(e,t),await a.done,r&&r.fid===e.fid||Oe(n,e.fid),e}async function qe(n){const e=Be(n),t=(await We()).transaction(He,"readwrite");await t.objectStore(He).delete(e),await t.done}async function Je(n,e){const t=Be(n),a=(await We()).transaction(He,"readwrite"),i=a.objectStore(He),r=await i.get(t),o=e(r);return void 0===o?await i.delete(t):await i.put(o,t),await a.done,!o||r&&r.fid===o.fid||Oe(n,o.fid),o}async function $e(n){let e;const t=await Je(n.appConfig,(t=>{const a=function(n){return Xe(n||{fid:Ne(),registrationStatus:0})}(t),i=function(n,e){if(0===e.registrationStatus){if(!navigator.onLine)return{installationEntry:e,registrationPromise:Promise.reject(Ae.create("app-offline"))};const t={fid:e.fid,registrationStatus:1,registrationTime:Date.now()},a=async function(n,e){try{const t=await async function({appConfig:n,heartbeatServiceProvider:e},{fid:t}){const a=Ie(n),i=Pe(n),r=e.getImmediate({optional:!0});if(r){const n=await r.getHeartbeatsHeader();n&&i.append("x-firebase-client",n)}const o={fid:t,authVersion:we,appId:n.appId,sdkVersion:ke},s={method:"POST",headers:i,body:JSON.stringify(o)},l=await _e((()=>fetch(a,s)));if(l.ok){const n=await l.json();return{fid:n.fid||t,registrationStatus:2,refreshToken:n.refreshToken,authToken:Ee(n.authToken)}}throw await Me("Create Installation",l)}(n,e);return Ke(n.appConfig,t)}catch(t){throw Te(t)&&409===t.customData.serverCode?await qe(n.appConfig):await Ke(n.appConfig,{fid:e.fid,registrationStatus:0}),t}}(n,t);return{installationEntry:t,registrationPromise:a}}return 1===e.registrationStatus?{installationEntry:e,registrationPromise:Ye(n)}:{installationEntry:e}}(n,a);return e=i.registrationPromise,i.installationEntry}));return t.fid===Le?{installationEntry:await e}:{installationEntry:t,registrationPromise:e}}async function Ye(n){let e=await Qe(n.appConfig);for(;1===e.registrationStatus;)await Re(100),e=await Qe(n.appConfig);if(0===e.registrationStatus){const{installationEntry:e,registrationPromise:t}=await $e(n);return t||e}return e}function Qe(n){return Je(n,(n=>{if(!n)throw Ae.create("installation-not-found");return Xe(n)}))}function Xe(n){return 1===(e=n).registrationStatus&&e.registrationTime+xefetch(a,s)));if(l.ok)return Ee(await l.json());throw await Me("Generate Auth Token",l)}async function nt(n,e=!1){let t;const a=await Je(n.appConfig,(a=>{if(!tt(a))throw Ae.create("not-registered");const i=a.authToken;if(!e&&(2===(r=i).requestStatus&&!function(n){const e=Date.now();return e{if(!tt(n))throw Ae.create("not-registered");return 1===(e=n.authToken).requestStatus&&e.requestTime+xe{const e=n.getProvider("app").getImmediate(),t=function(n){if(!n||!n.options)throw at("App Configuration");if(!n.name)throw at("App Name");const e=["projectId","apiKey","appId"];for(const t of e)if(!n.options[t])throw at(t);return{appName:n.name,projectId:n.options.projectId,apiKey:n.options.apiKey,appId:n.options.appId}}(e);return{app:e,appConfig:t,heartbeatServiceProvider:Zn(e,"heartbeat"),_delete:()=>Promise.resolve()}}),"PUBLIC")),Xn(new hn("installations-internal",(n=>{const e=Zn(n.getProvider("app").getImmediate(),it).getImmediate();return{getId:()=>async function(n){const e=n,{installationEntry:t,registrationPromise:a}=await $e(e);return a?a.catch(console.error):nt(e).catch(console.error),t.fid}(e),getToken:n=>async function(n,e=!1){const t=n;return await async function(n){const{registrationPromise:e}=await $e(n);e&&await e}(t),(await nt(t,e)).token}(e,n)}}),"PRIVATE")),oe(be,ve),oe(be,ve,"esm2017");const rt="analytics",ot="firebase_id",st="origin",lt=6e4,ct="https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig",ut="https://www.googletagmanager.com/gtag/js",dt=new Cn("@firebase/analytics"),ht=new Y("analytics","Analytics",{"already-exists":"A Firebase Analytics instance with the appId {$id} already exists. Only one Firebase Analytics instance can be created for each appId.","already-initialized":"initializeAnalytics() cannot be called again with different options than those it was initially called with. It can be called again with the same options to return the existing instance, or getAnalytics() can be used to get a reference to the already-initialized instance.","already-initialized-settings":"Firebase Analytics has already been initialized.settings() must be called before initializing any Analytics instanceor it will have no effect.","interop-component-reg-failed":"Firebase Analytics Interop Component failed to instantiate: {$reason}","invalid-analytics-context":"Firebase Analytics is not supported in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","indexeddb-unavailable":"IndexedDB unavailable or restricted in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","fetch-throttle":"The config fetch request timed out while in an exponential backoff state. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.","config-fetch-failed":"Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}","no-api-key":'The "apiKey" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid API key.',"no-app-id":'The "appId" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid app ID.',"no-client-id":'The "client_id" field is empty.',"invalid-gtag-resource":"Trusted Types detected an invalid gtag resource: {$gtagURL}."});function ft(n){if(!n.startsWith(ut)){const e=ht.create("invalid-gtag-resource",{gtagURL:n});return dt.warn(e.message),""}return n}function mt(n){return Promise.all(n.map((n=>n.catch((n=>n)))))}const pt=30,gt=new class{constructor(n={},e=1e3){this.throttleMetadata=n,this.intervalMillis=e}getThrottleMetadata(n){return this.throttleMetadata[n]}setThrottleMetadata(n,e){this.throttleMetadata[n]=e}deleteThrottleMetadata(n){delete this.throttleMetadata[n]}};function yt(n){return new Headers({Accept:"application/json","x-goog-api-key":n})}async function bt(n,e=gt,t){const{appId:a,apiKey:i,measurementId:r}=n.options;if(!a)throw ht.create("no-app-id");if(!i){if(r)return{measurementId:r,appId:a};throw ht.create("no-api-key")}const o=e.getThrottleMetadata(a)||{backoffCount:0,throttleEndTimeMillis:Date.now()},s=new xt;return setTimeout((async()=>{s.abort()}),void 0!==t?t:lt),vt({appId:a,apiKey:i,measurementId:r},o,s,e)}async function vt(n,{throttleEndTimeMillis:e,backoffCount:t},a,i=gt){var r;const{appId:o,measurementId:s}=n;try{await function(n,e){return new Promise(((t,a)=>{const i=Math.max(e-Date.now(),0),r=setTimeout(t,i);n.addEventListener((()=>{clearTimeout(r),a(ht.create("fetch-throttle",{throttleEndTimeMillis:e}))}))}))}(a,e)}catch(n){if(s)return dt.warn(`Timed out fetching this Firebase app's measurement ID from the server. Falling back to the measurement ID ${s} provided in the "measurementId" field in the local Firebase config. [${null==n?void 0:n.message}]`),{appId:o,measurementId:s};throw n}try{const e=await async function(n){var e;const{appId:t,apiKey:a}=n,i={method:"GET",headers:yt(a)},r=ct.replace("{app-id}",t),o=await fetch(r,i);if(200!==o.status&&304!==o.status){let n="";try{const t=await o.json();(null===(e=t.error)||void 0===e?void 0:e.message)&&(n=t.error.message)}catch(n){}throw ht.create("config-fetch-failed",{httpStatus:o.status,responseMessage:n})}return o.json()}(n);return i.deleteThrottleMetadata(o),e}catch(e){const l=e;if(!function(n){if(!(n instanceof $&&n.customData))return!1;const e=Number(n.customData.httpStatus);return 429===e||500===e||503===e||504===e}(l)){if(i.deleteThrottleMetadata(o),s)return dt.warn(`Failed to fetch this Firebase app's measurement ID from the server. Falling back to the measurement ID ${s} provided in the "measurementId" field in the local Firebase config. [${null==l?void 0:l.message}]`),{appId:o,measurementId:s};throw e}const c=503===Number(null===(r=null==l?void 0:l.customData)||void 0===r?void 0:r.httpStatus)?un(t,i.intervalMillis,pt):un(t,i.intervalMillis),u={throttleEndTimeMillis:Date.now()+c,backoffCount:t+1};return i.setThrottleMetadata(o,u),dt.debug(`Calling attemptFetch again in ${c} millis`),vt(n,u,a,i)}}class xt{constructor(){this.listeners=[]}addEventListener(n){this.listeners.push(n)}abort(){this.listeners.forEach((n=>n()))}}let kt,wt;async function Ct(n,e,t,a,i,r,o){var s;const l=bt(n);l.then((e=>{t[e.measurementId]=e.appId,n.options.measurementId&&e.measurementId!==n.options.measurementId&&dt.warn(`The measurement ID in the local Firebase config (${n.options.measurementId}) does not match the measurement ID fetched from the server (${e.measurementId}). To ensure analytics events are always sent to the correct Analytics property, update the measurement ID field in the local config or remove it from the local config.`)})).catch((n=>dt.error(n))),e.push(l);const c=async function(){if(!q())return dt.warn(ht.create("indexeddb-unavailable",{errorInfo:"IndexedDB is not available in this environment."}).message),!1;try{await J()}catch(n){return dt.warn(ht.create("indexeddb-unavailable",{errorInfo:null==n?void 0:n.toString()}).message),!1}return!0}().then((n=>n?a.getId():void 0)),[u,d]=await Promise.all([l,c]);(function(n){const e=window.document.getElementsByTagName("script");for(const t of Object.values(e))if(t.src&&t.src.includes(ut)&&t.src.includes(n))return t;return null})(r)||function(n,e){const t=function(n,e){let t;return window.trustedTypes&&(t=window.trustedTypes.createPolicy("firebase-js-sdk-policy",e)),t}(0,{createScriptURL:ft}),a=document.createElement("script"),i=`${ut}?l=${n}&id=${e}`;a.src=t?null==t?void 0:t.createScriptURL(i):i,a.async=!0,document.head.appendChild(a)}(r,u.measurementId),wt&&(i("consent","default",wt),wt=void 0),i("js",new Date);const h=null!==(s=null==o?void 0:o.config)&&void 0!==s?s:{};return h[st]="firebase",h.update=!0,null!=d&&(h[ot]=d),i("config",u.measurementId,h),kt&&(i("set",kt),kt=void 0),u.measurementId}class St{constructor(n){this.app=n}_delete(){return delete At[this.app.options.appId],Promise.resolve()}}let At={},Tt=[];const It={};let Et,Mt,Pt="dataLayer",_t=!1;function Rt(n,e,t){!function(){const n=[];if(K()&&n.push("This is a browser extension environment."),"undefined"!=typeof navigator&&navigator.cookieEnabled||n.push("Cookies are not available."),n.length>0){const e=n.map(((n,e)=>`(${e+1}) ${n}`)).join(" "),t=ht.create("invalid-analytics-context",{errorInfo:e});dt.warn(t.message)}}();const a=n.options.appId;if(!a)throw ht.create("no-app-id");if(!n.options.apiKey){if(!n.options.measurementId)throw ht.create("no-api-key");dt.warn(`The "apiKey" field is empty in the local Firebase config. This is needed to fetch the latest measurement ID for this Firebase app. Falling back to the measurement ID ${n.options.measurementId} provided in the "measurementId" field in the local Firebase config.`)}if(null!=At[a])throw ht.create("already-exists",{id:a});if(!_t){!function(n){let e=[];Array.isArray(window[n])?e=window[n]:window[n]=e}(Pt);const{wrappedGtag:n,gtagCore:e}=function(n,e,t,a,i){let r=function(...n){window[a].push(arguments)};return window[i]&&"function"==typeof window[i]&&(r=window[i]),window[i]=function(n,e,t,a){return async function(i,...r){try{if("event"===i){const[a,i]=r;await async function(n,e,t,a,i){try{let r=[];if(i&&i.send_to){let n=i.send_to;Array.isArray(n)||(n=[n]);const a=await mt(t);for(const t of n){const n=a.find((n=>n.measurementId===t)),i=n&&e[n.appId];if(!i){r=[];break}r.push(i)}}0===r.length&&(r=Object.values(e)),await Promise.all(r),n("event",a,i||{})}catch(n){dt.error(n)}}(n,e,t,a,i)}else if("config"===i){const[i,o]=r;await async function(n,e,t,a,i,r){const o=a[i];try{if(o)await e[o];else{const n=(await mt(t)).find((n=>n.measurementId===i));n&&await e[n.appId]}}catch(n){dt.error(n)}n("config",i,r)}(n,e,t,a,i,o)}else if("consent"===i){const[e,t]=r;n("consent",e,t)}else if("get"===i){const[e,t,a]=r;n("get",e,t,a)}else if("set"===i){const[e]=r;n("set",e)}else n(i,...r)}catch(n){dt.error(n)}}}(r,n,e,t),{gtagCore:r,wrappedGtag:window[i]}}(At,Tt,It,Pt,"gtag");Mt=n,Et=e,_t=!0}return At[a]=Ct(n,Tt,It,e,Et,Pt,t),new St(n)}const Dt="@firebase/analytics",Lt="0.10.8";function Nt(n,e){var t={};for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&e.indexOf(a)<0&&(t[a]=n[a]);if(null!=n&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(a=Object.getOwnPropertySymbols(n);iRt(n.getProvider("app").getImmediate(),n.getProvider("installations-internal").getImmediate(),e)),"PUBLIC")),Xn(new hn("analytics-internal",(function(n){try{const e=n.getProvider(rt).getImmediate();return{logEvent:(n,t,a)=>function(n,e,t,a){n=dn(n),async function(n,e,t,a,i){if(i&&i.global)n("event",t,a);else{const i=await e;n("event",t,Object.assign(Object.assign({},a),{send_to:i}))}}(Mt,At[n.app.options.appId],e,t,a).catch((n=>dt.error(n)))}(e,n,t,a)}}catch(n){throw ht.create("interop-component-reg-failed",{reason:n})}}),"PRIVATE")),oe(Dt,Lt),oe(Dt,Lt,"esm2017"),Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError;const Bt=function(){return{"dependent-sdk-initialized-before-auth":"Another Firebase SDK was initialized and is trying to use Auth before Auth is initialized. Please be sure to call `initializeAuth` or `getAuth` before starting any other Firebase SDK."}},zt=new Y("auth","Firebase",{"dependent-sdk-initialized-before-auth":"Another Firebase SDK was initialized and is trying to use Auth before Auth is initialized. Please be sure to call `initializeAuth` or `getAuth` before starting any other Firebase SDK."}),Ot=new Cn("@firebase/auth");function Ft(n,...e){Ot.logLevel<=yn.ERROR&&Ot.error(`Auth (${ae}): ${n}`,...e)}function Gt(n,...e){throw Vt(n,...e)}function jt(n,...e){return Vt(n,...e)}function Ut(n,e,t){const a=Object.assign(Object.assign({},Bt()),{[e]:t});return new Y("auth","Firebase",a).create(e,{appName:n.name})}function Ht(n){return Ut(n,"operation-not-supported-in-this-environment","Operations that alter the current user are not supported in conjunction with FirebaseServerApp")}function Vt(n,...e){if("string"!=typeof n){const t=e[0],a=[...e.slice(1)];return a[0]&&(a[0].appName=n.name),n._errorFactory.create(t,...a)}return zt.create(n,...e)}function Wt(n,e,...t){if(!n)throw Vt(e,...t)}function Kt(n){const e="INTERNAL ASSERTION FAILED: "+n;throw Ft(e),new Error(e)}function qt(n,e){n||Kt(e)}function Jt(){var n;return"undefined"!=typeof self&&(null===(n=self.location)||void 0===n?void 0:n.href)||""}function $t(){var n;return"undefined"!=typeof self&&(null===(n=self.location)||void 0===n?void 0:n.protocol)||null}class Yt{constructor(n,e){this.shortDelay=n,this.longDelay=e,qt(e>n,"Short delay should be less than long delay!"),this.isMobile="undefined"!=typeof window&&!!(window.cordova||window.phonegap||window.PhoneGap)&&/ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(W())||"object"==typeof navigator&&"ReactNative"===navigator.product}get(){return"undefined"!=typeof navigator&&navigator&&"onLine"in navigator&&"boolean"==typeof navigator.onLine&&("http:"===$t()||"https:"===$t()||K()||"connection"in navigator)&&!navigator.onLine?Math.min(5e3,this.shortDelay):this.isMobile?this.longDelay:this.shortDelay}}function Qt(n,e){qt(n.emulator,"Emulator should always be set here");const{url:t}=n.emulator;return e?`${t}${e.startsWith("/")?e.slice(1):e}`:t}class Xt{static initialize(n,e,t){this.fetchImpl=n,e&&(this.headersImpl=e),t&&(this.responseImpl=t)}static fetch(){return this.fetchImpl?this.fetchImpl:"undefined"!=typeof self&&"fetch"in self?self.fetch:"undefined"!=typeof globalThis&&globalThis.fetch?globalThis.fetch:"undefined"!=typeof fetch?fetch:void Kt("Could not find fetch implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}static headers(){return this.headersImpl?this.headersImpl:"undefined"!=typeof self&&"Headers"in self?self.Headers:"undefined"!=typeof globalThis&&globalThis.Headers?globalThis.Headers:"undefined"!=typeof Headers?Headers:void Kt("Could not find Headers implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}static response(){return this.responseImpl?this.responseImpl:"undefined"!=typeof self&&"Response"in self?self.Response:"undefined"!=typeof globalThis&&globalThis.Response?globalThis.Response:"undefined"!=typeof Response?Response:void Kt("Could not find Response implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}}const Zt={CREDENTIAL_MISMATCH:"custom-token-mismatch",MISSING_CUSTOM_TOKEN:"internal-error",INVALID_IDENTIFIER:"invalid-email",MISSING_CONTINUE_URI:"internal-error",INVALID_PASSWORD:"wrong-password",MISSING_PASSWORD:"missing-password",INVALID_LOGIN_CREDENTIALS:"invalid-credential",EMAIL_EXISTS:"email-already-in-use",PASSWORD_LOGIN_DISABLED:"operation-not-allowed",INVALID_IDP_RESPONSE:"invalid-credential",INVALID_PENDING_TOKEN:"invalid-credential",FEDERATED_USER_ID_ALREADY_LINKED:"credential-already-in-use",MISSING_REQ_TYPE:"internal-error",EMAIL_NOT_FOUND:"user-not-found",RESET_PASSWORD_EXCEED_LIMIT:"too-many-requests",EXPIRED_OOB_CODE:"expired-action-code",INVALID_OOB_CODE:"invalid-action-code",MISSING_OOB_CODE:"internal-error",CREDENTIAL_TOO_OLD_LOGIN_AGAIN:"requires-recent-login",INVALID_ID_TOKEN:"invalid-user-token",TOKEN_EXPIRED:"user-token-expired",USER_NOT_FOUND:"user-token-expired",TOO_MANY_ATTEMPTS_TRY_LATER:"too-many-requests",PASSWORD_DOES_NOT_MEET_REQUIREMENTS:"password-does-not-meet-requirements",INVALID_CODE:"invalid-verification-code",INVALID_SESSION_INFO:"invalid-verification-id",INVALID_TEMPORARY_PROOF:"invalid-credential",MISSING_SESSION_INFO:"missing-verification-id",SESSION_EXPIRED:"code-expired",MISSING_ANDROID_PACKAGE_NAME:"missing-android-pkg-name",UNAUTHORIZED_DOMAIN:"unauthorized-continue-uri",INVALID_OAUTH_CLIENT_ID:"invalid-oauth-client-id",ADMIN_ONLY_OPERATION:"admin-restricted-operation",INVALID_MFA_PENDING_CREDENTIAL:"invalid-multi-factor-session",MFA_ENROLLMENT_NOT_FOUND:"multi-factor-info-not-found",MISSING_MFA_ENROLLMENT_ID:"missing-multi-factor-info",MISSING_MFA_PENDING_CREDENTIAL:"missing-multi-factor-session",SECOND_FACTOR_EXISTS:"second-factor-already-in-use",SECOND_FACTOR_LIMIT_EXCEEDED:"maximum-second-factor-count-exceeded",BLOCKING_FUNCTION_ERROR_RESPONSE:"internal-error",RECAPTCHA_NOT_ENABLED:"recaptcha-not-enabled",MISSING_RECAPTCHA_TOKEN:"missing-recaptcha-token",INVALID_RECAPTCHA_TOKEN:"invalid-recaptcha-token",INVALID_RECAPTCHA_ACTION:"invalid-recaptcha-action",MISSING_CLIENT_TYPE:"missing-client-type",MISSING_RECAPTCHA_VERSION:"missing-recaptcha-version",INVALID_RECAPTCHA_VERSION:"invalid-recaptcha-version",INVALID_REQ_TYPE:"invalid-req-type"},na=new Yt(3e4,6e4);function ea(n,e){return n.tenantId&&!e.tenantId?Object.assign(Object.assign({},e),{tenantId:n.tenantId}):e}async function ta(n,e,t,a,i={}){return aa(n,i,(async()=>{let i={},r={};a&&("GET"===e?r=a:i={body:JSON.stringify(a)});const o=nn(Object.assign({key:n.config.apiKey},r)).slice(1),s=await n._getAdditionalHeaders();s["Content-Type"]="application/json",n.languageCode&&(s["X-Firebase-Locale"]=n.languageCode);const l=Object.assign({method:e,headers:s},i);return"undefined"!=typeof navigator&&"Cloudflare-Workers"===navigator.userAgent||(l.referrerPolicy="no-referrer"),Xt.fetch()(ra(n,n.config.apiHost,t,o),l)}))}async function aa(n,e,t){n._canInitEmulator=!1;const a=Object.assign(Object.assign({},Zt),e);try{const e=new sa(n),i=await Promise.race([t(),e.promise]);e.clearNetworkTimeout();const r=await i.json();if("needConfirmation"in r)throw la(n,"account-exists-with-different-credential",r);if(i.ok&&!("errorMessage"in r))return r;{const e=i.ok?r.errorMessage:r.error.message,[t,o]=e.split(" : ");if("FEDERATED_USER_ID_ALREADY_LINKED"===t)throw la(n,"credential-already-in-use",r);if("EMAIL_EXISTS"===t)throw la(n,"email-already-in-use",r);if("USER_DISABLED"===t)throw la(n,"user-disabled",r);const s=a[t]||t.toLowerCase().replace(/[_\s]+/g,"-");if(o)throw Ut(n,s,o);Gt(n,s)}}catch(e){if(e instanceof $)throw e;Gt(n,"network-request-failed",{message:String(e)})}}async function ia(n,e,t,a,i={}){const r=await ta(n,e,t,a,i);return"mfaPendingCredential"in r&&Gt(n,"multi-factor-auth-required",{_serverResponse:r}),r}function ra(n,e,t,a){const i=`${e}${t}?${a}`;return n.config.emulator?Qt(n.config,i):`${n.config.apiScheme}://${i}`}function oa(n){switch(n){case"ENFORCE":return"ENFORCE";case"AUDIT":return"AUDIT";case"OFF":return"OFF";default:return"ENFORCEMENT_STATE_UNSPECIFIED"}}class sa{constructor(n){this.auth=n,this.timer=null,this.promise=new Promise(((n,e)=>{this.timer=setTimeout((()=>e(jt(this.auth,"network-request-failed"))),na.get())}))}clearNetworkTimeout(){clearTimeout(this.timer)}}function la(n,e,t){const a={appName:n.name};t.email&&(a.email=t.email),t.phoneNumber&&(a.phoneNumber=t.phoneNumber);const i=jt(n,e,a);return i.customData._tokenResponse=t,i}function ca(n){return void 0!==n&&void 0!==n.enterprise}class ua{constructor(n){if(this.siteKey="",this.recaptchaEnforcementState=[],void 0===n.recaptchaKey)throw new Error("recaptchaKey undefined");this.siteKey=n.recaptchaKey.split("/")[3],this.recaptchaEnforcementState=n.recaptchaEnforcementState}getProviderEnforcementState(n){if(!this.recaptchaEnforcementState||0===this.recaptchaEnforcementState.length)return null;for(const e of this.recaptchaEnforcementState)if(e.provider&&e.provider===n)return oa(e.enforcementState);return null}isProviderEnabled(n){return"ENFORCE"===this.getProviderEnforcementState(n)||"AUDIT"===this.getProviderEnforcementState(n)}}async function da(n,e){return ta(n,"POST","/v1/accounts:lookup",e)}function ha(n){if(n)try{const e=new Date(Number(n));if(!isNaN(e.getTime()))return e.toUTCString()}catch(n){}}function fa(n){return 1e3*Number(n)}function ma(n){const[e,t,a]=n.split(".");if(void 0===e||void 0===t||void 0===a)return Ft("JWT malformed, contained fewer than 3 sections"),null;try{const n=F(t);return n?JSON.parse(n):(Ft("Failed to decode base64 JWT payload"),null)}catch(n){return Ft("Caught error parsing JWT payload as JSON",null==n?void 0:n.toString()),null}}function pa(n){const e=ma(n);return Wt(e,"internal-error"),Wt(void 0!==e.exp,"internal-error"),Wt(void 0!==e.iat,"internal-error"),Number(e.exp)-Number(e.iat)}async function ga(n,e,t=!1){if(t)return e;try{return await e}catch(e){throw e instanceof $&&function({code:n}){return"auth/user-disabled"===n||"auth/user-token-expired"===n}(e)&&n.auth.currentUser===n&&await n.auth.signOut(),e}}class ya{constructor(n){this.user=n,this.isRunning=!1,this.timerId=null,this.errorBackoff=3e4}_start(){this.isRunning||(this.isRunning=!0,this.schedule())}_stop(){this.isRunning&&(this.isRunning=!1,null!==this.timerId&&clearTimeout(this.timerId))}getInterval(n){var e;if(n){const n=this.errorBackoff;return this.errorBackoff=Math.min(2*this.errorBackoff,96e4),n}{this.errorBackoff=3e4;const n=(null!==(e=this.user.stsTokenManager.expirationTime)&&void 0!==e?e:0)-Date.now()-3e5;return Math.max(0,n)}}schedule(n=!1){if(!this.isRunning)return;const e=this.getInterval(n);this.timerId=setTimeout((async()=>{await this.iteration()}),e)}async iteration(){try{await this.user.getIdToken(!0)}catch(n){return void("auth/network-request-failed"===(null==n?void 0:n.code)&&this.schedule(!0))}this.schedule()}}class ba{constructor(n,e){this.createdAt=n,this.lastLoginAt=e,this._initializeTime()}_initializeTime(){this.lastSignInTime=ha(this.lastLoginAt),this.creationTime=ha(this.createdAt)}_copy(n){this.createdAt=n.createdAt,this.lastLoginAt=n.lastLoginAt,this._initializeTime()}toJSON(){return{createdAt:this.createdAt,lastLoginAt:this.lastLoginAt}}}async function va(n){var e;const t=n.auth,a=await n.getIdToken(),i=await ga(n,da(t,{idToken:a}));Wt(null==i?void 0:i.users.length,t,"internal-error");const r=i.users[0];n._notifyReloadListener(r);const o=(null===(e=r.providerUserInfo)||void 0===e?void 0:e.length)?xa(r.providerUserInfo):[],s=(l=n.providerData,c=o,[...l.filter((n=>!c.some((e=>e.providerId===n.providerId)))),...c]);var l,c;const u=n.isAnonymous,d=!(n.email&&r.passwordHash||(null==s?void 0:s.length)),h=!!u&&d,f={uid:r.localId,displayName:r.displayName||null,photoURL:r.photoUrl||null,email:r.email||null,emailVerified:r.emailVerified||!1,phoneNumber:r.phoneNumber||null,tenantId:r.tenantId||null,providerData:s,metadata:new ba(r.createdAt,r.lastLoginAt),isAnonymous:h};Object.assign(n,f)}function xa(n){return n.map((n=>{var{providerId:e}=n,t=Nt(n,["providerId"]);return{providerId:e,uid:t.rawId||"",displayName:t.displayName||null,email:t.email||null,phoneNumber:t.phoneNumber||null,photoURL:t.photoUrl||null}}))}class ka{constructor(){this.refreshToken=null,this.accessToken=null,this.expirationTime=null}get isExpired(){return!this.expirationTime||Date.now()>this.expirationTime-3e4}updateFromServerResponse(n){Wt(n.idToken,"internal-error"),Wt(void 0!==n.idToken,"internal-error"),Wt(void 0!==n.refreshToken,"internal-error");const e="expiresIn"in n&&void 0!==n.expiresIn?Number(n.expiresIn):pa(n.idToken);this.updateTokensAndExpiration(n.idToken,n.refreshToken,e)}updateFromIdToken(n){Wt(0!==n.length,"internal-error");const e=pa(n);this.updateTokensAndExpiration(n,null,e)}async getToken(n,e=!1){return e||!this.accessToken||this.isExpired?(Wt(this.refreshToken,n,"user-token-expired"),this.refreshToken?(await this.refresh(n,this.refreshToken),this.accessToken):null):this.accessToken}clearRefreshToken(){this.refreshToken=null}async refresh(n,e){const{accessToken:t,refreshToken:a,expiresIn:i}=await async function(n,e){const t=await aa(n,{},(async()=>{const t=nn({grant_type:"refresh_token",refresh_token:e}).slice(1),{tokenApiHost:a,apiKey:i}=n.config,r=ra(n,a,"/v1/token",`key=${i}`),o=await n._getAdditionalHeaders();return o["Content-Type"]="application/x-www-form-urlencoded",Xt.fetch()(r,{method:"POST",headers:o,body:t})}));return{accessToken:t.access_token,expiresIn:t.expires_in,refreshToken:t.refresh_token}}(n,e);this.updateTokensAndExpiration(t,a,Number(i))}updateTokensAndExpiration(n,e,t){this.refreshToken=e||null,this.accessToken=n||null,this.expirationTime=Date.now()+1e3*t}static fromJSON(n,e){const{refreshToken:t,accessToken:a,expirationTime:i}=e,r=new ka;return t&&(Wt("string"==typeof t,"internal-error",{appName:n}),r.refreshToken=t),a&&(Wt("string"==typeof a,"internal-error",{appName:n}),r.accessToken=a),i&&(Wt("number"==typeof i,"internal-error",{appName:n}),r.expirationTime=i),r}toJSON(){return{refreshToken:this.refreshToken,accessToken:this.accessToken,expirationTime:this.expirationTime}}_assign(n){this.accessToken=n.accessToken,this.refreshToken=n.refreshToken,this.expirationTime=n.expirationTime}_clone(){return Object.assign(new ka,this.toJSON())}_performRefresh(){return Kt("not implemented")}}function wa(n,e){Wt("string"==typeof n||void 0===n,"internal-error",{appName:e})}class Ca{constructor(n){var{uid:e,auth:t,stsTokenManager:a}=n,i=Nt(n,["uid","auth","stsTokenManager"]);this.providerId="firebase",this.proactiveRefresh=new ya(this),this.reloadUserInfo=null,this.reloadListener=null,this.uid=e,this.auth=t,this.stsTokenManager=a,this.accessToken=a.accessToken,this.displayName=i.displayName||null,this.email=i.email||null,this.emailVerified=i.emailVerified||!1,this.phoneNumber=i.phoneNumber||null,this.photoURL=i.photoURL||null,this.isAnonymous=i.isAnonymous||!1,this.tenantId=i.tenantId||null,this.providerData=i.providerData?[...i.providerData]:[],this.metadata=new ba(i.createdAt||void 0,i.lastLoginAt||void 0)}async getIdToken(n){const e=await ga(this,this.stsTokenManager.getToken(this.auth,n));return Wt(e,this.auth,"internal-error"),this.accessToken!==e&&(this.accessToken=e,await this.auth._persistUserIfCurrent(this),this.auth._notifyListenersIfCurrent(this)),e}getIdTokenResult(n){return async function(n,e=!1){const t=dn(n),a=await t.getIdToken(e),i=ma(a);Wt(i&&i.exp&&i.auth_time&&i.iat,t.auth,"internal-error");const r="object"==typeof i.firebase?i.firebase:void 0,o=null==r?void 0:r.sign_in_provider;return{claims:i,token:a,authTime:ha(fa(i.auth_time)),issuedAtTime:ha(fa(i.iat)),expirationTime:ha(fa(i.exp)),signInProvider:o||null,signInSecondFactor:(null==r?void 0:r.sign_in_second_factor)||null}}(this,n)}reload(){return async function(n){const e=dn(n);await va(e),await e.auth._persistUserIfCurrent(e),e.auth._notifyListenersIfCurrent(e)}(this)}_assign(n){this!==n&&(Wt(this.uid===n.uid,this.auth,"internal-error"),this.displayName=n.displayName,this.photoURL=n.photoURL,this.email=n.email,this.emailVerified=n.emailVerified,this.phoneNumber=n.phoneNumber,this.isAnonymous=n.isAnonymous,this.tenantId=n.tenantId,this.providerData=n.providerData.map((n=>Object.assign({},n))),this.metadata._copy(n.metadata),this.stsTokenManager._assign(n.stsTokenManager))}_clone(n){const e=new Ca(Object.assign(Object.assign({},this),{auth:n,stsTokenManager:this.stsTokenManager._clone()}));return e.metadata._copy(this.metadata),e}_onReload(n){Wt(!this.reloadListener,this.auth,"internal-error"),this.reloadListener=n,this.reloadUserInfo&&(this._notifyReloadListener(this.reloadUserInfo),this.reloadUserInfo=null)}_notifyReloadListener(n){this.reloadListener?this.reloadListener(n):this.reloadUserInfo=n}_startProactiveRefresh(){this.proactiveRefresh._start()}_stopProactiveRefresh(){this.proactiveRefresh._stop()}async _updateTokensIfNecessary(n,e=!1){let t=!1;n.idToken&&n.idToken!==this.stsTokenManager.accessToken&&(this.stsTokenManager.updateFromServerResponse(n),t=!0),e&&await va(this),await this.auth._persistUserIfCurrent(this),t&&this.auth._notifyListenersIfCurrent(this)}async delete(){if(ne(this.auth.app))return Promise.reject(Ht(this.auth));const n=await this.getIdToken();return await ga(this,async function(n,e){return ta(n,"POST","/v1/accounts:delete",e)}(this.auth,{idToken:n})),this.stsTokenManager.clearRefreshToken(),this.auth.signOut()}toJSON(){return Object.assign(Object.assign({uid:this.uid,email:this.email||void 0,emailVerified:this.emailVerified,displayName:this.displayName||void 0,isAnonymous:this.isAnonymous,photoURL:this.photoURL||void 0,phoneNumber:this.phoneNumber||void 0,tenantId:this.tenantId||void 0,providerData:this.providerData.map((n=>Object.assign({},n))),stsTokenManager:this.stsTokenManager.toJSON(),_redirectEventId:this._redirectEventId},this.metadata.toJSON()),{apiKey:this.auth.config.apiKey,appName:this.auth.name})}get refreshToken(){return this.stsTokenManager.refreshToken||""}static _fromJSON(n,e){var t,a,i,r,o,s,l,c;const u=null!==(t=e.displayName)&&void 0!==t?t:void 0,d=null!==(a=e.email)&&void 0!==a?a:void 0,h=null!==(i=e.phoneNumber)&&void 0!==i?i:void 0,f=null!==(r=e.photoURL)&&void 0!==r?r:void 0,m=null!==(o=e.tenantId)&&void 0!==o?o:void 0,p=null!==(s=e._redirectEventId)&&void 0!==s?s:void 0,g=null!==(l=e.createdAt)&&void 0!==l?l:void 0,y=null!==(c=e.lastLoginAt)&&void 0!==c?c:void 0,{uid:b,emailVerified:v,isAnonymous:x,providerData:k,stsTokenManager:w}=e;Wt(b&&w,n,"internal-error");const C=ka.fromJSON(this.name,w);Wt("string"==typeof b,n,"internal-error"),wa(u,n.name),wa(d,n.name),Wt("boolean"==typeof v,n,"internal-error"),Wt("boolean"==typeof x,n,"internal-error"),wa(h,n.name),wa(f,n.name),wa(m,n.name),wa(p,n.name),wa(g,n.name),wa(y,n.name);const S=new Ca({uid:b,auth:n,email:d,emailVerified:v,displayName:u,isAnonymous:x,photoURL:f,phoneNumber:h,tenantId:m,stsTokenManager:C,createdAt:g,lastLoginAt:y});return k&&Array.isArray(k)&&(S.providerData=k.map((n=>Object.assign({},n)))),p&&(S._redirectEventId=p),S}static async _fromIdTokenResponse(n,e,t=!1){const a=new ka;a.updateFromServerResponse(e);const i=new Ca({uid:e.localId,auth:n,stsTokenManager:a,isAnonymous:t});return await va(i),i}static async _fromGetAccountInfoResponse(n,e,t){const a=e.users[0];Wt(void 0!==a.localId,"internal-error");const i=void 0!==a.providerUserInfo?xa(a.providerUserInfo):[],r=!(a.email&&a.passwordHash||(null==i?void 0:i.length)),o=new ka;o.updateFromIdToken(t);const s=new Ca({uid:a.localId,auth:n,stsTokenManager:o,isAnonymous:r}),l={uid:a.localId,displayName:a.displayName||null,photoURL:a.photoUrl||null,email:a.email||null,emailVerified:a.emailVerified||!1,phoneNumber:a.phoneNumber||null,tenantId:a.tenantId||null,providerData:i,metadata:new ba(a.createdAt,a.lastLoginAt),isAnonymous:!(a.email&&a.passwordHash||(null==i?void 0:i.length))};return Object.assign(s,l),s}}const Sa=new Map;function Aa(n){qt(n instanceof Function,"Expected a class definition");let e=Sa.get(n);return e?(qt(e instanceof n,"Instance stored in cache mismatched with class"),e):(e=new n,Sa.set(n,e),e)}class Ta{constructor(){this.type="NONE",this.storage={}}async _isAvailable(){return!0}async _set(n,e){this.storage[n]=e}async _get(n){const e=this.storage[n];return void 0===e?null:e}async _remove(n){delete this.storage[n]}_addListener(n,e){}_removeListener(n,e){}}Ta.type="NONE";const Ia=Ta;function Ea(n,e,t){return`firebase:${n}:${e}:${t}`}class Ma{constructor(n,e,t){this.persistence=n,this.auth=e,this.userKey=t;const{config:a,name:i}=this.auth;this.fullUserKey=Ea(this.userKey,a.apiKey,i),this.fullPersistenceKey=Ea("persistence",a.apiKey,i),this.boundEventHandler=e._onStorageEvent.bind(e),this.persistence._addListener(this.fullUserKey,this.boundEventHandler)}setCurrentUser(n){return this.persistence._set(this.fullUserKey,n.toJSON())}async getCurrentUser(){const n=await this.persistence._get(this.fullUserKey);return n?Ca._fromJSON(this.auth,n):null}removeCurrentUser(){return this.persistence._remove(this.fullUserKey)}savePersistenceForRedirect(){return this.persistence._set(this.fullPersistenceKey,this.persistence.type)}async setPersistence(n){if(this.persistence===n)return;const e=await this.getCurrentUser();return await this.removeCurrentUser(),this.persistence=n,e?this.setCurrentUser(e):void 0}delete(){this.persistence._removeListener(this.fullUserKey,this.boundEventHandler)}static async create(n,e,t="authUser"){if(!e.length)return new Ma(Aa(Ia),n,t);const a=(await Promise.all(e.map((async n=>{if(await n._isAvailable())return n})))).filter((n=>n));let i=a[0]||Aa(Ia);const r=Ea(t,n.config.apiKey,n.name);let o=null;for(const t of e)try{const e=await t._get(r);if(e){const a=Ca._fromJSON(n,e);t!==i&&(o=a),i=t;break}}catch(n){}const s=a.filter((n=>n._shouldAllowMigration));return i._shouldAllowMigration&&s.length?(i=s[0],o&&await i._set(r,o.toJSON()),await Promise.all(e.map((async n=>{if(n!==i)try{await n._remove(r)}catch(n){}}))),new Ma(i,n,t)):new Ma(i,n,t)}}function Pa(n){const e=n.toLowerCase();if(e.includes("opera/")||e.includes("opr/")||e.includes("opios/"))return"Opera";if(La(e))return"IEMobile";if(e.includes("msie")||e.includes("trident/"))return"IE";if(e.includes("edge/"))return"Edge";if(_a(e))return"Firefox";if(e.includes("silk/"))return"Silk";if(Ba(e))return"Blackberry";if(za(e))return"Webos";if(Ra(e))return"Safari";if((e.includes("chrome/")||Da(e))&&!e.includes("edge/"))return"Chrome";if(Na(e))return"Android";{const e=/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/,t=n.match(e);if(2===(null==t?void 0:t.length))return t[1]}return"Other"}function _a(n=W()){return/firefox\//i.test(n)}function Ra(n=W()){const e=n.toLowerCase();return e.includes("safari/")&&!e.includes("chrome/")&&!e.includes("crios/")&&!e.includes("android")}function Da(n=W()){return/crios\//i.test(n)}function La(n=W()){return/iemobile/i.test(n)}function Na(n=W()){return/android/i.test(n)}function Ba(n=W()){return/blackberry/i.test(n)}function za(n=W()){return/webos/i.test(n)}function Oa(n=W()){return/iphone|ipad|ipod/i.test(n)||/macintosh/i.test(n)&&/mobile/i.test(n)}function Fa(n=W()){return Oa(n)||Na(n)||za(n)||Ba(n)||/windows phone/i.test(n)||La(n)}function Ga(n,e=[]){let t;switch(n){case"Browser":t=Pa(W());break;case"Worker":t=`${Pa(W())}-${n}`;break;default:t=n}const a=e.length?e.join(","):"FirebaseCore-web";return`${t}/JsCore/${ae}/${a}`}class ja{constructor(n){this.auth=n,this.queue=[]}pushCallback(n,e){const t=e=>new Promise(((t,a)=>{try{t(n(e))}catch(n){a(n)}}));t.onAbort=e,this.queue.push(t);const a=this.queue.length-1;return()=>{this.queue[a]=()=>Promise.resolve()}}async runMiddleware(n){if(this.auth.currentUser===n)return;const e=[];try{for(const t of this.queue)await t(n),t.onAbort&&e.push(t.onAbort)}catch(n){e.reverse();for(const n of e)try{n()}catch(n){}throw this.auth._errorFactory.create("login-blocked",{originalMessage:null==n?void 0:n.message})}}}class Ua{constructor(n){var e,t,a,i;const r=n.customStrengthOptions;this.customStrengthOptions={},this.customStrengthOptions.minPasswordLength=null!==(e=r.minPasswordLength)&&void 0!==e?e:6,r.maxPasswordLength&&(this.customStrengthOptions.maxPasswordLength=r.maxPasswordLength),void 0!==r.containsLowercaseCharacter&&(this.customStrengthOptions.containsLowercaseLetter=r.containsLowercaseCharacter),void 0!==r.containsUppercaseCharacter&&(this.customStrengthOptions.containsUppercaseLetter=r.containsUppercaseCharacter),void 0!==r.containsNumericCharacter&&(this.customStrengthOptions.containsNumericCharacter=r.containsNumericCharacter),void 0!==r.containsNonAlphanumericCharacter&&(this.customStrengthOptions.containsNonAlphanumericCharacter=r.containsNonAlphanumericCharacter),this.enforcementState=n.enforcementState,"ENFORCEMENT_STATE_UNSPECIFIED"===this.enforcementState&&(this.enforcementState="OFF"),this.allowedNonAlphanumericCharacters=null!==(a=null===(t=n.allowedNonAlphanumericCharacters)||void 0===t?void 0:t.join(""))&&void 0!==a?a:"",this.forceUpgradeOnSignin=null!==(i=n.forceUpgradeOnSignin)&&void 0!==i&&i,this.schemaVersion=n.schemaVersion}validatePassword(n){var e,t,a,i,r,o;const s={isValid:!0,passwordPolicy:this};return this.validatePasswordLengthOptions(n,s),this.validatePasswordCharacterOptions(n,s),s.isValid&&(s.isValid=null===(e=s.meetsMinPasswordLength)||void 0===e||e),s.isValid&&(s.isValid=null===(t=s.meetsMaxPasswordLength)||void 0===t||t),s.isValid&&(s.isValid=null===(a=s.containsLowercaseLetter)||void 0===a||a),s.isValid&&(s.isValid=null===(i=s.containsUppercaseLetter)||void 0===i||i),s.isValid&&(s.isValid=null===(r=s.containsNumericCharacter)||void 0===r||r),s.isValid&&(s.isValid=null===(o=s.containsNonAlphanumericCharacter)||void 0===o||o),s}validatePasswordLengthOptions(n,e){const t=this.customStrengthOptions.minPasswordLength,a=this.customStrengthOptions.maxPasswordLength;t&&(e.meetsMinPasswordLength=n.length>=t),a&&(e.meetsMaxPasswordLength=n.length<=a)}validatePasswordCharacterOptions(n,e){let t;this.updatePasswordCharacterOptionsStatuses(e,!1,!1,!1,!1);for(let a=0;a="a"&&t<="z",t>="A"&&t<="Z",t>="0"&&t<="9",this.allowedNonAlphanumericCharacters.includes(t))}updatePasswordCharacterOptionsStatuses(n,e,t,a,i){this.customStrengthOptions.containsLowercaseLetter&&(n.containsLowercaseLetter||(n.containsLowercaseLetter=e)),this.customStrengthOptions.containsUppercaseLetter&&(n.containsUppercaseLetter||(n.containsUppercaseLetter=t)),this.customStrengthOptions.containsNumericCharacter&&(n.containsNumericCharacter||(n.containsNumericCharacter=a)),this.customStrengthOptions.containsNonAlphanumericCharacter&&(n.containsNonAlphanumericCharacter||(n.containsNonAlphanumericCharacter=i))}}class Ha{constructor(n,e,t,a){this.app=n,this.heartbeatServiceProvider=e,this.appCheckServiceProvider=t,this.config=a,this.currentUser=null,this.emulatorConfig=null,this.operations=Promise.resolve(),this.authStateSubscription=new Wa(this),this.idTokenSubscription=new Wa(this),this.beforeStateQueue=new ja(this),this.redirectUser=null,this.isProactiveRefreshEnabled=!1,this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION=1,this._canInitEmulator=!0,this._isInitialized=!1,this._deleted=!1,this._initializationPromise=null,this._popupRedirectResolver=null,this._errorFactory=zt,this._agentRecaptchaConfig=null,this._tenantRecaptchaConfigs={},this._projectPasswordPolicy=null,this._tenantPasswordPolicies={},this.lastNotifiedUid=void 0,this.languageCode=null,this.tenantId=null,this.settings={appVerificationDisabledForTesting:!1},this.frameworks=[],this.name=n.name,this.clientVersion=a.sdkClientVersion}_initializeWithPersistence(n,e){return e&&(this._popupRedirectResolver=Aa(e)),this._initializationPromise=this.queue((async()=>{var t,a;if(!this._deleted&&(this.persistenceManager=await Ma.create(this,n),!this._deleted)){if(null===(t=this._popupRedirectResolver)||void 0===t?void 0:t._shouldInitProactively)try{await this._popupRedirectResolver._initialize(this)}catch(n){}await this.initializeCurrentUser(e),this.lastNotifiedUid=(null===(a=this.currentUser)||void 0===a?void 0:a.uid)||null,this._deleted||(this._isInitialized=!0)}})),this._initializationPromise}async _onStorageEvent(){if(this._deleted)return;const n=await this.assertedPersistence.getCurrentUser();return this.currentUser||n?this.currentUser&&n&&this.currentUser.uid===n.uid?(this._currentUser._assign(n),void await this.currentUser.getIdToken()):void await this._updateCurrentUser(n,!0):void 0}async initializeCurrentUserFromIdToken(n){try{const e=await da(this,{idToken:n}),t=await Ca._fromGetAccountInfoResponse(this,e,n);await this.directlySetCurrentUser(t)}catch(n){console.warn("FirebaseServerApp could not login user with provided authIdToken: ",n),await this.directlySetCurrentUser(null)}}async initializeCurrentUser(n){var e;if(ne(this.app)){const n=this.app.settings.authIdToken;return n?new Promise((e=>{setTimeout((()=>this.initializeCurrentUserFromIdToken(n).then(e,e)))})):this.directlySetCurrentUser(null)}const t=await this.assertedPersistence.getCurrentUser();let a=t,i=!1;if(n&&this.config.authDomain){await this.getOrInitRedirectPersistenceManager();const t=null===(e=this.redirectUser)||void 0===e?void 0:e._redirectEventId,r=null==a?void 0:a._redirectEventId,o=await this.tryRedirectSignIn(n);t&&t!==r||!(null==o?void 0:o.user)||(a=o.user,i=!0)}if(!a)return this.directlySetCurrentUser(null);if(!a._redirectEventId){if(i)try{await this.beforeStateQueue.runMiddleware(a)}catch(n){a=t,this._popupRedirectResolver._overrideRedirectResult(this,(()=>Promise.reject(n)))}return a?this.reloadAndSetCurrentUserOrClear(a):this.directlySetCurrentUser(null)}return Wt(this._popupRedirectResolver,this,"argument-error"),await this.getOrInitRedirectPersistenceManager(),this.redirectUser&&this.redirectUser._redirectEventId===a._redirectEventId?this.directlySetCurrentUser(a):this.reloadAndSetCurrentUserOrClear(a)}async tryRedirectSignIn(n){let e=null;try{e=await this._popupRedirectResolver._completeRedirectFn(this,n,!0)}catch(n){await this._setRedirectUser(null)}return e}async reloadAndSetCurrentUserOrClear(n){try{await va(n)}catch(n){if("auth/network-request-failed"!==(null==n?void 0:n.code))return this.directlySetCurrentUser(null)}return this.directlySetCurrentUser(n)}useDeviceLanguage(){this.languageCode=function(){if("undefined"==typeof navigator)return null;const n=navigator;return n.languages&&n.languages[0]||n.language||null}()}async _delete(){this._deleted=!0}async updateCurrentUser(n){if(ne(this.app))return Promise.reject(Ht(this));const e=n?dn(n):null;return e&&Wt(e.auth.config.apiKey===this.config.apiKey,this,"invalid-user-token"),this._updateCurrentUser(e&&e._clone(this))}async _updateCurrentUser(n,e=!1){if(!this._deleted)return n&&Wt(this.tenantId===n.tenantId,this,"tenant-id-mismatch"),e||await this.beforeStateQueue.runMiddleware(n),this.queue((async()=>{await this.directlySetCurrentUser(n),this.notifyAuthListeners()}))}async signOut(){return ne(this.app)?Promise.reject(Ht(this)):(await this.beforeStateQueue.runMiddleware(null),(this.redirectPersistenceManager||this._popupRedirectResolver)&&await this._setRedirectUser(null),this._updateCurrentUser(null,!0))}setPersistence(n){return ne(this.app)?Promise.reject(Ht(this)):this.queue((async()=>{await this.assertedPersistence.setPersistence(Aa(n))}))}_getRecaptchaConfig(){return null==this.tenantId?this._agentRecaptchaConfig:this._tenantRecaptchaConfigs[this.tenantId]}async validatePassword(n){this._getPasswordPolicyInternal()||await this._updatePasswordPolicy();const e=this._getPasswordPolicyInternal();return e.schemaVersion!==this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION?Promise.reject(this._errorFactory.create("unsupported-password-policy-schema-version",{})):e.validatePassword(n)}_getPasswordPolicyInternal(){return null===this.tenantId?this._projectPasswordPolicy:this._tenantPasswordPolicies[this.tenantId]}async _updatePasswordPolicy(){const n=await async function(n,e={}){return ta(n,"GET","/v2/passwordPolicy",ea(n,e))}(this),e=new Ua(n);null===this.tenantId?this._projectPasswordPolicy=e:this._tenantPasswordPolicies[this.tenantId]=e}_getPersistence(){return this.assertedPersistence.persistence.type}_updateErrorMap(n){this._errorFactory=new Y("auth","Firebase",n())}onAuthStateChanged(n,e,t){return this.registerStateListener(this.authStateSubscription,n,e,t)}beforeAuthStateChanged(n,e){return this.beforeStateQueue.pushCallback(n,e)}onIdTokenChanged(n,e,t){return this.registerStateListener(this.idTokenSubscription,n,e,t)}authStateReady(){return new Promise(((n,e)=>{if(this.currentUser)n();else{const t=this.onAuthStateChanged((()=>{t(),n()}),e)}}))}async revokeAccessToken(n){if(this.currentUser){const e={providerId:"apple.com",tokenType:"ACCESS_TOKEN",token:n,idToken:await this.currentUser.getIdToken()};null!=this.tenantId&&(e.tenantId=this.tenantId),await async function(n,e){return ta(n,"POST","/v2/accounts:revokeToken",ea(n,e))}(this,e)}}toJSON(){var n;return{apiKey:this.config.apiKey,authDomain:this.config.authDomain,appName:this.name,currentUser:null===(n=this._currentUser)||void 0===n?void 0:n.toJSON()}}async _setRedirectUser(n,e){const t=await this.getOrInitRedirectPersistenceManager(e);return null===n?t.removeCurrentUser():t.setCurrentUser(n)}async getOrInitRedirectPersistenceManager(n){if(!this.redirectPersistenceManager){const e=n&&Aa(n)||this._popupRedirectResolver;Wt(e,this,"argument-error"),this.redirectPersistenceManager=await Ma.create(this,[Aa(e._redirectPersistence)],"redirectUser"),this.redirectUser=await this.redirectPersistenceManager.getCurrentUser()}return this.redirectPersistenceManager}async _redirectUserForId(n){var e,t;return this._isInitialized&&await this.queue((async()=>{})),(null===(e=this._currentUser)||void 0===e?void 0:e._redirectEventId)===n?this._currentUser:(null===(t=this.redirectUser)||void 0===t?void 0:t._redirectEventId)===n?this.redirectUser:null}async _persistUserIfCurrent(n){if(n===this.currentUser)return this.queue((async()=>this.directlySetCurrentUser(n)))}_notifyListenersIfCurrent(n){n===this.currentUser&&this.notifyAuthListeners()}_key(){return`${this.config.authDomain}:${this.config.apiKey}:${this.name}`}_startProactiveRefresh(){this.isProactiveRefreshEnabled=!0,this.currentUser&&this._currentUser._startProactiveRefresh()}_stopProactiveRefresh(){this.isProactiveRefreshEnabled=!1,this.currentUser&&this._currentUser._stopProactiveRefresh()}get _currentUser(){return this.currentUser}notifyAuthListeners(){var n,e;if(!this._isInitialized)return;this.idTokenSubscription.next(this.currentUser);const t=null!==(e=null===(n=this.currentUser)||void 0===n?void 0:n.uid)&&void 0!==e?e:null;this.lastNotifiedUid!==t&&(this.lastNotifiedUid=t,this.authStateSubscription.next(this.currentUser))}registerStateListener(n,e,t,a){if(this._deleted)return()=>{};const i="function"==typeof e?e:e.next.bind(e);let r=!1;const o=this._isInitialized?Promise.resolve():this._initializationPromise;if(Wt(o,this,"internal-error"),o.then((()=>{r||i(this.currentUser)})),"function"==typeof e){const i=n.addObserver(e,t,a);return()=>{r=!0,i()}}{const t=n.addObserver(e);return()=>{r=!0,t()}}}async directlySetCurrentUser(n){this.currentUser&&this.currentUser!==n&&this._currentUser._stopProactiveRefresh(),n&&this.isProactiveRefreshEnabled&&n._startProactiveRefresh(),this.currentUser=n,n?await this.assertedPersistence.setCurrentUser(n):await this.assertedPersistence.removeCurrentUser()}queue(n){return this.operations=this.operations.then(n,n),this.operations}get assertedPersistence(){return Wt(this.persistenceManager,this,"internal-error"),this.persistenceManager}_logFramework(n){n&&!this.frameworks.includes(n)&&(this.frameworks.push(n),this.frameworks.sort(),this.clientVersion=Ga(this.config.clientPlatform,this._getFrameworks()))}_getFrameworks(){return this.frameworks}async _getAdditionalHeaders(){var n;const e={"X-Client-Version":this.clientVersion};this.app.options.appId&&(e["X-Firebase-gmpid"]=this.app.options.appId);const t=await(null===(n=this.heartbeatServiceProvider.getImmediate({optional:!0}))||void 0===n?void 0:n.getHeartbeatsHeader());t&&(e["X-Firebase-Client"]=t);const a=await this._getAppCheckToken();return a&&(e["X-Firebase-AppCheck"]=a),e}async _getAppCheckToken(){var n;const e=await(null===(n=this.appCheckServiceProvider.getImmediate({optional:!0}))||void 0===n?void 0:n.getToken());return(null==e?void 0:e.error)&&function(n,...e){Ot.logLevel<=yn.WARN&&Ot.warn(`Auth (${ae}): ${n}`,...e)}(`Error while retrieving App Check token: ${e.error}`),null==e?void 0:e.token}}function Va(n){return dn(n)}class Wa{constructor(n){this.auth=n,this.observer=null,this.addObserver=function(n,e){const t=new an(n,void 0);return t.subscribe.bind(t)}((n=>this.observer=n))}get next(){return Wt(this.observer,this.auth,"internal-error"),this.observer.next.bind(this.observer)}}let Ka={async loadJS(){throw new Error("Unable to load external scripts")},recaptchaV2Script:"",recaptchaEnterpriseScript:"",gapiScript:""};function qa(n){return Ka.loadJS(n)}function Ja(n){return`__${n}${Math.floor(1e6*Math.random())}`}class $a{constructor(n){this.type="recaptcha-enterprise",this.auth=Va(n)}async verify(n="verify",e=!1){function t(e,t,a){const i=window.grecaptcha;ca(i)?i.enterprise.ready((()=>{i.enterprise.execute(e,{action:n}).then((n=>{t(n)})).catch((()=>{t("NO_RECAPTCHA")}))})):a(Error("No reCAPTCHA enterprise script loaded."))}return new Promise(((n,a)=>{(async function(n){if(!e){if(null==n.tenantId&&null!=n._agentRecaptchaConfig)return n._agentRecaptchaConfig.siteKey;if(null!=n.tenantId&&void 0!==n._tenantRecaptchaConfigs[n.tenantId])return n._tenantRecaptchaConfigs[n.tenantId].siteKey}return new Promise((async(e,t)=>{(async function(n,e){return ta(n,"GET","/v2/recaptchaConfig",ea(n,e))})(n,{clientType:"CLIENT_TYPE_WEB",version:"RECAPTCHA_ENTERPRISE"}).then((a=>{if(void 0!==a.recaptchaKey){const t=new ua(a);return null==n.tenantId?n._agentRecaptchaConfig=t:n._tenantRecaptchaConfigs[n.tenantId]=t,e(t.siteKey)}t(new Error("recaptcha Enterprise site key undefined"))})).catch((n=>{t(n)}))}))})(this.auth).then((i=>{if(!e&&ca(window.grecaptcha))t(i,n,a);else{if("undefined"==typeof window)return void a(new Error("RecaptchaVerifier is only supported in browser"));let e=Ka.recaptchaEnterpriseScript;0!==e.length&&(e+=i),qa(e).then((()=>{t(i,n,a)})).catch((n=>{a(n)}))}})).catch((n=>{a(n)}))}))}}async function Ya(n,e,t,a=!1){const i=new $a(n);let r;try{r=await i.verify(t)}catch(n){r=await i.verify(t,!0)}const o=Object.assign({},e);return a?Object.assign(o,{captchaResp:r}):Object.assign(o,{captchaResponse:r}),Object.assign(o,{clientType:"CLIENT_TYPE_WEB"}),Object.assign(o,{recaptchaVersion:"RECAPTCHA_ENTERPRISE"}),o}async function Qa(n,e,t,a){var i;if(null===(i=n._getRecaptchaConfig())||void 0===i?void 0:i.isProviderEnabled("EMAIL_PASSWORD_PROVIDER")){const i=await Ya(n,e,t,"getOobCode"===t);return a(n,i)}return a(n,e).catch((async i=>{if("auth/missing-recaptcha-token"===i.code){console.log(`${t} is protected by reCAPTCHA Enterprise for this project. Automatically triggering the reCAPTCHA flow and restarting the flow.`);const i=await Ya(n,e,t,"getOobCode"===t);return a(n,i)}return Promise.reject(i)}))}function Xa(n){const e=n.indexOf(":");return e<0?"":n.substr(0,e+1)}function Za(n){if(!n)return null;const e=Number(n);return isNaN(e)?null:e}class ni{constructor(n,e){this.providerId=n,this.signInMethod=e}toJSON(){return Kt("not implemented")}_getIdTokenResponse(n){return Kt("not implemented")}_linkToIdToken(n,e){return Kt("not implemented")}_getReauthenticationResolver(n){return Kt("not implemented")}}async function ei(n,e){return ta(n,"POST","/v1/accounts:signUp",e)}async function ti(n,e){return ia(n,"POST","/v1/accounts:signInWithPassword",ea(n,e))}class ai extends ni{constructor(n,e,t,a=null){super("password",t),this._email=n,this._password=e,this._tenantId=a}static _fromEmailAndPassword(n,e){return new ai(n,e,"password")}static _fromEmailAndCode(n,e,t=null){return new ai(n,e,"emailLink",t)}toJSON(){return{email:this._email,password:this._password,signInMethod:this.signInMethod,tenantId:this._tenantId}}static fromJSON(n){const e="string"==typeof n?JSON.parse(n):n;if((null==e?void 0:e.email)&&(null==e?void 0:e.password)){if("password"===e.signInMethod)return this._fromEmailAndPassword(e.email,e.password);if("emailLink"===e.signInMethod)return this._fromEmailAndCode(e.email,e.password,e.tenantId)}return null}async _getIdTokenResponse(n){switch(this.signInMethod){case"password":return Qa(n,{returnSecureToken:!0,email:this._email,password:this._password,clientType:"CLIENT_TYPE_WEB"},"signInWithPassword",ti);case"emailLink":return async function(n,e){return ia(n,"POST","/v1/accounts:signInWithEmailLink",ea(n,e))}(n,{email:this._email,oobCode:this._password});default:Gt(n,"internal-error")}}async _linkToIdToken(n,e){switch(this.signInMethod){case"password":return Qa(n,{idToken:e,returnSecureToken:!0,email:this._email,password:this._password,clientType:"CLIENT_TYPE_WEB"},"signUpPassword",ei);case"emailLink":return async function(n,e){return ia(n,"POST","/v1/accounts:signInWithEmailLink",ea(n,e))}(n,{idToken:e,email:this._email,oobCode:this._password});default:Gt(n,"internal-error")}}_getReauthenticationResolver(n){return this._getIdTokenResponse(n)}}async function ii(n,e){return ia(n,"POST","/v1/accounts:signInWithIdp",ea(n,e))}class ri extends ni{constructor(){super(...arguments),this.pendingToken=null}static _fromParams(n){const e=new ri(n.providerId,n.signInMethod);return n.idToken||n.accessToken?(n.idToken&&(e.idToken=n.idToken),n.accessToken&&(e.accessToken=n.accessToken),n.nonce&&!n.pendingToken&&(e.nonce=n.nonce),n.pendingToken&&(e.pendingToken=n.pendingToken)):n.oauthToken&&n.oauthTokenSecret?(e.accessToken=n.oauthToken,e.secret=n.oauthTokenSecret):Gt("argument-error"),e}toJSON(){return{idToken:this.idToken,accessToken:this.accessToken,secret:this.secret,nonce:this.nonce,pendingToken:this.pendingToken,providerId:this.providerId,signInMethod:this.signInMethod}}static fromJSON(n){const e="string"==typeof n?JSON.parse(n):n,{providerId:t,signInMethod:a}=e,i=Nt(e,["providerId","signInMethod"]);if(!t||!a)return null;const r=new ri(t,a);return r.idToken=i.idToken||void 0,r.accessToken=i.accessToken||void 0,r.secret=i.secret,r.nonce=i.nonce,r.pendingToken=i.pendingToken||null,r}_getIdTokenResponse(n){return ii(n,this.buildRequest())}_linkToIdToken(n,e){const t=this.buildRequest();return t.idToken=e,ii(n,t)}_getReauthenticationResolver(n){const e=this.buildRequest();return e.autoCreate=!1,ii(n,e)}buildRequest(){const n={requestUri:"http://localhost",returnSecureToken:!0};if(this.pendingToken)n.pendingToken=this.pendingToken;else{const e={};this.idToken&&(e.id_token=this.idToken),this.accessToken&&(e.access_token=this.accessToken),this.secret&&(e.oauth_token_secret=this.secret),e.providerId=this.providerId,this.nonce&&!this.pendingToken&&(e.nonce=this.nonce),n.postBody=nn(e)}return n}}const oi={USER_NOT_FOUND:"user-not-found"};class si extends ni{constructor(n){super("phone","phone"),this.params=n}static _fromVerification(n,e){return new si({verificationId:n,verificationCode:e})}static _fromTokenResponse(n,e){return new si({phoneNumber:n,temporaryProof:e})}_getIdTokenResponse(n){return async function(n,e){return ia(n,"POST","/v1/accounts:signInWithPhoneNumber",ea(n,e))}(n,this._makeVerificationRequest())}_linkToIdToken(n,e){return async function(n,e){const t=await ia(n,"POST","/v1/accounts:signInWithPhoneNumber",ea(n,e));if(t.temporaryProof)throw la(n,"account-exists-with-different-credential",t);return t}(n,Object.assign({idToken:e},this._makeVerificationRequest()))}_getReauthenticationResolver(n){return async function(n,e){return ia(n,"POST","/v1/accounts:signInWithPhoneNumber",ea(n,Object.assign(Object.assign({},e),{operation:"REAUTH"})),oi)}(n,this._makeVerificationRequest())}_makeVerificationRequest(){const{temporaryProof:n,phoneNumber:e,verificationId:t,verificationCode:a}=this.params;return n&&e?{temporaryProof:n,phoneNumber:e}:{sessionInfo:t,code:a}}toJSON(){const n={providerId:this.providerId};return this.params.phoneNumber&&(n.phoneNumber=this.params.phoneNumber),this.params.temporaryProof&&(n.temporaryProof=this.params.temporaryProof),this.params.verificationCode&&(n.verificationCode=this.params.verificationCode),this.params.verificationId&&(n.verificationId=this.params.verificationId),n}static fromJSON(n){"string"==typeof n&&(n=JSON.parse(n));const{verificationId:e,verificationCode:t,phoneNumber:a,temporaryProof:i}=n;return t||e||a||i?new si({verificationId:e,verificationCode:t,phoneNumber:a,temporaryProof:i}):null}}class li{constructor(n){var e,t,a,i,r,o;const s=en(tn(n)),l=null!==(e=s.apiKey)&&void 0!==e?e:null,c=null!==(t=s.oobCode)&&void 0!==t?t:null,u=function(n){switch(n){case"recoverEmail":return"RECOVER_EMAIL";case"resetPassword":return"PASSWORD_RESET";case"signIn":return"EMAIL_SIGNIN";case"verifyEmail":return"VERIFY_EMAIL";case"verifyAndChangeEmail":return"VERIFY_AND_CHANGE_EMAIL";case"revertSecondFactorAddition":return"REVERT_SECOND_FACTOR_ADDITION";default:return null}}(null!==(a=s.mode)&&void 0!==a?a:null);Wt(l&&c&&u,"argument-error"),this.apiKey=l,this.operation=u,this.code=c,this.continueUrl=null!==(i=s.continueUrl)&&void 0!==i?i:null,this.languageCode=null!==(r=s.languageCode)&&void 0!==r?r:null,this.tenantId=null!==(o=s.tenantId)&&void 0!==o?o:null}static parseLink(n){const e=function(n){const e=en(tn(n)).link,t=e?en(tn(e)).deep_link_id:null,a=en(tn(n)).deep_link_id;return(a?en(tn(a)).link:null)||a||t||e||n}(n);try{return new li(e)}catch(n){return null}}}class ci{constructor(){this.providerId=ci.PROVIDER_ID}static credential(n,e){return ai._fromEmailAndPassword(n,e)}static credentialWithLink(n,e){const t=li.parseLink(e);return Wt(t,"argument-error"),ai._fromEmailAndCode(n,t.code,t.tenantId)}}ci.PROVIDER_ID="password",ci.EMAIL_PASSWORD_SIGN_IN_METHOD="password",ci.EMAIL_LINK_SIGN_IN_METHOD="emailLink";class ui{constructor(n){this.providerId=n,this.defaultLanguageCode=null,this.customParameters={}}setDefaultLanguage(n){this.defaultLanguageCode=n}setCustomParameters(n){return this.customParameters=n,this}getCustomParameters(){return this.customParameters}}class di extends ui{constructor(){super(...arguments),this.scopes=[]}addScope(n){return this.scopes.includes(n)||this.scopes.push(n),this}getScopes(){return[...this.scopes]}}class hi extends di{constructor(){super("facebook.com")}static credential(n){return ri._fromParams({providerId:hi.PROVIDER_ID,signInMethod:hi.FACEBOOK_SIGN_IN_METHOD,accessToken:n})}static credentialFromResult(n){return hi.credentialFromTaggedObject(n)}static credentialFromError(n){return hi.credentialFromTaggedObject(n.customData||{})}static credentialFromTaggedObject({_tokenResponse:n}){if(!n||!("oauthAccessToken"in n))return null;if(!n.oauthAccessToken)return null;try{return hi.credential(n.oauthAccessToken)}catch(n){return null}}}hi.FACEBOOK_SIGN_IN_METHOD="facebook.com",hi.PROVIDER_ID="facebook.com";class fi extends di{constructor(){super("google.com"),this.addScope("profile")}static credential(n,e){return ri._fromParams({providerId:fi.PROVIDER_ID,signInMethod:fi.GOOGLE_SIGN_IN_METHOD,idToken:n,accessToken:e})}static credentialFromResult(n){return fi.credentialFromTaggedObject(n)}static credentialFromError(n){return fi.credentialFromTaggedObject(n.customData||{})}static credentialFromTaggedObject({_tokenResponse:n}){if(!n)return null;const{oauthIdToken:e,oauthAccessToken:t}=n;if(!e&&!t)return null;try{return fi.credential(e,t)}catch(n){return null}}}fi.GOOGLE_SIGN_IN_METHOD="google.com",fi.PROVIDER_ID="google.com";class mi extends di{constructor(){super("github.com")}static credential(n){return ri._fromParams({providerId:mi.PROVIDER_ID,signInMethod:mi.GITHUB_SIGN_IN_METHOD,accessToken:n})}static credentialFromResult(n){return mi.credentialFromTaggedObject(n)}static credentialFromError(n){return mi.credentialFromTaggedObject(n.customData||{})}static credentialFromTaggedObject({_tokenResponse:n}){if(!n||!("oauthAccessToken"in n))return null;if(!n.oauthAccessToken)return null;try{return mi.credential(n.oauthAccessToken)}catch(n){return null}}}mi.GITHUB_SIGN_IN_METHOD="github.com",mi.PROVIDER_ID="github.com";class pi extends di{constructor(){super("twitter.com")}static credential(n,e){return ri._fromParams({providerId:pi.PROVIDER_ID,signInMethod:pi.TWITTER_SIGN_IN_METHOD,oauthToken:n,oauthTokenSecret:e})}static credentialFromResult(n){return pi.credentialFromTaggedObject(n)}static credentialFromError(n){return pi.credentialFromTaggedObject(n.customData||{})}static credentialFromTaggedObject({_tokenResponse:n}){if(!n)return null;const{oauthAccessToken:e,oauthTokenSecret:t}=n;if(!e||!t)return null;try{return pi.credential(e,t)}catch(n){return null}}}pi.TWITTER_SIGN_IN_METHOD="twitter.com",pi.PROVIDER_ID="twitter.com";class gi{constructor(n){this.user=n.user,this.providerId=n.providerId,this._tokenResponse=n._tokenResponse,this.operationType=n.operationType}static async _fromIdTokenResponse(n,e,t,a=!1){const i=await Ca._fromIdTokenResponse(n,t,a),r=yi(t);return new gi({user:i,providerId:r,_tokenResponse:t,operationType:e})}static async _forOperation(n,e,t){await n._updateTokensIfNecessary(t,!0);const a=yi(t);return new gi({user:n,providerId:a,_tokenResponse:t,operationType:e})}}function yi(n){return n.providerId?n.providerId:"phoneNumber"in n?"phone":null}class bi extends ${constructor(n,e,t,a){var i;super(e.code,e.message),this.operationType=t,this.user=a,Object.setPrototypeOf(this,bi.prototype),this.customData={appName:n.name,tenantId:null!==(i=n.tenantId)&&void 0!==i?i:void 0,_serverResponse:e.customData._serverResponse,operationType:t}}static _fromErrorAndOperation(n,e,t,a){return new bi(n,e,t,a)}}function vi(n,e,t,a){return("reauthenticate"===e?t._getReauthenticationResolver(n):t._getIdTokenResponse(n)).catch((t=>{if("auth/multi-factor-auth-required"===t.code)throw bi._fromErrorAndOperation(n,t,e,a);throw t}))}class xi{constructor(n,e,t={}){this.isNewUser=n,this.providerId=e,this.profile=t}}class ki extends xi{constructor(n,e,t,a){super(n,e,t),this.username=a}}class wi extends xi{constructor(n,e){super(n,"facebook.com",e)}}class Ci extends ki{constructor(n,e){super(n,"github.com",e,"string"==typeof(null==e?void 0:e.login)?null==e?void 0:e.login:null)}}class Si extends xi{constructor(n,e){super(n,"google.com",e)}}class Ai extends ki{constructor(n,e,t){super(n,"twitter.com",e,t)}}new WeakMap;const Ti="__sak";class Ii{constructor(n,e){this.storageRetriever=n,this.type=e}_isAvailable(){try{return this.storage?(this.storage.setItem(Ti,"1"),this.storage.removeItem(Ti),Promise.resolve(!0)):Promise.resolve(!1)}catch(n){return Promise.resolve(!1)}}_set(n,e){return this.storage.setItem(n,JSON.stringify(e)),Promise.resolve()}_get(n){const e=this.storage.getItem(n);return Promise.resolve(e?JSON.parse(e):null)}_remove(n){return this.storage.removeItem(n),Promise.resolve()}get storage(){return this.storageRetriever()}}class Ei extends Ii{constructor(){super((()=>window.localStorage),"LOCAL"),this.boundEventHandler=(n,e)=>this.onStorageEvent(n,e),this.listeners={},this.localCache={},this.pollTimer=null,this.fallbackToPolling=Fa(),this._shouldAllowMigration=!0}forAllChangedKeys(n){for(const e of Object.keys(this.listeners)){const t=this.storage.getItem(e),a=this.localCache[e];t!==a&&n(e,a,t)}}onStorageEvent(n,e=!1){if(!n.key)return void this.forAllChangedKeys(((n,e,t)=>{this.notifyListeners(n,t)}));const t=n.key;e?this.detachListener():this.stopPolling();const a=()=>{const n=this.storage.getItem(t);(e||this.localCache[t]!==n)&&this.notifyListeners(t,n)},i=this.storage.getItem(t);!function(){const n=W();return n.indexOf("MSIE ")>=0||n.indexOf("Trident/")>=0}()||10!==document.documentMode||i===n.newValue||n.newValue===n.oldValue?a():setTimeout(a,10)}notifyListeners(n,e){this.localCache[n]=e;const t=this.listeners[n];if(t)for(const n of Array.from(t))n(e?JSON.parse(e):e)}startPolling(){this.stopPolling(),this.pollTimer=setInterval((()=>{this.forAllChangedKeys(((n,e,t)=>{this.onStorageEvent(new StorageEvent("storage",{key:n,oldValue:e,newValue:t}),!0)}))}),1e3)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}attachListener(){window.addEventListener("storage",this.boundEventHandler)}detachListener(){window.removeEventListener("storage",this.boundEventHandler)}_addListener(n,e){0===Object.keys(this.listeners).length&&(this.fallbackToPolling?this.startPolling():this.attachListener()),this.listeners[n]||(this.listeners[n]=new Set,this.localCache[n]=this.storage.getItem(n)),this.listeners[n].add(e)}_removeListener(n,e){this.listeners[n]&&(this.listeners[n].delete(e),0===this.listeners[n].size&&delete this.listeners[n]),0===Object.keys(this.listeners).length&&(this.detachListener(),this.stopPolling())}async _set(n,e){await super._set(n,e),this.localCache[n]=JSON.stringify(e)}async _get(n){const e=await super._get(n);return this.localCache[n]=JSON.stringify(e),e}async _remove(n){await super._remove(n),delete this.localCache[n]}}Ei.type="LOCAL";const Mi=Ei;class Pi extends Ii{constructor(){super((()=>window.sessionStorage),"SESSION")}_addListener(n,e){}_removeListener(n,e){}}Pi.type="SESSION";const _i=Pi;class Ri{constructor(n){this.eventTarget=n,this.handlersMap={},this.boundEventHandler=this.handleEvent.bind(this)}static _getInstance(n){const e=this.receivers.find((e=>e.isListeningto(n)));if(e)return e;const t=new Ri(n);return this.receivers.push(t),t}isListeningto(n){return this.eventTarget===n}async handleEvent(n){const e=n,{eventId:t,eventType:a,data:i}=e.data,r=this.handlersMap[a];if(!(null==r?void 0:r.size))return;e.ports[0].postMessage({status:"ack",eventId:t,eventType:a});const o=Array.from(r).map((async n=>n(e.origin,i))),s=await function(n){return Promise.all(n.map((async n=>{try{return{fulfilled:!0,value:await n}}catch(n){return{fulfilled:!1,reason:n}}})))}(o);e.ports[0].postMessage({status:"done",eventId:t,eventType:a,response:s})}_subscribe(n,e){0===Object.keys(this.handlersMap).length&&this.eventTarget.addEventListener("message",this.boundEventHandler),this.handlersMap[n]||(this.handlersMap[n]=new Set),this.handlersMap[n].add(e)}_unsubscribe(n,e){this.handlersMap[n]&&e&&this.handlersMap[n].delete(e),e&&0!==this.handlersMap[n].size||delete this.handlersMap[n],0===Object.keys(this.handlersMap).length&&this.eventTarget.removeEventListener("message",this.boundEventHandler)}}function Di(n="",e=10){let t="";for(let n=0;n{const l=Di("",20);a.port1.start();const c=setTimeout((()=>{s(new Error("unsupported_event"))}),t);r={messageChannel:a,onMessage(n){const e=n;if(e.data.eventId===l)switch(e.data.status){case"ack":clearTimeout(c),i=setTimeout((()=>{s(new Error("timeout"))}),3e3);break;case"done":clearTimeout(i),o(e.data.response);break;default:clearTimeout(c),clearTimeout(i),s(new Error("invalid_response"))}}},this.handlers.add(r),a.port1.addEventListener("message",r.onMessage),this.target.postMessage({eventType:n,eventId:l,data:e},[a.port2])})).finally((()=>{r&&this.removeMessageHandler(r)}))}}function Ni(){return window}function Bi(){return void 0!==Ni().WorkerGlobalScope&&"function"==typeof Ni().importScripts}const zi="firebaseLocalStorageDb",Oi="firebaseLocalStorage",Fi="fbase_key";class Gi{constructor(n){this.request=n}toPromise(){return new Promise(((n,e)=>{this.request.addEventListener("success",(()=>{n(this.request.result)})),this.request.addEventListener("error",(()=>{e(this.request.error)}))}))}}function ji(n,e){return n.transaction([Oi],e?"readwrite":"readonly").objectStore(Oi)}function Ui(){const n=indexedDB.open(zi,1);return new Promise(((e,t)=>{n.addEventListener("error",(()=>{t(n.error)})),n.addEventListener("upgradeneeded",(()=>{const e=n.result;try{e.createObjectStore(Oi,{keyPath:Fi})}catch(n){t(n)}})),n.addEventListener("success",(async()=>{const t=n.result;t.objectStoreNames.contains(Oi)?e(t):(t.close(),await function(){const n=indexedDB.deleteDatabase(zi);return new Gi(n).toPromise()}(),e(await Ui()))}))}))}async function Hi(n,e,t){const a=ji(n,!0).put({[Fi]:e,value:t});return new Gi(a).toPromise()}function Vi(n,e){const t=ji(n,!0).delete(e);return new Gi(t).toPromise()}class Wi{constructor(){this.type="LOCAL",this._shouldAllowMigration=!0,this.listeners={},this.localCache={},this.pollTimer=null,this.pendingWrites=0,this.receiver=null,this.sender=null,this.serviceWorkerReceiverAvailable=!1,this.activeServiceWorker=null,this._workerInitializationPromise=this.initializeServiceWorkerMessaging().then((()=>{}),(()=>{}))}async _openDb(){return this.db||(this.db=await Ui()),this.db}async _withRetries(n){let e=0;for(;;)try{const e=await this._openDb();return await n(e)}catch(n){if(e++>3)throw n;this.db&&(this.db.close(),this.db=void 0)}}async initializeServiceWorkerMessaging(){return Bi()?this.initializeReceiver():this.initializeSender()}async initializeReceiver(){this.receiver=Ri._getInstance(Bi()?self:null),this.receiver._subscribe("keyChanged",(async(n,e)=>({keyProcessed:(await this._poll()).includes(e.key)}))),this.receiver._subscribe("ping",(async(n,e)=>["keyChanged"]))}async initializeSender(){var n,e;if(this.activeServiceWorker=await async function(){if(!(null===navigator||void 0===navigator?void 0:navigator.serviceWorker))return null;try{return(await navigator.serviceWorker.ready).active}catch(n){return null}}(),!this.activeServiceWorker)return;this.sender=new Li(this.activeServiceWorker);const t=await this.sender._send("ping",{},800);t&&(null===(n=t[0])||void 0===n?void 0:n.fulfilled)&&(null===(e=t[0])||void 0===e?void 0:e.value.includes("keyChanged"))&&(this.serviceWorkerReceiverAvailable=!0)}async notifyServiceWorker(n){var e;if(this.sender&&this.activeServiceWorker&&((null===(e=null===navigator||void 0===navigator?void 0:navigator.serviceWorker)||void 0===e?void 0:e.controller)||null)===this.activeServiceWorker)try{await this.sender._send("keyChanged",{key:n},this.serviceWorkerReceiverAvailable?800:50)}catch(e){}}async _isAvailable(){try{if(!indexedDB)return!1;const n=await Ui();return await Hi(n,Ti,"1"),await Vi(n,Ti),!0}catch(n){}return!1}async _withPendingWrite(n){this.pendingWrites++;try{await n()}finally{this.pendingWrites--}}async _set(n,e){return this._withPendingWrite((async()=>(await this._withRetries((t=>Hi(t,n,e))),this.localCache[n]=e,this.notifyServiceWorker(n))))}async _get(n){const e=await this._withRetries((e=>async function(n,e){const t=ji(n,!1).get(e),a=await new Gi(t).toPromise();return void 0===a?null:a.value}(e,n)));return this.localCache[n]=e,e}async _remove(n){return this._withPendingWrite((async()=>(await this._withRetries((e=>Vi(e,n))),delete this.localCache[n],this.notifyServiceWorker(n))))}async _poll(){const n=await this._withRetries((n=>{const e=ji(n,!1).getAll();return new Gi(e).toPromise()}));if(!n)return[];if(0!==this.pendingWrites)return[];const e=[],t=new Set;if(0!==n.length)for(const{fbase_key:a,value:i}of n)t.add(a),JSON.stringify(this.localCache[a])!==JSON.stringify(i)&&(this.notifyListeners(a,i),e.push(a));for(const n of Object.keys(this.localCache))this.localCache[n]&&!t.has(n)&&(this.notifyListeners(n,null),e.push(n));return e}notifyListeners(n,e){this.localCache[n]=e;const t=this.listeners[n];if(t)for(const n of Array.from(t))n(e)}startPolling(){this.stopPolling(),this.pollTimer=setInterval((async()=>this._poll()),800)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}_addListener(n,e){0===Object.keys(this.listeners).length&&this.startPolling(),this.listeners[n]||(this.listeners[n]=new Set,this._get(n)),this.listeners[n].add(e)}_removeListener(n,e){this.listeners[n]&&(this.listeners[n].delete(e),0===this.listeners[n].size&&delete this.listeners[n]),0===Object.keys(this.listeners).length&&this.stopPolling()}}Wi.type="LOCAL";const Ki=Wi;Ja("rcb"),new Yt(3e4,6e4);class qi{constructor(n){this.providerId=qi.PROVIDER_ID,this.auth=Va(n)}verifyPhoneNumber(n,e){return async function(n,e,t){var a;const i=await t.verify();try{let r;if(Wt("string"==typeof i,n,"argument-error"),Wt("recaptcha"===t.type,n,"argument-error"),r="string"==typeof e?{phoneNumber:e}:e,"session"in r){const e=r.session;if("phoneNumber"in r){Wt("enroll"===e.type,n,"internal-error");const t=await function(n,e){return ta(n,"POST","/v2/accounts/mfaEnrollment:start",ea(n,e))}(n,{idToken:e.credential,phoneEnrollmentInfo:{phoneNumber:r.phoneNumber,recaptchaToken:i}});return t.phoneSessionInfo.sessionInfo}{Wt("signin"===e.type,n,"internal-error");const t=(null===(a=r.multiFactorHint)||void 0===a?void 0:a.uid)||r.multiFactorUid;Wt(t,n,"missing-multi-factor-info");const o=await function(n,e){return ta(n,"POST","/v2/accounts/mfaSignIn:start",ea(n,e))}(n,{mfaPendingCredential:e.credential,mfaEnrollmentId:t,phoneSignInInfo:{recaptchaToken:i}});return o.phoneResponseInfo.sessionInfo}}{const{sessionInfo:e}=await async function(n,e){return ta(n,"POST","/v1/accounts:sendVerificationCode",ea(n,e))}(n,{phoneNumber:r.phoneNumber,recaptchaToken:i});return e}}finally{t._reset()}}(this.auth,n,dn(e))}static credential(n,e){return si._fromVerification(n,e)}static credentialFromResult(n){const e=n;return qi.credentialFromTaggedObject(e)}static credentialFromError(n){return qi.credentialFromTaggedObject(n.customData||{})}static credentialFromTaggedObject({_tokenResponse:n}){if(!n)return null;const{phoneNumber:e,temporaryProof:t}=n;return e&&t?si._fromTokenResponse(e,t):null}}function Ji(n,e){return e?Aa(e):(Wt(n._popupRedirectResolver,n,"argument-error"),n._popupRedirectResolver)}qi.PROVIDER_ID="phone",qi.PHONE_SIGN_IN_METHOD="phone";class $i extends ni{constructor(n){super("custom","custom"),this.params=n}_getIdTokenResponse(n){return ii(n,this._buildIdpRequest())}_linkToIdToken(n,e){return ii(n,this._buildIdpRequest(e))}_getReauthenticationResolver(n){return ii(n,this._buildIdpRequest())}_buildIdpRequest(n){const e={requestUri:this.params.requestUri,sessionId:this.params.sessionId,postBody:this.params.postBody,tenantId:this.params.tenantId,pendingToken:this.params.pendingToken,returnSecureToken:!0,returnIdpCredential:!0};return n&&(e.idToken=n),e}}function Yi(n){return async function(n,e,t=!1){if(ne(n.app))return Promise.reject(Ht(n));const a="signIn",i=await vi(n,a,e),r=await gi._fromIdTokenResponse(n,a,i);return t||await n._updateCurrentUser(r.user),r}(n.auth,new $i(n),n.bypassAuthState)}function Qi(n){const{auth:e,user:t}=n;return Wt(t,e,"internal-error"),async function(n,e,t=!1){const{auth:a}=n;if(ne(a.app))return Promise.reject(Ht(a));const i="reauthenticate";try{const r=await ga(n,vi(a,i,e,n),t);Wt(r.idToken,a,"internal-error");const o=ma(r.idToken);Wt(o,a,"internal-error");const{sub:s}=o;return Wt(n.uid===s,a,"user-mismatch"),gi._forOperation(n,i,r)}catch(n){throw"auth/user-not-found"===(null==n?void 0:n.code)&&Gt(a,"user-mismatch"),n}}(t,new $i(n),n.bypassAuthState)}async function Xi(n){const{auth:e,user:t}=n;return Wt(t,e,"internal-error"),async function(n,e,t=!1){const a=await ga(n,e._linkToIdToken(n.auth,await n.getIdToken()),t);return gi._forOperation(n,"link",a)}(t,new $i(n),n.bypassAuthState)}class Zi{constructor(n,e,t,a,i=!1){this.auth=n,this.resolver=t,this.user=a,this.bypassAuthState=i,this.pendingPromise=null,this.eventManager=null,this.filter=Array.isArray(e)?e:[e]}execute(){return new Promise((async(n,e)=>{this.pendingPromise={resolve:n,reject:e};try{this.eventManager=await this.resolver._initialize(this.auth),await this.onExecution(),this.eventManager.registerConsumer(this)}catch(n){this.reject(n)}}))}async onAuthEvent(n){const{urlResponse:e,sessionId:t,postBody:a,tenantId:i,error:r,type:o}=n;if(r)return void this.reject(r);const s={auth:this.auth,requestUri:e,sessionId:t,tenantId:i||void 0,postBody:a||void 0,user:this.user,bypassAuthState:this.bypassAuthState};try{this.resolve(await this.getIdpTask(o)(s))}catch(n){this.reject(n)}}onError(n){this.reject(n)}getIdpTask(n){switch(n){case"signInViaPopup":case"signInViaRedirect":return Yi;case"linkViaPopup":case"linkViaRedirect":return Xi;case"reauthViaPopup":case"reauthViaRedirect":return Qi;default:Gt(this.auth,"internal-error")}}resolve(n){qt(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.resolve(n),this.unregisterAndCleanUp()}reject(n){qt(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.reject(n),this.unregisterAndCleanUp()}unregisterAndCleanUp(){this.eventManager&&this.eventManager.unregisterConsumer(this),this.pendingPromise=null,this.cleanUp()}}const nr=new Yt(2e3,1e4);class er extends Zi{constructor(n,e,t,a,i){super(n,e,a,i),this.provider=t,this.authWindow=null,this.pollId=null,er.currentPopupAction&&er.currentPopupAction.cancel(),er.currentPopupAction=this}async executeNotNull(){const n=await this.execute();return Wt(n,this.auth,"internal-error"),n}async onExecution(){qt(1===this.filter.length,"Popup operations only handle one event");const n=Di();this.authWindow=await this.resolver._openPopup(this.auth,this.provider,this.filter[0],n),this.authWindow.associatedEvent=n,this.resolver._originValidation(this.auth).catch((n=>{this.reject(n)})),this.resolver._isIframeWebStorageSupported(this.auth,(n=>{n||this.reject(jt(this.auth,"web-storage-unsupported"))})),this.pollUserCancellation()}get eventId(){var n;return(null===(n=this.authWindow)||void 0===n?void 0:n.associatedEvent)||null}cancel(){this.reject(jt(this.auth,"cancelled-popup-request"))}cleanUp(){this.authWindow&&this.authWindow.close(),this.pollId&&window.clearTimeout(this.pollId),this.authWindow=null,this.pollId=null,er.currentPopupAction=null}pollUserCancellation(){const n=()=>{var e,t;(null===(t=null===(e=this.authWindow)||void 0===e?void 0:e.window)||void 0===t?void 0:t.closed)?this.pollId=window.setTimeout((()=>{this.pollId=null,this.reject(jt(this.auth,"popup-closed-by-user"))}),8e3):this.pollId=window.setTimeout(n,nr.get())};n()}}er.currentPopupAction=null;const tr="pendingRedirect",ar=new Map;class ir extends Zi{constructor(n,e,t=!1){super(n,["signInViaRedirect","linkViaRedirect","reauthViaRedirect","unknown"],e,void 0,t),this.eventId=null}async execute(){let n=ar.get(this.auth._key());if(!n){try{const e=await async function(n,e){const t=function(n){return Ea(tr,n.config.apiKey,n.name)}(e),a=function(n){return Aa(n._redirectPersistence)}(n);if(!await a._isAvailable())return!1;const i="true"===await a._get(t);return await a._remove(t),i}(this.resolver,this.auth),t=e?await super.execute():null;n=()=>Promise.resolve(t)}catch(e){n=()=>Promise.reject(e)}ar.set(this.auth._key(),n)}return this.bypassAuthState||ar.set(this.auth._key(),(()=>Promise.resolve(null))),n()}async onAuthEvent(n){if("signInViaRedirect"===n.type)return super.onAuthEvent(n);if("unknown"!==n.type){if(n.eventId){const e=await this.auth._redirectUserForId(n.eventId);if(e)return this.user=e,super.onAuthEvent(n);this.resolve(null)}}else this.resolve(null)}async onExecution(){}cleanUp(){}}function rr(n,e){ar.set(n._key(),e)}async function or(n,e,t=!1){if(ne(n.app))return Promise.reject(Ht(n));const a=Va(n),i=Ji(a,e),r=new ir(a,i,t),o=await r.execute();return o&&!t&&(delete o.user._redirectEventId,await a._persistUserIfCurrent(o.user),await a._setRedirectUser(null,e)),o}class sr{constructor(n){this.auth=n,this.cachedEventUids=new Set,this.consumers=new Set,this.queuedRedirectEvent=null,this.hasHandledPotentialRedirect=!1,this.lastProcessedEventTime=Date.now()}registerConsumer(n){this.consumers.add(n),this.queuedRedirectEvent&&this.isEventForConsumer(this.queuedRedirectEvent,n)&&(this.sendToConsumer(this.queuedRedirectEvent,n),this.saveEventToCache(this.queuedRedirectEvent),this.queuedRedirectEvent=null)}unregisterConsumer(n){this.consumers.delete(n)}onEvent(n){if(this.hasEventBeenHandled(n))return!1;let e=!1;return this.consumers.forEach((t=>{this.isEventForConsumer(n,t)&&(e=!0,this.sendToConsumer(n,t),this.saveEventToCache(n))})),this.hasHandledPotentialRedirect||!function(n){switch(n.type){case"signInViaRedirect":case"linkViaRedirect":case"reauthViaRedirect":return!0;case"unknown":return cr(n);default:return!1}}(n)||(this.hasHandledPotentialRedirect=!0,e||(this.queuedRedirectEvent=n,e=!0)),e}sendToConsumer(n,e){var t;if(n.error&&!cr(n)){const a=(null===(t=n.error.code)||void 0===t?void 0:t.split("auth/")[1])||"internal-error";e.onError(jt(this.auth,a))}else e.onAuthEvent(n)}isEventForConsumer(n,e){const t=null===e.eventId||!!n.eventId&&n.eventId===e.eventId;return e.filter.includes(n.type)&&t}hasEventBeenHandled(n){return Date.now()-this.lastProcessedEventTime>=6e5&&this.cachedEventUids.clear(),this.cachedEventUids.has(lr(n))}saveEventToCache(n){this.cachedEventUids.add(lr(n)),this.lastProcessedEventTime=Date.now()}}function lr(n){return[n.type,n.eventId,n.sessionId,n.tenantId].filter((n=>n)).join("-")}function cr({type:n,error:e}){return"unknown"===n&&"auth/no-auth-event"===(null==e?void 0:e.code)}const ur=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,dr=/^https?/;function hr(n){const e=Jt(),{protocol:t,hostname:a}=new URL(e);if(n.startsWith("chrome-extension://")){const i=new URL(n);return""===i.hostname&&""===a?"chrome-extension:"===t&&n.replace("chrome-extension://","")===e.replace("chrome-extension://",""):"chrome-extension:"===t&&i.hostname===a}if(!dr.test(t))return!1;if(ur.test(n))return a===n;const i=n.replace(/\./g,"\\.");return new RegExp("^(.+\\."+i+"|"+i+")$","i").test(a)}const fr=new Yt(3e4,6e4);function mr(){const n=Ni().___jsl;if(null==n?void 0:n.H)for(const e of Object.keys(n.H))if(n.H[e].r=n.H[e].r||[],n.H[e].L=n.H[e].L||[],n.H[e].r=[...n.H[e].L],n.CP)for(let e=0;e{var a,i,r;function o(){mr(),gapi.load("gapi.iframes",{callback:()=>{e(gapi.iframes.getContext())},ontimeout:()=>{mr(),t(jt(n,"network-request-failed"))},timeout:fr.get()})}if(null===(i=null===(a=Ni().gapi)||void 0===a?void 0:a.iframes)||void 0===i?void 0:i.Iframe)e(gapi.iframes.getContext());else{if(!(null===(r=Ni().gapi)||void 0===r?void 0:r.load)){const e=Ja("iframefcb");return Ni()[e]=()=>{gapi.load?o():t(jt(n,"network-request-failed"))},qa(`${Ka.gapiScript}?onload=${e}`).catch((n=>t(n)))}o()}})).catch((n=>{throw gr=null,n}))}let gr=null;const yr=new Yt(5e3,15e3),br="__/auth/iframe",vr="emulator/auth/iframe",xr={style:{position:"absolute",top:"-100px",width:"1px",height:"1px"},"aria-hidden":"true",tabindex:"-1"},kr=new Map([["identitytoolkit.googleapis.com","p"],["staging-identitytoolkit.sandbox.googleapis.com","s"],["test-identitytoolkit.sandbox.googleapis.com","t"]]);function wr(n){const e=n.config;Wt(e.authDomain,n,"auth-domain-config-required");const t=e.emulator?Qt(e,vr):`https://${n.config.authDomain}/${br}`,a={apiKey:e.apiKey,appName:n.name,v:ae},i=kr.get(n.config.apiHost);i&&(a.eid=i);const r=n._getFrameworks();return r.length&&(a.fw=r.join(",")),`${t}?${nn(a).slice(1)}`}const Cr={location:"yes",resizable:"yes",statusbar:"yes",toolbar:"no"};class Sr{constructor(n){this.window=n,this.associatedEvent=null}close(){if(this.window)try{this.window.close()}catch(n){}}}const Ar=encodeURIComponent("fac");async function Tr(n,e,t,a,i,r){Wt(n.config.authDomain,n,"auth-domain-config-required"),Wt(n.config.apiKey,n,"invalid-api-key");const o={apiKey:n.config.apiKey,appName:n.name,authType:t,redirectUrl:a,v:ae,eventId:i};if(e instanceof ui){e.setDefaultLanguage(n.languageCode),o.providerId=e.providerId||"",function(n){for(const e in n)if(Object.prototype.hasOwnProperty.call(n,e))return!1;return!0}(e.getCustomParameters())||(o.customParameters=JSON.stringify(e.getCustomParameters()));for(const[n,e]of Object.entries(r||{}))o[n]=e}if(e instanceof di){const n=e.getScopes().filter((n=>""!==n));n.length>0&&(o.scopes=n.join(","))}n.tenantId&&(o.tid=n.tenantId);const s=o;for(const n of Object.keys(s))void 0===s[n]&&delete s[n];const l=await n._getAppCheckToken(),c=l?`#${Ar}=${encodeURIComponent(l)}`:"";return`${function({config:n}){return n.emulator?Qt(n,"emulator/auth/handler"):`https://${n.authDomain}/__/auth/handler`}(n)}?${nn(s).slice(1)}${c}`}const Ir="webStorageSupport",Er=class{constructor(){this.eventManagers={},this.iframes={},this.originValidationPromises={},this._redirectPersistence=_i,this._completeRedirectFn=or,this._overrideRedirectResult=rr}async _openPopup(n,e,t,a){var i;return qt(null===(i=this.eventManagers[n._key()])||void 0===i?void 0:i.manager,"_initialize() not called before _openPopup()"),function(n,e,t,a=500,i=600){const r=Math.max((window.screen.availHeight-i)/2,0).toString(),o=Math.max((window.screen.availWidth-a)/2,0).toString();let s="";const l=Object.assign(Object.assign({},Cr),{width:a.toString(),height:i.toString(),top:r,left:o}),c=W().toLowerCase();t&&(s=Da(c)?"_blank":t),_a(c)&&(e=e||"http://localhost",l.scrollbars="yes");const u=Object.entries(l).reduce(((n,[e,t])=>`${n}${e}=${t},`),"");if(function(n=W()){var e;return Oa(n)&&!!(null===(e=window.navigator)||void 0===e?void 0:e.standalone)}(c)&&"_self"!==s)return function(n,e){const t=document.createElement("a");t.href=n,t.target=e;const a=document.createEvent("MouseEvent");a.initMouseEvent("click",!0,!0,window,1,0,0,0,0,!1,!1,!1,!1,1,null),t.dispatchEvent(a)}(e||"",s),new Sr(null);const d=window.open(e||"",s,u);Wt(d,n,"popup-blocked");try{d.focus()}catch(n){}return new Sr(d)}(n,await Tr(n,e,t,Jt(),a),Di())}async _openRedirect(n,e,t,a){return await this._originValidation(n),i=await Tr(n,e,t,Jt(),a),Ni().location.href=i,new Promise((()=>{}));var i}_initialize(n){const e=n._key();if(this.eventManagers[e]){const{manager:n,promise:t}=this.eventManagers[e];return n?Promise.resolve(n):(qt(t,"If manager is not set, promise should be"),t)}const t=this.initAndGetManager(n);return this.eventManagers[e]={promise:t},t.catch((()=>{delete this.eventManagers[e]})),t}async initAndGetManager(n){const e=await async function(n){const e=await function(n){return gr=gr||pr(n),gr}(n),t=Ni().gapi;return Wt(t,n,"internal-error"),e.open({where:document.body,url:wr(n),messageHandlersFilter:t.iframes.CROSS_ORIGIN_IFRAMES_FILTER,attributes:xr,dontclear:!0},(e=>new Promise((async(t,a)=>{await e.restyle({setHideOnLeave:!1});const i=jt(n,"network-request-failed"),r=Ni().setTimeout((()=>{a(i)}),yr.get());function o(){Ni().clearTimeout(r),t(e)}e.ping(o).then(o,(()=>{a(i)}))}))))}(n),t=new sr(n);return e.register("authEvent",(e=>(Wt(null==e?void 0:e.authEvent,n,"invalid-auth-event"),{status:t.onEvent(e.authEvent)?"ACK":"ERROR"})),gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER),this.eventManagers[n._key()]={manager:t},this.iframes[n._key()]=e,t}_isIframeWebStorageSupported(n,e){this.iframes[n._key()].send(Ir,{type:Ir},(t=>{var a;const i=null===(a=null==t?void 0:t[0])||void 0===a?void 0:a[Ir];void 0!==i&&e(!!i),Gt(n,"internal-error")}),gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER)}_originValidation(n){const e=n._key();return this.originValidationPromises[e]||(this.originValidationPromises[e]=async function(n){if(n.config.emulator)return;const{authorizedDomains:e}=await async function(n,e={}){return ta(n,"GET","/v1/projects",e)}(n);for(const n of e)try{if(hr(n))return}catch(n){}Gt(n,"unauthorized-domain")}(n)),this.originValidationPromises[e]}get _shouldInitProactively(){return Fa()||Ra()||Oa()}};var Mr="@firebase/auth",Pr="1.7.9";class _r{constructor(n){this.auth=n,this.internalListeners=new Map}getUid(){var n;return this.assertAuthConfigured(),(null===(n=this.auth.currentUser)||void 0===n?void 0:n.uid)||null}async getToken(n){return this.assertAuthConfigured(),await this.auth._initializationPromise,this.auth.currentUser?{accessToken:await this.auth.currentUser.getIdToken(n)}:null}addAuthTokenListener(n){if(this.assertAuthConfigured(),this.internalListeners.has(n))return;const e=this.auth.onIdTokenChanged((e=>{n((null==e?void 0:e.stsTokenManager.accessToken)||null)}));this.internalListeners.set(n,e),this.updateProactiveRefresh()}removeAuthTokenListener(n){this.assertAuthConfigured();const e=this.internalListeners.get(n);e&&(this.internalListeners.delete(n),e(),this.updateProactiveRefresh())}assertAuthConfigured(){Wt(this.auth._initializationPromise,"dependent-sdk-initialized-before-auth")}updateProactiveRefresh(){this.internalListeners.size>0?this.auth._startProactiveRefresh():this.auth._stopProactiveRefresh()}}const Rr=H("authIdTokenMaxAge")||300;let Dr=null;function Lr(n=re()){const e=Zn(n,"auth");if(e.isInitialized())return e.getImmediate();const t=function(n,e){const t=Zn(n,"auth");if(t.isInitialized()){const n=t.getImmediate();if(X(t.getOptions(),null!=e?e:{}))return n;Gt(n,"already-initialized")}return t.initialize({options:e})}(n,{popupRedirectResolver:Er,persistence:[Ki,Mi,_i]}),a=H("authTokenSyncURL");if(a&&"boolean"==typeof isSecureContext&&isSecureContext){const n=new URL(a,location.origin);if(location.origin===n.origin){const e=(i=n.toString(),async n=>{const e=n&&await n.getIdTokenResult(),t=e&&((new Date).getTime()-Date.parse(e.issuedAtTime))/1e3;if(t&&t>Rr)return;const a=null==e?void 0:e.token;Dr!==a&&(Dr=a,await fetch(i,{method:a?"POST":"DELETE",headers:a?{Authorization:`Bearer ${a}`}:{}}))});!function(n,e,t){dn(n).beforeAuthStateChanged(e,t)}(t,e,(()=>e(t.currentUser))),function(n,t,a,i){dn(n).onIdTokenChanged((n=>e(n)),void 0,void 0)}(t)}}var i;const r=j("auth");return r&&function(n,e,t){const a=Va(n);Wt(a._canInitEmulator,a,"emulator-config-failed"),Wt(/^https?:\/\//.test(e),a,"invalid-emulator-scheme");const i=!!(null==t?void 0:t.disableWarnings),r=Xa(e),{host:o,port:s}=function(n){const e=Xa(n),t=/(\/\/)?([^?#/]+)/.exec(n.substr(e.length));if(!t)return{host:"",port:null};const a=t[2].split("@").pop()||"",i=/^(\[[^\]]+\])(:|$)/.exec(a);if(i){const n=i[1];return{host:n,port:Za(a.substr(n.length+1))}}{const[n,e]=a.split(":");return{host:n,port:Za(e)}}}(e),l=null===s?"":`:${s}`;a.config.emulator={url:`${r}//${o}${l}/`},a.settings.appVerificationDisabledForTesting=!0,a.emulatorConfig=Object.freeze({host:o,port:s,protocol:r.replace(":",""),options:Object.freeze({disableWarnings:i})}),i||function(){function n(){const n=document.createElement("p"),e=n.style;n.innerText="Running in emulator mode. Do not use with production credentials.",e.position="fixed",e.width="100%",e.backgroundColor="#ffffff",e.border=".1em solid #000000",e.color="#b50000",e.bottom="0px",e.left="0px",e.margin="0px",e.zIndex="10000",e.textAlign="center",n.classList.add("firebase-emulator-warning"),document.body.appendChild(n)}"undefined"!=typeof console&&"function"==typeof console.info&&console.info("WARNING: You are using the Auth Emulator, which is intended for local testing only. Do not use with production credentials."),"undefined"!=typeof window&&"undefined"!=typeof document&&("loading"===document.readyState?window.addEventListener("DOMContentLoaded",n):n())}()}(t,`http://${r}`),t}var Nr;Ka={loadJS:n=>new Promise(((e,t)=>{const a=document.createElement("script");var i,r;a.setAttribute("src",n),a.onload=e,a.onerror=n=>{const e=jt("internal-error");e.customData=n,t(e)},a.type="text/javascript",a.charset="UTF-8",(null!==(r=null===(i=document.getElementsByTagName("head"))||void 0===i?void 0:i[0])&&void 0!==r?r:document).appendChild(a)})),gapiScript:"https://apis.google.com/js/api.js",recaptchaV2Script:"https://www.google.com/recaptcha/api.js",recaptchaEnterpriseScript:"https://www.google.com/recaptcha/enterprise.js?render="},Nr="Browser",Xn(new hn("auth",((n,{options:e})=>{const t=n.getProvider("app").getImmediate(),a=n.getProvider("heartbeat"),i=n.getProvider("app-check-internal"),{apiKey:r,authDomain:o}=t.options;Wt(r&&!r.includes(":"),"invalid-api-key",{appName:t.name});const s={apiKey:r,authDomain:o,clientPlatform:Nr,apiHost:"identitytoolkit.googleapis.com",tokenApiHost:"securetoken.googleapis.com",apiScheme:"https",sdkClientVersion:Ga(Nr)},l=new Ha(t,a,i,s);return function(n,e){const t=(null==e?void 0:e.persistence)||[],a=(Array.isArray(t)?t:[t]).map(Aa);(null==e?void 0:e.errorMap)&&n._updateErrorMap(e.errorMap),n._initializeWithPersistence(a,null==e?void 0:e.popupRedirectResolver)}(l,e),l}),"PUBLIC").setInstantiationMode("EXPLICIT").setInstanceCreatedCallback(((n,e,t)=>{n.getProvider("auth-internal").initialize()}))),Xn(new hn("auth-internal",(n=>(n=>new _r(n))(Va(n.getProvider("auth").getImmediate()))),"PRIVATE").setInstantiationMode("EXPLICIT")),oe(Mr,Pr,function(n){switch(n){case"Node":return"node";case"ReactNative":return"rn";case"Worker":return"webworker";case"Cordova":return"cordova";case"WebExtension":return"web-extension";default:return}}(Nr)),oe(Mr,Pr,"esm2017"),function(n=re()){const e=Zn(n=dn(n),rt);e.isInitialized()?e.getImmediate():function(n,e={}){const t=Zn(n,rt);if(t.isInitialized()){const n=t.getImmediate();if(X(e,t.getOptions()))return n;throw ht.create("already-initialized")}t.initialize({options:e})}(n)}(ie({apiKey:"AIzaSyCXTdVrpP062FdyF5G3N_F124CV8gLKJwo",authDomain:"yet-another-wordle-clone.firebaseapp.com",projectId:"yet-another-wordle-clone",storageBucket:"yet-another-wordle-clone.appspot.com",messagingSenderId:"125079979526",appId:"1:125079979526:web:c2fcdc570bfc40091ce587",measurementId:"G-EMMCZENGBE"}));const Br=Lr(),zr=new fi,Or=async()=>{try{const n=await async function(n,e,t){if(ne(n.app))return Promise.reject(jt(n,"operation-not-supported-in-this-environment"));const a=Va(n);!function(n,e,t){if(!(e instanceof t))throw t.name!==e.constructor.name&&Gt(n,"argument-error"),Ut(n,"argument-error",`Type of ${e.constructor.name} does not match expected instance.Did you pass a reference from a different Auth SDK?`)}(n,e,ui);const i=Ji(a,void 0);return new er(a,"signInViaPopup",e,i).executeNotNull()}(Br,zr);return fi.credentialFromResult(n),n}catch(n){console.error(n)}};var Fr,Gr="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},jr={};(function(){var n;function e(){this.blockSize=-1,this.blockSize=64,this.g=Array(4),this.B=Array(this.blockSize),this.o=this.h=0,this.s()}function t(n,e,t){t||(t=0);var a=Array(16);if("string"==typeof e)for(var i=0;16>i;++i)a[i]=e.charCodeAt(t++)|e.charCodeAt(t++)<<8|e.charCodeAt(t++)<<16|e.charCodeAt(t++)<<24;else for(i=0;16>i;++i)a[i]=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24;e=n.g[0],t=n.g[1],i=n.g[2];var r=n.g[3],o=e+(r^t&(i^r))+a[0]+3614090360&4294967295;o=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=t+(o<<7&4294967295|o>>>25))+((o=r+(i^e&(t^i))+a[1]+3905402710&4294967295)<<12&4294967295|o>>>20))+((o=i+(t^r&(e^t))+a[2]+606105819&4294967295)<<17&4294967295|o>>>15))+((o=t+(e^i&(r^e))+a[3]+3250441966&4294967295)<<22&4294967295|o>>>10))+((o=e+(r^t&(i^r))+a[4]+4118548399&4294967295)<<7&4294967295|o>>>25))+((o=r+(i^e&(t^i))+a[5]+1200080426&4294967295)<<12&4294967295|o>>>20))+((o=i+(t^r&(e^t))+a[6]+2821735955&4294967295)<<17&4294967295|o>>>15))+((o=t+(e^i&(r^e))+a[7]+4249261313&4294967295)<<22&4294967295|o>>>10))+((o=e+(r^t&(i^r))+a[8]+1770035416&4294967295)<<7&4294967295|o>>>25))+((o=r+(i^e&(t^i))+a[9]+2336552879&4294967295)<<12&4294967295|o>>>20))+((o=i+(t^r&(e^t))+a[10]+4294925233&4294967295)<<17&4294967295|o>>>15))+((o=t+(e^i&(r^e))+a[11]+2304563134&4294967295)<<22&4294967295|o>>>10))+((o=e+(r^t&(i^r))+a[12]+1804603682&4294967295)<<7&4294967295|o>>>25))+((o=r+(i^e&(t^i))+a[13]+4254626195&4294967295)<<12&4294967295|o>>>20))+((o=i+(t^r&(e^t))+a[14]+2792965006&4294967295)<<17&4294967295|o>>>15))+((o=t+(e^i&(r^e))+a[15]+1236535329&4294967295)<<22&4294967295|o>>>10))+((o=e+(i^r&(t^i))+a[1]+4129170786&4294967295)<<5&4294967295|o>>>27))+((o=r+(t^i&(e^t))+a[6]+3225465664&4294967295)<<9&4294967295|o>>>23))+((o=i+(e^t&(r^e))+a[11]+643717713&4294967295)<<14&4294967295|o>>>18))+((o=t+(r^e&(i^r))+a[0]+3921069994&4294967295)<<20&4294967295|o>>>12))+((o=e+(i^r&(t^i))+a[5]+3593408605&4294967295)<<5&4294967295|o>>>27))+((o=r+(t^i&(e^t))+a[10]+38016083&4294967295)<<9&4294967295|o>>>23))+((o=i+(e^t&(r^e))+a[15]+3634488961&4294967295)<<14&4294967295|o>>>18))+((o=t+(r^e&(i^r))+a[4]+3889429448&4294967295)<<20&4294967295|o>>>12))+((o=e+(i^r&(t^i))+a[9]+568446438&4294967295)<<5&4294967295|o>>>27))+((o=r+(t^i&(e^t))+a[14]+3275163606&4294967295)<<9&4294967295|o>>>23))+((o=i+(e^t&(r^e))+a[3]+4107603335&4294967295)<<14&4294967295|o>>>18))+((o=t+(r^e&(i^r))+a[8]+1163531501&4294967295)<<20&4294967295|o>>>12))+((o=e+(i^r&(t^i))+a[13]+2850285829&4294967295)<<5&4294967295|o>>>27))+((o=r+(t^i&(e^t))+a[2]+4243563512&4294967295)<<9&4294967295|o>>>23))+((o=i+(e^t&(r^e))+a[7]+1735328473&4294967295)<<14&4294967295|o>>>18))+((o=t+(r^e&(i^r))+a[12]+2368359562&4294967295)<<20&4294967295|o>>>12))+((o=e+(t^i^r)+a[5]+4294588738&4294967295)<<4&4294967295|o>>>28))+((o=r+(e^t^i)+a[8]+2272392833&4294967295)<<11&4294967295|o>>>21))+((o=i+(r^e^t)+a[11]+1839030562&4294967295)<<16&4294967295|o>>>16))+((o=t+(i^r^e)+a[14]+4259657740&4294967295)<<23&4294967295|o>>>9))+((o=e+(t^i^r)+a[1]+2763975236&4294967295)<<4&4294967295|o>>>28))+((o=r+(e^t^i)+a[4]+1272893353&4294967295)<<11&4294967295|o>>>21))+((o=i+(r^e^t)+a[7]+4139469664&4294967295)<<16&4294967295|o>>>16))+((o=t+(i^r^e)+a[10]+3200236656&4294967295)<<23&4294967295|o>>>9))+((o=e+(t^i^r)+a[13]+681279174&4294967295)<<4&4294967295|o>>>28))+((o=r+(e^t^i)+a[0]+3936430074&4294967295)<<11&4294967295|o>>>21))+((o=i+(r^e^t)+a[3]+3572445317&4294967295)<<16&4294967295|o>>>16))+((o=t+(i^r^e)+a[6]+76029189&4294967295)<<23&4294967295|o>>>9))+((o=e+(t^i^r)+a[9]+3654602809&4294967295)<<4&4294967295|o>>>28))+((o=r+(e^t^i)+a[12]+3873151461&4294967295)<<11&4294967295|o>>>21))+((o=i+(r^e^t)+a[15]+530742520&4294967295)<<16&4294967295|o>>>16))+((o=t+(i^r^e)+a[2]+3299628645&4294967295)<<23&4294967295|o>>>9))+((o=e+(i^(t|~r))+a[0]+4096336452&4294967295)<<6&4294967295|o>>>26))+((o=r+(t^(e|~i))+a[7]+1126891415&4294967295)<<10&4294967295|o>>>22))+((o=i+(e^(r|~t))+a[14]+2878612391&4294967295)<<15&4294967295|o>>>17))+((o=t+(r^(i|~e))+a[5]+4237533241&4294967295)<<21&4294967295|o>>>11))+((o=e+(i^(t|~r))+a[12]+1700485571&4294967295)<<6&4294967295|o>>>26))+((o=r+(t^(e|~i))+a[3]+2399980690&4294967295)<<10&4294967295|o>>>22))+((o=i+(e^(r|~t))+a[10]+4293915773&4294967295)<<15&4294967295|o>>>17))+((o=t+(r^(i|~e))+a[1]+2240044497&4294967295)<<21&4294967295|o>>>11))+((o=e+(i^(t|~r))+a[8]+1873313359&4294967295)<<6&4294967295|o>>>26))+((o=r+(t^(e|~i))+a[15]+4264355552&4294967295)<<10&4294967295|o>>>22))+((o=i+(e^(r|~t))+a[6]+2734768916&4294967295)<<15&4294967295|o>>>17))+((o=t+(r^(i|~e))+a[13]+1309151649&4294967295)<<21&4294967295|o>>>11))+((r=(e=t+((o=e+(i^(t|~r))+a[4]+4149444226&4294967295)<<6&4294967295|o>>>26))+((o=r+(t^(e|~i))+a[11]+3174756917&4294967295)<<10&4294967295|o>>>22))^((i=r+((o=i+(e^(r|~t))+a[2]+718787259&4294967295)<<15&4294967295|o>>>17))|~e))+a[9]+3951481745&4294967295,n.g[0]=n.g[0]+e&4294967295,n.g[1]=n.g[1]+(i+(o<<21&4294967295|o>>>11))&4294967295,n.g[2]=n.g[2]+i&4294967295,n.g[3]=n.g[3]+r&4294967295}function a(n,e){this.h=e;for(var t=[],a=!0,i=n.length-1;0<=i;i--){var r=0|n[i];a&&r==e||(t[i]=r,a=!1)}this.g=t}!function(n,e){function t(){}t.prototype=e.prototype,n.D=e.prototype,n.prototype=new t,n.prototype.constructor=n,n.C=function(n,t,a){for(var i=Array(arguments.length-2),r=2;rthis.h?this.blockSize:2*this.blockSize)-this.h);n[0]=128;for(var e=1;ee;++e)for(var a=0;32>a;a+=8)n[t++]=this.g[e]>>>a&255;return n};var i={};function r(n){return-128<=n&&128>n?function(n,e){var t=i;return Object.prototype.hasOwnProperty.call(t,n)?t[n]:t[n]=function(n){return new a([0|n],0>n?-1:0)}(n)}(n):new a([0|n],0>n?-1:0)}function o(n){if(isNaN(n)||!isFinite(n))return s;if(0>n)return h(o(-n));for(var e=[],t=1,i=0;n>=t;i++)e[i]=n/t|0,t*=4294967296;return new a(e,0)}var s=r(0),l=r(1),c=r(16777216);function u(n){if(0!=n.h)return!1;for(var e=0;e>>16,n[e]&=65535,e++}function p(n,e){this.g=n,this.h=e}function g(n,e){if(u(e))throw Error("division by zero");if(u(n))return new p(s,s);if(d(n))return e=g(h(n),e),new p(h(e.g),h(e.h));if(d(e))return e=g(n,h(e)),new p(h(e.g),e.h);if(30=a.l(n);)t=y(t),a=y(a);var i=b(t,1),r=b(a,1);for(a=b(a,2),t=b(t,2);!u(a);){var c=r.add(a);0>=c.l(n)&&(i=i.add(t),r=c),a=b(a,1),t=b(t,1)}return e=f(n,i.j(e)),new p(i,e)}for(i=s;0<=n.l(e);){for(t=Math.max(1,Math.floor(n.m()/e.m())),a=48>=(a=Math.ceil(Math.log(t)/Math.LN2))?1:Math.pow(2,a-48),c=(r=o(t)).j(e);d(c)||0>>31;return new a(t,n.h)}function b(n,e){var t=e>>5;e%=32;for(var i=n.g.length-t,r=[],o=0;o>>e|n.i(o+t+1)<<32-e:n.i(o+t);return new a(r,n.h)}(n=a.prototype).m=function(){if(d(this))return-h(this).m();for(var n=0,e=1,t=0;t(n=n||10)||36>>0).toString(n);if(u(t=i))return r+a;for(;6>r.length;)r="0"+r;a=r+a}},n.i=function(n){return 0>n?0:n>>16)+(this.i(r)>>>16)+(n.i(r)>>>16);i=s>>>16,o&=65535,s&=65535,t[r]=s<<16|o}return new a(t,-2147483648&t[t.length-1]?-1:0)},n.j=function(n){if(u(this)||u(n))return s;if(d(this))return d(n)?h(this).j(h(n)):h(h(this).j(n));if(d(n))return h(this.j(h(n)));if(0>this.l(c)&&0>n.l(c))return o(this.m()*n.m());for(var e=this.g.length+n.g.length,t=[],i=0;i<2*e;i++)t[i]=0;for(i=0;i>>16,f=65535&this.i(i),p=n.i(r)>>>16,g=65535&n.i(r);t[2*i+2*r]+=f*g,m(t,2*i+2*r),t[2*i+2*r+1]+=l*g,m(t,2*i+2*r+1),t[2*i+2*r+1]+=f*p,m(t,2*i+2*r+1),t[2*i+2*r+2]+=l*p,m(t,2*i+2*r+2)}for(i=0;i(t=t||10)||36l?(l=o(Math.pow(t,l)),i=i.j(l).add(o(c))):i=(i=i.j(a)).add(o(c))}return i},Fr=jr.Integer=a}).apply(void 0!==Gr?Gr:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{});var Ur,Hr,Vr,Wr,Kr,qr,Jr,$r,Yr,Qr="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},Xr={};(function(){var n,e="function"==typeof Object.defineProperties?Object.defineProperty:function(n,e,t){return n==Array.prototype||n==Object.prototype||(n[e]=t.value),n},t=function(n){n=["object"==typeof globalThis&&globalThis,n,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof Qr&&Qr];for(var e=0;e{throw n}),0)}function S(){var n=M;let e=null;return n.g&&(e=n.g,n.g=n.g.next,n.g||(n.h=null),e.next=null),e}var A=new class{constructor(n,e){this.i=n,this.j=e,this.h=0,this.g=null}get(){let n;return 0new T),(n=>n.reset()));class T{constructor(){this.next=this.g=this.h=null}set(n,e){this.h=n,this.g=e,this.next=null}reset(){this.next=this.g=this.h=null}}let I,E=!1,M=new class{constructor(){this.h=this.g=null}add(n,e){const t=A.get();t.set(n,e),this.h?this.h.next=t:this.g=t,this.h=t}},P=()=>{const n=i.Promise.resolve(void 0);I=()=>{n.then(_)}};var _=()=>{for(var n;n=S();){try{n.h.call(n.g)}catch(n){C(n)}var e=A;e.j(n),100>e.h&&(e.h++,n.next=e.g,e.g=n)}E=!1};function R(){this.s=this.s,this.C=this.C}function D(n,e){this.type=n,this.g=this.target=e,this.defaultPrevented=!1}R.prototype.s=!1,R.prototype.ma=function(){this.s||(this.s=!0,this.N())},R.prototype.N=function(){if(this.C)for(;this.C.length;)this.C.shift()()},D.prototype.h=function(){this.defaultPrevented=!0};var L=function(){if(!i.addEventListener||!Object.defineProperty)return!1;var n=!1,e=Object.defineProperty({},"passive",{get:function(){n=!0}});try{const n=()=>{};i.addEventListener("test",n,e),i.removeEventListener("test",n,e)}catch(n){}return n}();function N(n,e){if(D.call(this,n?n.type:""),this.relatedTarget=this.g=this.target=null,this.button=this.screenY=this.screenX=this.clientY=this.clientX=0,this.key="",this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1,this.state=null,this.pointerId=0,this.pointerType="",this.i=null,n){var t=this.type=n.type,a=n.changedTouches&&n.changedTouches.length?n.changedTouches[0]:null;if(this.target=n.target||n.srcElement,this.g=e,e=n.relatedTarget){if(y){n:{try{g(e.nodeName);var i=!0;break n}catch(n){}i=!1}i||(e=null)}}else"mouseover"==t?e=n.fromElement:"mouseout"==t&&(e=n.toElement);this.relatedTarget=e,a?(this.clientX=void 0!==a.clientX?a.clientX:a.pageX,this.clientY=void 0!==a.clientY?a.clientY:a.pageY,this.screenX=a.screenX||0,this.screenY=a.screenY||0):(this.clientX=void 0!==n.clientX?n.clientX:n.pageX,this.clientY=void 0!==n.clientY?n.clientY:n.pageY,this.screenX=n.screenX||0,this.screenY=n.screenY||0),this.button=n.button,this.key=n.key||"",this.ctrlKey=n.ctrlKey,this.altKey=n.altKey,this.shiftKey=n.shiftKey,this.metaKey=n.metaKey,this.pointerId=n.pointerId||0,this.pointerType="string"==typeof n.pointerType?n.pointerType:B[n.pointerType]||"",this.state=n.state,this.i=n,n.defaultPrevented&&N.aa.h.call(this)}}d(N,D);var B={2:"touch",3:"pen",4:"mouse"};N.prototype.h=function(){N.aa.h.call(this);var n=this.i;n.preventDefault?n.preventDefault():n.returnValue=!1};var z="closure_listenable_"+(1e6*Math.random()|0),O=0;function F(n,e,t,a,i){this.listener=n,this.proxy=null,this.src=e,this.type=t,this.capture=!!a,this.ha=i,this.key=++O,this.da=this.fa=!1}function G(n){n.da=!0,n.listener=null,n.proxy=null,n.src=null,n.ha=null}function j(n){this.src=n,this.g={},this.h=0}function U(n,e){var t=e.type;if(t in n.g){var a,i=n.g[t],r=Array.prototype.indexOf.call(i,e,void 0);(a=0<=r)&&Array.prototype.splice.call(i,r,1),a&&(G(e),0==n.g[t].length&&(delete n.g[t],n.h--))}}function H(n,e,t,a){for(var i=0;i>>0);function en(n){return"function"==typeof n?n:(n[nn]||(n[nn]=function(e){return n.handleEvent(e)}),n[nn])}function tn(){R.call(this),this.i=new j(this),this.M=this,this.F=null}function an(n,e){var t,a=n.F;if(a)for(t=[];a;a=a.F)t.push(a);if(n=n.M,a=e.type||e,"string"==typeof e)e=new D(e,n);else if(e instanceof D)e.target=e.target||n;else{var i=e;k(e=new D(a,n),i)}if(i=!0,t)for(var r=t.length-1;0<=r;r--){var o=e.g=t[r];i=rn(o,a,!0,e)&&i}if(i=rn(o=e.g=n,a,!0,e)&&i,i=rn(o,a,!1,e)&&i,t)for(r=0;r{n.g=null,n.i&&(n.i=!1,sn(n))}),n.l);const e=n.h;n.h=null,n.m.apply(null,e)}d(tn,R),tn.prototype[z]=!0,tn.prototype.removeEventListener=function(n,e,t,a){$(this,n,e,t,a)},tn.prototype.N=function(){if(tn.aa.N.call(this),this.i){var n,e=this.i;for(n in e.g){for(var t=e.g[n],a=0;aa.length)){var i=a[1];if(Array.isArray(i)&&!(1>i.length)){var r=i[0];if("noop"!=r&&"stop"!=r&&"close"!=r)for(var o=1;oe.length?Fn:(e=e.slice(a,a+t),n.C=a+t,e))}function Vn(n){n.S=Date.now()+n.I,Wn(n,n.I)}function Wn(n,e){if(null!=n.B)throw Error("WatchDog timer not null");n.B=Mn(c(n.ba,n),e)}function Kn(n){n.B&&(i.clearTimeout(n.B),n.B=null)}function qn(n){0==n.j.G||n.J||st(n.j,n)}function Jn(n){Kn(n);var e=n.M;e&&"function"==typeof e.ma&&e.ma(),n.M=null,dn(n.U),n.g&&(e=n.g,n.g=null,e.abort(),e.ma())}function $n(n,e){try{var t=n.j;if(0!=t.G&&(t.g==n||Zn(t.h,n)))if(!n.K&&Zn(t.h,n)&&3==t.G){try{var a=t.Da.g.parse(e)}catch(n){a=null}if(Array.isArray(a)&&3==a.length){var i=a;if(0==i[0]){n:if(!t.u){if(t.g){if(!(t.g.F+3e3i[2]&&t.F&&0==t.v&&!t.C&&(t.C=Mn(c(t.Za,t),6e3));if(1>=Xn(t.h)&&t.ca){try{t.ca()}catch(n){}t.ca=void 0}}else ct(t,11)}else if((n.K||t.g==n)&&ot(t),!m(e))for(i=t.Da.g.parse(e),e=0;e=n.j}function Xn(n){return n.h?1:n.g?n.g.size:0}function Zn(n,e){return n.h?n.h==e:!!n.g&&n.g.has(e)}function ne(n,e){n.g?n.g.add(e):n.h=e}function ee(n,e){n.h&&n.h==e?n.h=null:n.g&&n.g.has(e)&&n.g.delete(e)}function te(n){if(null!=n.h)return n.i.concat(n.h.D);if(null!=n.g&&0!==n.g.size){let e=n.i;for(const t of n.g.values())e=e.concat(t.D);return e}return h(n.i)}function ae(n,e){if(n.forEach&&"function"==typeof n.forEach)n.forEach(e,void 0);else if(r(n)||"string"==typeof n)Array.prototype.forEach.call(n,e,void 0);else for(var t=function(n){if(n.na&&"function"==typeof n.na)return n.na();if(!n.V||"function"!=typeof n.V){if("undefined"!=typeof Map&&n instanceof Map)return Array.from(n.keys());if(!("undefined"!=typeof Set&&n instanceof Set)){if(r(n)||"string"==typeof n){var e=[];n=n.length;for(var t=0;th)&&(3!=h||this.g&&(this.h.h||this.g.oa()||Ke(this.g)))){this.J||4!=h||7==e||An(),Kn(this);var t=this.g.Z();this.X=t;e:if(Un(this)){var a=Ke(this.g);n="";var r=a.length,o=4==We(this.g);if(!this.h.i){if("undefined"==typeof TextDecoder){Jn(this),qn(this);var s="";break e}this.h.i=new i.TextDecoder}for(e=0;ee)throw Error("Bad port number "+e);n.s=e}else n.s=null}function ce(n,e,t){e instanceof ke?(n.i=e,function(n,e){e&&!n.j&&(we(n),n.i=null,n.g.forEach((function(n,e){var t=e.toLowerCase();e!=t&&(Ce(this,e),Ae(this,t,n))}),n)),n.j=e}(n.i,n.h)):(t||(e=fe(e,ve)),n.i=new ke(e,n.h))}function ue(n,e,t){n.i.set(e,t)}function de(n){return ue(n,"zx",Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^Date.now()).toString(36)),n}function he(n,e){return n?e?decodeURI(n.replace(/%25/g,"%2525")):decodeURIComponent(n):""}function fe(n,e,t){return"string"==typeof n?(n=encodeURI(n).replace(e,me),t&&(n=n.replace(/%25([0-9a-fA-F]{2})/g,"%$1")),n):null}function me(n){return"%"+((n=n.charCodeAt(0))>>4&15).toString(16)+(15&n).toString(16)}re.prototype.toString=function(){var n=[],e=this.j;e&&n.push(fe(e,ge,!0),":");var t=this.g;return(t||"file"==e)&&(n.push("//"),(e=this.o)&&n.push(fe(e,ge,!0),"@"),n.push(encodeURIComponent(String(t)).replace(/%25([0-9a-fA-F]{2})/g,"%$1")),null!=(t=this.s)&&n.push(":",String(t))),(t=this.l)&&(this.g&&"/"!=t.charAt(0)&&n.push("/"),n.push(fe(t,"/"==t.charAt(0)?be:ye,!0))),(t=this.i.toString())&&n.push("?",t),(t=this.m)&&n.push("#",fe(t,xe)),n.join("")};var pe,ge=/[#\/\?@]/g,ye=/[#\?:]/g,be=/[#\?]/g,ve=/[#\?@]/g,xe=/#/g;function ke(n,e){this.h=this.g=null,this.i=n||null,this.j=!!e}function we(n){n.g||(n.g=new Map,n.h=0,n.i&&function(n,e){if(n){n=n.split("&");for(var t=0;t{})),1<=this.readyState&&this.g&&4!=this.readyState&&(this.g=!1,De(this)),this.readyState=0},n.Sa=function(n){if(this.g&&(this.l=n,this.h||(this.status=this.l.status,this.statusText=this.l.statusText,this.h=n.headers,this.readyState=2,Le(this)),this.g&&(this.readyState=3,Le(this),this.g)))if("arraybuffer"===this.responseType)n.arrayBuffer().then(this.Qa.bind(this),this.ga.bind(this));else if(void 0!==i.ReadableStream&&"body"in n){if(this.j=n.body.getReader(),this.o){if(this.responseType)throw Error('responseType must be empty for "streamBinaryChunks" mode responses.');this.response=[]}else this.response=this.responseText="",this.v=new TextDecoder;Re(this)}else n.text().then(this.Ra.bind(this),this.ga.bind(this))},n.Pa=function(n){if(this.g){if(this.o&&n.value)this.response.push(n.value);else if(!this.o){var e=n.value?n.value:new Uint8Array(0);(e=this.v.decode(e,{stream:!n.done}))&&(this.response=this.responseText+=e)}n.done?De(this):Le(this),3==this.readyState&&Re(this)}},n.Ra=function(n){this.g&&(this.response=this.responseText=n,De(this))},n.Qa=function(n){this.g&&(this.response=n,De(this))},n.ga=function(){this.g&&De(this)},n.setRequestHeader=function(n,e){this.u.append(n,e)},n.getResponseHeader=function(n){return this.h&&this.h.get(n.toLowerCase())||""},n.getAllResponseHeaders=function(){if(!this.h)return"";const n=[],e=this.h.entries();for(var t=e.next();!t.done;)t=t.value,n.push(t[0]+": "+t[1]),t=e.next();return n.join("\r\n")},Object.defineProperty(_e.prototype,"withCredentials",{get:function(){return"include"===this.m},set:function(n){this.m=n?"include":"same-origin"}}),d(ze,tn);var Oe=/^https?$/i,Fe=["POST","PUT"];function Ge(n,e){n.h=!1,n.g&&(n.j=!0,n.g.abort(),n.j=!1),n.l=e,n.m=5,je(n),He(n)}function je(n){n.A||(n.A=!0,an(n,"complete"),an(n,"error"))}function Ue(n){if(n.h&&void 0!==a&&(!n.v[1]||4!=We(n)||2!=n.Z()))if(n.u&&4==We(n))on(n.Ea,0,n);else if(an(n,"readystatechange"),4==We(n)){n.h=!1;try{const a=n.Z();n:switch(a){case 200:case 201:case 202:case 204:case 206:case 304:case 1223:var e=!0;break n;default:e=!1}var t;if(!(t=e)){var r;if(r=0===a){var o=String(n.D).match(ie)[1]||null;!o&&i.self&&i.self.location&&(o=i.self.location.protocol.slice(0,-1)),r=!Oe.test(o?o.toLowerCase():"")}t=r}if(t)an(n,"complete"),an(n,"success");else{n.m=6;try{var s=2{}:null;n.g=null,n.v=null,e||an(n,"ready");try{t.onreadystatechange=a}catch(n){}}}function Ve(n){n.I&&(i.clearTimeout(n.I),n.I=null)}function We(n){return n.g?n.g.readyState:0}function Ke(n){try{if(!n.g)return null;if("response"in n.g)return n.g.response;switch(n.H){case"":case"text":return n.g.responseText;case"arraybuffer":if("mozResponseArrayBuffer"in n.g)return n.g.mozResponseArrayBuffer}return null}catch(n){return null}}function qe(n,e,t){return t&&t.internalChannelParams&&t.internalChannelParams[n]||e}function Je(n){this.Aa=0,this.i=[],this.j=new Pn,this.ia=this.qa=this.I=this.W=this.g=this.ya=this.D=this.H=this.m=this.S=this.o=null,this.Ya=this.U=0,this.Va=qe("failFast",!1,n),this.F=this.C=this.u=this.s=this.l=null,this.X=!0,this.za=this.T=-1,this.Y=this.v=this.B=0,this.Ta=qe("baseRetryDelayMs",5e3,n),this.cb=qe("retryDelaySeedMs",1e4,n),this.Wa=qe("forwardChannelMaxRetries",2,n),this.wa=qe("forwardChannelRequestTimeoutMs",2e4,n),this.pa=n&&n.xmlHttpFactory||void 0,this.Xa=n&&n.Tb||void 0,this.Ca=n&&n.useFetchStreams||!1,this.L=void 0,this.J=n&&n.supportsCrossDomainXhr||!1,this.K="",this.h=new Yn(n&&n.concurrentRequestLimit),this.Da=new Ee,this.P=n&&n.fastHandshake||!1,this.O=n&&n.encodeInitMessageHeaders||!1,this.P&&this.O&&(this.O=!1),this.Ua=n&&n.Rb||!1,n&&n.xa&&this.j.xa(),n&&n.forceLongPolling&&(this.X=!1),this.ba=!this.P&&this.X&&n&&n.detectBufferingProxy||!1,this.ja=void 0,n&&n.longPollingTimeout&&0t)e=Math.max(0,i[o].g-100),r=!1;else try{Me(s,n,"req"+t+"_")}catch(n){a&&a(s)}}if(r){a=n.join("&");break n}}}return n=n.i.splice(0,t),e.D=n,a}function tt(n){if(!n.g&&!n.u){n.Y=1;var e=n.Fa;I||P(),E||(I(),E=!0),M.add(e,n),n.v=0}}function at(n){return!(n.g||n.u||3<=n.v||(n.Y++,n.u=Mn(c(n.Fa,n),lt(n,n.v)),n.v++,0))}function it(n){null!=n.A&&(i.clearTimeout(n.A),n.A=null)}function rt(n){n.g=new Bn(n,n.j,"rpc",n.Y),null===n.m&&(n.g.H=n.o),n.g.O=0;var e=oe(n.qa);ue(e,"RID","rpc"),ue(e,"SID",n.K),ue(e,"AID",n.T),ue(e,"CI",n.F?"0":"1"),!n.F&&n.ja&&ue(e,"TO",n.ja),ue(e,"TYPE","xmlhttp"),nt(n,e),n.m&&n.o&&Be(e,n.m,n.o),n.L&&(n.g.I=n.L);var t=n.g;n=n.ia,t.L=1,t.v=de(oe(e)),t.m=null,t.P=!0,jn(t,n)}function ot(n){null!=n.C&&(i.clearTimeout(n.C),n.C=null)}function st(n,e){var t=null;if(n.g==e){ot(n),it(n),n.g=null;var a=2}else{if(!Zn(n.h,e))return;t=e.D,ee(n.h,e),a=1}if(0!=n.G)if(e.o)if(1==a){t=e.m?e.m.length:0,e=Date.now()-e.F;var i=n.B;an(a=Cn(),new En(a,t)),Xe(n)}else tt(n);else if(3==(i=e.s)||0==i&&0=n.h.j-(n.s?1:0)||(n.s?(n.i=e.D.concat(n.i),0):1==n.G||2==n.G||n.B>=(n.Va?0:n.Wa)||(n.s=Mn(c(n.Ga,n,e),lt(n,n.B)),n.B++,0)))}(n,e)||2==a&&at(n)))switch(t&&0{t.abort(),Ie(0,0,!1,e)}),1e4);fetch(n,{signal:t.signal}).then((n=>{clearTimeout(a),n.ok?Ie(0,0,!0,e):Ie(0,0,!1,e)})).catch((()=>{clearTimeout(a),Ie(0,0,!1,e)}))}(a.toString(),t)}else In(2);n.G=0,n.l&&n.l.sa(e),ut(n),Qe(n)}function ut(n){if(n.G=0,n.ka=[],n.l){const e=te(n.h);0==e.length&&0==n.i.length||(f(n.ka,e),f(n.ka,n.i),n.h.i.length=0,h(n.i),n.i.length=0),n.l.ra()}}function dt(n,e,t){var a=t instanceof re?oe(t):new re(t);if(""!=a.g)e&&(a.g=e+"."+a.g),le(a,a.s);else{var r=i.location;a=r.protocol,e=e?e+"."+r.hostname:r.hostname,r=+r.port;var o=new re(null);a&&se(o,a),e&&(o.g=e),r&&le(o,r),t&&(o.l=t),a=o}return t=n.D,e=n.ya,t&&e&&ue(a,t,e),ue(a,"VER",n.la),nt(n,a),a}function ht(n,e,t){if(e&&!n.J)throw Error("Can't create secondary domain capable XhrIo object.");return(e=n.Ca&&!n.pa?new ze(new Pe({eb:t})):new ze(n.pa)).Ha(n.J),e}function ft(){}function mt(){}function pt(n,e){tn.call(this),this.g=new Je(e),this.l=n,this.h=e&&e.messageUrlParams||null,n=e&&e.messageHeaders||null,e&&e.clientProtocolHeaderRequired&&(n?n["X-Client-Protocol"]="webchannel":n={"X-Client-Protocol":"webchannel"}),this.g.o=n,n=e&&e.initMessageHeaders||null,e&&e.messageContentType&&(n?n["X-WebChannel-Content-Type"]=e.messageContentType:n={"X-WebChannel-Content-Type":e.messageContentType}),e&&e.va&&(n?n["X-WebChannel-Client-Profile"]=e.va:n={"X-WebChannel-Client-Profile":e.va}),this.g.S=n,(n=e&&e.Sb)&&!m(n)&&(this.g.m=n),this.v=e&&e.supportsCrossDomainXhr||!1,this.u=e&&e.sendRawJson||!1,(e=e&&e.httpSessionIdParam)&&!m(e)&&(this.g.D=e,null!==(n=this.h)&&e in n&&e in(n=this.h)&&delete n[e]),this.j=new bt(this)}function gt(n){vn.call(this),n.__headers__&&(this.headers=n.__headers__,this.statusCode=n.__status__,delete n.__headers__,delete n.__status__);var e=n.__sm__;if(e){n:{for(const t in e){n=t;break n}n=void 0}(this.i=n)&&(n=this.i,e=null!==e&&n in e?e[n]:void 0),this.data=e}else this.data=n}function yt(){xn.call(this),this.status=1}function bt(n){this.g=n}(n=ze.prototype).Ha=function(n){this.J=n},n.ea=function(n,e,t,a){if(this.g)throw Error("[goog.net.XhrIo] Object is active with another request="+this.D+"; newUri="+n);e=e?e.toUpperCase():"GET",this.D=n,this.l="",this.m=0,this.A=!1,this.h=!0,this.g=this.o?this.o.g():Rn.g(),this.v=this.o?gn(this.o):gn(Rn),this.g.onreadystatechange=c(this.Ea,this);try{this.B=!0,this.g.open(e,String(n),!0),this.B=!1}catch(n){return void Ge(this,n)}if(n=t||"",t=new Map(this.headers),a)if(Object.getPrototypeOf(a)===Object.prototype)for(var r in a)t.set(r,a[r]);else{if("function"!=typeof a.keys||"function"!=typeof a.get)throw Error("Unknown input type for opt_headers: "+String(a));for(const n of a.keys())t.set(n,a.get(n))}a=Array.from(t.keys()).find((n=>"content-type"==n.toLowerCase())),r=i.FormData&&n instanceof i.FormData,!(0<=Array.prototype.indexOf.call(Fe,e,void 0))||a||r||t.set("Content-Type","application/x-www-form-urlencoded;charset=utf-8");for(const[n,e]of t)this.g.setRequestHeader(n,e);this.H&&(this.g.responseType=this.H),"withCredentials"in this.g&&this.g.withCredentials!==this.J&&(this.g.withCredentials=this.J);try{Ve(this),this.u=!0,this.g.send(n),this.u=!1}catch(n){Ge(this,n)}},n.abort=function(n){this.g&&this.h&&(this.h=!1,this.j=!0,this.g.abort(),this.j=!1,this.m=n||7,an(this,"complete"),an(this,"abort"),He(this))},n.N=function(){this.g&&(this.h&&(this.h=!1,this.j=!0,this.g.abort(),this.j=!1),He(this,!0)),ze.aa.N.call(this)},n.Ea=function(){this.s||(this.B||this.u||this.j?Ue(this):this.bb())},n.bb=function(){Ue(this)},n.isActive=function(){return!!this.g},n.Z=function(){try{return 2=this.R)){var n=2*this.R;this.j.info("BP detection timer enabled: "+n),this.A=Mn(c(this.ab,this),n)}},n.ab=function(){this.A&&(this.A=null,this.j.info("BP detection timeout reached."),this.j.info("Buffering proxy detected and switch to long-polling!"),this.F=!1,this.M=!0,In(10),Ye(this),rt(this))},n.Za=function(){null!=this.C&&(this.C=null,Ye(this),at(this),In(19))},n.fb=function(n){n?(this.j.info("Successfully pinged google.com"),In(2)):(this.j.info("Failed to ping google.com"),In(1))},n.isActive=function(){return!!this.l&&this.l.isActive(this)},(n=ft.prototype).ua=function(){},n.ta=function(){},n.sa=function(){},n.ra=function(){},n.isActive=function(){return!0},n.Na=function(){},mt.prototype.g=function(n,e){return new pt(n,e)},d(pt,tn),pt.prototype.m=function(){this.g.l=this.j,this.v&&(this.g.J=!0),this.g.connect(this.l,this.h||void 0)},pt.prototype.close=function(){$e(this.g)},pt.prototype.o=function(n){var e=this.g;if("string"==typeof n){var t={};t.__data__=n,n=t}else this.u&&((t={}).__data__=hn(n),n=t);e.i.push(new class{constructor(n,e){this.g=n,this.map=e}}(e.Ya++,n)),3==e.G&&Xe(e)},pt.prototype.N=function(){this.g.l=null,delete this.j,$e(this.g),delete this.g,pt.aa.N.call(this)},d(gt,vn),d(yt,xn),d(bt,ft),bt.prototype.ua=function(){an(this.g,"a")},bt.prototype.ta=function(n){an(this.g,new gt(n))},bt.prototype.sa=function(n){an(this.g,new yt)},bt.prototype.ra=function(){an(this.g,"b")},mt.prototype.createWebChannel=mt.prototype.g,pt.prototype.send=pt.prototype.o,pt.prototype.open=pt.prototype.m,pt.prototype.close=pt.prototype.close,Yr=Xr.createWebChannelTransport=function(){return new mt},$r=Xr.getStatEventTarget=function(){return Cn()},Jr=Xr.Event=kn,qr=Xr.Stat={mb:0,pb:1,qb:2,Jb:3,Ob:4,Lb:5,Mb:6,Kb:7,Ib:8,Nb:9,PROXY:10,NOPROXY:11,Gb:12,Cb:13,Db:14,Bb:15,Eb:16,Fb:17,ib:18,hb:19,jb:20},Dn.NO_ERROR=0,Dn.TIMEOUT=8,Dn.HTTP_ERROR=6,Kr=Xr.ErrorCode=Dn,Ln.COMPLETE="complete",Wr=Xr.EventType=Ln,yn.EventType=bn,bn.OPEN="a",bn.CLOSE="b",bn.ERROR="c",bn.MESSAGE="d",tn.prototype.listen=tn.prototype.K,Vr=Xr.WebChannel=yn,Hr=Xr.FetchXmlHttpFactory=Pe,ze.prototype.listenOnce=ze.prototype.L,ze.prototype.getLastError=ze.prototype.Ka,ze.prototype.getLastErrorCode=ze.prototype.Ba,ze.prototype.getStatus=ze.prototype.Z,ze.prototype.getResponseJson=ze.prototype.Oa,ze.prototype.getResponseText=ze.prototype.oa,ze.prototype.send=ze.prototype.ea,ze.prototype.setWithCredentials=ze.prototype.Ha,Ur=Xr.XhrIo=ze}).apply(void 0!==Qr?Qr:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{});const Zr="@firebase/firestore";class no{constructor(n){this.uid=n}isAuthenticated(){return null!=this.uid}toKey(){return this.isAuthenticated()?"uid:"+this.uid:"anonymous-user"}isEqual(n){return n.uid===this.uid}}no.UNAUTHENTICATED=new no(null),no.GOOGLE_CREDENTIALS=new no("google-credentials-uid"),no.FIRST_PARTY=new no("first-party-uid"),no.MOCK_USER=new no("mock-user");let eo="10.13.2";const to=new Cn("@firebase/firestore");function ao(){return to.logLevel}function io(n,...e){if(to.logLevel<=yn.DEBUG){const t=e.map(so);to.debug(`Firestore (${eo}): ${n}`,...t)}}function ro(n,...e){if(to.logLevel<=yn.ERROR){const t=e.map(so);to.error(`Firestore (${eo}): ${n}`,...t)}}function oo(n,...e){if(to.logLevel<=yn.WARN){const t=e.map(so);to.warn(`Firestore (${eo}): ${n}`,...t)}}function so(n){if("string"==typeof n)return n;try{return function(n){return JSON.stringify(n)}(n)}catch(e){return n}}function lo(n="Unexpected state"){const e=`FIRESTORE (${eo}) INTERNAL ASSERTION FAILED: `+n;throw ro(e),new Error(e)}function co(n,e){n||lo()}function uo(n,e){return n}const ho={OK:"ok",CANCELLED:"cancelled",UNKNOWN:"unknown",INVALID_ARGUMENT:"invalid-argument",DEADLINE_EXCEEDED:"deadline-exceeded",NOT_FOUND:"not-found",ALREADY_EXISTS:"already-exists",PERMISSION_DENIED:"permission-denied",UNAUTHENTICATED:"unauthenticated",RESOURCE_EXHAUSTED:"resource-exhausted",FAILED_PRECONDITION:"failed-precondition",ABORTED:"aborted",OUT_OF_RANGE:"out-of-range",UNIMPLEMENTED:"unimplemented",INTERNAL:"internal",UNAVAILABLE:"unavailable",DATA_LOSS:"data-loss"};class fo extends ${constructor(n,e){super(n,e),this.code=n,this.message=e,this.toString=()=>`${this.name}: [code=${this.code}]: ${this.message}`}}class mo{constructor(){this.promise=new Promise(((n,e)=>{this.resolve=n,this.reject=e}))}}class po{constructor(n,e){this.user=e,this.type="OAuth",this.headers=new Map,this.headers.set("Authorization",`Bearer ${n}`)}}class go{getToken(){return Promise.resolve(null)}invalidateToken(){}start(n,e){n.enqueueRetryable((()=>e(no.UNAUTHENTICATED)))}shutdown(){}}class yo{constructor(n){this.token=n,this.changeListener=null}getToken(){return Promise.resolve(this.token)}invalidateToken(){}start(n,e){this.changeListener=e,n.enqueueRetryable((()=>e(this.token.user)))}shutdown(){this.changeListener=null}}class bo{constructor(n){this.t=n,this.currentUser=no.UNAUTHENTICATED,this.i=0,this.forceRefresh=!1,this.auth=null}start(n,e){let t=this.i;const a=n=>this.i!==t?(t=this.i,e(n)):Promise.resolve();let i=new mo;this.o=()=>{this.i++,this.currentUser=this.u(),i.resolve(),i=new mo,n.enqueueRetryable((()=>a(this.currentUser)))};const r=()=>{const e=i;n.enqueueRetryable((async()=>{await e.promise,await a(this.currentUser)}))},o=n=>{io("FirebaseAuthCredentialsProvider","Auth detected"),this.auth=n,this.auth.addAuthTokenListener(this.o),r()};this.t.onInit((n=>o(n))),setTimeout((()=>{if(!this.auth){const n=this.t.getImmediate({optional:!0});n?o(n):(io("FirebaseAuthCredentialsProvider","Auth not yet detected"),i.resolve(),i=new mo)}}),0),r()}getToken(){const n=this.i,e=this.forceRefresh;return this.forceRefresh=!1,this.auth?this.auth.getToken(e).then((e=>this.i!==n?(io("FirebaseAuthCredentialsProvider","getToken aborted due to token change."),this.getToken()):e?(co("string"==typeof e.accessToken),new po(e.accessToken,this.currentUser)):null)):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.auth&&this.auth.removeAuthTokenListener(this.o)}u(){const n=this.auth&&this.auth.getUid();return co(null===n||"string"==typeof n),new no(n)}}class vo{constructor(n,e,t){this.l=n,this.h=e,this.P=t,this.type="FirstParty",this.user=no.FIRST_PARTY,this.I=new Map}T(){return this.P?this.P():null}get headers(){this.I.set("X-Goog-AuthUser",this.l);const n=this.T();return n&&this.I.set("Authorization",n),this.h&&this.I.set("X-Goog-Iam-Authorization-Token",this.h),this.I}}class xo{constructor(n,e,t){this.l=n,this.h=e,this.P=t}getToken(){return Promise.resolve(new vo(this.l,this.h,this.P))}start(n,e){n.enqueueRetryable((()=>e(no.FIRST_PARTY)))}shutdown(){}invalidateToken(){}}class ko{constructor(n){this.value=n,this.type="AppCheck",this.headers=new Map,n&&n.length>0&&this.headers.set("x-firebase-appcheck",this.value)}}class wo{constructor(n){this.A=n,this.forceRefresh=!1,this.appCheck=null,this.R=null}start(n,e){const t=n=>{null!=n.error&&io("FirebaseAppCheckTokenProvider",`Error getting App Check token; using placeholder token instead. Error: ${n.error.message}`);const t=n.token!==this.R;return this.R=n.token,io("FirebaseAppCheckTokenProvider",`Received ${t?"new":"existing"} token.`),t?e(n.token):Promise.resolve()};this.o=e=>{n.enqueueRetryable((()=>t(e)))};const a=n=>{io("FirebaseAppCheckTokenProvider","AppCheck detected"),this.appCheck=n,this.appCheck.addTokenListener(this.o)};this.A.onInit((n=>a(n))),setTimeout((()=>{if(!this.appCheck){const n=this.A.getImmediate({optional:!0});n?a(n):io("FirebaseAppCheckTokenProvider","AppCheck not yet detected")}}),0)}getToken(){const n=this.forceRefresh;return this.forceRefresh=!1,this.appCheck?this.appCheck.getToken(n).then((n=>n?(co("string"==typeof n.token),this.R=n.token,new ko(n.token)):null)):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.appCheck&&this.appCheck.removeTokenListener(this.o)}}function Co(n){const e="undefined"!=typeof self&&(self.crypto||self.msCrypto),t=new Uint8Array(n);if(e&&"function"==typeof e.getRandomValues)e.getRandomValues(t);else for(let e=0;ee?1:0}function To(n,e,t){return n.length===e.length&&n.every(((n,a)=>t(n,e[a])))}class Io{constructor(n,e){if(this.seconds=n,this.nanoseconds=e,e<0)throw new fo(ho.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+e);if(e>=1e9)throw new fo(ho.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+e);if(n<-62135596800)throw new fo(ho.INVALID_ARGUMENT,"Timestamp seconds out of range: "+n);if(n>=253402300800)throw new fo(ho.INVALID_ARGUMENT,"Timestamp seconds out of range: "+n)}static now(){return Io.fromMillis(Date.now())}static fromDate(n){return Io.fromMillis(n.getTime())}static fromMillis(n){const e=Math.floor(n/1e3),t=Math.floor(1e6*(n-1e3*e));return new Io(e,t)}toDate(){return new Date(this.toMillis())}toMillis(){return 1e3*this.seconds+this.nanoseconds/1e6}_compareTo(n){return this.seconds===n.seconds?Ao(this.nanoseconds,n.nanoseconds):Ao(this.seconds,n.seconds)}isEqual(n){return n.seconds===this.seconds&&n.nanoseconds===this.nanoseconds}toString(){return"Timestamp(seconds="+this.seconds+", nanoseconds="+this.nanoseconds+")"}toJSON(){return{seconds:this.seconds,nanoseconds:this.nanoseconds}}valueOf(){const n=this.seconds- -62135596800;return String(n).padStart(12,"0")+"."+String(this.nanoseconds).padStart(9,"0")}}class Eo{constructor(n){this.timestamp=n}static fromTimestamp(n){return new Eo(n)}static min(){return new Eo(new Io(0,0))}static max(){return new Eo(new Io(253402300799,999999999))}compareTo(n){return this.timestamp._compareTo(n.timestamp)}isEqual(n){return this.timestamp.isEqual(n.timestamp)}toMicroseconds(){return 1e6*this.timestamp.seconds+this.timestamp.nanoseconds/1e3}toString(){return"SnapshotVersion("+this.timestamp.toString()+")"}toTimestamp(){return this.timestamp}}class Mo{constructor(n,e,t){void 0===e?e=0:e>n.length&&lo(),void 0===t?t=n.length-e:t>n.length-e&&lo(),this.segments=n,this.offset=e,this.len=t}get length(){return this.len}isEqual(n){return 0===Mo.comparator(this,n)}child(n){const e=this.segments.slice(this.offset,this.limit());return n instanceof Mo?n.forEach((n=>{e.push(n)})):e.push(n),this.construct(e)}limit(){return this.offset+this.length}popFirst(n){return n=void 0===n?1:n,this.construct(this.segments,this.offset+n,this.length-n)}popLast(){return this.construct(this.segments,this.offset,this.length-1)}firstSegment(){return this.segments[this.offset]}lastSegment(){return this.get(this.length-1)}get(n){return this.segments[this.offset+n]}isEmpty(){return 0===this.length}isPrefixOf(n){if(n.lengthi)return 1}return n.lengthe.length?1:0}}class Po extends Mo{construct(n,e,t){return new Po(n,e,t)}canonicalString(){return this.toArray().join("/")}toString(){return this.canonicalString()}toUriEncodedString(){return this.toArray().map(encodeURIComponent).join("/")}static fromString(...n){const e=[];for(const t of n){if(t.indexOf("//")>=0)throw new fo(ho.INVALID_ARGUMENT,`Invalid segment (${t}). Paths must not contain // in them.`);e.push(...t.split("/").filter((n=>n.length>0)))}return new Po(e)}static emptyPath(){return new Po([])}}const _o=/^[_a-zA-Z][_a-zA-Z0-9]*$/;class Ro extends Mo{construct(n,e,t){return new Ro(n,e,t)}static isValidIdentifier(n){return _o.test(n)}canonicalString(){return this.toArray().map((n=>(n=n.replace(/\\/g,"\\\\").replace(/`/g,"\\`"),Ro.isValidIdentifier(n)||(n="`"+n+"`"),n))).join(".")}toString(){return this.canonicalString()}isKeyField(){return 1===this.length&&"__name__"===this.get(0)}static keyField(){return new Ro(["__name__"])}static fromServerFormat(n){const e=[];let t="",a=0;const i=()=>{if(0===t.length)throw new fo(ho.INVALID_ARGUMENT,`Invalid field path (${n}). Paths must not be empty, begin with '.', end with '.', or contain '..'`);e.push(t),t=""};let r=!1;for(;a=2&&this.path.get(this.path.length-2)===n}getCollectionGroup(){return this.path.get(this.path.length-2)}getCollectionPath(){return this.path.popLast()}isEqual(n){return null!==n&&0===Po.comparator(this.path,n.path)}toString(){return this.path.toString()}static comparator(n,e){return Po.comparator(n.path,e.path)}static isDocumentKey(n){return n.length%2==0}static fromSegments(n){return new Do(new Po(n.slice()))}}function Lo(n){return new No(n.readTime,n.key,-1)}class No{constructor(n,e,t){this.readTime=n,this.documentKey=e,this.largestBatchId=t}static min(){return new No(Eo.min(),Do.empty(),-1)}static max(){return new No(Eo.max(),Do.empty(),-1)}}function Bo(n,e){let t=n.readTime.compareTo(e.readTime);return 0!==t?t:(t=Do.comparator(n.documentKey,e.documentKey),0!==t?t:Ao(n.largestBatchId,e.largestBatchId))}const zo="The current tab is not in the required state to perform this operation. It might be necessary to refresh the browser tab.";class Oo{constructor(){this.onCommittedListeners=[]}addOnCommittedListener(n){this.onCommittedListeners.push(n)}raiseOnCommittedEvent(){this.onCommittedListeners.forEach((n=>n()))}}async function Fo(n){if(n.code!==ho.FAILED_PRECONDITION||n.message!==zo)throw n;io("LocalStore","Unexpectedly lost primary lease")}class Go{constructor(n){this.nextCallback=null,this.catchCallback=null,this.result=void 0,this.error=void 0,this.isDone=!1,this.callbackAttached=!1,n((n=>{this.isDone=!0,this.result=n,this.nextCallback&&this.nextCallback(n)}),(n=>{this.isDone=!0,this.error=n,this.catchCallback&&this.catchCallback(n)}))}catch(n){return this.next(void 0,n)}next(n,e){return this.callbackAttached&&lo(),this.callbackAttached=!0,this.isDone?this.error?this.wrapFailure(e,this.error):this.wrapSuccess(n,this.result):new Go(((t,a)=>{this.nextCallback=e=>{this.wrapSuccess(n,e).next(t,a)},this.catchCallback=n=>{this.wrapFailure(e,n).next(t,a)}}))}toPromise(){return new Promise(((n,e)=>{this.next(n,e)}))}wrapUserFunction(n){try{const e=n();return e instanceof Go?e:Go.resolve(e)}catch(n){return Go.reject(n)}}wrapSuccess(n,e){return n?this.wrapUserFunction((()=>n(e))):Go.resolve(e)}wrapFailure(n,e){return n?this.wrapUserFunction((()=>n(e))):Go.reject(e)}static resolve(n){return new Go(((e,t)=>{e(n)}))}static reject(n){return new Go(((e,t)=>{t(n)}))}static waitFor(n){return new Go(((e,t)=>{let a=0,i=0,r=!1;n.forEach((n=>{++a,n.next((()=>{++i,r&&i===a&&e()}),(n=>t(n)))})),r=!0,i===a&&e()}))}static or(n){let e=Go.resolve(!1);for(const t of n)e=e.next((n=>n?Go.resolve(n):t()));return e}static forEach(n,e){const t=[];return n.forEach(((n,a)=>{t.push(e.call(this,n,a))})),this.waitFor(t)}static mapArray(n,e){return new Go(((t,a)=>{const i=n.length,r=new Array(i);let o=0;for(let s=0;s{r[l]=n,++o,o===i&&t(r)}),(n=>a(n)))}}))}static doWhile(n,e){return new Go(((t,a)=>{const i=()=>{!0===n()?e().next((()=>{i()}),a):t()};i()}))}}function jo(n){return"IndexedDbTransactionError"===n.name}class Uo{constructor(n,e){this.previousValue=n,e&&(e.sequenceNumberHandler=n=>this.ie(n),this.se=n=>e.writeSequenceNumber(n))}ie(n){return this.previousValue=Math.max(n,this.previousValue),this.previousValue}next(){const n=++this.previousValue;return this.se&&this.se(n),n}}function Ho(n){return null==n}function Vo(n){return 0===n&&1/n==-1/0}Uo.oe=-1;function Wo(n){let e=0;for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&e++;return e}function Ko(n,e){for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&e(t,n[t])}function qo(n){for(const e in n)if(Object.prototype.hasOwnProperty.call(n,e))return!1;return!0}class Jo{constructor(n,e){this.comparator=n,this.root=e||Yo.EMPTY}insert(n,e){return new Jo(this.comparator,this.root.insert(n,e,this.comparator).copy(null,null,Yo.BLACK,null,null))}remove(n){return new Jo(this.comparator,this.root.remove(n,this.comparator).copy(null,null,Yo.BLACK,null,null))}get(n){let e=this.root;for(;!e.isEmpty();){const t=this.comparator(n,e.key);if(0===t)return e.value;t<0?e=e.left:t>0&&(e=e.right)}return null}indexOf(n){let e=0,t=this.root;for(;!t.isEmpty();){const a=this.comparator(n,t.key);if(0===a)return e+t.left.size;a<0?t=t.left:(e+=t.left.size+1,t=t.right)}return-1}isEmpty(){return this.root.isEmpty()}get size(){return this.root.size}minKey(){return this.root.minKey()}maxKey(){return this.root.maxKey()}inorderTraversal(n){return this.root.inorderTraversal(n)}forEach(n){this.inorderTraversal(((e,t)=>(n(e,t),!1)))}toString(){const n=[];return this.inorderTraversal(((e,t)=>(n.push(`${e}:${t}`),!1))),`{${n.join(", ")}}`}reverseTraversal(n){return this.root.reverseTraversal(n)}getIterator(){return new $o(this.root,null,this.comparator,!1)}getIteratorFrom(n){return new $o(this.root,n,this.comparator,!1)}getReverseIterator(){return new $o(this.root,null,this.comparator,!0)}getReverseIteratorFrom(n){return new $o(this.root,n,this.comparator,!0)}}class $o{constructor(n,e,t,a){this.isReverse=a,this.nodeStack=[];let i=1;for(;!n.isEmpty();)if(i=e?t(n.key,e):1,e&&a&&(i*=-1),i<0)n=this.isReverse?n.left:n.right;else{if(0===i){this.nodeStack.push(n);break}this.nodeStack.push(n),n=this.isReverse?n.right:n.left}}getNext(){let n=this.nodeStack.pop();const e={key:n.key,value:n.value};if(this.isReverse)for(n=n.left;!n.isEmpty();)this.nodeStack.push(n),n=n.right;else for(n=n.right;!n.isEmpty();)this.nodeStack.push(n),n=n.left;return e}hasNext(){return this.nodeStack.length>0}peek(){if(0===this.nodeStack.length)return null;const n=this.nodeStack[this.nodeStack.length-1];return{key:n.key,value:n.value}}}class Yo{constructor(n,e,t,a,i){this.key=n,this.value=e,this.color=null!=t?t:Yo.RED,this.left=null!=a?a:Yo.EMPTY,this.right=null!=i?i:Yo.EMPTY,this.size=this.left.size+1+this.right.size}copy(n,e,t,a,i){return new Yo(null!=n?n:this.key,null!=e?e:this.value,null!=t?t:this.color,null!=a?a:this.left,null!=i?i:this.right)}isEmpty(){return!1}inorderTraversal(n){return this.left.inorderTraversal(n)||n(this.key,this.value)||this.right.inorderTraversal(n)}reverseTraversal(n){return this.right.reverseTraversal(n)||n(this.key,this.value)||this.left.reverseTraversal(n)}min(){return this.left.isEmpty()?this:this.left.min()}minKey(){return this.min().key}maxKey(){return this.right.isEmpty()?this.key:this.right.maxKey()}insert(n,e,t){let a=this;const i=t(n,a.key);return a=i<0?a.copy(null,null,null,a.left.insert(n,e,t),null):0===i?a.copy(null,e,null,null,null):a.copy(null,null,null,null,a.right.insert(n,e,t)),a.fixUp()}removeMin(){if(this.left.isEmpty())return Yo.EMPTY;let n=this;return n.left.isRed()||n.left.left.isRed()||(n=n.moveRedLeft()),n=n.copy(null,null,null,n.left.removeMin(),null),n.fixUp()}remove(n,e){let t,a=this;if(e(n,a.key)<0)a.left.isEmpty()||a.left.isRed()||a.left.left.isRed()||(a=a.moveRedLeft()),a=a.copy(null,null,null,a.left.remove(n,e),null);else{if(a.left.isRed()&&(a=a.rotateRight()),a.right.isEmpty()||a.right.isRed()||a.right.left.isRed()||(a=a.moveRedRight()),0===e(n,a.key)){if(a.right.isEmpty())return Yo.EMPTY;t=a.right.min(),a=a.copy(t.key,t.value,null,null,a.right.removeMin())}a=a.copy(null,null,null,null,a.right.remove(n,e))}return a.fixUp()}isRed(){return this.color}fixUp(){let n=this;return n.right.isRed()&&!n.left.isRed()&&(n=n.rotateLeft()),n.left.isRed()&&n.left.left.isRed()&&(n=n.rotateRight()),n.left.isRed()&&n.right.isRed()&&(n=n.colorFlip()),n}moveRedLeft(){let n=this.colorFlip();return n.right.left.isRed()&&(n=n.copy(null,null,null,null,n.right.rotateRight()),n=n.rotateLeft(),n=n.colorFlip()),n}moveRedRight(){let n=this.colorFlip();return n.left.left.isRed()&&(n=n.rotateRight(),n=n.colorFlip()),n}rotateLeft(){const n=this.copy(null,null,Yo.RED,null,this.right.left);return this.right.copy(null,null,this.color,n,null)}rotateRight(){const n=this.copy(null,null,Yo.RED,this.left.right,null);return this.left.copy(null,null,this.color,null,n)}colorFlip(){const n=this.left.copy(null,null,!this.left.color,null,null),e=this.right.copy(null,null,!this.right.color,null,null);return this.copy(null,null,!this.color,n,e)}checkMaxDepth(){const n=this.check();return Math.pow(2,n)<=this.size+1}check(){if(this.isRed()&&this.left.isRed())throw lo();if(this.right.isRed())throw lo();const n=this.left.check();if(n!==this.right.check())throw lo();return n+(this.isRed()?0:1)}}Yo.EMPTY=null,Yo.RED=!0,Yo.BLACK=!1,Yo.EMPTY=new class{constructor(){this.size=0}get key(){throw lo()}get value(){throw lo()}get color(){throw lo()}get left(){throw lo()}get right(){throw lo()}copy(n,e,t,a,i){return this}insert(n,e,t){return new Yo(n,e)}remove(n,e){return this}isEmpty(){return!0}inorderTraversal(n){return!1}reverseTraversal(n){return!1}minKey(){return null}maxKey(){return null}isRed(){return!1}checkMaxDepth(){return!0}check(){return 0}};class Qo{constructor(n){this.comparator=n,this.data=new Jo(this.comparator)}has(n){return null!==this.data.get(n)}first(){return this.data.minKey()}last(){return this.data.maxKey()}get size(){return this.data.size}indexOf(n){return this.data.indexOf(n)}forEach(n){this.data.inorderTraversal(((e,t)=>(n(e),!1)))}forEachInRange(n,e){const t=this.data.getIteratorFrom(n[0]);for(;t.hasNext();){const a=t.getNext();if(this.comparator(a.key,n[1])>=0)return;e(a.key)}}forEachWhile(n,e){let t;for(t=void 0!==e?this.data.getIteratorFrom(e):this.data.getIterator();t.hasNext();)if(!n(t.getNext().key))return}firstAfterOrEqual(n){const e=this.data.getIteratorFrom(n);return e.hasNext()?e.getNext().key:null}getIterator(){return new Xo(this.data.getIterator())}getIteratorFrom(n){return new Xo(this.data.getIteratorFrom(n))}add(n){return this.copy(this.data.remove(n).insert(n,!0))}delete(n){return this.has(n)?this.copy(this.data.remove(n)):this}isEmpty(){return this.data.isEmpty()}unionWith(n){let e=this;return e.size{e=e.add(n)})),e}isEqual(n){if(!(n instanceof Qo))return!1;if(this.size!==n.size)return!1;const e=this.data.getIterator(),t=n.data.getIterator();for(;e.hasNext();){const n=e.getNext().key,a=t.getNext().key;if(0!==this.comparator(n,a))return!1}return!0}toArray(){const n=[];return this.forEach((e=>{n.push(e)})),n}toString(){const n=[];return this.forEach((e=>n.push(e))),"SortedSet("+n.toString()+")"}copy(n){const e=new Qo(this.comparator);return e.data=n,e}}class Xo{constructor(n){this.iter=n}getNext(){return this.iter.getNext().key}hasNext(){return this.iter.hasNext()}}class Zo{constructor(n){this.fields=n,n.sort(Ro.comparator)}static empty(){return new Zo([])}unionWith(n){let e=new Qo(Ro.comparator);for(const n of this.fields)e=e.add(n);for(const t of n)e=e.add(t);return new Zo(e.toArray())}covers(n){for(const e of this.fields)if(e.isPrefixOf(n))return!0;return!1}isEqual(n){return To(this.fields,n.fields,((n,e)=>n.isEqual(e)))}}class ns extends Error{constructor(){super(...arguments),this.name="Base64DecodeError"}}class es{constructor(n){this.binaryString=n}static fromBase64String(n){const e=function(n){try{return atob(n)}catch(n){throw"undefined"!=typeof DOMException&&n instanceof DOMException?new ns("Invalid base64 string: "+n):n}}(n);return new es(e)}static fromUint8Array(n){const e=function(n){let e="";for(let t=0;tnfs(n,e)))}function ps(n,e){if(n===e)return 0;const t=hs(n),a=hs(e);if(t!==a)return Ao(t,a);switch(t){case 0:case 9007199254740991:return 0;case 1:return Ao(n.booleanValue,e.booleanValue);case 2:return function(n,e){const t=is(n.integerValue||n.doubleValue),a=is(e.integerValue||e.doubleValue);return ta?1:t===a?0:isNaN(t)?isNaN(a)?0:-1:1}(n,e);case 3:return gs(n.timestampValue,e.timestampValue);case 4:return gs(ls(n),ls(e));case 5:return Ao(n.stringValue,e.stringValue);case 6:return function(n,e){const t=rs(n),a=rs(e);return t.compareTo(a)}(n.bytesValue,e.bytesValue);case 7:return function(n,e){const t=n.split("/"),a=e.split("/");for(let n=0;ne.mapValue.fields[n]=Ss(t))),e}if(n.arrayValue){const e={arrayValue:{values:[]}};for(let t=0;t<(n.arrayValue.values||[]).length;++t)e.arrayValue.values[t]=Ss(n.arrayValue.values[t]);return e}return Object.assign({},n)}function As(n){return"__max__"===(((n.mapValue||{}).fields||{}).__type__||{}).stringValue}class Ts{constructor(n){this.value=n}static empty(){return new Ts({mapValue:{}})}field(n){if(n.isEmpty())return this.value;{let e=this.value;for(let t=0;t{if(!e.isImmediateParentOf(i)){const n=this.getFieldsMap(e);this.applyChanges(n,t,a),t={},a=[],e=i.popLast()}n?t[i.lastSegment()]=Ss(n):a.push(i.lastSegment())}));const i=this.getFieldsMap(e);this.applyChanges(i,t,a)}delete(n){const e=this.field(n.popLast());ws(e)&&e.mapValue.fields&&delete e.mapValue.fields[n.lastSegment()]}isEqual(n){return fs(this.value,n.value)}getFieldsMap(n){let e=this.value;e.mapValue.fields||(e.mapValue={fields:{}});for(let t=0;tn[e]=t));for(const e of t)delete n[e]}clone(){return new Ts(Ss(this.value))}}function Is(n){const e=[];return Ko(n.fields,((n,t)=>{const a=new Ro([n]);if(ws(t)){const n=Is(t.mapValue).fields;if(0===n.length)e.push(a);else for(const t of n)e.push(a.child(t))}else e.push(a)})),new Zo(e)}class Es{constructor(n,e,t,a,i,r,o){this.key=n,this.documentType=e,this.version=t,this.readTime=a,this.createTime=i,this.data=r,this.documentState=o}static newInvalidDocument(n){return new Es(n,0,Eo.min(),Eo.min(),Eo.min(),Ts.empty(),0)}static newFoundDocument(n,e,t,a){return new Es(n,1,e,Eo.min(),t,a,0)}static newNoDocument(n,e){return new Es(n,2,e,Eo.min(),Eo.min(),Ts.empty(),0)}static newUnknownDocument(n,e){return new Es(n,3,e,Eo.min(),Eo.min(),Ts.empty(),2)}convertToFoundDocument(n,e){return!this.createTime.isEqual(Eo.min())||2!==this.documentType&&0!==this.documentType||(this.createTime=n),this.version=n,this.documentType=1,this.data=e,this.documentState=0,this}convertToNoDocument(n){return this.version=n,this.documentType=2,this.data=Ts.empty(),this.documentState=0,this}convertToUnknownDocument(n){return this.version=n,this.documentType=3,this.data=Ts.empty(),this.documentState=2,this}setHasCommittedMutations(){return this.documentState=2,this}setHasLocalMutations(){return this.documentState=1,this.version=Eo.min(),this}setReadTime(n){return this.readTime=n,this}get hasLocalMutations(){return 1===this.documentState}get hasCommittedMutations(){return 2===this.documentState}get hasPendingWrites(){return this.hasLocalMutations||this.hasCommittedMutations}isValidDocument(){return 0!==this.documentType}isFoundDocument(){return 1===this.documentType}isNoDocument(){return 2===this.documentType}isUnknownDocument(){return 3===this.documentType}isEqual(n){return n instanceof Es&&this.key.isEqual(n.key)&&this.version.isEqual(n.version)&&this.documentType===n.documentType&&this.documentState===n.documentState&&this.data.isEqual(n.data)}mutableCopy(){return new Es(this.key,this.documentType,this.version,this.readTime,this.createTime,this.data.clone(),this.documentState)}toString(){return`Document(${this.key}, ${this.version}, ${JSON.stringify(this.data.value)}, {createTime: ${this.createTime}}), {documentType: ${this.documentType}}), {documentState: ${this.documentState}})`}}class Ms{constructor(n,e){this.position=n,this.inclusive=e}}function Ps(n,e,t){let a=0;for(let i=0;i":return n>0;case">=":return n>=0;default:return lo()}}isInequality(){return["<","<=",">",">=","!=","not-in"].indexOf(this.op)>=0}getFlattenedFilters(){return[this]}getFilters(){return[this]}}class Bs extends Ls{constructor(n,e){super(),this.filters=n,this.op=e,this.ae=null}static create(n,e){return new Bs(n,e)}matches(n){return zs(this)?void 0===this.filters.find((e=>!e.matches(n))):void 0!==this.filters.find((e=>e.matches(n)))}getFlattenedFilters(){return null!==this.ae||(this.ae=this.filters.reduce(((n,e)=>n.concat(e.getFlattenedFilters())),[])),this.ae}getFilters(){return Object.assign([],this.filters)}}function zs(n){return"and"===n.op}function Os(n){return function(n){for(const e of n.filters)if(e instanceof Bs)return!1;return!0}(n)&&zs(n)}function Fs(n){if(n instanceof Ns)return n.field.canonicalString()+n.op.toString()+bs(n.value);if(Os(n))return n.filters.map((n=>Fs(n))).join(",");{const e=n.filters.map((n=>Fs(n))).join(",");return`${n.op}(${e})`}}function Gs(n,e){return n instanceof Ns?function(n,e){return e instanceof Ns&&n.op===e.op&&n.field.isEqual(e.field)&&fs(n.value,e.value)}(n,e):n instanceof Bs?function(n,e){return e instanceof Bs&&n.op===e.op&&n.filters.length===e.filters.length&&n.filters.reduce(((n,t,a)=>n&&Gs(t,e.filters[a])),!0)}(n,e):void lo()}function js(n){return n instanceof Ns?function(n){return`${n.field.canonicalString()} ${n.op} ${bs(n.value)}`}(n):n instanceof Bs?function(n){return n.op.toString()+" {"+n.getFilters().map(js).join(" ,")+"}"}(n):"Filter"}class Us extends Ns{constructor(n,e,t){super(n,e,t),this.key=Do.fromName(t.referenceValue)}matches(n){const e=Do.comparator(n.key,this.key);return this.matchesComparison(e)}}class Hs extends Ns{constructor(n,e){super(n,"in",e),this.keys=Ws(0,e)}matches(n){return this.keys.some((e=>e.isEqual(n.key)))}}class Vs extends Ns{constructor(n,e){super(n,"not-in",e),this.keys=Ws(0,e)}matches(n){return!this.keys.some((e=>e.isEqual(n.key)))}}function Ws(n,e){var t;return((null===(t=e.arrayValue)||void 0===t?void 0:t.values)||[]).map((n=>Do.fromName(n.referenceValue)))}class Ks extends Ns{constructor(n,e){super(n,"array-contains",e)}matches(n){const e=n.data.field(this.field);return ks(e)&&ms(e.arrayValue,this.value)}}class qs extends Ns{constructor(n,e){super(n,"in",e)}matches(n){const e=n.data.field(this.field);return null!==e&&ms(this.value.arrayValue,e)}}class Js extends Ns{constructor(n,e){super(n,"not-in",e)}matches(n){if(ms(this.value.arrayValue,{nullValue:"NULL_VALUE"}))return!1;const e=n.data.field(this.field);return null!==e&&!ms(this.value.arrayValue,e)}}class $s extends Ns{constructor(n,e){super(n,"array-contains-any",e)}matches(n){const e=n.data.field(this.field);return!(!ks(e)||!e.arrayValue.values)&&e.arrayValue.values.some((n=>ms(this.value.arrayValue,n)))}}class Ys{constructor(n,e=null,t=[],a=[],i=null,r=null,o=null){this.path=n,this.collectionGroup=e,this.orderBy=t,this.filters=a,this.limit=i,this.startAt=r,this.endAt=o,this.ue=null}}function Qs(n,e=null,t=[],a=[],i=null,r=null,o=null){return new Ys(n,e,t,a,i,r,o)}function Xs(n){const e=uo(n);if(null===e.ue){let n=e.path.canonicalString();null!==e.collectionGroup&&(n+="|cg:"+e.collectionGroup),n+="|f:",n+=e.filters.map((n=>Fs(n))).join(","),n+="|ob:",n+=e.orderBy.map((n=>function(n){return n.field.canonicalString()+n.dir}(n))).join(","),Ho(e.limit)||(n+="|l:",n+=e.limit),e.startAt&&(n+="|lb:",n+=e.startAt.inclusive?"b:":"a:",n+=e.startAt.position.map((n=>bs(n))).join(",")),e.endAt&&(n+="|ub:",n+=e.endAt.inclusive?"a:":"b:",n+=e.endAt.position.map((n=>bs(n))).join(",")),e.ue=n}return e.ue}function Zs(n,e){if(n.limit!==e.limit)return!1;if(n.orderBy.length!==e.orderBy.length)return!1;for(let t=0;t0?e.explicitOrderBy[e.explicitOrderBy.length-1].dir:"asc",a=function(n){let e=new Qo(Ro.comparator);return n.filters.forEach((n=>{n.getFlattenedFilters().forEach((n=>{n.isInequality()&&(e=e.add(n.field))}))})),e}(e);a.forEach((a=>{n.has(a.canonicalString())||a.isKeyField()||e.ce.push(new Rs(a,t))})),n.has(Ro.keyField().canonicalString())||e.ce.push(new Rs(Ro.keyField(),t))}return e.ce}function al(n){const e=uo(n);return e.le||(e.le=function(n,e){if("F"===n.limitType)return Qs(n.path,n.collectionGroup,e,n.filters,n.limit,n.startAt,n.endAt);{e=e.map((n=>{const e="desc"===n.dir?"asc":"desc";return new Rs(n.field,e)}));const t=n.endAt?new Ms(n.endAt.position,n.endAt.inclusive):null,a=n.startAt?new Ms(n.startAt.position,n.startAt.inclusive):null;return Qs(n.path,n.collectionGroup,e,n.filters,n.limit,t,a)}}(e,tl(n))),e.le}function il(n,e,t){return new nl(n.path,n.collectionGroup,n.explicitOrderBy.slice(),n.filters.slice(),e,t,n.startAt,n.endAt)}function rl(n,e){return Zs(al(n),al(e))&&n.limitType===e.limitType}function ol(n){return`${Xs(al(n))}|lt:${n.limitType}`}function sl(n){return`Query(target=${function(n){let e=n.path.canonicalString();return null!==n.collectionGroup&&(e+=" collectionGroup="+n.collectionGroup),n.filters.length>0&&(e+=`, filters: [${n.filters.map((n=>js(n))).join(", ")}]`),Ho(n.limit)||(e+=", limit: "+n.limit),n.orderBy.length>0&&(e+=`, orderBy: [${n.orderBy.map((n=>function(n){return`${n.field.canonicalString()} (${n.dir})`}(n))).join(", ")}]`),n.startAt&&(e+=", startAt: ",e+=n.startAt.inclusive?"b:":"a:",e+=n.startAt.position.map((n=>bs(n))).join(",")),n.endAt&&(e+=", endAt: ",e+=n.endAt.inclusive?"a:":"b:",e+=n.endAt.position.map((n=>bs(n))).join(",")),`Target(${e})`}(al(n))}; limitType=${n.limitType})`}function ll(n,e){return e.isFoundDocument()&&function(n,e){const t=e.key.path;return null!==n.collectionGroup?e.key.hasCollectionId(n.collectionGroup)&&n.path.isPrefixOf(t):Do.isDocumentKey(n.path)?n.path.isEqual(t):n.path.isImmediateParentOf(t)}(n,e)&&function(n,e){for(const t of tl(n))if(!t.field.isKeyField()&&null===e.data.field(t.field))return!1;return!0}(n,e)&&function(n,e){for(const t of n.filters)if(!t.matches(e))return!1;return!0}(n,e)&&function(n,e){return!(n.startAt&&!function(n,e,t){const a=Ps(n,e,t);return n.inclusive?a<=0:a<0}(n.startAt,tl(n),e)||n.endAt&&!function(n,e,t){const a=Ps(n,e,t);return n.inclusive?a>=0:a>0}(n.endAt,tl(n),e))}(n,e)}function cl(n,e,t){const a=n.field.isKeyField()?Do.comparator(e.key,t.key):function(n,e,t){const a=e.data.field(n),i=t.data.field(n);return null!==a&&null!==i?ps(a,i):lo()}(n.field,e,t);switch(n.dir){case"asc":return a;case"desc":return-1*a;default:return lo()}}class ul{constructor(n,e){this.mapKeyFn=n,this.equalsFn=e,this.inner={},this.innerSize=0}get(n){const e=this.mapKeyFn(n),t=this.inner[e];if(void 0!==t)for(const[e,a]of t)if(this.equalsFn(e,n))return a}has(n){return void 0!==this.get(n)}set(n,e){const t=this.mapKeyFn(n),a=this.inner[t];if(void 0===a)return this.inner[t]=[[n,e]],void this.innerSize++;for(let t=0;t{for(const[e,a]of t)n(e,a)}))}isEmpty(){return qo(this.inner)}size(){return this.innerSize}}const dl=new Jo(Do.comparator);function hl(){return dl}const fl=new Jo(Do.comparator);function ml(...n){let e=fl;for(const t of n)e=e.insert(t.key,t);return e}function pl(n){let e=fl;return n.forEach(((n,t)=>e=e.insert(n,t.overlayedDocument))),e}function gl(){return bl()}function yl(){return bl()}function bl(){return new ul((n=>n.toString()),((n,e)=>n.isEqual(e)))}const vl=new Jo(Do.comparator),xl=new Qo(Do.comparator);function kl(...n){let e=xl;for(const t of n)e=e.add(t);return e}const wl=new Qo(Ao);function Cl(n,e){if(n.useProto3Json){if(isNaN(e))return{doubleValue:"NaN"};if(e===1/0)return{doubleValue:"Infinity"};if(e===-1/0)return{doubleValue:"-Infinity"}}return{doubleValue:Vo(e)?"-0":e}}function Sl(n){return{integerValue:""+n}}function Al(n,e){return function(n){return"number"==typeof n&&Number.isInteger(n)&&!Vo(n)&&n<=Number.MAX_SAFE_INTEGER&&n>=Number.MIN_SAFE_INTEGER}(e)?Sl(e):Cl(n,e)}class Tl{constructor(){this._=void 0}}function Il(n,e,t){return n instanceof Pl?function(n,e){const t={fields:{__type__:{stringValue:"server_timestamp"},__local_write_time__:{timestampValue:{seconds:n.seconds,nanos:n.nanoseconds}}}};return e&&os(e)&&(e=ss(e)),e&&(t.fields.__previous_value__=e),{mapValue:t}}(t,e):n instanceof _l?Rl(n,e):n instanceof Dl?Ll(n,e):function(n,e){const t=Ml(n,e),a=Bl(t)+Bl(n.Pe);return xs(t)&&xs(n.Pe)?Sl(a):Cl(n.serializer,a)}(n,e)}function El(n,e,t){return n instanceof _l?Rl(n,e):n instanceof Dl?Ll(n,e):t}function Ml(n,e){return n instanceof Nl?function(n){return xs(n)||function(n){return!!n&&"doubleValue"in n}(n)}(e)?e:{integerValue:0}:null}class Pl extends Tl{}class _l extends Tl{constructor(n){super(),this.elements=n}}function Rl(n,e){const t=zl(e);for(const e of n.elements)t.some((n=>fs(n,e)))||t.push(e);return{arrayValue:{values:t}}}class Dl extends Tl{constructor(n){super(),this.elements=n}}function Ll(n,e){let t=zl(e);for(const e of n.elements)t=t.filter((n=>!fs(n,e)));return{arrayValue:{values:t}}}class Nl extends Tl{constructor(n,e){super(),this.serializer=n,this.Pe=e}}function Bl(n){return is(n.integerValue||n.doubleValue)}function zl(n){return ks(n)&&n.arrayValue.values?n.arrayValue.values.slice():[]}class Ol{constructor(n,e){this.version=n,this.transformResults=e}}class Fl{constructor(n,e){this.updateTime=n,this.exists=e}static none(){return new Fl}static exists(n){return new Fl(void 0,n)}static updateTime(n){return new Fl(n)}get isNone(){return void 0===this.updateTime&&void 0===this.exists}isEqual(n){return this.exists===n.exists&&(this.updateTime?!!n.updateTime&&this.updateTime.isEqual(n.updateTime):!n.updateTime)}}function Gl(n,e){return void 0!==n.updateTime?e.isFoundDocument()&&e.version.isEqual(n.updateTime):void 0===n.exists||n.exists===e.isFoundDocument()}class jl{}function Ul(n,e){if(!n.hasLocalMutations||e&&0===e.fields.length)return null;if(null===e)return n.isNoDocument()?new Xl(n.key,Fl.none()):new ql(n.key,n.data,Fl.none());{const t=n.data,a=Ts.empty();let i=new Qo(Ro.comparator);for(let n of e.fields)if(!i.has(n)){let e=t.field(n);null===e&&n.length>1&&(n=n.popLast(),e=t.field(n)),null===e?a.delete(n):a.set(n,e),i=i.add(n)}return new Jl(n.key,a,new Zo(i.toArray()),Fl.none())}}function Hl(n,e,t){n instanceof ql?function(n,e,t){const a=n.value.clone(),i=Yl(n.fieldTransforms,e,t.transformResults);a.setAll(i),e.convertToFoundDocument(t.version,a).setHasCommittedMutations()}(n,e,t):n instanceof Jl?function(n,e,t){if(!Gl(n.precondition,e))return void e.convertToUnknownDocument(t.version);const a=Yl(n.fieldTransforms,e,t.transformResults),i=e.data;i.setAll($l(n)),i.setAll(a),e.convertToFoundDocument(t.version,i).setHasCommittedMutations()}(n,e,t):function(n,e,t){e.convertToNoDocument(t.version).setHasCommittedMutations()}(0,e,t)}function Vl(n,e,t,a){return n instanceof ql?function(n,e,t,a){if(!Gl(n.precondition,e))return t;const i=n.value.clone(),r=Ql(n.fieldTransforms,a,e);return i.setAll(r),e.convertToFoundDocument(e.version,i).setHasLocalMutations(),null}(n,e,t,a):n instanceof Jl?function(n,e,t,a){if(!Gl(n.precondition,e))return t;const i=Ql(n.fieldTransforms,a,e),r=e.data;return r.setAll($l(n)),r.setAll(i),e.convertToFoundDocument(e.version,r).setHasLocalMutations(),null===t?null:t.unionWith(n.fieldMask.fields).unionWith(n.fieldTransforms.map((n=>n.field)))}(n,e,t,a):function(n,e,t){return Gl(n.precondition,e)?(e.convertToNoDocument(e.version).setHasLocalMutations(),null):t}(n,e,t)}function Wl(n,e){let t=null;for(const a of n.fieldTransforms){const n=e.data.field(a.field),i=Ml(a.transform,n||null);null!=i&&(null===t&&(t=Ts.empty()),t.set(a.field,i))}return t||null}function Kl(n,e){return n.type===e.type&&!!n.key.isEqual(e.key)&&!!n.precondition.isEqual(e.precondition)&&!!function(n,e){return void 0===n&&void 0===e||!(!n||!e)&&To(n,e,((n,e)=>function(n,e){return n.field.isEqual(e.field)&&function(n,e){return n instanceof _l&&e instanceof _l||n instanceof Dl&&e instanceof Dl?To(n.elements,e.elements,fs):n instanceof Nl&&e instanceof Nl?fs(n.Pe,e.Pe):n instanceof Pl&&e instanceof Pl}(n.transform,e.transform)}(n,e)))}(n.fieldTransforms,e.fieldTransforms)&&(0===n.type?n.value.isEqual(e.value):1!==n.type||n.data.isEqual(e.data)&&n.fieldMask.isEqual(e.fieldMask))}class ql extends jl{constructor(n,e,t,a=[]){super(),this.key=n,this.value=e,this.precondition=t,this.fieldTransforms=a,this.type=0}getFieldMask(){return null}}class Jl extends jl{constructor(n,e,t,a,i=[]){super(),this.key=n,this.data=e,this.fieldMask=t,this.precondition=a,this.fieldTransforms=i,this.type=1}getFieldMask(){return this.fieldMask}}function $l(n){const e=new Map;return n.fieldMask.fields.forEach((t=>{if(!t.isEmpty()){const a=n.data.field(t);e.set(t,a)}})),e}function Yl(n,e,t){const a=new Map;co(n.length===t.length);for(let i=0;i{const i=n.get(a.key),r=i.overlayedDocument;let o=this.applyToLocalView(r,i.mutatedFields);o=e.has(a.key)?null:o;const s=Ul(r,o);null!==s&&t.set(a.key,s),r.isValidDocument()||r.convertToNoDocument(Eo.min())})),t}keys(){return this.mutations.reduce(((n,e)=>n.add(e.key)),kl())}isEqual(n){return this.batchId===n.batchId&&To(this.mutations,n.mutations,((n,e)=>Kl(n,e)))&&To(this.baseMutations,n.baseMutations,((n,e)=>Kl(n,e)))}}class ec{constructor(n,e,t,a){this.batch=n,this.commitVersion=e,this.mutationResults=t,this.docVersions=a}static from(n,e,t){co(n.mutations.length===t.length);let a=vl;const i=n.mutations;for(let n=0;n=4&&"projects"===n.get(0)&&"databases"===n.get(2)}(e)),e}(n);return 4===e.length?Po.emptyPath():function(n){return co(n.length>4&&"documents"===n.get(4)),n.popFirst(5)}(e)}function mc(n,e,t){return{name:hc(n,e),fields:t.value.mapValue.fields}}function pc(n){let e=fc(n.parent);const t=n.structuredQuery,a=t.from?t.from.length:0;let i=null;if(a>0){co(1===a);const n=t.from[0];n.allDescendants?i=n.collectionId:e=e.child(n.collectionId)}let r=[];t.where&&(r=function(n){const e=gc(n);return e instanceof Bs&&Os(e)?e.getFilters():[e]}(t.where));let o=[];t.orderBy&&(o=function(n){return n.map((n=>function(n){return new Rs(yc(n.field),function(n){switch(n){case"ASCENDING":return"asc";case"DESCENDING":return"desc";default:return}}(n.direction))}(n)))}(t.orderBy));let s=null;t.limit&&(s=function(n){let e;return e="object"==typeof n?n.value:n,Ho(e)?null:e}(t.limit));let l=null;t.startAt&&(l=function(n){const e=!!n.before,t=n.values||[];return new Ms(t,e)}(t.startAt));let c=null;return t.endAt&&(c=function(n){const e=!n.before,t=n.values||[];return new Ms(t,e)}(t.endAt)),function(n,e,t,a,i,r,o,s){return new nl(n,e,t,a,i,r,o,s)}(e,i,o,r,s,"F",l,c)}function gc(n){return void 0!==n.unaryFilter?function(n){switch(n.unaryFilter.op){case"IS_NAN":const e=yc(n.unaryFilter.field);return Ns.create(e,"==",{doubleValue:NaN});case"IS_NULL":const t=yc(n.unaryFilter.field);return Ns.create(t,"==",{nullValue:"NULL_VALUE"});case"IS_NOT_NAN":const a=yc(n.unaryFilter.field);return Ns.create(a,"!=",{doubleValue:NaN});case"IS_NOT_NULL":const i=yc(n.unaryFilter.field);return Ns.create(i,"!=",{nullValue:"NULL_VALUE"});default:return lo()}}(n):void 0!==n.fieldFilter?function(n){return Ns.create(yc(n.fieldFilter.field),function(n){switch(n){case"EQUAL":return"==";case"NOT_EQUAL":return"!=";case"GREATER_THAN":return">";case"GREATER_THAN_OR_EQUAL":return">=";case"LESS_THAN":return"<";case"LESS_THAN_OR_EQUAL":return"<=";case"ARRAY_CONTAINS":return"array-contains";case"IN":return"in";case"NOT_IN":return"not-in";case"ARRAY_CONTAINS_ANY":return"array-contains-any";default:return lo()}}(n.fieldFilter.op),n.fieldFilter.value)}(n):void 0!==n.compositeFilter?function(n){return Bs.create(n.compositeFilter.filters.map((n=>gc(n))),function(n){switch(n){case"AND":return"and";case"OR":return"or";default:return lo()}}(n.compositeFilter.op))}(n):lo()}function yc(n){return Ro.fromServerFormat(n.fieldPath)}function bc(n){const e=[];return n.fields.forEach((n=>e.push(n.canonicalString()))),{fieldPaths:e}}class vc{constructor(n){this.ct=n}}function xc(n){const e=pc({parent:n.parent,structuredQuery:n.structuredQuery});return"LAST"===n.limitType?il(e,e.limit,"L"):e}class kc{constructor(){}It(n,e){this.Tt(n,e),e.Et()}Tt(n,e){if("nullValue"in n)this.dt(e,5);else if("booleanValue"in n)this.dt(e,10),e.At(n.booleanValue?1:0);else if("integerValue"in n)this.dt(e,15),e.At(is(n.integerValue));else if("doubleValue"in n){const t=is(n.doubleValue);isNaN(t)?this.dt(e,13):(this.dt(e,15),Vo(t)?e.At(0):e.At(t))}else if("timestampValue"in n){let t=n.timestampValue;this.dt(e,20),"string"==typeof t&&(t=as(t)),e.Rt(`${t.seconds||""}`),e.At(t.nanos||0)}else if("stringValue"in n)this.Vt(n.stringValue,e),this.ft(e);else if("bytesValue"in n)this.dt(e,30),e.gt(rs(n.bytesValue)),this.ft(e);else if("referenceValue"in n)this.yt(n.referenceValue,e);else if("geoPointValue"in n){const t=n.geoPointValue;this.dt(e,45),e.At(t.latitude||0),e.At(t.longitude||0)}else"mapValue"in n?As(n)?this.dt(e,Number.MAX_SAFE_INTEGER):Cs(n)?this.wt(n.mapValue,e):(this.St(n.mapValue,e),this.ft(e)):"arrayValue"in n?(this.bt(n.arrayValue,e),this.ft(e)):lo()}Vt(n,e){this.dt(e,25),this.Dt(n,e)}Dt(n,e){e.Rt(n)}St(n,e){const t=n.fields||{};this.dt(e,55);for(const n of Object.keys(t))this.Vt(n,e),this.Tt(t[n],e)}wt(n,e){var t,a;const i=n.fields||{};this.dt(e,53);const r="value",o=(null===(a=null===(t=i[r].arrayValue)||void 0===t?void 0:t.values)||void 0===a?void 0:a.length)||0;this.dt(e,15),e.At(is(o)),this.Vt(r,e),this.Tt(i[r],e)}bt(n,e){const t=n.values||[];this.dt(e,50);for(const n of t)this.Tt(n,e)}yt(n,e){this.dt(e,37),Do.fromName(n).path.forEach((n=>{this.dt(e,60),this.Dt(n,e)}))}dt(n,e){n.At(e)}ft(n){n.At(2)}}kc.vt=new kc;class wc{constructor(){this.un=new Cc}addToCollectionParentIndex(n,e){return this.un.add(e),Go.resolve()}getCollectionParents(n,e){return Go.resolve(this.un.getEntries(e))}addFieldIndex(n,e){return Go.resolve()}deleteFieldIndex(n,e){return Go.resolve()}deleteAllFieldIndexes(n){return Go.resolve()}createTargetIndexes(n,e){return Go.resolve()}getDocumentsMatchingTarget(n,e){return Go.resolve(null)}getIndexType(n,e){return Go.resolve(0)}getFieldIndexes(n,e){return Go.resolve([])}getNextCollectionGroupToUpdate(n){return Go.resolve(null)}getMinOffset(n,e){return Go.resolve(No.min())}getMinOffsetFromCollectionGroup(n,e){return Go.resolve(No.min())}updateCollectionGroup(n,e,t){return Go.resolve()}updateIndexEntries(n,e){return Go.resolve()}}class Cc{constructor(){this.index={}}add(n){const e=n.lastSegment(),t=n.popLast(),a=this.index[e]||new Qo(Po.comparator),i=!a.has(t);return this.index[e]=a.add(t),i}has(n){const e=n.lastSegment(),t=n.popLast(),a=this.index[e];return a&&a.has(t)}getEntries(n){return(this.index[n]||new Qo(Po.comparator)).toArray()}}new Uint8Array(0);class Sc{constructor(n,e,t){this.cacheSizeCollectionThreshold=n,this.percentileToCollect=e,this.maximumSequenceNumbersToCollect=t}static withCacheSize(n){return new Sc(n,Sc.DEFAULT_COLLECTION_PERCENTILE,Sc.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT)}}Sc.DEFAULT_COLLECTION_PERCENTILE=10,Sc.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT=1e3,Sc.DEFAULT=new Sc(41943040,Sc.DEFAULT_COLLECTION_PERCENTILE,Sc.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT),Sc.DISABLED=new Sc(-1,0,0);class Ac{constructor(n){this.Ln=n}next(){return this.Ln+=2,this.Ln}static Bn(){return new Ac(0)}static kn(){return new Ac(-1)}}class Tc{constructor(){this.changes=new ul((n=>n.toString()),((n,e)=>n.isEqual(e))),this.changesApplied=!1}addEntry(n){this.assertNotApplied(),this.changes.set(n.key,n)}removeEntry(n,e){this.assertNotApplied(),this.changes.set(n,Es.newInvalidDocument(n).setReadTime(e))}getEntry(n,e){this.assertNotApplied();const t=this.changes.get(e);return void 0!==t?Go.resolve(t):this.getFromCache(n,e)}getEntries(n,e){return this.getAllFromCache(n,e)}apply(n){return this.assertNotApplied(),this.changesApplied=!0,this.applyChanges(n)}assertNotApplied(){}}class Ic{constructor(n,e){this.overlayedDocument=n,this.mutatedFields=e}}class Ec{constructor(n,e,t,a){this.remoteDocumentCache=n,this.mutationQueue=e,this.documentOverlayCache=t,this.indexManager=a}getDocument(n,e){let t=null;return this.documentOverlayCache.getOverlay(n,e).next((a=>(t=a,this.remoteDocumentCache.getEntry(n,e)))).next((n=>(null!==t&&Vl(t.mutation,n,Zo.empty(),Io.now()),n)))}getDocuments(n,e){return this.remoteDocumentCache.getEntries(n,e).next((e=>this.getLocalViewOfDocuments(n,e,kl()).next((()=>e))))}getLocalViewOfDocuments(n,e,t=kl()){const a=gl();return this.populateOverlays(n,a,e).next((()=>this.computeViews(n,e,a,t).next((n=>{let e=ml();return n.forEach(((n,t)=>{e=e.insert(n,t.overlayedDocument)})),e}))))}getOverlayedDocuments(n,e){const t=gl();return this.populateOverlays(n,t,e).next((()=>this.computeViews(n,e,t,kl())))}populateOverlays(n,e,t){const a=[];return t.forEach((n=>{e.has(n)||a.push(n)})),this.documentOverlayCache.getOverlays(n,a).next((n=>{n.forEach(((n,t)=>{e.set(n,t)}))}))}computeViews(n,e,t,a){let i=hl();const r=bl(),o=bl();return e.forEach(((n,e)=>{const o=t.get(e.key);a.has(e.key)&&(void 0===o||o.mutation instanceof Jl)?i=i.insert(e.key,e):void 0!==o?(r.set(e.key,o.mutation.getFieldMask()),Vl(o.mutation,e,o.mutation.getFieldMask(),Io.now())):r.set(e.key,Zo.empty())})),this.recalculateAndSaveOverlays(n,i).next((n=>(n.forEach(((n,e)=>r.set(n,e))),e.forEach(((n,e)=>{var t;return o.set(n,new Ic(e,null!==(t=r.get(n))&&void 0!==t?t:null))})),o)))}recalculateAndSaveOverlays(n,e){const t=bl();let a=new Jo(((n,e)=>n-e)),i=kl();return this.mutationQueue.getAllMutationBatchesAffectingDocumentKeys(n,e).next((n=>{for(const i of n)i.keys().forEach((n=>{const r=e.get(n);if(null===r)return;let o=t.get(n)||Zo.empty();o=i.applyToLocalView(r,o),t.set(n,o);const s=(a.get(i.batchId)||kl()).add(n);a=a.insert(i.batchId,s)}))})).next((()=>{const r=[],o=a.getReverseIterator();for(;o.hasNext();){const a=o.getNext(),s=a.key,l=a.value,c=yl();l.forEach((n=>{if(!i.has(n)){const a=Ul(e.get(n),t.get(n));null!==a&&c.set(n,a),i=i.add(n)}})),r.push(this.documentOverlayCache.saveOverlays(n,s,c))}return Go.waitFor(r)})).next((()=>t))}recalculateAndSaveOverlaysForDocumentKeys(n,e){return this.remoteDocumentCache.getEntries(n,e).next((e=>this.recalculateAndSaveOverlays(n,e)))}getDocumentsMatchingQuery(n,e,t,a){return function(n){return Do.isDocumentKey(n.path)&&null===n.collectionGroup&&0===n.filters.length}(e)?this.getDocumentsMatchingDocumentQuery(n,e.path):function(n){return null!==n.collectionGroup}(e)?this.getDocumentsMatchingCollectionGroupQuery(n,e,t,a):this.getDocumentsMatchingCollectionQuery(n,e,t,a)}getNextDocuments(n,e,t,a){return this.remoteDocumentCache.getAllFromCollectionGroup(n,e,t,a).next((i=>{const r=a-i.size>0?this.documentOverlayCache.getOverlaysForCollectionGroup(n,e,t.largestBatchId,a-i.size):Go.resolve(gl());let o=-1,s=i;return r.next((e=>Go.forEach(e,((e,t)=>(o{s=s.insert(e,n)}))))).next((()=>this.populateOverlays(n,e,i))).next((()=>this.computeViews(n,s,e,kl()))).next((n=>({batchId:o,changes:pl(n)})))))}))}getDocumentsMatchingDocumentQuery(n,e){return this.getDocument(n,new Do(e)).next((n=>{let e=ml();return n.isFoundDocument()&&(e=e.insert(n.key,n)),e}))}getDocumentsMatchingCollectionGroupQuery(n,e,t,a){const i=e.collectionGroup;let r=ml();return this.indexManager.getCollectionParents(n,i).next((o=>Go.forEach(o,(o=>{const s=function(n,e){return new nl(e,null,n.explicitOrderBy.slice(),n.filters.slice(),n.limit,n.limitType,n.startAt,n.endAt)}(e,o.child(i));return this.getDocumentsMatchingCollectionQuery(n,s,t,a).next((n=>{n.forEach(((n,e)=>{r=r.insert(n,e)}))}))})).next((()=>r))))}getDocumentsMatchingCollectionQuery(n,e,t,a){let i;return this.documentOverlayCache.getOverlaysForCollection(n,e.path,t.largestBatchId).next((r=>(i=r,this.remoteDocumentCache.getDocumentsMatchingQuery(n,e,t,i,a)))).next((n=>{i.forEach(((e,t)=>{const a=t.getKey();null===n.get(a)&&(n=n.insert(a,Es.newInvalidDocument(a)))}));let t=ml();return n.forEach(((n,a)=>{const r=i.get(n);void 0!==r&&Vl(r.mutation,a,Zo.empty(),Io.now()),ll(e,a)&&(t=t.insert(n,a))})),t}))}}class Mc{constructor(n){this.serializer=n,this.hr=new Map,this.Pr=new Map}getBundleMetadata(n,e){return Go.resolve(this.hr.get(e))}saveBundleMetadata(n,e){return this.hr.set(e.id,function(n){return{id:n.id,version:n.version,createTime:cc(n.createTime)}}(e)),Go.resolve()}getNamedQuery(n,e){return Go.resolve(this.Pr.get(e))}saveNamedQuery(n,e){return this.Pr.set(e.name,function(n){return{name:n.name,query:xc(n.bundledQuery),readTime:cc(n.readTime)}}(e)),Go.resolve()}}class Pc{constructor(){this.overlays=new Jo(Do.comparator),this.Ir=new Map}getOverlay(n,e){return Go.resolve(this.overlays.get(e))}getOverlays(n,e){const t=gl();return Go.forEach(e,(e=>this.getOverlay(n,e).next((n=>{null!==n&&t.set(e,n)})))).next((()=>t))}saveOverlays(n,e,t){return t.forEach(((t,a)=>{this.ht(n,e,a)})),Go.resolve()}removeOverlaysForBatchId(n,e,t){const a=this.Ir.get(t);return void 0!==a&&(a.forEach((n=>this.overlays=this.overlays.remove(n))),this.Ir.delete(t)),Go.resolve()}getOverlaysForCollection(n,e,t){const a=gl(),i=e.length+1,r=new Do(e.child("")),o=this.overlays.getIteratorFrom(r);for(;o.hasNext();){const n=o.getNext().value,r=n.getKey();if(!e.isPrefixOf(r.path))break;r.path.length===i&&n.largestBatchId>t&&a.set(n.getKey(),n)}return Go.resolve(a)}getOverlaysForCollectionGroup(n,e,t,a){let i=new Jo(((n,e)=>n-e));const r=this.overlays.getIterator();for(;r.hasNext();){const n=r.getNext().value;if(n.getKey().getCollectionGroup()===e&&n.largestBatchId>t){let e=i.get(n.largestBatchId);null===e&&(e=gl(),i=i.insert(n.largestBatchId,e)),e.set(n.getKey(),n)}}const o=gl(),s=i.getIterator();for(;s.hasNext()&&(s.getNext().value.forEach(((n,e)=>o.set(n,e))),!(o.size()>=a)););return Go.resolve(o)}ht(n,e,t){const a=this.overlays.get(t.key);if(null!==a){const n=this.Ir.get(a.largestBatchId).delete(t.key);this.Ir.set(a.largestBatchId,n)}this.overlays=this.overlays.insert(t.key,new tc(e,t));let i=this.Ir.get(e);void 0===i&&(i=kl(),this.Ir.set(e,i)),this.Ir.set(e,i.add(t.key))}}class _c{constructor(){this.sessionToken=es.EMPTY_BYTE_STRING}getSessionToken(n){return Go.resolve(this.sessionToken)}setSessionToken(n,e){return this.sessionToken=e,Go.resolve()}}class Rc{constructor(){this.Tr=new Qo(Dc.Er),this.dr=new Qo(Dc.Ar)}isEmpty(){return this.Tr.isEmpty()}addReference(n,e){const t=new Dc(n,e);this.Tr=this.Tr.add(t),this.dr=this.dr.add(t)}Rr(n,e){n.forEach((n=>this.addReference(n,e)))}removeReference(n,e){this.Vr(new Dc(n,e))}mr(n,e){n.forEach((n=>this.removeReference(n,e)))}gr(n){const e=new Do(new Po([])),t=new Dc(e,n),a=new Dc(e,n+1),i=[];return this.dr.forEachInRange([t,a],(n=>{this.Vr(n),i.push(n.key)})),i}pr(){this.Tr.forEach((n=>this.Vr(n)))}Vr(n){this.Tr=this.Tr.delete(n),this.dr=this.dr.delete(n)}yr(n){const e=new Do(new Po([])),t=new Dc(e,n),a=new Dc(e,n+1);let i=kl();return this.dr.forEachInRange([t,a],(n=>{i=i.add(n.key)})),i}containsKey(n){const e=new Dc(n,0),t=this.Tr.firstAfterOrEqual(e);return null!==t&&n.isEqual(t.key)}}class Dc{constructor(n,e){this.key=n,this.wr=e}static Er(n,e){return Do.comparator(n.key,e.key)||Ao(n.wr,e.wr)}static Ar(n,e){return Ao(n.wr,e.wr)||Do.comparator(n.key,e.key)}}class Lc{constructor(n,e){this.indexManager=n,this.referenceDelegate=e,this.mutationQueue=[],this.Sr=1,this.br=new Qo(Dc.Er)}checkEmpty(n){return Go.resolve(0===this.mutationQueue.length)}addMutationBatch(n,e,t,a){const i=this.Sr;this.Sr++,this.mutationQueue.length>0&&this.mutationQueue[this.mutationQueue.length-1];const r=new nc(i,e,t,a);this.mutationQueue.push(r);for(const e of a)this.br=this.br.add(new Dc(e.key,i)),this.indexManager.addToCollectionParentIndex(n,e.key.path.popLast());return Go.resolve(r)}lookupMutationBatch(n,e){return Go.resolve(this.Dr(e))}getNextMutationBatchAfterBatchId(n,e){const t=e+1,a=this.vr(t),i=a<0?0:a;return Go.resolve(this.mutationQueue.length>i?this.mutationQueue[i]:null)}getHighestUnacknowledgedBatchId(){return Go.resolve(0===this.mutationQueue.length?-1:this.Sr-1)}getAllMutationBatches(n){return Go.resolve(this.mutationQueue.slice())}getAllMutationBatchesAffectingDocumentKey(n,e){const t=new Dc(e,0),a=new Dc(e,Number.POSITIVE_INFINITY),i=[];return this.br.forEachInRange([t,a],(n=>{const e=this.Dr(n.wr);i.push(e)})),Go.resolve(i)}getAllMutationBatchesAffectingDocumentKeys(n,e){let t=new Qo(Ao);return e.forEach((n=>{const e=new Dc(n,0),a=new Dc(n,Number.POSITIVE_INFINITY);this.br.forEachInRange([e,a],(n=>{t=t.add(n.wr)}))})),Go.resolve(this.Cr(t))}getAllMutationBatchesAffectingQuery(n,e){const t=e.path,a=t.length+1;let i=t;Do.isDocumentKey(i)||(i=i.child(""));const r=new Dc(new Do(i),0);let o=new Qo(Ao);return this.br.forEachWhile((n=>{const e=n.key.path;return!!t.isPrefixOf(e)&&(e.length===a&&(o=o.add(n.wr)),!0)}),r),Go.resolve(this.Cr(o))}Cr(n){const e=[];return n.forEach((n=>{const t=this.Dr(n);null!==t&&e.push(t)})),e}removeMutationBatch(n,e){co(0===this.Fr(e.batchId,"removed")),this.mutationQueue.shift();let t=this.br;return Go.forEach(e.mutations,(a=>{const i=new Dc(a.key,e.batchId);return t=t.delete(i),this.referenceDelegate.markPotentiallyOrphaned(n,a.key)})).next((()=>{this.br=t}))}On(n){}containsKey(n,e){const t=new Dc(e,0),a=this.br.firstAfterOrEqual(t);return Go.resolve(e.isEqual(a&&a.key))}performConsistencyCheck(n){return this.mutationQueue.length,Go.resolve()}Fr(n,e){return this.vr(n)}vr(n){return 0===this.mutationQueue.length?0:n-this.mutationQueue[0].batchId}Dr(n){const e=this.vr(n);return e<0||e>=this.mutationQueue.length?null:this.mutationQueue[e]}}class Nc{constructor(n){this.Mr=n,this.docs=new Jo(Do.comparator),this.size=0}setIndexManager(n){this.indexManager=n}addEntry(n,e){const t=e.key,a=this.docs.get(t),i=a?a.size:0,r=this.Mr(e);return this.docs=this.docs.insert(t,{document:e.mutableCopy(),size:r}),this.size+=r-i,this.indexManager.addToCollectionParentIndex(n,t.path.popLast())}removeEntry(n){const e=this.docs.get(n);e&&(this.docs=this.docs.remove(n),this.size-=e.size)}getEntry(n,e){const t=this.docs.get(e);return Go.resolve(t?t.document.mutableCopy():Es.newInvalidDocument(e))}getEntries(n,e){let t=hl();return e.forEach((n=>{const e=this.docs.get(n);t=t.insert(n,e?e.document.mutableCopy():Es.newInvalidDocument(n))})),Go.resolve(t)}getDocumentsMatchingQuery(n,e,t,a){let i=hl();const r=e.path,o=new Do(r.child("")),s=this.docs.getIteratorFrom(o);for(;s.hasNext();){const{key:n,value:{document:o}}=s.getNext();if(!r.isPrefixOf(n.path))break;n.path.length>r.length+1||Bo(Lo(o),t)<=0||(a.has(o.key)||ll(e,o))&&(i=i.insert(o.key,o.mutableCopy()))}return Go.resolve(i)}getAllFromCollectionGroup(n,e,t,a){lo()}Or(n,e){return Go.forEach(this.docs,(n=>e(n)))}newChangeBuffer(n){return new Bc(this)}getSize(n){return Go.resolve(this.size)}}class Bc extends Tc{constructor(n){super(),this.cr=n}applyChanges(n){const e=[];return this.changes.forEach(((t,a)=>{a.isValidDocument()?e.push(this.cr.addEntry(n,a)):this.cr.removeEntry(t)})),Go.waitFor(e)}getFromCache(n,e){return this.cr.getEntry(n,e)}getAllFromCache(n,e){return this.cr.getEntries(n,e)}}class zc{constructor(n){this.persistence=n,this.Nr=new ul((n=>Xs(n)),Zs),this.lastRemoteSnapshotVersion=Eo.min(),this.highestTargetId=0,this.Lr=0,this.Br=new Rc,this.targetCount=0,this.kr=Ac.Bn()}forEachTarget(n,e){return this.Nr.forEach(((n,t)=>e(t))),Go.resolve()}getLastRemoteSnapshotVersion(n){return Go.resolve(this.lastRemoteSnapshotVersion)}getHighestSequenceNumber(n){return Go.resolve(this.Lr)}allocateTargetId(n){return this.highestTargetId=this.kr.next(),Go.resolve(this.highestTargetId)}setTargetsMetadata(n,e,t){return t&&(this.lastRemoteSnapshotVersion=t),e>this.Lr&&(this.Lr=e),Go.resolve()}Kn(n){this.Nr.set(n.target,n);const e=n.targetId;e>this.highestTargetId&&(this.kr=new Ac(e),this.highestTargetId=e),n.sequenceNumber>this.Lr&&(this.Lr=n.sequenceNumber)}addTargetData(n,e){return this.Kn(e),this.targetCount+=1,Go.resolve()}updateTargetData(n,e){return this.Kn(e),Go.resolve()}removeTargetData(n,e){return this.Nr.delete(e.target),this.Br.gr(e.targetId),this.targetCount-=1,Go.resolve()}removeTargets(n,e,t){let a=0;const i=[];return this.Nr.forEach(((r,o)=>{o.sequenceNumber<=e&&null===t.get(o.targetId)&&(this.Nr.delete(r),i.push(this.removeMatchingKeysForTargetId(n,o.targetId)),a++)})),Go.waitFor(i).next((()=>a))}getTargetCount(n){return Go.resolve(this.targetCount)}getTargetData(n,e){const t=this.Nr.get(e)||null;return Go.resolve(t)}addMatchingKeys(n,e,t){return this.Br.Rr(e,t),Go.resolve()}removeMatchingKeys(n,e,t){this.Br.mr(e,t);const a=this.persistence.referenceDelegate,i=[];return a&&e.forEach((e=>{i.push(a.markPotentiallyOrphaned(n,e))})),Go.waitFor(i)}removeMatchingKeysForTargetId(n,e){return this.Br.gr(e),Go.resolve()}getMatchingKeysForTargetId(n,e){const t=this.Br.yr(e);return Go.resolve(t)}containsKey(n,e){return Go.resolve(this.Br.containsKey(e))}}class Oc{constructor(n,e){this.qr={},this.overlays={},this.Qr=new Uo(0),this.Kr=!1,this.Kr=!0,this.$r=new _c,this.referenceDelegate=n(this),this.Ur=new zc(this),this.indexManager=new wc,this.remoteDocumentCache=function(n){return new Nc(n)}((n=>this.referenceDelegate.Wr(n))),this.serializer=new vc(e),this.Gr=new Mc(this.serializer)}start(){return Promise.resolve()}shutdown(){return this.Kr=!1,Promise.resolve()}get started(){return this.Kr}setDatabaseDeletedListener(){}setNetworkEnabled(){}getIndexManager(n){return this.indexManager}getDocumentOverlayCache(n){let e=this.overlays[n.toKey()];return e||(e=new Pc,this.overlays[n.toKey()]=e),e}getMutationQueue(n,e){let t=this.qr[n.toKey()];return t||(t=new Lc(e,this.referenceDelegate),this.qr[n.toKey()]=t),t}getGlobalsCache(){return this.$r}getTargetCache(){return this.Ur}getRemoteDocumentCache(){return this.remoteDocumentCache}getBundleCache(){return this.Gr}runTransaction(n,e,t){io("MemoryPersistence","Starting transaction:",n);const a=new Fc(this.Qr.next());return this.referenceDelegate.zr(),t(a).next((n=>this.referenceDelegate.jr(a).next((()=>n)))).toPromise().then((n=>(a.raiseOnCommittedEvent(),n)))}Hr(n,e){return Go.or(Object.values(this.qr).map((t=>()=>t.containsKey(n,e))))}}class Fc extends Oo{constructor(n){super(),this.currentSequenceNumber=n}}class Gc{constructor(n){this.persistence=n,this.Jr=new Rc,this.Yr=null}static Zr(n){return new Gc(n)}get Xr(){if(this.Yr)return this.Yr;throw lo()}addReference(n,e,t){return this.Jr.addReference(t,e),this.Xr.delete(t.toString()),Go.resolve()}removeReference(n,e,t){return this.Jr.removeReference(t,e),this.Xr.add(t.toString()),Go.resolve()}markPotentiallyOrphaned(n,e){return this.Xr.add(e.toString()),Go.resolve()}removeTarget(n,e){this.Jr.gr(e.targetId).forEach((n=>this.Xr.add(n.toString())));const t=this.persistence.getTargetCache();return t.getMatchingKeysForTargetId(n,e.targetId).next((n=>{n.forEach((n=>this.Xr.add(n.toString())))})).next((()=>t.removeTargetData(n,e)))}zr(){this.Yr=new Set}jr(n){const e=this.persistence.getRemoteDocumentCache().newChangeBuffer();return Go.forEach(this.Xr,(t=>{const a=Do.fromPath(t);return this.ei(n,a).next((n=>{n||e.removeEntry(a,Eo.min())}))})).next((()=>(this.Yr=null,e.apply(n))))}updateLimboDocument(n,e){return this.ei(n,e).next((n=>{n?this.Xr.delete(e.toString()):this.Xr.add(e.toString())}))}Wr(n){return 0}ei(n,e){return Go.or([()=>Go.resolve(this.Jr.containsKey(e)),()=>this.persistence.getTargetCache().containsKey(n,e),()=>this.persistence.Hr(n,e)])}}class jc{constructor(n,e,t,a){this.targetId=n,this.fromCache=e,this.$i=t,this.Ui=a}static Wi(n,e){let t=kl(),a=kl();for(const n of e.docChanges)switch(n.type){case 0:t=t.add(n.doc.key);break;case 1:a=a.add(n.doc.key)}return new jc(n,e.fromCache,t,a)}}class Uc{constructor(){this._documentReadCount=0}get documentReadCount(){return this._documentReadCount}incrementDocumentReadCount(n){this._documentReadCount+=n}}class Hc{constructor(){this.Gi=!1,this.zi=!1,this.ji=100,this.Hi=!function(){var n;const e=null===(n=G())||void 0===n?void 0:n.forceEnvironment;if("node"===e)return!0;if("browser"===e)return!1;try{return"[object process]"===Object.prototype.toString.call(t.g.process)}catch(n){return!1}}()&&navigator.userAgent&&navigator.userAgent.includes("Safari")&&!navigator.userAgent.includes("Chrome")?8:function(n){const e=n.match(/Android ([\d.]+)/i),t=e?e[1].split(".").slice(0,2).join("."):"-1";return Number(t)}(W())>0?6:4}initialize(n,e){this.Ji=n,this.indexManager=e,this.Gi=!0}getDocumentsMatchingQuery(n,e,t,a){const i={result:null};return this.Yi(n,e).next((n=>{i.result=n})).next((()=>{if(!i.result)return this.Zi(n,e,a,t).next((n=>{i.result=n}))})).next((()=>{if(i.result)return;const t=new Uc;return this.Xi(n,e,t).next((a=>{if(i.result=a,this.zi)return this.es(n,e,t,a.size)}))})).next((()=>i.result))}es(n,e,t,a){return t.documentReadCountthis.Hi*a?(ao()<=yn.DEBUG&&io("QueryEngine","The SDK decides to create cache indexes for query:",sl(e),"as using cache indexes may help improve performance."),this.indexManager.createTargetIndexes(n,al(e))):Go.resolve())}Yi(n,e){if(el(e))return Go.resolve(null);let t=al(e);return this.indexManager.getIndexType(n,t).next((a=>0===a?null:(null!==e.limit&&1===a&&(e=il(e,null,"F"),t=al(e)),this.indexManager.getDocumentsMatchingTarget(n,t).next((a=>{const i=kl(...a);return this.Ji.getDocuments(n,i).next((a=>this.indexManager.getMinOffset(n,t).next((t=>{const r=this.ts(e,a);return this.ns(e,r,i,t.readTime)?this.Yi(n,il(e,null,"F")):this.rs(n,r,e,t)}))))})))))}Zi(n,e,t,a){return el(e)||a.isEqual(Eo.min())?Go.resolve(null):this.Ji.getDocuments(n,t).next((i=>{const r=this.ts(e,i);return this.ns(e,r,t,a)?Go.resolve(null):(ao()<=yn.DEBUG&&io("QueryEngine","Re-using previous result from %s to execute query: %s",a.toString(),sl(e)),this.rs(n,r,e,function(n,e){const t=n.toTimestamp().seconds,a=n.toTimestamp().nanoseconds+1,i=Eo.fromTimestamp(1e9===a?new Io(t+1,0):new Io(t,a));return new No(i,Do.empty(),e)}(a,-1)).next((n=>n)))}))}ts(n,e){let t=new Qo(function(n){return(e,t)=>{let a=!1;for(const i of tl(n)){const n=cl(i,e,t);if(0!==n)return n;a=a||i.field.isKeyField()}return 0}}(n));return e.forEach(((e,a)=>{ll(n,a)&&(t=t.add(a))})),t}ns(n,e,t,a){if(null===n.limit)return!1;if(t.size!==e.size)return!0;const i="F"===n.limitType?e.last():e.first();return!!i&&(i.hasPendingWrites||i.version.compareTo(a)>0)}Xi(n,e,t){return ao()<=yn.DEBUG&&io("QueryEngine","Using full collection scan to execute query:",sl(e)),this.Ji.getDocumentsMatchingQuery(n,e,No.min(),t)}rs(n,e,t,a){return this.Ji.getDocumentsMatchingQuery(n,t,a).next((n=>(e.forEach((e=>{n=n.insert(e.key,e)})),n)))}}class Vc{constructor(n,e,t,a){this.persistence=n,this.ss=e,this.serializer=a,this.os=new Jo(Ao),this._s=new ul((n=>Xs(n)),Zs),this.us=new Map,this.cs=n.getRemoteDocumentCache(),this.Ur=n.getTargetCache(),this.Gr=n.getBundleCache(),this.ls(t)}ls(n){this.documentOverlayCache=this.persistence.getDocumentOverlayCache(n),this.indexManager=this.persistence.getIndexManager(n),this.mutationQueue=this.persistence.getMutationQueue(n,this.indexManager),this.localDocuments=new Ec(this.cs,this.mutationQueue,this.documentOverlayCache,this.indexManager),this.cs.setIndexManager(this.indexManager),this.ss.initialize(this.localDocuments,this.indexManager)}collectGarbage(n){return this.persistence.runTransaction("Collect garbage","readwrite-primary",(e=>n.collect(e,this.os)))}}async function Wc(n,e){const t=uo(n);return await t.persistence.runTransaction("Handle user change","readonly",(n=>{let a;return t.mutationQueue.getAllMutationBatches(n).next((i=>(a=i,t.ls(e),t.mutationQueue.getAllMutationBatches(n)))).next((e=>{const i=[],r=[];let o=kl();for(const n of a){i.push(n.batchId);for(const e of n.mutations)o=o.add(e.key)}for(const n of e){r.push(n.batchId);for(const e of n.mutations)o=o.add(e.key)}return t.localDocuments.getDocuments(n,o).next((n=>({hs:n,removedBatchIds:i,addedBatchIds:r})))}))}))}function Kc(n,e){const t=uo(n);return t.persistence.runTransaction("Get next mutation batch","readonly",(n=>(void 0===e&&(e=-1),t.mutationQueue.getNextMutationBatchAfterBatchId(n,e))))}class qc{constructor(){this.activeTargetIds=wl}fs(n){this.activeTargetIds=this.activeTargetIds.add(n)}gs(n){this.activeTargetIds=this.activeTargetIds.delete(n)}Vs(){const n={activeTargetIds:this.activeTargetIds.toArray(),updateTimeMs:Date.now()};return JSON.stringify(n)}}class Jc{constructor(){this.so=new qc,this.oo={},this.onlineStateHandler=null,this.sequenceNumberHandler=null}addPendingMutation(n){}updateMutationState(n,e,t){}addLocalQueryTarget(n,e=!0){return e&&this.so.fs(n),this.oo[n]||"not-current"}updateQueryState(n,e,t){this.oo[n]=e}removeLocalQueryTarget(n){this.so.gs(n)}isLocalQueryTarget(n){return this.so.activeTargetIds.has(n)}clearQueryState(n){delete this.oo[n]}getAllActiveQueryTargets(){return this.so.activeTargetIds}isActiveQueryTarget(n){return this.so.activeTargetIds.has(n)}start(){return this.so=new qc,Promise.resolve()}handleUserChange(n,e,t){}setOnlineState(n){}shutdown(){}writeSequenceNumber(n){}notifyBundleLoaded(n){}}class $c{_o(n){}shutdown(){}}class Yc{constructor(){this.ao=()=>this.uo(),this.co=()=>this.lo(),this.ho=[],this.Po()}_o(n){this.ho.push(n)}shutdown(){window.removeEventListener("online",this.ao),window.removeEventListener("offline",this.co)}Po(){window.addEventListener("online",this.ao),window.addEventListener("offline",this.co)}uo(){io("ConnectivityMonitor","Network connectivity changed: AVAILABLE");for(const n of this.ho)n(0)}lo(){io("ConnectivityMonitor","Network connectivity changed: UNAVAILABLE");for(const n of this.ho)n(1)}static D(){return"undefined"!=typeof window&&void 0!==window.addEventListener&&void 0!==window.removeEventListener}}let Qc=null;function Xc(){return null===Qc?Qc=268435456+Math.round(2147483648*Math.random()):Qc++,"0x"+Qc.toString(16)}const Zc={BatchGetDocuments:"batchGet",Commit:"commit",RunQuery:"runQuery",RunAggregationQuery:"runAggregationQuery"};class nu{constructor(n){this.Io=n.Io,this.To=n.To}Eo(n){this.Ao=n}Ro(n){this.Vo=n}mo(n){this.fo=n}onMessage(n){this.po=n}close(){this.To()}send(n){this.Io(n)}yo(){this.Ao()}wo(){this.Vo()}So(n){this.fo(n)}bo(n){this.po(n)}}const eu="WebChannelConnection";class tu extends class{constructor(n){this.databaseInfo=n,this.databaseId=n.databaseId;const e=n.ssl?"https":"http",t=encodeURIComponent(this.databaseId.projectId),a=encodeURIComponent(this.databaseId.database);this.Do=e+"://"+n.host,this.vo=`projects/${t}/databases/${a}`,this.Co="(default)"===this.databaseId.database?`project_id=${t}`:`project_id=${t}&database_id=${a}`}get Fo(){return!1}Mo(n,e,t,a,i){const r=Xc(),o=this.xo(n,e.toUriEncodedString());io("RestConnection",`Sending RPC '${n}' ${r}:`,o,t);const s={"google-cloud-resource-prefix":this.vo,"x-goog-request-params":this.Co};return this.Oo(s,a,i),this.No(n,o,s,t).then((e=>(io("RestConnection",`Received RPC '${n}' ${r}: `,e),e)),(e=>{throw oo("RestConnection",`RPC '${n}' ${r} failed with error: `,e,"url: ",o,"request:",t),e}))}Lo(n,e,t,a,i,r){return this.Mo(n,e,t,a,i)}Oo(n,e,t){n["X-Goog-Api-Client"]="gl-js/ fire/"+eo,n["Content-Type"]="text/plain",this.databaseInfo.appId&&(n["X-Firebase-GMPID"]=this.databaseInfo.appId),e&&e.headers.forEach(((e,t)=>n[t]=e)),t&&t.headers.forEach(((e,t)=>n[t]=e))}xo(n,e){const t=Zc[n];return`${this.Do}/v1/${e}:${t}`}terminate(){}}{constructor(n){super(n),this.forceLongPolling=n.forceLongPolling,this.autoDetectLongPolling=n.autoDetectLongPolling,this.useFetchStreams=n.useFetchStreams,this.longPollingOptions=n.longPollingOptions}No(n,e,t,a){const i=Xc();return new Promise(((r,o)=>{const s=new Ur;s.setWithCredentials(!0),s.listenOnce(Wr.COMPLETE,(()=>{try{switch(s.getLastErrorCode()){case Kr.NO_ERROR:const e=s.getResponseJson();io(eu,`XHR for RPC '${n}' ${i} received:`,JSON.stringify(e)),r(e);break;case Kr.TIMEOUT:io(eu,`RPC '${n}' ${i} timed out`),o(new fo(ho.DEADLINE_EXCEEDED,"Request time out"));break;case Kr.HTTP_ERROR:const t=s.getStatus();if(io(eu,`RPC '${n}' ${i} failed with status:`,t,"response text:",s.getResponseText()),t>0){let n=s.getResponseJson();Array.isArray(n)&&(n=n[0]);const e=null==n?void 0:n.error;if(e&&e.status&&e.message){const n=function(n){const e=n.toLowerCase().replace(/_/g,"-");return Object.values(ho).indexOf(e)>=0?e:ho.UNKNOWN}(e.status);o(new fo(n,e.message))}else o(new fo(ho.UNKNOWN,"Server responded with status "+s.getStatus()))}else o(new fo(ho.UNAVAILABLE,"Connection failed."));break;default:lo()}}finally{io(eu,`RPC '${n}' ${i} completed.`)}}));const l=JSON.stringify(a);io(eu,`RPC '${n}' ${i} sending request:`,a),s.send(e,"POST",l,t,15)}))}Bo(n,e,t){const a=Xc(),i=[this.Do,"/","google.firestore.v1.Firestore","/",n,"/channel"],r=Yr(),o=$r(),s={httpSessionIdParam:"gsessionid",initMessageHeaders:{},messageUrlParams:{database:`projects/${this.databaseId.projectId}/databases/${this.databaseId.database}`},sendRawJson:!0,supportsCrossDomainXhr:!0,internalChannelParams:{forwardChannelRequestTimeoutMs:6e5},forceLongPolling:this.forceLongPolling,detectBufferingProxy:this.autoDetectLongPolling},l=this.longPollingOptions.timeoutSeconds;void 0!==l&&(s.longPollingTimeout=Math.round(1e3*l)),this.useFetchStreams&&(s.xmlHttpFactory=new Hr({})),this.Oo(s.initMessageHeaders,e,t),s.encodeInitMessageHeaders=!0;const c=i.join("");io(eu,`Creating RPC '${n}' stream ${a}: ${c}`,s);const u=r.createWebChannel(c,s);let d=!1,h=!1;const f=new nu({Io:e=>{h?io(eu,`Not sending because RPC '${n}' stream ${a} is closed:`,e):(d||(io(eu,`Opening RPC '${n}' stream ${a} transport.`),u.open(),d=!0),io(eu,`RPC '${n}' stream ${a} sending:`,e),u.send(e))},To:()=>u.close()}),m=(n,e,t)=>{n.listen(e,(n=>{try{t(n)}catch(n){setTimeout((()=>{throw n}),0)}}))};return m(u,Vr.EventType.OPEN,(()=>{h||(io(eu,`RPC '${n}' stream ${a} transport opened.`),f.yo())})),m(u,Vr.EventType.CLOSE,(()=>{h||(h=!0,io(eu,`RPC '${n}' stream ${a} transport closed`),f.So())})),m(u,Vr.EventType.ERROR,(e=>{h||(h=!0,oo(eu,`RPC '${n}' stream ${a} transport errored:`,e),f.So(new fo(ho.UNAVAILABLE,"The operation could not be completed")))})),m(u,Vr.EventType.MESSAGE,(e=>{var t;if(!h){const i=e.data[0];co(!!i);const r=i,o=r.error||(null===(t=r[0])||void 0===t?void 0:t.error);if(o){io(eu,`RPC '${n}' stream ${a} received error:`,o);const e=o.status;let t=function(n){const e=ac[n];if(void 0!==e)return function(n){if(void 0===n)return ro("GRPC error has no .code"),ho.UNKNOWN;switch(n){case ac.OK:return ho.OK;case ac.CANCELLED:return ho.CANCELLED;case ac.UNKNOWN:return ho.UNKNOWN;case ac.DEADLINE_EXCEEDED:return ho.DEADLINE_EXCEEDED;case ac.RESOURCE_EXHAUSTED:return ho.RESOURCE_EXHAUSTED;case ac.INTERNAL:return ho.INTERNAL;case ac.UNAVAILABLE:return ho.UNAVAILABLE;case ac.UNAUTHENTICATED:return ho.UNAUTHENTICATED;case ac.INVALID_ARGUMENT:return ho.INVALID_ARGUMENT;case ac.NOT_FOUND:return ho.NOT_FOUND;case ac.ALREADY_EXISTS:return ho.ALREADY_EXISTS;case ac.PERMISSION_DENIED:return ho.PERMISSION_DENIED;case ac.FAILED_PRECONDITION:return ho.FAILED_PRECONDITION;case ac.ABORTED:return ho.ABORTED;case ac.OUT_OF_RANGE:return ho.OUT_OF_RANGE;case ac.UNIMPLEMENTED:return ho.UNIMPLEMENTED;case ac.DATA_LOSS:return ho.DATA_LOSS;default:return lo()}}(e)}(e),i=o.message;void 0===t&&(t=ho.INTERNAL,i="Unknown error status: "+e+" with message "+o.message),h=!0,f.So(new fo(t,i)),u.close()}else io(eu,`RPC '${n}' stream ${a} received:`,i),f.bo(i)}})),m(o,Jr.STAT_EVENT,(e=>{e.stat===qr.PROXY?io(eu,`RPC '${n}' stream ${a} detected buffering proxy`):e.stat===qr.NOPROXY&&io(eu,`RPC '${n}' stream ${a} detected no buffering proxy`)})),setTimeout((()=>{f.wo()}),0),f}}function au(){return"undefined"!=typeof document?document:null}function iu(n){return new rc(n,!0)}class ru{constructor(n,e,t=1e3,a=1.5,i=6e4){this.ui=n,this.timerId=e,this.ko=t,this.qo=a,this.Qo=i,this.Ko=0,this.$o=null,this.Uo=Date.now(),this.reset()}reset(){this.Ko=0}Wo(){this.Ko=this.Qo}Go(n){this.cancel();const e=Math.floor(this.Ko+this.zo()),t=Math.max(0,Date.now()-this.Uo),a=Math.max(0,e-t);a>0&&io("ExponentialBackoff",`Backing off for ${a} ms (base delay: ${this.Ko} ms, delay with jitter: ${e} ms, last attempt: ${t} ms ago)`),this.$o=this.ui.enqueueAfterDelay(this.timerId,a,(()=>(this.Uo=Date.now(),n()))),this.Ko*=this.qo,this.Kothis.Qo&&(this.Ko=this.Qo)}jo(){null!==this.$o&&(this.$o.skipDelay(),this.$o=null)}cancel(){null!==this.$o&&(this.$o.cancel(),this.$o=null)}zo(){return(Math.random()-.5)*this.Ko}}class ou{constructor(n,e,t,a,i,r,o,s){this.ui=n,this.Ho=t,this.Jo=a,this.connection=i,this.authCredentialsProvider=r,this.appCheckCredentialsProvider=o,this.listener=s,this.state=0,this.Yo=0,this.Zo=null,this.Xo=null,this.stream=null,this.e_=0,this.t_=new ru(n,e)}n_(){return 1===this.state||5===this.state||this.r_()}r_(){return 2===this.state||3===this.state}start(){this.e_=0,4!==this.state?this.auth():this.i_()}async stop(){this.n_()&&await this.close(0)}s_(){this.state=0,this.t_.reset()}o_(){this.r_()&&null===this.Zo&&(this.Zo=this.ui.enqueueAfterDelay(this.Ho,6e4,(()=>this.__())))}a_(n){this.u_(),this.stream.send(n)}async __(){if(this.r_())return this.close(0)}u_(){this.Zo&&(this.Zo.cancel(),this.Zo=null)}c_(){this.Xo&&(this.Xo.cancel(),this.Xo=null)}async close(n,e){this.u_(),this.c_(),this.t_.cancel(),this.Yo++,4!==n?this.t_.reset():e&&e.code===ho.RESOURCE_EXHAUSTED?(ro(e.toString()),ro("Using maximum backoff delay to prevent overloading the backend."),this.t_.Wo()):e&&e.code===ho.UNAUTHENTICATED&&3!==this.state&&(this.authCredentialsProvider.invalidateToken(),this.appCheckCredentialsProvider.invalidateToken()),null!==this.stream&&(this.l_(),this.stream.close(),this.stream=null),this.state=n,await this.listener.mo(e)}l_(){}auth(){this.state=1;const n=this.h_(this.Yo),e=this.Yo;Promise.all([this.authCredentialsProvider.getToken(),this.appCheckCredentialsProvider.getToken()]).then((([n,t])=>{this.Yo===e&&this.P_(n,t)}),(e=>{n((()=>{const n=new fo(ho.UNKNOWN,"Fetching auth token failed: "+e.message);return this.I_(n)}))}))}P_(n,e){const t=this.h_(this.Yo);this.stream=this.T_(n,e),this.stream.Eo((()=>{t((()=>this.listener.Eo()))})),this.stream.Ro((()=>{t((()=>(this.state=2,this.Xo=this.ui.enqueueAfterDelay(this.Jo,1e4,(()=>(this.r_()&&(this.state=3),Promise.resolve()))),this.listener.Ro())))})),this.stream.mo((n=>{t((()=>this.I_(n)))})),this.stream.onMessage((n=>{t((()=>1==++this.e_?this.E_(n):this.onNext(n)))}))}i_(){this.state=5,this.t_.Go((async()=>{this.state=0,this.start()}))}I_(n){return io("PersistentStream",`close with error: ${n}`),this.stream=null,this.close(4,n)}h_(n){return e=>{this.ui.enqueueAndForget((()=>this.Yo===n?e():(io("PersistentStream","stream callback skipped by getCloseGuardedDispatcher."),Promise.resolve())))}}}class su extends ou{constructor(n,e,t,a,i,r){super(n,"write_stream_connection_backoff","write_stream_idle","health_check_timeout",e,t,a,r),this.serializer=i}get V_(){return this.e_>0}start(){this.lastStreamToken=void 0,super.start()}l_(){this.V_&&this.m_([])}T_(n,e){return this.connection.Bo("Write",n,e)}E_(n){return co(!!n.streamToken),this.lastStreamToken=n.streamToken,co(!n.writeResults||0===n.writeResults.length),this.listener.f_()}onNext(n){co(!!n.streamToken),this.lastStreamToken=n.streamToken,this.t_.reset();const e=function(n,e){return n&&n.length>0?(co(void 0!==e),n.map((n=>function(n,e){let t=n.updateTime?cc(n.updateTime):cc(e);return t.isEqual(Eo.min())&&(t=cc(e)),new Ol(t,n.transformResults||[])}(n,e)))):[]}(n.writeResults,n.commitTime),t=cc(n.commitTime);return this.listener.g_(t,e)}p_(){const n={};n.database=function(n){return new Po(["projects",n.databaseId.projectId,"databases",n.databaseId.database]).canonicalString()}(this.serializer),this.a_(n)}m_(n){const e={streamToken:this.lastStreamToken,writes:n.map((n=>function(n,e){let t;if(e instanceof ql)t={update:mc(n,e.key,e.value)};else if(e instanceof Xl)t={delete:hc(n,e.key)};else if(e instanceof Jl)t={update:mc(n,e.key,e.data),updateMask:bc(e.fieldMask)};else{if(!(e instanceof Zl))return lo();t={verify:hc(n,e.key)}}return e.fieldTransforms.length>0&&(t.updateTransforms=e.fieldTransforms.map((n=>function(n,e){const t=e.transform;if(t instanceof Pl)return{fieldPath:e.field.canonicalString(),setToServerValue:"REQUEST_TIME"};if(t instanceof _l)return{fieldPath:e.field.canonicalString(),appendMissingElements:{values:t.elements}};if(t instanceof Dl)return{fieldPath:e.field.canonicalString(),removeAllFromArray:{values:t.elements}};if(t instanceof Nl)return{fieldPath:e.field.canonicalString(),increment:t.Pe};throw lo()}(0,n)))),e.precondition.isNone||(t.currentDocument=function(n,e){return void 0!==e.updateTime?{updateTime:lc(n,e.updateTime)}:void 0!==e.exists?{exists:e.exists}:lo()}(n,e.precondition)),t}(this.serializer,n)))};this.a_(e)}}class lu extends class{}{constructor(n,e,t,a){super(),this.authCredentials=n,this.appCheckCredentials=e,this.connection=t,this.serializer=a,this.y_=!1}w_(){if(this.y_)throw new fo(ho.FAILED_PRECONDITION,"The client has already been terminated.")}Mo(n,e,t,a){return this.w_(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then((([i,r])=>this.connection.Mo(n,dc(e,t),a,i,r))).catch((n=>{throw"FirebaseError"===n.name?(n.code===ho.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),n):new fo(ho.UNKNOWN,n.toString())}))}Lo(n,e,t,a,i){return this.w_(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then((([r,o])=>this.connection.Lo(n,dc(e,t),a,r,o,i))).catch((n=>{throw"FirebaseError"===n.name?(n.code===ho.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),n):new fo(ho.UNKNOWN,n.toString())}))}terminate(){this.y_=!0,this.connection.terminate()}}class cu{constructor(n,e){this.asyncQueue=n,this.onlineStateHandler=e,this.state="Unknown",this.S_=0,this.b_=null,this.D_=!0}v_(){0===this.S_&&(this.C_("Unknown"),this.b_=this.asyncQueue.enqueueAfterDelay("online_state_timeout",1e4,(()=>(this.b_=null,this.F_("Backend didn't respond within 10 seconds."),this.C_("Offline"),Promise.resolve()))))}M_(n){"Online"===this.state?this.C_("Unknown"):(this.S_++,this.S_>=1&&(this.x_(),this.F_(`Connection failed 1 times. Most recent error: ${n.toString()}`),this.C_("Offline")))}set(n){this.x_(),this.S_=0,"Online"===n&&(this.D_=!1),this.C_(n)}C_(n){n!==this.state&&(this.state=n,this.onlineStateHandler(n))}F_(n){const e=`Could not reach Cloud Firestore backend. ${n}\nThis typically indicates that your device does not have a healthy Internet connection at the moment. The client will operate in offline mode until it is able to successfully connect to the backend.`;this.D_?(ro(e),this.D_=!1):io("OnlineStateTracker",e)}x_(){null!==this.b_&&(this.b_.cancel(),this.b_=null)}}class uu{constructor(n,e,t,a,i){this.localStore=n,this.datastore=e,this.asyncQueue=t,this.remoteSyncer={},this.O_=[],this.N_=new Map,this.L_=new Set,this.B_=[],this.k_=i,this.k_._o((n=>{t.enqueueAndForget((async()=>{fu(this)&&(io("RemoteStore","Restarting streams for network reachability change."),await async function(n){const e=uo(n);e.L_.add(4),await hu(e),e.q_.set("Unknown"),e.L_.delete(4),await du(e)}(this))}))})),this.q_=new cu(t,a)}}async function du(n){if(fu(n))for(const e of n.B_)await e(!0)}async function hu(n){for(const e of n.B_)await e(!1)}function fu(n){return 0===uo(n).L_.size}async function mu(n,e,t){if(!jo(e))throw e;n.L_.add(1),await hu(n),n.q_.set("Offline"),t||(t=()=>function(n){const e=uo(n);return e.persistence.runTransaction("Get last remote snapshot version","readonly",(n=>e.Ur.getLastRemoteSnapshotVersion(n)))}(n.localStore)),n.asyncQueue.enqueueRetryable((async()=>{io("RemoteStore","Retrying IndexedDB access"),await t(),n.L_.delete(1),await du(n)}))}function pu(n,e){return e().catch((t=>mu(n,t,e)))}async function gu(n){const e=uo(n),t=Tu(e);let a=e.O_.length>0?e.O_[e.O_.length-1].batchId:-1;for(;yu(e);)try{const n=await Kc(e.localStore,a);if(null===n){0===e.O_.length&&t.o_();break}a=n.batchId,bu(e,n)}catch(n){await mu(e,n)}vu(e)&&xu(e)}function yu(n){return fu(n)&&n.O_.length<10}function bu(n,e){n.O_.push(e);const t=Tu(n);t.r_()&&t.V_&&t.m_(e.mutations)}function vu(n){return fu(n)&&!Tu(n).n_()&&n.O_.length>0}function xu(n){Tu(n).start()}async function ku(n){Tu(n).p_()}async function wu(n){const e=Tu(n);for(const t of n.O_)e.m_(t.mutations)}async function Cu(n,e,t){const a=n.O_.shift(),i=ec.from(a,e,t);await pu(n,(()=>n.remoteSyncer.applySuccessfulWrite(i))),await gu(n)}async function Su(n,e){e&&Tu(n).V_&&await async function(n,e){if(function(n){return function(n){switch(n){default:return lo();case ho.CANCELLED:case ho.UNKNOWN:case ho.DEADLINE_EXCEEDED:case ho.RESOURCE_EXHAUSTED:case ho.INTERNAL:case ho.UNAVAILABLE:case ho.UNAUTHENTICATED:return!1;case ho.INVALID_ARGUMENT:case ho.NOT_FOUND:case ho.ALREADY_EXISTS:case ho.PERMISSION_DENIED:case ho.FAILED_PRECONDITION:case ho.ABORTED:case ho.OUT_OF_RANGE:case ho.UNIMPLEMENTED:case ho.DATA_LOSS:return!0}}(n)&&n!==ho.ABORTED}(e.code)){const t=n.O_.shift();Tu(n).s_(),await pu(n,(()=>n.remoteSyncer.rejectFailedWrite(t.batchId,e))),await gu(n)}}(n,e),vu(n)&&xu(n)}async function Au(n,e){const t=uo(n);t.asyncQueue.verifyOperationInProgress(),io("RemoteStore","RemoteStore received new credentials");const a=fu(t);t.L_.add(3),await hu(t),a&&t.q_.set("Unknown"),await t.remoteSyncer.handleCredentialChange(e),t.L_.delete(3),await du(t)}function Tu(n){return n.U_||(n.U_=function(n,e,t){const a=uo(n);return a.w_(),new su(e,a.connection,a.authCredentials,a.appCheckCredentials,a.serializer,t)}(n.datastore,n.asyncQueue,{Eo:()=>Promise.resolve(),Ro:ku.bind(null,n),mo:Su.bind(null,n),f_:wu.bind(null,n),g_:Cu.bind(null,n)}),n.B_.push((async e=>{e?(n.U_.s_(),await gu(n)):(await n.U_.stop(),n.O_.length>0&&(io("RemoteStore",`Stopping write stream with ${n.O_.length} pending writes`),n.O_=[]))}))),n.U_}class Iu{constructor(n,e,t,a,i){this.asyncQueue=n,this.timerId=e,this.targetTimeMs=t,this.op=a,this.removalCallback=i,this.deferred=new mo,this.then=this.deferred.promise.then.bind(this.deferred.promise),this.deferred.promise.catch((n=>{}))}get promise(){return this.deferred.promise}static createAndSchedule(n,e,t,a,i){const r=Date.now()+t,o=new Iu(n,e,r,a,i);return o.start(t),o}start(n){this.timerHandle=setTimeout((()=>this.handleDelayElapsed()),n)}skipDelay(){return this.handleDelayElapsed()}cancel(n){null!==this.timerHandle&&(this.clearTimeout(),this.deferred.reject(new fo(ho.CANCELLED,"Operation cancelled"+(n?": "+n:""))))}handleDelayElapsed(){this.asyncQueue.enqueueAndForget((()=>null!==this.timerHandle?(this.clearTimeout(),this.op().then((n=>this.deferred.resolve(n)))):Promise.resolve()))}clearTimeout(){null!==this.timerHandle&&(this.removalCallback(this),clearTimeout(this.timerHandle),this.timerHandle=null)}}function Eu(n,e){if(ro("AsyncQueue",`${e}: ${n}`),jo(n))return new fo(ho.UNAVAILABLE,`${e}: ${n}`);throw n}class Mu{constructor(){this.queries=Pu(),this.onlineState="Unknown",this.Y_=new Set}terminate(){!function(n,e){const t=uo(n),a=t.queries;t.queries=Pu(),a.forEach(((n,t)=>{for(const n of t.j_)n.onError(e)}))}(this,new fo(ho.ABORTED,"Firestore shutting down"))}}function Pu(){return new ul((n=>ol(n)),rl)}var _u,Ru;(Ru=_u||(_u={})).ea="default",Ru.Cache="cache";class Du{constructor(n,e,t,a,i,r){this.localStore=n,this.remoteStore=e,this.eventManager=t,this.sharedClientState=a,this.currentUser=i,this.maxConcurrentLimboResolutions=r,this.Ca={},this.Fa=new ul((n=>ol(n)),rl),this.Ma=new Map,this.xa=new Set,this.Oa=new Jo(Do.comparator),this.Na=new Map,this.La=new Rc,this.Ba={},this.ka=new Map,this.qa=Ac.kn(),this.onlineState="Unknown",this.Qa=void 0}get isPrimaryClient(){return!0===this.Qa}}function Lu(n,e,t){const a=uo(n);if(a.isPrimaryClient&&0===t||!a.isPrimaryClient&&1===t){const n=[];a.Fa.forEach(((t,a)=>{const i=a.view.Z_(e);i.snapshot&&n.push(i.snapshot)})),function(n,e){const t=uo(n);t.onlineState=e;let a=!1;t.queries.forEach(((n,t)=>{for(const n of t.j_)n.Z_(e)&&(a=!0)})),a&&function(n){n.Y_.forEach((n=>{n.next()}))}(t)}(a.eventManager,e),n.length&&a.Ca.d_(n),a.onlineState=e,a.isPrimaryClient&&a.sharedClientState.setOnlineState(e)}}async function Nu(n,e){const t=uo(n),a=e.batch.batchId;try{const n=await function(n,e){const t=uo(n);return t.persistence.runTransaction("Acknowledge batch","readwrite-primary",(n=>{const a=e.batch.keys(),i=t.cs.newChangeBuffer({trackRemovals:!0});return function(n,e,t,a){const i=t.batch,r=i.keys();let o=Go.resolve();return r.forEach((n=>{o=o.next((()=>a.getEntry(e,n))).next((e=>{const r=t.docVersions.get(n);co(null!==r),e.version.compareTo(r)<0&&(i.applyToRemoteDocument(e,t),e.isValidDocument()&&(e.setReadTime(t.commitVersion),a.addEntry(e)))}))})),o.next((()=>n.mutationQueue.removeMutationBatch(e,i)))}(t,n,e,i).next((()=>i.apply(n))).next((()=>t.mutationQueue.performConsistencyCheck(n))).next((()=>t.documentOverlayCache.removeOverlaysForBatchId(n,a,e.batch.batchId))).next((()=>t.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(n,function(n){let e=kl();for(let t=0;t0&&(e=e.add(n.batch.mutations[t].key));return e}(e)))).next((()=>t.localDocuments.getDocuments(n,a)))}))}(t.localStore,e);Ou(t,a,null),zu(t,a),t.sharedClientState.updateMutationState(a,"acknowledged"),await Fu(t,n)}catch(n){await Fo(n)}}async function Bu(n,e,t){const a=uo(n);try{const n=await function(n,e){const t=uo(n);return t.persistence.runTransaction("Reject batch","readwrite-primary",(n=>{let a;return t.mutationQueue.lookupMutationBatch(n,e).next((e=>(co(null!==e),a=e.keys(),t.mutationQueue.removeMutationBatch(n,e)))).next((()=>t.mutationQueue.performConsistencyCheck(n))).next((()=>t.documentOverlayCache.removeOverlaysForBatchId(n,a,e))).next((()=>t.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(n,a))).next((()=>t.localDocuments.getDocuments(n,a)))}))}(a.localStore,e);Ou(a,e,t),zu(a,e),a.sharedClientState.updateMutationState(e,"rejected",t),await Fu(a,n)}catch(t){await Fo(t)}}function zu(n,e){(n.ka.get(e)||[]).forEach((n=>{n.resolve()})),n.ka.delete(e)}function Ou(n,e,t){const a=uo(n);let i=a.Ba[a.currentUser.toKey()];if(i){const n=i.get(e);n&&(t?n.reject(t):n.resolve(),i=i.remove(e)),a.Ba[a.currentUser.toKey()]=i}}async function Fu(n,e,t){const a=uo(n),i=[],r=[],o=[];a.Fa.isEmpty()||(a.Fa.forEach(((n,s)=>{o.push(a.Ka(s,e,t).then((n=>{var e;if((n||t)&&a.isPrimaryClient){const i=n?!n.fromCache:null===(e=null==t?void 0:t.targetChanges.get(s.targetId))||void 0===e?void 0:e.current;a.sharedClientState.updateQueryState(s.targetId,i?"current":"not-current")}if(n){i.push(n);const e=jc.Wi(s.targetId,n);r.push(e)}})))})),await Promise.all(o),a.Ca.d_(i),await async function(n,e){const t=uo(n);try{await t.persistence.runTransaction("notifyLocalViewChanges","readwrite",(n=>Go.forEach(e,(e=>Go.forEach(e.$i,(a=>t.persistence.referenceDelegate.addReference(n,e.targetId,a))).next((()=>Go.forEach(e.Ui,(a=>t.persistence.referenceDelegate.removeReference(n,e.targetId,a)))))))))}catch(n){if(!jo(n))throw n;io("LocalStore","Failed to update sequence numbers: "+n)}for(const n of e){const e=n.targetId;if(!n.fromCache){const n=t.os.get(e),a=n.snapshotVersion,i=n.withLastLimboFreeSnapshotVersion(a);t.os=t.os.insert(e,i)}}}(a.localStore,r))}async function Gu(n,e){const t=uo(n);if(!t.currentUser.isEqual(e)){io("SyncEngine","User change. New user:",e.toKey());const n=await Wc(t.localStore,e);t.currentUser=e,function(n,e){n.ka.forEach((n=>{n.forEach((n=>{n.reject(new fo(ho.CANCELLED,"'waitForPendingWrites' promise is rejected due to a user change."))}))})),n.ka.clear()}(t),t.sharedClientState.handleUserChange(e,n.removedBatchIds,n.addedBatchIds),await Fu(t,n.hs)}}function ju(n){const e=uo(n);return e.remoteStore.remoteSyncer.applySuccessfulWrite=Nu.bind(null,e),e.remoteStore.remoteSyncer.rejectFailedWrite=Bu.bind(null,e),e}class Uu{constructor(){this.synchronizeTabs=!1}async initialize(n){this.serializer=iu(n.databaseInfo.databaseId),this.sharedClientState=this.createSharedClientState(n),this.persistence=this.createPersistence(n),await this.persistence.start(),this.localStore=this.createLocalStore(n),this.gcScheduler=this.createGarbageCollectionScheduler(n,this.localStore),this.indexBackfillerScheduler=this.createIndexBackfillerScheduler(n,this.localStore)}createGarbageCollectionScheduler(n,e){return null}createIndexBackfillerScheduler(n,e){return null}createLocalStore(n){return function(n,e,t,a){return new Vc(n,e,t,a)}(this.persistence,new Hc,n.initialUser,this.serializer)}createPersistence(n){return new Oc(Gc.Zr,this.serializer)}createSharedClientState(n){return new Jc}async terminate(){var n,e;null===(n=this.gcScheduler)||void 0===n||n.stop(),null===(e=this.indexBackfillerScheduler)||void 0===e||e.stop(),this.sharedClientState.shutdown(),await this.persistence.shutdown()}}class Hu{async initialize(n,e){this.localStore||(this.localStore=n.localStore,this.sharedClientState=n.sharedClientState,this.datastore=this.createDatastore(e),this.remoteStore=this.createRemoteStore(e),this.eventManager=this.createEventManager(e),this.syncEngine=this.createSyncEngine(e,!n.synchronizeTabs),this.sharedClientState.onlineStateHandler=n=>Lu(this.syncEngine,n,1),this.remoteStore.remoteSyncer.handleCredentialChange=Gu.bind(null,this.syncEngine),await async function(n,e){const t=uo(n);e?(t.L_.delete(2),await du(t)):e||(t.L_.add(2),await hu(t),t.q_.set("Unknown"))}(this.remoteStore,this.syncEngine.isPrimaryClient))}createEventManager(n){return new Mu}createDatastore(n){const e=iu(n.databaseInfo.databaseId),t=function(n){return new tu(n)}(n.databaseInfo);return function(n,e,t,a){return new lu(n,e,t,a)}(n.authCredentials,n.appCheckCredentials,t,e)}createRemoteStore(n){return function(n,e,t,a,i){return new uu(n,e,t,a,i)}(this.localStore,this.datastore,n.asyncQueue,(n=>Lu(this.syncEngine,n,0)),Yc.D()?new Yc:new $c)}createSyncEngine(n,e){return function(n,e,t,a,i,r,o){const s=new Du(n,e,t,a,i,r);return o&&(s.Qa=!0),s}(this.localStore,this.remoteStore,this.eventManager,this.sharedClientState,n.initialUser,n.maxConcurrentLimboResolutions,e)}async terminate(){var n,e;await async function(n){const e=uo(n);io("RemoteStore","RemoteStore shutting down."),e.L_.add(5),await hu(e),e.k_.shutdown(),e.q_.set("Unknown")}(this.remoteStore),null===(n=this.datastore)||void 0===n||n.terminate(),null===(e=this.eventManager)||void 0===e||e.terminate()}}class Vu{constructor(n,e,t,a){this.authCredentials=n,this.appCheckCredentials=e,this.asyncQueue=t,this.databaseInfo=a,this.user=no.UNAUTHENTICATED,this.clientId=So.newId(),this.authCredentialListener=()=>Promise.resolve(),this.appCheckCredentialListener=()=>Promise.resolve(),this.authCredentials.start(t,(async n=>{io("FirestoreClient","Received user=",n.uid),await this.authCredentialListener(n),this.user=n})),this.appCheckCredentials.start(t,(n=>(io("FirestoreClient","Received new app check token=",n),this.appCheckCredentialListener(n,this.user))))}get configuration(){return{asyncQueue:this.asyncQueue,databaseInfo:this.databaseInfo,clientId:this.clientId,authCredentials:this.authCredentials,appCheckCredentials:this.appCheckCredentials,initialUser:this.user,maxConcurrentLimboResolutions:100}}setCredentialChangeListener(n){this.authCredentialListener=n}setAppCheckTokenChangeListener(n){this.appCheckCredentialListener=n}verifyNotTerminated(){if(this.asyncQueue.isShuttingDown)throw new fo(ho.FAILED_PRECONDITION,"The client has already been terminated.")}terminate(){this.asyncQueue.enterRestrictedMode();const n=new mo;return this.asyncQueue.enqueueAndForgetEvenWhileRestricted((async()=>{try{this._onlineComponents&&await this._onlineComponents.terminate(),this._offlineComponents&&await this._offlineComponents.terminate(),this.authCredentials.shutdown(),this.appCheckCredentials.shutdown(),n.resolve()}catch(e){const t=Eu(e,"Failed to shutdown persistence");n.reject(t)}})),n.promise}}async function Wu(n,e){n.asyncQueue.verifyOperationInProgress(),io("FirestoreClient","Initializing OfflineComponentProvider");const t=n.configuration;await e.initialize(t);let a=t.initialUser;n.setCredentialChangeListener((async n=>{a.isEqual(n)||(await Wc(e.localStore,n),a=n)})),e.persistence.setDatabaseDeletedListener((()=>n.terminate())),n._offlineComponents=e}async function Ku(n,e){n.asyncQueue.verifyOperationInProgress();const t=await async function(n){if(!n._offlineComponents)if(n._uninitializedComponentsProvider){io("FirestoreClient","Using user provided OfflineComponentProvider");try{await Wu(n,n._uninitializedComponentsProvider._offline)}catch(e){const t=e;if(!function(n){return"FirebaseError"===n.name?n.code===ho.FAILED_PRECONDITION||n.code===ho.UNIMPLEMENTED:!("undefined"!=typeof DOMException&&n instanceof DOMException)||22===n.code||20===n.code||11===n.code}(t))throw t;oo("Error using user provided cache. Falling back to memory cache: "+t),await Wu(n,new Uu)}}else io("FirestoreClient","Using default OfflineComponentProvider"),await Wu(n,new Uu);return n._offlineComponents}(n);io("FirestoreClient","Initializing OnlineComponentProvider"),await e.initialize(t,n.configuration),n.setCredentialChangeListener((n=>Au(e.remoteStore,n))),n.setAppCheckTokenChangeListener(((n,t)=>Au(e.remoteStore,t))),n._onlineComponents=e}function qu(n){return async function(n){return n._onlineComponents||(n._uninitializedComponentsProvider?(io("FirestoreClient","Using user provided OnlineComponentProvider"),await Ku(n,n._uninitializedComponentsProvider._online)):(io("FirestoreClient","Using default OnlineComponentProvider"),await Ku(n,new Hu))),n._onlineComponents}(n).then((n=>n.syncEngine))}function Ju(n){const e={};return void 0!==n.timeoutSeconds&&(e.timeoutSeconds=n.timeoutSeconds),e}const $u=new Map;function Yu(n,e,t){if(!t)throw new fo(ho.INVALID_ARGUMENT,`Function ${n}() cannot be called with an empty ${e}.`)}function Qu(n){if(!Do.isDocumentKey(n))throw new fo(ho.INVALID_ARGUMENT,`Invalid document reference. Document references must have an even number of segments, but ${n} has ${n.length}.`)}function Xu(n){if(Do.isDocumentKey(n))throw new fo(ho.INVALID_ARGUMENT,`Invalid collection reference. Collection references must have an odd number of segments, but ${n} has ${n.length}.`)}function Zu(n){if(void 0===n)return"undefined";if(null===n)return"null";if("string"==typeof n)return n.length>20&&(n=`${n.substring(0,20)}...`),JSON.stringify(n);if("number"==typeof n||"boolean"==typeof n)return""+n;if("object"==typeof n){if(n instanceof Array)return"an array";{const e=function(n){return n.constructor?n.constructor.name:null}(n);return e?`a custom ${e} object`:"an object"}}return"function"==typeof n?"a function":lo()}function nd(n,e){if("_delegate"in n&&(n=n._delegate),!(n instanceof e)){if(e.name===n.constructor.name)throw new fo(ho.INVALID_ARGUMENT,"Type does not match the expected instance. Did you pass a reference from a different Firestore SDK?");{const t=Zu(n);throw new fo(ho.INVALID_ARGUMENT,`Expected type '${e.name}', but it was: ${t}`)}}return n}class ed{constructor(n){var e,t;if(void 0===n.host){if(void 0!==n.ssl)throw new fo(ho.INVALID_ARGUMENT,"Can't provide ssl option if host option is not set");this.host="firestore.googleapis.com",this.ssl=!0}else this.host=n.host,this.ssl=null===(e=n.ssl)||void 0===e||e;if(this.credentials=n.credentials,this.ignoreUndefinedProperties=!!n.ignoreUndefinedProperties,this.localCache=n.localCache,void 0===n.cacheSizeBytes)this.cacheSizeBytes=41943040;else{if(-1!==n.cacheSizeBytes&&n.cacheSizeBytes<1048576)throw new fo(ho.INVALID_ARGUMENT,"cacheSizeBytes must be at least 1048576");this.cacheSizeBytes=n.cacheSizeBytes}(function(n,e,t,a){if(!0===e&&!0===a)throw new fo(ho.INVALID_ARGUMENT,"experimentalForceLongPolling and experimentalAutoDetectLongPolling cannot be used together.")})(0,n.experimentalForceLongPolling,0,n.experimentalAutoDetectLongPolling),this.experimentalForceLongPolling=!!n.experimentalForceLongPolling,this.experimentalForceLongPolling?this.experimentalAutoDetectLongPolling=!1:void 0===n.experimentalAutoDetectLongPolling?this.experimentalAutoDetectLongPolling=!0:this.experimentalAutoDetectLongPolling=!!n.experimentalAutoDetectLongPolling,this.experimentalLongPollingOptions=Ju(null!==(t=n.experimentalLongPollingOptions)&&void 0!==t?t:{}),function(n){if(void 0!==n.timeoutSeconds){if(isNaN(n.timeoutSeconds))throw new fo(ho.INVALID_ARGUMENT,`invalid long polling timeout: ${n.timeoutSeconds} (must not be NaN)`);if(n.timeoutSeconds<5)throw new fo(ho.INVALID_ARGUMENT,`invalid long polling timeout: ${n.timeoutSeconds} (minimum allowed value is 5)`);if(n.timeoutSeconds>30)throw new fo(ho.INVALID_ARGUMENT,`invalid long polling timeout: ${n.timeoutSeconds} (maximum allowed value is 30)`)}}(this.experimentalLongPollingOptions),this.useFetchStreams=!!n.useFetchStreams}isEqual(n){return this.host===n.host&&this.ssl===n.ssl&&this.credentials===n.credentials&&this.cacheSizeBytes===n.cacheSizeBytes&&this.experimentalForceLongPolling===n.experimentalForceLongPolling&&this.experimentalAutoDetectLongPolling===n.experimentalAutoDetectLongPolling&&function(n,e){return n.timeoutSeconds===e.timeoutSeconds}(this.experimentalLongPollingOptions,n.experimentalLongPollingOptions)&&this.ignoreUndefinedProperties===n.ignoreUndefinedProperties&&this.useFetchStreams===n.useFetchStreams}}class td{constructor(n,e,t,a){this._authCredentials=n,this._appCheckCredentials=e,this._databaseId=t,this._app=a,this.type="firestore-lite",this._persistenceKey="(lite)",this._settings=new ed({}),this._settingsFrozen=!1}get app(){if(!this._app)throw new fo(ho.FAILED_PRECONDITION,"Firestore was not initialized using the Firebase SDK. 'app' is not available");return this._app}get _initialized(){return this._settingsFrozen}get _terminated(){return void 0!==this._terminateTask}_setSettings(n){if(this._settingsFrozen)throw new fo(ho.FAILED_PRECONDITION,"Firestore has already been started and its settings can no longer be changed. You can only modify settings before calling any other methods on a Firestore object.");this._settings=new ed(n),void 0!==n.credentials&&(this._authCredentials=function(n){if(!n)return new go;switch(n.type){case"firstParty":return new xo(n.sessionIndex||"0",n.iamToken||null,n.authTokenFactory||null);case"provider":return n.client;default:throw new fo(ho.INVALID_ARGUMENT,"makeAuthCredentialsProvider failed due to invalid credential type")}}(n.credentials))}_getSettings(){return this._settings}_freezeSettings(){return this._settingsFrozen=!0,this._settings}_delete(){return this._terminateTask||(this._terminateTask=this._terminate()),this._terminateTask}toJSON(){return{app:this._app,databaseId:this._databaseId,settings:this._settings}}_terminate(){return function(n){const e=$u.get(n);e&&(io("ComponentProvider","Removing Datastore"),$u.delete(n),e.terminate())}(this),Promise.resolve()}}class ad{constructor(n,e,t){this.converter=e,this._query=t,this.type="query",this.firestore=n}withConverter(n){return new ad(this.firestore,n,this._query)}}class id{constructor(n,e,t){this.converter=e,this._key=t,this.type="document",this.firestore=n}get _path(){return this._key.path}get id(){return this._key.path.lastSegment()}get path(){return this._key.path.canonicalString()}get parent(){return new rd(this.firestore,this.converter,this._key.path.popLast())}withConverter(n){return new id(this.firestore,n,this._key)}}class rd extends ad{constructor(n,e,t){super(n,e,function(n){return new nl(n)}(t)),this._path=t,this.type="collection"}get id(){return this._query.path.lastSegment()}get path(){return this._query.path.canonicalString()}get parent(){const n=this._path.popLast();return n.isEmpty()?null:new id(this.firestore,null,new Do(n))}withConverter(n){return new rd(this.firestore,n,this._path)}}class od{constructor(){this.au=Promise.resolve(),this.uu=[],this.cu=!1,this.lu=[],this.hu=null,this.Pu=!1,this.Iu=!1,this.Tu=[],this.t_=new ru(this,"async_queue_retry"),this.Eu=()=>{const n=au();n&&io("AsyncQueue","Visibility state changed to "+n.visibilityState),this.t_.jo()};const n=au();n&&"function"==typeof n.addEventListener&&n.addEventListener("visibilitychange",this.Eu)}get isShuttingDown(){return this.cu}enqueueAndForget(n){this.enqueue(n)}enqueueAndForgetEvenWhileRestricted(n){this.du(),this.Au(n)}enterRestrictedMode(n){if(!this.cu){this.cu=!0,this.Iu=n||!1;const e=au();e&&"function"==typeof e.removeEventListener&&e.removeEventListener("visibilitychange",this.Eu)}}enqueue(n){if(this.du(),this.cu)return new Promise((()=>{}));const e=new mo;return this.Au((()=>this.cu&&this.Iu?Promise.resolve():(n().then(e.resolve,e.reject),e.promise))).then((()=>e.promise))}enqueueRetryable(n){this.enqueueAndForget((()=>(this.uu.push(n),this.Ru())))}async Ru(){if(0!==this.uu.length){try{await this.uu[0](),this.uu.shift(),this.t_.reset()}catch(n){if(!jo(n))throw n;io("AsyncQueue","Operation failed with retryable error: "+n)}this.uu.length>0&&this.t_.Go((()=>this.Ru()))}}Au(n){const e=this.au.then((()=>(this.Pu=!0,n().catch((n=>{this.hu=n,this.Pu=!1;const e=function(n){let e=n.message||"";return n.stack&&(e=n.stack.includes(n.message)?n.stack:n.message+"\n"+n.stack),e}(n);throw ro("INTERNAL UNHANDLED ERROR: ",e),n})).then((n=>(this.Pu=!1,n))))));return this.au=e,e}enqueueAfterDelay(n,e,t){this.du(),this.Tu.indexOf(n)>-1&&(e=0);const a=Iu.createAndSchedule(this,n,e,t,(n=>this.Vu(n)));return this.lu.push(a),a}du(){this.hu&&lo()}verifyOperationInProgress(){}async mu(){let n;do{n=this.au,await n}while(n!==this.au)}fu(n){for(const e of this.lu)if(e.timerId===n)return!0;return!1}gu(n){return this.mu().then((()=>{this.lu.sort(((n,e)=>n.targetTimeMs-e.targetTimeMs));for(const e of this.lu)if(e.skipDelay(),"all"!==n&&e.timerId===n)break;return this.mu()}))}pu(n){this.Tu.push(n)}Vu(n){const e=this.lu.indexOf(n);this.lu.splice(e,1)}}class sd extends td{constructor(n,e,t,a){super(n,e,t,a),this.type="firestore",this._queue=new od,this._persistenceKey=(null==a?void 0:a.name)||"[DEFAULT]"}_terminate(){return this._firestoreClient||ld(this),this._firestoreClient.terminate()}}function ld(n){var e,t,a;const i=n._freezeSettings(),r=function(n,e,t,a){return new cs(n,e,t,a.host,a.ssl,a.experimentalForceLongPolling,a.experimentalAutoDetectLongPolling,Ju(a.experimentalLongPollingOptions),a.useFetchStreams)}(n._databaseId,(null===(e=n._app)||void 0===e?void 0:e.options.appId)||"",n._persistenceKey,i);n._firestoreClient=new Vu(n._authCredentials,n._appCheckCredentials,n._queue,r),(null===(t=i.localCache)||void 0===t?void 0:t._offlineComponentProvider)&&(null===(a=i.localCache)||void 0===a?void 0:a._onlineComponentProvider)&&(n._firestoreClient._uninitializedComponentsProvider={_offlineKind:i.localCache.kind,_offline:i.localCache._offlineComponentProvider,_online:i.localCache._onlineComponentProvider})}class cd{constructor(n){this._byteString=n}static fromBase64String(n){try{return new cd(es.fromBase64String(n))}catch(n){throw new fo(ho.INVALID_ARGUMENT,"Failed to construct data from Base64 string: "+n)}}static fromUint8Array(n){return new cd(es.fromUint8Array(n))}toBase64(){return this._byteString.toBase64()}toUint8Array(){return this._byteString.toUint8Array()}toString(){return"Bytes(base64: "+this.toBase64()+")"}isEqual(n){return this._byteString.isEqual(n._byteString)}}class ud{constructor(...n){for(let e=0;e90)throw new fo(ho.INVALID_ARGUMENT,"Latitude must be a number between -90 and 90, but was: "+n);if(!isFinite(e)||e<-180||e>180)throw new fo(ho.INVALID_ARGUMENT,"Longitude must be a number between -180 and 180, but was: "+e);this._lat=n,this._long=e}get latitude(){return this._lat}get longitude(){return this._long}isEqual(n){return this._lat===n._lat&&this._long===n._long}toJSON(){return{latitude:this._lat,longitude:this._long}}_compareTo(n){return Ao(this._lat,n._lat)||Ao(this._long,n._long)}}class fd{constructor(n){this._values=(n||[]).map((n=>n))}toArray(){return this._values.map((n=>n))}isEqual(n){return function(n,e){if(n.length!==e.length)return!1;for(let t=0;tn.isPrefixOf(e)))||void 0!==this.fieldTransforms.find((e=>n.isPrefixOf(e.field)))}yu(){if(this.path)for(let n=0;nl.covers(n.field)))}else l=null,c=o.fieldTransforms;return new pd(new Ts(s),l,c)}function kd(n,e){if(Cd(n=dn(n)))return Sd("Unsupported field value:",e,n),wd(n,e);if(n instanceof dd)return function(n,e){if(!gd(e.wu))throw e.Mu(`${n._methodName}() can only be used with update() and set()`);if(!e.path)throw e.Mu(`${n._methodName}() is not currently supported inside arrays`);const t=n._toFieldTransform(e);t&&e.fieldTransforms.push(t)}(n,e),null;if(void 0===n&&e.ignoreUndefinedProperties)return null;if(e.path&&e.fieldMask.push(e.path),n instanceof Array){if(e.settings.Du&&4!==e.wu)throw e.Mu("Nested arrays are not supported");return function(n,e){const t=[];let a=0;for(const i of n){let n=kd(i,e.Fu(a));null==n&&(n={nullValue:"NULL_VALUE"}),t.push(n),a++}return{arrayValue:{values:t}}}(n,e)}return function(n,e){if(null===(n=dn(n)))return{nullValue:"NULL_VALUE"};if("number"==typeof n)return Al(e.serializer,n);if("boolean"==typeof n)return{booleanValue:n};if("string"==typeof n)return{stringValue:n};if(n instanceof Date){const t=Io.fromDate(n);return{timestampValue:oc(e.serializer,t)}}if(n instanceof Io){const t=new Io(n.seconds,1e3*Math.floor(n.nanoseconds/1e3));return{timestampValue:oc(e.serializer,t)}}if(n instanceof hd)return{geoPointValue:{latitude:n.latitude,longitude:n.longitude}};if(n instanceof cd)return{bytesValue:sc(e.serializer,n._byteString)};if(n instanceof id){const t=e.databaseId,a=n.firestore._databaseId;if(!a.isEqual(t))throw e.Mu(`Document reference is for database ${a.projectId}/${a.database} but should be for database ${t.projectId}/${t.database}`);return{referenceValue:uc(n.firestore._databaseId||e.databaseId,n._key.path)}}if(n instanceof fd)return function(n,e){return{mapValue:{fields:{__type__:{stringValue:"__vector__"},value:{arrayValue:{values:n.toArray().map((n=>{if("number"!=typeof n)throw e.Mu("VectorValues must only contain numeric values.");return Cl(e.serializer,n)}))}}}}}}(n,e);throw e.Mu(`Unsupported field value: ${Zu(n)}`)}(n,e)}function wd(n,e){const t={};return qo(n)?e.path&&e.path.length>0&&e.fieldMask.push(e.path):Ko(n,((n,a)=>{const i=kd(a,e.bu(n));null!=i&&(t[n]=i)})),{mapValue:{fields:t}}}function Cd(n){return!("object"!=typeof n||null===n||n instanceof Array||n instanceof Date||n instanceof Io||n instanceof hd||n instanceof cd||n instanceof id||n instanceof dd||n instanceof fd)}function Sd(n,e,t){if(!Cd(t)||!function(n){return"object"==typeof n&&null!==n&&(Object.getPrototypeOf(n)===Object.prototype||null===Object.getPrototypeOf(n))}(t)){const a=Zu(t);throw"an object"===a?e.Mu(n+" a custom object"):e.Mu(n+" "+a)}}function Ad(n,e,t){if((e=dn(e))instanceof ud)return e._internalPath;if("string"==typeof e)return function(n,e,t){if(e.search(Td)>=0)throw Id(`Invalid field path (${e}). Paths must not contain '~', '*', '/', '[', or ']'`,n,!1,void 0,t);try{return new ud(...e.split("."))._internalPath}catch(a){throw Id(`Invalid field path (${e}). Paths must not be empty, begin with '.', end with '.', or contain '..'`,n,!1,void 0,t)}}(n,e);throw Id("Field path arguments must be of type string or ",n,!1,void 0,t)}const Td=new RegExp("[~\\*/\\[\\]]");function Id(n,e,t,a,i){const r=a&&!a.isEmpty(),o=void 0!==i;let s=`Function ${e}() called with invalid data`;t&&(s+=" (via `toFirestore()`)"),s+=". ";let l="";return(r||o)&&(l+=" (found",r&&(l+=` in field ${a}`),o&&(l+=` in document ${i}`),l+=")"),new fo(ho.INVALID_ARGUMENT,s+n+l)}function Ed(n,e){return n.some((n=>n.isEqual(e)))}function Md(n,e){return function(n,e){const t=new mo;return n.asyncQueue.enqueueAndForget((async()=>async function(n,e,t){const a=ju(n);try{const n=await function(n,e){const t=uo(n),a=Io.now(),i=e.reduce(((n,e)=>n.add(e.key)),kl());let r,o;return t.persistence.runTransaction("Locally write mutations","readwrite",(n=>{let s=hl(),l=kl();return t.cs.getEntries(n,i).next((n=>{s=n,s.forEach(((n,e)=>{e.isValidDocument()||(l=l.add(n))}))})).next((()=>t.localDocuments.getOverlayedDocuments(n,s))).next((i=>{r=i;const o=[];for(const n of e){const e=Wl(n,r.get(n.key).overlayedDocument);null!=e&&o.push(new Jl(n.key,e,Is(e.value.mapValue),Fl.exists(!0)))}return t.mutationQueue.addMutationBatch(n,a,o,e)})).next((e=>{o=e;const a=e.applyToLocalDocumentSet(r,l);return t.documentOverlayCache.saveOverlays(n,e.batchId,a)}))})).then((()=>({batchId:o.batchId,changes:pl(r)})))}(a.localStore,e);a.sharedClientState.addPendingMutation(n.batchId),function(n,e,t){let a=n.Ba[n.currentUser.toKey()];a||(a=new Jo(Ao)),a=a.insert(e,t),n.Ba[n.currentUser.toKey()]=a}(a,n.batchId,t),await Fu(a,n.changes),await gu(a.remoteStore)}catch(n){const e=Eu(n,"Failed to persist write");t.reject(e)}}(await qu(n),e,t))),t.promise}(function(n){return n._firestoreClient||ld(n),n._firestoreClient.verifyNotTerminated(),n._firestoreClient}(n),e)}new WeakMap,function(n,e=!0){!function(n){eo=n}(ae),Xn(new hn("firestore",((n,{instanceIdentifier:t,options:a})=>{const i=n.getProvider("app").getImmediate(),r=new sd(new bo(n.getProvider("auth-internal")),new wo(n.getProvider("app-check-internal")),function(n,e){if(!Object.prototype.hasOwnProperty.apply(n.options,["projectId"]))throw new fo(ho.INVALID_ARGUMENT,'"projectId" not provided in firebase.initializeApp.');return new us(n.options.projectId,e)}(i,t),i);return a=Object.assign({useFetchStreams:e},a),r._setSettings(a),r}),"PUBLIC").setMultipleInstances(!0)),oe(Zr,"4.7.2",n),oe(Zr,"4.7.2","esm2017")}();var Pd=function(n,e,t,a){return new(t||(t=Promise))((function(i,r){function o(n){try{l(a.next(n))}catch(n){r(n)}}function s(n){try{l(a.throw(n))}catch(n){r(n)}}function l(n){var e;n.done?i(n.value):(e=n.value,e instanceof t?e:new t((function(n){n(e)}))).then(o,s)}l((a=a.apply(n,e||[])).next())}))};let _d=n.TRIES;const Rd=document.querySelectorAll(".sign-in-google-btn"),Dd=document.querySelectorAll(".sign-out-google-btn"),Ld=document.querySelectorAll(".google-sign-in"),Nd=document.querySelectorAll(".user-avatar-img-element"),Bd=document.querySelector(".google-signed-in-username-input"),zd=document.querySelector(".account-settings-save-btn"),Od=document.querySelector(".stats-container"),Fd=document.querySelector(".settings-container"),Gd=document.querySelector(".info-container"),jd=document.querySelector(".leaderboards-container"),Ud=document.querySelector(".account-container"),Hd=(document.querySelectorAll(".value"),document.querySelectorAll(".guess-value")),Vd=document.querySelector(".cover"),Wd=document.querySelector(".stats-icon"),Kd=document.querySelector(".settings-icon"),qd=document.querySelector(".info-icon"),Jd=document.querySelector(".leaderboards-icon"),$d=document.querySelector(".account-icon"),Yd=document.querySelector(".copy-to-clipboard-btn"),Qd=document.querySelectorAll(".key"),Xd=document.querySelector(".next-word-container"),Zd=document.querySelector(".next-word-time-value"),nh=document.querySelector(".word-to-guess"),eh=document.querySelectorAll(".word-to-guess-sqr"),th=document.querySelector(".hard-mode-switch-container"),ah=(document.querySelector(".hard-mode-switch-handle"),document.querySelector(".dark-mode-switch-container"));document.querySelector(".dark-mode-switch-handle");let ih=0,rh=0,oh={correct:new Array(n.WORD_LENGTH),misplaced:[]},sh=[],lh=!1,ch=!1,uh=!1,dh=null;function hh(){nh.classList.remove("displayed"),Xd.classList.remove("displayed"),document.querySelector(".hr-one").style.display="none"}function fh(n,e){oh.correct[n]=e}function mh(n){oh.misplaced.push(n)}function ph(e,t,a){return Pd(this,void 0,void 0,(function*(){if((null==T().triggered||1!==T().triggered)&&Math.random()<1e-4)return setTimeout((()=>{m("Wait, you're feeling EXTREMELY lucky today: You've been granted one more guess!",0,3500,"system")}),1e3),setTimeout((()=>{const e=document.createElement("div");e.classList.add("row-container");for(let t=0;t{const n=new Date(S()),e=`${n.getUTCHours().toString().padStart(2,"0")}:${n.getUTCMinutes().toString().padStart(2,"0")}:${n.getUTCSeconds().toString().padStart(2,"0")}`;y(Zd,e)}),1e3),Yd.classList.remove("disabled");const o=T().wordToGuess,s=gh(g(ih-1),o);for(let n=0;nA().longestStreak&&M("longestStreak",A().currentStreak)),t&&(yield m("You got it!",100*n.WORD_LENGTH+500,1500,"message"))):(a&&M("currentStreak",0),t&&(yield m("Unlucky...",100*n.WORD_LENGTH+500,1500,"message"))),a&&M("winRate",Math.round(A().gamesWon/A().gamesPlayed*100)),vh(!0,A())}))}function gh(e,t){const a={word:e,result:new Array(n.WORD_LENGTH),correctLetters(){let n=0;return this.result.forEach((e=>{"Correct"===e&&n++})),n}},i=t.toLowerCase().split("");for(let n=0;n0?document.getElementById("guess-distrib-7").style.display="grid":document.getElementById("guess-distrib-7").style.display="none",e){if(lh)for(let n=0;n{eh[n].classList.add("flipped"),setTimeout((()=>{eh[n].classList.remove("flipped")}),500)}),200*n);ch&&Hd[ih-1].classList.add("added"),document.querySelector(".games-played-value-p").textContent=t.gamesPlayed.toString(),document.querySelector(".win-rate-value-p").textContent=t.winRate.toString(),document.querySelector(".current-streak-value-p").textContent=t.currentStreak.toString(),document.querySelector(".longest-streak-value-p").textContent=t.longestStreak.toString();for(let n=0;n<_d;n++)y(Hd[n],t.guessDistribution[n].toString());if(t.gamesPlayed>0)for(let n=0;n0&&e<=parseFloat(Hd[n].style.minWidth)&&(e+=1),Hd[n].style.width=`${e}%`}yh(Od)}else bh(Od)}const xh=()=>{document.documentElement.style.setProperty("--background-color",getComputedStyle(document.documentElement).getPropertyValue("--dark-background-color")),document.documentElement.style.setProperty("--background-color-rgb",getComputedStyle(document.documentElement).getPropertyValue("--dark-background-color-rgb")),document.documentElement.style.setProperty("--square-border-color",getComputedStyle(document.documentElement).getPropertyValue("--dark-square-border-color")),document.documentElement.style.setProperty("--square-border-color-rgb",getComputedStyle(document.documentElement).getPropertyValue("--dark-square-border-color-rgb")),document.documentElement.style.setProperty("--filled-color",getComputedStyle(document.documentElement).getPropertyValue("--dark-filled-color")),document.documentElement.style.setProperty("--filled-color-rgb",getComputedStyle(document.documentElement).getPropertyValue("--dark-filled-color-rgb")),document.documentElement.style.setProperty("--correct",getComputedStyle(document.documentElement).getPropertyValue("--dark-correct")),document.documentElement.style.setProperty("--misplaced",getComputedStyle(document.documentElement).getPropertyValue("--dark-misplaced")),document.documentElement.style.setProperty("--wrong",getComputedStyle(document.documentElement).getPropertyValue("--dark-wrong")),document.documentElement.style.setProperty("--error",getComputedStyle(document.documentElement).getPropertyValue("--dark-error")),document.documentElement.style.setProperty("--primary",getComputedStyle(document.documentElement).getPropertyValue("--dark-primary")),document.documentElement.style.setProperty("--primary-rgb",getComputedStyle(document.documentElement).getPropertyValue("--dark-primary-rgb")),document.documentElement.style.setProperty("--secondary",getComputedStyle(document.documentElement).getPropertyValue("--dark-secondary")),document.documentElement.style.setProperty("--secondary-rgb",getComputedStyle(document.documentElement).getPropertyValue("--dark-secondary-rgb")),document.documentElement.style.setProperty("--system-color-rgb",getComputedStyle(document.documentElement).getPropertyValue("--dark-system-color-rgb"))},kh=()=>{document.documentElement.style.setProperty("--background-color",getComputedStyle(document.documentElement).getPropertyValue("--light-background-color")),document.documentElement.style.setProperty("--background-color-rgb",getComputedStyle(document.documentElement).getPropertyValue("--light-background-color-rgb")),document.documentElement.style.setProperty("--square-border-color",getComputedStyle(document.documentElement).getPropertyValue("--light-square-border-color")),document.documentElement.style.setProperty("--square-border-color-rgb",getComputedStyle(document.documentElement).getPropertyValue("--light-square-border-color-rgb")),document.documentElement.style.setProperty("--filled-color",getComputedStyle(document.documentElement).getPropertyValue("--light-filled-color")),document.documentElement.style.setProperty("--filled-color-rgb",getComputedStyle(document.documentElement).getPropertyValue("--light-filled-color-rgb")),document.documentElement.style.setProperty("--correct",getComputedStyle(document.documentElement).getPropertyValue("--light-correct")),document.documentElement.style.setProperty("--misplaced",getComputedStyle(document.documentElement).getPropertyValue("--light-misplaced")),document.documentElement.style.setProperty("--wrong",getComputedStyle(document.documentElement).getPropertyValue("--light-wrong")),document.documentElement.style.setProperty("--error",getComputedStyle(document.documentElement).getPropertyValue("--light-error")),document.documentElement.style.setProperty("--primary",getComputedStyle(document.documentElement).getPropertyValue("--light-primary")),document.documentElement.style.setProperty("--primary-rgb",getComputedStyle(document.documentElement).getPropertyValue("--light-primary-rgb")),document.documentElement.style.setProperty("--secondary",getComputedStyle(document.documentElement).getPropertyValue("--light-secondary")),document.documentElement.style.setProperty("--secondary-rgb",getComputedStyle(document.documentElement).getPropertyValue("--light-secondary-rgb")),document.documentElement.style.setProperty("--system-color-rgb",getComputedStyle(document.documentElement).getPropertyValue("--light-system-color-rgb"))};Vd.addEventListener("click",(()=>{bh(dh)})),qd.addEventListener("click",(()=>{yh(Gd);const n=[document.querySelector(".square.tutorial-sqr.correct"),document.querySelector(".square.tutorial-sqr.misplaced"),document.querySelector(".square.tutorial-sqr.wrong")];for(let e=0;e{n[e].classList.add("flipped")}),250*e),setTimeout((()=>{n[e].classList.remove("flipped")}),250*e+500)})),Jd.addEventListener("click",(()=>{yh(jd)})),$d.addEventListener("click",(()=>{yh(Ud)})),Wd.addEventListener("click",(()=>{vh(!0,A())})),Kd.addEventListener("click",(()=>{yh(Fd)})),Yd.addEventListener("click",(()=>{!function(){Pd(this,void 0,void 0,(function*(){const n=T(),e=[`Wordle ${(new Date).toLocaleDateString()}`];n.guesses.forEach((t=>{let a="";gh(t,n.wordToGuess).result.forEach((n=>{a+="Correct"===n?"🟦":"Misplaced"===n?"🟧":"⬛"})),e.push(a)})),n.guesses[n.guesses.length-1].toLowerCase()===n.wordToGuess.toLowerCase()?e.push(`Guessed the word in ${n.guesses.length} ${1===n.guesses.length?"try":"tries"} in ${"hard"===I().mode?"Hard Mode":"Normal Mode"}.`):e.push("Failed to guess the word for today."),navigator.clipboard.writeText(e.join("\n")),yield m("Copied to clipboard!",0,1500,"system")}))}()})),th.addEventListener("click",(()=>{0===ih?(th.classList.toggle("on"),th.classList.contains("on")?_("hard"):_("normal")):th.classList.contains("on")?m("Hard mode can only be disabled at the start of the round.",0,1500,"error"):m("Hard mode can only be enabled at the start of the round.",0,1500,"error")})),ah.addEventListener("click",(()=>{ah.classList.toggle("on"),ah.classList.contains("on")?(xh(),P("dark")):(kh(),P("light"))})),Qd.forEach((n=>{["mousedown","touchstart"].forEach((e=>{n.addEventListener(e,(()=>{n.classList.contains("wrong")&&n.classList.add("error"),n.classList.add("pressed")}))})),["mouseup","touchend"].forEach((e=>{n.addEventListener(e,(()=>{n.classList.remove("pressed")}))})),["mouseleave","touchcancel"].forEach((e=>{n.addEventListener(e,(()=>{n.classList.contains("pressed")&&n.classList.remove("pressed")}))})),n.addEventListener("click",(()=>{n.classList.add("popped"),setTimeout((()=>{n.classList.remove("popped")}),100);let e=n.textContent;"Delete"===n.textContent&&(e="Backspace");const t=new KeyboardEvent("keydown",{key:e});document.dispatchEvent(t)}))})),document.addEventListener("keydown",(t=>Pd(void 0,void 0,void 0,(function*(){if(!lh&&!uh){let s;if(o=t.key,/^[a-zA-Z]$/.test(o)&&1==o.length&&rh<=n.WORD_LENGTH-1){if("hard"===I().mode){const n=document.querySelector(`.keycode-${t.key.toLowerCase()}`);if(n.classList.contains("wrong"))return n.classList.add("pressed"),n.classList.add("error"),void setTimeout((()=>{n.classList.remove("error"),n.classList.remove("pressed")}),100);if(void 0!==oh.correct[rh]&&oh.correct[rh]!==t.key.toLowerCase())return m("Hard mode is enabled. Revealed hints must be used.",0,1e3,"error"),n.classList.add("pressed"),n.classList.add("error"),void setTimeout((()=>{n.classList.remove("error"),n.classList.remove("pressed")}),100);if(oh.misplaced.includes(t.key.toLowerCase())&&oh.correct[rh]!==t.key.toLowerCase()){let n=oh.misplaced.splice(oh.misplaced.indexOf(t.key.toLowerCase()),1);sh=sh.concat(n)}}const n=p(ih,rh);y(n.firstElementChild,t.key),n.classList.add("popped"),n.classList.add("filled"),n.classList.remove("out"),s=document.querySelector(`.keycode-${t.key.toLowerCase()}`),rh++}else if("Backspace"===t.key){if(s=document.querySelector(".delete"),0!==rh){const n=p(ih,rh-1);"hard"===I().mode&&sh.includes(n.firstElementChild.textContent.toLowerCase())&&(sh.splice(sh.indexOf(n.firstElementChild.textContent.toLowerCase()),1),mh(n.firstElementChild.textContent.toLowerCase())),n.firstElementChild.textContent="",n.classList.add("out"),n.classList.remove("filled"),n.classList.remove("popped"),rh--}}else{if("Enter"!==t.key)return;if(s=document.querySelector(".enter"),rh===n.WORD_LENGTH){const t=g(ih);if(function(n){return e.includes(n.toLowerCase())}(t)){if(0===ih&&th.classList.add("disabled"),"hard"===I().mode){if(oh.misplaced.length>0)return void m("All revealed hints must be used.",0,1e3,"error");sh=[]}const e=gh(t,T().wordToGuess);f(!0),uh=!0,yield b(ih,e,200,250,!0),f(!1),uh=!1,i=ih,r=t,L=T(),L.guesses[i]=r,localStorage.setItem("gameState",JSON.stringify(L)),e.correctLetters()===n.WORD_LENGTH?(ih++,ch=!0,ph(ch,!0,!0)):ih<_d-1?(ih++,rh=0):(ih++,ph(ch,!0,!0))}else{const n=(a=ih,c.childNodes[a]);n.classList.add("shake"),setTimeout((()=>{n.classList.remove("shake")}),100)}}}s.classList.add("pressed"),setTimeout((()=>{s.classList.remove("pressed")}),50)}var a,i,r,o}))));const wh=function(n,e,...t){if(n=dn(n),Yu("collection","path",e),n instanceof td){const a=Po.fromString(e,...t);return Xu(a),new rd(n,null,a)}{if(!(n instanceof id||n instanceof rd))throw new fo(ho.INVALID_ARGUMENT,"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");const a=n._path.child(Po.fromString(e,...t));return Xu(a),new rd(n.firestore,null,a)}}(function(n,e){const t=Zn(re(),"firestore").getImmediate({identifier:"(default)"});if(!t._initialized){const n=(n=>{const e=j("firestore");if(!e)return;const t=e.lastIndexOf(":");if(t<=0||t+1===e.length)throw new Error(`Invalid host ${e} with no separate hostname and port!`);const a=parseInt(e.substring(t+1),10);return"["===e[0]?[e.substring(1,t-1),a]:[e.substring(0,t),a]})();n&&function(n,e,t,a={}){var i;const r=(n=nd(n,td))._getSettings(),o=`${e}:${t}`;if("firestore.googleapis.com"!==r.host&&r.host!==o&&oo("Host has been set in both settings() and connectFirestoreEmulator(), emulator host will be used."),n._setSettings(Object.assign(Object.assign({},r),{host:o,ssl:!1})),a.mockUserToken){let e,t;if("string"==typeof a.mockUserToken)e=a.mockUserToken,t=no.MOCK_USER;else{e=function(n,e){if(n.uid)throw new Error('The "uid" field is no longer supported by mockUserToken. Please use "sub" instead for Firebase Auth User ID.');const t=e||"demo-project",a=n.iat||0,i=n.sub||n.user_id;if(!i)throw new Error("mockUserToken must contain 'sub' or 'user_id' field!");const r=Object.assign({iss:`https://securetoken.google.com/${t}`,aud:t,iat:a,exp:a+3600,auth_time:a,sub:i,user_id:i,firebase:{sign_in_provider:"custom",identities:{}}},n);return[O(JSON.stringify({alg:"none",type:"JWT"})),O(JSON.stringify(r)),""].join(".")}(a.mockUserToken,null===(i=n._app)||void 0===i?void 0:i.options.projectId);const r=a.mockUserToken.sub||a.mockUserToken.user_id;if(!r)throw new fo(ho.INVALID_ARGUMENT,"mockUserToken must contain 'sub' or 'user_id' field!");t=new no(r)}n._authCredentials=new yo(new po(e,t))}}(t,...n)}return t}(),"users"),Ch=Lr(),Sh=n=>{Ld.forEach((n=>n.style.display="none"));const e=document.querySelectorAll(".google-signed-in");Nd.forEach((e=>{e.src=n.currentUser.photoURL,console.log("Src: ",e.src)})),e.forEach((n=>{n.style.display="flex"})),Bd.value=n.currentUser.displayName.slice(0,20),Bd.addEventListener("input",(e=>{e.target.value!==n.currentUser.displayName?zd.disabled=!1:zd.disabled=!0})),zd.addEventListener("click",(()=>{}))},Ah=()=>{Ld.forEach((n=>n.style.display="flex")),document.querySelectorAll(".google-signed-in").forEach((n=>{n.style.display="none"}))};Rd.forEach((n=>{n.addEventListener("click",(()=>Pd(void 0,void 0,void 0,(function*(){try{(function(n){const{user:e,_tokenResponse:t}=n;return e.isAnonymous&&!t?{providerId:null,isNewUser:!1,profile:null}:function(n){var e,t;if(!n)return null;const{providerId:a}=n,i=n.rawUserInfo?JSON.parse(n.rawUserInfo):{},r=n.isNewUser||"identitytoolkit#SignupNewUserResponse"===n.kind;if(!a&&(null==n?void 0:n.idToken)){const a=null===(t=null===(e=ma(n.idToken))||void 0===e?void 0:e.firebase)||void 0===t?void 0:t.sign_in_provider;if(a)return new xi(r,"anonymous"!==a&&"custom"!==a?a:null)}if(!a)return null;switch(a){case"facebook.com":return new wi(r,i);case"github.com":return new Ci(r,i);case"google.com":return new Si(r,i);case"twitter.com":return new Ai(r,i,n.screenName||null);case"custom":case"anonymous":return new xi(r,null);default:return new xi(r,a,i)}}(t)})(yield Or()).isNewUser&&(yield function(n,e,t){n=nd(n,id);const a=nd(n.firestore,sd),i=function(n,e,t){let a;return a=n?t&&(t.merge||t.mergeFields)?n.toFirestore(e,t):n.toFirestore(e):e,a}(n.converter,e,t);return Md(a,[xd(vd(a),"setDoc",n._key,i,null!==n.converter,t).toMutation(n._key,Fl.none())])}(function(n,e,...t){if(n=dn(n),1===arguments.length&&(e=So.newId()),Yu("doc","path",e),n instanceof td){const a=Po.fromString(e,...t);return Qu(a),new id(n,null,new Do(a))}{if(!(n instanceof id||n instanceof rd))throw new fo(ho.INVALID_ARGUMENT,"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");const a=n._path.child(Po.fromString(e,...t));return Qu(a),new id(n.firestore,n instanceof rd?n.converter:null,new Do(a))}}(wh,Ch.currentUser.uid),{username:Bd.value,gameState:JSON.parse(localStorage.getItem("gameState")),userData:JSON.parse(localStorage.getItem("userData")),points:0}))}catch(n){console.log(n)}}))))})),Dd.forEach((n=>{n.addEventListener("click",(()=>Pd(void 0,void 0,void 0,(function*(){yield function(n){return dn(n).signOut()}(Ch),window.location.reload()}))))})),Ch.currentUser?Sh(Ch):Ah(),function(n,e,t,a){dn(n).onAuthStateChanged((n=>{n?Sh(Ch):Ah()}),void 0,void 0)}(Ch),function(){!function(){if(null==L){let n={guesses:[],wordToGuess:w(),ttl:C(),triggered:0},e={gamesPlayed:0,gamesWon:0,winRate:0,currentStreak:0,longestStreak:0,guessDistribution:[0,0,0,0,0,0,0]},t={theme:"light",mode:"normal"};localStorage.setItem("gameState",JSON.stringify(n)),localStorage.setItem("userData",JSON.stringify(e)),localStorage.setItem("settings",JSON.stringify(t)),L=n,R=e,D=t}else R=JSON.parse(localStorage.getItem("userData")),D=JSON.parse(localStorage.getItem("settings"));null!=D&&null==localStorage.getItem("theme")||(null!=localStorage.getItem("theme")&&localStorage.removeItem("theme"),D={theme:"light",mode:"normal"},localStorage.setItem("settings",JSON.stringify(D)))}(),_d=n.TRIES+(null!=T().triggered&&1===T().triggered?1:0),function(e=n.WORD_LENGTH,t=_d,a=c){for(let i=0;i{hh(),location.reload()}),e)}(),function(e){Pd(this,void 0,void 0,(function*(){return new Promise(((t,a)=>Pd(this,void 0,void 0,(function*(){(null==e.ttl||e.ttl<(new Date).getTime())&&(E(),hh(),Yd.classList.add("disabled"),location.reload());for(let a=0;a{var n={714:(n,e)=>{var t;!function(){var a=9007199254740992,i="0123456789",r="abcdefghijklmnopqrstuvwxyz",s=r.toUpperCase(),o=i+"abcdef";function l(n){this.name="UnsupportedError",this.message=n||"This feature is not supported on this platform"}l.prototype=new Error,l.prototype.constructor=l;var c=Array.prototype.slice;function u(n){if(!(this instanceof u))return n||(n=null),null===n?new u:new u(n);if("function"==typeof n)return this.random=n,this;arguments.length&&(this.seed=0);for(var e=0;e100,"Chance: Likelihood accepts values from 0 to 100."),100*this.random()t,"Chance: Max specified is out of range with fixed. Max should be, at most, "+t),n=d(n,{min:i,max:t});var r=(this.integer({min:n.min*e,max:n.max*e})/e).toFixed(n.fixed);return parseFloat(r)},u.prototype.integer=function(n){return h((n=d(n,{min:-9007199254740992,max:a})).min>n.max,"Chance: Min cannot be greater than Max."),Math.floor(this.random()*(n.max-n.min+1)+n.min)},u.prototype.natural=function(n){if("number"==typeof(n=d(n,{min:0,max:a})).numerals&&(h(n.numerals<1,"Chance: Numerals cannot be less than one."),n.min=Math.pow(10,n.numerals-1),n.max=Math.pow(10,n.numerals)-1),h(n.min<0,"Chance: Min cannot be less than zero."),n.exclude){for(var e in h(!Array.isArray(n.exclude),"Chance: exclude must be an array."),n.exclude)h(!Number.isInteger(n.exclude[e]),"Chance: exclude must be numbers.");var t=n.min+this.natural({max:n.max-n.min-n.exclude.length}),i=n.exclude.sort();for(var r in i){if(tn.max,"Chance: Min cannot be greater than Max.");var e=b.primes[b.primes.length-1];if(n.max>e)for(var t=e+2;t<=n.max;++t)this.is_prime(t)&&b.primes.push(t);var a=b.primes.filter((function(e){return e>=n.min&&e<=n.max}));return this.pick(a)},u.prototype.is_prime=function(n){if(n%1||n<2)return!1;if(n%2==0)return 2===n;if(n%3==0)return 3===n;for(var e=Math.sqrt(n),t=5;t<=e;t+=6)if(n%t==0||n%(t+2)==0)return!1;return!0},u.prototype.hex=function(n){h((n=d(n,{min:0,max:a,casing:"lower"})).min<0,"Chance: Min cannot be less than zero.");var e=this.natural({min:n.min,max:n.max});return"upper"===n.casing?e.toString(16).toUpperCase():e.toString(16)},u.prototype.letter=function(n){n=d(n,{casing:"lower"});var e=this.character({pool:"abcdefghijklmnopqrstuvwxyz"});return"upper"===n.casing&&(e=e.toUpperCase()),e},u.prototype.string=function(n){0===(n=d(n,{min:5,max:20})).length||n.length||(n.length=this.natural({min:n.min,max:n.max})),h(n.length<0,"Chance: Length cannot be less than zero.");var e=n.length;return this.n(this.character,e,n).join("")},m.prototype={substitute:function(){return this.c}},p.prototype={substitute:function(){if(!/[{}\\]/.test(this.c))throw new Error('Invalid escape sequence: "\\'+this.c+'".');return this.c}},g.prototype={replacers:{"#":function(n){return n.character({pool:i})},A:function(n){return n.character({pool:s})},a:function(n){return n.character({pool:r})}},substitute:function(n){var e=this.replacers[this.c];if(!e)throw new Error('Invalid replacement character: "'+this.c+'".');return e(n)}},u.prototype.template=function(n){if(!n)throw new Error("Template string is required");var e=this;return function(n){for(var e=[],t="identity",a=0;ao)throw new RangeError("Chance: num is likely too large for sample set")}return r},u.prototype.n=function(n,e){h("function"!=typeof n,"Chance: The first argument must be a function."),void 0===e&&(e=1);var t=e,a=[],i=c.call(arguments,2);for(t=Math.max(0,t);t--;null)a.push(n.apply(this,i));return a},u.prototype.pad=function(n,e,t){return t=t||"0",(n+="").length>=e?n:new Array(e-n.length+1).join(t)+n},u.prototype.pick=function(n,e){if(0===n.length)throw new RangeError("Chance: Cannot pick() from an empty array");return e&&1!==e?this.shuffle(n).slice(0,e):n[this.natural({max:n.length-1})]},u.prototype.pickone=function(n){if(0===n.length)throw new RangeError("Chance: Cannot pickone() from an empty array");return n[this.natural({max:n.length-1})]},u.prototype.pickset=function(n,e){if(0===e)return[];if(0===n.length)throw new RangeError("Chance: Cannot pickset() from an empty array");if(e<0)throw new RangeError("Chance: Count must be a positive number");if(e&&1!==e){var t=n.slice(0),a=t.length;return this.n((function(){var n=this.natural({max:--a}),e=t[n];return t[n]=t[a],e}),Math.min(a,e))}return[this.pickone(n)]},u.prototype.shuffle=function(n){for(var e,t,a=[],i=0,r=Number(n.length),s=(t=r,Array.apply(null,Array(t)).map((function(n,e){return e}))),o=r-1,l=0;l0&&(i+=a)}if(0===i)throw new RangeError("Chance: No valid entries in array weights");var s,o=this.random()*i,l=0,c=-1;for(r=0;r0){if(o<=l){s=r;break}c=r}r===e.length-1&&(s=c)}var u=n[s];return(t=void 0!==t&&t)&&(n.splice(s,1),e.splice(s,1)),u},u.prototype.paragraph=function(n){var e=(n=d(n)).sentences||this.natural({min:3,max:7}),t=this.n(this.sentence,e),a=!0===n.linebreak?"\n":" ";return t.join(a)},u.prototype.sentence=function(n){var e,t=(n=d(n)).words||this.natural({min:12,max:18}),a=n.punctuation;return e=this.n(this.word,t).join(" "),e=this.capitalize(e),!1===a||/^[.?;!:]$/.test(a)||(a="."),a&&(e+=a),e},u.prototype.syllable=function(n){for(var e,t=(n=d(n)).length||this.natural({min:2,max:3}),a="bcdfghjklmnprstvwz",i="aeiou",r=a+i,s="",o=0;oBigInt(a),"Chance: length must be between 1 and "+String(a));var e=this.get("emojis");"all"===n.category&&(n.category=this.pickone(Object.keys(e)));var t=e[n.category];return h(void 0===t,"Chance: Unrecognised emoji category: ["+n.category+"]."),this.pickset(t,n.length).map((function(n){return String.fromCodePoint(n)})).join("")},u.prototype.age=function(n){var e;switch((n=d(n)).type){case"child":e={min:0,max:12};break;case"teen":e={min:13,max:19};break;case"adult":default:e={min:18,max:65};break;case"senior":e={min:65,max:100};break;case"all":e={min:0,max:100}}return this.natural(e)},u.prototype.birthday=function(n){var e=this.age(n),t=new Date,a=t.getFullYear();if(n&&n.type){var i=new Date,r=new Date;i.setFullYear(a-e-1),r.setFullYear(a-e),n=d(n,{min:i,max:r})}else if(!n||void 0===n.minAge&&void 0===n.maxAge)n=d(n,{year:a-e});else{h(n.minAge<0,"Chance: MinAge cannot be less than zero."),h(n.minAge>n.maxAge,"Chance: MinAge cannot be greater than MaxAge.");var s=void 0!==n.minAge?n.minAge:0,o=void 0!==n.maxAge?n.maxAge:100,l=new Date(a-o-1,t.getMonth(),t.getDate()),c=new Date(a-s,t.getMonth(),t.getDate());l.setDate(l.getDate()+1),c.setDate(c.getDate()+1),c.setMilliseconds(c.getMilliseconds()-1),n=d(n,{min:l,max:c})}return this.date(n)},u.prototype.cpf=function(n){n=d(n,{formatted:!0});var e=this.n(this.natural,9,{max:9}),t=2*e[8]+3*e[7]+4*e[6]+5*e[5]+6*e[4]+7*e[3]+8*e[2]+9*e[1]+10*e[0];(t=11-t%11)>=10&&(t=0);var a=2*t+3*e[8]+4*e[7]+5*e[6]+6*e[5]+7*e[4]+8*e[3]+9*e[2]+10*e[1]+11*e[0];(a=11-a%11)>=10&&(a=0);var i=""+e[0]+e[1]+e[2]+"."+e[3]+e[4]+e[5]+"."+e[6]+e[7]+e[8]+"-"+t+a;return n.formatted?i:i.replace(/\D/g,"")},u.prototype.cnpj=function(n){n=d(n,{formatted:!0});var e=this.n(this.natural,12,{max:12}),t=2*e[11]+3*e[10]+4*e[9]+5*e[8]+6*e[7]+7*e[6]+8*e[5]+9*e[4]+2*e[3]+3*e[2]+4*e[1]+5*e[0];(t=11-t%11)<2&&(t=0);var a=2*t+3*e[11]+4*e[10]+5*e[9]+6*e[8]+7*e[7]+8*e[6]+9*e[5]+2*e[4]+3*e[3]+4*e[2]+5*e[1]+6*e[0];(a=11-a%11)<2&&(a=0);var i=""+e[0]+e[1]+"."+e[2]+e[3]+e[4]+"."+e[5]+e[6]+e[7]+"/"+e[8]+e[9]+e[10]+e[11]+"-"+t+a;return n.formatted?i:i.replace(/\D/g,"")},u.prototype.first=function(n){return n=d(n,{gender:this.gender(),nationality:"en"}),this.pick(this.get("firstNames")[n.gender.toLowerCase()][n.nationality.toLowerCase()])},u.prototype.profession=function(n){return(n=d(n)).rank?this.pick(["Apprentice ","Junior ","Senior ","Lead "])+this.pick(this.get("profession")):this.pick(this.get("profession"))},u.prototype.company=function(){return this.pick(this.get("company"))},u.prototype.gender=function(n){return n=d(n,{extraGenders:[]}),this.pick(["Male","Female"].concat(n.extraGenders))},u.prototype.last=function(n){if("*"===(n=d(n,{nationality:"*"})).nationality){var e=[],t=this.get("lastNames");return Object.keys(t).forEach((function(n){e=e.concat(t[n])})),this.pick(e)}return this.pick(this.get("lastNames")[n.nationality.toLowerCase()])},u.prototype.israelId=function(){for(var n=this.string({pool:"0123456789",length:8}),e=0,t=0;t","<=",">=","="]);n.range&&(e=n.range);var t="";return n.include_prerelease&&(t=this.weighted(["","-dev","-beta","-alpha"],[50,10,5,1])),e+this.rpg("3d10").join(".")+t},u.prototype.tlds=function(){return["com","org","edu","gov","co.uk","net","io","ac","ad","ae","af","ag","ai","al","am","ao","aq","ar","as","at","au","aw","ax","az","ba","bb","bd","be","bf","bg","bh","bi","bj","bm","bn","bo","br","bs","bt","bv","bw","by","bz","ca","cc","cd","cf","cg","ch","ci","ck","cl","cm","cn","co","cr","cu","cv","cw","cx","cy","cz","de","dj","dk","dm","do","dz","ec","ee","eg","eh","er","es","et","eu","fi","fj","fk","fm","fo","fr","ga","gb","gd","ge","gf","gg","gh","gi","gl","gm","gn","gp","gq","gr","gs","gt","gu","gw","gy","hk","hm","hn","hr","ht","hu","id","ie","il","im","in","io","iq","ir","is","it","je","jm","jo","jp","ke","kg","kh","ki","km","kn","kp","kr","kw","ky","kz","la","lb","lc","li","lk","lr","ls","lt","lu","lv","ly","ma","mc","md","me","mg","mh","mk","ml","mm","mn","mo","mp","mq","mr","ms","mt","mu","mv","mw","mx","my","mz","na","nc","ne","nf","ng","ni","nl","no","np","nr","nu","nz","om","pa","pe","pf","pg","ph","pk","pl","pm","pn","pr","ps","pt","pw","py","qa","re","ro","rs","ru","rw","sa","sb","sc","sd","se","sg","sh","si","sj","sk","sl","sm","sn","so","sr","ss","st","su","sv","sx","sy","sz","tc","td","tf","tg","th","tj","tk","tl","tm","tn","to","tr","tt","tv","tw","tz","ua","ug","uk","us","uy","uz","va","vc","ve","vg","vi","vn","vu","wf","ws","ye","yt","za","zm","zw"]},u.prototype.tld=function(){return this.pick(this.tlds())},u.prototype.twitter=function(){return"@"+this.word()},u.prototype.url=function(n){var e=(n=d(n,{protocol:"http",domain:this.domain(n),domain_prefix:"",path:this.word(),extensions:[]})).extensions.length>0?"."+this.pick(n.extensions):"",t=n.domain_prefix?n.domain_prefix+"."+n.domain:n.domain;return n.protocol+"://"+t+"/"+n.path+e},u.prototype.port=function(){return this.integer({min:0,max:65535})},u.prototype.locale=function(n){return(n=d(n)).region?this.pick(this.get("locale_regions")):this.pick(this.get("locale_languages"))},u.prototype.locales=function(n){return(n=d(n)).region?this.get("locale_regions"):this.get("locale_languages")},u.prototype.loremPicsum=function(n){var e=(n=d(n,{width:500,height:500,greyscale:!1,blurred:!1})).greyscale?"g/":"",t=n.blurred?"/?blur":"/?random";return"https://picsum.photos/"+e+n.width+"/"+n.height+t},u.prototype.address=function(n){return n=d(n),this.natural({min:5,max:2e3})+" "+this.street(n)},u.prototype.altitude=function(n){return n=d(n,{fixed:5,min:0,max:8848}),this.floating({min:n.min,max:n.max,fixed:n.fixed})},u.prototype.areacode=function(n){var e=(n=d(n,{parens:!0})).exampleNumber?"555":this.natural({min:2,max:9}).toString()+this.natural({min:0,max:8}).toString()+this.natural({min:0,max:9}).toString();return n.parens?"("+e+")":e},u.prototype.city=function(){return this.capitalize(this.word({syllables:3}))},u.prototype.coordinates=function(n){return this.latitude(n)+", "+this.longitude(n)},u.prototype.countries=function(){return this.get("countries")},u.prototype.country=function(n){n=d(n);var e=this.pick(this.countries());return n.raw?e:n.full?e.name:e.abbreviation},u.prototype.depth=function(n){return n=d(n,{fixed:5,min:-10994,max:0}),this.floating({min:n.min,max:n.max,fixed:n.fixed})},u.prototype.geohash=function(n){return n=d(n,{length:7}),this.string({length:n.length,pool:"0123456789bcdefghjkmnpqrstuvwxyz"})},u.prototype.geojson=function(n){return this.latitude(n)+", "+this.longitude(n)+", "+this.altitude(n)},u.prototype.latitude=function(n){var[e,t,a]=["ddm","dms","dd"],i=(n=d(n,n&&n.format&&[e,t].includes(n.format.toLowerCase())?{min:0,max:89,fixed:4}:{fixed:5,min:-90,max:90,format:a})).format.toLowerCase();switch(i!==e&&i!==t||(h(n.min<0||n.min>89,"Chance: Min specified is out of range. Should be between 0 - 89"),h(n.max<0||n.max>89,"Chance: Max specified is out of range. Should be between 0 - 89"),h(n.fixed>4,"Chance: Fixed specified should be below or equal to 4")),i){case e:return this.integer({min:n.min,max:n.max})+"°"+this.floating({min:0,max:59,fixed:n.fixed});case t:return this.integer({min:n.min,max:n.max})+"°"+this.integer({min:0,max:59})+"’"+this.floating({min:0,max:59,fixed:n.fixed})+"”";default:return this.floating({min:n.min,max:n.max,fixed:n.fixed})}},u.prototype.longitude=function(n){var[e,t,a]=["ddm","dms","dd"],i=(n=d(n,n&&n.format&&[e,t].includes(n.format.toLowerCase())?{min:0,max:179,fixed:4}:{fixed:5,min:-180,max:180,format:a})).format.toLowerCase();switch(i!==e&&i!==t||(h(n.min<0||n.min>179,"Chance: Min specified is out of range. Should be between 0 - 179"),h(n.max<0||n.max>179,"Chance: Max specified is out of range. Should be between 0 - 179"),h(n.fixed>4,"Chance: Fixed specified should be below or equal to 4")),i){case e:return this.integer({min:n.min,max:n.max})+"°"+this.floating({min:0,max:59.9999,fixed:n.fixed});case t:return this.integer({min:n.min,max:n.max})+"°"+this.integer({min:0,max:59})+"’"+this.floating({min:0,max:59.9999,fixed:n.fixed})+"”";default:return this.floating({min:n.min,max:n.max,fixed:n.fixed})}},u.prototype.phone=function(n){var e,t,a=this,i=function(n){var e=[];return n.sections.forEach((function(n){e.push(a.string({pool:"0123456789",length:n}))})),n.area+e.join(" ")};switch((n=d(n,{formatted:!0,country:"us",mobile:!1,exampleNumber:!1})).formatted||(n.parens=!1),n.country){case"fr":n.mobile?(e=this.pick(["06","07"])+a.string({pool:"0123456789",length:8}),t=n.formatted?e.match(/../g).join(" "):e):(e=this.pick(["01"+this.pick(["30","34","39","40","41","42","43","44","45","46","47","48","49","53","55","56","58","60","64","69","70","72","73","74","75","76","77","78","79","80","81","82","83"])+a.string({pool:"0123456789",length:6}),"02"+this.pick(["14","18","22","23","28","29","30","31","32","33","34","35","36","37","38","40","41","43","44","45","46","47","48","49","50","51","52","53","54","56","57","61","62","69","72","76","77","78","85","90","96","97","98","99"])+a.string({pool:"0123456789",length:6}),"03"+this.pick(["10","20","21","22","23","24","25","26","27","28","29","39","44","45","51","52","54","55","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","80","81","82","83","84","85","86","87","88","89","90"])+a.string({pool:"0123456789",length:6}),"04"+this.pick(["11","13","15","20","22","26","27","30","32","34","37","42","43","44","50","56","57","63","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","88","89","90","91","92","93","94","95","97","98"])+a.string({pool:"0123456789",length:6}),"05"+this.pick(["08","16","17","19","24","31","32","33","34","35","40","45","46","47","49","53","55","56","57","58","59","61","62","63","64","65","67","79","81","82","86","87","90","94"])+a.string({pool:"0123456789",length:6}),"09"+a.string({pool:"0123456789",length:8})]),t=n.formatted?e.match(/../g).join(" "):e);break;case"uk":n.mobile?(e=this.pick([{area:"07"+this.pick(["4","5","7","8","9"]),sections:[2,6]},{area:"07624 ",sections:[6]}]),t=n.formatted?i(e):i(e).replace(" ","")):(e=this.pick([{area:"01"+this.character({pool:"234569"})+"1 ",sections:[3,4]},{area:"020 "+this.character({pool:"378"}),sections:[3,4]},{area:"023 "+this.character({pool:"89"}),sections:[3,4]},{area:"024 7",sections:[3,4]},{area:"028 "+this.pick(["25","28","37","71","82","90","92","95"]),sections:[2,4]},{area:"012"+this.pick(["04","08","54","76","97","98"])+" ",sections:[6]},{area:"013"+this.pick(["63","64","84","86"])+" ",sections:[6]},{area:"014"+this.pick(["04","20","60","61","80","88"])+" ",sections:[6]},{area:"015"+this.pick(["24","27","62","66"])+" ",sections:[6]},{area:"016"+this.pick(["06","29","35","47","59","95"])+" ",sections:[6]},{area:"017"+this.pick(["26","44","50","68"])+" ",sections:[6]},{area:"018"+this.pick(["27","37","84","97"])+" ",sections:[6]},{area:"019"+this.pick(["00","05","35","46","49","63","95"])+" ",sections:[6]}]),t=n.formatted?i(e):i(e).replace(" ","","g"));break;case"za":n.mobile?(e=this.pick(["060"+this.pick(["3","4","5","6","7","8","9"])+a.string({pool:"0123456789",length:6}),"061"+this.pick(["0","1","2","3","4","5","8"])+a.string({pool:"0123456789",length:6}),"06"+a.string({pool:"0123456789",length:7}),"071"+this.pick(["0","1","2","3","4","5","6","7","8","9"])+a.string({pool:"0123456789",length:6}),"07"+this.pick(["2","3","4","6","7","8","9"])+a.string({pool:"0123456789",length:7}),"08"+this.pick(["0","1","2","3","4","5"])+a.string({pool:"0123456789",length:7})]),t=n.formatted||e):(e=this.pick(["01"+this.pick(["0","1","2","3","4","5","6","7","8"])+a.string({pool:"0123456789",length:7}),"02"+this.pick(["1","2","3","4","7","8"])+a.string({pool:"0123456789",length:7}),"03"+this.pick(["1","2","3","5","6","9"])+a.string({pool:"0123456789",length:7}),"04"+this.pick(["1","2","3","4","5","6","7","8","9"])+a.string({pool:"0123456789",length:7}),"05"+this.pick(["1","3","4","6","7","8"])+a.string({pool:"0123456789",length:7})]),t=n.formatted||e);break;case"us":var r=this.areacode(n).toString(),s=this.natural({min:2,max:9}).toString()+this.natural({min:0,max:9}).toString()+this.natural({min:0,max:9}).toString(),o=this.natural({min:1e3,max:9999}).toString();t=n.formatted?r+" "+s+"-"+o:r+s+o;break;case"br":var l,c=this.pick(["11","12","13","14","15","16","17","18","19","21","22","24","27","28","31","32","33","34","35","37","38","41","42","43","44","45","46","47","48","49","51","53","54","55","61","62","63","64","65","66","67","68","69","71","73","74","75","77","79","81","82","83","84","85","86","87","88","89","91","92","93","94","95","96","97","98","99"]);l=n.mobile?"9"+a.string({pool:"0123456789",length:4}):this.natural({min:2e3,max:5999}).toString();var u=a.string({pool:"0123456789",length:4});t=n.formatted?"("+c+") "+l+"-"+u:c+l+u}return t},u.prototype.postal=function(){return this.character({pool:"XVTSRPNKLMHJGECBA"})+this.natural({max:9})+this.character({alpha:!0,casing:"upper"})+" "+(this.natural({max:9})+this.character({alpha:!0,casing:"upper"})+this.natural({max:9}))},u.prototype.postcode=function(){return this.pick(this.get("postcodeAreas")).code+this.natural({max:9})+(this.bool()?this.character({alpha:!0,casing:"upper"}):"")+" "+(this.natural({max:9})+(this.character({alpha:!0,casing:"upper"})+this.character({alpha:!0,casing:"upper"})))},u.prototype.counties=function(n){return n=d(n,{country:"uk"}),this.get("counties")[n.country.toLowerCase()]},u.prototype.county=function(n){return this.pick(this.counties(n)).name},u.prototype.provinces=function(n){return n=d(n,{country:"ca"}),this.get("provinces")[n.country.toLowerCase()]},u.prototype.province=function(n){return n&&n.full?this.pick(this.provinces(n)).name:this.pick(this.provinces(n)).abbreviation},u.prototype.state=function(n){return n&&n.full?this.pick(this.states(n)).name:this.pick(this.states(n)).abbreviation},u.prototype.states=function(n){var e;switch((n=d(n,{country:"us",us_states_and_dc:!0})).country.toLowerCase()){case"us":var t=this.get("us_states_and_dc"),a=this.get("territories"),i=this.get("armed_forces");e=[],n.us_states_and_dc&&(e=e.concat(t)),n.territories&&(e=e.concat(a)),n.armed_forces&&(e=e.concat(i));break;case"it":case"mx":e=this.get("country_regions")[n.country.toLowerCase()];break;case"uk":e=this.get("counties")[n.country.toLowerCase()]}return e},u.prototype.street=function(n){var e;switch((n=d(n,{country:"us",syllables:2})).country.toLowerCase()){case"us":e=this.word({syllables:n.syllables}),e=this.capitalize(e),e+=" ",e+=n.short_suffix?this.street_suffix(n).abbreviation:this.street_suffix(n).name;break;case"it":e=this.word({syllables:n.syllables}),e=this.capitalize(e),e=(n.short_suffix?this.street_suffix(n).abbreviation:this.street_suffix(n).name)+" "+e}return e},u.prototype.street_suffix=function(n){return n=d(n,{country:"us"}),this.pick(this.street_suffixes(n))},u.prototype.street_suffixes=function(n){return n=d(n,{country:"us"}),this.get("street_suffixes")[n.country.toLowerCase()]},u.prototype.zip=function(n){var e=this.n(this.natural,5,{max:9});return n&&!0===n.plusfour&&(e.push("-"),e=e.concat(this.n(this.natural,4,{max:9}))),e.join("")},u.prototype.ampm=function(){return this.bool()?"am":"pm"},u.prototype.date=function(n){var e,t;if(n&&(n.min||n.max)){var a=void 0!==(n=d(n,{american:!0,string:!1})).min?n.min.getTime():1,i=void 0!==n.max?n.max.getTime():864e13;t=new Date(this.integer({min:a,max:i}))}else{var r=this.month({raw:!0}),s=r.days;n&&n.month&&(s=this.get("months")[(n.month%12+12)%12].days),n=d(n,{year:parseInt(this.year(),10),month:r.numeric-1,day:this.natural({min:1,max:s}),hour:this.hour({twentyfour:!0}),minute:this.minute(),second:this.second(),millisecond:this.millisecond(),american:!0,string:!1}),t=new Date(n.year,n.month,n.day,n.hour,n.minute,n.second,n.millisecond)}return e=n.american?t.getMonth()+1+"/"+t.getDate()+"/"+t.getFullYear():t.getDate()+"/"+(t.getMonth()+1)+"/"+t.getFullYear(),n.string?e:t},u.prototype.hammertime=function(n){return this.date(n).getTime()},u.prototype.hour=function(n){return h((n=d(n,{min:n&&n.twentyfour?0:1,max:n&&n.twentyfour?23:12})).min<0,"Chance: Min cannot be less than 0."),h(n.twentyfour&&n.max>23,"Chance: Max cannot be greater than 23 for twentyfour option."),h(!n.twentyfour&&n.max>12,"Chance: Max cannot be greater than 12."),h(n.min>n.max,"Chance: Min cannot be greater than Max."),this.natural({min:n.min,max:n.max})},u.prototype.millisecond=function(){return this.natural({max:999})},u.prototype.minute=u.prototype.second=function(n){return h((n=d(n,{min:0,max:59})).min<0,"Chance: Min cannot be less than 0."),h(n.max>59,"Chance: Max cannot be greater than 59."),h(n.min>n.max,"Chance: Min cannot be greater than Max."),this.natural({min:n.min,max:n.max})},u.prototype.month=function(n){h((n=d(n,{min:1,max:12})).min<1,"Chance: Min cannot be less than 1."),h(n.max>12,"Chance: Max cannot be greater than 12."),h(n.min>n.max,"Chance: Min cannot be greater than Max.");var e=this.pick(this.months().slice(n.min-1,n.max));return n.raw?e:e.name},u.prototype.months=function(){return this.get("months")},u.prototype.second=function(){return this.natural({max:59})},u.prototype.timestamp=function(){return this.natural({min:1,max:parseInt((new Date).getTime()/1e3,10)})},u.prototype.weekday=function(n){var e=["Monday","Tuesday","Wednesday","Thursday","Friday"];return(n=d(n,{weekday_only:!1})).weekday_only||(e.push("Saturday"),e.push("Sunday")),this.pickone(e)},u.prototype.year=function(n){return(n=d(n,{min:(new Date).getFullYear()})).max=void 0!==n.max?n.max:n.min+100,this.natural(n).toString()},u.prototype.cc=function(n){var e,t,a;return t=(e=(n=d(n)).type?this.cc_type({name:n.type,raw:!0}):this.cc_type({raw:!0})).prefix.split(""),a=e.length-e.prefix.length-1,(t=t.concat(this.n(this.integer,a,{min:0,max:9}))).push(this.luhn_calculate(t.join(""))),t.join("")},u.prototype.cc_types=function(){return this.get("cc_types")},u.prototype.cc_type=function(n){n=d(n);var e=this.cc_types(),t=null;if(n.name){for(var a=0;a3&&(t=e?t.substr(0,3):t[0]+t.substr(2,2)),t.length<3&&(a=t,t=n.toUpperCase().split("").map((function(n){return-1!=="AEIOU".indexOf(n)?n:void 0})).join("").substr(0,3-a.length)),a+=t),a};return s=s.concat(o(a,!0),o(t),function(n,e,t){return n.getFullYear().toString().substr(2)+["A","B","C","D","E","H","L","M","P","R","S","T"][n.getMonth()]+t.pad(n.getDate()+("female"===e.toLowerCase()?40:0),2)}(i,e,this),r.toUpperCase().split("")).join(""),(s+=function(n){for(var e="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",t="ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ",a="ABCDEFGHIJKLMNOPQRSTUVWXYZ",i=0,r=0;r<15;r++)i+=r%2!=0?a.indexOf(t[e.indexOf(n[r])]):"BAKPLCQDREVOSFTGUHMINJWZYX".indexOf(t[e.indexOf(n[r])]);return a[i%26]}(s.toUpperCase())).toUpperCase()},u.prototype.pl_pesel=function(){for(var n=this.natural({min:1,max:9999999999}),e=this.pad(n,10).split(""),t=0;t0;i--)a[i-1]=this.natural({min:1,max:t[1]});return void 0!==e.sum&&e.sum?a.reduce((function(n,e){return n+e})):a}throw new RangeError("Chance: A type of die roll must be included")},u.prototype.guid=function(n){n=d(n,{version:5});var e="abcdef1234567890";return this.string({pool:e,length:8})+"-"+this.string({pool:e,length:4})+"-"+n.version+this.string({pool:e,length:3})+"-"+this.string({pool:"ab89",length:1})+this.string({pool:e,length:3})+"-"+this.string({pool:e,length:12})},u.prototype.hash=function(n){var e="upper"===(n=d(n,{length:40,casing:"lower"})).casing?o.toUpperCase():o;return this.string({pool:e,length:n.length})},u.prototype.luhn_check=function(n){var e=n.toString();return+e.substring(e.length-1)===this.luhn_calculate(+e.substring(0,e.length-1))},u.prototype.luhn_calculate=function(n){for(var e,t=n.toString().split("").reverse(),a=0,i=0,r=t.length;r>i;++i)e=+t[i],i%2==0&&(e*=2)>9&&(e-=9),a+=e;return 9*a%10},u.prototype.md5=function(n){var e={str:"",key:null,raw:!1};if(n)if("string"==typeof n)e.str=n,n={};else{if("object"!=typeof n)return null;if("Array"===n.constructor)return null}else e.str=this.string(),n={};if(!(e=d(n,e)).str)throw new Error("A parameter is required to return an md5 hash.");return this.bimd5.md5(e.str,e.key,e.raw)},u.prototype.file=function(n){var e,t=n||{},a="fileExtension",i=Object.keys(this.get("fileExtension"));if(e=this.word({length:t.length}),t.extension)return e+"."+t.extension;if(t.extensions){if(Array.isArray(t.extensions))return e+"."+this.pickone(t.extensions);if(t.extensions.constructor===Object){var r=t.extensions,s=Object.keys(r);return e+"."+this.pickone(r[this.pickone(s)])}throw new Error("Chance: Extensions must be an Array or Object")}if(t.fileType){var o=t.fileType;if(-1!==i.indexOf(o))return e+"."+this.pickone(this.get(a)[o]);throw new RangeError("Chance: Expect file type value to be 'raster', 'vector', '3d' or 'document'")}return e+"."+this.pickone(this.get(a)[this.pickone(i)])},u.prototype.fileWithContent=function(n){var e=n||{},t="fileName"in e?e.fileName:this.file().split(".")[0];if(t+="."+("fileExtension"in e?e.fileExtension:this.file().split(".")[1]),"number"!=typeof e.fileSize)throw new Error("File size must be an integer");return{fileData:this.buffer({length:e.fileSize}),fileName:t}};var b={firstNames:{male:{en:["James","John","Robert","Michael","William","David","Richard","Joseph","Charles","Thomas","Christopher","Daniel","Matthew","George","Donald","Anthony","Paul","Mark","Edward","Steven","Kenneth","Andrew","Brian","Joshua","Kevin","Ronald","Timothy","Jason","Jeffrey","Frank","Gary","Ryan","Nicholas","Eric","Stephen","Jacob","Larry","Jonathan","Scott","Raymond","Justin","Brandon","Gregory","Samuel","Benjamin","Patrick","Jack","Henry","Walter","Dennis","Jerry","Alexander","Peter","Tyler","Douglas","Harold","Aaron","Jose","Adam","Arthur","Zachary","Carl","Nathan","Albert","Kyle","Lawrence","Joe","Willie","Gerald","Roger","Keith","Jeremy","Terry","Harry","Ralph","Sean","Jesse","Roy","Louis","Billy","Austin","Bruce","Eugene","Christian","Bryan","Wayne","Russell","Howard","Fred","Ethan","Jordan","Philip","Alan","Juan","Randy","Vincent","Bobby","Dylan","Johnny","Phillip","Victor","Clarence","Ernest","Martin","Craig","Stanley","Shawn","Travis","Bradley","Leonard","Earl","Gabriel","Jimmy","Francis","Todd","Noah","Danny","Dale","Cody","Carlos","Allen","Frederick","Logan","Curtis","Alex","Joel","Luis","Norman","Marvin","Glenn","Tony","Nathaniel","Rodney","Melvin","Alfred","Steve","Cameron","Chad","Edwin","Caleb","Evan","Antonio","Lee","Herbert","Jeffery","Isaac","Derek","Ricky","Marcus","Theodore","Elijah","Luke","Jesus","Eddie","Troy","Mike","Dustin","Ray","Adrian","Bernard","Leroy","Angel","Randall","Wesley","Ian","Jared","Mason","Hunter","Calvin","Oscar","Clifford","Jay","Shane","Ronnie","Barry","Lucas","Corey","Manuel","Leo","Tommy","Warren","Jackson","Isaiah","Connor","Don","Dean","Jon","Julian","Miguel","Bill","Lloyd","Charlie","Mitchell","Leon","Jerome","Darrell","Jeremiah","Alvin","Brett","Seth","Floyd","Jim","Blake","Micheal","Gordon","Trevor","Lewis","Erik","Edgar","Vernon","Devin","Gavin","Jayden","Chris","Clyde","Tom","Derrick","Mario","Brent","Marc","Herman","Chase","Dominic","Ricardo","Franklin","Maurice","Max","Aiden","Owen","Lester","Gilbert","Elmer","Gene","Francisco","Glen","Cory","Garrett","Clayton","Sam","Jorge","Chester","Alejandro","Jeff","Harvey","Milton","Cole","Ivan","Andre","Duane","Landon"],it:["Adolfo","Alberto","Aldo","Alessandro","Alessio","Alfredo","Alvaro","Andrea","Angelo","Angiolo","Antonino","Antonio","Attilio","Benito","Bernardo","Bruno","Carlo","Cesare","Christian","Claudio","Corrado","Cosimo","Cristian","Cristiano","Daniele","Dario","David","Davide","Diego","Dino","Domenico","Duccio","Edoardo","Elia","Elio","Emanuele","Emiliano","Emilio","Enrico","Enzo","Ettore","Fabio","Fabrizio","Federico","Ferdinando","Fernando","Filippo","Francesco","Franco","Gabriele","Giacomo","Giampaolo","Giampiero","Giancarlo","Gianfranco","Gianluca","Gianmarco","Gianni","Gino","Giorgio","Giovanni","Giuliano","Giulio","Giuseppe","Graziano","Gregorio","Guido","Iacopo","Jacopo","Lapo","Leonardo","Lorenzo","Luca","Luciano","Luigi","Manuel","Marcello","Marco","Marino","Mario","Massimiliano","Massimo","Matteo","Mattia","Maurizio","Mauro","Michele","Mirko","Mohamed","Nello","Neri","Niccolò","Nicola","Osvaldo","Otello","Paolo","Pier Luigi","Piero","Pietro","Raffaele","Remo","Renato","Renzo","Riccardo","Roberto","Rolando","Romano","Salvatore","Samuele","Sandro","Sergio","Silvano","Simone","Stefano","Thomas","Tommaso","Ubaldo","Ugo","Umberto","Valerio","Valter","Vasco","Vincenzo","Vittorio"],nl:["Aaron","Abel","Adam","Adriaan","Albert","Alexander","Ali","Arjen","Arno","Bart","Bas","Bastiaan","Benjamin","Bob","Boris","Bram","Brent","Cas","Casper","Chris","Christiaan","Cornelis","Daan","Daley","Damian","Dani","Daniel","Daniël","David","Dean","Dirk","Dylan","Egbert","Elijah","Erik","Erwin","Evert","Ezra","Fabian","Fedde","Finn","Florian","Floris","Frank","Frans","Frederik","Freek","Geert","Gerard","Gerben","Gerrit","Gijs","Guus","Hans","Hendrik","Henk","Herman","Hidde","Hugo","Jaap","Jan Jaap","Jan-Willem","Jack","Jacob","Jan","Jason","Jasper","Jayden","Jelle","Jelte","Jens","Jeroen","Jesse","Jim","Job","Joep","Johannes","John","Jonathan","Joris","Joshua","Joël","Julian","Kees","Kevin","Koen","Lars","Laurens","Leendert","Lennard","Lodewijk","Luc","Luca","Lucas","Lukas","Luuk","Maarten","Marcus","Martijn","Martin","Matthijs","Maurits","Max","Mees","Melle","Mick","Mika","Milan","Mohamed","Mohammed","Morris","Muhammed","Nathan","Nick","Nico","Niek","Niels","Noah","Noud","Olivier","Oscar","Owen","Paul","Pepijn","Peter","Pieter","Pim","Quinten","Reinier","Rens","Robin","Ruben","Sam","Samuel","Sander","Sebastiaan","Sem","Sep","Sepp","Siem","Simon","Stan","Stef","Steven","Stijn","Sven","Teun","Thijmen","Thijs","Thomas","Tijn","Tim","Timo","Tobias","Tom","Victor","Vince","Willem","Wim","Wouter","Yusuf"],fr:["Aaron","Abdon","Abel","Abélard","Abelin","Abondance","Abraham","Absalon","Acace","Achaire","Achille","Adalard","Adalbald","Adalbéron","Adalbert","Adalric","Adam","Adegrin","Adel","Adelin","Andelin","Adelphe","Adam","Adéodat","Adhémar","Adjutor","Adolphe","Adonis","Adon","Adrien","Agapet","Agathange","Agathon","Agilbert","Agénor","Agnan","Aignan","Agrippin","Aimable","Aimé","Alain","Alban","Albin","Aubin","Albéric","Albert","Albertet","Alcibiade","Alcide","Alcée","Alcime","Aldonce","Aldric","Aldéric","Aleaume","Alexandre","Alexis","Alix","Alliaume","Aleaume","Almine","Almire","Aloïs","Alphée","Alphonse","Alpinien","Alverède","Amalric","Amaury","Amandin","Amant","Ambroise","Amédée","Amélien","Amiel","Amour","Anaël","Anastase","Anatole","Ancelin","Andéol","Andoche","André","Andoche","Ange","Angelin","Angilbe","Anglebert","Angoustan","Anicet","Anne","Annibal","Ansbert","Anselme","Anthelme","Antheaume","Anthime","Antide","Antoine","Antonius","Antonin","Apollinaire","Apollon","Aquilin","Arcade","Archambaud","Archambeau","Archange","Archibald","Arian","Ariel","Ariste","Aristide","Armand","Armel","Armin","Arnould","Arnaud","Arolde","Arsène","Arsinoé","Arthaud","Arthème","Arthur","Ascelin","Athanase","Aubry","Audebert","Audouin","Audran","Audric","Auguste","Augustin","Aurèle","Aurélien","Aurian","Auxence","Axel","Aymard","Aymeric","Aymon","Aymond","Balthazar","Baptiste","Barnabé","Barthélemy","Bartimée","Basile","Bastien","Baudouin","Bénigne","Benjamin","Benoît","Bérenger","Bérard","Bernard","Bertrand","Blaise","Bon","Boniface","Bouchard","Brice","Brieuc","Bruno","Brunon","Calixte","Calliste","Camélien","Camille","Camillien","Candide","Caribert","Carloman","Cassandre","Cassien","Cédric","Céleste","Célestin","Célien","Césaire","César","Charles","Charlemagne","Childebert","Chilpéric","Chrétien","Christian","Christodule","Christophe","Chrysostome","Clarence","Claude","Claudien","Cléandre","Clément","Clotaire","Côme","Constance","Constant","Constantin","Corentin","Cyprien","Cyriaque","Cyrille","Cyril","Damien","Daniel","David","Delphin","Denis","Désiré","Didier","Dieudonné","Dimitri","Dominique","Dorian","Dorothée","Edgard","Edmond","Édouard","Éleuthère","Élie","Élisée","Émeric","Émile","Émilien","Emmanuel","Enguerrand","Épiphane","Éric","Esprit","Ernest","Étienne","Eubert","Eudes","Eudoxe","Eugène","Eusèbe","Eustache","Évariste","Évrard","Fabien","Fabrice","Falba","Félicité","Félix","Ferdinand","Fiacre","Fidèle","Firmin","Flavien","Flodoard","Florent","Florentin","Florestan","Florian","Fortuné","Foulques","Francisque","François","Français","Franciscus","Francs","Frédéric","Fulbert","Fulcran","Fulgence","Gabin","Gabriel","Gaël","Garnier","Gaston","Gaspard","Gatien","Gaud","Gautier","Gédéon","Geoffroy","Georges","Géraud","Gérard","Gerbert","Germain","Gervais","Ghislain","Gilbert","Gilles","Girart","Gislebert","Gondebaud","Gonthier","Gontran","Gonzague","Grégoire","Guérin","Gui","Guillaume","Gustave","Guy","Guyot","Hardouin","Hector","Hédelin","Hélier","Henri","Herbert","Herluin","Hervé","Hilaire","Hildebert","Hincmar","Hippolyte","Honoré","Hubert","Hugues","Innocent","Isabeau","Isidore","Jacques","Japhet","Jason","Jean","Jeannel","Jeannot","Jérémie","Jérôme","Joachim","Joanny","Job","Jocelyn","Joël","Johan","Jonas","Jonathan","Joseph","Josse","Josselin","Jourdain","Jude","Judicaël","Jules","Julien","Juste","Justin","Lambert","Landry","Laurent","Lazare","Léandre","Léon","Léonard","Léopold","Leu","Loup","Leufroy","Libère","Liétald","Lionel","Loïc","Longin","Lorrain","Lorraine","Lothaire","Louis","Loup","Luc","Lucas","Lucien","Ludolphe","Ludovic","Macaire","Malo","Mamert","Manassé","Marc","Marceau","Marcel","Marcelin","Marius","Marseille","Martial","Martin","Mathurin","Matthias","Mathias","Matthieu","Maugis","Maurice","Mauricet","Maxence","Maxime","Maximilien","Mayeul","Médéric","Melchior","Mence","Merlin","Mérovée","Michaël","Michel","Moïse","Morgan","Nathan","Nathanaël","Narcisse","Néhémie","Nestor","Nestor","Nicéphore","Nicolas","Noé","Noël","Norbert","Normand","Normands","Octave","Odilon","Odon","Oger","Olivier","Oury","Pacôme","Palémon","Parfait","Pascal","Paterne","Patrice","Paul","Pépin","Perceval","Philémon","Philibert","Philippe","Philothée","Pie","Pierre","Pierrick","Prosper","Quentin","Raoul","Raphaël","Raymond","Régis","Réjean","Rémi","Renaud","René","Reybaud","Richard","Robert","Roch","Rodolphe","Rodrigue","Roger","Roland","Romain","Romuald","Roméo","Rome","Ronan","Roselin","Salomon","Samuel","Savin","Savinien","Scholastique","Sébastien","Séraphin","Serge","Séverin","Sidoine","Sigebert","Sigismond","Silvère","Simon","Siméon","Sixte","Stanislas","Stéphane","Stephan","Sylvain","Sylvestre","Tancrède","Tanguy","Taurin","Théodore","Théodose","Théophile","Théophraste","Thibault","Thibert","Thierry","Thomas","Timoléon","Timothée","Titien","Tonnin","Toussaint","Trajan","Tristan","Turold","Tim","Ulysse","Urbain","Valentin","Valère","Valéry","Venance","Venant","Venceslas","Vianney","Victor","Victorien","Victorin","Vigile","Vincent","Vital","Vitalien","Vivien","Waleran","Wandrille","Xavier","Xénophon","Yves","Zacharie","Zaché","Zéphirin"]},female:{en:["Mary","Emma","Elizabeth","Minnie","Margaret","Ida","Alice","Bertha","Sarah","Annie","Clara","Ella","Florence","Cora","Martha","Laura","Nellie","Grace","Carrie","Maude","Mabel","Bessie","Jennie","Gertrude","Julia","Hattie","Edith","Mattie","Rose","Catherine","Lillian","Ada","Lillie","Helen","Jessie","Louise","Ethel","Lula","Myrtle","Eva","Frances","Lena","Lucy","Edna","Maggie","Pearl","Daisy","Fannie","Josephine","Dora","Rosa","Katherine","Agnes","Marie","Nora","May","Mamie","Blanche","Stella","Ellen","Nancy","Effie","Sallie","Nettie","Della","Lizzie","Flora","Susie","Maud","Mae","Etta","Harriet","Sadie","Caroline","Katie","Lydia","Elsie","Kate","Susan","Mollie","Alma","Addie","Georgia","Eliza","Lulu","Nannie","Lottie","Amanda","Belle","Charlotte","Rebecca","Ruth","Viola","Olive","Amelia","Hannah","Jane","Virginia","Emily","Matilda","Irene","Kathryn","Esther","Willie","Henrietta","Ollie","Amy","Rachel","Sara","Estella","Theresa","Augusta","Ora","Pauline","Josie","Lola","Sophia","Leona","Anne","Mildred","Ann","Beulah","Callie","Lou","Delia","Eleanor","Barbara","Iva","Louisa","Maria","Mayme","Evelyn","Estelle","Nina","Betty","Marion","Bettie","Dorothy","Luella","Inez","Lela","Rosie","Allie","Millie","Janie","Cornelia","Victoria","Ruby","Winifred","Alta","Celia","Christine","Beatrice","Birdie","Harriett","Mable","Myra","Sophie","Tillie","Isabel","Sylvia","Carolyn","Isabelle","Leila","Sally","Ina","Essie","Bertie","Nell","Alberta","Katharine","Lora","Rena","Mina","Rhoda","Mathilda","Abbie","Eula","Dollie","Hettie","Eunice","Fanny","Ola","Lenora","Adelaide","Christina","Lelia","Nelle","Sue","Johanna","Lilly","Lucinda","Minerva","Lettie","Roxie","Cynthia","Helena","Hilda","Hulda","Bernice","Genevieve","Jean","Cordelia","Marian","Francis","Jeanette","Adeline","Gussie","Leah","Lois","Lura","Mittie","Hallie","Isabella","Olga","Phoebe","Teresa","Hester","Lida","Lina","Winnie","Claudia","Marguerite","Vera","Cecelia","Bess","Emilie","Rosetta","Verna","Myrtie","Cecilia","Elva","Olivia","Ophelia","Georgie","Elnora","Violet","Adele","Lily","Linnie","Loretta","Madge","Polly","Virgie","Eugenia","Lucile","Lucille","Mabelle","Rosalie"],it:["Ada","Adriana","Alessandra","Alessia","Alice","Angela","Anna","Anna Maria","Annalisa","Annita","Annunziata","Antonella","Arianna","Asia","Assunta","Aurora","Barbara","Beatrice","Benedetta","Bianca","Bruna","Camilla","Carla","Carlotta","Carmela","Carolina","Caterina","Catia","Cecilia","Chiara","Cinzia","Clara","Claudia","Costanza","Cristina","Daniela","Debora","Diletta","Dina","Donatella","Elena","Eleonora","Elisa","Elisabetta","Emanuela","Emma","Eva","Federica","Fernanda","Fiorella","Fiorenza","Flora","Franca","Francesca","Gabriella","Gaia","Gemma","Giada","Gianna","Gina","Ginevra","Giorgia","Giovanna","Giulia","Giuliana","Giuseppa","Giuseppina","Grazia","Graziella","Greta","Ida","Ilaria","Ines","Iolanda","Irene","Irma","Isabella","Jessica","Laura","Lea","Letizia","Licia","Lidia","Liliana","Lina","Linda","Lisa","Livia","Loretta","Luana","Lucia","Luciana","Lucrezia","Luisa","Manuela","Mara","Marcella","Margherita","Maria","Maria Cristina","Maria Grazia","Maria Luisa","Maria Pia","Maria Teresa","Marina","Marisa","Marta","Martina","Marzia","Matilde","Melissa","Michela","Milena","Mirella","Monica","Natalina","Nella","Nicoletta","Noemi","Olga","Paola","Patrizia","Piera","Pierina","Raffaella","Rebecca","Renata","Rina","Rita","Roberta","Rosa","Rosanna","Rossana","Rossella","Sabrina","Sandra","Sara","Serena","Silvana","Silvia","Simona","Simonetta","Sofia","Sonia","Stefania","Susanna","Teresa","Tina","Tiziana","Tosca","Valentina","Valeria","Vanda","Vanessa","Vanna","Vera","Veronica","Vilma","Viola","Virginia","Vittoria"],nl:["Ada","Arianne","Afke","Amanda","Amber","Amy","Aniek","Anita","Anja","Anna","Anne","Annelies","Annemarie","Annette","Anouk","Astrid","Aukje","Barbara","Bianca","Carla","Carlijn","Carolien","Chantal","Charlotte","Claudia","Daniëlle","Debora","Diane","Dora","Eline","Elise","Ella","Ellen","Emma","Esmee","Evelien","Esther","Erica","Eva","Femke","Fleur","Floor","Froukje","Gea","Gerda","Hanna","Hanneke","Heleen","Hilde","Ilona","Ina","Inge","Ingrid","Iris","Isabel","Isabelle","Janneke","Jasmijn","Jeanine","Jennifer","Jessica","Johanna","Joke","Julia","Julie","Karen","Karin","Katja","Kim","Lara","Laura","Lena","Lianne","Lieke","Lilian","Linda","Lisa","Lisanne","Lotte","Louise","Maaike","Manon","Marga","Maria","Marissa","Marit","Marjolein","Martine","Marleen","Melissa","Merel","Miranda","Michelle","Mirjam","Mirthe","Naomi","Natalie","Nienke","Nina","Noortje","Olivia","Patricia","Paula","Paulien","Ramona","Ria","Rianne","Roos","Rosanne","Ruth","Sabrina","Sandra","Sanne","Sara","Saskia","Silvia","Sofia","Sophie","Sonja","Suzanne","Tamara","Tess","Tessa","Tineke","Valerie","Vanessa","Veerle","Vera","Victoria","Wendy","Willeke","Yvonne","Zoë"],fr:["Abdon","Abel","Abigaëlle","Abigaïl","Acacius","Acanthe","Adalbert","Adalsinde","Adegrine","Adélaïde","Adèle","Adélie","Adeline","Adeltrude","Adolphe","Adonis","Adrastée","Adrehilde","Adrienne","Agathe","Agilbert","Aglaé","Aignan","Agneflète","Agnès","Agrippine","Aimé","Alaine","Alaïs","Albane","Albérade","Alberte","Alcide","Alcine","Alcyone","Aldegonde","Aleth","Alexandrine","Alexine","Alice","Aliénor","Aliette","Aline","Alix","Alizé","Aloïse","Aloyse","Alphonsine","Althée","Amaliane","Amalthée","Amande","Amandine","Amant","Amarande","Amaranthe","Amaryllis","Ambre","Ambroisie","Amélie","Améthyste","Aminte","Anaël","Anaïs","Anastasie","Anatole","Ancelin","Andrée","Anémone","Angadrême","Angèle","Angeline","Angélique","Angilbert","Anicet","Annabelle","Anne","Annette","Annick","Annie","Annonciade","Ansbert","Anstrudie","Anthelme","Antigone","Antoinette","Antonine","Aphélie","Apolline","Apollonie","Aquiline","Arabelle","Arcadie","Archange","Argine","Ariane","Aricie","Ariel","Arielle","Arlette","Armance","Armande","Armandine","Armelle","Armide","Armelle","Armin","Arnaud","Arsène","Arsinoé","Artémis","Arthur","Ascelin","Ascension","Assomption","Astarté","Astérie","Astrée","Astrid","Athalie","Athanasie","Athina","Aube","Albert","Aude","Audrey","Augustine","Aure","Aurélie","Aurélien","Aurèle","Aurore","Auxence","Aveline","Abigaëlle","Avoye","Axelle","Aymard","Azalée","Adèle","Adeline","Barbe","Basilisse","Bathilde","Béatrice","Béatrix","Bénédicte","Bérengère","Bernadette","Berthe","Bertille","Beuve","Blanche","Blanc","Blandine","Brigitte","Brune","Brunehilde","Callista","Camille","Capucine","Carine","Caroline","Cassandre","Catherine","Cécile","Céleste","Célestine","Céline","Chantal","Charlène","Charline","Charlotte","Chloé","Christelle","Christiane","Christine","Claire","Clara","Claude","Claudine","Clarisse","Clémence","Clémentine","Cléo","Clio","Clotilde","Coline","Conception","Constance","Coralie","Coraline","Corentine","Corinne","Cyrielle","Daniel","Daniel","Daphné","Débora","Delphine","Denise","Diane","Dieudonné","Dominique","Doriane","Dorothée","Douce","Édith","Edmée","Éléonore","Éliane","Élia","Éliette","Élisabeth","Élise","Ella","Élodie","Éloïse","Elsa","Émeline","Émérance","Émérentienne","Émérencie","Émilie","Emma","Emmanuelle","Emmelie","Ernestine","Esther","Estelle","Eudoxie","Eugénie","Eulalie","Euphrasie","Eusébie","Évangéline","Eva","Ève","Évelyne","Fanny","Fantine","Faustine","Félicie","Fernande","Flavie","Fleur","Flore","Florence","Florie","Fortuné","France","Francia","Françoise","Francine","Gabrielle","Gaëlle","Garance","Geneviève","Georgette","Gerberge","Germaine","Gertrude","Gisèle","Guenièvre","Guilhemine","Guillemette","Gustave","Gwenael","Hélène","Héloïse","Henriette","Hermine","Hermione","Hippolyte","Honorine","Hortense","Huguette","Ines","Irène","Irina","Iris","Isabeau","Isabelle","Iseult","Isolde","Ismérie","Jacinthe","Jacqueline","Jade","Janine","Jeanne","Jocelyne","Joëlle","Joséphine","Judith","Julia","Julie","Jules","Juliette","Justine","Katy","Kathy","Katie","Laura","Laure","Laureline","Laurence","Laurene","Lauriane","Laurianne","Laurine","Léa","Léna","Léonie","Léon","Léontine","Lorraine","Lucie","Lucienne","Lucille","Ludivine","Lydie","Lydie","Megane","Madeleine","Magali","Maguelone","Mallaury","Manon","Marceline","Margot","Marguerite","Marianne","Marie","Myriam","Marie","Marine","Marion","Marlène","Marthe","Martine","Mathilde","Maud","Maureen","Mauricette","Maxime","Mélanie","Melissa","Mélissandre","Mélisande","Mélodie","Michel","Micheline","Mireille","Miriam","Moïse","Monique","Morgane","Muriel","Mylène","Nadège","Nadine","Nathalie","Nicole","Nicolette","Nine","Noël","Noémie","Océane","Odette","Odile","Olive","Olivia","Olympe","Ombline","Ombeline","Ophélie","Oriande","Oriane","Ozanne","Pascale","Pascaline","Paule","Paulette","Pauline","Priscille","Prisca","Prisque","Pécine","Pélagie","Pénélope","Perrine","Pétronille","Philippine","Philomène","Philothée","Primerose","Prudence","Pulchérie","Quentine","Quiéta","Quintia","Quintilla","Rachel","Raphaëlle","Raymonde","Rebecca","Régine","Réjeanne","René","Rita","Rita","Rolande","Romane","Rosalie","Rose","Roseline","Sabine","Salomé","Sandra","Sandrine","Sarah","Ségolène","Séverine","Sibylle","Simone","Sixt","Solange","Soline","Solène","Sophie","Stéphanie","Suzanne","Sylvain","Sylvie","Tatiana","Thaïs","Théodora","Thérèse","Tiphaine","Ursule","Valentine","Valérie","Véronique","Victoire","Victorine","Vinciane","Violette","Virginie","Viviane","Xavière","Yolande","Ysaline","Yvette","Yvonne","Zélie","Zita","Zoé"]}},lastNames:{en:["Smith","Johnson","Williams","Jones","Brown","Davis","Miller","Wilson","Moore","Taylor","Anderson","Thomas","Jackson","White","Harris","Martin","Thompson","Garcia","Martinez","Robinson","Clark","Rodriguez","Lewis","Lee","Walker","Hall","Allen","Young","Hernandez","King","Wright","Lopez","Hill","Scott","Green","Adams","Baker","Gonzalez","Nelson","Carter","Mitchell","Perez","Roberts","Turner","Phillips","Campbell","Parker","Evans","Edwards","Collins","Stewart","Sanchez","Morris","Rogers","Reed","Cook","Morgan","Bell","Murphy","Bailey","Rivera","Cooper","Richardson","Cox","Howard","Ward","Torres","Peterson","Gray","Ramirez","James","Watson","Brooks","Kelly","Sanders","Price","Bennett","Wood","Barnes","Ross","Henderson","Coleman","Jenkins","Perry","Powell","Long","Patterson","Hughes","Flores","Washington","Butler","Simmons","Foster","Gonzales","Bryant","Alexander","Russell","Griffin","Diaz","Hayes","Myers","Ford","Hamilton","Graham","Sullivan","Wallace","Woods","Cole","West","Jordan","Owens","Reynolds","Fisher","Ellis","Harrison","Gibson","McDonald","Cruz","Marshall","Ortiz","Gomez","Murray","Freeman","Wells","Webb","Simpson","Stevens","Tucker","Porter","Hunter","Hicks","Crawford","Henry","Boyd","Mason","Morales","Kennedy","Warren","Dixon","Ramos","Reyes","Burns","Gordon","Shaw","Holmes","Rice","Robertson","Hunt","Black","Daniels","Palmer","Mills","Nichols","Grant","Knight","Ferguson","Rose","Stone","Hawkins","Dunn","Perkins","Hudson","Spencer","Gardner","Stephens","Payne","Pierce","Berry","Matthews","Arnold","Wagner","Willis","Ray","Watkins","Olson","Carroll","Duncan","Snyder","Hart","Cunningham","Bradley","Lane","Andrews","Ruiz","Harper","Fox","Riley","Armstrong","Carpenter","Weaver","Greene","Lawrence","Elliott","Chavez","Sims","Austin","Peters","Kelley","Franklin","Lawson","Fields","Gutierrez","Ryan","Schmidt","Carr","Vasquez","Castillo","Wheeler","Chapman","Oliver","Montgomery","Richards","Williamson","Johnston","Banks","Meyer","Bishop","McCoy","Howell","Alvarez","Morrison","Hansen","Fernandez","Garza","Harvey","Little","Burton","Stanley","Nguyen","George","Jacobs","Reid","Kim","Fuller","Lynch","Dean","Gilbert","Garrett","Romero","Welch","Larson","Frazier","Burke","Hanson","Day","Mendoza","Moreno","Bowman","Medina","Fowler","Brewer","Hoffman","Carlson","Silva","Pearson","Holland","Douglas","Fleming","Jensen","Vargas","Byrd","Davidson","Hopkins","May","Terry","Herrera","Wade","Soto","Walters","Curtis","Neal","Caldwell","Lowe","Jennings","Barnett","Graves","Jimenez","Horton","Shelton","Barrett","Obrien","Castro","Sutton","Gregory","McKinney","Lucas","Miles","Craig","Rodriquez","Chambers","Holt","Lambert","Fletcher","Watts","Bates","Hale","Rhodes","Pena","Beck","Newman","Haynes","McDaniel","Mendez","Bush","Vaughn","Parks","Dawson","Santiago","Norris","Hardy","Love","Steele","Curry","Powers","Schultz","Barker","Guzman","Page","Munoz","Ball","Keller","Chandler","Weber","Leonard","Walsh","Lyons","Ramsey","Wolfe","Schneider","Mullins","Benson","Sharp","Bowen","Daniel","Barber","Cummings","Hines","Baldwin","Griffith","Valdez","Hubbard","Salazar","Reeves","Warner","Stevenson","Burgess","Santos","Tate","Cross","Garner","Mann","Mack","Moss","Thornton","Dennis","McGee","Farmer","Delgado","Aguilar","Vega","Glover","Manning","Cohen","Harmon","Rodgers","Robbins","Newton","Todd","Blair","Higgins","Ingram","Reese","Cannon","Strickland","Townsend","Potter","Goodwin","Walton","Rowe","Hampton","Ortega","Patton","Swanson","Joseph","Francis","Goodman","Maldonado","Yates","Becker","Erickson","Hodges","Rios","Conner","Adkins","Webster","Norman","Malone","Hammond","Flowers","Cobb","Moody","Quinn","Blake","Maxwell","Pope","Floyd","Osborne","Paul","McCarthy","Guerrero","Lindsey","Estrada","Sandoval","Gibbs","Tyler","Gross","Fitzgerald","Stokes","Doyle","Sherman","Saunders","Wise","Colon","Gill","Alvarado","Greer","Padilla","Simon","Waters","Nunez","Ballard","Schwartz","McBride","Houston","Christensen","Klein","Pratt","Briggs","Parsons","McLaughlin","Zimmerman","French","Buchanan","Moran","Copeland","Roy","Pittman","Brady","McCormick","Holloway","Brock","Poole","Frank","Logan","Owen","Bass","Marsh","Drake","Wong","Jefferson","Park","Morton","Abbott","Sparks","Patrick","Norton","Huff","Clayton","Massey","Lloyd","Figueroa","Carson","Bowers","Roberson","Barton","Tran","Lamb","Harrington","Casey","Boone","Cortez","Clarke","Mathis","Singleton","Wilkins","Cain","Bryan","Underwood","Hogan","McKenzie","Collier","Luna","Phelps","McGuire","Allison","Bridges","Wilkerson","Nash","Summers","Atkins"],it:["Acciai","Aglietti","Agostini","Agresti","Ahmed","Aiazzi","Albanese","Alberti","Alessi","Alfani","Alinari","Alterini","Amato","Ammannati","Ancillotti","Andrei","Andreini","Andreoni","Angeli","Anichini","Antonelli","Antonini","Arena","Ariani","Arnetoli","Arrighi","Baccani","Baccetti","Bacci","Bacherini","Badii","Baggiani","Baglioni","Bagni","Bagnoli","Baldassini","Baldi","Baldini","Ballerini","Balli","Ballini","Balloni","Bambi","Banchi","Bandinelli","Bandini","Bani","Barbetti","Barbieri","Barchielli","Bardazzi","Bardelli","Bardi","Barducci","Bargellini","Bargiacchi","Barni","Baroncelli","Baroncini","Barone","Baroni","Baronti","Bartalesi","Bartoletti","Bartoli","Bartolini","Bartoloni","Bartolozzi","Basagni","Basile","Bassi","Batacchi","Battaglia","Battaglini","Bausi","Becagli","Becattini","Becchi","Becucci","Bellandi","Bellesi","Belli","Bellini","Bellucci","Bencini","Benedetti","Benelli","Beni","Benini","Bensi","Benucci","Benvenuti","Berlincioni","Bernacchioni","Bernardi","Bernardini","Berni","Bernini","Bertelli","Berti","Bertini","Bessi","Betti","Bettini","Biagi","Biagini","Biagioni","Biagiotti","Biancalani","Bianchi","Bianchini","Bianco","Biffoli","Bigazzi","Bigi","Biliotti","Billi","Binazzi","Bindi","Bini","Biondi","Bizzarri","Bocci","Bogani","Bolognesi","Bonaiuti","Bonanni","Bonciani","Boncinelli","Bondi","Bonechi","Bongini","Boni","Bonini","Borchi","Boretti","Borghi","Borghini","Borgioli","Borri","Borselli","Boschi","Bottai","Bracci","Braccini","Brandi","Braschi","Bravi","Brazzini","Breschi","Brilli","Brizzi","Brogelli","Brogi","Brogioni","Brunelli","Brunetti","Bruni","Bruno","Brunori","Bruschi","Bucci","Bucciarelli","Buccioni","Bucelli","Bulli","Burberi","Burchi","Burgassi","Burroni","Bussotti","Buti","Caciolli","Caiani","Calabrese","Calamai","Calamandrei","Caldini","Calo'","Calonaci","Calosi","Calvelli","Cambi","Camiciottoli","Cammelli","Cammilli","Campolmi","Cantini","Capanni","Capecchi","Caponi","Cappelletti","Cappelli","Cappellini","Cappugi","Capretti","Caputo","Carbone","Carboni","Cardini","Carlesi","Carletti","Carli","Caroti","Carotti","Carrai","Carraresi","Carta","Caruso","Casalini","Casati","Caselli","Casini","Castagnoli","Castellani","Castelli","Castellucci","Catalano","Catarzi","Catelani","Cavaciocchi","Cavallaro","Cavallini","Cavicchi","Cavini","Ceccarelli","Ceccatelli","Ceccherelli","Ceccherini","Cecchi","Cecchini","Cecconi","Cei","Cellai","Celli","Cellini","Cencetti","Ceni","Cenni","Cerbai","Cesari","Ceseri","Checcacci","Checchi","Checcucci","Cheli","Chellini","Chen","Cheng","Cherici","Cherubini","Chiaramonti","Chiarantini","Chiarelli","Chiari","Chiarini","Chiarugi","Chiavacci","Chiesi","Chimenti","Chini","Chirici","Chiti","Ciabatti","Ciampi","Cianchi","Cianfanelli","Cianferoni","Ciani","Ciapetti","Ciappi","Ciardi","Ciatti","Cicali","Ciccone","Cinelli","Cini","Ciobanu","Ciolli","Cioni","Cipriani","Cirillo","Cirri","Ciucchi","Ciuffi","Ciulli","Ciullini","Clemente","Cocchi","Cognome","Coli","Collini","Colombo","Colzi","Comparini","Conforti","Consigli","Conte","Conti","Contini","Coppini","Coppola","Corsi","Corsini","Corti","Cortini","Cosi","Costa","Costantini","Costantino","Cozzi","Cresci","Crescioli","Cresti","Crini","Curradi","D'Agostino","D'Alessandro","D'Amico","D'Angelo","Daddi","Dainelli","Dallai","Danti","Davitti","De Angelis","De Luca","De Marco","De Rosa","De Santis","De Simone","De Vita","Degl'Innocenti","Degli Innocenti","Dei","Del Lungo","Del Re","Di Marco","Di Stefano","Dini","Diop","Dobre","Dolfi","Donati","Dondoli","Dong","Donnini","Ducci","Dumitru","Ermini","Esposito","Evangelisti","Fabbri","Fabbrini","Fabbrizzi","Fabbroni","Fabbrucci","Fabiani","Facchini","Faggi","Fagioli","Failli","Faini","Falciani","Falcini","Falcone","Fallani","Falorni","Falsini","Falugiani","Fancelli","Fanelli","Fanetti","Fanfani","Fani","Fantappie'","Fantechi","Fanti","Fantini","Fantoni","Farina","Fattori","Favilli","Fedi","Fei","Ferrante","Ferrara","Ferrari","Ferraro","Ferretti","Ferri","Ferrini","Ferroni","Fiaschi","Fibbi","Fiesoli","Filippi","Filippini","Fini","Fioravanti","Fiore","Fiorentini","Fiorini","Fissi","Focardi","Foggi","Fontana","Fontanelli","Fontani","Forconi","Formigli","Forte","Forti","Fortini","Fossati","Fossi","Francalanci","Franceschi","Franceschini","Franchi","Franchini","Franci","Francini","Francioni","Franco","Frassineti","Frati","Fratini","Frilli","Frizzi","Frosali","Frosini","Frullini","Fusco","Fusi","Gabbrielli","Gabellini","Gagliardi","Galanti","Galardi","Galeotti","Galletti","Galli","Gallo","Gallori","Gambacciani","Gargani","Garofalo","Garuglieri","Gashi","Gasperini","Gatti","Gelli","Gensini","Gentile","Gentili","Geri","Gerini","Gheri","Ghini","Giachetti","Giachi","Giacomelli","Gianassi","Giani","Giannelli","Giannetti","Gianni","Giannini","Giannoni","Giannotti","Giannozzi","Gigli","Giordano","Giorgetti","Giorgi","Giovacchini","Giovannelli","Giovannetti","Giovannini","Giovannoni","Giuliani","Giunti","Giuntini","Giusti","Gonnelli","Goretti","Gori","Gradi","Gramigni","Grassi","Grasso","Graziani","Grazzini","Greco","Grifoni","Grillo","Grimaldi","Grossi","Gualtieri","Guarducci","Guarino","Guarnieri","Guasti","Guerra","Guerri","Guerrini","Guidi","Guidotti","He","Hoxha","Hu","Huang","Iandelli","Ignesti","Innocenti","Jin","La Rosa","Lai","Landi","Landini","Lanini","Lapi","Lapini","Lari","Lascialfari","Lastrucci","Latini","Lazzeri","Lazzerini","Lelli","Lenzi","Leonardi","Leoncini","Leone","Leoni","Lepri","Li","Liao","Lin","Linari","Lippi","Lisi","Livi","Lombardi","Lombardini","Lombardo","Longo","Lopez","Lorenzi","Lorenzini","Lorini","Lotti","Lu","Lucchesi","Lucherini","Lunghi","Lupi","Madiai","Maestrini","Maffei","Maggi","Maggini","Magherini","Magini","Magnani","Magnelli","Magni","Magnolfi","Magrini","Malavolti","Malevolti","Manca","Mancini","Manetti","Manfredi","Mangani","Mannelli","Manni","Mannini","Mannucci","Manuelli","Manzini","Marcelli","Marchese","Marchetti","Marchi","Marchiani","Marchionni","Marconi","Marcucci","Margheri","Mari","Mariani","Marilli","Marinai","Marinari","Marinelli","Marini","Marino","Mariotti","Marsili","Martelli","Martinelli","Martini","Martino","Marzi","Masi","Masini","Masoni","Massai","Materassi","Mattei","Matteini","Matteucci","Matteuzzi","Mattioli","Mattolini","Matucci","Mauro","Mazzanti","Mazzei","Mazzetti","Mazzi","Mazzini","Mazzocchi","Mazzoli","Mazzoni","Mazzuoli","Meacci","Mecocci","Meini","Melani","Mele","Meli","Mengoni","Menichetti","Meoni","Merlini","Messeri","Messina","Meucci","Miccinesi","Miceli","Micheli","Michelini","Michelozzi","Migliori","Migliorini","Milani","Miniati","Misuri","Monaco","Montagnani","Montagni","Montanari","Montelatici","Monti","Montigiani","Montini","Morandi","Morandini","Morelli","Moretti","Morganti","Mori","Morini","Moroni","Morozzi","Mugnai","Mugnaini","Mustafa","Naldi","Naldini","Nannelli","Nanni","Nannini","Nannucci","Nardi","Nardini","Nardoni","Natali","Ndiaye","Nencetti","Nencini","Nencioni","Neri","Nesi","Nesti","Niccolai","Niccoli","Niccolini","Nigi","Nistri","Nocentini","Noferini","Novelli","Nucci","Nuti","Nutini","Oliva","Olivieri","Olmi","Orlandi","Orlandini","Orlando","Orsini","Ortolani","Ottanelli","Pacciani","Pace","Paci","Pacini","Pagani","Pagano","Paggetti","Pagliai","Pagni","Pagnini","Paladini","Palagi","Palchetti","Palloni","Palmieri","Palumbo","Pampaloni","Pancani","Pandolfi","Pandolfini","Panerai","Panichi","Paoletti","Paoli","Paolini","Papi","Papini","Papucci","Parenti","Parigi","Parisi","Parri","Parrini","Pasquini","Passeri","Pecchioli","Pecorini","Pellegrini","Pepi","Perini","Perrone","Peruzzi","Pesci","Pestelli","Petri","Petrini","Petrucci","Pettini","Pezzati","Pezzatini","Piani","Piazza","Piazzesi","Piazzini","Piccardi","Picchi","Piccini","Piccioli","Pieraccini","Pieraccioni","Pieralli","Pierattini","Pieri","Pierini","Pieroni","Pietrini","Pini","Pinna","Pinto","Pinzani","Pinzauti","Piras","Pisani","Pistolesi","Poggesi","Poggi","Poggiali","Poggiolini","Poli","Pollastri","Porciani","Pozzi","Pratellesi","Pratesi","Prosperi","Pruneti","Pucci","Puccini","Puccioni","Pugi","Pugliese","Puliti","Querci","Quercioli","Raddi","Radu","Raffaelli","Ragazzini","Ranfagni","Ranieri","Rastrelli","Raugei","Raveggi","Renai","Renzi","Rettori","Ricci","Ricciardi","Ridi","Ridolfi","Rigacci","Righi","Righini","Rinaldi","Risaliti","Ristori","Rizzo","Rocchi","Rocchini","Rogai","Romagnoli","Romanelli","Romani","Romano","Romei","Romeo","Romiti","Romoli","Romolini","Rontini","Rosati","Roselli","Rosi","Rossetti","Rossi","Rossini","Rovai","Ruggeri","Ruggiero","Russo","Sabatini","Saccardi","Sacchetti","Sacchi","Sacco","Salerno","Salimbeni","Salucci","Salvadori","Salvestrini","Salvi","Salvini","Sanesi","Sani","Sanna","Santi","Santini","Santoni","Santoro","Santucci","Sardi","Sarri","Sarti","Sassi","Sbolci","Scali","Scarpelli","Scarselli","Scopetani","Secci","Selvi","Senatori","Senesi","Serafini","Sereni","Serra","Sestini","Sguanci","Sieni","Signorini","Silvestri","Simoncini","Simonetti","Simoni","Singh","Sodi","Soldi","Somigli","Sorbi","Sorelli","Sorrentino","Sottili","Spina","Spinelli","Staccioli","Staderini","Stefanelli","Stefani","Stefanini","Stella","Susini","Tacchi","Tacconi","Taddei","Tagliaferri","Tamburini","Tanganelli","Tani","Tanini","Tapinassi","Tarchi","Tarchiani","Targioni","Tassi","Tassini","Tempesti","Terzani","Tesi","Testa","Testi","Tilli","Tinti","Tirinnanzi","Toccafondi","Tofanari","Tofani","Tognaccini","Tonelli","Tonini","Torelli","Torrini","Tosi","Toti","Tozzi","Trambusti","Trapani","Tucci","Turchi","Ugolini","Ulivi","Valente","Valenti","Valentini","Vangelisti","Vanni","Vannini","Vannoni","Vannozzi","Vannucchi","Vannucci","Ventura","Venturi","Venturini","Vestri","Vettori","Vichi","Viciani","Vieri","Vigiani","Vignoli","Vignolini","Vignozzi","Villani","Vinci","Visani","Vitale","Vitali","Viti","Viviani","Vivoli","Volpe","Volpi","Wang","Wu","Xu","Yang","Ye","Zagli","Zani","Zanieri","Zanobini","Zecchi","Zetti","Zhang","Zheng","Zhou","Zhu","Zingoni","Zini","Zoppi"],nl:["Albers","Alblas","Appelman","Baars","Baas","Bakker","Blank","Bleeker","Blok","Blom","Boer","Boers","Boldewijn","Boon","Boot","Bos","Bosch","Bosma","Bosman","Bouma","Bouman","Bouwman","Brands","Brouwer","Burger","Buijs","Buitenhuis","Ceder","Cohen","Dekker","Dekkers","Dijkman","Dijkstra","Driessen","Drost","Engel","Evers","Faber","Franke","Gerritsen","Goedhart","Goossens","Groen","Groenenberg","Groot","Haan","Hart","Heemskerk","Hendriks","Hermans","Hoekstra","Hofman","Hopman","Huisman","Jacobs","Jansen","Janssen","Jonker","Jaspers","Keijzer","Klaassen","Klein","Koek","Koenders","Kok","Kool","Koopman","Koopmans","Koning","Koster","Kramer","Kroon","Kuijpers","Kuiper","Kuipers","Kurt","Koster","Kwakman","Los","Lubbers","Maas","Markus","Martens","Meijer","Mol","Molenaar","Mulder","Nieuwenhuis","Peeters","Peters","Pengel","Pieters","Pool","Post","Postma","Prins","Pronk","Reijnders","Rietveld","Roest","Roos","Sanders","Schaap","Scheffer","Schenk","Schilder","Schipper","Schmidt","Scholten","Schouten","Schut","Schutte","Schuurman","Simons","Smeets","Smit","Smits","Snel","Swinkels","Tas","Terpstra","Timmermans","Tol","Tromp","Troost","Valk","Veenstra","Veldkamp","Verbeek","Verheul","Verhoeven","Vermeer","Vermeulen","Verweij","Vink","Visser","Voorn","Vos","Wagenaar","Wiersema","Willems","Willemsen","Witteveen","Wolff","Wolters","Zijlstra","Zwart","de Beer","de Boer","de Bruijn","de Bruin","de Graaf","de Groot","de Haan","de Haas","de Jager","de Jong","de Jonge","de Koning","de Lange","de Leeuw","de Ridder","de Rooij","de Ruiter","de Vos","de Vries","de Waal","de Wit","de Zwart","van Beek","van Boven","van Dam","van Dijk","van Dongen","van Doorn","van Egmond","van Eijk","van Es","van Gelder","van Gelderen","van Houten","van Hulst","van Kempen","van Kesteren","van Leeuwen","van Loon","van Mill","van Noord","van Ommen","van Ommeren","van Oosten","van Oostveen","van Rijn","van Schaik","van Veen","van Vliet","van Wijk","van Wijngaarden","van den Poel","van de Pol","van den Ploeg","van de Ven","van den Berg","van den Bosch","van den Brink","van den Broek","van den Heuvel","van der Heijden","van der Horst","van der Hulst","van der Kroon","van der Laan","van der Linden","van der Meer","van der Meij","van der Meulen","van der Molen","van der Sluis","van der Spek","van der Veen","van der Velde","van der Velden","van der Vliet","van der Wal"],uk:["Smith","Jones","Williams","Taylor","Brown","Davies","Evans","Wilson","Thomas","Johnson","Roberts","Robinson","Thompson","Wright","Walker","White","Edwards","Hughes","Green","Hall","Lewis","Harris","Clarke","Patel","Jackson","Wood","Turner","Martin","Cooper","Hill","Ward","Morris","Moore","Clark","Lee","King","Baker","Harrison","Morgan","Allen","James","Scott","Phillips","Watson","Davis","Parker","Price","Bennett","Young","Griffiths","Mitchell","Kelly","Cook","Carter","Richardson","Bailey","Collins","Bell","Shaw","Murphy","Miller","Cox","Richards","Khan","Marshall","Anderson","Simpson","Ellis","Adams","Singh","Begum","Wilkinson","Foster","Chapman","Powell","Webb","Rogers","Gray","Mason","Ali","Hunt","Hussain","Campbell","Matthews","Owen","Palmer","Holmes","Mills","Barnes","Knight","Lloyd","Butler","Russell","Barker","Fisher","Stevens","Jenkins","Murray","Dixon","Harvey","Graham","Pearson","Ahmed","Fletcher","Walsh","Kaur","Gibson","Howard","Andrews","Stewart","Elliott","Reynolds","Saunders","Payne","Fox","Ford","Pearce","Day","Brooks","West","Lawrence","Cole","Atkinson","Bradley","Spencer","Gill","Dawson","Ball","Burton","O'brien","Watts","Rose","Booth","Perry","Ryan","Grant","Wells","Armstrong","Francis","Rees","Hayes","Hart","Hudson","Newman","Barrett","Webster","Hunter","Gregory","Carr","Lowe","Page","Marsh","Riley","Dunn","Woods","Parsons","Berry","Stone","Reid","Holland","Hawkins","Harding","Porter","Robertson","Newton","Oliver","Reed","Kennedy","Williamson","Bird","Gardner","Shah","Dean","Lane","Cooke","Bates","Henderson","Parry","Burgess","Bishop","Walton","Burns","Nicholson","Shepherd","Ross","Cross","Long","Freeman","Warren","Nicholls","Hamilton","Byrne","Sutton","Mcdonald","Yates","Hodgson","Robson","Curtis","Hopkins","O'connor","Harper","Coleman","Watkins","Moss","Mccarthy","Chambers","O'neill","Griffin","Sharp","Hardy","Wheeler","Potter","Osborne","Johnston","Gordon","Doyle","Wallace","George","Jordan","Hutchinson","Rowe","Burke","May","Pritchard","Gilbert","Willis","Higgins","Read","Miles","Stevenson","Stephenson","Hammond","Arnold","Buckley","Walters","Hewitt","Barber","Nelson","Slater","Austin","Sullivan","Whitehead","Mann","Frost","Lambert","Stephens","Blake","Akhtar","Lynch","Goodwin","Barton","Woodward","Thomson","Cunningham","Quinn","Barnett","Baxter","Bibi","Clayton","Nash","Greenwood","Jennings","Holt","Kemp","Poole","Gallagher","Bond","Stokes","Tucker","Davidson","Fowler","Heath","Norman","Middleton","Lawson","Banks","French","Stanley","Jarvis","Gibbs","Ferguson","Hayward","Carroll","Douglas","Dickinson","Todd","Barlow","Peters","Lucas","Knowles","Hartley","Miah","Simmons","Morton","Alexander","Field","Morrison","Norris","Townsend","Preston","Hancock","Thornton","Baldwin","Burrows","Briggs","Parkinson","Reeves","Macdonald","Lamb","Black","Abbott","Sanders","Thorpe","Holden","Tomlinson","Perkins","Ashton","Rhodes","Fuller","Howe","Bryant","Vaughan","Dale","Davey","Weston","Bartlett","Whittaker","Davison","Kent","Skinner","Birch","Morley","Daniels","Glover","Howell","Cartwright","Pugh","Humphreys","Goddard","Brennan","Wall","Kirby","Bowen","Savage","Bull","Wong","Dobson","Smart","Wilkins","Kirk","Fraser","Duffy","Hicks","Patterson","Bradshaw","Little","Archer","Warner","Waters","O'sullivan","Farrell","Brookes","Atkins","Kay","Dodd","Bentley","Flynn","John","Schofield","Short","Haynes","Wade","Butcher","Henry","Sanderson","Crawford","Sheppard","Bolton","Coates","Giles","Gould","Houghton","Gibbons","Pratt","Manning","Law","Hooper","Noble","Dyer","Rahman","Clements","Moran","Sykes","Chan","Doherty","Connolly","Joyce","Franklin","Hobbs","Coles","Herbert","Steele","Kerr","Leach","Winter","Owens","Duncan","Naylor","Fleming","Horton","Finch","Fitzgerald","Randall","Carpenter","Marsden","Browne","Garner","Pickering","Hale","Dennis","Vincent","Chadwick","Chandler","Sharpe","Nolan","Lyons","Hurst","Collier","Peacock","Howarth","Faulkner","Rice","Pollard","Welch","Norton","Gough","Sinclair","Blackburn","Bryan","Conway","Power","Cameron","Daly","Allan","Hanson","Gardiner","Boyle","Myers","Turnbull","Wallis","Mahmood","Sims","Swift","Iqbal","Pope","Brady","Chamberlain","Rowley","Tyler","Farmer","Metcalfe","Hilton","Godfrey","Holloway","Parkin","Bray","Talbot","Donnelly","Nixon","Charlton","Benson","Whitehouse","Barry","Hope","Lord","North","Storey","Connor","Potts","Bevan","Hargreaves","Mclean","Mistry","Bruce","Howells","Hyde","Parkes","Wyatt","Fry","Lees","O'donnell","Craig","Forster","Mckenzie","Humphries","Mellor","Carey","Ingram","Summers","Leonard"],de:["Müller","Schmidt","Schneider","Fischer","Weber","Meyer","Wagner","Becker","Schulz","Hoffmann","Schäfer","Koch","Bauer","Richter","Klein","Wolf","Schröder","Neumann","Schwarz","Zimmermann","Braun","Krüger","Hofmann","Hartmann","Lange","Schmitt","Werner","Schmitz","Krause","Meier","Lehmann","Schmid","Schulze","Maier","Köhler","Herrmann","König","Walter","Mayer","Huber","Kaiser","Fuchs","Peters","Lang","Scholz","Möller","Weiß","Jung","Hahn","Schubert","Vogel","Friedrich","Keller","Günther","Frank","Berger","Winkler","Roth","Beck","Lorenz","Baumann","Franke","Albrecht","Schuster","Simon","Ludwig","Böhm","Winter","Kraus","Martin","Schumacher","Krämer","Vogt","Stein","Jäger","Otto","Sommer","Groß","Seidel","Heinrich","Brandt","Haas","Schreiber","Graf","Schulte","Dietrich","Ziegler","Kuhn","Kühn","Pohl","Engel","Horn","Busch","Bergmann","Thomas","Voigt","Sauer","Arnold","Wolff","Pfeiffer"],jp:["Sato","Suzuki","Takahashi","Tanaka","Watanabe","Ito","Yamamoto","Nakamura","Kobayashi","Kato","Yoshida","Yamada","Sasaki","Yamaguchi","Saito","Matsumoto","Inoue","Kimura","Hayashi","Shimizu","Yamazaki","Mori","Abe","Ikeda","Hashimoto","Yamashita","Ishikawa","Nakajima","Maeda","Fujita","Ogawa","Goto","Okada","Hasegawa","Murakami","Kondo","Ishii","Saito","Sakamoto","Endo","Aoki","Fujii","Nishimura","Fukuda","Ota","Miura","Fujiwara","Okamoto","Matsuda","Nakagawa","Nakano","Harada","Ono","Tamura","Takeuchi","Kaneko","Wada","Nakayama","Ishida","Ueda","Morita","Hara","Shibata","Sakai","Kudo","Yokoyama","Miyazaki","Miyamoto","Uchida","Takagi","Ando","Taniguchi","Ohno","Maruyama","Imai","Takada","Fujimoto","Takeda","Murata","Ueno","Sugiyama","Masuda","Sugawara","Hirano","Kojima","Otsuka","Chiba","Kubo","Matsui","Iwasaki","Sakurai","Kinoshita","Noguchi","Matsuo","Nomura","Kikuchi","Sano","Onishi","Sugimoto","Arai"],es:["Garcia","Fernandez","Lopez","Martinez","Gonzalez","Rodriguez","Sanchez","Perez","Martin","Gomez","Ruiz","Diaz","Hernandez","Alvarez","Jimenez","Moreno","Munoz","Alonso","Romero","Navarro","Gutierrez","Torres","Dominguez","Gil","Vazquez","Blanco","Serrano","Ramos","Castro","Suarez","Sanz","Rubio","Ortega","Molina","Delgado","Ortiz","Morales","Ramirez","Marin","Iglesias","Santos","Castillo","Garrido","Calvo","Pena","Cruz","Cano","Nunez","Prieto","Diez","Lozano","Vidal","Pascual","Ferrer","Medina","Vega","Leon","Herrero","Vicente","Mendez","Guerrero","Fuentes","Campos","Nieto","Cortes","Caballero","Ibanez","Lorenzo","Pastor","Gimenez","Saez","Soler","Marquez","Carrasco","Herrera","Montero","Arias","Crespo","Flores","Andres","Aguilar","Hidalgo","Cabrera","Mora","Duran","Velasco","Rey","Pardo","Roman","Vila","Bravo","Merino","Moya","Soto","Izquierdo","Reyes","Redondo","Marcos","Carmona","Menendez"],fr:["Martin","Bernard","Thomas","Petit","Robert","Richard","Durand","Dubois","Moreau","Laurent","Simon","Michel","Lefèvre","Leroy","Roux","David","Bertrand","Morel","Fournier","Girard","Bonnet","Dupont","Lambert","Fontaine","Rousseau","Vincent","Müller","Lefèvre","Faure","André","Mercier","Blanc","Guérin","Boyer","Garnier","Chevalier","François","Legrand","Gauthier","Garcia","Perrin","Robin","Clément","Morin","Nicolas","Henry","Roussel","Matthieu","Gautier","Masson","Marchand","Duval","Denis","Dumont","Marie","Lemaire","Noël","Meyer","Dufour","Meunier","Brun","Blanchard","Giraud","Joly","Rivière","Lucas","Brunet","Gaillard","Barbier","Arnaud","Martínez","Gérard","Roche","Renard","Schmitt","Roy","Leroux","Colin","Vidal","Caron","Picard","Roger","Fabre","Aubert","Lemoine","Renaud","Dumas","Lacroix","Olivier","Philippe","Bourgeois","Pierre","Benoît","Rey","Leclerc","Payet","Rolland","Leclercq","Guillaume","Lecomte","López","Jean","Dupuy","Guillot","Hubert","Berger","Carpentier","Sánchez","Dupuis","Moulin","Louis","Deschamps","Huet","Vasseur","Perez","Boucher","Fleury","Royer","Klein","Jacquet","Adam","Paris","Poirier","Marty","Aubry","Guyot","Carré","Charles","Renault","Charpentier","Ménard","Maillard","Baron","Bertin","Bailly","Hervé","Schneider","Fernández","Le GallGall","Collet","Léger","Bouvier","Julien","Prévost","Millet","Perrot","Daniel","Le RouxRoux","Cousin","Germain","Breton","Besson","Langlois","Rémi","Le GoffGoff","Pelletier","Lévêque","Perrier","Leblanc","Barré","Lebrun","Marchal","Weber","Mallet","Hamon","Boulanger","Jacob","Monnier","Michaud","Rodríguez","Guichard","Gillet","Étienne","Grondin","Poulain","Tessier","Chevallier","Collin","Chauvin","Da SilvaSilva","Bouchet","Gay","Lemaître","Bénard","Maréchal","Humbert","Reynaud","Antoine","Hoarau","Perret","Barthélemy","Cordier","Pichon","Lejeune","Gilbert","Lamy","Delaunay","Pasquier","Carlier","LaporteLaporte"]},postcodeAreas:[{code:"AB"},{code:"AL"},{code:"B"},{code:"BA"},{code:"BB"},{code:"BD"},{code:"BH"},{code:"BL"},{code:"BN"},{code:"BR"},{code:"BS"},{code:"BT"},{code:"CA"},{code:"CB"},{code:"CF"},{code:"CH"},{code:"CM"},{code:"CO"},{code:"CR"},{code:"CT"},{code:"CV"},{code:"CW"},{code:"DA"},{code:"DD"},{code:"DE"},{code:"DG"},{code:"DH"},{code:"DL"},{code:"DN"},{code:"DT"},{code:"DY"},{code:"E"},{code:"EC"},{code:"EH"},{code:"EN"},{code:"EX"},{code:"FK"},{code:"FY"},{code:"G"},{code:"GL"},{code:"GU"},{code:"GY"},{code:"HA"},{code:"HD"},{code:"HG"},{code:"HP"},{code:"HR"},{code:"HS"},{code:"HU"},{code:"HX"},{code:"IG"},{code:"IM"},{code:"IP"},{code:"IV"},{code:"JE"},{code:"KA"},{code:"KT"},{code:"KW"},{code:"KY"},{code:"L"},{code:"LA"},{code:"LD"},{code:"LE"},{code:"LL"},{code:"LN"},{code:"LS"},{code:"LU"},{code:"M"},{code:"ME"},{code:"MK"},{code:"ML"},{code:"N"},{code:"NE"},{code:"NG"},{code:"NN"},{code:"NP"},{code:"NR"},{code:"NW"},{code:"OL"},{code:"OX"},{code:"PA"},{code:"PE"},{code:"PH"},{code:"PL"},{code:"PO"},{code:"PR"},{code:"RG"},{code:"RH"},{code:"RM"},{code:"S"},{code:"SA"},{code:"SE"},{code:"SG"},{code:"SK"},{code:"SL"},{code:"SM"},{code:"SN"},{code:"SO"},{code:"SP"},{code:"SR"},{code:"SS"},{code:"ST"},{code:"SW"},{code:"SY"},{code:"TA"},{code:"TD"},{code:"TF"},{code:"TN"},{code:"TQ"},{code:"TR"},{code:"TS"},{code:"TW"},{code:"UB"},{code:"W"},{code:"WA"},{code:"WC"},{code:"WD"},{code:"WF"},{code:"WN"},{code:"WR"},{code:"WS"},{code:"WV"},{code:"YO"},{code:"ZE"}],countries:[{name:"Afghanistan",abbreviation:"AF"},{name:"Åland Islands",abbreviation:"AX"},{name:"Albania",abbreviation:"AL"},{name:"Algeria",abbreviation:"DZ"},{name:"American Samoa",abbreviation:"AS"},{name:"Andorra",abbreviation:"AD"},{name:"Angola",abbreviation:"AO"},{name:"Anguilla",abbreviation:"AI"},{name:"Antarctica",abbreviation:"AQ"},{name:"Antigua and Barbuda",abbreviation:"AG"},{name:"Argentina",abbreviation:"AR"},{name:"Armenia",abbreviation:"AM"},{name:"Aruba",abbreviation:"AW"},{name:"Australia",abbreviation:"AU"},{name:"Austria",abbreviation:"AT"},{name:"Azerbaijan",abbreviation:"AZ"},{name:"Bahamas",abbreviation:"BS"},{name:"Bahrain",abbreviation:"BH"},{name:"Bangladesh",abbreviation:"BD"},{name:"Barbados",abbreviation:"BB"},{name:"Belarus",abbreviation:"BY"},{name:"Belgium",abbreviation:"BE"},{name:"Belize",abbreviation:"BZ"},{name:"Benin",abbreviation:"BJ"},{name:"Bermuda",abbreviation:"BM"},{name:"Bhutan",abbreviation:"BT"},{name:"Plurinational State of Bolivia",abbreviation:"BO"},{name:"Bonaire, Sint Eustatius and Saba",abbreviation:"BQ"},{name:"Bosnia and Herzegovina",abbreviation:"BA"},{name:"Botswana",abbreviation:"BW"},{name:"Bouvet Island",abbreviation:"BV"},{name:"Brazil",abbreviation:"BR"},{name:"British Indian Ocean Territory",abbreviation:"IO"},{name:"Brunei Darussalam",abbreviation:"BN"},{name:"Bulgaria",abbreviation:"BG"},{name:"Burkina Faso",abbreviation:"BF"},{name:"Burundi",abbreviation:"BI"},{name:"Cabo Verde",abbreviation:"CV"},{name:"Cambodia",abbreviation:"KH"},{name:"Cameroon",abbreviation:"CM"},{name:"Canada",abbreviation:"CA"},{name:"Cayman Islands",abbreviation:"KY"},{name:"Central African Republic",abbreviation:"CF"},{name:"Chad",abbreviation:"TD"},{name:"Chile",abbreviation:"CL"},{name:"China",abbreviation:"CN"},{name:"Christmas Island",abbreviation:"CX"},{name:"Cocos (Keeling) Islands",abbreviation:"CC"},{name:"Colombia",abbreviation:"CO"},{name:"Comoros",abbreviation:"KM"},{name:"Congo",abbreviation:"CG"},{name:"Democratic Republic of the Congo",abbreviation:"CD"},{name:"Cook Islands",abbreviation:"CK"},{name:"Costa Rica",abbreviation:"CR"},{name:"Côte d'Ivoire",abbreviation:"CI"},{name:"Croatia",abbreviation:"HR"},{name:"Cuba",abbreviation:"CU"},{name:"Curaçao",abbreviation:"CW"},{name:"Cyprus",abbreviation:"CY"},{name:"Czechia",abbreviation:"CZ"},{name:"Denmark",abbreviation:"DK"},{name:"Djibouti",abbreviation:"DJ"},{name:"Dominica",abbreviation:"DM"},{name:"Dominican Republic",abbreviation:"DO"},{name:"Ecuador",abbreviation:"EC"},{name:"Egypt",abbreviation:"EG"},{name:"El Salvador",abbreviation:"SV"},{name:"Equatorial Guinea",abbreviation:"GQ"},{name:"Eritrea",abbreviation:"ER"},{name:"Estonia",abbreviation:"EE"},{name:"Eswatini",abbreviation:"SZ"},{name:"Ethiopia",abbreviation:"ET"},{name:"Falkland Islands (Malvinas)",abbreviation:"FK"},{name:"Faroe Islands",abbreviation:"FO"},{name:"Fiji",abbreviation:"FJ"},{name:"Finland",abbreviation:"FI"},{name:"France",abbreviation:"FR"},{name:"French Guiana",abbreviation:"GF"},{name:"French Polynesia",abbreviation:"PF"},{name:"French Southern Territories",abbreviation:"TF"},{name:"Gabon",abbreviation:"GA"},{name:"Gambia",abbreviation:"GM"},{name:"Georgia",abbreviation:"GE"},{name:"Germany",abbreviation:"DE"},{name:"Ghana",abbreviation:"GH"},{name:"Gibraltar",abbreviation:"GI"},{name:"Greece",abbreviation:"GR"},{name:"Greenland",abbreviation:"GL"},{name:"Grenada",abbreviation:"GD"},{name:"Guadeloupe",abbreviation:"GP"},{name:"Guam",abbreviation:"GU"},{name:"Guatemala",abbreviation:"GT"},{name:"Guernsey",abbreviation:"GG"},{name:"Guinea",abbreviation:"GN"},{name:"Guinea-Bissau",abbreviation:"GW"},{name:"Guyana",abbreviation:"GY"},{name:"Haiti",abbreviation:"HT"},{name:"Heard Island and McDonald Islands",abbreviation:"HM"},{name:"Holy See",abbreviation:"VA"},{name:"Honduras",abbreviation:"HN"},{name:"Hong Kong",abbreviation:"HK"},{name:"Hungary",abbreviation:"HU"},{name:"Iceland",abbreviation:"IS"},{name:"India",abbreviation:"IN"},{name:"Indonesia",abbreviation:"ID"},{name:"Islamic Republic of Iran",abbreviation:"IR"},{name:"Iraq",abbreviation:"IQ"},{name:"Ireland",abbreviation:"IE"},{name:"Isle of Man",abbreviation:"IM"},{name:"Israel",abbreviation:"IL"},{name:"Italy",abbreviation:"IT"},{name:"Jamaica",abbreviation:"JM"},{name:"Japan",abbreviation:"JP"},{name:"Jersey",abbreviation:"JE"},{name:"Jordan",abbreviation:"JO"},{name:"Kazakhstan",abbreviation:"KZ"},{name:"Kenya",abbreviation:"KE"},{name:"Kiribati",abbreviation:"KI"},{name:"Democratic People's Republic of Korea",abbreviation:"KP"},{name:"Republic of Korea",abbreviation:"KR"},{name:"Kuwait",abbreviation:"KW"},{name:"Kyrgyzstan",abbreviation:"KG"},{name:"Lao People's Democratic Republic",abbreviation:"LA"},{name:"Latvia",abbreviation:"LV"},{name:"Lebanon",abbreviation:"LB"},{name:"Lesotho",abbreviation:"LS"},{name:"Liberia",abbreviation:"LR"},{name:"Libya",abbreviation:"LY"},{name:"Liechtenstein",abbreviation:"LI"},{name:"Lithuania",abbreviation:"LT"},{name:"Luxembourg",abbreviation:"LU"},{name:"Macao",abbreviation:"MO"},{name:"Madagascar",abbreviation:"MG"},{name:"Malawi",abbreviation:"MW"},{name:"Malaysia",abbreviation:"MY"},{name:"Maldives",abbreviation:"MV"},{name:"Mali",abbreviation:"ML"},{name:"Malta",abbreviation:"MT"},{name:"Marshall Islands",abbreviation:"MH"},{name:"Martinique",abbreviation:"MQ"},{name:"Mauritania",abbreviation:"MR"},{name:"Mauritius",abbreviation:"MU"},{name:"Mayotte",abbreviation:"YT"},{name:"Mexico",abbreviation:"MX"},{name:"Federated States of Micronesia",abbreviation:"FM"},{name:"Republic of Moldova",abbreviation:"MD"},{name:"Monaco",abbreviation:"MC"},{name:"Mongolia",abbreviation:"MN"},{name:"Montenegro",abbreviation:"ME"},{name:"Montserrat",abbreviation:"MS"},{name:"Morocco",abbreviation:"MA"},{name:"Mozambique",abbreviation:"MZ"},{name:"Myanmar",abbreviation:"MM"},{name:"Namibia",abbreviation:"NA"},{name:"Nauru",abbreviation:"NR"},{name:"Nepal",abbreviation:"NP"},{name:"Kingdom of the Netherlands",abbreviation:"NL"},{name:"New Caledonia",abbreviation:"NC"},{name:"New Zealand",abbreviation:"NZ"},{name:"Nicaragua",abbreviation:"NI"},{name:"Niger",abbreviation:"NE"},{name:"Nigeria",abbreviation:"NG"},{name:"Niue",abbreviation:"NU"},{name:"Norfolk Island",abbreviation:"NF"},{name:"North Macedonia",abbreviation:"MK"},{name:"Northern Mariana Islands",abbreviation:"MP"},{name:"Norway",abbreviation:"NO"},{name:"Oman",abbreviation:"OM"},{name:"Pakistan",abbreviation:"PK"},{name:"Palau",abbreviation:"PW"},{name:"State of Palestine",abbreviation:"PS"},{name:"Panama",abbreviation:"PA"},{name:"Papua New Guinea",abbreviation:"PG"},{name:"Paraguay",abbreviation:"PY"},{name:"Peru",abbreviation:"PE"},{name:"Philippines",abbreviation:"PH"},{name:"Pitcairn",abbreviation:"PN"},{name:"Poland",abbreviation:"PL"},{name:"Portugal",abbreviation:"PT"},{name:"Puerto Rico",abbreviation:"PR"},{name:"Qatar",abbreviation:"QA"},{name:"Réunion",abbreviation:"RE"},{name:"Romania",abbreviation:"RO"},{name:"Russian Federation",abbreviation:"RU"},{name:"Rwanda",abbreviation:"RW"},{name:"Saint Barthélemy",abbreviation:"BL"},{name:"Saint Helena, Ascension and Tristan da Cunha",abbreviation:"SH"},{name:"Saint Kitts and Nevis",abbreviation:"KN"},{name:"Saint Lucia",abbreviation:"LC"},{name:"Saint Martin (French part)",abbreviation:"MF"},{name:"Saint Pierre and Miquelon",abbreviation:"PM"},{name:"Saint Vincent and the Grenadines",abbreviation:"VC"},{name:"Samoa",abbreviation:"WS"},{name:"San Marino",abbreviation:"SM"},{name:"Sao Tome and Principe",abbreviation:"ST"},{name:"Saudi Arabia",abbreviation:"SA"},{name:"Senegal",abbreviation:"SN"},{name:"Serbia",abbreviation:"RS"},{name:"Seychelles",abbreviation:"SC"},{name:"Sierra Leone",abbreviation:"SL"},{name:"Singapore",abbreviation:"SG"},{name:"Sint Maarten (Dutch part)",abbreviation:"SX"},{name:"Slovakia",abbreviation:"SK"},{name:"Slovenia",abbreviation:"SI"},{name:"Solomon Islands",abbreviation:"SB"},{name:"Somalia",abbreviation:"SO"},{name:"South Africa",abbreviation:"ZA"},{name:"South Georgia and the South Sandwich Islands",abbreviation:"GS"},{name:"South Sudan",abbreviation:"SS"},{name:"Spain",abbreviation:"ES"},{name:"Sri Lanka",abbreviation:"LK"},{name:"Sudan",abbreviation:"SD"},{name:"Suriname",abbreviation:"SR"},{name:"Svalbard and Jan Mayen",abbreviation:"SJ"},{name:"Sweden",abbreviation:"SE"},{name:"Switzerland",abbreviation:"CH"},{name:"Syrian Arab Republic",abbreviation:"SY"},{name:"Taiwan, Province of China",abbreviation:"TW"},{name:"Tajikistan",abbreviation:"TJ"},{name:"United Republic of Tanzania",abbreviation:"TZ"},{name:"Thailand",abbreviation:"TH"},{name:"Timor-Leste",abbreviation:"TL"},{name:"Togo",abbreviation:"TG"},{name:"Tokelau",abbreviation:"TK"},{name:"Tonga",abbreviation:"TO"},{name:"Trinidad and Tobago",abbreviation:"TT"},{name:"Tunisia",abbreviation:"TN"},{name:"Türkiye",abbreviation:"TR"},{name:"Turkmenistan",abbreviation:"TM"},{name:"Turks and Caicos Islands",abbreviation:"TC"},{name:"Tuvalu",abbreviation:"TV"},{name:"Uganda",abbreviation:"UG"},{name:"Ukraine",abbreviation:"UA"},{name:"United Arab Emirates",abbreviation:"AE"},{name:"United Kingdom of Great Britain and Northern Ireland",abbreviation:"GB"},{name:"United States Minor Outlying Islands",abbreviation:"UM"},{name:"United States of America",abbreviation:"US"},{name:"Uruguay",abbreviation:"UY"},{name:"Uzbekistan",abbreviation:"UZ"},{name:"Vanuatu",abbreviation:"VU"},{name:"Bolivarian Republic of Venezuela",abbreviation:"VE"},{name:"Viet Nam",abbreviation:"VN"},{name:"Virgin Islands (British)",abbreviation:"VG"},{name:"Virgin Islands (U.S.)",abbreviation:"VI"},{name:"Wallis and Futuna",abbreviation:"WF"},{name:"Western Sahara",abbreviation:"EH"},{name:"Yemen",abbreviation:"YE"},{name:"Zambia",abbreviation:"ZM"},{name:"Zimbabwe",abbreviation:"ZW"}],counties:{uk:[{name:"Bath and North East Somerset"},{name:"Aberdeenshire"},{name:"Anglesey"},{name:"Angus"},{name:"Bedford"},{name:"Blackburn with Darwen"},{name:"Blackpool"},{name:"Bournemouth"},{name:"Bracknell Forest"},{name:"Brighton & Hove"},{name:"Bristol"},{name:"Buckinghamshire"},{name:"Cambridgeshire"},{name:"Carmarthenshire"},{name:"Central Bedfordshire"},{name:"Ceredigion"},{name:"Cheshire East"},{name:"Cheshire West and Chester"},{name:"Clackmannanshire"},{name:"Conwy"},{name:"Cornwall"},{name:"County Antrim"},{name:"County Armagh"},{name:"County Down"},{name:"County Durham"},{name:"County Fermanagh"},{name:"County Londonderry"},{name:"County Tyrone"},{name:"Cumbria"},{name:"Darlington"},{name:"Denbighshire"},{name:"Derby"},{name:"Derbyshire"},{name:"Devon"},{name:"Dorset"},{name:"Dumfries and Galloway"},{name:"Dundee"},{name:"East Lothian"},{name:"East Riding of Yorkshire"},{name:"East Sussex"},{name:"Edinburgh?"},{name:"Essex"},{name:"Falkirk"},{name:"Fife"},{name:"Flintshire"},{name:"Gloucestershire"},{name:"Greater London"},{name:"Greater Manchester"},{name:"Gwent"},{name:"Gwynedd"},{name:"Halton"},{name:"Hampshire"},{name:"Hartlepool"},{name:"Herefordshire"},{name:"Hertfordshire"},{name:"Highlands"},{name:"Hull"},{name:"Isle of Wight"},{name:"Isles of Scilly"},{name:"Kent"},{name:"Lancashire"},{name:"Leicester"},{name:"Leicestershire"},{name:"Lincolnshire"},{name:"Lothian"},{name:"Luton"},{name:"Medway"},{name:"Merseyside"},{name:"Mid Glamorgan"},{name:"Middlesbrough"},{name:"Milton Keynes"},{name:"Monmouthshire"},{name:"Moray"},{name:"Norfolk"},{name:"North East Lincolnshire"},{name:"North Lincolnshire"},{name:"North Somerset"},{name:"North Yorkshire"},{name:"Northamptonshire"},{name:"Northumberland"},{name:"Nottingham"},{name:"Nottinghamshire"},{name:"Oxfordshire"},{name:"Pembrokeshire"},{name:"Perth and Kinross"},{name:"Peterborough"},{name:"Plymouth"},{name:"Poole"},{name:"Portsmouth"},{name:"Powys"},{name:"Reading"},{name:"Redcar and Cleveland"},{name:"Rutland"},{name:"Scottish Borders"},{name:"Shropshire"},{name:"Slough"},{name:"Somerset"},{name:"South Glamorgan"},{name:"South Gloucestershire"},{name:"South Yorkshire"},{name:"Southampton"},{name:"Southend-on-Sea"},{name:"Staffordshire"},{name:"Stirlingshire"},{name:"Stockton-on-Tees"},{name:"Stoke-on-Trent"},{name:"Strathclyde"},{name:"Suffolk"},{name:"Surrey"},{name:"Swindon"},{name:"Telford and Wrekin"},{name:"Thurrock"},{name:"Torbay"},{name:"Tyne and Wear"},{name:"Warrington"},{name:"Warwickshire"},{name:"West Berkshire"},{name:"West Glamorgan"},{name:"West Lothian"},{name:"West Midlands"},{name:"West Sussex"},{name:"West Yorkshire"},{name:"Western Isles"},{name:"Wiltshire"},{name:"Windsor and Maidenhead"},{name:"Wokingham"},{name:"Worcestershire"},{name:"Wrexham"},{name:"York"}]},provinces:{ca:[{name:"Alberta",abbreviation:"AB"},{name:"British Columbia",abbreviation:"BC"},{name:"Manitoba",abbreviation:"MB"},{name:"New Brunswick",abbreviation:"NB"},{name:"Newfoundland and Labrador",abbreviation:"NL"},{name:"Nova Scotia",abbreviation:"NS"},{name:"Ontario",abbreviation:"ON"},{name:"Prince Edward Island",abbreviation:"PE"},{name:"Quebec",abbreviation:"QC"},{name:"Saskatchewan",abbreviation:"SK"},{name:"Northwest Territories",abbreviation:"NT"},{name:"Nunavut",abbreviation:"NU"},{name:"Yukon",abbreviation:"YT"}],it:[{name:"Agrigento",abbreviation:"AG",code:84},{name:"Alessandria",abbreviation:"AL",code:6},{name:"Ancona",abbreviation:"AN",code:42},{name:"Aosta",abbreviation:"AO",code:7},{name:"L'Aquila",abbreviation:"AQ",code:66},{name:"Arezzo",abbreviation:"AR",code:51},{name:"Ascoli-Piceno",abbreviation:"AP",code:44},{name:"Asti",abbreviation:"AT",code:5},{name:"Avellino",abbreviation:"AV",code:64},{name:"Bari",abbreviation:"BA",code:72},{name:"Barletta-Andria-Trani",abbreviation:"BT",code:72},{name:"Belluno",abbreviation:"BL",code:25},{name:"Benevento",abbreviation:"BN",code:62},{name:"Bergamo",abbreviation:"BG",code:16},{name:"Biella",abbreviation:"BI",code:96},{name:"Bologna",abbreviation:"BO",code:37},{name:"Bolzano",abbreviation:"BZ",code:21},{name:"Brescia",abbreviation:"BS",code:17},{name:"Brindisi",abbreviation:"BR",code:74},{name:"Cagliari",abbreviation:"CA",code:92},{name:"Caltanissetta",abbreviation:"CL",code:85},{name:"Campobasso",abbreviation:"CB",code:70},{name:"Carbonia Iglesias",abbreviation:"CI",code:70},{name:"Caserta",abbreviation:"CE",code:61},{name:"Catania",abbreviation:"CT",code:87},{name:"Catanzaro",abbreviation:"CZ",code:79},{name:"Chieti",abbreviation:"CH",code:69},{name:"Como",abbreviation:"CO",code:13},{name:"Cosenza",abbreviation:"CS",code:78},{name:"Cremona",abbreviation:"CR",code:19},{name:"Crotone",abbreviation:"KR",code:101},{name:"Cuneo",abbreviation:"CN",code:4},{name:"Enna",abbreviation:"EN",code:86},{name:"Fermo",abbreviation:"FM",code:86},{name:"Ferrara",abbreviation:"FE",code:38},{name:"Firenze",abbreviation:"FI",code:48},{name:"Foggia",abbreviation:"FG",code:71},{name:"Forli-Cesena",abbreviation:"FC",code:71},{name:"Frosinone",abbreviation:"FR",code:60},{name:"Genova",abbreviation:"GE",code:10},{name:"Gorizia",abbreviation:"GO",code:31},{name:"Grosseto",abbreviation:"GR",code:53},{name:"Imperia",abbreviation:"IM",code:8},{name:"Isernia",abbreviation:"IS",code:94},{name:"La-Spezia",abbreviation:"SP",code:66},{name:"Latina",abbreviation:"LT",code:59},{name:"Lecce",abbreviation:"LE",code:75},{name:"Lecco",abbreviation:"LC",code:97},{name:"Livorno",abbreviation:"LI",code:49},{name:"Lodi",abbreviation:"LO",code:98},{name:"Lucca",abbreviation:"LU",code:46},{name:"Macerata",abbreviation:"MC",code:43},{name:"Mantova",abbreviation:"MN",code:20},{name:"Massa-Carrara",abbreviation:"MS",code:45},{name:"Matera",abbreviation:"MT",code:77},{name:"Medio Campidano",abbreviation:"VS",code:77},{name:"Messina",abbreviation:"ME",code:83},{name:"Milano",abbreviation:"MI",code:15},{name:"Modena",abbreviation:"MO",code:36},{name:"Monza-Brianza",abbreviation:"MB",code:36},{name:"Napoli",abbreviation:"NA",code:63},{name:"Novara",abbreviation:"NO",code:3},{name:"Nuoro",abbreviation:"NU",code:91},{name:"Ogliastra",abbreviation:"OG",code:91},{name:"Olbia Tempio",abbreviation:"OT",code:91},{name:"Oristano",abbreviation:"OR",code:95},{name:"Padova",abbreviation:"PD",code:28},{name:"Palermo",abbreviation:"PA",code:82},{name:"Parma",abbreviation:"PR",code:34},{name:"Pavia",abbreviation:"PV",code:18},{name:"Perugia",abbreviation:"PG",code:54},{name:"Pesaro-Urbino",abbreviation:"PU",code:41},{name:"Pescara",abbreviation:"PE",code:68},{name:"Piacenza",abbreviation:"PC",code:33},{name:"Pisa",abbreviation:"PI",code:50},{name:"Pistoia",abbreviation:"PT",code:47},{name:"Pordenone",abbreviation:"PN",code:93},{name:"Potenza",abbreviation:"PZ",code:76},{name:"Prato",abbreviation:"PO",code:100},{name:"Ragusa",abbreviation:"RG",code:88},{name:"Ravenna",abbreviation:"RA",code:39},{name:"Reggio-Calabria",abbreviation:"RC",code:35},{name:"Reggio-Emilia",abbreviation:"RE",code:35},{name:"Rieti",abbreviation:"RI",code:57},{name:"Rimini",abbreviation:"RN",code:99},{name:"Roma",abbreviation:"Roma",code:58},{name:"Rovigo",abbreviation:"RO",code:29},{name:"Salerno",abbreviation:"SA",code:65},{name:"Sassari",abbreviation:"SS",code:90},{name:"Savona",abbreviation:"SV",code:9},{name:"Siena",abbreviation:"SI",code:52},{name:"Siracusa",abbreviation:"SR",code:89},{name:"Sondrio",abbreviation:"SO",code:14},{name:"Taranto",abbreviation:"TA",code:73},{name:"Teramo",abbreviation:"TE",code:67},{name:"Terni",abbreviation:"TR",code:55},{name:"Torino",abbreviation:"TO",code:1},{name:"Trapani",abbreviation:"TP",code:81},{name:"Trento",abbreviation:"TN",code:22},{name:"Treviso",abbreviation:"TV",code:26},{name:"Trieste",abbreviation:"TS",code:32},{name:"Udine",abbreviation:"UD",code:30},{name:"Varese",abbreviation:"VA",code:12},{name:"Venezia",abbreviation:"VE",code:27},{name:"Verbania",abbreviation:"VB",code:27},{name:"Vercelli",abbreviation:"VC",code:2},{name:"Verona",abbreviation:"VR",code:23},{name:"Vibo-Valentia",abbreviation:"VV",code:102},{name:"Vicenza",abbreviation:"VI",code:24},{name:"Viterbo",abbreviation:"VT",code:56}]},nationalities:[{name:"Afghan"},{name:"Albanian"},{name:"Algerian"},{name:"American"},{name:"Andorran"},{name:"Angolan"},{name:"Antiguans"},{name:"Argentinean"},{name:"Armenian"},{name:"Australian"},{name:"Austrian"},{name:"Azerbaijani"},{name:"Bahami"},{name:"Bahraini"},{name:"Bangladeshi"},{name:"Barbadian"},{name:"Barbudans"},{name:"Batswana"},{name:"Belarusian"},{name:"Belgian"},{name:"Belizean"},{name:"Beninese"},{name:"Bhutanese"},{name:"Bolivian"},{name:"Bosnian"},{name:"Brazilian"},{name:"British"},{name:"Bruneian"},{name:"Bulgarian"},{name:"Burkinabe"},{name:"Burmese"},{name:"Burundian"},{name:"Cambodian"},{name:"Cameroonian"},{name:"Canadian"},{name:"Cape Verdean"},{name:"Central African"},{name:"Chadian"},{name:"Chilean"},{name:"Chinese"},{name:"Colombian"},{name:"Comoran"},{name:"Congolese"},{name:"Costa Rican"},{name:"Croatian"},{name:"Cuban"},{name:"Cypriot"},{name:"Czech"},{name:"Danish"},{name:"Djibouti"},{name:"Dominican"},{name:"Dutch"},{name:"East Timorese"},{name:"Ecuadorean"},{name:"Egyptian"},{name:"Emirian"},{name:"Equatorial Guinean"},{name:"Eritrean"},{name:"Estonian"},{name:"Ethiopian"},{name:"Fijian"},{name:"Filipino"},{name:"Finnish"},{name:"French"},{name:"Gabonese"},{name:"Gambian"},{name:"Georgian"},{name:"German"},{name:"Ghanaian"},{name:"Greek"},{name:"Grenadian"},{name:"Guatemalan"},{name:"Guinea-Bissauan"},{name:"Guinean"},{name:"Guyanese"},{name:"Haitian"},{name:"Herzegovinian"},{name:"Honduran"},{name:"Hungarian"},{name:"I-Kiribati"},{name:"Icelander"},{name:"Indian"},{name:"Indonesian"},{name:"Iranian"},{name:"Iraqi"},{name:"Irish"},{name:"Israeli"},{name:"Italian"},{name:"Ivorian"},{name:"Jamaican"},{name:"Japanese"},{name:"Jordanian"},{name:"Kazakhstani"},{name:"Kenyan"},{name:"Kittian and Nevisian"},{name:"Kuwaiti"},{name:"Kyrgyz"},{name:"Laotian"},{name:"Latvian"},{name:"Lebanese"},{name:"Liberian"},{name:"Libyan"},{name:"Liechtensteiner"},{name:"Lithuanian"},{name:"Luxembourger"},{name:"Macedonian"},{name:"Malagasy"},{name:"Malawian"},{name:"Malaysian"},{name:"Maldivan"},{name:"Malian"},{name:"Maltese"},{name:"Marshallese"},{name:"Mauritanian"},{name:"Mauritian"},{name:"Mexican"},{name:"Micronesian"},{name:"Moldovan"},{name:"Monacan"},{name:"Mongolian"},{name:"Moroccan"},{name:"Mosotho"},{name:"Motswana"},{name:"Mozambican"},{name:"Namibian"},{name:"Nauruan"},{name:"Nepalese"},{name:"New Zealander"},{name:"Nicaraguan"},{name:"Nigerian"},{name:"Nigerien"},{name:"North Korean"},{name:"Northern Irish"},{name:"Norwegian"},{name:"Omani"},{name:"Pakistani"},{name:"Palauan"},{name:"Panamanian"},{name:"Papua New Guinean"},{name:"Paraguayan"},{name:"Peruvian"},{name:"Polish"},{name:"Portuguese"},{name:"Qatari"},{name:"Romani"},{name:"Russian"},{name:"Rwandan"},{name:"Saint Lucian"},{name:"Salvadoran"},{name:"Samoan"},{name:"San Marinese"},{name:"Sao Tomean"},{name:"Saudi"},{name:"Scottish"},{name:"Senegalese"},{name:"Serbian"},{name:"Seychellois"},{name:"Sierra Leonean"},{name:"Singaporean"},{name:"Slovakian"},{name:"Slovenian"},{name:"Solomon Islander"},{name:"Somali"},{name:"South African"},{name:"South Korean"},{name:"Spanish"},{name:"Sri Lankan"},{name:"Sudanese"},{name:"Surinamer"},{name:"Swazi"},{name:"Swedish"},{name:"Swiss"},{name:"Syrian"},{name:"Taiwanese"},{name:"Tajik"},{name:"Tanzanian"},{name:"Thai"},{name:"Togolese"},{name:"Tongan"},{name:"Trinidadian or Tobagonian"},{name:"Tunisian"},{name:"Turkish"},{name:"Tuvaluan"},{name:"Ugandan"},{name:"Ukrainian"},{name:"Uruguaya"},{name:"Uzbekistani"},{name:"Venezuela"},{name:"Vietnamese"},{name:"Wels"},{name:"Yemenit"},{name:"Zambia"},{name:"Zimbabwe"}],locale_languages:["aa","ab","ae","af","ak","am","an","ar","as","av","ay","az","ba","be","bg","bh","bi","bm","bn","bo","br","bs","ca","ce","ch","co","cr","cs","cu","cv","cy","da","de","dv","dz","ee","el","en","eo","es","et","eu","fa","ff","fi","fj","fo","fr","fy","ga","gd","gl","gn","gu","gv","ha","he","hi","ho","hr","ht","hu","hy","hz","ia","id","ie","ig","ii","ik","io","is","it","iu","ja","jv","ka","kg","ki","kj","kk","kl","km","kn","ko","kr","ks","ku","kv","kw","ky","la","lb","lg","li","ln","lo","lt","lu","lv","mg","mh","mi","mk","ml","mn","mr","ms","mt","my","na","nb","nd","ne","ng","nl","nn","no","nr","nv","ny","oc","oj","om","or","os","pa","pi","pl","ps","pt","qu","rm","rn","ro","ru","rw","sa","sc","sd","se","sg","si","sk","sl","sm","sn","so","sq","sr","ss","st","su","sv","sw","ta","te","tg","th","ti","tk","tl","tn","to","tr","ts","tt","tw","ty","ug","uk","ur","uz","ve","vi","vo","wa","wo","xh","yi","yo","za","zh","zu"],locale_regions:["agq-CM","asa-TZ","ast-ES","bas-CM","bem-ZM","bez-TZ","brx-IN","cgg-UG","chr-US","dav-KE","dje-NE","dsb-DE","dua-CM","dyo-SN","ebu-KE","ewo-CM","fil-PH","fur-IT","gsw-CH","gsw-FR","gsw-LI","guz-KE","haw-US","hsb-DE","jgo-CM","jmc-TZ","kab-DZ","kam-KE","kde-TZ","kea-CV","khq-ML","kkj-CM","kln-KE","kok-IN","ksb-TZ","ksf-CM","ksh-DE","lag-TZ","lkt-US","luo-KE","luy-KE","mas-KE","mas-TZ","mer-KE","mfe-MU","mgh-MZ","mgo-CM","mua-CM","naq-NA","nmg-CM","nnh-CM","nus-SD","nyn-UG","rof-TZ","rwk-TZ","sah-RU","saq-KE","sbp-TZ","seh-MZ","ses-ML","shi-Latn","shi-Latn-MA","shi-Tfng","shi-Tfng-MA","smn-FI","teo-KE","teo-UG","twq-NE","tzm-Latn","tzm-Latn-MA","vai-Latn","vai-Latn-LR","vai-Vaii","vai-Vaii-LR","vun-TZ","wae-CH","xog-UG","yav-CM","zgh-MA","af-NA","af-ZA","ak-GH","am-ET","ar-001","ar-AE","ar-BH","ar-DJ","ar-DZ","ar-EG","ar-EH","ar-ER","ar-IL","ar-IQ","ar-JO","ar-KM","ar-KW","ar-LB","ar-LY","ar-MA","ar-MR","ar-OM","ar-PS","ar-QA","ar-SA","ar-SD","ar-SO","ar-SS","ar-SY","ar-TD","ar-TN","ar-YE","as-IN","az-Cyrl","az-Cyrl-AZ","az-Latn","az-Latn-AZ","be-BY","bg-BG","bm-Latn","bm-Latn-ML","bn-BD","bn-IN","bo-CN","bo-IN","br-FR","bs-Cyrl","bs-Cyrl-BA","bs-Latn","bs-Latn-BA","ca-AD","ca-ES","ca-ES-VALENCIA","ca-FR","ca-IT","cs-CZ","cy-GB","da-DK","da-GL","de-AT","de-BE","de-CH","de-DE","de-LI","de-LU","dz-BT","ee-GH","ee-TG","el-CY","el-GR","en-001","en-150","en-AG","en-AI","en-AS","en-AU","en-BB","en-BE","en-BM","en-BS","en-BW","en-BZ","en-CA","en-CC","en-CK","en-CM","en-CX","en-DG","en-DM","en-ER","en-FJ","en-FK","en-FM","en-GB","en-GD","en-GG","en-GH","en-GI","en-GM","en-GU","en-GY","en-HK","en-IE","en-IM","en-IN","en-IO","en-JE","en-JM","en-KE","en-KI","en-KN","en-KY","en-LC","en-LR","en-LS","en-MG","en-MH","en-MO","en-MP","en-MS","en-MT","en-MU","en-MW","en-MY","en-NA","en-NF","en-NG","en-NR","en-NU","en-NZ","en-PG","en-PH","en-PK","en-PN","en-PR","en-PW","en-RW","en-SB","en-SC","en-SD","en-SG","en-SH","en-SL","en-SS","en-SX","en-SZ","en-TC","en-TK","en-TO","en-TT","en-TV","en-TZ","en-UG","en-UM","en-US","en-US-POSIX","en-VC","en-VG","en-VI","en-VU","en-WS","en-ZA","en-ZM","en-ZW","eo-001","es-419","es-AR","es-BO","es-CL","es-CO","es-CR","es-CU","es-DO","es-EA","es-EC","es-ES","es-GQ","es-GT","es-HN","es-IC","es-MX","es-NI","es-PA","es-PE","es-PH","es-PR","es-PY","es-SV","es-US","es-UY","es-VE","et-EE","eu-ES","fa-AF","fa-IR","ff-CM","ff-GN","ff-MR","ff-SN","fi-FI","fo-FO","fr-BE","fr-BF","fr-BI","fr-BJ","fr-BL","fr-CA","fr-CD","fr-CF","fr-CG","fr-CH","fr-CI","fr-CM","fr-DJ","fr-DZ","fr-FR","fr-GA","fr-GF","fr-GN","fr-GP","fr-GQ","fr-HT","fr-KM","fr-LU","fr-MA","fr-MC","fr-MF","fr-MG","fr-ML","fr-MQ","fr-MR","fr-MU","fr-NC","fr-NE","fr-PF","fr-PM","fr-RE","fr-RW","fr-SC","fr-SN","fr-SY","fr-TD","fr-TG","fr-TN","fr-VU","fr-WF","fr-YT","fy-NL","ga-IE","gd-GB","gl-ES","gu-IN","gv-IM","ha-Latn","ha-Latn-GH","ha-Latn-NE","ha-Latn-NG","he-IL","hi-IN","hr-BA","hr-HR","hu-HU","hy-AM","id-ID","ig-NG","ii-CN","is-IS","it-CH","it-IT","it-SM","ja-JP","ka-GE","ki-KE","kk-Cyrl","kk-Cyrl-KZ","kl-GL","km-KH","kn-IN","ko-KP","ko-KR","ks-Arab","ks-Arab-IN","kw-GB","ky-Cyrl","ky-Cyrl-KG","lb-LU","lg-UG","ln-AO","ln-CD","ln-CF","ln-CG","lo-LA","lt-LT","lu-CD","lv-LV","mg-MG","mk-MK","ml-IN","mn-Cyrl","mn-Cyrl-MN","mr-IN","ms-Latn","ms-Latn-BN","ms-Latn-MY","ms-Latn-SG","mt-MT","my-MM","nb-NO","nb-SJ","nd-ZW","ne-IN","ne-NP","nl-AW","nl-BE","nl-BQ","nl-CW","nl-NL","nl-SR","nl-SX","nn-NO","om-ET","om-KE","or-IN","os-GE","os-RU","pa-Arab","pa-Arab-PK","pa-Guru","pa-Guru-IN","pl-PL","ps-AF","pt-AO","pt-BR","pt-CV","pt-GW","pt-MO","pt-MZ","pt-PT","pt-ST","pt-TL","qu-BO","qu-EC","qu-PE","rm-CH","rn-BI","ro-MD","ro-RO","ru-BY","ru-KG","ru-KZ","ru-MD","ru-RU","ru-UA","rw-RW","se-FI","se-NO","se-SE","sg-CF","si-LK","sk-SK","sl-SI","sn-ZW","so-DJ","so-ET","so-KE","so-SO","sq-AL","sq-MK","sq-XK","sr-Cyrl","sr-Cyrl-BA","sr-Cyrl-ME","sr-Cyrl-RS","sr-Cyrl-XK","sr-Latn","sr-Latn-BA","sr-Latn-ME","sr-Latn-RS","sr-Latn-XK","sv-AX","sv-FI","sv-SE","sw-CD","sw-KE","sw-TZ","sw-UG","ta-IN","ta-LK","ta-MY","ta-SG","te-IN","th-TH","ti-ER","ti-ET","to-TO","tr-CY","tr-TR","ug-Arab","ug-Arab-CN","uk-UA","ur-IN","ur-PK","uz-Arab","uz-Arab-AF","uz-Cyrl","uz-Cyrl-UZ","uz-Latn","uz-Latn-UZ","vi-VN","yi-001","yo-BJ","yo-NG","zh-Hans","zh-Hans-CN","zh-Hans-HK","zh-Hans-MO","zh-Hans-SG","zh-Hant","zh-Hant-HK","zh-Hant-MO","zh-Hant-TW","zu-ZA"],us_states_and_dc:[{name:"Alabama",abbreviation:"AL"},{name:"Alaska",abbreviation:"AK"},{name:"Arizona",abbreviation:"AZ"},{name:"Arkansas",abbreviation:"AR"},{name:"California",abbreviation:"CA"},{name:"Colorado",abbreviation:"CO"},{name:"Connecticut",abbreviation:"CT"},{name:"Delaware",abbreviation:"DE"},{name:"District of Columbia",abbreviation:"DC"},{name:"Florida",abbreviation:"FL"},{name:"Georgia",abbreviation:"GA"},{name:"Hawaii",abbreviation:"HI"},{name:"Idaho",abbreviation:"ID"},{name:"Illinois",abbreviation:"IL"},{name:"Indiana",abbreviation:"IN"},{name:"Iowa",abbreviation:"IA"},{name:"Kansas",abbreviation:"KS"},{name:"Kentucky",abbreviation:"KY"},{name:"Louisiana",abbreviation:"LA"},{name:"Maine",abbreviation:"ME"},{name:"Maryland",abbreviation:"MD"},{name:"Massachusetts",abbreviation:"MA"},{name:"Michigan",abbreviation:"MI"},{name:"Minnesota",abbreviation:"MN"},{name:"Mississippi",abbreviation:"MS"},{name:"Missouri",abbreviation:"MO"},{name:"Montana",abbreviation:"MT"},{name:"Nebraska",abbreviation:"NE"},{name:"Nevada",abbreviation:"NV"},{name:"New Hampshire",abbreviation:"NH"},{name:"New Jersey",abbreviation:"NJ"},{name:"New Mexico",abbreviation:"NM"},{name:"New York",abbreviation:"NY"},{name:"North Carolina",abbreviation:"NC"},{name:"North Dakota",abbreviation:"ND"},{name:"Ohio",abbreviation:"OH"},{name:"Oklahoma",abbreviation:"OK"},{name:"Oregon",abbreviation:"OR"},{name:"Pennsylvania",abbreviation:"PA"},{name:"Rhode Island",abbreviation:"RI"},{name:"South Carolina",abbreviation:"SC"},{name:"South Dakota",abbreviation:"SD"},{name:"Tennessee",abbreviation:"TN"},{name:"Texas",abbreviation:"TX"},{name:"Utah",abbreviation:"UT"},{name:"Vermont",abbreviation:"VT"},{name:"Virginia",abbreviation:"VA"},{name:"Washington",abbreviation:"WA"},{name:"West Virginia",abbreviation:"WV"},{name:"Wisconsin",abbreviation:"WI"},{name:"Wyoming",abbreviation:"WY"}],territories:[{name:"American Samoa",abbreviation:"AS"},{name:"Federated States of Micronesia",abbreviation:"FM"},{name:"Guam",abbreviation:"GU"},{name:"Marshall Islands",abbreviation:"MH"},{name:"Northern Mariana Islands",abbreviation:"MP"},{name:"Puerto Rico",abbreviation:"PR"},{name:"Virgin Islands, U.S.",abbreviation:"VI"}],armed_forces:[{name:"Armed Forces Europe",abbreviation:"AE"},{name:"Armed Forces Pacific",abbreviation:"AP"},{name:"Armed Forces the Americas",abbreviation:"AA"}],country_regions:{it:[{name:"Valle d'Aosta",abbreviation:"VDA"},{name:"Piemonte",abbreviation:"PIE"},{name:"Lombardia",abbreviation:"LOM"},{name:"Veneto",abbreviation:"VEN"},{name:"Trentino Alto Adige",abbreviation:"TAA"},{name:"Friuli Venezia Giulia",abbreviation:"FVG"},{name:"Liguria",abbreviation:"LIG"},{name:"Emilia Romagna",abbreviation:"EMR"},{name:"Toscana",abbreviation:"TOS"},{name:"Umbria",abbreviation:"UMB"},{name:"Marche",abbreviation:"MAR"},{name:"Abruzzo",abbreviation:"ABR"},{name:"Lazio",abbreviation:"LAZ"},{name:"Campania",abbreviation:"CAM"},{name:"Puglia",abbreviation:"PUG"},{name:"Basilicata",abbreviation:"BAS"},{name:"Molise",abbreviation:"MOL"},{name:"Calabria",abbreviation:"CAL"},{name:"Sicilia",abbreviation:"SIC"},{name:"Sardegna",abbreviation:"SAR"}],mx:[{name:"Aguascalientes",abbreviation:"AGU"},{name:"Baja California",abbreviation:"BCN"},{name:"Baja California Sur",abbreviation:"BCS"},{name:"Campeche",abbreviation:"CAM"},{name:"Chiapas",abbreviation:"CHP"},{name:"Chihuahua",abbreviation:"CHH"},{name:"Ciudad de México",abbreviation:"DIF"},{name:"Coahuila",abbreviation:"COA"},{name:"Colima",abbreviation:"COL"},{name:"Durango",abbreviation:"DUR"},{name:"Guanajuato",abbreviation:"GUA"},{name:"Guerrero",abbreviation:"GRO"},{name:"Hidalgo",abbreviation:"HID"},{name:"Jalisco",abbreviation:"JAL"},{name:"México",abbreviation:"MEX"},{name:"Michoacán",abbreviation:"MIC"},{name:"Morelos",abbreviation:"MOR"},{name:"Nayarit",abbreviation:"NAY"},{name:"Nuevo León",abbreviation:"NLE"},{name:"Oaxaca",abbreviation:"OAX"},{name:"Puebla",abbreviation:"PUE"},{name:"Querétaro",abbreviation:"QUE"},{name:"Quintana Roo",abbreviation:"ROO"},{name:"San Luis Potosí",abbreviation:"SLP"},{name:"Sinaloa",abbreviation:"SIN"},{name:"Sonora",abbreviation:"SON"},{name:"Tabasco",abbreviation:"TAB"},{name:"Tamaulipas",abbreviation:"TAM"},{name:"Tlaxcala",abbreviation:"TLA"},{name:"Veracruz",abbreviation:"VER"},{name:"Yucatán",abbreviation:"YUC"},{name:"Zacatecas",abbreviation:"ZAC"}]},street_suffixes:{us:[{name:"Avenue",abbreviation:"Ave"},{name:"Boulevard",abbreviation:"Blvd"},{name:"Center",abbreviation:"Ctr"},{name:"Circle",abbreviation:"Cir"},{name:"Court",abbreviation:"Ct"},{name:"Drive",abbreviation:"Dr"},{name:"Extension",abbreviation:"Ext"},{name:"Glen",abbreviation:"Gln"},{name:"Grove",abbreviation:"Grv"},{name:"Heights",abbreviation:"Hts"},{name:"Highway",abbreviation:"Hwy"},{name:"Junction",abbreviation:"Jct"},{name:"Key",abbreviation:"Key"},{name:"Lane",abbreviation:"Ln"},{name:"Loop",abbreviation:"Loop"},{name:"Manor",abbreviation:"Mnr"},{name:"Mill",abbreviation:"Mill"},{name:"Park",abbreviation:"Park"},{name:"Parkway",abbreviation:"Pkwy"},{name:"Pass",abbreviation:"Pass"},{name:"Path",abbreviation:"Path"},{name:"Pike",abbreviation:"Pike"},{name:"Place",abbreviation:"Pl"},{name:"Plaza",abbreviation:"Plz"},{name:"Point",abbreviation:"Pt"},{name:"Ridge",abbreviation:"Rdg"},{name:"River",abbreviation:"Riv"},{name:"Road",abbreviation:"Rd"},{name:"Square",abbreviation:"Sq"},{name:"Street",abbreviation:"St"},{name:"Terrace",abbreviation:"Ter"},{name:"Trail",abbreviation:"Trl"},{name:"Turnpike",abbreviation:"Tpke"},{name:"View",abbreviation:"Vw"},{name:"Way",abbreviation:"Way"}],it:[{name:"Accesso",abbreviation:"Acc."},{name:"Alzaia",abbreviation:"Alz."},{name:"Arco",abbreviation:"Arco"},{name:"Archivolto",abbreviation:"Acv."},{name:"Arena",abbreviation:"Arena"},{name:"Argine",abbreviation:"Argine"},{name:"Bacino",abbreviation:"Bacino"},{name:"Banchi",abbreviation:"Banchi"},{name:"Banchina",abbreviation:"Ban."},{name:"Bastioni",abbreviation:"Bas."},{name:"Belvedere",abbreviation:"Belv."},{name:"Borgata",abbreviation:"B.ta"},{name:"Borgo",abbreviation:"B.go"},{name:"Calata",abbreviation:"Cal."},{name:"Calle",abbreviation:"Calle"},{name:"Campiello",abbreviation:"Cam."},{name:"Campo",abbreviation:"Cam."},{name:"Canale",abbreviation:"Can."},{name:"Carraia",abbreviation:"Carr."},{name:"Cascina",abbreviation:"Cascina"},{name:"Case sparse",abbreviation:"c.s."},{name:"Cavalcavia",abbreviation:"Cv."},{name:"Circonvallazione",abbreviation:"Cv."},{name:"Complanare",abbreviation:"C.re"},{name:"Contrada",abbreviation:"C.da"},{name:"Corso",abbreviation:"C.so"},{name:"Corte",abbreviation:"C.te"},{name:"Cortile",abbreviation:"C.le"},{name:"Diramazione",abbreviation:"Dir."},{name:"Fondaco",abbreviation:"F.co"},{name:"Fondamenta",abbreviation:"F.ta"},{name:"Fondo",abbreviation:"F.do"},{name:"Frazione",abbreviation:"Fr."},{name:"Isola",abbreviation:"Is."},{name:"Largo",abbreviation:"L.go"},{name:"Litoranea",abbreviation:"Lit."},{name:"Lungolago",abbreviation:"L.go lago"},{name:"Lungo Po",abbreviation:"l.go Po"},{name:"Molo",abbreviation:"Molo"},{name:"Mura",abbreviation:"Mura"},{name:"Passaggio privato",abbreviation:"pass. priv."},{name:"Passeggiata",abbreviation:"Pass."},{name:"Piazza",abbreviation:"P.zza"},{name:"Piazzale",abbreviation:"P.le"},{name:"Ponte",abbreviation:"P.te"},{name:"Portico",abbreviation:"P.co"},{name:"Rampa",abbreviation:"Rampa"},{name:"Regione",abbreviation:"Reg."},{name:"Rione",abbreviation:"R.ne"},{name:"Rio",abbreviation:"Rio"},{name:"Ripa",abbreviation:"Ripa"},{name:"Riva",abbreviation:"Riva"},{name:"Rondò",abbreviation:"Rondò"},{name:"Rotonda",abbreviation:"Rot."},{name:"Sagrato",abbreviation:"Sagr."},{name:"Salita",abbreviation:"Sal."},{name:"Scalinata",abbreviation:"Scal."},{name:"Scalone",abbreviation:"Scal."},{name:"Slargo",abbreviation:"Sl."},{name:"Sottoportico",abbreviation:"Sott."},{name:"Strada",abbreviation:"Str."},{name:"Stradale",abbreviation:"Str.le"},{name:"Strettoia",abbreviation:"Strett."},{name:"Traversa",abbreviation:"Trav."},{name:"Via",abbreviation:"V."},{name:"Viale",abbreviation:"V.le"},{name:"Vicinale",abbreviation:"Vic.le"},{name:"Vicolo",abbreviation:"Vic."}],uk:[{name:"Avenue",abbreviation:"Ave"},{name:"Close",abbreviation:"Cl"},{name:"Court",abbreviation:"Ct"},{name:"Crescent",abbreviation:"Cr"},{name:"Drive",abbreviation:"Dr"},{name:"Garden",abbreviation:"Gdn"},{name:"Gardens",abbreviation:"Gdns"},{name:"Green",abbreviation:"Gn"},{name:"Grove",abbreviation:"Gr"},{name:"Lane",abbreviation:"Ln"},{name:"Mount",abbreviation:"Mt"},{name:"Place",abbreviation:"Pl"},{name:"Park",abbreviation:"Pk"},{name:"Ridge",abbreviation:"Rdg"},{name:"Road",abbreviation:"Rd"},{name:"Square",abbreviation:"Sq"},{name:"Street",abbreviation:"St"},{name:"Terrace",abbreviation:"Ter"},{name:"Valley",abbreviation:"Val"}]},months:[{name:"January",short_name:"Jan",numeric:"01",days:31},{name:"February",short_name:"Feb",numeric:"02",days:28},{name:"March",short_name:"Mar",numeric:"03",days:31},{name:"April",short_name:"Apr",numeric:"04",days:30},{name:"May",short_name:"May",numeric:"05",days:31},{name:"June",short_name:"Jun",numeric:"06",days:30},{name:"July",short_name:"Jul",numeric:"07",days:31},{name:"August",short_name:"Aug",numeric:"08",days:31},{name:"September",short_name:"Sep",numeric:"09",days:30},{name:"October",short_name:"Oct",numeric:"10",days:31},{name:"November",short_name:"Nov",numeric:"11",days:30},{name:"December",short_name:"Dec",numeric:"12",days:31}],cc_types:[{name:"American Express",short_name:"amex",prefix:"34",length:15},{name:"Bankcard",short_name:"bankcard",prefix:"5610",length:16},{name:"China UnionPay",short_name:"chinaunion",prefix:"62",length:16},{name:"Diners Club Carte Blanche",short_name:"dccarte",prefix:"300",length:14},{name:"Diners Club enRoute",short_name:"dcenroute",prefix:"2014",length:15},{name:"Diners Club International",short_name:"dcintl",prefix:"36",length:14},{name:"Diners Club United States & Canada",short_name:"dcusc",prefix:"54",length:16},{name:"Discover Card",short_name:"discover",prefix:"6011",length:16},{name:"InstaPayment",short_name:"instapay",prefix:"637",length:16},{name:"JCB",short_name:"jcb",prefix:"3528",length:16},{name:"Laser",short_name:"laser",prefix:"6304",length:16},{name:"Maestro",short_name:"maestro",prefix:"5018",length:16},{name:"Mastercard",short_name:"mc",prefix:"51",length:16},{name:"Solo",short_name:"solo",prefix:"6334",length:16},{name:"Switch",short_name:"switch",prefix:"4903",length:16},{name:"Visa",short_name:"visa",prefix:"4",length:16},{name:"Visa Electron",short_name:"electron",prefix:"4026",length:16}],currency_types:[{code:"AED",name:"United Arab Emirates Dirham"},{code:"AFN",name:"Afghanistan Afghani"},{code:"ALL",name:"Albania Lek"},{code:"AMD",name:"Armenia Dram"},{code:"ANG",name:"Netherlands Antilles Guilder"},{code:"AOA",name:"Angola Kwanza"},{code:"ARS",name:"Argentina Peso"},{code:"AUD",name:"Australia Dollar"},{code:"AWG",name:"Aruba Guilder"},{code:"AZN",name:"Azerbaijan New Manat"},{code:"BAM",name:"Bosnia and Herzegovina Convertible Marka"},{code:"BBD",name:"Barbados Dollar"},{code:"BDT",name:"Bangladesh Taka"},{code:"BGN",name:"Bulgaria Lev"},{code:"BHD",name:"Bahrain Dinar"},{code:"BIF",name:"Burundi Franc"},{code:"BMD",name:"Bermuda Dollar"},{code:"BND",name:"Brunei Darussalam Dollar"},{code:"BOB",name:"Bolivia Boliviano"},{code:"BRL",name:"Brazil Real"},{code:"BSD",name:"Bahamas Dollar"},{code:"BTN",name:"Bhutan Ngultrum"},{code:"BWP",name:"Botswana Pula"},{code:"BYR",name:"Belarus Ruble"},{code:"BZD",name:"Belize Dollar"},{code:"CAD",name:"Canada Dollar"},{code:"CDF",name:"Congo/Kinshasa Franc"},{code:"CHF",name:"Switzerland Franc"},{code:"CLP",name:"Chile Peso"},{code:"CNY",name:"China Yuan Renminbi"},{code:"COP",name:"Colombia Peso"},{code:"CRC",name:"Costa Rica Colon"},{code:"CUC",name:"Cuba Convertible Peso"},{code:"CUP",name:"Cuba Peso"},{code:"CVE",name:"Cape Verde Escudo"},{code:"CZK",name:"Czech Republic Koruna"},{code:"DJF",name:"Djibouti Franc"},{code:"DKK",name:"Denmark Krone"},{code:"DOP",name:"Dominican Republic Peso"},{code:"DZD",name:"Algeria Dinar"},{code:"EGP",name:"Egypt Pound"},{code:"ERN",name:"Eritrea Nakfa"},{code:"ETB",name:"Ethiopia Birr"},{code:"EUR",name:"Euro Member Countries"},{code:"FJD",name:"Fiji Dollar"},{code:"FKP",name:"Falkland Islands (Malvinas) Pound"},{code:"GBP",name:"United Kingdom Pound"},{code:"GEL",name:"Georgia Lari"},{code:"GGP",name:"Guernsey Pound"},{code:"GHS",name:"Ghana Cedi"},{code:"GIP",name:"Gibraltar Pound"},{code:"GMD",name:"Gambia Dalasi"},{code:"GNF",name:"Guinea Franc"},{code:"GTQ",name:"Guatemala Quetzal"},{code:"GYD",name:"Guyana Dollar"},{code:"HKD",name:"Hong Kong Dollar"},{code:"HNL",name:"Honduras Lempira"},{code:"HRK",name:"Croatia Kuna"},{code:"HTG",name:"Haiti Gourde"},{code:"HUF",name:"Hungary Forint"},{code:"IDR",name:"Indonesia Rupiah"},{code:"ILS",name:"Israel Shekel"},{code:"IMP",name:"Isle of Man Pound"},{code:"INR",name:"India Rupee"},{code:"IQD",name:"Iraq Dinar"},{code:"IRR",name:"Iran Rial"},{code:"ISK",name:"Iceland Krona"},{code:"JEP",name:"Jersey Pound"},{code:"JMD",name:"Jamaica Dollar"},{code:"JOD",name:"Jordan Dinar"},{code:"JPY",name:"Japan Yen"},{code:"KES",name:"Kenya Shilling"},{code:"KGS",name:"Kyrgyzstan Som"},{code:"KHR",name:"Cambodia Riel"},{code:"KMF",name:"Comoros Franc"},{code:"KPW",name:"Korea (North) Won"},{code:"KRW",name:"Korea (South) Won"},{code:"KWD",name:"Kuwait Dinar"},{code:"KYD",name:"Cayman Islands Dollar"},{code:"KZT",name:"Kazakhstan Tenge"},{code:"LAK",name:"Laos Kip"},{code:"LBP",name:"Lebanon Pound"},{code:"LKR",name:"Sri Lanka Rupee"},{code:"LRD",name:"Liberia Dollar"},{code:"LSL",name:"Lesotho Loti"},{code:"LTL",name:"Lithuania Litas"},{code:"LYD",name:"Libya Dinar"},{code:"MAD",name:"Morocco Dirham"},{code:"MDL",name:"Moldova Leu"},{code:"MGA",name:"Madagascar Ariary"},{code:"MKD",name:"Macedonia Denar"},{code:"MMK",name:"Myanmar (Burma) Kyat"},{code:"MNT",name:"Mongolia Tughrik"},{code:"MOP",name:"Macau Pataca"},{code:"MRO",name:"Mauritania Ouguiya"},{code:"MUR",name:"Mauritius Rupee"},{code:"MVR",name:"Maldives (Maldive Islands) Rufiyaa"},{code:"MWK",name:"Malawi Kwacha"},{code:"MXN",name:"Mexico Peso"},{code:"MYR",name:"Malaysia Ringgit"},{code:"MZN",name:"Mozambique Metical"},{code:"NAD",name:"Namibia Dollar"},{code:"NGN",name:"Nigeria Naira"},{code:"NIO",name:"Nicaragua Cordoba"},{code:"NOK",name:"Norway Krone"},{code:"NPR",name:"Nepal Rupee"},{code:"NZD",name:"New Zealand Dollar"},{code:"OMR",name:"Oman Rial"},{code:"PAB",name:"Panama Balboa"},{code:"PEN",name:"Peru Nuevo Sol"},{code:"PGK",name:"Papua New Guinea Kina"},{code:"PHP",name:"Philippines Peso"},{code:"PKR",name:"Pakistan Rupee"},{code:"PLN",name:"Poland Zloty"},{code:"PYG",name:"Paraguay Guarani"},{code:"QAR",name:"Qatar Riyal"},{code:"RON",name:"Romania New Leu"},{code:"RSD",name:"Serbia Dinar"},{code:"RUB",name:"Russia Ruble"},{code:"RWF",name:"Rwanda Franc"},{code:"SAR",name:"Saudi Arabia Riyal"},{code:"SBD",name:"Solomon Islands Dollar"},{code:"SCR",name:"Seychelles Rupee"},{code:"SDG",name:"Sudan Pound"},{code:"SEK",name:"Sweden Krona"},{code:"SGD",name:"Singapore Dollar"},{code:"SHP",name:"Saint Helena Pound"},{code:"SLL",name:"Sierra Leone Leone"},{code:"SOS",name:"Somalia Shilling"},{code:"SPL",name:"Seborga Luigino"},{code:"SRD",name:"Suriname Dollar"},{code:"STD",name:"São Tomé and Príncipe Dobra"},{code:"SVC",name:"El Salvador Colon"},{code:"SYP",name:"Syria Pound"},{code:"SZL",name:"Swaziland Lilangeni"},{code:"THB",name:"Thailand Baht"},{code:"TJS",name:"Tajikistan Somoni"},{code:"TMT",name:"Turkmenistan Manat"},{code:"TND",name:"Tunisia Dinar"},{code:"TOP",name:"Tonga Pa'anga"},{code:"TRY",name:"Turkey Lira"},{code:"TTD",name:"Trinidad and Tobago Dollar"},{code:"TVD",name:"Tuvalu Dollar"},{code:"TWD",name:"Taiwan New Dollar"},{code:"TZS",name:"Tanzania Shilling"},{code:"UAH",name:"Ukraine Hryvnia"},{code:"UGX",name:"Uganda Shilling"},{code:"USD",name:"United States Dollar"},{code:"UYU",name:"Uruguay Peso"},{code:"UZS",name:"Uzbekistan Som"},{code:"VEF",name:"Venezuela Bolivar"},{code:"VND",name:"Viet Nam Dong"},{code:"VUV",name:"Vanuatu Vatu"},{code:"WST",name:"Samoa Tala"},{code:"XAF",name:"Communauté Financière Africaine (BEAC) CFA Franc BEAC"},{code:"XCD",name:"East Caribbean Dollar"},{code:"XDR",name:"International Monetary Fund (IMF) Special Drawing Rights"},{code:"XOF",name:"Communauté Financière Africaine (BCEAO) Franc"},{code:"XPF",name:"Comptoirs Français du Pacifique (CFP) Franc"},{code:"YER",name:"Yemen Rial"},{code:"ZAR",name:"South Africa Rand"},{code:"ZMW",name:"Zambia Kwacha"},{code:"ZWD",name:"Zimbabwe Dollar"}],colorNames:["AliceBlue","Black","Navy","DarkBlue","MediumBlue","Blue","DarkGreen","Green","Teal","DarkCyan","DeepSkyBlue","DarkTurquoise","MediumSpringGreen","Lime","SpringGreen","Aqua","Cyan","MidnightBlue","DodgerBlue","LightSeaGreen","ForestGreen","SeaGreen","DarkSlateGray","LimeGreen","MediumSeaGreen","Turquoise","RoyalBlue","SteelBlue","DarkSlateBlue","MediumTurquoise","Indigo","DarkOliveGreen","CadetBlue","CornflowerBlue","RebeccaPurple","MediumAquaMarine","DimGray","SlateBlue","OliveDrab","SlateGray","LightSlateGray","MediumSlateBlue","LawnGreen","Chartreuse","Aquamarine","Maroon","Purple","Olive","Gray","SkyBlue","LightSkyBlue","BlueViolet","DarkRed","DarkMagenta","SaddleBrown","Ivory","White","DarkSeaGreen","LightGreen","MediumPurple","DarkViolet","PaleGreen","DarkOrchid","YellowGreen","Sienna","Brown","DarkGray","LightBlue","GreenYellow","PaleTurquoise","LightSteelBlue","PowderBlue","FireBrick","DarkGoldenRod","MediumOrchid","RosyBrown","DarkKhaki","Silver","MediumVioletRed","IndianRed","Peru","Chocolate","Tan","LightGray","Thistle","Orchid","GoldenRod","PaleVioletRed","Crimson","Gainsboro","Plum","BurlyWood","LightCyan","Lavender","DarkSalmon","Violet","PaleGoldenRod","LightCoral","Khaki","AliceBlue","HoneyDew","Azure","SandyBrown","Wheat","Beige","WhiteSmoke","MintCream","GhostWhite","Salmon","AntiqueWhite","Linen","LightGoldenRodYellow","OldLace","Red","Fuchsia","Magenta","DeepPink","OrangeRed","Tomato","HotPink","Coral","DarkOrange","LightSalmon","Orange","LightPink","Pink","Gold","PeachPuff","NavajoWhite","Moccasin","Bisque","MistyRose","BlanchedAlmond","PapayaWhip","LavenderBlush","SeaShell","Cornsilk","LemonChiffon","FloralWhite","Snow","Yellow","LightYellow"],company:["3Com Corp","3M Company","A.G. Edwards Inc.","Abbott Laboratories","Abercrombie & Fitch Co.","ABM Industries Incorporated","Ace Hardware Corporation","ACT Manufacturing Inc.","Acterna Corp.","Adams Resources & Energy, Inc.","ADC Telecommunications, Inc.","Adelphia Communications Corporation","Administaff, Inc.","Adobe Systems Incorporated","Adolph Coors Company","Advance Auto Parts, Inc.","Advanced Micro Devices, Inc.","AdvancePCS, Inc.","Advantica Restaurant Group, Inc.","The AES Corporation","Aetna Inc.","Affiliated Computer Services, Inc.","AFLAC Incorporated","AGCO Corporation","Agilent Technologies, Inc.","Agway Inc.","Apartment Investment and Management Company","Air Products and Chemicals, Inc.","Airborne, Inc.","Airgas, Inc.","AK Steel Holding Corporation","Alaska Air Group, Inc.","Alberto-Culver Company","Albertson's, Inc.","Alcoa Inc.","Alleghany Corporation","Allegheny Energy, Inc.","Allegheny Technologies Incorporated","Allergan, Inc.","ALLETE, Inc.","Alliant Energy Corporation","Allied Waste Industries, Inc.","Allmerica Financial Corporation","The Allstate Corporation","ALLTEL Corporation","The Alpine Group, Inc.","Amazon.com, Inc.","AMC Entertainment Inc.","American Power Conversion Corporation","Amerada Hess Corporation","AMERCO","Ameren Corporation","America West Holdings Corporation","American Axle & Manufacturing Holdings, Inc.","American Eagle Outfitters, Inc.","American Electric Power Company, Inc.","American Express Company","American Financial Group, Inc.","American Greetings Corporation","American International Group, Inc.","American Standard Companies Inc.","American Water Works Company, Inc.","AmerisourceBergen Corporation","Ames Department Stores, Inc.","Amgen Inc.","Amkor Technology, Inc.","AMR Corporation","AmSouth Bancorp.","Amtran, Inc.","Anadarko Petroleum Corporation","Analog Devices, Inc.","Anheuser-Busch Companies, Inc.","Anixter International Inc.","AnnTaylor Inc.","Anthem, Inc.","AOL Time Warner Inc.","Aon Corporation","Apache Corporation","Apple Computer, Inc.","Applera Corporation","Applied Industrial Technologies, Inc.","Applied Materials, Inc.","Aquila, Inc.","ARAMARK Corporation","Arch Coal, Inc.","Archer Daniels Midland Company","Arkansas Best Corporation","Armstrong Holdings, Inc.","Arrow Electronics, Inc.","ArvinMeritor, Inc.","Ashland Inc.","Astoria Financial Corporation","AT&T Corp.","Atmel Corporation","Atmos Energy Corporation","Audiovox Corporation","Autoliv, Inc.","Automatic Data Processing, Inc.","AutoNation, Inc.","AutoZone, Inc.","Avaya Inc.","Avery Dennison Corporation","Avista Corporation","Avnet, Inc.","Avon Products, Inc.","Baker Hughes Incorporated","Ball Corporation","Bank of America Corporation","The Bank of New York Company, Inc.","Bank One Corporation","Banknorth Group, Inc.","Banta Corporation","Barnes & Noble, Inc.","Bausch & Lomb Incorporated","Baxter International Inc.","BB&T Corporation","The Bear Stearns Companies Inc.","Beazer Homes USA, Inc.","Beckman Coulter, Inc.","Becton, Dickinson and Company","Bed Bath & Beyond Inc.","Belk, Inc.","Bell Microproducts Inc.","BellSouth Corporation","Belo Corp.","Bemis Company, Inc.","Benchmark Electronics, Inc.","Berkshire Hathaway Inc.","Best Buy Co., Inc.","Bethlehem Steel Corporation","Beverly Enterprises, Inc.","Big Lots, Inc.","BJ Services Company","BJ's Wholesale Club, Inc.","The Black & Decker Corporation","Black Hills Corporation","BMC Software, Inc.","The Boeing Company","Boise Cascade Corporation","Borders Group, Inc.","BorgWarner Inc.","Boston Scientific Corporation","Bowater Incorporated","Briggs & Stratton Corporation","Brightpoint, Inc.","Brinker International, Inc.","Bristol-Myers Squibb Company","Broadwing, Inc.","Brown Shoe Company, Inc.","Brown-Forman Corporation","Brunswick Corporation","Budget Group, Inc.","Burlington Coat Factory Warehouse Corporation","Burlington Industries, Inc.","Burlington Northern Santa Fe Corporation","Burlington Resources Inc.","C. H. Robinson Worldwide Inc.","Cablevision Systems Corp","Cabot Corp","Cadence Design Systems, Inc.","Calpine Corp.","Campbell Soup Co.","Capital One Financial Corp.","Cardinal Health Inc.","Caremark Rx Inc.","Carlisle Cos. Inc.","Carpenter Technology Corp.","Casey's General Stores Inc.","Caterpillar Inc.","CBRL Group Inc.","CDI Corp.","CDW Computer Centers Inc.","CellStar Corp.","Cendant Corp","Cenex Harvest States Cooperatives","Centex Corp.","CenturyTel Inc.","Ceridian Corp.","CH2M Hill Cos. Ltd.","Champion Enterprises Inc.","Charles Schwab Corp.","Charming Shoppes Inc.","Charter Communications Inc.","Charter One Financial Inc.","ChevronTexaco Corp.","Chiquita Brands International Inc.","Chubb Corp","Ciena Corp.","Cigna Corp","Cincinnati Financial Corp.","Cinergy Corp.","Cintas Corp.","Circuit City Stores Inc.","Cisco Systems Inc.","Citigroup, Inc","Citizens Communications Co.","CKE Restaurants Inc.","Clear Channel Communications Inc.","The Clorox Co.","CMGI Inc.","CMS Energy Corp.","CNF Inc.","Coca-Cola Co.","Coca-Cola Enterprises Inc.","Colgate-Palmolive Co.","Collins & Aikman Corp.","Comcast Corp.","Comdisco Inc.","Comerica Inc.","Comfort Systems USA Inc.","Commercial Metals Co.","Community Health Systems Inc.","Compass Bancshares Inc","Computer Associates International Inc.","Computer Sciences Corp.","Compuware Corp.","Comverse Technology Inc.","ConAgra Foods Inc.","Concord EFS Inc.","Conectiv, Inc","Conoco Inc","Conseco Inc.","Consolidated Freightways Corp.","Consolidated Edison Inc.","Constellation Brands Inc.","Constellation Emergy Group Inc.","Continental Airlines Inc.","Convergys Corp.","Cooper Cameron Corp.","Cooper Industries Ltd.","Cooper Tire & Rubber Co.","Corn Products International Inc.","Corning Inc.","Costco Wholesale Corp.","Countrywide Credit Industries Inc.","Coventry Health Care Inc.","Cox Communications Inc.","Crane Co.","Crompton Corp.","Crown Cork & Seal Co. Inc.","CSK Auto Corp.","CSX Corp.","Cummins Inc.","CVS Corp.","Cytec Industries Inc.","D&K Healthcare Resources, Inc.","D.R. Horton Inc.","Dana Corporation","Danaher Corporation","Darden Restaurants Inc.","DaVita Inc.","Dean Foods Company","Deere & Company","Del Monte Foods Co","Dell Computer Corporation","Delphi Corp.","Delta Air Lines Inc.","Deluxe Corporation","Devon Energy Corporation","Di Giorgio Corporation","Dial Corporation","Diebold Incorporated","Dillard's Inc.","DIMON Incorporated","Dole Food Company, Inc.","Dollar General Corporation","Dollar Tree Stores, Inc.","Dominion Resources, Inc.","Domino's Pizza LLC","Dover Corporation, Inc.","Dow Chemical Company","Dow Jones & Company, Inc.","DPL Inc.","DQE Inc.","Dreyer's Grand Ice Cream, Inc.","DST Systems, Inc.","DTE Energy Co.","E.I. Du Pont de Nemours and Company","Duke Energy Corp","Dun & Bradstreet Inc.","DURA Automotive Systems Inc.","DynCorp","Dynegy Inc.","E*Trade Group, Inc.","E.W. Scripps Company","Earthlink, Inc.","Eastman Chemical Company","Eastman Kodak Company","Eaton Corporation","Echostar Communications Corporation","Ecolab Inc.","Edison International","EGL Inc.","El Paso Corporation","Electronic Arts Inc.","Electronic Data Systems Corp.","Eli Lilly and Company","EMC Corporation","Emcor Group Inc.","Emerson Electric Co.","Encompass Services Corporation","Energizer Holdings Inc.","Energy East Corporation","Engelhard Corporation","Enron Corp.","Entergy Corporation","Enterprise Products Partners L.P.","EOG Resources, Inc.","Equifax Inc.","Equitable Resources Inc.","Equity Office Properties Trust","Equity Residential Properties Trust","Estee Lauder Companies Inc.","Exelon Corporation","Exide Technologies","Expeditors International of Washington Inc.","Express Scripts Inc.","ExxonMobil Corporation","Fairchild Semiconductor International Inc.","Family Dollar Stores Inc.","Farmland Industries Inc.","Federal Mogul Corp.","Federated Department Stores Inc.","Federal Express Corp.","Felcor Lodging Trust Inc.","Ferro Corp.","Fidelity National Financial Inc.","Fifth Third Bancorp","First American Financial Corp.","First Data Corp.","First National of Nebraska Inc.","First Tennessee National Corp.","FirstEnergy Corp.","Fiserv Inc.","Fisher Scientific International Inc.","FleetBoston Financial Co.","Fleetwood Enterprises Inc.","Fleming Companies Inc.","Flowers Foods Inc.","Flowserv Corp","Fluor Corp","FMC Corp","Foamex International Inc","Foot Locker Inc","Footstar Inc.","Ford Motor Co","Forest Laboratories Inc.","Fortune Brands Inc.","Foster Wheeler Ltd.","FPL Group Inc.","Franklin Resources Inc.","Freeport McMoran Copper & Gold Inc.","Frontier Oil Corp","Furniture Brands International Inc.","Gannett Co., Inc.","Gap Inc.","Gateway Inc.","GATX Corporation","Gemstar-TV Guide International Inc.","GenCorp Inc.","General Cable Corporation","General Dynamics Corporation","General Electric Company","General Mills Inc","General Motors Corporation","Genesis Health Ventures Inc.","Gentek Inc.","Gentiva Health Services Inc.","Genuine Parts Company","Genuity Inc.","Genzyme Corporation","Georgia Gulf Corporation","Georgia-Pacific Corporation","Gillette Company","Gold Kist Inc.","Golden State Bancorp Inc.","Golden West Financial Corporation","Goldman Sachs Group Inc.","Goodrich Corporation","The Goodyear Tire & Rubber Company","Granite Construction Incorporated","Graybar Electric Company Inc.","Great Lakes Chemical Corporation","Great Plains Energy Inc.","GreenPoint Financial Corp.","Greif Bros. Corporation","Grey Global Group Inc.","Group 1 Automotive Inc.","Guidant Corporation","H&R Block Inc.","H.B. Fuller Company","H.J. Heinz Company","Halliburton Co.","Harley-Davidson Inc.","Harman International Industries Inc.","Harrah's Entertainment Inc.","Harris Corp.","Harsco Corp.","Hartford Financial Services Group Inc.","Hasbro Inc.","Hawaiian Electric Industries Inc.","HCA Inc.","Health Management Associates Inc.","Health Net Inc.","Healthsouth Corp","Henry Schein Inc.","Hercules Inc.","Herman Miller Inc.","Hershey Foods Corp.","Hewlett-Packard Company","Hibernia Corp.","Hillenbrand Industries Inc.","Hilton Hotels Corp.","Hollywood Entertainment Corp.","Home Depot Inc.","Hon Industries Inc.","Honeywell International Inc.","Hormel Foods Corp.","Host Marriott Corp.","Household International Corp.","Hovnanian Enterprises Inc.","Hub Group Inc.","Hubbell Inc.","Hughes Supply Inc.","Humana Inc.","Huntington Bancshares Inc.","Idacorp Inc.","IDT Corporation","IKON Office Solutions Inc.","Illinois Tool Works Inc.","IMC Global Inc.","Imperial Sugar Company","IMS Health Inc.","Ingles Market Inc","Ingram Micro Inc.","Insight Enterprises Inc.","Integrated Electrical Services Inc.","Intel Corporation","International Paper Co.","Interpublic Group of Companies Inc.","Interstate Bakeries Corporation","International Business Machines Corp.","International Flavors & Fragrances Inc.","International Multifoods Corporation","Intuit Inc.","IT Group Inc.","ITT Industries Inc.","Ivax Corp.","J.B. Hunt Transport Services Inc.","J.C. Penny Co.","J.P. Morgan Chase & Co.","Jabil Circuit Inc.","Jack In The Box Inc.","Jacobs Engineering Group Inc.","JDS Uniphase Corp.","Jefferson-Pilot Co.","John Hancock Financial Services Inc.","Johnson & Johnson","Johnson Controls Inc.","Jones Apparel Group Inc.","KB Home","Kellogg Company","Kellwood Company","Kelly Services Inc.","Kemet Corp.","Kennametal Inc.","Kerr-McGee Corporation","KeyCorp","KeySpan Corp.","Kimball International Inc.","Kimberly-Clark Corporation","Kindred Healthcare Inc.","KLA-Tencor Corporation","K-Mart Corp.","Knight-Ridder Inc.","Kohl's Corp.","KPMG Consulting Inc.","Kroger Co.","L-3 Communications Holdings Inc.","Laboratory Corporation of America Holdings","Lam Research Corporation","LandAmerica Financial Group Inc.","Lands' End Inc.","Landstar System Inc.","La-Z-Boy Inc.","Lear Corporation","Legg Mason Inc.","Leggett & Platt Inc.","Lehman Brothers Holdings Inc.","Lennar Corporation","Lennox International Inc.","Level 3 Communications Inc.","Levi Strauss & Co.","Lexmark International Inc.","Limited Inc.","Lincoln National Corporation","Linens 'n Things Inc.","Lithia Motors Inc.","Liz Claiborne Inc.","Lockheed Martin Corporation","Loews Corporation","Longs Drug Stores Corporation","Louisiana-Pacific Corporation","Lowe's Companies Inc.","LSI Logic Corporation","The LTV Corporation","The Lubrizol Corporation","Lucent Technologies Inc.","Lyondell Chemical Company","M & T Bank Corporation","Magellan Health Services Inc.","Mail-Well Inc.","Mandalay Resort Group","Manor Care Inc.","Manpower Inc.","Marathon Oil Corporation","Mariner Health Care Inc.","Markel Corporation","Marriott International Inc.","Marsh & McLennan Companies Inc.","Marsh Supermarkets Inc.","Marshall & Ilsley Corporation","Martin Marietta Materials Inc.","Masco Corporation","Massey Energy Company","MasTec Inc.","Mattel Inc.","Maxim Integrated Products Inc.","Maxtor Corporation","Maxxam Inc.","The May Department Stores Company","Maytag Corporation","MBNA Corporation","McCormick & Company Incorporated","McDonald's Corporation","The McGraw-Hill Companies Inc.","McKesson Corporation","McLeodUSA Incorporated","M.D.C. Holdings Inc.","MDU Resources Group Inc.","MeadWestvaco Corporation","Medtronic Inc.","Mellon Financial Corporation","The Men's Wearhouse Inc.","Merck & Co., Inc.","Mercury General Corporation","Merrill Lynch & Co. Inc.","Metaldyne Corporation","Metals USA Inc.","MetLife Inc.","Metris Companies Inc","MGIC Investment Corporation","MGM Mirage","Michaels Stores Inc.","Micron Technology Inc.","Microsoft Corporation","Milacron Inc.","Millennium Chemicals Inc.","Mirant Corporation","Mohawk Industries Inc.","Molex Incorporated","The MONY Group Inc.","Morgan Stanley Dean Witter & Co.","Motorola Inc.","MPS Group Inc.","Murphy Oil Corporation","Nabors Industries Inc","Nacco Industries Inc","Nash Finch Company","National City Corp.","National Commerce Financial Corporation","National Fuel Gas Company","National Oilwell Inc","National Rural Utilities Cooperative Finance Corporation","National Semiconductor Corporation","National Service Industries Inc","Navistar International Corporation","NCR Corporation","The Neiman Marcus Group Inc.","New Jersey Resources Corporation","New York Times Company","Newell Rubbermaid Inc","Newmont Mining Corporation","Nextel Communications Inc","Nicor Inc","Nike Inc","NiSource Inc","Noble Energy Inc","Nordstrom Inc","Norfolk Southern Corporation","Nortek Inc","North Fork Bancorporation Inc","Northeast Utilities System","Northern Trust Corporation","Northrop Grumman Corporation","NorthWestern Corporation","Novellus Systems Inc","NSTAR","NTL Incorporated","Nucor Corp","Nvidia Corp","NVR Inc","Northwest Airlines Corp","Occidental Petroleum Corp","Ocean Energy Inc","Office Depot Inc.","OfficeMax Inc","OGE Energy Corp","Oglethorpe Power Corp.","Ohio Casualty Corp.","Old Republic International Corp.","Olin Corp.","OM Group Inc","Omnicare Inc","Omnicom Group","On Semiconductor Corp","ONEOK Inc","Oracle Corp","Oshkosh Truck Corp","Outback Steakhouse Inc.","Owens & Minor Inc.","Owens Corning","Owens-Illinois Inc","Oxford Health Plans Inc","Paccar Inc","PacifiCare Health Systems Inc","Packaging Corp. of America","Pactiv Corp","Pall Corp","Pantry Inc","Park Place Entertainment Corp","Parker Hannifin Corp.","Pathmark Stores Inc.","Paychex Inc","Payless Shoesource Inc","Penn Traffic Co.","Pennzoil-Quaker State Company","Pentair Inc","Peoples Energy Corp.","PeopleSoft Inc","Pep Boys Manny, Moe & Jack","Potomac Electric Power Co.","Pepsi Bottling Group Inc.","PepsiAmericas Inc.","PepsiCo Inc.","Performance Food Group Co.","Perini Corp","PerkinElmer Inc","Perot Systems Corp","Petco Animal Supplies Inc.","Peter Kiewit Sons', Inc.","PETsMART Inc","Pfizer Inc","Pacific Gas & Electric Corp.","Pharmacia Corp","Phar Mor Inc.","Phelps Dodge Corp.","Philip Morris Companies Inc.","Phillips Petroleum Co","Phillips Van Heusen Corp.","Phoenix Companies Inc","Pier 1 Imports Inc.","Pilgrim's Pride Corporation","Pinnacle West Capital Corp","Pioneer-Standard Electronics Inc.","Pitney Bowes Inc.","Pittston Brinks Group","Plains All American Pipeline LP","PNC Financial Services Group Inc.","PNM Resources Inc","Polaris Industries Inc.","Polo Ralph Lauren Corp","PolyOne Corp","Popular Inc","Potlatch Corp","PPG Industries Inc","PPL Corp","Praxair Inc","Precision Castparts Corp","Premcor Inc.","Pride International Inc","Primedia Inc","Principal Financial Group Inc.","Procter & Gamble Co.","Pro-Fac Cooperative Inc.","Progress Energy Inc","Progressive Corporation","Protective Life Corp","Provident Financial Group","Providian Financial Corp.","Prudential Financial Inc.","PSS World Medical Inc","Public Service Enterprise Group Inc.","Publix Super Markets Inc.","Puget Energy Inc.","Pulte Homes Inc","Qualcomm Inc","Quanta Services Inc.","Quantum Corp","Quest Diagnostics Inc.","Questar Corp","Quintiles Transnational","Qwest Communications Intl Inc","R.J. Reynolds Tobacco Company","R.R. Donnelley & Sons Company","Radio Shack Corporation","Raymond James Financial Inc.","Raytheon Company","Reader's Digest Association Inc.","Reebok International Ltd.","Regions Financial Corp.","Regis Corporation","Reliance Steel & Aluminum Co.","Reliant Energy Inc.","Rent A Center Inc","Republic Services Inc","Revlon Inc","RGS Energy Group Inc","Rite Aid Corp","Riverwood Holding Inc.","RoadwayCorp","Robert Half International Inc.","Rock-Tenn Co","Rockwell Automation Inc","Rockwell Collins Inc","Rohm & Haas Co.","Ross Stores Inc","RPM Inc.","Ruddick Corp","Ryder System Inc","Ryerson Tull Inc","Ryland Group Inc.","Sabre Holdings Corp","Safeco Corp","Safeguard Scientifics Inc.","Safeway Inc","Saks Inc","Sanmina-SCI Inc","Sara Lee Corp","SBC Communications Inc","Scana Corp.","Schering-Plough Corp","Scholastic Corp","SCI Systems Onc.","Science Applications Intl. Inc.","Scientific-Atlanta Inc","Scotts Company","Seaboard Corp","Sealed Air Corp","Sears Roebuck & Co","Sempra Energy","Sequa Corp","Service Corp. International","ServiceMaster Co","Shaw Group Inc","Sherwin-Williams Company","Shopko Stores Inc","Siebel Systems Inc","Sierra Health Services Inc","Sierra Pacific Resources","Silgan Holdings Inc.","Silicon Graphics Inc","Simon Property Group Inc","SLM Corporation","Smith International Inc","Smithfield Foods Inc","Smurfit-Stone Container Corp","Snap-On Inc","Solectron Corp","Solutia Inc","Sonic Automotive Inc.","Sonoco Products Co.","Southern Company","Southern Union Company","SouthTrust Corp.","Southwest Airlines Co","Southwest Gas Corp","Sovereign Bancorp Inc.","Spartan Stores Inc","Spherion Corp","Sports Authority Inc","Sprint Corp.","SPX Corp","St. Jude Medical Inc","St. Paul Cos.","Staff Leasing Inc.","StanCorp Financial Group Inc","Standard Pacific Corp.","Stanley Works","Staples Inc","Starbucks Corp","Starwood Hotels & Resorts Worldwide Inc","State Street Corp.","Stater Bros. Holdings Inc.","Steelcase Inc","Stein Mart Inc","Stewart & Stevenson Services Inc","Stewart Information Services Corp","Stilwell Financial Inc","Storage Technology Corporation","Stryker Corp","Sun Healthcare Group Inc.","Sun Microsystems Inc.","SunGard Data Systems Inc.","Sunoco Inc.","SunTrust Banks Inc","Supervalu Inc","Swift Transportation, Co., Inc","Symbol Technologies Inc","Synovus Financial Corp.","Sysco Corp","Systemax Inc.","Target Corp.","Tech Data Corporation","TECO Energy Inc","Tecumseh Products Company","Tektronix Inc","Teleflex Incorporated","Telephone & Data Systems Inc","Tellabs Inc.","Temple-Inland Inc","Tenet Healthcare Corporation","Tenneco Automotive Inc.","Teradyne Inc","Terex Corp","Tesoro Petroleum Corp.","Texas Industries Inc.","Texas Instruments Incorporated","Textron Inc","Thermo Electron Corporation","Thomas & Betts Corporation","Tiffany & Co","Timken Company","TJX Companies Inc","TMP Worldwide Inc","Toll Brothers Inc","Torchmark Corporation","Toro Company","Tower Automotive Inc.","Toys 'R' Us Inc","Trans World Entertainment Corp.","TransMontaigne Inc","Transocean Inc","TravelCenters of America Inc.","Triad Hospitals Inc","Tribune Company","Trigon Healthcare Inc.","Trinity Industries Inc","Trump Hotels & Casino Resorts Inc.","TruServ Corporation","TRW Inc","TXU Corp","Tyson Foods Inc","U.S. Bancorp","U.S. Industries Inc.","UAL Corporation","UGI Corporation","Unified Western Grocers Inc","Union Pacific Corporation","Union Planters Corp","Unisource Energy Corp","Unisys Corporation","United Auto Group Inc","United Defense Industries Inc.","United Parcel Service Inc","United Rentals Inc","United Stationers Inc","United Technologies Corporation","UnitedHealth Group Incorporated","Unitrin Inc","Universal Corporation","Universal Forest Products Inc","Universal Health Services Inc","Unocal Corporation","Unova Inc","UnumProvident Corporation","URS Corporation","US Airways Group Inc","US Oncology Inc","USA Interactive","USFreighways Corporation","USG Corporation","UST Inc","Valero Energy Corporation","Valspar Corporation","Value City Department Stores Inc","Varco International Inc","Vectren Corporation","Veritas Software Corporation","Verizon Communications Inc","VF Corporation","Viacom Inc","Viad Corp","Viasystems Group Inc","Vishay Intertechnology Inc","Visteon Corporation","Volt Information Sciences Inc","Vulcan Materials Company","W.R. Berkley Corporation","W.R. Grace & Co","W.W. Grainger Inc","Wachovia Corporation","Wakenhut Corporation","Walgreen Co","Wallace Computer Services Inc","Wal-Mart Stores Inc","Walt Disney Co","Walter Industries Inc","Washington Mutual Inc","Washington Post Co.","Waste Management Inc","Watsco Inc","Weatherford International Inc","Weis Markets Inc.","Wellpoint Health Networks Inc","Wells Fargo & Company","Wendy's International Inc","Werner Enterprises Inc","WESCO International Inc","Western Digital Inc","Western Gas Resources Inc","WestPoint Stevens Inc","Weyerhauser Company","WGL Holdings Inc","Whirlpool Corporation","Whole Foods Market Inc","Willamette Industries Inc.","Williams Companies Inc","Williams Sonoma Inc","Winn Dixie Stores Inc","Wisconsin Energy Corporation","Wm Wrigley Jr Company","World Fuel Services Corporation","WorldCom Inc","Worthington Industries Inc","WPS Resources Corporation","Wyeth","Wyndham International Inc","Xcel Energy Inc","Xerox Corp","Xilinx Inc","XO Communications Inc","Yellow Corporation","York International Corp","Yum Brands Inc.","Zale Corporation","Zions Bancorporation"],fileExtension:{raster:["bmp","gif","gpl","ico","jpeg","psd","png","psp","raw","tiff"],vector:["3dv","amf","awg","ai","cgm","cdr","cmx","dxf","e2d","egt","eps","fs","odg","svg","xar"],"3d":["3dmf","3dm","3mf","3ds","an8","aoi","blend","cal3d","cob","ctm","iob","jas","max","mb","mdx","obj","x","x3d"],document:["doc","docx","dot","html","xml","odt","odm","ott","csv","rtf","tex","xhtml","xps"]},timezones:[{name:"Dateline Standard Time",abbr:"DST",offset:-12,isdst:!1,text:"(UTC-12:00) International Date Line West",utc:["Etc/GMT+12"]},{name:"UTC-11",abbr:"U",offset:-11,isdst:!1,text:"(UTC-11:00) Coordinated Universal Time-11",utc:["Etc/GMT+11","Pacific/Midway","Pacific/Niue","Pacific/Pago_Pago"]},{name:"Hawaiian Standard Time",abbr:"HST",offset:-10,isdst:!1,text:"(UTC-10:00) Hawaii",utc:["Etc/GMT+10","Pacific/Honolulu","Pacific/Johnston","Pacific/Rarotonga","Pacific/Tahiti"]},{name:"Alaskan Standard Time",abbr:"AKDT",offset:-8,isdst:!0,text:"(UTC-09:00) Alaska",utc:["America/Anchorage","America/Juneau","America/Nome","America/Sitka","America/Yakutat"]},{name:"Pacific Standard Time (Mexico)",abbr:"PDT",offset:-7,isdst:!0,text:"(UTC-08:00) Baja California",utc:["America/Santa_Isabel"]},{name:"Pacific Daylight Time",abbr:"PDT",offset:-7,isdst:!0,text:"(UTC-07:00) Pacific Time (US & Canada)",utc:["America/Dawson","America/Los_Angeles","America/Tijuana","America/Vancouver","America/Whitehorse"]},{name:"Pacific Standard Time",abbr:"PST",offset:-8,isdst:!1,text:"(UTC-08:00) Pacific Time (US & Canada)",utc:["America/Dawson","America/Los_Angeles","America/Tijuana","America/Vancouver","America/Whitehorse","PST8PDT"]},{name:"US Mountain Standard Time",abbr:"UMST",offset:-7,isdst:!1,text:"(UTC-07:00) Arizona",utc:["America/Creston","America/Dawson_Creek","America/Hermosillo","America/Phoenix","Etc/GMT+7"]},{name:"Mountain Standard Time (Mexico)",abbr:"MDT",offset:-6,isdst:!0,text:"(UTC-07:00) Chihuahua, La Paz, Mazatlan",utc:["America/Chihuahua","America/Mazatlan"]},{name:"Mountain Standard Time",abbr:"MDT",offset:-6,isdst:!0,text:"(UTC-07:00) Mountain Time (US & Canada)",utc:["America/Boise","America/Cambridge_Bay","America/Denver","America/Edmonton","America/Inuvik","America/Ojinaga","America/Yellowknife","MST7MDT"]},{name:"Central America Standard Time",abbr:"CAST",offset:-6,isdst:!1,text:"(UTC-06:00) Central America",utc:["America/Belize","America/Costa_Rica","America/El_Salvador","America/Guatemala","America/Managua","America/Tegucigalpa","Etc/GMT+6","Pacific/Galapagos"]},{name:"Central Standard Time",abbr:"CDT",offset:-5,isdst:!0,text:"(UTC-06:00) Central Time (US & Canada)",utc:["America/Chicago","America/Indiana/Knox","America/Indiana/Tell_City","America/Matamoros","America/Menominee","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Rainy_River","America/Rankin_Inlet","America/Resolute","America/Winnipeg","CST6CDT"]},{name:"Central Standard Time (Mexico)",abbr:"CDT",offset:-5,isdst:!0,text:"(UTC-06:00) Guadalajara, Mexico City, Monterrey",utc:["America/Bahia_Banderas","America/Cancun","America/Merida","America/Mexico_City","America/Monterrey"]},{name:"Canada Central Standard Time",abbr:"CCST",offset:-6,isdst:!1,text:"(UTC-06:00) Saskatchewan",utc:["America/Regina","America/Swift_Current"]},{name:"SA Pacific Standard Time",abbr:"SPST",offset:-5,isdst:!1,text:"(UTC-05:00) Bogota, Lima, Quito",utc:["America/Bogota","America/Cayman","America/Coral_Harbour","America/Eirunepe","America/Guayaquil","America/Jamaica","America/Lima","America/Panama","America/Rio_Branco","Etc/GMT+5"]},{name:"Eastern Standard Time",abbr:"EDT",offset:-4,isdst:!0,text:"(UTC-05:00) Eastern Time (US & Canada)",utc:["America/Detroit","America/Havana","America/Indiana/Petersburg","America/Indiana/Vincennes","America/Indiana/Winamac","America/Iqaluit","America/Kentucky/Monticello","America/Louisville","America/Montreal","America/Nassau","America/New_York","America/Nipigon","America/Pangnirtung","America/Port-au-Prince","America/Thunder_Bay","America/Toronto","EST5EDT"]},{name:"US Eastern Standard Time",abbr:"UEDT",offset:-4,isdst:!0,text:"(UTC-05:00) Indiana (East)",utc:["America/Indiana/Marengo","America/Indiana/Vevay","America/Indianapolis"]},{name:"Venezuela Standard Time",abbr:"VST",offset:-4.5,isdst:!1,text:"(UTC-04:30) Caracas",utc:["America/Caracas"]},{name:"Paraguay Standard Time",abbr:"PYT",offset:-4,isdst:!1,text:"(UTC-04:00) Asuncion",utc:["America/Asuncion"]},{name:"Atlantic Standard Time",abbr:"ADT",offset:-3,isdst:!0,text:"(UTC-04:00) Atlantic Time (Canada)",utc:["America/Glace_Bay","America/Goose_Bay","America/Halifax","America/Moncton","America/Thule","Atlantic/Bermuda"]},{name:"Central Brazilian Standard Time",abbr:"CBST",offset:-4,isdst:!1,text:"(UTC-04:00) Cuiaba",utc:["America/Campo_Grande","America/Cuiaba"]},{name:"SA Western Standard Time",abbr:"SWST",offset:-4,isdst:!1,text:"(UTC-04:00) Georgetown, La Paz, Manaus, San Juan",utc:["America/Anguilla","America/Antigua","America/Aruba","America/Barbados","America/Blanc-Sablon","America/Boa_Vista","America/Curacao","America/Dominica","America/Grand_Turk","America/Grenada","America/Guadeloupe","America/Guyana","America/Kralendijk","America/La_Paz","America/Lower_Princes","America/Manaus","America/Marigot","America/Martinique","America/Montserrat","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Santo_Domingo","America/St_Barthelemy","America/St_Kitts","America/St_Lucia","America/St_Thomas","America/St_Vincent","America/Tortola","Etc/GMT+4"]},{name:"Pacific SA Standard Time",abbr:"PSST",offset:-4,isdst:!1,text:"(UTC-04:00) Santiago",utc:["America/Santiago","Antarctica/Palmer"]},{name:"Newfoundland Standard Time",abbr:"NDT",offset:-2.5,isdst:!0,text:"(UTC-03:30) Newfoundland",utc:["America/St_Johns"]},{name:"E. South America Standard Time",abbr:"ESAST",offset:-3,isdst:!1,text:"(UTC-03:00) Brasilia",utc:["America/Sao_Paulo"]},{name:"Argentina Standard Time",abbr:"AST",offset:-3,isdst:!1,text:"(UTC-03:00) Buenos Aires",utc:["America/Argentina/La_Rioja","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Buenos_Aires","America/Catamarca","America/Cordoba","America/Jujuy","America/Mendoza"]},{name:"SA Eastern Standard Time",abbr:"SEST",offset:-3,isdst:!1,text:"(UTC-03:00) Cayenne, Fortaleza",utc:["America/Araguaina","America/Belem","America/Cayenne","America/Fortaleza","America/Maceio","America/Paramaribo","America/Recife","America/Santarem","Antarctica/Rothera","Atlantic/Stanley","Etc/GMT+3"]},{name:"Greenland Standard Time",abbr:"GDT",offset:-3,isdst:!0,text:"(UTC-03:00) Greenland",utc:["America/Godthab"]},{name:"Montevideo Standard Time",abbr:"MST",offset:-3,isdst:!1,text:"(UTC-03:00) Montevideo",utc:["America/Montevideo"]},{name:"Bahia Standard Time",abbr:"BST",offset:-3,isdst:!1,text:"(UTC-03:00) Salvador",utc:["America/Bahia"]},{name:"UTC-02",abbr:"U",offset:-2,isdst:!1,text:"(UTC-02:00) Coordinated Universal Time-02",utc:["America/Noronha","Atlantic/South_Georgia","Etc/GMT+2"]},{name:"Mid-Atlantic Standard Time",abbr:"MDT",offset:-1,isdst:!0,text:"(UTC-02:00) Mid-Atlantic - Old",utc:[]},{name:"Azores Standard Time",abbr:"ADT",offset:0,isdst:!0,text:"(UTC-01:00) Azores",utc:["America/Scoresbysund","Atlantic/Azores"]},{name:"Cape Verde Standard Time",abbr:"CVST",offset:-1,isdst:!1,text:"(UTC-01:00) Cape Verde Is.",utc:["Atlantic/Cape_Verde","Etc/GMT+1"]},{name:"Morocco Standard Time",abbr:"MDT",offset:1,isdst:!0,text:"(UTC) Casablanca",utc:["Africa/Casablanca","Africa/El_Aaiun"]},{name:"UTC",abbr:"UTC",offset:0,isdst:!1,text:"(UTC) Coordinated Universal Time",utc:["America/Danmarkshavn","Etc/GMT"]},{name:"GMT Standard Time",abbr:"GMT",offset:0,isdst:!1,text:"(UTC) Edinburgh, London",utc:["Europe/Isle_of_Man","Europe/Guernsey","Europe/Jersey","Europe/London"]},{name:"British Summer Time",abbr:"BST",offset:1,isdst:!0,text:"(UTC+01:00) Edinburgh, London",utc:["Europe/Isle_of_Man","Europe/Guernsey","Europe/Jersey","Europe/London"]},{name:"GMT Standard Time",abbr:"GDT",offset:1,isdst:!0,text:"(UTC) Dublin, Lisbon",utc:["Atlantic/Canary","Atlantic/Faeroe","Atlantic/Madeira","Europe/Dublin","Europe/Lisbon"]},{name:"Greenwich Standard Time",abbr:"GST",offset:0,isdst:!1,text:"(UTC) Monrovia, Reykjavik",utc:["Africa/Abidjan","Africa/Accra","Africa/Bamako","Africa/Banjul","Africa/Bissau","Africa/Conakry","Africa/Dakar","Africa/Freetown","Africa/Lome","Africa/Monrovia","Africa/Nouakchott","Africa/Ouagadougou","Africa/Sao_Tome","Atlantic/Reykjavik","Atlantic/St_Helena"]},{name:"W. Europe Standard Time",abbr:"WEDT",offset:2,isdst:!0,text:"(UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna",utc:["Arctic/Longyearbyen","Europe/Amsterdam","Europe/Andorra","Europe/Berlin","Europe/Busingen","Europe/Gibraltar","Europe/Luxembourg","Europe/Malta","Europe/Monaco","Europe/Oslo","Europe/Rome","Europe/San_Marino","Europe/Stockholm","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Zurich"]},{name:"Central Europe Standard Time",abbr:"CEDT",offset:2,isdst:!0,text:"(UTC+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague",utc:["Europe/Belgrade","Europe/Bratislava","Europe/Budapest","Europe/Ljubljana","Europe/Podgorica","Europe/Prague","Europe/Tirane"]},{name:"Romance Standard Time",abbr:"RDT",offset:2,isdst:!0,text:"(UTC+01:00) Brussels, Copenhagen, Madrid, Paris",utc:["Africa/Ceuta","Europe/Brussels","Europe/Copenhagen","Europe/Madrid","Europe/Paris"]},{name:"Central European Standard Time",abbr:"CEDT",offset:2,isdst:!0,text:"(UTC+01:00) Sarajevo, Skopje, Warsaw, Zagreb",utc:["Europe/Sarajevo","Europe/Skopje","Europe/Warsaw","Europe/Zagreb"]},{name:"W. Central Africa Standard Time",abbr:"WCAST",offset:1,isdst:!1,text:"(UTC+01:00) West Central Africa",utc:["Africa/Algiers","Africa/Bangui","Africa/Brazzaville","Africa/Douala","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Luanda","Africa/Malabo","Africa/Ndjamena","Africa/Niamey","Africa/Porto-Novo","Africa/Tunis","Etc/GMT-1"]},{name:"Namibia Standard Time",abbr:"NST",offset:1,isdst:!1,text:"(UTC+01:00) Windhoek",utc:["Africa/Windhoek"]},{name:"GTB Standard Time",abbr:"GDT",offset:3,isdst:!0,text:"(UTC+02:00) Athens, Bucharest",utc:["Asia/Nicosia","Europe/Athens","Europe/Bucharest","Europe/Chisinau"]},{name:"Middle East Standard Time",abbr:"MEDT",offset:3,isdst:!0,text:"(UTC+02:00) Beirut",utc:["Asia/Beirut"]},{name:"Egypt Standard Time",abbr:"EST",offset:2,isdst:!1,text:"(UTC+02:00) Cairo",utc:["Africa/Cairo"]},{name:"Syria Standard Time",abbr:"SDT",offset:3,isdst:!0,text:"(UTC+02:00) Damascus",utc:["Asia/Damascus"]},{name:"E. Europe Standard Time",abbr:"EEDT",offset:3,isdst:!0,text:"(UTC+02:00) E. Europe",utc:["Asia/Nicosia","Europe/Athens","Europe/Bucharest","Europe/Chisinau","Europe/Helsinki","Europe/Kiev","Europe/Mariehamn","Europe/Nicosia","Europe/Riga","Europe/Sofia","Europe/Tallinn","Europe/Uzhgorod","Europe/Vilnius","Europe/Zaporozhye"]},{name:"South Africa Standard Time",abbr:"SAST",offset:2,isdst:!1,text:"(UTC+02:00) Harare, Pretoria",utc:["Africa/Blantyre","Africa/Bujumbura","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Kigali","Africa/Lubumbashi","Africa/Lusaka","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Etc/GMT-2"]},{name:"FLE Standard Time",abbr:"FDT",offset:3,isdst:!0,text:"(UTC+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius",utc:["Europe/Helsinki","Europe/Kiev","Europe/Mariehamn","Europe/Riga","Europe/Sofia","Europe/Tallinn","Europe/Uzhgorod","Europe/Vilnius","Europe/Zaporozhye"]},{name:"Turkey Standard Time",abbr:"TDT",offset:3,isdst:!1,text:"(UTC+03:00) Istanbul",utc:["Europe/Istanbul"]},{name:"Israel Standard Time",abbr:"JDT",offset:3,isdst:!0,text:"(UTC+02:00) Jerusalem",utc:["Asia/Jerusalem"]},{name:"Libya Standard Time",abbr:"LST",offset:2,isdst:!1,text:"(UTC+02:00) Tripoli",utc:["Africa/Tripoli"]},{name:"Jordan Standard Time",abbr:"JST",offset:3,isdst:!1,text:"(UTC+03:00) Amman",utc:["Asia/Amman"]},{name:"Arabic Standard Time",abbr:"AST",offset:3,isdst:!1,text:"(UTC+03:00) Baghdad",utc:["Asia/Baghdad"]},{name:"Kaliningrad Standard Time",abbr:"KST",offset:3,isdst:!1,text:"(UTC+02:00) Kaliningrad",utc:["Europe/Kaliningrad"]},{name:"Arab Standard Time",abbr:"AST",offset:3,isdst:!1,text:"(UTC+03:00) Kuwait, Riyadh",utc:["Asia/Aden","Asia/Bahrain","Asia/Kuwait","Asia/Qatar","Asia/Riyadh"]},{name:"E. Africa Standard Time",abbr:"EAST",offset:3,isdst:!1,text:"(UTC+03:00) Nairobi",utc:["Africa/Addis_Ababa","Africa/Asmera","Africa/Dar_es_Salaam","Africa/Djibouti","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Mogadishu","Africa/Nairobi","Antarctica/Syowa","Etc/GMT-3","Indian/Antananarivo","Indian/Comoro","Indian/Mayotte"]},{name:"Moscow Standard Time",abbr:"MSK",offset:3,isdst:!1,text:"(UTC+03:00) Moscow, St. Petersburg, Volgograd, Minsk",utc:["Europe/Kirov","Europe/Moscow","Europe/Simferopol","Europe/Volgograd","Europe/Minsk"]},{name:"Samara Time",abbr:"SAMT",offset:4,isdst:!1,text:"(UTC+04:00) Samara, Ulyanovsk, Saratov",utc:["Europe/Astrakhan","Europe/Samara","Europe/Ulyanovsk"]},{name:"Iran Standard Time",abbr:"IDT",offset:4.5,isdst:!0,text:"(UTC+03:30) Tehran",utc:["Asia/Tehran"]},{name:"Arabian Standard Time",abbr:"AST",offset:4,isdst:!1,text:"(UTC+04:00) Abu Dhabi, Muscat",utc:["Asia/Dubai","Asia/Muscat","Etc/GMT-4"]},{name:"Azerbaijan Standard Time",abbr:"ADT",offset:5,isdst:!0,text:"(UTC+04:00) Baku",utc:["Asia/Baku"]},{name:"Mauritius Standard Time",abbr:"MST",offset:4,isdst:!1,text:"(UTC+04:00) Port Louis",utc:["Indian/Mahe","Indian/Mauritius","Indian/Reunion"]},{name:"Georgian Standard Time",abbr:"GET",offset:4,isdst:!1,text:"(UTC+04:00) Tbilisi",utc:["Asia/Tbilisi"]},{name:"Caucasus Standard Time",abbr:"CST",offset:4,isdst:!1,text:"(UTC+04:00) Yerevan",utc:["Asia/Yerevan"]},{name:"Afghanistan Standard Time",abbr:"AST",offset:4.5,isdst:!1,text:"(UTC+04:30) Kabul",utc:["Asia/Kabul"]},{name:"West Asia Standard Time",abbr:"WAST",offset:5,isdst:!1,text:"(UTC+05:00) Ashgabat, Tashkent",utc:["Antarctica/Mawson","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Dushanbe","Asia/Oral","Asia/Samarkand","Asia/Tashkent","Etc/GMT-5","Indian/Kerguelen","Indian/Maldives"]},{name:"Yekaterinburg Time",abbr:"YEKT",offset:5,isdst:!1,text:"(UTC+05:00) Yekaterinburg",utc:["Asia/Yekaterinburg"]},{name:"Pakistan Standard Time",abbr:"PKT",offset:5,isdst:!1,text:"(UTC+05:00) Islamabad, Karachi",utc:["Asia/Karachi"]},{name:"India Standard Time",abbr:"IST",offset:5.5,isdst:!1,text:"(UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi",utc:["Asia/Kolkata"]},{name:"Sri Lanka Standard Time",abbr:"SLST",offset:5.5,isdst:!1,text:"(UTC+05:30) Sri Jayawardenepura",utc:["Asia/Colombo"]},{name:"Nepal Standard Time",abbr:"NST",offset:5.75,isdst:!1,text:"(UTC+05:45) Kathmandu",utc:["Asia/Kathmandu"]},{name:"Central Asia Standard Time",abbr:"CAST",offset:6,isdst:!1,text:"(UTC+06:00) Nur-Sultan (Astana)",utc:["Antarctica/Vostok","Asia/Almaty","Asia/Bishkek","Asia/Qyzylorda","Asia/Urumqi","Etc/GMT-6","Indian/Chagos"]},{name:"Bangladesh Standard Time",abbr:"BST",offset:6,isdst:!1,text:"(UTC+06:00) Dhaka",utc:["Asia/Dhaka","Asia/Thimphu"]},{name:"Myanmar Standard Time",abbr:"MST",offset:6.5,isdst:!1,text:"(UTC+06:30) Yangon (Rangoon)",utc:["Asia/Rangoon","Indian/Cocos"]},{name:"SE Asia Standard Time",abbr:"SAST",offset:7,isdst:!1,text:"(UTC+07:00) Bangkok, Hanoi, Jakarta",utc:["Antarctica/Davis","Asia/Bangkok","Asia/Hovd","Asia/Jakarta","Asia/Phnom_Penh","Asia/Pontianak","Asia/Saigon","Asia/Vientiane","Etc/GMT-7","Indian/Christmas"]},{name:"N. Central Asia Standard Time",abbr:"NCAST",offset:7,isdst:!1,text:"(UTC+07:00) Novosibirsk",utc:["Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk"]},{name:"China Standard Time",abbr:"CST",offset:8,isdst:!1,text:"(UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi",utc:["Asia/Hong_Kong","Asia/Macau","Asia/Shanghai"]},{name:"North Asia Standard Time",abbr:"NAST",offset:8,isdst:!1,text:"(UTC+08:00) Krasnoyarsk",utc:["Asia/Krasnoyarsk"]},{name:"Singapore Standard Time",abbr:"MPST",offset:8,isdst:!1,text:"(UTC+08:00) Kuala Lumpur, Singapore",utc:["Asia/Brunei","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Makassar","Asia/Manila","Asia/Singapore","Etc/GMT-8"]},{name:"W. Australia Standard Time",abbr:"WAST",offset:8,isdst:!1,text:"(UTC+08:00) Perth",utc:["Antarctica/Casey","Australia/Perth"]},{name:"Taipei Standard Time",abbr:"TST",offset:8,isdst:!1,text:"(UTC+08:00) Taipei",utc:["Asia/Taipei"]},{name:"Ulaanbaatar Standard Time",abbr:"UST",offset:8,isdst:!1,text:"(UTC+08:00) Ulaanbaatar",utc:["Asia/Choibalsan","Asia/Ulaanbaatar"]},{name:"North Asia East Standard Time",abbr:"NAEST",offset:8,isdst:!1,text:"(UTC+08:00) Irkutsk",utc:["Asia/Irkutsk"]},{name:"Japan Standard Time",abbr:"JST",offset:9,isdst:!1,text:"(UTC+09:00) Osaka, Sapporo, Tokyo",utc:["Asia/Dili","Asia/Jayapura","Asia/Tokyo","Etc/GMT-9","Pacific/Palau"]},{name:"Korea Standard Time",abbr:"KST",offset:9,isdst:!1,text:"(UTC+09:00) Seoul",utc:["Asia/Pyongyang","Asia/Seoul"]},{name:"Cen. Australia Standard Time",abbr:"CAST",offset:9.5,isdst:!1,text:"(UTC+09:30) Adelaide",utc:["Australia/Adelaide","Australia/Broken_Hill"]},{name:"AUS Central Standard Time",abbr:"ACST",offset:9.5,isdst:!1,text:"(UTC+09:30) Darwin",utc:["Australia/Darwin"]},{name:"E. Australia Standard Time",abbr:"EAST",offset:10,isdst:!1,text:"(UTC+10:00) Brisbane",utc:["Australia/Brisbane","Australia/Lindeman"]},{name:"AUS Eastern Standard Time",abbr:"AEST",offset:10,isdst:!1,text:"(UTC+10:00) Canberra, Melbourne, Sydney",utc:["Australia/Melbourne","Australia/Sydney"]},{name:"West Pacific Standard Time",abbr:"WPST",offset:10,isdst:!1,text:"(UTC+10:00) Guam, Port Moresby",utc:["Antarctica/DumontDUrville","Etc/GMT-10","Pacific/Guam","Pacific/Port_Moresby","Pacific/Saipan","Pacific/Truk"]},{name:"Tasmania Standard Time",abbr:"TST",offset:10,isdst:!1,text:"(UTC+10:00) Hobart",utc:["Australia/Currie","Australia/Hobart"]},{name:"Yakutsk Standard Time",abbr:"YST",offset:9,isdst:!1,text:"(UTC+09:00) Yakutsk",utc:["Asia/Chita","Asia/Khandyga","Asia/Yakutsk"]},{name:"Central Pacific Standard Time",abbr:"CPST",offset:11,isdst:!1,text:"(UTC+11:00) Solomon Is., New Caledonia",utc:["Antarctica/Macquarie","Etc/GMT-11","Pacific/Efate","Pacific/Guadalcanal","Pacific/Kosrae","Pacific/Noumea","Pacific/Ponape"]},{name:"Vladivostok Standard Time",abbr:"VST",offset:11,isdst:!1,text:"(UTC+11:00) Vladivostok",utc:["Asia/Sakhalin","Asia/Ust-Nera","Asia/Vladivostok"]},{name:"New Zealand Standard Time",abbr:"NZST",offset:12,isdst:!1,text:"(UTC+12:00) Auckland, Wellington",utc:["Antarctica/McMurdo","Pacific/Auckland"]},{name:"UTC+12",abbr:"U",offset:12,isdst:!1,text:"(UTC+12:00) Coordinated Universal Time+12",utc:["Etc/GMT-12","Pacific/Funafuti","Pacific/Kwajalein","Pacific/Majuro","Pacific/Nauru","Pacific/Tarawa","Pacific/Wake","Pacific/Wallis"]},{name:"Fiji Standard Time",abbr:"FST",offset:12,isdst:!1,text:"(UTC+12:00) Fiji",utc:["Pacific/Fiji"]},{name:"Magadan Standard Time",abbr:"MST",offset:12,isdst:!1,text:"(UTC+12:00) Magadan",utc:["Asia/Anadyr","Asia/Kamchatka","Asia/Magadan","Asia/Srednekolymsk"]},{name:"Kamchatka Standard Time",abbr:"KDT",offset:13,isdst:!0,text:"(UTC+12:00) Petropavlovsk-Kamchatsky - Old",utc:["Asia/Kamchatka"]},{name:"Tonga Standard Time",abbr:"TST",offset:13,isdst:!1,text:"(UTC+13:00) Nuku'alofa",utc:["Etc/GMT-13","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Tongatapu"]},{name:"Samoa Standard Time",abbr:"SST",offset:13,isdst:!1,text:"(UTC+13:00) Samoa",utc:["Pacific/Apia"]}],profession:["Airline Pilot","Academic Team","Accountant","Account Executive","Actor","Actuary","Acquisition Analyst","Administrative Asst.","Administrative Analyst","Administrator","Advertising Director","Aerospace Engineer","Agent","Agricultural Inspector","Agricultural Scientist","Air Traffic Controller","Animal Trainer","Anthropologist","Appraiser","Architect","Art Director","Artist","Astronomer","Athletic Coach","Auditor","Author","Baker","Banker","Bankruptcy Attorney","Benefits Manager","Biologist","Bio-feedback Specialist","Biomedical Engineer","Biotechnical Researcher","Broadcaster","Broker","Building Manager","Building Contractor","Building Inspector","Business Analyst","Business Planner","Business Manager","Buyer","Call Center Manager","Career Counselor","Cash Manager","Ceramic Engineer","Chief Executive Officer","Chief Operation Officer","Chef","Chemical Engineer","Chemist","Child Care Manager","Chief Medical Officer","Chiropractor","Cinematographer","City Housing Manager","City Manager","Civil Engineer","Claims Manager","Clinical Research Assistant","Collections Manager","Compliance Manager","Comptroller","Computer Manager","Commercial Artist","Communications Affairs Director","Communications Director","Communications Engineer","Compensation Analyst","Computer Programmer","Computer Ops. Manager","Computer Engineer","Computer Operator","Computer Graphics Specialist","Construction Engineer","Construction Manager","Consultant","Consumer Relations Manager","Contract Administrator","Copyright Attorney","Copywriter","Corporate Planner","Corrections Officer","Cosmetologist","Credit Analyst","Cruise Director","Chief Information Officer","Chief Technology Officer","Customer Service Manager","Cryptologist","Dancer","Data Security Manager","Database Manager","Day Care Instructor","Dentist","Designer","Design Engineer","Desktop Publisher","Developer","Development Officer","Diamond Merchant","Dietitian","Direct Marketer","Director","Distribution Manager","Diversity Manager","Economist","EEO Compliance Manager","Editor","Education Adminator","Electrical Engineer","Electro Optical Engineer","Electronics Engineer","Embassy Management","Employment Agent","Engineer Technician","Entrepreneur","Environmental Analyst","Environmental Attorney","Environmental Engineer","Environmental Specialist","Escrow Officer","Estimator","Executive Assistant","Executive Director","Executive Recruiter","Facilities Manager","Family Counselor","Fashion Events Manager","Fashion Merchandiser","Fast Food Manager","Film Producer","Film Production Assistant","Financial Analyst","Financial Planner","Financier","Fine Artist","Wildlife Specialist","Fitness Consultant","Flight Attendant","Flight Engineer","Floral Designer","Food & Beverage Director","Food Service Manager","Forestry Technician","Franchise Management","Franchise Sales","Fraud Investigator","Freelance Writer","Fund Raiser","General Manager","Geologist","General Counsel","Geriatric Specialist","Gerontologist","Glamour Photographer","Golf Club Manager","Gourmet Chef","Graphic Designer","Grounds Keeper","Hazardous Waste Manager","Health Care Manager","Health Therapist","Health Service Administrator","Hearing Officer","Home Economist","Horticulturist","Hospital Administrator","Hotel Manager","Human Resources Manager","Importer","Industrial Designer","Industrial Engineer","Information Director","Inside Sales","Insurance Adjuster","Interior Decorator","Internal Controls Director","International Acct.","International Courier","International Lawyer","Interpreter","Investigator","Investment Banker","Investment Manager","IT Architect","IT Project Manager","IT Systems Analyst","Jeweler","Joint Venture Manager","Journalist","Labor Negotiator","Labor Organizer","Labor Relations Manager","Lab Services Director","Lab Technician","Land Developer","Landscape Architect","Law Enforcement Officer","Lawyer","Lead Software Engineer","Lead Software Test Engineer","Leasing Manager","Legal Secretary","Library Manager","Litigation Attorney","Loan Officer","Lobbyist","Logistics Manager","Maintenance Manager","Management Consultant","Managed Care Director","Managing Partner","Manufacturing Director","Manpower Planner","Marine Biologist","Market Res. Analyst","Marketing Director","Materials Manager","Mathematician","Membership Chairman","Mechanic","Mechanical Engineer","Media Buyer","Medical Investor","Medical Secretary","Medical Technician","Mental Health Counselor","Merchandiser","Metallurgical Engineering","Meteorologist","Microbiologist","MIS Manager","Motion Picture Director","Multimedia Director","Musician","Network Administrator","Network Specialist","Network Operator","New Product Manager","Novelist","Nuclear Engineer","Nuclear Specialist","Nutritionist","Nursing Administrator","Occupational Therapist","Oceanographer","Office Manager","Operations Manager","Operations Research Director","Optical Technician","Optometrist","Organizational Development Manager","Outplacement Specialist","Paralegal","Park Ranger","Patent Attorney","Payroll Specialist","Personnel Specialist","Petroleum Engineer","Pharmacist","Photographer","Physical Therapist","Physician","Physician Assistant","Physicist","Planning Director","Podiatrist","Political Analyst","Political Scientist","Politician","Portfolio Manager","Preschool Management","Preschool Teacher","Principal","Private Banker","Private Investigator","Probation Officer","Process Engineer","Producer","Product Manager","Product Engineer","Production Engineer","Production Planner","Professional Athlete","Professional Coach","Professor","Project Engineer","Project Manager","Program Manager","Property Manager","Public Administrator","Public Safety Director","PR Specialist","Publisher","Purchasing Agent","Publishing Director","Quality Assurance Specialist","Quality Control Engineer","Quality Control Inspector","Radiology Manager","Railroad Engineer","Real Estate Broker","Recreational Director","Recruiter","Redevelopment Specialist","Regulatory Affairs Manager","Registered Nurse","Rehabilitation Counselor","Relocation Manager","Reporter","Research Specialist","Restaurant Manager","Retail Store Manager","Risk Analyst","Safety Engineer","Sales Engineer","Sales Trainer","Sales Promotion Manager","Sales Representative","Sales Manager","Service Manager","Sanitation Engineer","Scientific Programmer","Scientific Writer","Securities Analyst","Security Consultant","Security Director","Seminar Presenter","Ship's Officer","Singer","Social Director","Social Program Planner","Social Research","Social Scientist","Social Worker","Sociologist","Software Developer","Software Engineer","Software Test Engineer","Soil Scientist","Special Events Manager","Special Education Teacher","Special Projects Director","Speech Pathologist","Speech Writer","Sports Event Manager","Statistician","Store Manager","Strategic Alliance Director","Strategic Planning Director","Stress Reduction Specialist","Stockbroker","Surveyor","Structural Engineer","Superintendent","Supply Chain Director","System Engineer","Systems Analyst","Systems Programmer","System Administrator","Tax Specialist","Teacher","Technical Support Specialist","Technical Illustrator","Technical Writer","Technology Director","Telecom Analyst","Telemarketer","Theatrical Director","Title Examiner","Tour Escort","Tour Guide Director","Traffic Manager","Trainer Translator","Transportation Manager","Travel Agent","Treasurer","TV Programmer","Underwriter","Union Representative","University Administrator","University Dean","Urban Planner","Veterinarian","Vendor Relations Director","Viticulturist","Warehouse Manager"],animals:{ocean:["Acantharea","Anemone","Angelfish King","Ahi Tuna","Albacore","American Oyster","Anchovy","Armored Snail","Arctic Char","Atlantic Bluefin Tuna","Atlantic Cod","Atlantic Goliath Grouper","Atlantic Trumpetfish","Atlantic Wolffish","Baleen Whale","Banded Butterflyfish","Banded Coral Shrimp","Banded Sea Krait","Barnacle","Barndoor Skate","Barracuda","Basking Shark","Bass","Beluga Whale","Bluebanded Goby","Bluehead Wrasse","Bluefish","Bluestreak Cleaner-Wrasse","Blue Marlin","Blue Shark","Blue Spiny Lobster","Blue Tang","Blue Whale","Broadclub Cuttlefish","Bull Shark","Chambered Nautilus","Chilean Basket Star","Chilean Jack Mackerel","Chinook Salmon","Christmas Tree Worm","Clam","Clown Anemonefish","Clown Triggerfish","Cod","Coelacanth","Cockscomb Cup Coral","Common Fangtooth","Conch","Cookiecutter Shark","Copepod","Coral","Corydoras","Cownose Ray","Crab","Crown-of-Thorns Starfish","Cushion Star","Cuttlefish","California Sea Otters","Dolphin","Dolphinfish","Dory","Devil Fish","Dugong","Dumbo Octopus","Dungeness Crab","Eccentric Sand Dollar","Edible Sea Cucumber","Eel","Elephant Seal","Elkhorn Coral","Emperor Shrimp","Estuarine Crocodile","Fathead Sculpin","Fiddler Crab","Fin Whale","Flameback","Flamingo Tongue Snail","Flashlight Fish","Flatback Turtle","Flatfish","Flying Fish","Flounder","Fluke","French Angelfish","Frilled Shark","Fugu (also called Pufferfish)","Gar","Geoduck","Giant Barrel Sponge","Giant Caribbean Sea Anemone","Giant Clam","Giant Isopod","Giant Kingfish","Giant Oarfish","Giant Pacific Octopus","Giant Pyrosome","Giant Sea Star","Giant Squid","Glowing Sucker Octopus","Giant Tube Worm","Goblin Shark","Goosefish","Great White Shark","Greenland Shark","Grey Atlantic Seal","Grouper","Grunion","Guineafowl Puffer","Haddock","Hake","Halibut","Hammerhead Shark","Hapuka","Harbor Porpoise","Harbor Seal","Hatchetfish","Hawaiian Monk Seal","Hawksbill Turtle","Hector's Dolphin","Hermit Crab","Herring","Hoki","Horn Shark","Horseshoe Crab","Humpback Anglerfish","Humpback Whale","Icefish","Imperator Angelfish","Irukandji Jellyfish","Isopod","Ivory Bush Coral","Japanese Spider Crab","Jellyfish","John Dory","Juan Fernandez Fur Seal","Killer Whale","Kiwa Hirsuta","Krill","Lagoon Triggerfish","Lamprey","Leafy Seadragon","Leopard Seal","Limpet","Ling","Lionfish","Lions Mane Jellyfish","Lobe Coral","Lobster","Loggerhead Turtle","Longnose Sawshark","Longsnout Seahorse","Lophelia Coral","Marrus Orthocanna","Manatee","Manta Ray","Marlin","Megamouth Shark","Mexican Lookdown","Mimic Octopus","Moon Jelly","Mollusk","Monkfish","Moray Eel","Mullet","Mussel","Megaladon","Napoleon Wrasse","Nassau Grouper","Narwhal","Nautilus","Needlefish","Northern Seahorse","North Atlantic Right Whale","Northern Red Snapper","Norway Lobster","Nudibranch","Nurse Shark","Oarfish","Ocean Sunfish","Oceanic Whitetip Shark","Octopus","Olive Sea Snake","Orange Roughy","Ostracod","Otter","Oyster","Pacific Angelshark","Pacific Blackdragon","Pacific Halibut","Pacific Sardine","Pacific Sea Nettle Jellyfish","Pacific White Sided Dolphin","Pantropical Spotted Dolphin","Patagonian Toothfish","Peacock Mantis Shrimp","Pelagic Thresher Shark","Penguin","Peruvian Anchoveta","Pilchard","Pink Salmon","Pinniped","Plankton","Porpoise","Polar Bear","Portuguese Man o' War","Pycnogonid Sea Spider","Quahog","Queen Angelfish","Queen Conch","Queen Parrotfish","Queensland Grouper","Ragfish","Ratfish","Rattail Fish","Ray","Red Drum","Red King Crab","Ringed Seal","Risso's Dolphin","Ross Seals","Sablefish","Salmon","Sand Dollar","Sandbar Shark","Sawfish","Sarcastic Fringehead","Scalloped Hammerhead Shark","Seahorse","Sea Cucumber","Sea Lion","Sea Urchin","Seal","Shark","Shortfin Mako Shark","Shovelnose Guitarfish","Shrimp","Silverside Fish","Skipjack Tuna","Slender Snipe Eel","Smalltooth Sawfish","Smelts","Sockeye Salmon","Southern Stingray","Sponge","Spotted Porcupinefish","Spotted Dolphin","Spotted Eagle Ray","Spotted Moray","Squid","Squidworm","Starfish","Stickleback","Stonefish","Stoplight Loosejaw","Sturgeon","Swordfish","Tan Bristlemouth","Tasseled Wobbegong","Terrible Claw Lobster","Threespot Damselfish","Tiger Prawn","Tiger Shark","Tilefish","Toadfish","Tropical Two-Wing Flyfish","Tuna","Umbrella Squid","Velvet Crab","Venus Flytrap Sea Anemone","Vigtorniella Worm","Viperfish","Vampire Squid","Vaquita","Wahoo","Walrus","West Indian Manatee","Whale","Whale Shark","Whiptail Gulper","White-Beaked Dolphin","White-Ring Garden Eel","White Shrimp","Wobbegong","Wrasse","Wreckfish","Xiphosura","Yellowtail Damselfish","Yelloweye Rockfish","Yellow Cup Black Coral","Yellow Tube Sponge","Yellowfin Tuna","Zebrashark","Zooplankton"],desert:["Aardwolf","Addax","African Wild Ass","Ant","Antelope","Armadillo","Baboon","Badger","Bat","Bearded Dragon","Beetle","Bird","Black-footed Cat","Boa","Brown Bear","Bustard","Butterfly","Camel","Caracal","Caracara","Caterpillar","Centipede","Cheetah","Chipmunk","Chuckwalla","Climbing Mouse","Coati","Cobra","Cotton Rat","Cougar","Courser","Crane Fly","Crow","Dassie Rat","Dove","Dunnart","Eagle","Echidna","Elephant","Emu","Falcon","Fly","Fox","Frogmouth","Gecko","Geoffroy's Cat","Gerbil","Grasshopper","Guanaco","Gundi","Hamster","Hawk","Hedgehog","Hyena","Hyrax","Jackal","Kangaroo","Kangaroo Rat","Kestrel","Kowari","Kultarr","Leopard","Lion","Macaw","Meerkat","Mouse","Oryx","Ostrich","Owl","Pronghorn","Python","Rabbit","Raccoon","Rattlesnake","Rhinoceros","Sand Cat","Spectacled Bear","Spiny Mouse","Starling","Stick Bug","Tarantula","Tit","Toad","Tortoise","Tyrant Flycatcher","Viper","Vulture","Waxwing","Xerus","Zebra"],grassland:["Aardvark","Aardwolf","Accentor","African Buffalo","African Wild Dog","Alpaca","Anaconda","Ant","Anteater","Antelope","Armadillo","Baboon","Badger","Bandicoot","Barbet","Bat","Bee","Bee-eater","Beetle","Bird","Bison","Black-footed Cat","Black-footed Ferret","Bluebird","Boa","Bowerbird","Brown Bear","Bush Dog","Bushshrike","Bustard","Butterfly","Buzzard","Caracal","Caracara","Cardinal","Caterpillar","Cheetah","Chipmunk","Civet","Climbing Mouse","Clouded Leopard","Coati","Cobra","Cockatoo","Cockroach","Common Genet","Cotton Rat","Cougar","Courser","Coyote","Crane","Crane Fly","Cricket","Crow","Culpeo","Death Adder","Deer","Deer Mouse","Dingo","Dinosaur","Dove","Drongo","Duck","Duiker","Dunnart","Eagle","Echidna","Elephant","Elk","Emu","Falcon","Finch","Flea","Fly","Flying Frog","Fox","Frog","Frogmouth","Garter Snake","Gazelle","Gecko","Geoffroy's Cat","Gerbil","Giant Tortoise","Giraffe","Grasshopper","Grison","Groundhog","Grouse","Guanaco","Guinea Pig","Hamster","Harrier","Hartebeest","Hawk","Hedgehog","Helmetshrike","Hippopotamus","Hornbill","Hyena","Hyrax","Impala","Jackal","Jaguar","Jaguarundi","Kangaroo","Kangaroo Rat","Kestrel","Kultarr","Ladybug","Leopard","Lion","Macaw","Meerkat","Mouse","Newt","Oryx","Ostrich","Owl","Pangolin","Pheasant","Prairie Dog","Pronghorn","Przewalski's Horse","Python","Quoll","Rabbit","Raven","Rhinoceros","Shelduck","Sloth Bear","Spectacled Bear","Squirrel","Starling","Stick Bug","Tamandua","Tasmanian Devil","Thornbill","Thrush","Toad","Tortoise"],forest:["Agouti","Anaconda","Anoa","Ant","Anteater","Antelope","Armadillo","Asian Black Bear","Aye-aye","Babirusa","Baboon","Badger","Bandicoot","Banteng","Barbet","Basilisk","Bat","Bearded Dragon","Bee","Bee-eater","Beetle","Bettong","Binturong","Bird-of-paradise","Bongo","Bowerbird","Bulbul","Bush Dog","Bushbaby","Bushshrike","Butterfly","Buzzard","Caecilian","Cardinal","Cassowary","Caterpillar","Centipede","Chameleon","Chimpanzee","Cicada","Civet","Clouded Leopard","Coati","Cobra","Cockatoo","Cockroach","Colugo","Cotinga","Cotton Rat","Cougar","Crane Fly","Cricket","Crocodile","Crow","Cuckoo","Cuscus","Death Adder","Deer","Dhole","Dingo","Dinosaur","Drongo","Duck","Duiker","Eagle","Echidna","Elephant","Finch","Flat-headed Cat","Flea","Flowerpecker","Fly","Flying Frog","Fossa","Frog","Frogmouth","Gaur","Gecko","Gorilla","Grison","Hawaiian Honeycreeper","Hawk","Hedgehog","Helmetshrike","Hornbill","Hyrax","Iguana","Jackal","Jaguar","Jaguarundi","Kestrel","Ladybug","Lemur","Leopard","Lion","Macaw","Mandrill","Margay","Monkey","Mouse","Mouse Deer","Newt","Okapi","Old World Flycatcher","Orangutan","Owl","Pangolin","Peafowl","Pheasant","Possum","Python","Quokka","Rabbit","Raccoon","Red Panda","Red River Hog","Rhinoceros","Sloth Bear","Spectacled Bear","Squirrel","Starling","Stick Bug","Sun Bear","Tamandua","Tamarin","Tapir","Tarantula","Thrush","Tiger","Tit","Toad","Tortoise","Toucan","Trogon","Trumpeter","Turaco","Turtle","Tyrant Flycatcher","Viper","Vulture","Wallaby","Warbler","Wasp","Waxwing","Weaver","Weaver-finch","Whistler","White-eye","Whydah","Woodswallow","Worm","Wren","Xenops","Yellowjacket","Accentor","African Buffalo","American Black Bear","Anole","Bird","Bison","Boa","Brown Bear","Chipmunk","Common Genet","Copperhead","Coyote","Deer Mouse","Dormouse","Elk","Emu","Fisher","Fox","Garter Snake","Giant Panda","Giant Tortoise","Groundhog","Grouse","Guanaco","Himalayan Tahr","Kangaroo","Koala","Numbat","Quoll","Raccoon dog","Tasmanian Devil","Thornbill","Turkey","Vole","Weasel","Wildcat","Wolf","Wombat","Woodchuck","Woodpecker"],farm:["Alpaca","Buffalo","Banteng","Cow","Cat","Chicken","Carp","Camel","Donkey","Dog","Duck","Emu","Goat","Gayal","Guinea","Goose","Horse","Honey","Llama","Pig","Pigeon","Rhea","Rabbit","Sheep","Silkworm","Turkey","Yak","Zebu"],pet:["Bearded Dragon","Birds","Burro","Cats","Chameleons","Chickens","Chinchillas","Chinese Water Dragon","Cows","Dogs","Donkey","Ducks","Ferrets","Fish","Geckos","Geese","Gerbils","Goats","Guinea Fowl","Guinea Pigs","Hamsters","Hedgehogs","Horses","Iguanas","Llamas","Lizards","Mice","Mule","Peafowl","Pigs and Hogs","Pigeons","Ponies","Pot Bellied Pig","Rabbits","Rats","Sheep","Skinks","Snakes","Stick Insects","Sugar Gliders","Tarantula","Turkeys","Turtles"],zoo:["Aardvark","African Wild Dog","Aldabra Tortoise","American Alligator","American Bison","Amur Tiger","Anaconda","Andean Condor","Asian Elephant","Baby Doll Sheep","Bald Eagle","Barred Owl","Blue Iguana","Boer Goat","California Sea Lion","Caribbean Flamingo","Chinchilla","Collared Lemur","Coquerel's Sifaka","Cuban Amazon Parrot","Ebony Langur","Fennec Fox","Fossa","Gelada","Giant Anteater","Giraffe","Gorilla","Grizzly Bear","Henkel's Leaf-tailed Gecko","Indian Gharial","Indian Rhinoceros","King Cobra","King Vulture","Komodo Dragon","Linne's Two-toed Sloth","Lion","Little Penguin","Madagascar Tree Boa","Magellanic Penguin","Malayan Tapir","Malayan Tiger","Matschies Tree Kangaroo","Mini Donkey","Monarch Butterfly","Nile crocodile","North American Porcupine","Nubian Ibex","Okapi","Poison Dart Frog","Polar Bear","Pygmy Marmoset","Radiated Tortoise","Red Panda","Red Ruffed Lemur","Ring-tailed Lemur","Ring-tailed Mongoose","Rock Hyrax","Small Clawed Asian Otter","Snow Leopard","Snowy Owl","Southern White-faced Owl","Southern White Rhinocerous","Squirrel Monkey","Tufted Puffin","White Cheeked Gibbon","White-throated Bee Eater","Zebra"]},primes:[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019,3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163,3167,3169,3181,3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259,3271,3299,3301,3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371,3373,3389,3391,3407,3413,3433,3449,3457,3461,3463,3467,3469,3491,3499,3511,3517,3527,3529,3533,3539,3541,3547,3557,3559,3571,3581,3583,3593,3607,3613,3617,3623,3631,3637,3643,3659,3671,3673,3677,3691,3697,3701,3709,3719,3727,3733,3739,3761,3767,3769,3779,3793,3797,3803,3821,3823,3833,3847,3851,3853,3863,3877,3881,3889,3907,3911,3917,3919,3923,3929,3931,3943,3947,3967,3989,4001,4003,4007,4013,4019,4021,4027,4049,4051,4057,4073,4079,4091,4093,4099,4111,4127,4129,4133,4139,4153,4157,4159,4177,4201,4211,4217,4219,4229,4231,4241,4243,4253,4259,4261,4271,4273,4283,4289,4297,4327,4337,4339,4349,4357,4363,4373,4391,4397,4409,4421,4423,4441,4447,4451,4457,4463,4481,4483,4493,4507,4513,4517,4519,4523,4547,4549,4561,4567,4583,4591,4597,4603,4621,4637,4639,4643,4649,4651,4657,4663,4673,4679,4691,4703,4721,4723,4729,4733,4751,4759,4783,4787,4789,4793,4799,4801,4813,4817,4831,4861,4871,4877,4889,4903,4909,4919,4931,4933,4937,4943,4951,4957,4967,4969,4973,4987,4993,4999,5003,5009,5011,5021,5023,5039,5051,5059,5077,5081,5087,5099,5101,5107,5113,5119,5147,5153,5167,5171,5179,5189,5197,5209,5227,5231,5233,5237,5261,5273,5279,5281,5297,5303,5309,5323,5333,5347,5351,5381,5387,5393,5399,5407,5413,5417,5419,5431,5437,5441,5443,5449,5471,5477,5479,5483,5501,5503,5507,5519,5521,5527,5531,5557,5563,5569,5573,5581,5591,5623,5639,5641,5647,5651,5653,5657,5659,5669,5683,5689,5693,5701,5711,5717,5737,5741,5743,5749,5779,5783,5791,5801,5807,5813,5821,5827,5839,5843,5849,5851,5857,5861,5867,5869,5879,5881,5897,5903,5923,5927,5939,5953,5981,5987,6007,6011,6029,6037,6043,6047,6053,6067,6073,6079,6089,6091,6101,6113,6121,6131,6133,6143,6151,6163,6173,6197,6199,6203,6211,6217,6221,6229,6247,6257,6263,6269,6271,6277,6287,6299,6301,6311,6317,6323,6329,6337,6343,6353,6359,6361,6367,6373,6379,6389,6397,6421,6427,6449,6451,6469,6473,6481,6491,6521,6529,6547,6551,6553,6563,6569,6571,6577,6581,6599,6607,6619,6637,6653,6659,6661,6673,6679,6689,6691,6701,6703,6709,6719,6733,6737,6761,6763,6779,6781,6791,6793,6803,6823,6827,6829,6833,6841,6857,6863,6869,6871,6883,6899,6907,6911,6917,6947,6949,6959,6961,6967,6971,6977,6983,6991,6997,7001,7013,7019,7027,7039,7043,7057,7069,7079,7103,7109,7121,7127,7129,7151,7159,7177,7187,7193,7207,7211,7213,7219,7229,7237,7243,7247,7253,7283,7297,7307,7309,7321,7331,7333,7349,7351,7369,7393,7411,7417,7433,7451,7457,7459,7477,7481,7487,7489,7499,7507,7517,7523,7529,7537,7541,7547,7549,7559,7561,7573,7577,7583,7589,7591,7603,7607,7621,7639,7643,7649,7669,7673,7681,7687,7691,7699,7703,7717,7723,7727,7741,7753,7757,7759,7789,7793,7817,7823,7829,7841,7853,7867,7873,7877,7879,7883,7901,7907,7919,7927,7933,7937,7949,7951,7963,7993,8009,8011,8017,8039,8053,8059,8069,8081,8087,8089,8093,8101,8111,8117,8123,8147,8161,8167,8171,8179,8191,8209,8219,8221,8231,8233,8237,8243,8263,8269,8273,8287,8291,8293,8297,8311,8317,8329,8353,8363,8369,8377,8387,8389,8419,8423,8429,8431,8443,8447,8461,8467,8501,8513,8521,8527,8537,8539,8543,8563,8573,8581,8597,8599,8609,8623,8627,8629,8641,8647,8663,8669,8677,8681,8689,8693,8699,8707,8713,8719,8731,8737,8741,8747,8753,8761,8779,8783,8803,8807,8819,8821,8831,8837,8839,8849,8861,8863,8867,8887,8893,8923,8929,8933,8941,8951,8963,8969,8971,8999,9001,9007,9011,9013,9029,9041,9043,9049,9059,9067,9091,9103,9109,9127,9133,9137,9151,9157,9161,9173,9181,9187,9199,9203,9209,9221,9227,9239,9241,9257,9277,9281,9283,9293,9311,9319,9323,9337,9341,9343,9349,9371,9377,9391,9397,9403,9413,9419,9421,9431,9433,9437,9439,9461,9463,9467,9473,9479,9491,9497,9511,9521,9533,9539,9547,9551,9587,9601,9613,9619,9623,9629,9631,9643,9649,9661,9677,9679,9689,9697,9719,9721,9733,9739,9743,9749,9767,9769,9781,9787,9791,9803,9811,9817,9829,9833,9839,9851,9857,9859,9871,9883,9887,9901,9907,9923,9929,9931,9941,9949,9967,9973,10007],emotions:["love","joy","surprise","anger","sadness","fear"],music_genres:{general:["Rock","Pop","Hip-Hop","Jazz","Classical","Electronic","Country","R&B","Reggae","Blues","Metal","Folk","Alternative","Punk","Disco","Funk","Techno","Indie","Gospel","Dance","Children's","World"],alternative:["Art Punk","Alternative Rock","Britpunk","College Rock","Crossover Thrash","Crust Punk","Emo / Emocore","Experimental Rock","Folk Punk","Goth / Gothic Rock","Grunge","Hardcore Punk","Hard Rock","Indie Rock","Lo-fi","Musique Concrète","New Wave","Progressive Rock","Punk","Shoegaze","Steampunk"],blues:["Acoustic Blues","African Blues","Blues Rock","Blues Shouter","British Blues","Canadian Blues","Chicago Blues","Classic Blues","Classic Female Blues","Contemporary Blues","Country Blues","Dark Blues","Delta Blues","Detroit Blues","Doom Blues","Electric Blues","Folk Blues","Gospel Blues","Harmonica Blues","Hill Country Blues","Hokum Blues","Jazz Blues","Jump Blues","Kansas City Blues","Louisiana Blues","Memphis Blues","Modern Blues","New Orlean Blues","NY Blues","Piano Blues","Piedmont Blues","Punk Blues","Ragtime Blues","Rhythm Blues","Soul Blues","St.Louis Blues","Soul Blues","Swamp Blues","Texas Blues","Urban Blues","Vandeville","West Coast Blues"],"children's":["Lullabies","Sing - Along","Stories"],classical:["Avant-Garde","Ballet","Baroque","Cantata","Chamber Music","String Quartet","Chant","Choral","Classical Crossover","Concerto","Concerto Grosso","Contemporary Classical","Early Music","Expressionist","High Classical","Impressionist","Mass Requiem","Medieval","Minimalism","Modern Composition","Modern Classical","Opera","Oratorio","Orchestral","Organum","Renaissance","Romantic (early period)","Romantic (later period)","Sonata","Symphonic","Symphony","Twelve-tone","Wedding Music"],country:["Alternative Country","Americana","Australian Country","Bakersfield Sound","Bluegrass","Blues Country","Cajun Fiddle Tunes","Christian Country","Classic Country","Close Harmony","Contemporary Bluegrass","Contemporary Country","Country Gospel","Country Pop","Country Rap","Country Rock","Country Soul","Cowboy / Western","Cowpunk","Dansband","Honky Tonk","Franco-Country","Gulf and Western","Hellbilly Music","Honky Tonk","Instrumental Country","Lubbock Sound","Nashville Sound","Neotraditional Country","Outlaw Country","Progressive","Psychobilly / Punkabilly","Red Dirt","Sertanejo","Texas County","Traditional Bluegrass","Traditional Country","Truck-Driving Country","Urban Cowboy","Western Swing"],dance:["Club / Club Dance","Breakcore","Breakbeat / Breakstep","Chillstep","Deep House","Dubstep","Dancehall","Electro House","Electroswing","Exercise","Future Garage","Garage","Glitch Hop","Glitch Pop","Grime","Hardcore","Hard Dance","Hi-NRG / Eurodance","Horrorcore","House","Jackin House","Jungle / Drum n bass","Liquid Dub","Regstep","Speedcore","Techno","Trance","Trap"],electronic:["2-Step","8bit","Ambient","Asian Underground","Bassline","Chillwave","Chiptune","Crunk","Downtempo","Drum & Bass","Hard Step","Electro","Electro-swing","Electroacoustic","Electronica","Electronic Rock","Eurodance","Hardstyle","Hi-Nrg","IDM/Experimental","Industrial","Trip Hop","Vaporwave","UK Garage","House","Dubstep","Deep House","EDM","Future Bass","Psychedelic trance"],jazz:["Acid Jazz","Afro-Cuban Jazz","Avant-Garde Jazz","Bebop","Big Band","Blue Note","British Dance Band (Jazz)","Cape Jazz","Chamber Jazz","Contemporary Jazz","Continental Jazz","Cool Jazz","Crossover Jazz","Dark Jazz","Dixieland","Early Jazz","Electro Swing (Jazz)","Ethio-jazz","Ethno-Jazz","European Free Jazz","Free Funk (Avant-Garde / Funk Jazz)","Free Jazz","Fusion","Gypsy Jazz","Hard Bop","Indo Jazz","Jazz Blues","Jazz-Funk (see Free Funk)","Jazz-Fusion","Jazz Rap","Jazz Rock","Kansas City Jazz","Latin Jazz","M-Base Jazz","Mainstream Jazz","Modal Jazz","Neo-Bop","Neo-Swing","Nu Jazz","Orchestral Jazz","Post-Bop","Punk Jazz","Ragtime","Ska Jazz","Skiffle (also Folk)","Smooth Jazz","Soul Jazz","Swing Jazz","Straight-Ahead Jazz","Trad Jazz","Third Stream","Jazz-Funk","Free Jazz","West Coast Jazz"],metal:["Heavy Metal","Speed Metal","Thrash Metal","Power Metal","Death Metal","Black Metal","Pagan Metal","Viking Metal","Folk Metal","Symphonic Metal","Gothic Metal","Glam Metal","Hair Metal","Doom Metal","Groove Metal","Industrial Metal","Modern Metal","Neoclassical Metal","New Wave Of British Heavy Metal","Post Metal","Progressive Metal","Avantgarde Metal","Sludge","Djent","Drone","Kawaii Metal","Pirate Metal","Nu Metal","Neue Deutsche Härte","Math Metal","Crossover","Grindcore","Hardcore","Metalcore","Deathcore","Post Hardcore","Mathcore"],folk:["American Folk Revival","Anti - Folk","British Folk Revival","Contemporary Folk","Filk Music","Freak Folk","Indie Folk","Industrial Folk","Neofolk","Progressive Folk","Psychedelic Folk","Sung Poetry","Techno - Folk","Folk Rock","Old-time Music","Bluegrass","Appalachian","Roots Revival","Celtic","Indie Folk"],pop:["Adult Contemporary","Arab Pop","Baroque","Britpop","Bubblegum Pop","Chamber Pop","Chanson","Christian Pop","Classical Crossover","Europop","Austropop","Balkan Pop","French Pop","Korean Pop","Japanese Pop","Chinese Pop","Latin Pop","Laïkó","Nederpop","Russian Pop","Dance Pop","Dream Pop","Electro Pop","Iranian Pop","Jangle Pop","Latin Ballad","Levenslied","Louisiana Swamp Pop","Mexican Pop","Motorpop","New Romanticism","Orchestral Pop","Pop Rap","Popera","Pop / Rock","Pop Punk","Power Pop","Psychedelic Pop","Russian Pop","Schlager","Soft Rock","Sophisti - Pop","Space Age Pop","Sunshine Pop","Surf Pop","Synthpop","Teen Pop","Traditional Pop Music","Turkish Pop","Vispop","Wonky Pop"],"r&b":["(Carolina) Beach Music","Contemporary R & B","Disco","Doo Wop","Funk","Modern Soul","Motown","Neo - Soul","Northern Soul","Psychedelic Soul","Quiet Storm","Soul","Soul Blues","Southern Soul"],reggae:["2 - Tone","Dub","Roots Reggae","Reggae Fusion","Reggae en Español","Spanish Reggae","Reggae 110","Reggae Bultrón","Romantic Flow","Lovers Rock","Raggamuffin","Ragga","Dancehall","Ska"],rock:["Acid Rock","Adult - Oriented Rock","Afro Punk","Adult Alternative","Alternative Rock","American Traditional Rock","Anatolian Rock","Arena Rock","Art Rock","Blues - Rock","British Invasion","Cock Rock","Death Metal / Black Metal","Doom Metal","Glam Rock","Gothic Metal","Grind Core","Hair Metal","Hard Rock","Math Metal","Math Rock","Metal","Metal Core","Noise Rock","Jam Bands","Post Punk","Post Rock","Prog - Rock / Art Rock","Progressive Metal","Psychedelic","Rock & Roll","Rockabilly","Roots Rock","Singer / Songwriter","Southern Rock","Spazzcore","Stoner Metal","Surf","Technical Death Metal","Tex - Mex","Thrash Metal","Time Lord Rock(Trock)","Trip - hop","Yacht Rock","School House Rock"],"hip-hop":["Alternative Rap","Avant - Garde","Bounce","Chap Hop","Christian Hip Hop","Conscious Hip Hop","Country - Rap","Grunk","Crunkcore","Cumbia Rap","Dirty South","East Coast","Brick City Club","Hardcore Hip Hop","Mafioso Rap","New Jersey Hip Hop","Freestyle Rap","G - Funk","Gangsta Rap","Golden Age","Grime","Hardcore Rap","Hip - Hop","Hip Pop","Horrorcore","Hyphy","Industrial Hip Hop","Instrumental Hip Hop","Jazz Rap","Latin Rap","Low Bap","Lyrical Hip Hop","Merenrap","Midwest Hip Hop","Chicago Hip Hop","Detroit Hip Hop","Horrorcore","St.Louis Hip Hop","Twin Cities Hip Hop","Motswako","Nerdcore","New Jack Swing","New School Hip Hop","Old School Rap","Rap","Trap","Turntablism","Underground Rap","West Coast Rap","East Coast Rap","Trap","UK Grime","Hyphy","Emo-rap","Cloud rap","G-funk","Boom Bap","Mumble","Drill","UK Drill","Soundcloud Rap","Lo-fi"],punk:["Afro-punk","Anarcho punk","Art punk","Christian punk","Crust punk","Deathrock","Egg punk","Garage punk","Glam punk","Hardcore punk","Horror punk","Incelcore/e-punk","Oi!","Peace punk","Punk pathetique","Queercore","Riot Grrrl","Skate punk","Street punk","Taqwacore","Trallpunk"],disco:["Nu-disco","Disco-funk","Hi-NRG","Italo Disco","Eurodisco","Boogie","Space Disco","Post-disco","Electro Disco","Disco House","Disco Pop","Soulful House"],funk:["Funk Rock","P-Funk (Parliament-Funkadelic)","Psychedelic Funk","Funk Metal","Electro-Funk","Go-go","Boogie-Funk","Jazz-Funk","Soul-Funk","Funky Disco","Nu-Funk","Afrobeat","Latin Funk","G-Funk","Acid Jazz","Funktronica","Folk-Funk","Space Funk","Ambient Funk","Hard Funk","Fusion Funk"],techno:["Acid Techno","Ambient Techno","Detroit Techno","Dub Techno","Minimal Techno","Industrial Techno","Hard Techno","Trance","Progressive Techno","Tech House","Electronica","Breakbeat Techno","Electro Techno","Melodic Techno","Experimental Techno","Dark Techno","Ebm","Hypnotic Techno","Psychedelic Techno","Rave Techno","Techno-Pop"],indie:["Indie Rock","Indie Pop","Indie Folk","Indie Electronic","Indie Punk","Indie Hip-Hop","Dream Pop","Shoegaze","Lo-fi","Chillwave","Freak Folk","Noise Pop","Math Rock","Post-Punk","Garage Rock","Experimental Indie","Surf Rock","Alternative Country","Indie Soul","Art Rock","Indie R&B","Indietronica","Emo","Post-Rock","Indie Pop-Rock","Indie Synthpop","Noise Rock","Psych Folk","Indie Blues"],gospel:["Traditional Gospel","Contemporary Gospel","Southern Gospel","Black Gospel","Urban Contemporary Gospel","Gospel Blues","Bluegrass Gospel","Country Gospel","Praise and Worship","Christian Hip-Hop","Gospel Jazz","Reggae Gospel","African Gospel","Latin Gospel","R&B Gospel","Gospel Choir","Acappella Gospel","Instrumental Gospel","Gospel Rap"],world:["African","Arabic","Asian","Caribbean","Celtic","European","Latin American","Middle Eastern","Native American","Polynesian","Reggae","Ska","Salsa","Flamenco","Bossa Nova","Tango","Fado","Klezmer","Balkan","Afrobeat","Mongolian Throat Singing","Indian Classical","Gamelan","Sufi Music","Zydeco","Kora Music","Andean Music","Irish Traditional","Gypsy Jazz","Bollywood","Bhangra","Jawaiian","Hawaiian Slack Key Guitar","Calypso","Cuban Son","Taiko Drumming","African Highlife","Merengue","Tuvan Throat Singing"]},emojis:{smileys_and_emotion:["0x1f600","0x1f603","0x1f604","0x1f601","0x1f606","0x1f605","0x1f923","0x1f602","0x1f642","0x1f643","0x1fae0","0x1f609","0x1f60a","0x1f607","0x1f970","0x1f60d","0x1f929","0x1f618","0x1f617","0x263a","0x1f61a","0x1f619","0x1f972","0x1f60b","0x1f61b","0x1f61c","0x1f92a","0x1f61d","0x1f911","0x1f917","0x1f92d","0x1fae2","0x1fae3","0x1f92b","0x1f914","0x1fae1","0x1f910","0x1f928","0x1f610","0x1f611","0x1f636","0x1fae5","0x1f636","0x200d","0x1f32b","0xfe0f","0x1f60f","0x1f612","0x1f644","0x1f62c","0x1f62e","0x200d","0x1f4a8","0x1f925","0x1fae8","0x1f642","0x200d","0x2194","0xfe0f","0x1f642","0x200d","0x2195","0xfe0f","0x1f60c","0x1f614","0x1f62a","0x1f924","0x1f634","0x1f637","0x1f912","0x1f915","0x1f922","0x1f92e","0x1f927","0x1f975","0x1f976","0x1f974","0x1f635","0x1f635","0x200d","0x1f4ab","0x1f92f","0x1f920","0x1f973","0x1f978","0x1f60e","0x1f913","0x1f9d0","0x1f615","0x1fae4","0x1f61f","0x1f641","0x2639","0x1f62e","0x1f62f","0x1f632","0x1f633","0x1f97a","0x1f979","0x1f626","0x1f627","0x1f628","0x1f630","0x1f625","0x1f622","0x1f62d","0x1f631","0x1f616","0x1f623","0x1f61e","0x1f613","0x1f629","0x1f62b","0x1f971","0x1f624","0x1f621","0x1f620","0x1f92c","0x1f608","0x1f47f","0x1f480","0x2620","0x1f4a9","0x1f921","0x1f479","0x1f47a","0x1f47b","0x1f47d","0x1f47e","0x1f916","0x1f63a","0x1f638","0x1f639","0x1f63b","0x1f63c","0x1f63d","0x1f640","0x1f63f","0x1f63e","0x1f648","0x1f649","0x1f64a","0x1f48c","0x1f498","0x1f49d","0x1f496","0x1f497","0x1f493","0x1f49e","0x1f495","0x1f49f","0x2763","0x1f494","0x2764","0xfe0f","0x200d","0x1f525","0x2764","0xfe0f","0x200d","0x1fa79","0x2764","0x1fa77","0x1f9e1","0x1f49b","0x1f49a","0x1f499","0x1fa75","0x1f49c","0x1f90e","0x1f5a4","0x1fa76","0x1f90d","0x1f48b","0x1f4af","0x1f4a2","0x1f4a5","0x1f4ab","0x1f4a6","0x1f4a8","0x1f573","0x1f4ac","0x1f441","0xfe0f","0x200d","0x1f5e8","0xfe0f","0x1f5e8","0x1f5ef","0x1f4ad","0x1f4a4"],people_and_body:["0x1f44b","0x1f91a","0x1f590","0x270b","0x1f596","0x1faf1","0x1faf2","0x1faf3","0x1faf4","0x1faf7","0x1faf8","0x1f44c","0x1f90c","0x1f90f","0x270c","0x1f91e","0x1faf0","0x1f91f","0x1f918","0x1f919","0x1f448","0x1f449","0x1f446","0x1f595","0x1f447","0x261d","0x1faf5","0x1f44d","0x1f44e","0x270a","0x1f44a","0x1f91b","0x1f91c","0x1f44f","0x1f64c","0x1faf6","0x1f450","0x1f932","0x1f91d","0x1f64f","0x270d","0x1f485","0x1f933","0x1f4aa","0x1f9be","0x1f9bf","0x1f9b5","0x1f9b6","0x1f442","0x1f9bb","0x1f443","0x1f9e0","0x1fac0","0x1fac1","0x1f9b7","0x1f9b4","0x1f440","0x1f441","0x1f445","0x1f444","0x1fae6","0x1f476","0x1f9d2","0x1f466","0x1f467","0x1f9d1","0x1f471","0x1f468","0x1f9d4","0x1f9d4","0x200d","0x2642","0xfe0f","0x1f9d4","0x200d","0x2640","0xfe0f","0x1f468","0x200d","0x1f9b0","0x1f468","0x200d","0x1f9b1","0x1f468","0x200d","0x1f9b3","0x1f468","0x200d","0x1f9b2","0x1f469","0x1f469","0x200d","0x1f9b0","0x1f9d1","0x200d","0x1f9b0","0x1f469","0x200d","0x1f9b1","0x1f9d1","0x200d","0x1f9b1","0x1f469","0x200d","0x1f9b3","0x1f9d1","0x200d","0x1f9b3","0x1f469","0x200d","0x1f9b2","0x1f9d1","0x200d","0x1f9b2","0x1f471","0x200d","0x2640","0xfe0f","0x1f471","0x200d","0x2642","0xfe0f","0x1f9d3","0x1f474","0x1f475","0x1f64d","0x1f64d","0x200d","0x2642","0xfe0f","0x1f64d","0x200d","0x2640","0xfe0f","0x1f64e","0x1f64e","0x200d","0x2642","0xfe0f","0x1f64e","0x200d","0x2640","0xfe0f","0x1f645","0x1f645","0x200d","0x2642","0xfe0f","0x1f645","0x200d","0x2640","0xfe0f","0x1f646","0x1f646","0x200d","0x2642","0xfe0f","0x1f646","0x200d","0x2640","0xfe0f","0x1f481","0x1f481","0x200d","0x2642","0xfe0f","0x1f481","0x200d","0x2640","0xfe0f","0x1f64b","0x1f64b","0x200d","0x2642","0xfe0f","0x1f64b","0x200d","0x2640","0xfe0f","0x1f9cf","0x1f9cf","0x200d","0x2642","0xfe0f","0x1f9cf","0x200d","0x2640","0xfe0f","0x1f647","0x1f647","0x200d","0x2642","0xfe0f","0x1f647","0x200d","0x2640","0xfe0f","0x1f926","0x1f926","0x200d","0x2642","0xfe0f","0x1f926","0x200d","0x2640","0xfe0f","0x1f937","0x1f937","0x200d","0x2642","0xfe0f","0x1f937","0x200d","0x2640","0xfe0f","0x1f9d1","0x200d","0x2695","0xfe0f","0x1f468","0x200d","0x2695","0xfe0f","0x1f469","0x200d","0x2695","0xfe0f","0x1f9d1","0x200d","0x1f393","0x1f468","0x200d","0x1f393","0x1f469","0x200d","0x1f393","0x1f9d1","0x200d","0x1f3eb","0x1f468","0x200d","0x1f3eb","0x1f469","0x200d","0x1f3eb","0x1f9d1","0x200d","0x2696","0xfe0f","0x1f468","0x200d","0x2696","0xfe0f","0x1f469","0x200d","0x2696","0xfe0f","0x1f9d1","0x200d","0x1f33e","0x1f468","0x200d","0x1f33e","0x1f469","0x200d","0x1f33e","0x1f9d1","0x200d","0x1f373","0x1f468","0x200d","0x1f373","0x1f469","0x200d","0x1f373","0x1f9d1","0x200d","0x1f527","0x1f468","0x200d","0x1f527","0x1f469","0x200d","0x1f527","0x1f9d1","0x200d","0x1f3ed","0x1f468","0x200d","0x1f3ed","0x1f469","0x200d","0x1f3ed","0x1f9d1","0x200d","0x1f4bc","0x1f468","0x200d","0x1f4bc","0x1f469","0x200d","0x1f4bc","0x1f9d1","0x200d","0x1f52c","0x1f468","0x200d","0x1f52c","0x1f469","0x200d","0x1f52c","0x1f9d1","0x200d","0x1f4bb","0x1f468","0x200d","0x1f4bb","0x1f469","0x200d","0x1f4bb","0x1f9d1","0x200d","0x1f3a4","0x1f468","0x200d","0x1f3a4","0x1f469","0x200d","0x1f3a4","0x1f9d1","0x200d","0x1f3a8","0x1f468","0x200d","0x1f3a8","0x1f469","0x200d","0x1f3a8","0x1f9d1","0x200d","0x2708","0xfe0f","0x1f468","0x200d","0x2708","0xfe0f","0x1f469","0x200d","0x2708","0xfe0f","0x1f9d1","0x200d","0x1f680","0x1f468","0x200d","0x1f680","0x1f469","0x200d","0x1f680","0x1f9d1","0x200d","0x1f692","0x1f468","0x200d","0x1f692","0x1f469","0x200d","0x1f692","0x1f46e","0x1f46e","0x200d","0x2642","0xfe0f","0x1f46e","0x200d","0x2640","0xfe0f","0x1f575","0x1f575","0xfe0f","0x200d","0x2642","0xfe0f","0x1f575","0xfe0f","0x200d","0x2640","0xfe0f","0x1f482","0x1f482","0x200d","0x2642","0xfe0f","0x1f482","0x200d","0x2640","0xfe0f","0x1f977","0x1f477","0x1f477","0x200d","0x2642","0xfe0f","0x1f477","0x200d","0x2640","0xfe0f","0x1fac5","0x1f934","0x1f478","0x1f473","0x1f473","0x200d","0x2642","0xfe0f","0x1f473","0x200d","0x2640","0xfe0f","0x1f472","0x1f9d5","0x1f935","0x1f935","0x200d","0x2642","0xfe0f","0x1f935","0x200d","0x2640","0xfe0f","0x1f470","0x1f470","0x200d","0x2642","0xfe0f","0x1f470","0x200d","0x2640","0xfe0f","0x1f930","0x1fac3","0x1fac4","0x1f931","0x1f469","0x200d","0x1f37c","0x1f468","0x200d","0x1f37c","0x1f9d1","0x200d","0x1f37c","0x1f47c","0x1f385","0x1f936","0x1f9d1","0x200d","0x1f384","0x1f9b8","0x1f9b8","0x200d","0x2642","0xfe0f","0x1f9b8","0x200d","0x2640","0xfe0f","0x1f9b9","0x1f9b9","0x200d","0x2642","0xfe0f","0x1f9b9","0x200d","0x2640","0xfe0f","0x1f9d9","0x1f9d9","0x200d","0x2642","0xfe0f","0x1f9d9","0x200d","0x2640","0xfe0f","0x1f9da","0x1f9da","0x200d","0x2642","0xfe0f","0x1f9da","0x200d","0x2640","0xfe0f","0x1f9db","0x1f9db","0x200d","0x2642","0xfe0f","0x1f9db","0x200d","0x2640","0xfe0f","0x1f9dc","0x1f9dc","0x200d","0x2642","0xfe0f","0x1f9dc","0x200d","0x2640","0xfe0f","0x1f9dd","0x1f9dd","0x200d","0x2642","0xfe0f","0x1f9dd","0x200d","0x2640","0xfe0f","0x1f9de","0x1f9de","0x200d","0x2642","0xfe0f","0x1f9de","0x200d","0x2640","0xfe0f","0x1f9df","0x1f9df","0x200d","0x2642","0xfe0f","0x1f9df","0x200d","0x2640","0xfe0f","0x1f9cc","0x1f486","0x1f486","0x200d","0x2642","0xfe0f","0x1f486","0x200d","0x2640","0xfe0f","0x1f487","0x1f487","0x200d","0x2642","0xfe0f","0x1f487","0x200d","0x2640","0xfe0f","0x1f6b6","0x1f6b6","0x200d","0x2642","0xfe0f","0x1f6b6","0x200d","0x2640","0xfe0f","0x1f6b6","0x200d","0x27a1","0xfe0f","0x1f6b6","0x200d","0x2640","0xfe0f","0x200d","0x27a1","0xfe0f","0x1f6b6","0x200d","0x2642","0xfe0f","0x200d","0x27a1","0xfe0f","0x1f9cd","0x1f9cd","0x200d","0x2642","0xfe0f","0x1f9cd","0x200d","0x2640","0xfe0f","0x1f9ce","0x1f9ce","0x200d","0x2642","0xfe0f","0x1f9ce","0x200d","0x2640","0xfe0f","0x1f9ce","0x200d","0x27a1","0xfe0f","0x1f9ce","0x200d","0x2640","0xfe0f","0x200d","0x27a1","0xfe0f","0x1f9ce","0x200d","0x2642","0xfe0f","0x200d","0x27a1","0xfe0f","0x1f9d1","0x200d","0x1f9af","0x1f9d1","0x200d","0x1f9af","0x200d","0x27a1","0xfe0f","0x1f468","0x200d","0x1f9af","0x1f468","0x200d","0x1f9af","0x200d","0x27a1","0xfe0f","0x1f469","0x200d","0x1f9af","0x1f469","0x200d","0x1f9af","0x200d","0x27a1","0xfe0f","0x1f9d1","0x200d","0x1f9bc","0x1f9d1","0x200d","0x1f9bc","0x200d","0x27a1","0xfe0f","0x1f468","0x200d","0x1f9bc","0x1f468","0x200d","0x1f9bc","0x200d","0x27a1","0xfe0f","0x1f469","0x200d","0x1f9bc","0x1f469","0x200d","0x1f9bc","0x200d","0x27a1","0xfe0f","0x1f9d1","0x200d","0x1f9bd","0x1f9d1","0x200d","0x1f9bd","0x200d","0x27a1","0xfe0f","0x1f468","0x200d","0x1f9bd","0x1f468","0x200d","0x1f9bd","0x200d","0x27a1","0xfe0f","0x1f469","0x200d","0x1f9bd","0x1f469","0x200d","0x1f9bd","0x200d","0x27a1","0xfe0f","0x1f3c3","0x1f3c3","0x200d","0x2642","0xfe0f","0x1f3c3","0x200d","0x2640","0xfe0f","0x1f3c3","0x200d","0x27a1","0xfe0f","0x1f3c3","0x200d","0x2640","0xfe0f","0x200d","0x27a1","0xfe0f","0x1f3c3","0x200d","0x2642","0xfe0f","0x200d","0x27a1","0xfe0f","0x1f483","0x1f57a","0x1f574","0x1f46f","0x1f46f","0x200d","0x2642","0xfe0f","0x1f46f","0x200d","0x2640","0xfe0f","0x1f9d6","0x1f9d6","0x200d","0x2642","0xfe0f","0x1f9d6","0x200d","0x2640","0xfe0f","0x1f9d7","0x1f9d7","0x200d","0x2642","0xfe0f","0x1f9d7","0x200d","0x2640","0xfe0f","0x1f93a","0x1f3c7","0x26f7","0x1f3c2","0x1f3cc","0x1f3cc","0xfe0f","0x200d","0x2642","0xfe0f","0x1f3cc","0xfe0f","0x200d","0x2640","0xfe0f","0x1f3c4","0x1f3c4","0x200d","0x2642","0xfe0f","0x1f3c4","0x200d","0x2640","0xfe0f","0x1f6a3","0x1f6a3","0x200d","0x2642","0xfe0f","0x1f6a3","0x200d","0x2640","0xfe0f","0x1f3ca","0x1f3ca","0x200d","0x2642","0xfe0f","0x1f3ca","0x200d","0x2640","0xfe0f","0x26f9","0x26f9","0xfe0f","0x200d","0x2642","0xfe0f","0x26f9","0xfe0f","0x200d","0x2640","0xfe0f","0x1f3cb","0x1f3cb","0xfe0f","0x200d","0x2642","0xfe0f","0x1f3cb","0xfe0f","0x200d","0x2640","0xfe0f","0x1f6b4","0x1f6b4","0x200d","0x2642","0xfe0f","0x1f6b4","0x200d","0x2640","0xfe0f","0x1f6b5","0x1f6b5","0x200d","0x2642","0xfe0f","0x1f6b5","0x200d","0x2640","0xfe0f","0x1f938","0x1f938","0x200d","0x2642","0xfe0f","0x1f938","0x200d","0x2640","0xfe0f","0x1f93c","0x1f93c","0x200d","0x2642","0xfe0f","0x1f93c","0x200d","0x2640","0xfe0f","0x1f93d","0x1f93d","0x200d","0x2642","0xfe0f","0x1f93d","0x200d","0x2640","0xfe0f","0x1f93e","0x1f93e","0x200d","0x2642","0xfe0f","0x1f93e","0x200d","0x2640","0xfe0f","0x1f939","0x1f939","0x200d","0x2642","0xfe0f","0x1f939","0x200d","0x2640","0xfe0f","0x1f9d8","0x1f9d8","0x200d","0x2642","0xfe0f","0x1f9d8","0x200d","0x2640","0xfe0f","0x1f6c0","0x1f6cc","0x1f9d1","0x200d","0x1f91d","0x200d","0x1f9d1","0x1f46d","0x1f46b","0x1f46c","0x1f48f","0x1f469","0x200d","0x2764","0xfe0f","0x200d","0x1f48b","0x200d","0x1f468","0x1f468","0x200d","0x2764","0xfe0f","0x200d","0x1f48b","0x200d","0x1f468","0x1f469","0x200d","0x2764","0xfe0f","0x200d","0x1f48b","0x200d","0x1f469","0x1f491","0x1f469","0x200d","0x2764","0xfe0f","0x200d","0x1f468","0x1f468","0x200d","0x2764","0xfe0f","0x200d","0x1f468","0x1f469","0x200d","0x2764","0xfe0f","0x200d","0x1f469","0x1f468","0x200d","0x1f469","0x200d","0x1f466","0x1f468","0x200d","0x1f469","0x200d","0x1f467","0x1f468","0x200d","0x1f469","0x200d","0x1f467","0x200d","0x1f466","0x1f468","0x200d","0x1f469","0x200d","0x1f466","0x200d","0x1f466","0x1f468","0x200d","0x1f469","0x200d","0x1f467","0x200d","0x1f467","0x1f468","0x200d","0x1f468","0x200d","0x1f466","0x1f468","0x200d","0x1f468","0x200d","0x1f467","0x1f468","0x200d","0x1f468","0x200d","0x1f467","0x200d","0x1f466","0x1f468","0x200d","0x1f468","0x200d","0x1f466","0x200d","0x1f466","0x1f468","0x200d","0x1f468","0x200d","0x1f467","0x200d","0x1f467","0x1f469","0x200d","0x1f469","0x200d","0x1f466","0x1f469","0x200d","0x1f469","0x200d","0x1f467","0x1f469","0x200d","0x1f469","0x200d","0x1f467","0x200d","0x1f466","0x1f469","0x200d","0x1f469","0x200d","0x1f466","0x200d","0x1f466","0x1f469","0x200d","0x1f469","0x200d","0x1f467","0x200d","0x1f467","0x1f468","0x200d","0x1f466","0x1f468","0x200d","0x1f466","0x200d","0x1f466","0x1f468","0x200d","0x1f467","0x1f468","0x200d","0x1f467","0x200d","0x1f466","0x1f468","0x200d","0x1f467","0x200d","0x1f467","0x1f469","0x200d","0x1f466","0x1f469","0x200d","0x1f466","0x200d","0x1f466","0x1f469","0x200d","0x1f467","0x1f469","0x200d","0x1f467","0x200d","0x1f466","0x1f469","0x200d","0x1f467","0x200d","0x1f467","0x1f5e3","0x1f464","0x1f465","0x1fac2","0x1f46a","0x1f9d1","0x200d","0x1f9d1","0x200d","0x1f9d2","0x1f9d1","0x200d","0x1f9d1","0x200d","0x1f9d2","0x200d","0x1f9d2","0x1f9d1","0x200d","0x1f9d2","0x1f9d1","0x200d","0x1f9d2","0x200d","0x1f9d2","0x1f463"],animals_and_nature:["0x1f435","0x1f412","0x1f98d","0x1f9a7","0x1f436","0x1f415","0x1f9ae","0x1f415","0x200d","0x1f9ba","0x1f429","0x1f43a","0x1f98a","0x1f99d","0x1f431","0x1f408","0x1f408","0x200d","0x2b1b","0x1f981","0x1f42f","0x1f405","0x1f406","0x1f434","0x1face","0x1facf","0x1f40e","0x1f984","0x1f993","0x1f98c","0x1f9ac","0x1f42e","0x1f402","0x1f403","0x1f404","0x1f437","0x1f416","0x1f417","0x1f43d","0x1f40f","0x1f411","0x1f410","0x1f42a","0x1f42b","0x1f999","0x1f992","0x1f418","0x1f9a3","0x1f98f","0x1f99b","0x1f42d","0x1f401","0x1f400","0x1f439","0x1f430","0x1f407","0x1f43f","0x1f9ab","0x1f994","0x1f987","0x1f43b","0x1f43b","0x200d","0x2744","0xfe0f","0x1f428","0x1f43c","0x1f9a5","0x1f9a6","0x1f9a8","0x1f998","0x1f9a1","0x1f43e","0x1f983","0x1f414","0x1f413","0x1f423","0x1f424","0x1f425","0x1f426","0x1f427","0x1f54a","0x1f985","0x1f986","0x1f9a2","0x1f989","0x1f9a4","0x1fab6","0x1f9a9","0x1f99a","0x1f99c","0x1fabd","0x1f426","0x200d","0x2b1b","0x1fabf","0x1f426","0x200d","0x1f525","0x1f438","0x1f40a","0x1f422","0x1f98e","0x1f40d","0x1f432","0x1f409","0x1f995","0x1f996","0x1f433","0x1f40b","0x1f42c","0x1f9ad","0x1f41f","0x1f420","0x1f421","0x1f988","0x1f419","0x1f41a","0x1fab8","0x1fabc","0x1f40c","0x1f98b","0x1f41b","0x1f41c","0x1f41d","0x1fab2","0x1f41e","0x1f997","0x1fab3","0x1f577","0x1f578","0x1f982","0x1f99f","0x1fab0","0x1fab1","0x1f9a0","0x1f490","0x1f338","0x1f4ae","0x1fab7","0x1f3f5","0x1f339","0x1f940","0x1f33a","0x1f33b","0x1f33c","0x1f337","0x1fabb","0x1f331","0x1fab4","0x1f332","0x1f333","0x1f334","0x1f335","0x1f33e","0x1f33f","0x2618","0x1f340","0x1f341","0x1f342","0x1f343","0x1fab9","0x1faba","0x1f344"],food_and_drink:["0x1f347","0x1f348","0x1f349","0x1f34a","0x1f34b","0x1f34b","0x200d","0x1f7e9","0x1f34c","0x1f34d","0x1f96d","0x1f34e","0x1f34f","0x1f350","0x1f351","0x1f352","0x1f353","0x1fad0","0x1f95d","0x1f345","0x1fad2","0x1f965","0x1f951","0x1f346","0x1f954","0x1f955","0x1f33d","0x1f336","0x1fad1","0x1f952","0x1f96c","0x1f966","0x1f9c4","0x1f9c5","0x1f95c","0x1fad8","0x1f330","0x1fada","0x1fadb","0x1f344","0x200d","0x1f7eb","0x1f35e","0x1f950","0x1f956","0x1fad3","0x1f968","0x1f96f","0x1f95e","0x1f9c7","0x1f9c0","0x1f356","0x1f357","0x1f969","0x1f953","0x1f354","0x1f35f","0x1f355","0x1f32d","0x1f96a","0x1f32e","0x1f32f","0x1fad4","0x1f959","0x1f9c6","0x1f95a","0x1f373","0x1f958","0x1f372","0x1fad5","0x1f963","0x1f957","0x1f37f","0x1f9c8","0x1f9c2","0x1f96b","0x1f371","0x1f358","0x1f359","0x1f35a","0x1f35b","0x1f35c","0x1f35d","0x1f360","0x1f362","0x1f363","0x1f364","0x1f365","0x1f96e","0x1f361","0x1f95f","0x1f960","0x1f961","0x1f980","0x1f99e","0x1f990","0x1f991","0x1f9aa","0x1f366","0x1f367","0x1f368","0x1f369","0x1f36a","0x1f382","0x1f370","0x1f9c1","0x1f967","0x1f36b","0x1f36c","0x1f36d","0x1f36e","0x1f36f","0x1f37c","0x1f95b","0x2615","0x1fad6","0x1f375","0x1f376","0x1f37e","0x1f377","0x1f378","0x1f379","0x1f37a","0x1f37b","0x1f942","0x1f943","0x1fad7","0x1f964","0x1f9cb","0x1f9c3","0x1f9c9","0x1f9ca","0x1f962","0x1f37d","0x1f374","0x1f944","0x1f52a","0x1fad9","0x1f3fa"],travel_and_places:["0x1f30d","0x1f30e","0x1f30f","0x1f310","0x1f5fa","0x1f5fe","0x1f9ed","0x1f3d4","0x26f0","0x1f30b","0x1f5fb","0x1f3d5","0x1f3d6","0x1f3dc","0x1f3dd","0x1f3de","0x1f3df","0x1f3db","0x1f3d7","0x1f9f1","0x1faa8","0x1fab5","0x1f6d6","0x1f3d8","0x1f3da","0x1f3e0","0x1f3e1","0x1f3e2","0x1f3e3","0x1f3e4","0x1f3e5","0x1f3e6","0x1f3e8","0x1f3e9","0x1f3ea","0x1f3eb","0x1f3ec","0x1f3ed","0x1f3ef","0x1f3f0","0x1f492","0x1f5fc","0x1f5fd","0x26ea","0x1f54c","0x1f6d5","0x1f54d","0x26e9","0x1f54b","0x26f2","0x26fa","0x1f301","0x1f303","0x1f3d9","0x1f304","0x1f305","0x1f306","0x1f307","0x1f309","0x2668","0x1f3a0","0x1f6dd","0x1f3a1","0x1f3a2","0x1f488","0x1f3aa","0x1f682","0x1f683","0x1f684","0x1f685","0x1f686","0x1f687","0x1f688","0x1f689","0x1f68a","0x1f69d","0x1f69e","0x1f68b","0x1f68c","0x1f68d","0x1f68e","0x1f690","0x1f691","0x1f692","0x1f693","0x1f694","0x1f695","0x1f696","0x1f697","0x1f698","0x1f699","0x1f6fb","0x1f69a","0x1f69b","0x1f69c","0x1f3ce","0x1f3cd","0x1f6f5","0x1f9bd","0x1f9bc","0x1f6fa","0x1f6b2","0x1f6f4","0x1f6f9","0x1f6fc","0x1f68f","0x1f6e3","0x1f6e4","0x1f6e2","0x26fd","0x1f6de","0x1f6a8","0x1f6a5","0x1f6a6","0x1f6d1","0x1f6a7","0x2693","0x1f6df","0x26f5","0x1f6f6","0x1f6a4","0x1f6f3","0x26f4","0x1f6e5","0x1f6a2","0x2708","0x1f6e9","0x1f6eb","0x1f6ec","0x1fa82","0x1f4ba","0x1f681","0x1f69f","0x1f6a0","0x1f6a1","0x1f6f0","0x1f680","0x1f6f8","0x1f6ce","0x1f9f3","0x231b","0x23f3","0x231a","0x23f0","0x23f1","0x23f2","0x1f570","0x1f55b","0x1f567","0x1f550","0x1f55c","0x1f551","0x1f55d","0x1f552","0x1f55e","0x1f553","0x1f55f","0x1f554","0x1f560","0x1f555","0x1f561","0x1f556","0x1f562","0x1f557","0x1f563","0x1f558","0x1f564","0x1f559","0x1f565","0x1f55a","0x1f566","0x1f311","0x1f312","0x1f313","0x1f314","0x1f315","0x1f316","0x1f317","0x1f318","0x1f319","0x1f31a","0x1f31b","0x1f31c","0x1f321","0x2600","0x1f31d","0x1f31e","0x1fa90","0x2b50","0x1f31f","0x1f320","0x1f30c","0x2601","0x26c5","0x26c8","0x1f324","0x1f325","0x1f326","0x1f327","0x1f328","0x1f329","0x1f32a","0x1f32b","0x1f32c","0x1f300","0x1f308","0x1f302","0x2602","0x2614","0x26f1","0x26a1","0x2744","0x2603","0x26c4","0x2604","0x1f525","0x1f4a7","0x1f30a"],activities:["0x1f383","0x1f384","0x1f386","0x1f387","0x1f9e8","0x2728","0x1f388","0x1f389","0x1f38a","0x1f38b","0x1f38d","0x1f38e","0x1f38f","0x1f390","0x1f391","0x1f9e7","0x1f380","0x1f381","0x1f397","0x1f39f","0x1f3ab","0x1f396","0x1f3c6","0x1f3c5","0x1f947","0x1f948","0x1f949","0x26bd","0x26be","0x1f94e","0x1f3c0","0x1f3d0","0x1f3c8","0x1f3c9","0x1f3be","0x1f94f","0x1f3b3","0x1f3cf","0x1f3d1","0x1f3d2","0x1f94d","0x1f3d3","0x1f3f8","0x1f94a","0x1f94b","0x1f945","0x26f3","0x26f8","0x1f3a3","0x1f93f","0x1f3bd","0x1f3bf","0x1f6f7","0x1f94c","0x1f3af","0x1fa80","0x1fa81","0x1f52b","0x1f3b1","0x1f52e","0x1fa84","0x1f3ae","0x1f579","0x1f3b0","0x1f3b2","0x1f9e9","0x1f9f8","0x1fa85","0x1faa9","0x1fa86","0x2660","0x2665","0x2666","0x2663","0x265f","0x1f0cf","0x1f004","0x1f3b4","0x1f3ad","0x1f5bc","0x1f3a8","0x1f9f5","0x1faa1","0x1f9f6","0x1faa2"],objects:["0x1f453","0x1f576","0x1f97d","0x1f97c","0x1f9ba","0x1f454","0x1f455","0x1f456","0x1f9e3","0x1f9e4","0x1f9e5","0x1f9e6","0x1f457","0x1f458","0x1f97b","0x1fa71","0x1fa72","0x1fa73","0x1f459","0x1f45a","0x1faad","0x1f45b","0x1f45c","0x1f45d","0x1f6cd","0x1f392","0x1fa74","0x1f45e","0x1f45f","0x1f97e","0x1f97f","0x1f460","0x1f461","0x1fa70","0x1f462","0x1faae","0x1f451","0x1f452","0x1f3a9","0x1f393","0x1f9e2","0x1fa96","0x26d1","0x1f4ff","0x1f484","0x1f48d","0x1f48e","0x1f507","0x1f508","0x1f509","0x1f50a","0x1f4e2","0x1f4e3","0x1f4ef","0x1f514","0x1f515","0x1f3bc","0x1f3b5","0x1f3b6","0x1f399","0x1f39a","0x1f39b","0x1f3a4","0x1f3a7","0x1f4fb","0x1f3b7","0x1fa97","0x1f3b8","0x1f3b9","0x1f3ba","0x1f3bb","0x1fa95","0x1f941","0x1fa98","0x1fa87","0x1fa88","0x1f4f1","0x1f4f2","0x260e","0x1f4de","0x1f4df","0x1f4e0","0x1f50b","0x1faab","0x1f50c","0x1f4bb","0x1f5a5","0x1f5a8","0x2328","0x1f5b1","0x1f5b2","0x1f4bd","0x1f4be","0x1f4bf","0x1f4c0","0x1f9ee","0x1f3a5","0x1f39e","0x1f4fd","0x1f3ac","0x1f4fa","0x1f4f7","0x1f4f8","0x1f4f9","0x1f4fc","0x1f50d","0x1f50e","0x1f56f","0x1f4a1","0x1f526","0x1f3ee","0x1fa94","0x1f4d4","0x1f4d5","0x1f4d6","0x1f4d7","0x1f4d8","0x1f4d9","0x1f4da","0x1f4d3","0x1f4d2","0x1f4c3","0x1f4dc","0x1f4c4","0x1f4f0","0x1f5de","0x1f4d1","0x1f516","0x1f3f7","0x1f4b0","0x1fa99","0x1f4b4","0x1f4b5","0x1f4b6","0x1f4b7","0x1f4b8","0x1f4b3","0x1f9fe","0x1f4b9","0x2709","0x1f4e7","0x1f4e8","0x1f4e9","0x1f4e4","0x1f4e5","0x1f4e6","0x1f4eb","0x1f4ea","0x1f4ec","0x1f4ed","0x1f4ee","0x1f5f3","0x270f","0x2712","0x1f58b","0x1f58a","0x1f58c","0x1f58d","0x1f4dd","0x1f4bc","0x1f4c1","0x1f4c2","0x1f5c2","0x1f4c5","0x1f4c6","0x1f5d2","0x1f5d3","0x1f4c7","0x1f4c8","0x1f4c9","0x1f4ca","0x1f4cb","0x1f4cc","0x1f4cd","0x1f4ce","0x1f587","0x1f4cf","0x1f4d0","0x2702","0x1f5c3","0x1f5c4","0x1f5d1","0x1f512","0x1f513","0x1f50f","0x1f510","0x1f511","0x1f5dd","0x1f528","0x1fa93","0x26cf","0x2692","0x1f6e0","0x1f5e1","0x2694","0x1f4a3","0x1fa83","0x1f3f9","0x1f6e1","0x1fa9a","0x1f527","0x1fa9b","0x1f529","0x2699","0x1f5dc","0x2696","0x1f9af","0x1f517","0x26d3","0xfe0f","0x200d","0x1f4a5","0x26d3","0x1fa9d","0x1f9f0","0x1f9f2","0x1fa9c","0x2697","0x1f9ea","0x1f9eb","0x1f9ec","0x1f52c","0x1f52d","0x1f4e1","0x1f489","0x1fa78","0x1f48a","0x1fa79","0x1fa7c","0x1fa7a","0x1fa7b","0x1f6aa","0x1f6d7","0x1fa9e","0x1fa9f","0x1f6cf","0x1f6cb","0x1fa91","0x1f6bd","0x1faa0","0x1f6bf","0x1f6c1","0x1faa4","0x1fa92","0x1f9f4","0x1f9f7","0x1f9f9","0x1f9fa","0x1f9fb","0x1faa3","0x1f9fc","0x1fae7","0x1faa5","0x1f9fd","0x1f9ef","0x1f6d2","0x1f6ac","0x26b0","0x1faa6","0x26b1","0x1f9ff","0x1faac","0x1f5ff","0x1faa7","0x1faaa"],symbols:["0x1f3e7","0x1f6ae","0x1f6b0","0x267f","0x1f6b9","0x1f6ba","0x1f6bb","0x1f6bc","0x1f6be","0x1f6c2","0x1f6c3","0x1f6c4","0x1f6c5","0x26a0","0x1f6b8","0x26d4","0x1f6ab","0x1f6b3","0x1f6ad","0x1f6af","0x1f6b1","0x1f6b7","0x1f4f5","0x1f51e","0x2622","0x2623","0x2b06","0x2197","0x27a1","0x2198","0x2b07","0x2199","0x2b05","0x2196","0x2195","0x2194","0x21a9","0x21aa","0x2934","0x2935","0x1f503","0x1f504","0x1f519","0x1f51a","0x1f51b","0x1f51c","0x1f51d","0x1f6d0","0x269b","0x1f549","0x2721","0x2638","0x262f","0x271d","0x2626","0x262a","0x262e","0x1f54e","0x1f52f","0x1faaf","0x2648","0x2649","0x264a","0x264b","0x264c","0x264d","0x264e","0x264f","0x2650","0x2651","0x2652","0x2653","0x26ce","0x1f500","0x1f501","0x1f502","0x25b6","0x23e9","0x23ed","0x23ef","0x25c0","0x23ea","0x23ee","0x1f53c","0x23eb","0x1f53d","0x23ec","0x23f8","0x23f9","0x23fa","0x23cf","0x1f3a6","0x1f505","0x1f506","0x1f4f6","0x1f6dc","0x1f4f3","0x1f4f4","0x2640","0x2642","0x26a7","0x2716","0x2795","0x2796","0x2797","0x1f7f0","0x267e","0x203c","0x2049","0x2753","0x2754","0x2755","0x2757","0x3030","0x1f4b1","0x1f4b2","0x2695","0x267b","0x269c","0x1f531","0x1f4db","0x1f530","0x2b55","0x2705","0x2611","0x2714","0x274c","0x274e","0x27b0","0x27bf","0x303d","0x2733","0x2734","0x2747","0x00a9","0x00ae","0x2122","0x0023","0xfe0f","0x20e3","0x002a","0xfe0f","0x20e3","0x0030","0xfe0f","0x20e3","0x0031","0xfe0f","0x20e3","0x0032","0xfe0f","0x20e3","0x0033","0xfe0f","0x20e3","0x0034","0xfe0f","0x20e3","0x0035","0xfe0f","0x20e3","0x0036","0xfe0f","0x20e3","0x0037","0xfe0f","0x20e3","0x0038","0xfe0f","0x20e3","0x0039","0xfe0f","0x20e3","0x1f51f","0x1f520","0x1f521","0x1f522","0x1f523","0x1f524","0x1f170","0x1f18e","0x1f171","0x1f191","0x1f192","0x1f193","0x2139","0x1f194","0x24c2","0x1f195","0x1f196","0x1f17e","0x1f197","0x1f17f","0x1f198","0x1f199","0x1f19a","0x1f201","0x1f202","0x1f237","0x1f236","0x1f22f","0x1f250","0x1f239","0x1f21a","0x1f232","0x1f251","0x1f238","0x1f234","0x1f233","0x3297","0x3299","0x1f23a","0x1f235","0x1f534","0x1f7e0","0x1f7e1","0x1f7e2","0x1f535","0x1f7e3","0x1f7e4","0x26ab","0x26aa","0x1f7e5","0x1f7e7","0x1f7e8","0x1f7e9","0x1f7e6","0x1f7ea","0x1f7eb","0x2b1b","0x2b1c","0x25fc","0x25fb","0x25fe","0x25fd","0x25aa","0x25ab","0x1f536","0x1f537","0x1f538","0x1f539","0x1f53a","0x1f53b","0x1f4a0","0x1f518","0x1f533","0x1f532"],flags:["0x1f3c1","0x1f6a9","0x1f38c","0x1f3f4","0x1f3f3","0x1f3f3","0xfe0f","0x200d","0x1f308","0x1f3f3","0xfe0f","0x200d","0x26a7","0xfe0f","0x1f3f4","0x200d","0x2620","0xfe0f","0x1f1e6","0x1f1e8","0x1f1e6","0x1f1e9","0x1f1e6","0x1f1ea","0x1f1e6","0x1f1eb","0x1f1e6","0x1f1ec","0x1f1e6","0x1f1ee","0x1f1e6","0x1f1f1","0x1f1e6","0x1f1f2","0x1f1e6","0x1f1f4","0x1f1e6","0x1f1f6","0x1f1e6","0x1f1f7","0x1f1e6","0x1f1f8","0x1f1e6","0x1f1f9","0x1f1e6","0x1f1fa","0x1f1e6","0x1f1fc","0x1f1e6","0x1f1fd","0x1f1e6","0x1f1ff","0x1f1e7","0x1f1e6","0x1f1e7","0x1f1e7","0x1f1e7","0x1f1e9","0x1f1e7","0x1f1ea","0x1f1e7","0x1f1eb","0x1f1e7","0x1f1ec","0x1f1e7","0x1f1ed","0x1f1e7","0x1f1ee","0x1f1e7","0x1f1ef","0x1f1e7","0x1f1f1","0x1f1e7","0x1f1f2","0x1f1e7","0x1f1f3","0x1f1e7","0x1f1f4","0x1f1e7","0x1f1f6","0x1f1e7","0x1f1f7","0x1f1e7","0x1f1f8","0x1f1e7","0x1f1f9","0x1f1e7","0x1f1fb","0x1f1e7","0x1f1fc","0x1f1e7","0x1f1fe","0x1f1e7","0x1f1ff","0x1f1e8","0x1f1e6","0x1f1e8","0x1f1e8","0x1f1e8","0x1f1e9","0x1f1e8","0x1f1eb","0x1f1e8","0x1f1ec","0x1f1e8","0x1f1ed","0x1f1e8","0x1f1ee","0x1f1e8","0x1f1f0","0x1f1e8","0x1f1f1","0x1f1e8","0x1f1f2","0x1f1e8","0x1f1f3","0x1f1e8","0x1f1f4","0x1f1e8","0x1f1f5","0x1f1e8","0x1f1f7","0x1f1e8","0x1f1fa","0x1f1e8","0x1f1fb","0x1f1e8","0x1f1fc","0x1f1e8","0x1f1fd","0x1f1e8","0x1f1fe","0x1f1e8","0x1f1ff","0x1f1e9","0x1f1ea","0x1f1e9","0x1f1ec","0x1f1e9","0x1f1ef","0x1f1e9","0x1f1f0","0x1f1e9","0x1f1f2","0x1f1e9","0x1f1f4","0x1f1e9","0x1f1ff","0x1f1ea","0x1f1e6","0x1f1ea","0x1f1e8","0x1f1ea","0x1f1ea","0x1f1ea","0x1f1ec","0x1f1ea","0x1f1ed","0x1f1ea","0x1f1f7","0x1f1ea","0x1f1f8","0x1f1ea","0x1f1f9","0x1f1ea","0x1f1fa","0x1f1eb","0x1f1ee","0x1f1eb","0x1f1ef","0x1f1eb","0x1f1f0","0x1f1eb","0x1f1f2","0x1f1eb","0x1f1f4","0x1f1eb","0x1f1f7","0x1f1ec","0x1f1e6","0x1f1ec","0x1f1e7","0x1f1ec","0x1f1e9","0x1f1ec","0x1f1ea","0x1f1ec","0x1f1eb","0x1f1ec","0x1f1ec","0x1f1ec","0x1f1ed","0x1f1ec","0x1f1ee","0x1f1ec","0x1f1f1","0x1f1ec","0x1f1f2","0x1f1ec","0x1f1f3","0x1f1ec","0x1f1f5","0x1f1ec","0x1f1f6","0x1f1ec","0x1f1f7","0x1f1ec","0x1f1f8","0x1f1ec","0x1f1f9","0x1f1ec","0x1f1fa","0x1f1ec","0x1f1fc","0x1f1ec","0x1f1fe","0x1f1ed","0x1f1f0","0x1f1ed","0x1f1f2","0x1f1ed","0x1f1f3","0x1f1ed","0x1f1f7","0x1f1ed","0x1f1f9","0x1f1ed","0x1f1fa","0x1f1ee","0x1f1e8","0x1f1ee","0x1f1e9","0x1f1ee","0x1f1ea","0x1f1ee","0x1f1f1","0x1f1ee","0x1f1f2","0x1f1ee","0x1f1f3","0x1f1ee","0x1f1f4","0x1f1ee","0x1f1f6","0x1f1ee","0x1f1f7","0x1f1ee","0x1f1f8","0x1f1ee","0x1f1f9","0x1f1ef","0x1f1ea","0x1f1ef","0x1f1f2","0x1f1ef","0x1f1f4","0x1f1ef","0x1f1f5","0x1f1f0","0x1f1ea","0x1f1f0","0x1f1ec","0x1f1f0","0x1f1ed","0x1f1f0","0x1f1ee","0x1f1f0","0x1f1f2","0x1f1f0","0x1f1f3","0x1f1f0","0x1f1f5","0x1f1f0","0x1f1f7","0x1f1f0","0x1f1fc","0x1f1f0","0x1f1fe","0x1f1f0","0x1f1ff","0x1f1f1","0x1f1e6","0x1f1f1","0x1f1e7","0x1f1f1","0x1f1e8","0x1f1f1","0x1f1ee","0x1f1f1","0x1f1f0","0x1f1f1","0x1f1f7","0x1f1f1","0x1f1f8","0x1f1f1","0x1f1f9","0x1f1f1","0x1f1fa","0x1f1f1","0x1f1fb","0x1f1f1","0x1f1fe","0x1f1f2","0x1f1e6","0x1f1f2","0x1f1e8","0x1f1f2","0x1f1e9","0x1f1f2","0x1f1ea","0x1f1f2","0x1f1eb","0x1f1f2","0x1f1ec","0x1f1f2","0x1f1ed","0x1f1f2","0x1f1f0","0x1f1f2","0x1f1f1","0x1f1f2","0x1f1f2","0x1f1f2","0x1f1f3","0x1f1f2","0x1f1f4","0x1f1f2","0x1f1f5","0x1f1f2","0x1f1f6","0x1f1f2","0x1f1f7","0x1f1f2","0x1f1f8","0x1f1f2","0x1f1f9","0x1f1f2","0x1f1fa","0x1f1f2","0x1f1fb","0x1f1f2","0x1f1fc","0x1f1f2","0x1f1fd","0x1f1f2","0x1f1fe","0x1f1f2","0x1f1ff","0x1f1f3","0x1f1e6","0x1f1f3","0x1f1e8","0x1f1f3","0x1f1ea","0x1f1f3","0x1f1eb","0x1f1f3","0x1f1ec","0x1f1f3","0x1f1ee","0x1f1f3","0x1f1f1","0x1f1f3","0x1f1f4","0x1f1f3","0x1f1f5","0x1f1f3","0x1f1f7","0x1f1f3","0x1f1fa","0x1f1f3","0x1f1ff","0x1f1f4","0x1f1f2","0x1f1f5","0x1f1e6","0x1f1f5","0x1f1ea","0x1f1f5","0x1f1eb","0x1f1f5","0x1f1ec","0x1f1f5","0x1f1ed","0x1f1f5","0x1f1f0","0x1f1f5","0x1f1f1","0x1f1f5","0x1f1f2","0x1f1f5","0x1f1f3","0x1f1f5","0x1f1f7","0x1f1f5","0x1f1f8","0x1f1f5","0x1f1f9","0x1f1f5","0x1f1fc","0x1f1f5","0x1f1fe","0x1f1f6","0x1f1e6","0x1f1f7","0x1f1ea","0x1f1f7","0x1f1f4","0x1f1f7","0x1f1f8","0x1f1f7","0x1f1fa","0x1f1f7","0x1f1fc","0x1f1f8","0x1f1e6","0x1f1f8","0x1f1e7","0x1f1f8","0x1f1e8","0x1f1f8","0x1f1e9","0x1f1f8","0x1f1ea","0x1f1f8","0x1f1ec","0x1f1f8","0x1f1ed","0x1f1f8","0x1f1ee","0x1f1f8","0x1f1ef","0x1f1f8","0x1f1f0","0x1f1f8","0x1f1f1","0x1f1f8","0x1f1f2","0x1f1f8","0x1f1f3","0x1f1f8","0x1f1f4","0x1f1f8","0x1f1f7","0x1f1f8","0x1f1f8","0x1f1f8","0x1f1f9","0x1f1f8","0x1f1fb","0x1f1f8","0x1f1fd","0x1f1f8","0x1f1fe","0x1f1f8","0x1f1ff","0x1f1f9","0x1f1e6","0x1f1f9","0x1f1e8","0x1f1f9","0x1f1e9","0x1f1f9","0x1f1eb","0x1f1f9","0x1f1ec","0x1f1f9","0x1f1ed","0x1f1f9","0x1f1ef","0x1f1f9","0x1f1f0","0x1f1f9","0x1f1f1","0x1f1f9","0x1f1f2","0x1f1f9","0x1f1f3","0x1f1f9","0x1f1f4","0x1f1f9","0x1f1f7","0x1f1f9","0x1f1f9","0x1f1f9","0x1f1fb","0x1f1f9","0x1f1fc","0x1f1f9","0x1f1ff","0x1f1fa","0x1f1e6","0x1f1fa","0x1f1ec","0x1f1fa","0x1f1f2","0x1f1fa","0x1f1f3","0x1f1fa","0x1f1f8","0x1f1fa","0x1f1fe","0x1f1fa","0x1f1ff","0x1f1fb","0x1f1e6","0x1f1fb","0x1f1e8","0x1f1fb","0x1f1ea","0x1f1fb","0x1f1ec","0x1f1fb","0x1f1ee","0x1f1fb","0x1f1f3","0x1f1fb","0x1f1fa","0x1f1fc","0x1f1eb","0x1f1fc","0x1f1f8","0x1f1fd","0x1f1f0","0x1f1fe","0x1f1ea","0x1f1fe","0x1f1f9","0x1f1ff","0x1f1e6","0x1f1ff","0x1f1f2","0x1f1ff","0x1f1fc","0x1f3f4","0xe0067","0xe0062","0xe0065","0xe006e","0xe0067","0xe007f","0x1f3f4","0xe0067","0xe0062","0xe0073","0xe0063","0xe0074","0xe007f","0x1f3f4","0xe0067","0xe0062","0xe0077","0xe006c","0xe0073","0xe007f"]}},v=Object.prototype.hasOwnProperty,x=Object.keys||function(n){var e=[];for(var t in n)v.call(n,t)&&e.push(t);return e};function k(n,e){var t=Array.isArray(n),a=e||(t?new Array(n.length):{});return t?function(n,e){for(var t=0,a=n.length;t0)return this.normal_pool(n);var e,t,a,i=n.mean,r=n.dev;do{e=(t=2*this.random()-1)*t+(a=2*this.random()-1)*a}while(e>=1);return r*(t*Math.sqrt(-2*Math.log(e)/e))+i},u.prototype.normal_pool=function(n){var e=0;do{var t=Math.round(this.normal({mean:n.mean,dev:n.dev}));if(t=0)return n.pool[t];e++}while(e<100);throw new RangeError("Chance: Your pool is too small for the given mean and standard deviation. Please adjust.")},u.prototype.radio=function(n){var e="";switch((n=d(n,{side:"?"})).side.toLowerCase()){case"east":case"e":e="W";break;case"west":case"w":e="K";break;default:e=this.character({pool:"KW"})}return e+this.character({alpha:!0,casing:"upper"})+this.character({alpha:!0,casing:"upper"})+this.character({alpha:!0,casing:"upper"})},u.prototype.set=function(n,e){"string"==typeof n?b[n]=e:b=k(n,b)},u.prototype.tv=function(n){return this.radio(n)},u.prototype.cnpj=function(){var n=this.n(this.natural,8,{max:9}),e=2+6*n[7]+7*n[6]+8*n[5]+9*n[4]+2*n[3]+3*n[2]+4*n[1]+5*n[0];(e=11-e%11)>=10&&(e=0);var t=2*e+3+7*n[7]+8*n[6]+9*n[5]+2*n[4]+3*n[3]+4*n[2]+5*n[1]+6*n[0];return(t=11-t%11)>=10&&(t=0),""+n[0]+n[1]+"."+n[2]+n[3]+n[4]+"."+n[5]+n[6]+n[7]+"/0001-"+e+t},u.prototype.emotion=function(){return this.pick(this.get("emotions"))},u.prototype.mersenne_twister=function(n){return new w(n)},u.prototype.blueimp_md5=function(){return new C};var w=function(n){void 0===n&&(n=Math.floor(Math.random()*Math.pow(10,13))),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_genrand(n)};w.prototype.init_genrand=function(n){for(this.mt[0]=n>>>0,this.mti=1;this.mti>>30,this.mt[this.mti]=(1812433253*((4294901760&n)>>>16)<<16)+1812433253*(65535&n)+this.mti,this.mt[this.mti]>>>=0},w.prototype.init_by_array=function(n,e){var t,a,i=1,r=0;for(this.init_genrand(19650218),t=this.N>e?this.N:e;t;t--)a=this.mt[i-1]^this.mt[i-1]>>>30,this.mt[i]=(this.mt[i]^(1664525*((4294901760&a)>>>16)<<16)+1664525*(65535&a))+n[r]+r,this.mt[i]>>>=0,r++,++i>=this.N&&(this.mt[0]=this.mt[this.N-1],i=1),r>=e&&(r=0);for(t=this.N-1;t;t--)a=this.mt[i-1]^this.mt[i-1]>>>30,this.mt[i]=(this.mt[i]^(1566083941*((4294901760&a)>>>16)<<16)+1566083941*(65535&a))-i,this.mt[i]>>>=0,++i>=this.N&&(this.mt[0]=this.mt[this.N-1],i=1);this.mt[0]=2147483648},w.prototype.genrand_int32=function(){var n,e=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var t;for(this.mti===this.N+1&&this.init_genrand(5489),t=0;t>>1^e[1&n];for(;t>>1^e[1&n];n=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^n>>>1^e[1&n],this.mti=0}return n=this.mt[this.mti++],n^=n>>>11,n^=n<<7&2636928640,n^=n<<15&4022730752,(n^=n>>>18)>>>0},w.prototype.genrand_int31=function(){return this.genrand_int32()>>>1},w.prototype.genrand_real1=function(){return this.genrand_int32()*(1/4294967295)},w.prototype.random=function(){return this.genrand_int32()*(1/4294967296)},w.prototype.genrand_real3=function(){return(this.genrand_int32()+.5)*(1/4294967296)},w.prototype.genrand_res53=function(){return(67108864*(this.genrand_int32()>>>5)+(this.genrand_int32()>>>6))*(1/9007199254740992)};var C=function(){};C.prototype.VERSION="1.0.1",C.prototype.safe_add=function(n,e){var t=(65535&n)+(65535&e);return(n>>16)+(e>>16)+(t>>16)<<16|65535&t},C.prototype.bit_roll=function(n,e){return n<>>32-e},C.prototype.md5_cmn=function(n,e,t,a,i,r){return this.safe_add(this.bit_roll(this.safe_add(this.safe_add(e,n),this.safe_add(a,r)),i),t)},C.prototype.md5_ff=function(n,e,t,a,i,r,s){return this.md5_cmn(e&t|~e&a,n,e,i,r,s)},C.prototype.md5_gg=function(n,e,t,a,i,r,s){return this.md5_cmn(e&a|t&~a,n,e,i,r,s)},C.prototype.md5_hh=function(n,e,t,a,i,r,s){return this.md5_cmn(e^t^a,n,e,i,r,s)},C.prototype.md5_ii=function(n,e,t,a,i,r,s){return this.md5_cmn(t^(e|~a),n,e,i,r,s)},C.prototype.binl_md5=function(n,e){n[e>>5]|=128<>>9<<4)]=e;var t,a,i,r,s,o=1732584193,l=-271733879,c=-1732584194,u=271733878;for(t=0;t>5]>>>e%32&255);return t},C.prototype.rstr2binl=function(n){var e,t=[];for(t[(n.length>>2)-1]=void 0,e=0;e>5]|=(255&n.charCodeAt(e/8))<16&&(i=this.binl_md5(i,8*n.length)),t=0;t<16;t+=1)r[t]=909522486^i[t],s[t]=1549556828^i[t];return a=this.binl_md5(r.concat(this.rstr2binl(e)),512+8*e.length),this.binl2rstr(this.binl_md5(s.concat(a),640))},C.prototype.rstr2hex=function(n){var e,t,a="0123456789abcdef",i="";for(t=0;t>>4&15)+a.charAt(15&e);return i},C.prototype.str2rstr_utf8=function(n){return unescape(encodeURIComponent(n))},C.prototype.raw_md5=function(n){return this.rstr_md5(this.str2rstr_utf8(n))},C.prototype.hex_md5=function(n){return this.rstr2hex(this.raw_md5(n))},C.prototype.raw_hmac_md5=function(n,e){return this.rstr_hmac_md5(this.str2rstr_utf8(n),this.str2rstr_utf8(e))},C.prototype.hex_hmac_md5=function(n,e){return this.rstr2hex(this.raw_hmac_md5(n,e))},C.prototype.md5=function(n,e,t){return e?t?this.raw_hmac_md5(e,n):this.hex_hmac_md5(e,n):t?this.raw_md5(n):this.hex_md5(n)},n.exports&&(e=n.exports=u),e.Chance=u,void 0===(t=function(){return u}.apply(e,[]))||(n.exports=t),"undefined"!=typeof importScripts&&(chance=new u,self.Chance=u),"object"==typeof window&&"object"==typeof window.document&&(window.Chance=u,window.chance=new u)}()},42:(n,e,t)=>{"use strict";t.r(e),t.d(e,{TRIES:()=>i,WORD_LENGTH:()=>a});const a=5,i=6}},e={};function t(a){var i=e[a];if(void 0!==i)return i.exports;var r=e[a]={exports:{}};return n[a](r,r.exports,t),r.exports}t.n=n=>{var e=n&&n.__esModule?()=>n.default:()=>n;return t.d(e,{a:e}),e},t.d=(n,e)=>{for(var a in e)t.o(e,a)&&!t.o(n,a)&&Object.defineProperty(n,a,{enumerable:!0,get:e[a]})},t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),t.o=(n,e)=>Object.prototype.hasOwnProperty.call(n,e),t.r=n=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})};var a={};(()=>{"use strict";t.d(a,{OC:()=>nm});var n=t(42);const e="aahed\naalii\naapas\naargh\naarti\nabaca\nabaci\naback\nabacs\nabaft\nabaht\nabaka\nabamp\naband\nabase\nabash\nabask\nabate\nabaya\nabbas\nabbed\nabbes\nabbey\nabbot\nabcee\nabeam\nabear\nabeat\nabeer\nabele\nabeng\nabers\nabets\nabeys\nabhor\nabide\nabies\nabius\nabjad\nabjud\nabled\nabler\nables\nablet\nablow\nabmho\nabnet\nabode\nabohm\naboil\naboma\naboon\nabord\nabore\naborn\nabort\nabout\nabove\nabram\nabray\nabrim\nabrin\nabris\nabsey\nabsit\nabuna\nabune\nabura\naburn\nabuse\nabuts\nabuzz\nabyes\nabysm\nabyss\nacais\nacara\nacari\naccas\naccha\naccoy\naccra\nacedy\nacene\nacerb\nacers\naceta\nachar\nached\nacher\naches\nachey\nachoo\nacids\nacidy\nacies\nacing\nacini\nackee\nacker\nacmes\nacmic\nacned\nacnes\nacock\nacoel\nacold\nacone\nacorn\nacral\nacred\nacres\nacrid\nacron\nacros\nacryl\nactas\nacted\nactin\nacton\nactor\nactus\nacute\nacyls\nadage\nadapt\nadats\nadawn\nadaws\nadays\nadbot\naddas\naddax\nadded\nadder\naddin\naddio\naddle\naddra\nadead\nadeem\nadept\nadhan\nadhoc\nadieu\nadios\nadits\nadlib\nadman\nadmen\nadmin\nadmit\nadmix\nadnex\nadobe\nadobo\nadoon\nadopt\nadorb\nadore\nadorn\nadown\nadoze\nadrad\nadraw\nadred\nadret\nadrip\nadsum\naduki\nadult\nadunc\nadust\nadvew\nadvts\nadyta\nadyts\nadzed\nadzes\naecia\naedes\naeger\naegis\naeons\naerie\naeros\naesir\naevum\nafald\nafanc\nafara\nafars\nafear\naffix\naffly\nafion\nafire\nafizz\naflaj\naflap\naflow\nafoam\nafoot\nafore\nafoul\nafret\nafrit\nafros\nafter\naftos\nagain\nagals\nagama\nagami\nagamy\nagape\nagars\nagasp\nagast\nagate\nagaty\nagave\nagaze\nagbas\nagene\nagent\nagers\naggag\nagger\naggie\naggri\naggro\naggry\naghas\nagidi\nagila\nagile\naging\nagios\nagism\nagist\nagita\naglee\naglet\nagley\nagloo\naglow\naglus\nagmas\nagoge\nagogo\nagone\nagons\nagony\nagood\nagora\nagree\nagria\nagrin\nagros\nagrum\nagued\nagues\naguey\naguna\nagush\naguti\nahead\naheap\nahent\nahigh\nahind\nahing\nahint\nahold\nahole\nahull\nahuru\naidas\naided\naider\naides\naidoi\naidos\naiery\naigas\naight\nailed\naimag\naimak\naimed\naimer\nainee\nainga\naioli\naired\nairer\nairns\nairth\nairts\naisle\naitch\naitus\naiver\naixes\naiyah\naiyee\naiyoh\naiyoo\naizle\najies\najiva\najuga\najupa\najwan\nakara\nakees\nakela\nakene\naking\nakita\nakkas\nakker\nakoia\nakoja\nakoya\naksed\nakses\nalaap\nalack\nalala\nalamo\naland\nalane\nalang\nalans\nalant\nalapa\nalaps\nalarm\nalary\nalata\nalate\nalays\nalbas\nalbee\nalbid\nalbum\nalcea\nalces\nalcid\nalcos\naldea\nalder\naldol\naleak\naleck\nalecs\naleem\nalefs\naleft\naleph\nalert\nalews\naleye\nalfas\nalgae\nalgal\nalgas\nalgid\nalgin\nalgor\nalgos\nalgum\nalias\nalibi\nalick\nalien\nalifs\nalign\nalike\nalims\naline\nalios\nalist\nalive\naliya\nalkie\nalkin\nalkos\nalkyd\nalkyl\nallan\nallay\nallee\nallel\nallen\naller\nalley\nallin\nallis\nallod\nallot\nallow\nalloy\nallus\nallyl\nalmah\nalmas\nalmeh\nalmes\nalmud\nalmug\nalods\naloed\naloes\naloft\naloha\naloin\nalone\nalong\naloof\naloos\nalose\naloud\nalowe\nalpha\naltar\nalter\naltho\naltos\nalula\nalums\nalumy\nalure\nalurk\nalvar\nalway\namahs\namain\namari\namaro\namass\namate\namaut\namaze\namban\namber\nambit\namble\nambos\nambry\nameba\nameer\namend\namene\namens\nament\namias\namice\namici\namide\namido\namids\namies\namiga\namigo\namine\namino\namins\namirs\namiss\namity\namlas\namman\nammas\nammon\nammos\namnia\namnic\namnio\namoks\namole\namong\namore\namort\namour\namove\namowt\namped\nample\namply\nampul\namrit\namuck\namuse\namyls\nanana\nanata\nancho\nancle\nancon\nandic\nandro\nanear\nanele\nanent\nangas\nangel\nanger\nangle\nanglo\nangry\nangst\nanigh\nanile\nanils\nanima\nanime\nanimi\nanion\nanise\nanker\nankhs\nankle\nankus\nanlas\nannal\nannan\nannas\nannat\nannex\nannoy\nannul\nannum\nannus\nanoas\nanode\nanole\nanomy\nansae\nansas\nantae\nantar\nantas\nanted\nantes\nantic\nantis\nantra\nantre\nantsy\nanura\nanvil\nanyon\naorta\napace\napage\napaid\napart\napayd\napays\napeak\napeek\napers\napert\napery\napgar\naphid\naphis\napian\naping\napiol\napish\napism\napnea\napode\napods\napols\napoop\naport\nappal\nappam\nappay\nappel\napple\napply\nappro\nappts\nappui\nappuy\napres\napron\napses\napsis\napsos\napted\napter\naptly\naquae\naquas\naraba\naraks\narame\narars\narbah\narbas\narbor\narced\narchi\narcos\narcus\nardeb\nardor\nardri\naread\nareae\nareal\narear\nareas\nareca\naredd\narede\narefy\nareic\narena\narene\narepa\narere\narete\narets\narett\nargal\nargan\nargil\nargle\nargol\nargon\nargot\nargue\nargus\narhat\narias\nariel\nariki\narils\nariot\narise\narish\narith\narked\narled\narles\narmed\narmer\narmet\narmil\narmor\narnas\narnis\narnut\naroba\naroha\naroid\naroma\narose\narpas\narpen\narrah\narras\narray\narret\narris\narrow\narroz\narsed\narses\narsey\narsis\narson\nartal\nartel\narter\nartic\nartis\nartly\nartsy\naruhe\narums\narval\narvee\narvos\naryls\nasada\nasana\nascon\nascot\nascus\nasdic\nashed\nashen\nashes\nashet\naside\nasity\naskar\nasked\nasker\naskew\naskoi\naskos\naspen\nasper\naspic\naspie\naspis\naspro\nassai\nassam\nassay\nassed\nasses\nasset\nassez\nassot\naster\nastir\nastun\nasura\nasway\naswim\nasyla\nataps\nataxy\natigi\natilt\natimy\natlas\natman\natmas\natmos\natocs\natoke\natoks\natoll\natoms\natomy\natone\natony\natopy\natria\natrip\nattap\nattar\nattas\natter\nattic\natuas\naucht\naudad\naudax\naudio\naudit\naugen\nauger\nauges\naught\naugur\naulas\naulic\nauloi\naulos\naumil\naunes\naunts\naunty\naurae\naural\naurar\nauras\naurei\naures\nauric\nauris\naurum\nautos\nauxin\navail\navale\navant\navast\navels\navens\navers\navert\navgas\navian\navine\navion\navise\naviso\navize\navoid\navows\navyze\nawait\nawake\naward\naware\nawari\nawarn\nawash\nawato\nawave\naways\nawdls\naweel\naweto\nawful\nawing\nawkin\nawmry\nawned\nawner\nawoke\nawols\nawork\naxels\naxial\naxile\naxils\naxing\naxiom\naxion\naxite\naxled\naxles\naxman\naxmen\naxoid\naxone\naxons\nayahs\nayaya\nayelp\naygre\nayins\naymag\nayont\nayres\nayrie\nazans\nazide\nazido\nazine\nazlon\nazoic\nazole\nazons\nazote\nazoth\nazuki\nazure\nazurn\nazury\nazygy\nazyme\nazyms\nbaaed\nbaals\nbaaps\nbabas\nbabby\nbabel\nbabes\nbabka\nbaboo\nbabul\nbabus\nbacca\nbacco\nbaccy\nbacha\nbachs\nbacks\nbacky\nbacne\nbacon\nbadam\nbaddy\nbadge\nbadly\nbaels\nbaffs\nbaffy\nbafta\nbafts\nbagel\nbaggy\nbaghs\nbagie\nbagsy\nbagua\nbahts\nbahus\nbahut\nbaiks\nbaile\nbails\nbairn\nbaisa\nbaith\nbaits\nbaiza\nbaize\nbajan\nbajra\nbajri\nbajus\nbaked\nbaken\nbaker\nbakes\nbakra\nbalas\nbalds\nbaldy\nbaled\nbaler\nbales\nbalks\nbalky\nballo\nballs\nbally\nbalms\nbalmy\nbaloi\nbalon\nbaloo\nbalot\nbalsa\nbalti\nbalun\nbalus\nbalut\nbamas\nbambi\nbamma\nbammy\nbanak\nbanal\nbanco\nbancs\nbanda\nbandh\nbands\nbandy\nbaned\nbanes\nbangs\nbania\nbanjo\nbanks\nbanky\nbanns\nbants\nbantu\nbanty\nbantz\nbanya\nbaons\nbaozi\nbappu\nbapus\nbarbe\nbarbs\nbarby\nbarca\nbarde\nbardo\nbards\nbardy\nbared\nbarer\nbares\nbarfi\nbarfs\nbarfy\nbarge\nbaric\nbarks\nbarky\nbarms\nbarmy\nbarns\nbarny\nbaron\nbarps\nbarra\nbarre\nbarro\nbarry\nbarye\nbasal\nbasan\nbasas\nbased\nbasen\nbaser\nbases\nbasha\nbasho\nbasic\nbasij\nbasil\nbasin\nbasis\nbasks\nbason\nbasse\nbassi\nbasso\nbassy\nbasta\nbaste\nbasti\nbasto\nbasts\nbatch\nbated\nbates\nbathe\nbaths\nbatik\nbaton\nbatos\nbatta\nbatts\nbattu\nbatty\nbauds\nbauks\nbaulk\nbaurs\nbavin\nbawds\nbawdy\nbawks\nbawls\nbawns\nbawrs\nbawty\nbayas\nbayed\nbayer\nbayes\nbayle\nbayou\nbayts\nbazar\nbazas\nbazoo\nbball\nbdays\nbeach\nbeads\nbeady\nbeaks\nbeaky\nbeals\nbeams\nbeamy\nbeano\nbeans\nbeany\nbeard\nbeare\nbears\nbeast\nbeath\nbeats\nbeaty\nbeaus\nbeaut\nbeaux\nbebop\nbecap\nbecke\nbecks\nbedad\nbedel\nbedes\nbedew\nbedim\nbedye\nbeech\nbeedi\nbeefs\nbeefy\nbeeps\nbeers\nbeery\nbeets\nbefit\nbefog\nbegad\nbegan\nbegar\nbegat\nbegem\nbeget\nbegin\nbegob\nbegot\nbegum\nbegun\nbeige\nbeigy\nbeing\nbeins\nbeira\nbeisa\nbekah\nbelah\nbelar\nbelay\nbelch\nbelee\nbelga\nbelie\nbelit\nbelle\nbelli\nbello\nbells\nbelly\nbelon\nbelow\nbelts\nbelve\nbemad\nbemas\nbemix\nbemud\nbench\nbends\nbendy\nbenes\nbenet\nbenga\nbenis\nbenji\nbenne\nbenni\nbenny\nbento\nbents\nbenty\nbepat\nberay\nberes\nberet\nbergs\nberko\nberks\nberme\nberms\nberob\nberry\nberth\nberyl\nbesat\nbesaw\nbesee\nbeses\nbeset\nbesit\nbesom\nbesot\nbesti\nbests\nbetas\nbeted\nbetel\nbetes\nbeths\nbetid\nbeton\nbetta\nbetty\nbevan\nbevel\nbever\nbevor\nbevue\nbevvy\nbewdy\nbewet\nbewig\nbezel\nbezes\nbezil\nbezzy\nbhais\nbhaji\nbhang\nbhats\nbhava\nbhels\nbhoot\nbhuna\nbhuts\nbiach\nbiali\nbialy\nbibbs\nbibes\nbibis\nbible\nbiccy\nbicep\nbices\nbicky\nbiddy\nbided\nbider\nbides\nbidet\nbidis\nbidon\nbidri\nbield\nbiers\nbiffo\nbiffs\nbiffy\nbifid\nbigae\nbiggs\nbiggy\nbigha\nbight\nbigly\nbigos\nbigot\nbihon\nbijou\nbiked\nbiker\nbikes\nbikie\nbikky\nbilal\nbilat\nbilbo\nbilby\nbiled\nbiles\nbilge\nbilgy\nbilks\nbills\nbilly\nbimah\nbimas\nbimbo\nbinal\nbindi\nbinds\nbiner\nbines\nbinge\nbingo\nbings\nbingy\nbinit\nbinks\nbinky\nbints\nbiogs\nbiome\nbions\nbiont\nbiose\nbiota\nbiped\nbipod\nbippy\nbirch\nbirdo\nbirds\nbiris\nbirks\nbirle\nbirls\nbiros\nbirrs\nbirse\nbirsy\nbirth\nbirze\nbirzz\nbises\nbisks\nbisom\nbison\nbitch\nbiter\nbites\nbitey\nbitos\nbitou\nbitsy\nbitte\nbitts\nbitty\nbivia\nbivvy\nbizes\nbizzo\nbizzy\nblabs\nblack\nblade\nblads\nblady\nblaer\nblaes\nblaff\nblags\nblahs\nblain\nblame\nblams\nblanc\nbland\nblank\nblare\nblart\nblase\nblash\nblast\nblate\nblats\nblatt\nblaud\nblawn\nblaws\nblays\nblaze\nbleah\nbleak\nblear\nbleat\nblebs\nblech\nbleed\nbleep\nblees\nblend\nblent\nblert\nbless\nblest\nblets\nbleys\nblimp\nblimy\nblind\nbling\nblini\nblink\nblins\nbliny\nblips\nbliss\nblist\nblite\nblits\nblitz\nblive\nbloat\nblobs\nblock\nblocs\nblogs\nbloke\nblond\nblonx\nblood\nblook\nbloom\nbloop\nblore\nblots\nblown\nblows\nblowy\nblubs\nblude\nbluds\nbludy\nblued\nbluer\nblues\nbluet\nbluey\nbluff\nbluid\nblume\nblunk\nblunt\nblurb\nblurs\nblurt\nblush\nblype\nboabs\nboaks\nboard\nboars\nboart\nboast\nboats\nboaty\nbobac\nbobak\nbobas\nbobby\nbobol\nbobos\nbocca\nbocce\nbocci\nboche\nbocks\nboded\nbodes\nbodge\nbodgy\nbodhi\nbodle\nbodoh\nboeps\nboers\nboeti\nboets\nboeuf\nboffo\nboffs\nbogan\nbogey\nboggy\nbogie\nbogle\nbogue\nbogus\nbohea\nbohos\nboils\nboing\nboink\nboite\nboked\nbokeh\nbokes\nbokos\nbolar\nbolas\nboldo\nbolds\nboles\nbolet\nbolix\nbolks\nbolls\nbolos\nbolts\nbolus\nbomas\nbombe\nbombo\nbombs\nbomoh\nbomor\nbonce\nbonds\nboned\nboner\nbones\nboney\nbongo\nbongs\nbonie\nbonks\nbonne\nbonny\nbonum\nbonus\nbonza\nbonze\nbooai\nbooay\nboobs\nbooby\nboody\nbooed\nboofy\nboogy\nboohs\nbooks\nbooky\nbools\nbooms\nboomy\nboong\nboons\nboord\nboors\nboose\nboost\nbooth\nboots\nbooty\nbooze\nboozy\nboppy\nborak\nboral\nboras\nborax\nborde\nbords\nbored\nboree\nborek\nborel\nborer\nbores\nborgo\nboric\nborks\nborms\nborna\nborne\nboron\nborts\nborty\nbortz\nbosey\nbosie\nbosks\nbosky\nbosom\nboson\nbossa\nbossy\nbosun\nbotas\nbotch\nboteh\nbotel\nbotes\nbotew\nbothy\nbotos\nbotte\nbotts\nbotty\nbouge\nbough\nbouks\nboule\nboult\nbound\nbouns\nbourd\nbourg\nbourn\nbouse\nbousy\nbouts\nboutu\nbovid\nbowat\nbowed\nbowel\nbower\nbowes\nbowet\nbowie\nbowls\nbowne\nbowrs\nbowse\nboxed\nboxen\nboxer\nboxes\nboxla\nboxty\nboyar\nboyau\nboyed\nboyey\nboyfs\nboygs\nboyla\nboyly\nboyos\nboysy\nbozos\nbraai\nbrace\nbrach\nbrack\nbract\nbrads\nbraes\nbrags\nbrahs\nbraid\nbrail\nbrain\nbrake\nbraks\nbraky\nbrame\nbrand\nbrane\nbrank\nbrans\nbrant\nbrash\nbrass\nbrast\nbrats\nbrava\nbrave\nbravi\nbravo\nbrawl\nbrawn\nbraws\nbraxy\nbrays\nbraza\nbraze\nbread\nbreak\nbream\nbrede\nbreds\nbreed\nbreem\nbreer\nbrees\nbreid\nbreis\nbreme\nbrens\nbrent\nbrere\nbrers\nbreve\nbrews\nbreys\nbriar\nbribe\nbrick\nbride\nbrief\nbrier\nbries\nbrigs\nbriki\nbriks\nbrill\nbrims\nbrine\nbring\nbrink\nbrins\nbriny\nbrios\nbrise\nbrisk\nbriss\nbrith\nbrits\nbritt\nbrize\nbroad\nbroch\nbrock\nbrods\nbrogh\nbrogs\nbroil\nbroke\nbrome\nbromo\nbronc\nbrond\nbrood\nbrook\nbrool\nbroom\nbroos\nbrose\nbrosy\nbroth\nbrown\nbrows\nbruck\nbrugh\nbruhs\nbruin\nbruit\nbruja\nbrujo\nbrule\nbrume\nbrung\nbrunt\nbrush\nbrusk\nbrust\nbrute\nbruts\nbruvs\nbuats\nbuaze\nbubal\nbubas\nbubba\nbubbe\nbubby\nbubus\nbuchu\nbucko\nbucks\nbucku\nbudas\nbuddy\nbuded\nbudes\nbudge\nbudis\nbudos\nbuena\nbuffa\nbuffe\nbuffi\nbuffo\nbuffs\nbuffy\nbufos\nbufty\nbugan\nbuggy\nbugle\nbuhls\nbuhrs\nbuiks\nbuild\nbuilt\nbuist\nbukes\nbukos\nbulbs\nbulge\nbulgy\nbulks\nbulky\nbulla\nbulls\nbully\nbulse\nbumbo\nbumfs\nbumph\nbumps\nbumpy\nbunas\nbunce\nbunch\nbunco\nbunde\nbundh\nbunds\nbundt\nbundu\nbundy\nbungs\nbungy\nbunia\nbunje\nbunjy\nbunko\nbunks\nbunns\nbunny\nbunts\nbunty\nbunya\nbuoys\nbuppy\nburan\nburas\nburbs\nburds\nburet\nburfi\nburgh\nburgs\nburin\nburka\nburke\nburks\nburls\nburly\nburns\nburnt\nburoo\nburps\nburqa\nburra\nburro\nburrs\nburry\nbursa\nburse\nburst\nbusby\nbused\nbuses\nbushy\nbusks\nbusky\nbussu\nbusti\nbusts\nbusty\nbutch\nbuteo\nbutes\nbutle\nbutoh\nbutte\nbutts\nbutty\nbutut\nbutyl\nbuxom\nbuyer\nbuyin\nbuzzy\nbwana\nbwazi\nbyded\nbydes\nbyked\nbykes\nbylaw\nbyres\nbyrls\nbyssi\nbytes\nbyway\ncaaed\ncabal\ncabas\ncabby\ncaber\ncabin\ncable\ncabob\ncaboc\ncabre\ncacao\ncacas\ncache\ncacks\ncacky\ncacti\ncaddy\ncadee\ncades\ncadet\ncadge\ncadgy\ncadie\ncadis\ncadre\ncaeca\ncaese\ncafes\ncaffe\ncaffs\ncaged\ncager\ncages\ncagey\ncagot\ncahow\ncaids\ncains\ncaird\ncairn\ncajon\ncajun\ncaked\ncakes\ncakey\ncalfs\ncalid\ncalif\ncalix\ncalks\ncalla\ncalle\ncalls\ncalms\ncalmy\ncalos\ncalpa\ncalps\ncalve\ncalyx\ncaman\ncamas\ncamel\ncameo\ncames\ncamis\ncamos\ncampi\ncampo\ncamps\ncampy\ncamus\ncanal\ncando\ncandy\ncaned\ncaneh\ncaner\ncanes\ncangs\ncanid\ncanna\ncanns\ncanny\ncanoe\ncanon\ncanso\ncanst\ncanti\ncanto\ncants\ncanty\ncapas\ncapax\ncaped\ncaper\ncapes\ncapex\ncaphs\ncapiz\ncaple\ncapon\ncapos\ncapot\ncapri\ncapul\ncaput\ncarap\ncarat\ncarbo\ncarbs\ncarby\ncardi\ncards\ncardy\ncared\ncarer\ncares\ncaret\ncarex\ncargo\ncarks\ncarle\ncarls\ncarne\ncarns\ncarny\ncarob\ncarol\ncarom\ncaron\ncarpe\ncarpi\ncarps\ncarrs\ncarry\ncarse\ncarta\ncarte\ncarts\ncarve\ncarvy\ncasas\ncasco\ncased\ncaser\ncases\ncasks\ncasky\ncaste\ncasts\ncasus\ncatch\ncater\ncates\ncatty\ncauda\ncauks\ncauld\ncaulk\ncauls\ncaums\ncaups\ncauri\ncausa\ncause\ncavas\ncaved\ncavel\ncaver\ncaves\ncavie\ncavil\ncavus\ncawed\ncawks\ncaxon\ncease\nceaze\ncebid\ncecal\ncecum\ncedar\nceded\nceder\ncedes\ncedis\nceiba\nceili\nceils\nceleb\ncella\ncelli\ncello\ncells\ncelly\ncelom\ncelts\ncense\ncento\ncents\ncentu\nceorl\ncepes\ncerci\ncered\nceres\ncerge\nceria\nceric\ncerne\nceroc\nceros\ncerts\ncerty\ncesse\ncesta\ncesti\ncetes\ncetyl\ncezve\nchaap\nchaat\nchace\nchack\nchaco\nchado\nchads\nchafe\nchaff\nchaft\nchain\nchair\nchais\nchalk\nchals\nchamp\nchams\nchana\nchang\nchank\nchant\nchaos\nchape\nchaps\nchapt\nchara\nchard\nchare\nchark\ncharm\ncharr\nchars\nchart\nchary\nchase\nchasm\nchats\nchava\nchave\nchavs\nchawk\nchawl\nchaws\nchaya\nchays\ncheap\ncheat\ncheba\ncheck\nchedi\ncheeb\ncheek\ncheep\ncheer\ncheet\nchefs\ncheka\nchela\nchelp\nchemo\nchems\nchere\nchert\nchess\nchest\ncheth\nchevy\nchews\nchewy\nchiao\nchias\nchiba\nchibs\nchica\nchich\nchick\nchico\nchics\nchide\nchief\nchiel\nchiko\nchiks\nchild\nchile\nchili\nchill\nchimb\nchime\nchimo\nchimp\nchina\nchine\nching\nchink\nchino\nchins\nchips\nchirk\nchirl\nchirm\nchiro\nchirp\nchirr\nchirt\nchiru\nchiti\nchits\nchiva\nchive\nchivs\nchivy\nchizz\nchock\nchoco\nchocs\nchode\nchogs\nchoil\nchoir\nchoke\nchoko\nchoky\nchola\ncholi\ncholo\nchomp\nchons\nchoof\nchook\nchoom\nchoon\nchops\nchord\nchore\nchose\nchoss\nchota\nchott\nchout\nchoux\nchowk\nchows\nchubs\nchuck\nchufa\nchuff\nchugs\nchump\nchums\nchunk\nchurl\nchurn\nchurr\nchuse\nchute\nchuts\nchyle\nchyme\nchynd\ncibol\ncided\ncider\ncides\nciels\ncigar\nciggy\ncilia\ncills\ncimar\ncimex\ncinch\ncinct\ncines\ncinqs\ncions\ncippi\ncirca\ncircs\ncires\ncirls\ncirri\ncisco\ncissy\ncists\ncital\ncited\ncitee\nciter\ncites\ncives\ncivet\ncivic\ncivie\ncivil\ncivvy\nclach\nclack\nclade\nclads\nclaes\nclags\nclaim\nclair\nclame\nclamp\nclams\nclang\nclank\nclans\nclaps\nclapt\nclaro\nclart\nclary\nclash\nclasp\nclass\nclast\nclats\nclaut\nclave\nclavi\nclaws\nclays\nclean\nclear\ncleat\ncleck\ncleek\ncleep\nclefs\ncleft\nclegs\ncleik\nclems\nclepe\nclept\nclerk\ncleve\nclews\nclick\nclied\nclies\ncliff\nclift\nclimb\nclime\ncline\ncling\nclink\nclint\nclipe\nclips\nclipt\nclits\ncloak\ncloam\nclock\nclods\ncloff\nclogs\ncloke\nclomb\nclomp\nclone\nclonk\nclons\ncloop\ncloot\nclops\nclose\nclote\ncloth\nclots\ncloud\nclour\nclous\nclout\nclove\nclown\nclows\ncloye\ncloys\ncloze\nclubs\ncluck\nclued\nclues\ncluey\nclump\nclung\nclunk\nclype\ncnida\ncoach\ncoact\ncoady\ncoala\ncoals\ncoaly\ncoapt\ncoarb\ncoast\ncoate\ncoati\ncoats\ncobbs\ncobby\ncobia\ncoble\ncobot\ncobra\ncobza\ncocas\ncocci\ncocco\ncocks\ncocky\ncocoa\ncocos\ncocus\ncodas\ncodec\ncoded\ncoden\ncoder\ncodes\ncodex\ncodon\ncoeds\ncoffs\ncogie\ncogon\ncogue\ncohab\ncohen\ncohoe\ncohog\ncohos\ncoifs\ncoign\ncoils\ncoins\ncoirs\ncoits\ncoked\ncokes\ncokey\ncolas\ncolby\ncolds\ncoled\ncoles\ncoley\ncolic\ncolin\ncolle\ncolls\ncolly\ncolog\ncolon\ncolor\ncolts\ncolza\ncomae\ncomal\ncomas\ncombe\ncombi\ncombo\ncombs\ncomby\ncomer\ncomes\ncomet\ncomfy\ncomic\ncomix\ncomma\ncomme\ncommo\ncomms\ncommy\ncompo\ncomps\ncompt\ncomte\ncomus\nconch\ncondo\nconed\ncones\nconex\nconey\nconfs\nconga\nconge\ncongo\nconia\nconic\nconin\nconks\nconky\nconne\nconns\nconte\nconto\nconus\nconvo\ncooch\ncooed\ncooee\ncooer\ncooey\ncoofs\ncooks\ncooky\ncools\ncooly\ncoomb\ncooms\ncoomy\ncoons\ncoops\ncoopt\ncoost\ncoots\ncooty\ncooze\ncopal\ncopay\ncoped\ncopen\ncoper\ncopes\ncopha\ncoppy\ncopra\ncopse\ncopsy\ncoqui\ncoral\ncoram\ncorbe\ncorby\ncorda\ncords\ncored\ncorer\ncores\ncorey\ncorgi\ncoria\ncorks\ncorky\ncorms\ncorni\ncorno\ncorns\ncornu\ncorny\ncorps\ncorse\ncorso\ncosec\ncosed\ncoses\ncoset\ncosey\ncosie\ncosta\ncoste\ncosts\ncotan\ncotch\ncoted\ncotes\ncoths\ncotta\ncotts\ncouch\ncoude\ncough\ncould\ncount\ncoupe\ncoups\ncourb\ncourd\ncoure\ncours\ncourt\ncouta\ncouth\ncoved\ncoven\ncover\ncoves\ncovet\ncovey\ncovin\ncowal\ncowan\ncowed\ncower\ncowks\ncowls\ncowps\ncowry\ncoxae\ncoxal\ncoxed\ncoxes\ncoxib\ncoyau\ncoyed\ncoyer\ncoyly\ncoypu\ncozed\ncozen\ncozes\ncozey\ncozie\ncraal\ncrabs\ncrack\ncraft\ncrags\ncraic\ncraig\ncrake\ncrame\ncramp\ncrams\ncrane\ncrank\ncrans\ncrape\ncraps\ncrapy\ncrare\ncrash\ncrass\ncrate\ncrave\ncrawl\ncraws\ncrays\ncraze\ncrazy\ncreak\ncream\ncredo\ncreds\ncreed\ncreek\ncreel\ncreep\ncrees\ncrein\ncrema\ncreme\ncrems\ncrena\ncrepe\ncreps\ncrept\ncrepy\ncress\ncrest\ncrewe\ncrews\ncrias\ncribo\ncribs\ncrick\ncried\ncrier\ncries\ncrime\ncrimp\ncrims\ncrine\ncrink\ncrins\ncrios\ncripe\ncrips\ncrise\ncrisp\ncriss\ncrith\ncrits\ncroak\ncroci\ncrock\ncrocs\ncroft\ncrogs\ncromb\ncrome\ncrone\ncronk\ncrons\ncrony\ncrook\ncrool\ncroon\ncrops\ncrore\ncross\ncrost\ncroup\ncrout\ncrowd\ncrowl\ncrown\ncrows\ncroze\ncruck\ncrude\ncrudo\ncruds\ncrudy\ncruel\ncrues\ncruet\ncruft\ncrumb\ncrump\ncrunk\ncruor\ncrura\ncruse\ncrush\ncrust\ncrusy\ncruve\ncrwth\ncryer\ncryne\ncrypt\nctene\ncubby\ncubeb\ncubed\ncuber\ncubes\ncubic\ncubit\ncucks\ncudda\ncuddy\ncueca\ncuffo\ncuffs\ncuifs\ncuing\ncuish\ncuits\ncukes\nculch\nculet\nculex\nculls\ncully\nculms\nculpa\nculti\ncults\nculty\ncumec\ncumin\ncundy\ncunei\ncunit\ncunny\ncunts\ncupel\ncupid\ncuppa\ncuppy\ncupro\ncurat\ncurbs\ncurch\ncurds\ncurdy\ncured\ncurer\ncures\ncuret\ncurfs\ncuria\ncurie\ncurio\ncurli\ncurls\ncurly\ncurns\ncurny\ncurrs\ncurry\ncurse\ncursi\ncurst\ncurve\ncurvy\ncusec\ncushy\ncusks\ncusps\ncuspy\ncusso\ncusum\ncutch\ncuter\ncutes\ncutey\ncutie\ncutin\ncutis\ncutto\ncutty\ncutup\ncuvee\ncuzes\ncwtch\ncyano\ncyans\ncyber\ncycad\ncycas\ncycle\ncyclo\ncyder\ncylix\ncymae\ncymar\ncymas\ncymes\ncymol\ncynic\ncysts\ncytes\ncyton\nczars\ndaals\ndabba\ndaces\ndacha\ndacks\ndadah\ndadas\ndaddy\ndadis\ndadla\ndados\ndaffs\ndaffy\ndagga\ndaggy\ndagos\ndahis\ndahls\ndaiko\ndaily\ndaine\ndaint\ndairy\ndaisy\ndaker\ndaled\ndalek\ndales\ndalis\ndalle\ndally\ndalts\ndaman\ndamar\ndames\ndamme\ndamna\ndamns\ndamps\ndampy\ndance\ndancy\ndanda\ndandy\ndangs\ndanio\ndanks\ndanny\ndanse\ndants\ndappy\ndaraf\ndarbs\ndarcy\ndared\ndarer\ndares\ndarga\ndargs\ndaric\ndaris\ndarks\ndarky\ndarls\ndarns\ndarre\ndarts\ndarzi\ndashi\ndashy\ndatal\ndated\ndater\ndates\ndatil\ndatos\ndatto\ndatum\ndaube\ndaubs\ndauby\ndauds\ndault\ndaunt\ndaurs\ndauts\ndaven\ndavit\ndawah\ndawds\ndawed\ndawen\ndawgs\ndawks\ndawns\ndawts\ndayal\ndayan\ndaych\ndaynt\ndazed\ndazer\ndazes\ndbags\ndeads\ndeair\ndeals\ndealt\ndeans\ndeare\ndearn\ndears\ndeary\ndeash\ndeath\ndeave\ndeaws\ndeawy\ndebag\ndebar\ndebby\ndebel\ndebes\ndebit\ndebts\ndebud\ndebug\ndebur\ndebus\ndebut\ndebye\ndecad\ndecaf\ndecal\ndecan\ndecay\ndecim\ndecko\ndecks\ndecor\ndecos\ndecoy\ndecry\ndecyl\ndedal\ndeeds\ndeedy\ndeely\ndeems\ndeens\ndeeps\ndeere\ndeers\ndeets\ndeeve\ndeevs\ndefat\ndefer\ndeffo\ndefis\ndefog\ndegas\ndegum\ndegus\ndeice\ndeids\ndeify\ndeign\ndeils\ndeink\ndeism\ndeist\ndeity\ndeked\ndekes\ndekko\ndelay\ndeled\ndeles\ndelfs\ndelft\ndelis\ndella\ndells\ndelly\ndelos\ndelph\ndelta\ndelts\ndelve\ndeman\ndemes\ndemic\ndemit\ndemob\ndemoi\ndemon\ndemos\ndemot\ndempt\ndemur\ndenar\ndenay\ndench\ndenes\ndenet\ndenim\ndenis\ndense\ndente\ndents\ndeoch\ndeoxy\ndepot\ndepth\nderat\nderay\nderby\ndered\nderes\nderig\nderma\nderms\nderns\nderny\nderos\nderpy\nderro\nderry\nderth\ndervs\ndesex\ndeshi\ndesis\ndesks\ndesse\ndetag\ndeter\ndetox\ndeuce\ndevas\ndevel\ndevil\ndevis\ndevon\ndevos\ndevot\ndewan\ndewar\ndewax\ndewed\ndexes\ndexie\ndexys\ndhaba\ndhaks\ndhals\ndhikr\ndhobi\ndhole\ndholl\ndhols\ndhoni\ndhoti\ndhows\ndhuti\ndiact\ndials\ndiana\ndiane\ndiary\ndiazo\ndibbs\ndiced\ndicer\ndices\ndicey\ndicht\ndicks\ndicky\ndicot\ndicta\ndicto\ndicts\ndictu\ndicty\ndiddy\ndidie\ndidis\ndidos\ndidst\ndiebs\ndiels\ndiene\ndiets\ndiffs\ndight\ndigit\ndikas\ndiked\ndiker\ndikes\ndikey\ndildo\ndilli\ndills\ndilly\ndimbo\ndimer\ndimes\ndimly\ndimps\ndinar\ndined\ndiner\ndines\ndinge\ndingo\ndings\ndingy\ndinic\ndinks\ndinky\ndinlo\ndinna\ndinos\ndints\ndioch\ndiode\ndiols\ndiota\ndippy\ndipso\ndiram\ndirer\ndirge\ndirke\ndirks\ndirls\ndirts\ndirty\ndisas\ndisci\ndisco\ndiscs\ndishy\ndisks\ndisme\ndital\nditas\nditch\ndited\ndites\nditsy\nditto\nditts\nditty\nditzy\ndivan\ndivas\ndived\ndiver\ndives\ndivey\ndivis\ndivna\ndivos\ndivot\ndivvy\ndiwan\ndixie\ndixit\ndiyas\ndizen\ndizzy\ndjinn\ndjins\ndoabs\ndoats\ndobby\ndobes\ndobie\ndobla\ndoble\ndobra\ndobro\ndocht\ndocks\ndocos\ndocus\ndoddy\ndodge\ndodgy\ndodos\ndoeks\ndoers\ndoest\ndoeth\ndoffs\ndogal\ndogan\ndoges\ndogey\ndoggo\ndoggy\ndogie\ndogly\ndogma\ndohyo\ndoilt\ndoily\ndoing\ndoits\ndojos\ndolce\ndolci\ndoled\ndolee\ndoles\ndoley\ndolia\ndolie\ndolls\ndolly\ndolma\ndolor\ndolos\ndolts\ndomal\ndomed\ndomes\ndomic\ndonah\ndonas\ndonee\ndoner\ndonga\ndongs\ndonko\ndonna\ndonne\ndonny\ndonor\ndonsy\ndonut\ndoobs\ndooce\ndoody\ndoofs\ndooks\ndooky\ndoole\ndools\ndooly\ndooms\ndoomy\ndoona\ndoorn\ndoors\ndoozy\ndopas\ndoped\ndoper\ndopes\ndopey\ndoppe\ndorad\ndorba\ndorbs\ndoree\ndores\ndoric\ndoris\ndorje\ndorks\ndorky\ndorms\ndormy\ndorps\ndorrs\ndorsa\ndorse\ndorts\ndorty\ndosai\ndosas\ndosed\ndoseh\ndoser\ndoses\ndosha\ndotal\ndoted\ndoter\ndotes\ndotty\ndouar\ndoubt\ndouce\ndoucs\ndough\ndouks\ndoula\ndouma\ndoums\ndoups\ndoura\ndouse\ndouts\ndoved\ndoven\ndover\ndoves\ndovie\ndowak\ndowar\ndowds\ndowdy\ndowed\ndowel\ndower\ndowfs\ndowie\ndowle\ndowls\ndowly\ndowna\ndowns\ndowny\ndowps\ndowry\ndowse\ndowts\ndoxed\ndoxes\ndoxie\ndoyen\ndoyly\ndozed\ndozen\ndozer\ndozes\ndrabs\ndrack\ndraco\ndraff\ndraft\ndrags\ndrail\ndrain\ndrake\ndrama\ndrams\ndrank\ndrant\ndrape\ndraps\ndrapy\ndrats\ndrave\ndrawl\ndrawn\ndraws\ndrays\ndread\ndream\ndrear\ndreck\ndreed\ndreer\ndrees\ndregs\ndreks\ndrent\ndrere\ndress\ndrest\ndreys\ndribs\ndrice\ndried\ndrier\ndries\ndrift\ndrill\ndrily\ndrink\ndrips\ndript\ndrive\ndrock\ndroid\ndroil\ndroit\ndroke\ndrole\ndroll\ndrome\ndrone\ndrony\ndroob\ndroog\ndrook\ndrool\ndroop\ndrops\ndropt\ndross\ndrouk\ndrove\ndrown\ndrows\ndrubs\ndrugs\ndruid\ndrums\ndrunk\ndrupe\ndruse\ndrusy\ndruxy\ndryad\ndryas\ndryer\ndryly\ndsobo\ndsomo\nduads\nduals\nduans\nduars\ndubbo\ndubby\nducal\nducat\nduces\nduchy\nducks\nducky\nducti\nducts\nduddy\nduded\ndudes\nduels\nduets\nduett\nduffs\ndufus\nduing\nduits\ndukas\nduked\ndukes\ndukka\ndukun\ndulce\ndules\ndulia\ndulls\ndully\ndulse\ndumas\ndumbo\ndumbs\ndumka\ndumky\ndummy\ndumps\ndumpy\ndunam\ndunce\ndunch\ndunes\ndungs\ndungy\ndunks\ndunno\ndunny\ndunsh\ndunts\nduomi\nduomo\nduped\nduper\ndupes\nduple\nduply\nduppy\ndural\nduras\ndured\ndures\ndurgy\ndurns\nduroc\nduros\nduroy\ndurra\ndurrs\ndurry\ndurst\ndurum\ndurzi\ndusks\ndusky\ndusts\ndusty\ndutch\nduvet\nduxes\ndwaal\ndwale\ndwalm\ndwams\ndwamy\ndwang\ndwarf\ndwaum\ndweeb\ndwell\ndwelt\ndwile\ndwine\ndyads\ndyers\ndying\ndyked\ndykes\ndykey\ndykon\ndynel\ndynes\ndynos\ndzhos\neager\neagle\neagly\neagre\nealed\neales\neaned\neards\neared\nearls\nearly\nearns\nearnt\nearst\nearth\neased\neasel\neaser\neases\neasle\neasts\neaten\neater\neathe\neatin\neaved\neaver\neaves\nebank\nebbed\nebbet\nebena\nebene\nebike\nebons\nebony\nebook\necads\necard\necash\neched\neches\nechos\necigs\neclat\necole\necrus\nedema\nedged\nedger\nedges\nedict\nedify\nedile\nedits\neduce\neduct\neejit\neensy\neerie\neeven\neever\neevns\neffed\neffer\nefits\negads\negers\negest\neggar\negged\negger\negmas\negret\nehing\neider\neidos\neight\neigne\neiked\neikon\neilds\neiron\neisel\neject\nejido\nekdam\neking\nekkas\nelain\neland\nelans\nelate\nelbow\nelchi\nelder\neldin\nelect\neleet\nelegy\nelemi\nelfed\nelfin\neliad\nelide\nelint\nelite\nelmen\neloge\nelogy\neloin\nelope\nelops\nelpee\nelsin\nelude\nelute\nelvan\nelven\nelver\nelves\nemacs\nemail\nembar\nembay\nembed\nember\nembog\nembow\nembox\nembus\nemcee\nemeer\nemend\nemerg\nemery\nemeus\nemics\nemirs\nemits\nemmas\nemmer\nemmet\nemmew\nemmys\nemoji\nemong\nemote\nemove\nempts\nempty\nemule\nemure\nemyde\nemyds\nenact\nenarm\nenate\nended\nender\nendew\nendow\nendue\nenema\nenemy\nenews\nenfix\neniac\nenjoy\nenlit\nenmew\nennog\nennui\nenoki\nenols\nenorm\nenows\nenrol\nensew\nensky\nensue\nenter\nentia\nentre\nentry\nenure\nenurn\nenvoi\nenvoy\nenzym\neolid\neorls\neosin\nepact\nepees\nepena\nepene\nephah\nephas\nephod\nephor\nepics\nepoch\nepode\nepopt\nepoxy\neppie\nepris\nequal\neques\nequid\nequip\nerase\nerbia\nerect\nerevs\nergon\nergos\nergot\nerhus\nerica\nerick\nerics\nering\nerned\nernes\nerode\nerose\nerred\nerror\nerses\neruct\nerugo\nerupt\neruvs\nerven\nervil\nescar\nescot\nesile\neskar\nesker\nesnes\nesrog\nessay\nesses\nester\nestoc\nestop\nestro\netage\netape\netats\netens\nethal\nether\nethic\nethne\nethos\nethyl\netics\netnas\netrog\nettin\nettle\netude\netuis\netwee\netyma\neughs\neuked\neupad\neuros\neusol\nevade\nevegs\nevens\nevent\nevert\nevery\nevets\nevhoe\nevict\nevils\nevite\nevohe\nevoke\newers\newest\newhow\newked\nexact\nexalt\nexams\nexcel\nexeat\nexecs\nexeem\nexeme\nexert\nexfil\nexier\nexies\nexile\nexine\nexing\nexist\nexite\nexits\nexode\nexome\nexons\nexpat\nexpel\nexpos\nextol\nextra\nexude\nexuls\nexult\nexurb\neyass\neyers\neying\neyots\neyras\neyres\neyrie\neyrir\nezine\nfabbo\nfabby\nfable\nfaced\nfacer\nfaces\nfacet\nfacey\nfacia\nfacie\nfacta\nfacto\nfacts\nfacty\nfaddy\nfaded\nfader\nfades\nfadge\nfados\nfaena\nfaery\nfaffs\nfaffy\nfaggy\nfagin\nfagot\nfaiks\nfails\nfaine\nfains\nfaint\nfaire\nfairs\nfairy\nfaith\nfaked\nfaker\nfakes\nfakey\nfakie\nfakir\nfalaj\nfales\nfalls\nfalse\nfalsy\nfamed\nfames\nfanal\nfancy\nfands\nfanes\nfanga\nfango\nfangs\nfanks\nfanny\nfanon\nfanos\nfanum\nfaqir\nfarad\nfarce\nfarci\nfarcy\nfards\nfared\nfarer\nfares\nfarle\nfarls\nfarms\nfaros\nfarro\nfarse\nfarts\nfasci\nfasti\nfasts\nfatal\nfated\nfates\nfatly\nfatso\nfatty\nfatwa\nfauch\nfaugh\nfauld\nfault\nfauna\nfauns\nfaurd\nfaute\nfauts\nfauve\nfavas\nfavel\nfaver\nfaves\nfavor\nfavus\nfawns\nfawny\nfaxed\nfaxes\nfayed\nfayer\nfayne\nfayre\nfazed\nfazes\nfeals\nfeard\nfeare\nfears\nfeart\nfease\nfeast\nfeats\nfeaze\nfecal\nfeces\nfecht\nfecit\nfecks\nfedai\nfedex\nfeebs\nfeeds\nfeels\nfeely\nfeens\nfeers\nfeese\nfeeze\nfehme\nfeign\nfeint\nfeist\nfelch\nfelid\nfelix\nfella\nfells\nfelly\nfelon\nfelts\nfelty\nfemal\nfemes\nfemic\nfemme\nfemmy\nfemur\nfence\nfends\nfendy\nfenis\nfenks\nfenny\nfents\nfeods\nfeoff\nferal\nferer\nferes\nferia\nferly\nfermi\nferms\nferns\nferny\nferox\nferry\nfesse\nfesta\nfests\nfesty\nfetal\nfetas\nfetch\nfeted\nfetes\nfetid\nfetor\nfetta\nfetts\nfetus\nfetwa\nfeuar\nfeuds\nfeued\nfever\nfewer\nfeyed\nfeyer\nfeyly\nfezes\nfezzy\nfiars\nfiats\nfiber\nfibre\nfibro\nfices\nfiche\nfichu\nficin\nficos\nficta\nficus\nfides\nfidge\nfidos\nfidus\nfiefs\nfield\nfiend\nfient\nfiere\nfieri\nfiers\nfiery\nfiest\nfifed\nfifer\nfifes\nfifis\nfifth\nfifty\nfiggy\nfight\nfigos\nfiked\nfikes\nfilar\nfilch\nfiled\nfiler\nfiles\nfilet\nfilii\nfilks\nfille\nfillo\nfills\nfilly\nfilmi\nfilms\nfilmy\nfilon\nfilos\nfilth\nfilum\nfinal\nfinca\nfinch\nfinds\nfined\nfiner\nfines\nfinis\nfinks\nfinny\nfinos\nfiord\nfiqhs\nfique\nfired\nfirer\nfires\nfirie\nfirks\nfirma\nfirms\nfirni\nfirns\nfirry\nfirst\nfirth\nfiscs\nfisho\nfishy\nfisks\nfists\nfisty\nfitch\nfitly\nfitna\nfitte\nfitts\nfiver\nfives\nfixed\nfixer\nfixes\nfixie\nfixit\nfizzy\nfjeld\nfjord\nflabs\nflack\nflaff\nflags\nflail\nflair\nflake\nflaks\nflaky\nflame\nflamm\nflams\nflamy\nflane\nflank\nflans\nflaps\nflare\nflary\nflash\nflask\nflats\nflava\nflawn\nflaws\nflawy\nflaxy\nflays\nfleam\nfleas\nfleck\nfleek\nfleer\nflees\nfleet\nflegs\nfleme\nflesh\nfleur\nflews\nflexi\nflexo\nfleys\nflick\nflics\nflied\nflier\nflies\nflimp\nflims\nfling\nflint\nflips\nflirs\nflirt\nflisk\nflite\nflits\nflitt\nfloat\nflobs\nflock\nflocs\nfloes\nflogs\nflong\nflood\nfloor\nflops\nflora\nflore\nflors\nflory\nflosh\nfloss\nflota\nflote\nflour\nflout\nflown\nflows\nflowy\nflubs\nflued\nflues\nfluey\nfluff\nfluid\nfluke\nfluky\nflume\nflump\nflung\nflunk\nfluor\nflurr\nflush\nflute\nfluty\nfluyt\nflyby\nflyer\nflyin\nflype\nflyte\nfnarr\nfoals\nfoams\nfoamy\nfocal\nfocus\nfoehn\nfogey\nfoggy\nfogie\nfogle\nfogos\nfogou\nfohns\nfoids\nfoils\nfoins\nfoist\nfolds\nfoley\nfolia\nfolic\nfolie\nfolio\nfolks\nfolky\nfolly\nfomes\nfonda\nfonds\nfondu\nfones\nfonio\nfonly\nfonts\nfoods\nfoody\nfools\nfoots\nfooty\nforam\nforay\nforbs\nforby\nforce\nfordo\nfords\nforel\nfores\nforex\nforge\nforgo\nforks\nforky\nforma\nforme\nforms\nforte\nforth\nforts\nforty\nforum\nforza\nforze\nfossa\nfosse\nfouat\nfouds\nfouer\nfouet\nfoule\nfouls\nfound\nfount\nfours\nfouth\nfovea\nfowls\nfowth\nfoxed\nfoxes\nfoxie\nfoyer\nfoyle\nfoyne\nfrabs\nfrack\nfract\nfrags\nfrail\nfraim\nfrais\nframe\nfranc\nfrank\nfrape\nfraps\nfrass\nfrate\nfrati\nfrats\nfraud\nfraus\nfrays\nfreak\nfreed\nfreer\nfrees\nfreet\nfreit\nfremd\nfrena\nfreon\nfrere\nfresh\nfrets\nfriar\nfribs\nfried\nfrier\nfries\nfrigs\nfrill\nfrise\nfrisk\nfrist\nfrita\nfrite\nfrith\nfrits\nfritt\nfritz\nfrize\nfrizz\nfrock\nfroes\nfrogs\nfromm\nfrond\nfrons\nfront\nfroom\nfrore\nfrorn\nfrory\nfrosh\nfrost\nfroth\nfrown\nfrows\nfrowy\nfroyo\nfroze\nfrugs\nfruit\nfrump\nfrush\nfrust\nfryer\nfubar\nfubby\nfubsy\nfucks\nfucus\nfuddy\nfudge\nfudgy\nfuels\nfuero\nfuffs\nfuffy\nfugal\nfuggy\nfugie\nfugio\nfugis\nfugle\nfugly\nfugue\nfugus\nfujis\nfulla\nfulls\nfully\nfulth\nfulwa\nfumed\nfumer\nfumes\nfumet\nfunda\nfundi\nfundo\nfunds\nfundy\nfungi\nfungo\nfungs\nfunic\nfunis\nfunks\nfunky\nfunny\nfunsy\nfunts\nfural\nfuran\nfurca\nfurls\nfurol\nfuror\nfuros\nfurrs\nfurry\nfurth\nfurze\nfurzy\nfused\nfusee\nfusel\nfuses\nfusil\nfusks\nfussy\nfusts\nfusty\nfuton\nfuzed\nfuzee\nfuzes\nfuzil\nfuzzy\nfyces\nfyked\nfykes\nfyles\nfyrds\nfytte\ngabba\ngabby\ngable\ngaddi\ngades\ngadge\ngadgy\ngadid\ngadis\ngadje\ngadjo\ngadso\ngaffe\ngaffs\ngaged\ngager\ngages\ngaids\ngaily\ngains\ngairs\ngaita\ngaits\ngaitt\ngajos\ngalah\ngalas\ngalax\ngalea\ngaled\ngales\ngalia\ngalis\ngalls\ngally\ngalop\ngalut\ngalvo\ngamas\ngamay\ngamba\ngambe\ngambo\ngambs\ngamed\ngamer\ngames\ngamey\ngamic\ngamin\ngamma\ngamme\ngammy\ngamps\ngamut\nganch\ngandy\nganef\nganev\ngangs\nganja\nganks\nganof\ngants\ngaols\ngaped\ngaper\ngapes\ngapos\ngappy\ngaram\ngarba\ngarbe\ngarbo\ngarbs\ngarda\ngarde\ngares\ngaris\ngarms\ngarni\ngarre\ngarri\ngarth\ngarum\ngases\ngashy\ngasps\ngaspy\ngassy\ngasts\ngatch\ngated\ngater\ngates\ngaths\ngator\ngauch\ngaucy\ngauds\ngaudy\ngauge\ngauje\ngault\ngaums\ngaumy\ngaunt\ngaups\ngaurs\ngauss\ngauze\ngauzy\ngavel\ngavot\ngawcy\ngawds\ngawks\ngawky\ngawps\ngawsy\ngayal\ngayer\ngayly\ngazal\ngazar\ngazed\ngazer\ngazes\ngazon\ngazoo\ngeals\ngeans\ngeare\ngears\ngeasa\ngeats\ngebur\ngecko\ngecks\ngeeks\ngeeky\ngeeps\ngeese\ngeest\ngeist\ngeits\ngelds\ngelee\ngelid\ngelly\ngelts\ngemel\ngemma\ngemmy\ngemot\ngenae\ngenal\ngenas\ngenes\ngenet\ngenic\ngenie\ngenii\ngenin\ngenio\ngenip\ngenny\ngenoa\ngenom\ngenre\ngenro\ngents\ngenty\ngenua\ngenus\ngeode\ngeoid\ngerah\ngerbe\ngeres\ngerle\ngerms\ngermy\ngerne\ngesse\ngesso\ngeste\ngests\ngetas\ngetup\ngeums\ngeyan\ngeyer\nghast\nghats\nghaut\nghazi\nghees\nghest\nghost\nghoul\nghusl\nghyll\ngiant\ngibed\ngibel\ngiber\ngibes\ngibli\ngibus\ngiddy\ngifts\ngigas\ngighe\ngigot\ngigue\ngilas\ngilds\ngilet\ngilia\ngills\ngilly\ngilpy\ngilts\ngimel\ngimme\ngimps\ngimpy\nginch\nginga\nginge\ngings\nginks\nginny\nginzo\ngipon\ngippo\ngippy\ngipsy\ngirds\ngirlf\ngirls\ngirly\ngirns\ngiron\ngiros\ngirrs\ngirsh\ngirth\ngirts\ngismo\ngisms\ngists\ngitch\ngites\ngiust\ngived\ngiven\ngiver\ngives\ngizmo\nglace\nglade\nglads\nglady\nglaik\nglair\nglamp\nglams\ngland\nglans\nglare\nglary\nglass\nglatt\nglaum\nglaur\nglaze\nglazy\ngleam\nglean\ngleba\nglebe\ngleby\nglede\ngleds\ngleed\ngleek\nglees\ngleet\ngleis\nglens\nglent\ngleys\nglial\nglias\nglibs\nglide\ngliff\nglift\nglike\nglime\nglims\nglint\nglisk\nglits\nglitz\ngloam\ngloat\nglobe\nglobi\nglobs\ngloby\nglode\nglogg\ngloms\ngloom\ngloop\nglops\nglory\ngloss\nglost\nglout\nglove\nglows\nglowy\ngloze\nglued\ngluer\nglues\ngluey\nglugg\nglugs\nglume\nglums\ngluon\nglute\ngluts\nglyph\ngnapi\ngnarl\ngnarr\ngnars\ngnash\ngnats\ngnawn\ngnaws\ngnome\ngnows\ngoads\ngoafs\ngoaft\ngoals\ngoary\ngoats\ngoaty\ngoave\ngoban\ngobar\ngobbe\ngobbi\ngobbo\ngobby\ngobis\ngobos\ngodet\ngodly\ngodso\ngoels\ngoers\ngoest\ngoeth\ngoety\ngofer\ngoffs\ngogga\ngogos\ngoier\ngoing\ngojis\ngokes\ngolds\ngoldy\ngolem\ngoles\ngolfs\ngolly\ngolpe\ngolps\ngombo\ngomer\ngompa\ngonad\ngonch\ngonef\ngoner\ngongs\ngonia\ngonif\ngonks\ngonna\ngonof\ngonys\ngonzo\ngooby\ngoodo\ngoods\ngoody\ngooey\ngoofs\ngoofy\ngoogs\ngooks\ngooky\ngoold\ngools\ngooly\ngoomy\ngoons\ngoony\ngoops\ngoopy\ngoors\ngoory\ngoose\ngoosy\ngopak\ngopik\ngoral\ngoras\ngoray\ngorbs\ngordo\ngored\ngores\ngorge\ngoris\ngorms\ngormy\ngorps\ngorse\ngorsy\ngosht\ngosse\ngotch\ngoths\ngothy\ngotta\ngouch\ngouge\ngouks\ngoura\ngourd\ngouts\ngouty\ngoved\ngoves\ngowan\ngowds\ngowfs\ngowks\ngowls\ngowns\ngoxes\ngoyim\ngoyle\ngraal\ngrabs\ngrace\ngrade\ngrads\ngraff\ngraft\ngrail\ngrain\ngraip\ngrama\ngrame\ngramp\ngrams\ngrana\ngrand\ngrano\ngrans\ngrant\ngrape\ngraph\ngrapy\ngrasp\ngrass\ngrata\ngrate\ngrats\ngrave\ngravs\ngravy\ngrays\ngraze\ngreat\ngrebe\ngrebo\ngrece\ngreed\ngreek\ngreen\ngrees\ngreet\ngrege\ngrego\ngrein\ngrens\ngreps\ngrese\ngreve\ngrews\ngreys\ngrice\ngride\ngrids\ngrief\ngriff\ngrift\ngrigs\ngrike\ngrill\ngrime\ngrimy\ngrind\ngrins\ngriot\ngripe\ngrips\ngript\ngripy\ngrise\ngrist\ngrisy\ngrith\ngrits\ngrize\ngroan\ngroat\ngrody\ngrogs\ngroin\ngroks\ngroma\ngroms\ngrone\ngroof\ngroom\ngrope\ngross\ngrosz\ngrots\ngrouf\ngroup\ngrout\ngrove\ngrovy\ngrowl\ngrown\ngrows\ngrrls\ngrrrl\ngrubs\ngrued\ngruel\ngrues\ngrufe\ngruff\ngrume\ngrump\ngrund\ngrunt\ngryce\ngryde\ngryke\ngrype\ngrypt\nguaco\nguana\nguano\nguans\nguard\nguars\nguava\ngubba\ngucks\ngucky\ngudes\nguess\nguest\nguffs\ngugas\nguggl\nguide\nguido\nguids\nguild\nguile\nguilt\nguimp\nguiro\nguise\ngulab\ngulag\ngular\ngulas\ngulch\ngules\ngulet\ngulfs\ngulfy\ngulls\ngully\ngulph\ngulps\ngulpy\ngumbo\ngumma\ngummi\ngummy\ngumps\ngunas\ngundi\ngundy\ngunge\ngungy\ngunks\ngunky\ngunny\nguppy\nguqin\ngurdy\ngurge\ngurks\ngurls\ngurly\ngurns\ngurry\ngursh\ngurus\ngushy\ngusla\ngusle\ngusli\ngussy\ngusto\ngusts\ngusty\ngutsy\ngutta\ngutty\nguyed\nguyle\nguyot\nguyse\ngwine\ngyals\ngyans\ngybed\ngybes\ngyeld\ngymps\ngynae\ngynie\ngynny\ngynos\ngyoza\ngypes\ngypos\ngyppo\ngyppy\ngypsy\ngyral\ngyred\ngyres\ngyron\ngyros\ngyrus\ngytes\ngyved\ngyver\ngyves\nhaafs\nhaars\nhaats\nhabit\nhable\nhabus\nhacek\nhacks\nhacky\nhadal\nhaded\nhades\nhadji\nhadst\nhaems\nhaere\nhaets\nhaffs\nhafiz\nhafta\nhafts\nhaggs\nhaham\nhahas\nhaick\nhaika\nhaiks\nhaiku\nhails\nhaily\nhains\nhaint\nhairs\nhairy\nhaith\nhajes\nhajis\nhajji\nhakam\nhakas\nhakea\nhakes\nhakim\nhakus\nhalal\nhaldi\nhaled\nhaler\nhales\nhalfa\nhalfs\nhalid\nhallo\nhalls\nhalma\nhalms\nhalon\nhalos\nhalse\nhalsh\nhalts\nhalva\nhalve\nhalwa\nhamal\nhamba\nhamed\nhamel\nhames\nhammy\nhamza\nhanap\nhance\nhanch\nhandi\nhands\nhandy\nhangi\nhangs\nhanks\nhanky\nhansa\nhanse\nhants\nhaole\nhaoma\nhapas\nhapax\nhaply\nhappi\nhappy\nhapus\nharam\nhards\nhardy\nhared\nharem\nhares\nharim\nharks\nharls\nharms\nharns\nharos\nharps\nharpy\nharry\nharsh\nharts\nhashy\nhasks\nhasps\nhasta\nhaste\nhasty\nhatch\nhated\nhater\nhates\nhatha\nhathi\nhatty\nhauds\nhaufs\nhaugh\nhaugo\nhauld\nhaulm\nhauls\nhault\nhauns\nhaunt\nhause\nhaute\nhavan\nhavel\nhaven\nhaver\nhaves\nhavoc\nhawed\nhawks\nhawms\nhawse\nhayed\nhayer\nhayey\nhayle\nhazan\nhazed\nhazel\nhazer\nhazes\nhazle\nheads\nheady\nheald\nheals\nheame\nheaps\nheapy\nheard\nheare\nhears\nheart\nheast\nheath\nheats\nheaty\nheave\nheavy\nheben\nhebes\nhecht\nhecks\nheder\nhedge\nhedgy\nheeds\nheedy\nheels\nheeze\nhefte\nhefts\nhefty\nheiau\nheids\nheigh\nheils\nheirs\nheist\nhejab\nhejra\nheled\nheles\nhelio\nhelix\nhella\nhello\nhells\nhelly\nhelms\nhelos\nhelot\nhelps\nhelve\nhemal\nhemes\nhemic\nhemin\nhemps\nhempy\nhence\nhench\nhends\nhenge\nhenna\nhenny\nhenry\nhents\nhepar\nherbs\nherby\nherds\nheres\nherls\nherma\nherms\nherns\nheron\nheros\nherps\nherry\nherse\nhertz\nherye\nhesps\nhests\nhetes\nheths\nheuch\nheugh\nhevea\nhevel\nhewed\nhewer\nhewgh\nhexad\nhexed\nhexer\nhexes\nhexyl\nheyed\nhiant\nhibas\nhicks\nhided\nhider\nhides\nhiems\nhifis\nhighs\nhight\nhijab\nhijra\nhiked\nhiker\nhikes\nhikoi\nhilar\nhilch\nhillo\nhills\nhilly\nhilsa\nhilts\nhilum\nhilus\nhimbo\nhinau\nhinds\nhinge\nhings\nhinky\nhinny\nhints\nhiois\nhiped\nhiper\nhipes\nhiply\nhippo\nhippy\nhired\nhiree\nhirer\nhires\nhissy\nhists\nhitch\nhithe\nhived\nhiver\nhives\nhizen\nhoach\nhoaed\nhoagy\nhoard\nhoars\nhoary\nhoast\nhobby\nhobos\nhocks\nhocus\nhodad\nhodja\nhoers\nhogan\nhogen\nhoggs\nhoghs\nhogoh\nhogos\nhohed\nhoick\nhoied\nhoiks\nhoing\nhoise\nhoist\nhokas\nhoked\nhokes\nhokey\nhokis\nhokku\nhokum\nholds\nholed\nholes\nholey\nholks\nholla\nhollo\nholly\nholme\nholms\nholon\nholos\nholts\nhomas\nhomed\nhomer\nhomes\nhomey\nhomie\nhomme\nhomos\nhonan\nhonda\nhonds\nhoned\nhoner\nhones\nhoney\nhongi\nhongs\nhonks\nhonky\nhonor\nhooch\nhoods\nhoody\nhooey\nhoofs\nhoogo\nhooha\nhooka\nhooks\nhooky\nhooly\nhoons\nhoops\nhoord\nhoors\nhoosh\nhoots\nhooty\nhoove\nhopak\nhoped\nhoper\nhopes\nhoppy\nhorah\nhoral\nhoras\nhorde\nhoris\nhorks\nhorme\nhorns\nhorny\nhorse\nhorst\nhorsy\nhosed\nhosel\nhosen\nhoser\nhoses\nhosey\nhosta\nhosts\nhotch\nhotel\nhoten\nhotis\nhotly\nhotte\nhotty\nhouff\nhoufs\nhough\nhound\nhouri\nhours\nhouse\nhouts\nhovea\nhoved\nhovel\nhoven\nhover\nhoves\nhoway\nhowbe\nhowdy\nhowes\nhowff\nhowfs\nhowks\nhowls\nhowre\nhowso\nhowto\nhoxed\nhoxes\nhoyas\nhoyed\nhoyle\nhubba\nhubby\nhucks\nhudna\nhudud\nhuers\nhuffs\nhuffy\nhuger\nhuggy\nhuhus\nhuias\nhuies\nhukou\nhulas\nhules\nhulks\nhulky\nhullo\nhulls\nhully\nhuman\nhumas\nhumfs\nhumic\nhumid\nhumor\nhumph\nhumps\nhumpy\nhumus\nhunch\nhundo\nhunks\nhunky\nhunts\nhurds\nhurls\nhurly\nhurra\nhurry\nhurst\nhurts\nhurty\nhushy\nhusks\nhusky\nhusos\nhussy\nhutch\nhutia\nhuzza\nhuzzy\nhwyls\nhydel\nhydra\nhydro\nhyena\nhyens\nhygge\nhying\nhykes\nhylas\nhyleg\nhyles\nhylic\nhymen\nhymns\nhynde\nhyoid\nhyped\nhyper\nhypes\nhypha\nhyphy\nhypos\nhyrax\nhyson\nhythe\niambi\niambs\nibrik\nicers\niched\niches\nichor\nicier\nicily\nicing\nicker\nickle\nicons\nictal\nictic\nictus\nidant\niddah\niddat\niddut\nideal\nideas\nidees\nident\nidiom\nidiot\nidled\nidler\nidles\nidlis\nidola\nidols\nidyll\nidyls\niftar\nigapo\nigged\nigloo\niglus\nignis\nihram\niiwis\nikans\nikats\nikons\nileac\nileal\nileum\nileus\niliac\niliad\nilial\nilium\niller\nillth\nimage\nimago\nimagy\nimams\nimari\nimaum\nimbar\nimbed\nimbos\nimbue\nimide\nimido\nimids\nimine\nimino\nimlis\nimmew\nimmit\nimmix\nimped\nimpel\nimpis\nimply\nimpot\nimpro\nimshi\nimshy\ninane\ninapt\ninarm\ninbox\ninbye\nincas\nincel\nincle\nincog\nincur\nincus\nincut\nindew\nindex\nindia\nindie\nindol\nindow\nindri\nindue\ninept\ninerm\ninert\ninfer\ninfix\ninfos\ninfra\ningan\ningle\ningot\ninion\ninked\ninker\ninkle\ninlay\ninlet\ninned\ninner\ninnie\ninnit\ninorb\ninput\ninros\ninrun\ninsee\ninset\ninspo\nintel\ninter\nintil\nintis\nintra\nintro\ninula\ninure\ninurn\ninust\ninvar\ninver\ninwit\niodic\niodid\niodin\nionic\nioras\niotas\nippon\nirade\nirate\nirids\niring\nirked\niroko\nirone\nirons\nirony\nisbas\nishes\nisled\nisles\nislet\nisnae\nissei\nissue\nistle\nitchy\nitems\nither\nivied\nivies\nivory\nixias\nixnay\nixora\nixtle\nizard\nizars\nizzat\njaaps\njabot\njacal\njacet\njacks\njacky\njaded\njades\njafas\njaffa\njagas\njager\njaggs\njaggy\njagir\njagra\njails\njaker\njakes\njakey\njakie\njalap\njaleo\njalop\njambe\njambo\njambs\njambu\njames\njammy\njamon\njamun\njanes\njanky\njanns\njanny\njanty\njapan\njaped\njaper\njapes\njarks\njarls\njarps\njarta\njarul\njasey\njaspe\njasps\njatha\njatis\njatos\njauks\njaune\njaunt\njaups\njavas\njavel\njawan\njawed\njawns\njaxie\njazzy\njeans\njeats\njebel\njedis\njeels\njeely\njeeps\njeera\njeers\njeeze\njefes\njeffs\njehad\njehus\njelab\njello\njells\njelly\njembe\njemmy\njenny\njeons\njerid\njerks\njerky\njerry\njesse\njessy\njests\njesus\njetee\njetes\njeton\njetty\njeune\njewed\njewel\njewie\njhala\njheel\njhils\njiaos\njibba\njibbs\njibed\njiber\njibes\njiffs\njiffy\njiggy\njigot\njihad\njills\njilts\njimmy\njimpy\njingo\njings\njinks\njinne\njinni\njinns\njirds\njirga\njirre\njisms\njitis\njitty\njived\njiver\njives\njivey\njnana\njobed\njobes\njocko\njocks\njocky\njocos\njodel\njoeys\njohns\njoins\njoint\njoist\njoked\njoker\njokes\njokey\njokol\njoled\njoles\njolie\njollo\njolls\njolly\njolts\njolty\njomon\njomos\njones\njongs\njonty\njooks\njoram\njorts\njorum\njotas\njotty\njotun\njoual\njougs\njouks\njoule\njours\njoust\njowar\njowed\njowls\njowly\njoyed\njubas\njubes\njucos\njudas\njudge\njudgy\njudos\njugal\njugum\njuice\njuicy\njujus\njuked\njukes\njukus\njulep\njulia\njumar\njumbo\njumby\njumps\njumpy\njunco\njunks\njunky\njunta\njunto\njupes\njupon\njural\njurat\njurel\njures\njuris\njuror\njuste\njusts\njutes\njutty\njuves\njuvie\nkaama\nkabab\nkabar\nkabob\nkacha\nkacks\nkadai\nkades\nkadis\nkafir\nkagos\nkagus\nkahal\nkaiak\nkaids\nkaies\nkaifs\nkaika\nkaiks\nkails\nkaims\nkaing\nkains\nkajal\nkakas\nkakis\nkalam\nkalas\nkales\nkalif\nkalis\nkalpa\nkalua\nkamas\nkames\nkamik\nkamis\nkamme\nkanae\nkanal\nkanas\nkanat\nkandy\nkaneh\nkanes\nkanga\nkangs\nkanji\nkants\nkanzu\nkaons\nkapai\nkapas\nkapha\nkaphs\nkapok\nkapow\nkappa\nkapur\nkapus\nkaput\nkarai\nkaras\nkarat\nkaree\nkarez\nkarks\nkarma\nkarns\nkaroo\nkaros\nkarri\nkarst\nkarsy\nkarts\nkarzy\nkasha\nkasme\nkatal\nkatas\nkatis\nkatti\nkaugh\nkauri\nkauru\nkaury\nkaval\nkavas\nkawas\nkawau\nkawed\nkayak\nkayle\nkayos\nkazis\nkazoo\nkbars\nkcals\nkeaki\nkebab\nkebar\nkebob\nkecks\nkedge\nkedgy\nkeech\nkeefs\nkeeks\nkeels\nkeema\nkeeno\nkeens\nkeeps\nkeets\nkeeve\nkefir\nkehua\nkeirs\nkelep\nkelim\nkells\nkelly\nkelps\nkelpy\nkelts\nkelty\nkembo\nkembs\nkemps\nkempt\nkempy\nkenaf\nkench\nkendo\nkenos\nkente\nkents\nkepis\nkerbs\nkerel\nkerfs\nkerky\nkerma\nkerne\nkerns\nkeros\nkerry\nkerve\nkesar\nkests\nketas\nketch\nketes\nketol\nkevel\nkevil\nkexes\nkeyed\nkeyer\nkhadi\nkhads\nkhafs\nkhaki\nkhana\nkhans\nkhaph\nkhats\nkhaya\nkhazi\nkheda\nkheer\nkheth\nkhets\nkhirs\nkhoja\nkhors\nkhoum\nkhuds\nkhula\nkhyal\nkiaat\nkiack\nkiaki\nkiang\nkiasu\nkibbe\nkibbi\nkibei\nkibes\nkibla\nkicks\nkicky\nkiddo\nkiddy\nkidel\nkideo\nkidge\nkiefs\nkiers\nkieve\nkievs\nkight\nkikay\nkikes\nkikoi\nkiley\nkilig\nkilim\nkills\nkilns\nkilos\nkilps\nkilts\nkilty\nkimbo\nkimet\nkinas\nkinda\nkinds\nkindy\nkines\nkings\nkingy\nkinin\nkinks\nkinky\nkinos\nkiore\nkiosk\nkipah\nkipas\nkipes\nkippa\nkipps\nkipsy\nkirby\nkirks\nkirns\nkirri\nkisan\nkissy\nkists\nkitab\nkited\nkiter\nkites\nkithe\nkiths\nkitke\nkitty\nkitul\nkivas\nkiwis\nklang\nklaps\nklett\nklick\nklieg\nkliks\nklong\nkloof\nkluge\nklutz\nknack\nknags\nknaps\nknarl\nknars\nknaur\nknave\nknawe\nknead\nkneed\nkneel\nknees\nknell\nknelt\nknick\nknife\nknish\nknits\nknive\nknobs\nknock\nknoll\nknoop\nknops\nknosp\nknots\nknoud\nknout\nknowd\nknowe\nknown\nknows\nknubs\nknule\nknurl\nknurr\nknurs\nknuts\nkoala\nkoans\nkoaps\nkoban\nkobos\nkoels\nkoffs\nkofta\nkogal\nkohas\nkohen\nkohls\nkoine\nkoiwi\nkojis\nkokam\nkokas\nkoker\nkokra\nkokum\nkolas\nkolos\nkombi\nkombu\nkonbu\nkondo\nkonks\nkooks\nkooky\nkoori\nkopek\nkophs\nkopje\nkoppa\nkorai\nkoran\nkoras\nkorat\nkores\nkoris\nkorma\nkoros\nkorun\nkorus\nkoses\nkotch\nkotos\nkotow\nkoura\nkraal\nkrabs\nkraft\nkrais\nkrait\nkrang\nkrans\nkranz\nkraut\nkrays\nkreef\nkreen\nkreep\nkreng\nkrewe\nkrill\nkriol\nkrona\nkrone\nkroon\nkrubi\nkrump\nkrunk\nksars\nkubie\nkudos\nkudus\nkudzu\nkufis\nkugel\nkuias\nkukri\nkukus\nkulak\nkulan\nkulas\nkulfi\nkumis\nkumys\nkunas\nkunds\nkuris\nkurre\nkurta\nkurus\nkusso\nkusti\nkutai\nkutas\nkutch\nkutis\nkutus\nkuyas\nkuzus\nkvass\nkvell\nkwaai\nkwela\nkwink\nkwirl\nkyack\nkyaks\nkyang\nkyars\nkyats\nkybos\nkydst\nkyles\nkylie\nkylin\nkylix\nkyloe\nkynde\nkynds\nkypes\nkyrie\nkytes\nkythe\nkyudo\nlaarf\nlaari\nlabda\nlabel\nlabia\nlabis\nlabne\nlabor\nlabra\nlaccy\nlaced\nlacer\nlaces\nlacet\nlacey\nlacis\nlacka\nlacks\nlacky\nladdu\nladdy\nladed\nladee\nladen\nlader\nlades\nladle\nladoo\nlaers\nlaevo\nlagan\nlagar\nlager\nlaggy\nlahal\nlahar\nlaich\nlaics\nlaide\nlaids\nlaigh\nlaika\nlaiks\nlaird\nlairs\nlairy\nlaith\nlaity\nlaked\nlaker\nlakes\nlakhs\nlakin\nlaksa\nlaldy\nlalls\nlamas\nlambs\nlamby\nlamed\nlamer\nlames\nlamia\nlammy\nlamps\nlanai\nlanas\nlance\nlanch\nlande\nlands\nlaned\nlanes\nlanks\nlanky\nlants\nlapas\nlapel\nlapin\nlapis\nlapje\nlappa\nlappy\nlapse\nlarch\nlards\nlardy\nlaree\nlares\nlarfs\nlarga\nlarge\nlargo\nlaris\nlarks\nlarky\nlarns\nlarnt\nlarum\nlarva\nlased\nlaser\nlases\nlassi\nlasso\nlassu\nlassy\nlasts\nlatah\nlatch\nlated\nlaten\nlater\nlatex\nlathe\nlathi\nlaths\nlathy\nlatke\nlatte\nlatus\nlauan\nlauch\nlaude\nlauds\nlaufs\nlaugh\nlaund\nlaura\nlaval\nlavas\nlaved\nlaver\nlaves\nlavra\nlavvy\nlawed\nlawer\nlawin\nlawks\nlawns\nlawny\nlawsy\nlaxed\nlaxer\nlaxes\nlaxly\nlayby\nlayed\nlayer\nlayin\nlayup\nlazar\nlazed\nlazes\nlazos\nlazzi\nlazzo\nleach\nleads\nleady\nleafs\nleafy\nleaks\nleaky\nleams\nleans\nleant\nleany\nleaps\nleapt\nleare\nlearn\nlears\nleary\nlease\nleash\nleast\nleats\nleave\nleavy\nleaze\nleben\nleccy\nleche\nledes\nledge\nledgy\nledum\nleear\nleech\nleeks\nleeps\nleers\nleery\nleese\nleets\nleeze\nlefte\nlefts\nlefty\nlegal\nleger\nleges\nlegge\nleggo\nleggy\nlegit\nlegno\nlehrs\nlehua\nleirs\nleish\nleman\nlemed\nlemel\nlemes\nlemma\nlemme\nlemon\nlemur\nlends\nlenes\nlengs\nlenis\nlenos\nlense\nlenti\nlento\nleone\nlepak\nleper\nlepid\nlepra\nlepta\nlered\nleres\nlerps\nlesbo\nleses\nlesos\nlests\nletch\nlethe\nletty\nletup\nleuch\nleuco\nleuds\nleugh\nlevas\nlevee\nlevel\nlever\nleves\nlevin\nlevis\nlewis\nlexes\nlexis\nlezes\nlezza\nlezzo\nlezzy\nliana\nliane\nliang\nliard\nliars\nliart\nlibel\nliber\nlibor\nlibra\nlibre\nlibri\nlicet\nlichi\nlicht\nlicit\nlicks\nlidar\nlidos\nliefs\nliege\nliens\nliers\nlieus\nlieve\nlifer\nlifes\nlifey\nlifts\nligan\nliger\nligge\nlight\nligne\nliked\nliken\nliker\nlikes\nlikin\nlilac\nlills\nlilos\nlilts\nlilty\nliman\nlimas\nlimax\nlimba\nlimbi\nlimbo\nlimbs\nlimby\nlimed\nlimen\nlimes\nlimey\nlimit\nlimma\nlimns\nlimos\nlimpa\nlimps\nlinac\nlinch\nlinds\nlindy\nlined\nlinen\nliner\nlines\nliney\nlinga\nlingo\nlings\nlingy\nlinin\nlinks\nlinky\nlinns\nlinny\nlinos\nlints\nlinty\nlinum\nlinux\nlions\nlipas\nlipes\nlipid\nlipin\nlipos\nlippy\nliras\nlirks\nlirot\nlises\nlisks\nlisle\nlisps\nlists\nlitai\nlitas\nlited\nlitem\nliter\nlites\nlithe\nlitho\nliths\nlitie\nlitre\nlived\nliven\nliver\nlives\nlivid\nlivor\nlivre\nliwaa\nliwas\nllama\nllano\nloach\nloads\nloafs\nloams\nloamy\nloans\nloast\nloath\nloave\nlobar\nlobby\nlobed\nlobes\nlobos\nlobus\nlocal\nloche\nlochs\nlochy\nlocie\nlocis\nlocks\nlocky\nlocos\nlocum\nlocus\nloden\nlodes\nlodge\nloess\nlofts\nlofty\nlogan\nloges\nloggy\nlogia\nlogic\nlogie\nlogin\nlogoi\nlogon\nlogos\nlohan\nloids\nloins\nloipe\nloirs\nlokes\nlokey\nlokum\nlolas\nloled\nlollo\nlolls\nlolly\nlolog\nlolos\nlomas\nlomed\nlomes\nloner\nlonga\nlonge\nlongs\nlooby\nlooed\nlooey\nloofa\nloofs\nlooie\nlooks\nlooky\nlooms\nloons\nloony\nloops\nloopy\nloord\nloose\nloots\nloped\nloper\nlopes\nloppy\nloral\nloran\nlords\nlordy\nlorel\nlores\nloric\nloris\nlorry\nlosed\nlosel\nlosen\nloser\nloses\nlossy\nlotah\nlotas\nlotes\nlotic\nlotos\nlotsa\nlotta\nlotte\nlotto\nlotus\nloued\nlough\nlouie\nlouis\nlouma\nlound\nlouns\nloupe\nloups\nloure\nlours\nloury\nlouse\nlousy\nlouts\nlovat\nloved\nlovee\nlover\nloves\nlovey\nlovie\nlowan\nlowed\nlowen\nlower\nlowes\nlowly\nlownd\nlowne\nlowns\nlowps\nlowry\nlowse\nlowth\nlowts\nloxed\nloxes\nloyal\nlozen\nluach\nluaus\nlubed\nlubes\nlubra\nluces\nlucid\nlucks\nlucky\nlucre\nludes\nludic\nludos\nluffa\nluffs\nluged\nluger\nluges\nlulls\nlulus\nlumas\nlumbi\nlumen\nlumme\nlummy\nlumps\nlumpy\nlunar\nlunas\nlunch\nlunes\nlunet\nlunge\nlungi\nlungs\nlunks\nlunts\nlupin\nlupus\nlurch\nlured\nlurer\nlures\nlurex\nlurgi\nlurgy\nlurid\nlurks\nlurry\nlurve\nluser\nlushy\nlusks\nlusts\nlusty\nlusus\nlutea\nluted\nluter\nlutes\nluvvy\nluxed\nluxer\nluxes\nlweis\nlyams\nlyard\nlyart\nlyase\nlycea\nlycee\nlycra\nlying\nlymes\nlymph\nlynch\nlynes\nlyres\nlyric\nlysed\nlyses\nlysin\nlysis\nlysol\nlyssa\nlyted\nlytes\nlythe\nlytic\nlytta\nmaaed\nmaare\nmaars\nmaban\nmabes\nmacas\nmacaw\nmacca\nmaced\nmacer\nmaces\nmache\nmachi\nmacho\nmachs\nmacka\nmacks\nmacle\nmacon\nmacro\nmacte\nmadal\nmadam\nmadar\nmaddy\nmadge\nmadid\nmadly\nmados\nmadre\nmaedi\nmaerl\nmafia\nmafic\nmafts\nmagas\nmages\nmaggs\nmagic\nmagma\nmagna\nmagot\nmagus\nmahal\nmahem\nmahis\nmahoe\nmahrs\nmahua\nmahwa\nmaids\nmaiko\nmaiks\nmaile\nmaill\nmailo\nmails\nmaims\nmains\nmaire\nmairs\nmaise\nmaist\nmaize\nmajas\nmajat\nmajoe\nmajor\nmajos\nmakaf\nmakai\nmakan\nmakar\nmakee\nmaker\nmakes\nmakie\nmakis\nmakos\nmalae\nmalai\nmalam\nmalar\nmalas\nmalax\nmaleo\nmales\nmalic\nmalik\nmalis\nmalky\nmalls\nmalms\nmalmy\nmalts\nmalty\nmalus\nmalva\nmalwa\nmamak\nmamas\nmamba\nmambo\nmambu\nmamee\nmamey\nmamie\nmamil\nmamma\nmammy\nmanas\nmanat\nmandi\nmands\nmandy\nmaneb\nmaned\nmaneh\nmanes\nmanet\nmanga\nmange\nmangi\nmango\nmangs\nmangy\nmania\nmanic\nmanie\nmanis\nmanks\nmanky\nmanly\nmanna\nmanny\nmanoa\nmanor\nmanos\nmanse\nmanso\nmanta\nmante\nmanto\nmants\nmanty\nmanul\nmanus\nmanzo\nmapau\nmapes\nmaple\nmapou\nmappy\nmaqam\nmaqui\nmarae\nmarah\nmaral\nmaran\nmaras\nmaray\nmarch\nmarcs\nmards\nmardy\nmares\nmarga\nmarge\nmargo\nmargs\nmaria\nmarid\nmaril\nmarka\nmarks\nmarle\nmarls\nmarly\nmarma\nmarms\nmaron\nmaror\nmarra\nmarri\nmarry\nmarse\nmarsh\nmarts\nmarua\nmarvy\nmasas\nmased\nmaser\nmases\nmasha\nmashy\nmasks\nmason\nmassa\nmasse\nmassy\nmasts\nmasty\nmasur\nmasus\nmasut\nmatai\nmatch\nmated\nmater\nmates\nmatey\nmathe\nmaths\nmatin\nmatlo\nmatra\nmatsu\nmatte\nmatts\nmatty\nmatza\nmatzo\nmauby\nmauds\nmauka\nmaula\nmauls\nmaums\nmaumy\nmaund\nmaunt\nmauri\nmausy\nmauts\nmauve\nmauvy\nmauzy\nmaven\nmavie\nmavin\nmavis\nmawed\nmawks\nmawky\nmawla\nmawns\nmawps\nmawrs\nmaxed\nmaxes\nmaxim\nmaxis\nmayan\nmayas\nmaybe\nmayed\nmayor\nmayos\nmayst\nmazac\nmazak\nmazar\nmazas\nmazed\nmazel\nmazer\nmazes\nmazet\nmazey\nmazut\nmbari\nmbars\nmbila\nmbira\nmbret\nmbube\nmbuga\nmeads\nmeake\nmeaks\nmeals\nmealy\nmeane\nmeans\nmeant\nmeany\nmeare\nmease\nmeath\nmeats\nmeaty\nmebbe\nmebos\nmecca\nmecha\nmechs\nmecks\nmecum\nmedal\nmedia\nmedic\nmedii\nmedin\nmedle\nmeech\nmeeds\nmeeja\nmeeps\nmeers\nmeets\nmeffs\nmeids\nmeiko\nmeils\nmeins\nmeint\nmeiny\nmeism\nmeith\nmekka\nmelam\nmelas\nmelba\nmelch\nmelds\nmelee\nmeles\nmelic\nmelik\nmells\nmeloe\nmelon\nmelos\nmelts\nmelty\nmemes\nmemic\nmemos\nmenad\nmence\nmends\nmened\nmenes\nmenge\nmengs\nmenil\nmensa\nmense\nmensh\nmenta\nmento\nments\nmenus\nmeous\nmeows\nmerch\nmercs\nmercy\nmerde\nmerds\nmered\nmerel\nmerer\nmeres\nmerge\nmeril\nmeris\nmerit\nmerks\nmerle\nmerls\nmerry\nmerse\nmersk\nmesad\nmesal\nmesas\nmesca\nmesel\nmesem\nmeses\nmeshy\nmesia\nmesic\nmesne\nmeson\nmessy\nmesto\nmesyl\nmetal\nmetas\nmeted\nmeteg\nmetel\nmeter\nmetes\nmethi\nmetho\nmeths\nmethy\nmetic\nmetif\nmetis\nmetol\nmetre\nmetro\nmetta\nmeums\nmeuse\nmeved\nmeves\nmewed\nmewls\nmeynt\nmezes\nmezza\nmezze\nmezzo\nmgals\nmhorr\nmiais\nmiaou\nmiaow\nmiasm\nmiaul\nmicas\nmiche\nmichi\nmicht\nmicks\nmicky\nmicos\nmicra\nmicro\nmiddy\nmidge\nmidgy\nmidis\nmidst\nmiens\nmieux\nmieve\nmiffs\nmiffy\nmifty\nmiggs\nmight\nmigma\nmigod\nmihas\nmihis\nmikan\nmiked\nmikes\nmikos\nmikra\nmikva\nmilch\nmilds\nmiler\nmiles\nmilfs\nmilia\nmilko\nmilks\nmilky\nmille\nmills\nmilly\nmilor\nmilos\nmilpa\nmilts\nmilty\nmiltz\nmimed\nmimeo\nmimer\nmimes\nmimic\nmimis\nmimsy\nminae\nminar\nminas\nmince\nmincy\nmindi\nminds\nmined\nminer\nmines\nminge\nmingi\nmings\nmingy\nminim\nminis\nminke\nminks\nminny\nminor\nminos\nminse\nmints\nminty\nminus\nminxy\nmiraa\nmirah\nmirch\nmired\nmires\nmirex\nmirid\nmirin\nmirkn\nmirks\nmirky\nmirls\nmirly\nmiros\nmirrl\nmirrs\nmirth\nmirvs\nmirza\nmisal\nmisch\nmisdo\nmiser\nmises\nmisgo\nmisky\nmisls\nmisos\nmissa\nmissy\nmisto\nmists\nmisty\nmitas\nmitch\nmiter\nmites\nmitey\nmitie\nmitis\nmitre\nmitry\nmitta\nmitts\nmivey\nmivvy\nmixed\nmixen\nmixer\nmixes\nmixie\nmixis\nmixte\nmixup\nmiyas\nmizen\nmizes\nmizzy\nmmkay\nmneme\nmoais\nmoaky\nmoals\nmoana\nmoans\nmoany\nmoars\nmoats\nmobby\nmobed\nmobee\nmobes\nmobey\nmobie\nmoble\nmobos\nmocap\nmocha\nmochi\nmochs\nmochy\nmocks\nmocky\nmocos\nmocus\nmodal\nmodel\nmodem\nmoder\nmodes\nmodge\nmodii\nmodin\nmodoc\nmodom\nmodus\nmoeni\nmoers\nmofos\nmogar\nmogas\nmoggy\nmogos\nmogra\nmogue\nmogul\nmohar\nmohel\nmohos\nmohrs\nmohua\nmohur\nmoile\nmoils\nmoira\nmoire\nmoist\nmoits\nmoity\nmojos\nmoker\nmokes\nmokey\nmokis\nmokky\nmokos\nmokus\nmolal\nmolar\nmolas\nmolds\nmoldy\nmoled\nmoler\nmoles\nmoley\nmolie\nmolla\nmolle\nmollo\nmolls\nmolly\nmoloi\nmolos\nmolto\nmolts\nmolue\nmolvi\nmolys\nmomes\nmomie\nmomma\nmomme\nmommy\nmomos\nmompe\nmomus\nmonad\nmonal\nmonas\nmonde\nmondo\nmoner\nmoney\nmongo\nmongs\nmonic\nmonie\nmonks\nmonos\nmonpe\nmonte\nmonth\nmonty\nmoobs\nmooch\nmoods\nmoody\nmooed\nmooey\nmooks\nmoola\nmooli\nmools\nmooly\nmoong\nmooni\nmoons\nmoony\nmoops\nmoors\nmoory\nmoose\nmooth\nmoots\nmoove\nmoped\nmoper\nmopes\nmopey\nmoppy\nmopsy\nmopus\nmorae\nmorah\nmoral\nmoran\nmoras\nmorat\nmoray\nmoree\nmorel\nmores\nmorgy\nmoria\nmorin\nmormo\nmorna\nmorne\nmorns\nmoron\nmoror\nmorph\nmorra\nmorro\nmorse\nmorts\nmoruk\nmosed\nmoses\nmosey\nmosks\nmosso\nmossy\nmoste\nmosto\nmosts\nmoted\nmotel\nmoten\nmotes\nmotet\nmotey\nmoths\nmothy\nmotif\nmotis\nmoton\nmotor\nmotte\nmotto\nmotts\nmotty\nmotus\nmotza\nmouch\nmoues\nmoufs\nmould\nmoule\nmouls\nmoult\nmouly\nmound\nmount\nmoups\nmourn\nmouse\nmoust\nmousy\nmouth\nmoved\nmover\nmoves\nmovie\nmowas\nmowed\nmower\nmowie\nmowra\nmoxas\nmoxie\nmoyas\nmoyle\nmoyls\nmozed\nmozes\nmozos\nmpret\nmrads\nmsasa\nmtepe\nmucho\nmucic\nmucid\nmucin\nmucko\nmucks\nmucky\nmucor\nmucro\nmucus\nmudar\nmuddy\nmudge\nmudif\nmudim\nmudir\nmudra\nmuffs\nmuffy\nmufti\nmugga\nmuggs\nmuggy\nmugho\nmugil\nmugos\nmuhly\nmuids\nmuils\nmuirs\nmuiry\nmuist\nmujik\nmukim\nmukti\nmulai\nmulch\nmulct\nmuled\nmules\nmuley\nmulga\nmulie\nmulla\nmulls\nmulse\nmulsh\nmumbo\nmumms\nmummy\nmumph\nmumps\nmumsy\nmumus\nmunch\nmunds\nmundu\nmunga\nmunge\nmungi\nmungo\nmungs\nmungy\nmunia\nmunis\nmunja\nmunjs\nmunts\nmuntu\nmuons\nmural\nmuras\nmured\nmures\nmurex\nmurgh\nmurgi\nmurid\nmurks\nmurky\nmurls\nmurly\nmurra\nmurre\nmurri\nmurrs\nmurry\nmurth\nmurti\nmuruk\nmurva\nmusar\nmusca\nmused\nmusee\nmuser\nmuses\nmuset\nmusha\nmushy\nmusic\nmusit\nmusks\nmusky\nmusos\nmusse\nmussy\nmusta\nmusth\nmusts\nmusty\nmutas\nmutch\nmuted\nmuter\nmutes\nmutha\nmutic\nmutis\nmuton\nmutti\nmutts\nmutum\nmuvva\nmuxed\nmuxes\nmuzak\nmuzzy\nmvula\nmvule\nmvuli\nmyall\nmyals\nmylar\nmynah\nmynas\nmyoid\nmyoma\nmyons\nmyope\nmyops\nmyopy\nmyrrh\nmysid\nmysie\nmythi\nmyths\nmythy\nmyxos\nmzees\nnaams\nnaans\nnaats\nnabam\nnabby\nnabes\nnabis\nnabks\nnabla\nnabob\nnache\nnacho\nnacre\nnadas\nnadir\nnaeve\nnaevi\nnaffs\nnagar\nnagas\nnages\nnaggy\nnagor\nnahal\nnaiad\nnaibs\nnaice\nnaids\nnaieo\nnaifs\nnaiks\nnails\nnaily\nnains\nnaios\nnaira\nnairu\nnaive\nnajib\nnakas\nnaked\nnaker\nnakfa\nnalas\nnaled\nnalla\nnamad\nnamak\nnamaz\nnamed\nnamer\nnames\nnamma\nnamus\nnanas\nnance\nnancy\nnandu\nnanna\nnanny\nnanos\nnante\nnanti\nnanto\nnants\nnanty\nnanua\nnapas\nnaped\nnapes\nnapoh\nnapoo\nnappa\nnappe\nnappy\nnaras\nnarco\nnarcs\nnards\nnares\nnaric\nnaris\nnarks\nnarky\nnarod\nnarra\nnarre\nnasal\nnashi\nnasho\nnasis\nnason\nnasty\nnasus\nnatak\nnatal\nnatch\nnates\nnatis\nnatto\nnatty\nnatya\nnauch\nnaunt\nnaval\nnavar\nnaved\nnavel\nnaves\nnavew\nnavvy\nnawab\nnawal\nnazar\nnazes\nnazir\nnazis\nnazzy\nnduja\nneafe\nneals\nneant\nneaps\nnears\nneath\nneato\nneats\nnebby\nnebek\nnebel\nneche\nnecks\nneddy\nneebs\nneeds\nneedy\nneefs\nneeld\nneele\nneemb\nneems\nneeps\nneese\nneeze\nnefie\nnegri\nnegro\nnegus\nneifs\nneigh\nneist\nneive\nnelia\nnelis\nnelly\nnemas\nnemic\nnemns\nnempt\nnenes\nnenta\nneons\nneosa\nneoza\nneper\nnepit\nneral\nneram\nnerds\nnerdy\nnerfs\nnerka\nnerks\nnerol\nnerts\nnertz\nnerve\nnervy\nneski\nnests\nnesty\nnetas\nnetes\nnetop\nnetta\nnetts\nnetty\nneuks\nneume\nneums\nnevel\nnever\nneves\nnevis\nnevus\nnevvy\nnewbs\nnewed\nnewel\nnewer\nnewie\nnewly\nnewsy\nnewts\nnexal\nnexin\nnexts\nnexum\nnexus\nngaio\nngaka\nngana\nngapi\nngati\nngege\nngoma\nngoni\nngram\nngwee\nnibby\nnicad\nniced\nnicer\nnicey\nniche\nnicht\nnicks\nnicky\nnicol\nnidal\nnided\nnides\nnidor\nnidus\nniece\nniefs\nniess\nnieve\nnifes\nniffs\nniffy\nnifle\nnifty\nniger\nnigga\nnighs\nnight\nnigre\nnigua\nnihil\nnikab\nnikah\nnikau\nnilas\nnills\nnimbi\nnimbs\nnimby\nnimps\nniner\nnines\nninja\nninny\nninon\nninta\nninth\nniopo\nnioza\nnipas\nnipet\nnippy\nniqab\nnirls\nnirly\nnisei\nnisin\nnisse\nnisus\nnital\nniter\nnites\nnitid\nniton\nnitre\nnitro\nnitry\nnitta\nnitto\nnitty\nnival\nnivas\nnivel\nnixed\nnixer\nnixes\nnixie\nnizam\nnjirl\nnkosi\nnmoli\nnmols\nnoahs\nnobby\nnoble\nnobly\nnocks\nnodal\nnoddy\nnoded\nnodes\nnodum\nnodus\nnoels\nnoema\nnoeme\nnogal\nnoggs\nnoggy\nnohow\nnoias\nnoils\nnoily\nnoint\nnoire\nnoirs\nnoise\nnoisy\nnokes\nnoles\nnolle\nnolls\nnolos\nnomad\nnomas\nnomen\nnomes\nnomic\nnomoi\nnomos\nnonan\nnonas\nnonce\nnoncy\nnonda\nnondo\nnones\nnonet\nnongs\nnonic\nnonis\nnonna\nnonno\nnonny\nnonyl\nnoobs\nnoois\nnooit\nnooks\nnooky\nnoone\nnoons\nnoops\nnoose\nnoove\nnopal\nnoria\nnorie\nnoris\nnorks\nnorma\nnorms\nnorth\nnosed\nnoser\nnoses\nnosey\nnoshi\nnosir\nnotal\nnotam\nnotch\nnoted\nnoter\nnotes\nnotum\nnougs\nnouja\nnould\nnoule\nnouls\nnouns\nnouny\nnoups\nnoust\nnovae\nnovas\nnovel\nnovia\nnovio\nnovum\nnoway\nnowds\nnowed\nnowls\nnowts\nnowty\nnoxal\nnoxas\nnoxes\nnoyau\nnoyed\nnoyes\nnrtta\nnrtya\nnsima\nnubby\nnubia\nnucha\nnucin\nnuddy\nnuder\nnudes\nnudge\nnudgy\nnudie\nnudzh\nnuevo\nnuffs\nnugae\nnujol\nnuked\nnukes\nnulla\nnullo\nnulls\nnully\nnumbs\nnumen\nnummy\nnumps\nnunks\nnunky\nnunny\nnunus\nnuque\nnurds\nnurdy\nnurls\nnurrs\nnurse\nnurts\nnurtz\nnused\nnuses\nnutso\nnutsy\nnutty\nnyaff\nnyala\nnyams\nnying\nnylon\nnymph\nnyong\nnyssa\nnyung\nnyuse\nnyuze\noafos\noaked\noaken\noaker\noakum\noared\noarer\noasal\noases\noasis\noasts\noaten\noater\noaths\noaves\nobang\nobbos\nobeah\nobeli\nobese\nobeys\nobias\nobied\nobiit\nobits\nobjet\noboes\nobole\noboli\nobols\noccam\noccur\nocean\nocher\noches\nochre\nochry\nocker\nocote\nocrea\noctad\noctal\noctan\noctas\noctet\noctic\noctli\noctyl\noculi\nodahs\nodals\nodder\noddly\nodeon\nodeum\nodism\nodist\nodium\nodoom\nodors\nodour\nodums\nodyle\nodyls\nofays\noffal\noffed\noffer\noffie\noflag\noften\nofter\nofuro\nogams\nogeed\nogees\noggin\nogham\nogive\nogled\nogler\nogles\nogmic\nogres\nohelo\nohias\nohing\nohmic\nohone\noicks\noidia\noiled\noiler\noilet\noinks\noints\noiran\nojime\nokapi\nokays\nokehs\nokies\noking\nokole\nokras\nokrug\noktas\nolate\nolden\nolder\noldie\noldly\nolehs\noleic\nolein\nolent\noleos\noleum\noleyl\noligo\nolios\noliva\nolive\nollas\nollav\noller\nollie\nology\nolona\nolpae\nolpes\nomasa\nomber\nombre\nombus\nomdah\nomdas\nomdda\nomdeh\nomees\nomega\nomens\nomers\nomiai\nomits\nomlah\nommel\nommin\nomnes\nomovs\nomrah\nomuls\noncer\nonces\noncet\noncus\nondes\nondol\nonely\noners\nonery\nongon\nonion\nonium\nonkus\nonlap\nonlay\nonmun\nonned\nonsen\nonset\nontal\nontic\nooaas\noobit\noohed\nooids\noojah\noomph\noonts\noopak\nooped\noopsy\noorie\nooses\nootid\nooyah\noozed\noozes\noozie\noozle\nopahs\nopals\nopens\nopepe\nopera\nopery\nopgaf\nopihi\nopine\noping\nopium\noppos\nopsat\nopsin\nopsit\nopted\nopter\noptic\nopzit\norach\noracy\norals\norang\norans\norant\norate\norbat\norbed\norbic\norbit\norcas\norcin\norder\nordie\nordos\noread\norfes\norful\norgan\norgia\norgic\norgue\noribi\noriel\norigo\norixa\norles\norlon\norlop\normer\nornee\nornis\norped\norpin\norris\nortet\northo\norval\norzos\nosars\noscar\nosetr\noseys\noshac\nosier\noskin\noslin\nosmic\nosmol\nosone\nossia\nostia\notaku\notary\nother\nothyl\notium\nottar\notter\nottos\noubit\nouche\noucht\noueds\nouens\nought\nouija\noulks\noumas\nounce\noundy\noupas\nouped\nouphe\nouphs\nourey\nourie\nousel\nousia\nousts\noutby\noutdo\nouted\nouten\nouter\noutgo\noutie\noutre\noutro\noutta\nouzel\nouzos\novals\novary\novate\novels\novens\novers\novert\novine\novism\novist\novoid\novoli\novolo\novule\noware\nowari\nowche\nowers\nowies\nowing\nowled\nowler\nowlet\nowned\nowner\nownio\nowres\nowrie\nowsen\noxbow\noxeas\noxers\noxeye\noxide\noxids\noxies\noxime\noxims\noxine\noxlip\noxman\noxmen\noxter\noyama\noyers\nozeki\nozena\nozone\nozzie\npaaho\npaals\npaans\npacai\npacas\npacay\npaced\npacer\npaces\npacey\npacha\npacks\npacky\npacos\npacta\npacts\npadam\npadas\npaddo\npaddy\npadis\npadle\npadma\npadou\npadre\npadri\npaean\npaedo\npaeon\npagan\npaged\npager\npages\npagle\npagne\npagod\npagri\npahit\npahos\npahus\npaiks\npails\npains\npaint\npaipe\npaips\npaire\npairs\npaisa\npaise\npakay\npakka\npakki\npakua\npakul\npalak\npalar\npalas\npalay\npalea\npaled\npaler\npales\npalet\npalis\npalki\npalla\npalls\npallu\npally\npalms\npalmy\npalpi\npalps\npalsa\npalsy\npalus\npamby\npampa\npanax\npance\npanch\npanda\npands\npandy\npaned\npanel\npanes\npanga\npangs\npanic\npanim\npanir\npanko\npanks\npanna\npanne\npanni\npanny\npansy\npanto\npants\npanty\npaoli\npaolo\npapad\npapal\npapas\npapaw\npaper\npapes\npapey\npappi\npappy\npapri\nparae\nparas\nparch\nparcs\npardi\npards\npardy\npared\nparen\npareo\nparer\npares\npareu\nparev\nparge\npargo\nparid\nparis\nparka\nparki\nparks\nparky\nparle\nparly\nparma\nparmo\nparms\nparol\nparps\nparra\nparrs\nparry\nparse\nparte\nparti\nparts\nparty\nparve\nparvo\npasag\npasar\npasch\npaseo\npases\npasha\npashm\npaska\npasmo\npaspy\npasse\npassu\npasta\npaste\npasts\npasty\npatas\npatch\npated\npatee\npatel\npaten\npater\npates\npaths\npatia\npatin\npatio\npatka\npatly\npatsy\npatta\npatte\npattu\npatty\npatus\npauas\npauls\npause\npauxi\npavan\npavas\npaved\npaven\npaver\npaves\npavid\npavie\npavin\npavis\npavon\npavvy\npawas\npawaw\npawed\npawer\npawks\npawky\npawls\npawns\npaxes\npayed\npayee\npayer\npayor\npaysd\npeace\npeach\npeage\npeags\npeake\npeaks\npeaky\npeals\npeans\npeare\npearl\npears\npeart\npease\npeasy\npeats\npeaty\npeavy\npeaze\npebas\npecan\npechs\npecia\npecke\npecks\npecky\npects\npedal\npedes\npedis\npedon\npedos\npedro\npeece\npeeks\npeeky\npeels\npeely\npeens\npeent\npeeoy\npeepe\npeeps\npeepy\npeers\npeery\npeeve\npeevo\npeggy\npeghs\npegma\npegos\npeine\npeins\npeise\npeisy\npeize\npekan\npekau\npekea\npekes\npekid\npekin\npekoe\npelas\npelau\npelch\npeles\npelfs\npells\npelma\npelog\npelon\npelsh\npelta\npelts\npelus\npenal\npence\npends\npendu\npened\npenes\npengo\npenie\npenis\npenks\npenna\npenne\npenni\npenny\npense\npensy\npents\npeola\npeons\npeony\npepla\npeple\npepon\npepos\npeppy\npepsi\npequi\nperae\nperai\nperce\nperch\npercs\nperdu\nperdy\nperea\nperes\nperfs\nperil\nperis\nperks\nperky\nperle\nperls\nperms\npermy\nperne\nperns\nperog\nperps\nperry\nperse\npersp\nperst\nperts\nperve\npervo\npervs\npervy\npesch\npesky\npesos\npesta\npesto\npests\npesty\npetal\npetar\npeter\npetit\npetos\npetre\npetri\npetti\npetto\npetty\npewed\npewee\npewit\npeyse\npfftt\nphage\nphang\nphare\npharm\nphase\nphasm\npheer\npheme\nphene\npheon\nphese\nphial\nphies\nphish\nphizz\nphlox\nphobe\nphoca\nphone\nphono\nphons\nphony\nphooh\nphooo\nphota\nphoto\nphots\nphoty\nphpht\nphubs\nphuts\nphutu\nphwat\nphyla\nphyle\nphyma\nphynx\nphysa\npiais\npiani\npiano\npians\npibal\npical\npicas\npiccy\npicey\npichi\npicks\npicky\npicon\npicot\npicra\npicul\npiece\npieds\npiend\npiers\npiert\npieta\npiets\npiety\npiezo\npiggy\npight\npigly\npigmy\npiing\npikas\npikau\npiked\npikel\npiker\npikes\npikey\npikis\npikul\npilae\npilaf\npilao\npilar\npilau\npilaw\npilch\npilea\npiled\npilei\npiler\npiles\npiley\npilin\npilis\npills\npilon\npilot\npilow\npilum\npilus\npimas\npimps\npinas\npinax\npince\npinch\npinda\npinds\npined\npiner\npines\npiney\npinga\npinge\npingo\npings\npinko\npinks\npinky\npinna\npinny\npinol\npinon\npinot\npinta\npinto\npints\npinup\npions\npiony\npious\npioye\npioys\npipal\npipas\npiped\npiper\npipes\npipet\npipid\npipis\npipit\npippy\npipul\npique\npiqui\npirai\npirks\npirls\npirns\npirog\npirre\npirri\npirrs\npisco\npises\npisky\npisos\npissy\npiste\npitas\npitch\npiths\npithy\npiton\npitot\npitso\npitsu\npitta\npittu\npiuma\npiums\npivos\npivot\npixel\npixes\npixie\npiyut\npized\npizer\npizes\npizza\nplaas\nplace\nplack\nplaga\nplage\nplaid\nplaig\nplain\nplait\nplanc\nplane\nplanh\nplank\nplans\nplant\nplaps\nplash\nplasm\nplast\nplate\nplats\nplatt\nplaty\nplaud\nplaur\nplavs\nplaya\nplays\nplaza\nplead\npleas\npleat\nplebe\nplebs\npleck\npleep\nplein\nplena\nplene\npleno\npleon\nplesh\nplets\nplews\nplexi\nplica\nplied\nplier\nplies\npligs\nplims\npling\nplink\nplips\nplish\nploat\nploce\nplock\nplods\nploit\nplomb\nplong\nplonk\nplook\nploot\nplops\nplore\nplots\nplotz\nplouk\nplout\nplows\nplowt\nploye\nploys\npluck\npluds\nplues\npluff\nplugs\npluke\nplumb\nplume\nplump\nplums\nplumy\nplung\nplunk\npluot\nplups\nplush\nplute\npluto\npluty\nplyer\npneus\npoach\npoaka\npoake\npoalo\npobby\npoboy\npocan\npoche\npocho\npocks\npocky\npodal\npoddy\npodex\npodge\npodgy\npodia\npodos\npodus\npoems\npoena\npoeps\npoesy\npoete\npoets\npogey\npogge\npoggy\npogos\npogue\npohed\npoilu\npoind\npoint\npoire\npoise\npokal\npoked\npoker\npokes\npokey\npokie\npokit\npolar\npoled\npoler\npoles\npoley\npolio\npolis\npolje\npolka\npolks\npollo\npolls\npolly\npolos\npolts\npolyp\npolys\npomas\npombe\npomes\npomme\npommy\npomos\npompa\npomps\nponce\nponcy\nponds\npondy\npones\nponey\nponga\npongo\npongs\npongy\nponks\nponor\nponto\nponts\nponty\nponzu\npooay\npooch\npoods\npooed\npooey\npoofs\npoofy\npoohs\npoohy\npooja\npooka\npooks\npools\npooly\npoons\npoopa\npoops\npoopy\npoori\npoort\npoots\npooty\npoove\npoovy\npopes\npopia\npopos\npoppa\npoppy\npopsy\npopup\nporae\nporal\nporch\npored\nporer\npores\nporey\nporge\nporgy\nporin\nporks\nporky\nporno\nporns\nporny\nporta\nporte\nporth\nports\nporty\nporus\nposca\nposed\nposer\nposes\nposet\nposey\nposho\nposit\nposol\nposse\nposte\nposts\npotae\npotai\npotch\npoted\npotes\npotin\npotoo\npotro\npotsy\npotto\npotts\npotty\npouce\npouch\npouff\npoufs\npoufy\npouis\npouke\npouks\npoule\npoulp\npoult\npound\npoupe\npoupt\npours\npousy\npouts\npouty\npovos\npowan\npower\npowie\npowin\npowis\npowlt\npownd\npowns\npowny\npowre\npowsy\npoxed\npoxes\npoyas\npoynt\npoyou\npoyse\npozzy\npraam\nprads\nprags\nprahu\nprams\nprana\nprang\nprank\npraos\npraps\nprase\nprate\nprats\npratt\npraty\npraus\nprawn\nprays\npreak\npredy\npreed\npreem\npreen\nprees\npreif\npreke\nprems\npremy\nprent\npreon\npreop\npreps\npresa\nprese\npress\nprest\npreta\npreux\npreve\nprexy\npreys\nprial\nprian\nprice\nprick\npricy\npride\npridy\npried\nprief\nprier\npries\nprigs\nprill\nprima\nprime\nprimi\nprimo\nprimp\nprims\nprimy\npring\nprink\nprint\nprion\nprior\nprise\nprism\npriss\nprius\nprivy\nprize\nproal\nproas\nprobe\nprobs\nproby\nprodd\nprods\nproem\nprofs\nprogs\nproin\nproke\nprole\nproll\npromo\nproms\nprone\nprong\npronk\nproof\nprook\nproot\nprops\nprora\nprore\nprose\nproso\npross\nprost\nprosy\nproto\nproud\nproul\nprove\nprowk\nprowl\nprows\nproxy\nproyn\nprude\nprune\npruno\nprunt\npruny\npruta\npryan\npryer\npryse\npsalm\npseud\npshaw\npshut\npsias\npsion\npsoae\npsoai\npsoas\npsora\npsych\npsyop\nptish\nptype\npubby\npubco\npubes\npubic\npubis\npubsy\npucan\npucer\npuces\npucka\npucks\npuddy\npudge\npudgy\npudic\npudor\npudsy\npudus\npuers\npuffa\npuffs\npuffy\npuggy\npugil\npuhas\npujah\npujas\npukas\npuked\npuker\npukes\npukey\npukka\npukus\npulao\npulas\npuled\npuler\npules\npulik\npulis\npulka\npulks\npulli\npulls\npully\npulmo\npulps\npulpy\npulse\npulus\npulut\npumas\npumie\npumps\npumpy\npunas\npunce\npunch\npunga\npungi\npungo\npungs\npungy\npunim\npunji\npunka\npunks\npunky\npunny\npunto\npunts\npunty\npupae\npupal\npupas\npupil\npuppa\npuppy\npupus\npurao\npurau\npurda\npurdy\npured\npuree\npurer\npures\npurga\npurge\npurin\npuris\npurls\npuros\npurps\npurpy\npurre\npurrs\npurry\npurse\npursy\npurty\npuses\npushy\npusle\npussy\nputas\nputer\nputid\nputin\nputon\nputos\nputti\nputto\nputts\nputtu\nputty\nputza\npuuko\npuyas\npuzel\npuzta\npwned\npyats\npyets\npygal\npygmy\npyins\npylon\npyned\npynes\npyoid\npyots\npyral\npyran\npyres\npyrex\npyric\npyros\npyrus\npyuff\npyxed\npyxes\npyxie\npyxis\npzazz\nqadis\nqaids\nqajaq\nqanat\nqapik\nqibla\nqilas\nqipao\nqophs\nqorma\nquabs\nquack\nquads\nquaff\nquags\nquail\nquair\nquais\nquake\nquaky\nquale\nqualm\nqualy\nquank\nquant\nquare\nquark\nquarl\nquart\nquash\nquasi\nquass\nquate\nquats\nquawk\nquaws\nquayd\nquays\nqubit\nquean\nqueck\nqueek\nqueem\nqueen\nqueer\nquell\nqueme\nquena\nquern\nquery\nqueso\nquest\nquete\nqueue\nqueyn\nqueys\nqueyu\nquibs\nquich\nquick\nquids\nquies\nquiet\nquiff\nquila\nquill\nquilt\nquims\nquina\nquine\nquink\nquino\nquins\nquint\nquipo\nquips\nquipu\nquire\nquirk\nquirl\nquirt\nquist\nquite\nquits\nquoad\nquods\nquoif\nquoin\nquois\nquoit\nquoll\nquonk\nquops\nquork\nquorl\nquota\nquote\nquoth\nquouk\nquoys\nquran\nqursh\nquyte\nraads\nraake\nrabat\nrabbi\nrabic\nrabid\nrabis\nraced\nracer\nraces\nrache\nracks\nracon\nradar\nraddi\nraddy\nradge\nradgy\nradif\nradii\nradio\nradix\nradon\nrafee\nraffs\nraffy\nrafik\nrafiq\nrafts\nrafty\nragas\nragde\nraged\nragee\nrager\nrages\nragga\nraggs\nraggy\nragis\nragus\nrahed\nrahui\nraiah\nraias\nraids\nraike\nraiks\nraile\nrails\nraine\nrains\nrainy\nraird\nraise\nraita\nraith\nraits\nrajah\nrajas\nrajes\nraked\nrakee\nraker\nrakes\nrakhi\nrakia\nrakis\nrakki\nraksi\nrakus\nrales\nralli\nrally\nralph\nramal\nramee\nramen\nrames\nramet\nramie\nramin\nramis\nrammy\nramon\nramps\nramse\nramsh\nramus\nranas\nrance\nranch\nrando\nrands\nrandy\nraned\nranee\nranes\nranga\nrange\nrangi\nrangs\nrangy\nranid\nranis\nranke\nranks\nranns\nranny\nranse\nrants\nranty\nraped\nrapee\nraper\nrapes\nraphe\nrapid\nrapin\nrappe\nrapso\nrared\nraree\nrarer\nrares\nrarks\nrasam\nrasas\nrased\nraser\nrases\nrasps\nraspy\nrasse\nrasta\nratal\nratan\nratas\nratch\nrated\nratel\nrater\nrates\nratha\nrathe\nraths\nratio\nratoo\nratos\nratti\nratty\nratus\nrauli\nrauns\nraupo\nraved\nravel\nraven\nraver\nraves\nravey\nravin\nrawdy\nrawer\nrawin\nrawks\nrawly\nrawns\nraxed\nraxes\nrayah\nrayas\nrayed\nrayle\nrayls\nrayne\nrayon\nrazai\nrazed\nrazee\nrazer\nrazes\nrazet\nrazoo\nrazor\nreach\nreact\nreadd\nreads\nready\nreais\nreaks\nrealm\nrealo\nreals\nreame\nreams\nreamy\nreans\nreaps\nreard\nrearm\nrears\nreast\nreata\nreate\nreave\nrebab\nrebar\nrebbe\nrebec\nrebel\nrebid\nrebit\nrebop\nrebud\nrebus\nrebut\nrebuy\nrecal\nrecap\nrecce\nrecco\nreccy\nrecep\nrecit\nrecks\nrecon\nrecta\nrecte\nrecti\nrecto\nrecue\nrecur\nrecut\nredan\nredds\nreddy\nreded\nredes\nredia\nredid\nredif\nredig\nredip\nredly\nredon\nredos\nredox\nredry\nredub\nredug\nredux\nredye\nreeaf\nreech\nreede\nreeds\nreedy\nreefs\nreefy\nreeks\nreeky\nreels\nreely\nreems\nreens\nreerd\nreest\nreeve\nreeze\nrefan\nrefed\nrefel\nrefer\nreffo\nrefis\nrefit\nrefix\nrefly\nrefry\nregal\nregar\nreges\nreget\nregex\nreggo\nregia\nregie\nregle\nregma\nregna\nregos\nregot\nregur\nrehab\nrehem\nreifs\nreify\nreign\nreiki\nreiks\nreine\nreing\nreink\nreins\nreird\nreist\nreive\nrejas\nrejig\nrejon\nreked\nrekes\nrekey\nrelax\nrelay\nrelet\nrelic\nrelie\nrelit\nrello\nrelos\nreman\nremap\nremen\nremet\nremex\nremit\nremix\nremou\nrenal\nrenay\nrends\nrendu\nrenew\nreney\nrenga\nrengs\nrenig\nrenin\nrenks\nrenne\nrenos\nrente\nrents\nreoil\nreorg\nrepas\nrepat\nrepay\nrepeg\nrepel\nrepen\nrepin\nrepla\nreply\nrepos\nrepot\nrepps\nrepro\nrepun\nreput\nreran\nrerig\nrerun\nresam\nresat\nresaw\nresay\nresee\nreses\nreset\nresew\nresid\nresin\nresit\nresod\nresol\nresow\nresto\nrests\nresty\nresue\nresus\nretag\nretam\nretax\nretch\nretem\nretia\nretie\nretin\nretip\nretox\nretro\nretry\nreune\nreups\nreuse\nrevel\nrevet\nrevie\nrevow\nrevue\nrewan\nrewax\nrewed\nrewet\nrewin\nrewon\nrewth\nrexes\nrezes\nrhabd\nrheas\nrheid\nrheme\nrheum\nrhies\nrhime\nrhine\nrhino\nrhody\nrhomb\nrhone\nrhumb\nrhyme\nrhymy\nrhyne\nrhyta\nriads\nrials\nriant\nriata\nriato\nribas\nribby\nribes\nriced\nricer\nrices\nricey\nriche\nricht\nricin\nricks\nrider\nrides\nridge\nridgy\nridic\nriels\nriems\nrieve\nrifer\nriffs\nriffy\nrifle\nrifte\nrifts\nrifty\nriggs\nright\nrigid\nrigmo\nrigol\nrigor\nrikka\nrikwa\nriled\nriles\nriley\nrille\nrills\nrilly\nrimae\nrimed\nrimer\nrimes\nrimon\nrimus\nrince\nrinds\nrindy\nrines\nringe\nrings\nringy\nrinks\nrinse\nrioja\nrione\nriots\nrioty\nriped\nripen\nriper\nripes\nripps\nriqqs\nrisen\nriser\nrises\nrishi\nrisks\nrisky\nrisps\nrists\nrisus\nrites\nrithe\nritts\nritzy\nrival\nrivas\nrived\nrivel\nriven\nriver\nrives\nrivet\nriyal\nrizas\nroach\nroads\nroady\nroake\nroaky\nroams\nroans\nroany\nroars\nroary\nroast\nroate\nrobbo\nrobed\nrober\nrobes\nrobin\nroble\nrobot\nrobug\nrobur\nroche\nrocks\nrocky\nroded\nrodeo\nrodes\nrodny\nroers\nrogan\nroger\nrogue\nroguy\nrohan\nrohes\nrohun\nrohus\nroids\nroils\nroily\nroins\nroist\nrojak\nrojis\nroked\nroker\nrokes\nrokey\nrokos\nrolag\nroleo\nroles\nrolfs\nrolls\nrolly\nromal\nroman\nromeo\nromer\nromps\nrompu\nrompy\nronde\nrondo\nroneo\nrones\nronin\nronne\nronte\nronts\nronuk\nroods\nroofs\nroofy\nrooks\nrooky\nrooms\nroomy\nroons\nroops\nroopy\nroosa\nroose\nroost\nroots\nrooty\nroped\nroper\nropes\nropey\nroque\nroral\nrores\nroric\nrorid\nrorie\nrorts\nrorty\nrosal\nrosco\nrosed\nroses\nroset\nrosha\nroshi\nrosin\nrosit\nrosps\nrossa\nrosso\nrosti\nrosts\nrotal\nrotan\nrotas\nrotch\nroted\nrotes\nrotis\nrotls\nroton\nrotor\nrotos\nrotta\nrotte\nrotto\nrotty\nrouen\nroues\nrouet\nroufs\nrouge\nrough\nrougy\nrouks\nrouky\nroule\nrouls\nroums\nround\nroups\nroupy\nrouse\nroust\nroute\nrouth\nrouts\nroved\nroven\nrover\nroves\nrowan\nrowdy\nrowed\nrowel\nrowen\nrower\nrowet\nrowie\nrowme\nrownd\nrowns\nrowth\nrowts\nroyal\nroyet\nroyne\nroyst\nrozes\nrozet\nrozit\nruach\nruana\nrubai\nruban\nrubby\nrubel\nrubes\nrubin\nrubio\nruble\nrubli\nrubor\nrubus\nruche\nruchy\nrucks\nrudas\nrudds\nruddy\nruder\nrudes\nrudie\nrudis\nrueda\nruers\nruffe\nruffs\nruffy\nrufus\nrugae\nrugal\nrugas\nrugby\nruggy\nruice\nruing\nruins\nrukhs\nruled\nruler\nrules\nrully\nrumal\nrumba\nrumbo\nrumen\nrumes\nrumly\nrummy\nrumor\nrumpo\nrumps\nrumpy\nrunce\nrunch\nrunds\nruned\nruner\nrunes\nrungs\nrunic\nrunny\nrunos\nrunts\nrunty\nrunup\nruote\nrupee\nrupia\nrural\nrurps\nrurus\nrusas\nruses\nrushy\nrusks\nrusky\nrusma\nrusse\nrusts\nrusty\nruths\nrutin\nrutty\nruvid\nryals\nrybat\nryiji\nryijy\nryked\nrykes\nrymer\nrymme\nrynds\nryoti\nryots\nryper\nrypin\nrythe\nryugi\nsaags\nsabal\nsabed\nsaber\nsabes\nsabha\nsabin\nsabir\nsabji\nsable\nsabos\nsabot\nsabra\nsabre\nsabzi\nsacks\nsacra\nsacre\nsaddo\nsaddy\nsades\nsadhe\nsadhu\nsadic\nsadis\nsadly\nsados\nsadza\nsaeta\nsafed\nsafer\nsafes\nsagar\nsagas\nsager\nsages\nsaggy\nsagos\nsagum\nsahab\nsaheb\nsahib\nsaice\nsaick\nsaics\nsaids\nsaiga\nsails\nsaims\nsaine\nsains\nsaint\nsairs\nsaist\nsaith\nsajou\nsakai\nsaker\nsakes\nsakia\nsakis\nsakti\nsalad\nsalal\nsalas\nsalat\nsalep\nsales\nsalet\nsalic\nsalis\nsalix\nsalle\nsally\nsalmi\nsalol\nsalon\nsalop\nsalpa\nsalps\nsalsa\nsalse\nsalto\nsalts\nsalty\nsalud\nsalue\nsalut\nsalve\nsalvo\nsaman\nsamas\nsamba\nsambo\nsamek\nsamel\nsamen\nsames\nsamey\nsamfi\nsamfu\nsammy\nsampi\nsamps\nsanad\nsands\nsandy\nsaned\nsaner\nsanes\nsanga\nsangh\nsango\nsangs\nsanko\nsansa\nsanto\nsants\nsaola\nsapan\nsapid\nsapor\nsappy\nsaran\nsards\nsared\nsaree\nsarge\nsargo\nsarin\nsarir\nsaris\nsarks\nsarky\nsarod\nsaros\nsarus\nsarvo\nsaser\nsasin\nsasse\nsassy\nsatai\nsatay\nsated\nsatem\nsater\nsates\nsatin\nsatis\nsatyr\nsauba\nsauce\nsauch\nsaucy\nsaugh\nsauls\nsault\nsauna\nsaunf\nsaunt\nsaury\nsaute\nsauts\nsauve\nsaved\nsaver\nsaves\nsavey\nsavin\nsavor\nsavoy\nsavvy\nsawah\nsawed\nsawer\nsaxes\nsayas\nsayed\nsayee\nsayer\nsayid\nsayne\nsayon\nsayst\nsazes\nscabs\nscads\nscaff\nscags\nscail\nscala\nscald\nscale\nscall\nscalp\nscaly\nscamp\nscams\nscand\nscans\nscant\nscapa\nscape\nscapi\nscare\nscarf\nscarp\nscars\nscart\nscary\nscath\nscats\nscatt\nscaud\nscaup\nscaur\nscaws\nsceat\nscena\nscend\nscene\nscent\nschav\nschif\nschmo\nschul\nschwa\nscifi\nscind\nscion\nscire\nsclim\nscobe\nscody\nscoff\nscogs\nscold\nscone\nscoog\nscoop\nscoot\nscopa\nscope\nscops\nscore\nscorn\nscorp\nscote\nscots\nscoug\nscoup\nscour\nscout\nscowl\nscowp\nscows\nscrab\nscrae\nscrag\nscram\nscran\nscrap\nscrat\nscraw\nscray\nscree\nscrew\nscrim\nscrip\nscrob\nscrod\nscrog\nscroo\nscrow\nscrub\nscrum\nscuba\nscudi\nscudo\nscuds\nscuff\nscuft\nscugs\nsculk\nscull\nsculp\nsculs\nscums\nscups\nscurf\nscurs\nscuse\nscuta\nscute\nscuts\nscuzz\nscyes\nsdayn\nsdein\nseals\nseame\nseams\nseamy\nseans\nseare\nsears\nsease\nseats\nseaze\nsebum\nsecco\nsechs\nsects\nsedan\nseder\nsedes\nsedge\nsedgy\nsedum\nseeds\nseedy\nseeks\nseeld\nseels\nseely\nseems\nseeps\nseepy\nseers\nsefer\nsegar\nsegas\nsegni\nsegno\nsegol\nsegos\nsegue\nsehri\nseifs\nseils\nseine\nseirs\nseise\nseism\nseity\nseiza\nseize\nsekos\nsekts\nselah\nseles\nselfs\nselfy\nselky\nsella\nselle\nsells\nselva\nsemas\nsemee\nsemen\nsemes\nsemie\nsemis\nsenas\nsends\nsenes\nsenex\nsengi\nsenna\nsenor\nsensa\nsense\nsensi\nsensu\nsente\nsenti\nsents\nsenvy\nsenza\nsepad\nsepal\nsepia\nsepic\nsepoy\nseppo\nsepta\nsepts\nserac\nserai\nseral\nsered\nserer\nseres\nserfs\nserge\nseria\nseric\nserif\nserin\nserir\nserks\nseron\nserow\nserra\nserre\nserrs\nserry\nserum\nserve\nservo\nsesey\nsessa\nsetae\nsetal\nseter\nseths\nseton\nsetts\nsetup\nsevak\nseven\nsever\nsevir\nsewan\nsewar\nsewed\nsewel\nsewen\nsewer\nsewin\nsexed\nsexer\nsexes\nsexor\nsexto\nsexts\nseyen\nsezes\nshack\nshade\nshads\nshady\nshaft\nshags\nshahs\nshaka\nshake\nshako\nshakt\nshaky\nshale\nshall\nshalm\nshalt\nshaly\nshama\nshame\nshams\nshand\nshank\nshans\nshape\nshaps\nshard\nshare\nshark\nsharn\nsharp\nshart\nshash\nshaul\nshave\nshawl\nshawm\nshawn\nshaws\nshaya\nshays\nshchi\nsheaf\nsheal\nshear\nsheas\nsheds\nsheel\nsheen\nsheep\nsheer\nsheet\nsheik\nshelf\nshell\nshend\nsheng\nshent\nsheol\nsherd\nshere\nshero\nshets\nsheva\nshewn\nshews\nshiai\nshied\nshiel\nshier\nshies\nshift\nshill\nshily\nshims\nshine\nshins\nshiny\nshiok\nships\nshire\nshirk\nshirr\nshirs\nshirt\nshish\nshiso\nshist\nshite\nshits\nshiur\nshiva\nshive\nshivs\nshlep\nshlub\nshmek\nshmoe\nshoal\nshoat\nshock\nshoed\nshoer\nshoes\nshogi\nshogs\nshoji\nshojo\nshola\nshone\nshonk\nshook\nshool\nshoon\nshoos\nshoot\nshope\nshops\nshore\nshorl\nshorn\nshort\nshote\nshots\nshott\nshoud\nshout\nshove\nshowd\nshown\nshows\nshowy\nshoyu\nshred\nshrew\nshris\nshrow\nshrub\nshrug\nshtar\nshtik\nshtum\nshtup\nshuba\nshuck\nshule\nshuln\nshuls\nshuns\nshunt\nshura\nshush\nshute\nshuts\nshwas\nshyer\nshyly\nsials\nsibbs\nsibia\nsibyl\nsices\nsicht\nsicko\nsicks\nsicky\nsidas\nsided\nsider\nsides\nsidey\nsidha\nsidhe\nsidle\nsiege\nsield\nsiens\nsient\nsieth\nsieur\nsieve\nsifts\nsighs\nsight\nsigil\nsigla\nsigma\nsigna\nsigns\nsigri\nsijos\nsikas\nsiker\nsikes\nsilds\nsiled\nsilen\nsiler\nsiles\nsilex\nsilks\nsilky\nsills\nsilly\nsilos\nsilts\nsilty\nsilva\nsimar\nsimas\nsimba\nsimis\nsimps\nsimul\nsince\nsinds\nsined\nsines\nsinew\nsinge\nsings\nsinhs\nsinks\nsinky\nsinsi\nsinus\nsiped\nsipes\nsippy\nsired\nsiree\nsiren\nsires\nsirih\nsiris\nsiroc\nsirra\nsirup\nsisal\nsises\nsissy\nsista\nsists\nsitar\nsitch\nsited\nsites\nsithe\nsitka\nsitup\nsitus\nsiver\nsixer\nsixes\nsixmo\nsixte\nsixth\nsixty\nsizar\nsized\nsizel\nsizer\nsizes\nskags\nskail\nskald\nskank\nskarn\nskart\nskate\nskats\nskatt\nskaws\nskean\nskear\nskeds\nskeed\nskeef\nskeen\nskeer\nskees\nskeet\nskeev\nskeez\nskegg\nskegs\nskein\nskelf\nskell\nskelm\nskelp\nskene\nskens\nskeos\nskeps\nskerm\nskers\nskets\nskews\nskids\nskied\nskier\nskies\nskiey\nskiff\nskill\nskimo\nskimp\nskims\nskink\nskins\nskint\nskios\nskips\nskirl\nskirr\nskirt\nskite\nskits\nskive\nskivy\nsklim\nskoal\nskobe\nskody\nskoff\nskofs\nskogs\nskols\nskool\nskort\nskosh\nskran\nskrik\nskroo\nskuas\nskugs\nskulk\nskull\nskunk\nskyed\nskyer\nskyey\nskyfs\nskyre\nskyrs\nskyte\nslabs\nslack\nslade\nslaes\nslags\nslaid\nslain\nslake\nslams\nslane\nslang\nslank\nslant\nslaps\nslart\nslash\nslate\nslats\nslaty\nslave\nslaws\nslays\nslebs\nsleds\nsleek\nsleep\nsleer\nsleet\nslept\nslews\nsleys\nslice\nslick\nslide\nslier\nslily\nslime\nslims\nslimy\nsling\nslink\nslipe\nslips\nslipt\nslish\nslits\nslive\nsloan\nslobs\nsloes\nslogs\nsloid\nslojd\nsloka\nslomo\nsloom\nsloop\nsloot\nslope\nslops\nslopy\nslorm\nslosh\nsloth\nslots\nslove\nslows\nsloyd\nslubb\nslubs\nslued\nslues\nsluff\nslugs\nsluit\nslump\nslums\nslung\nslunk\nslurb\nslurp\nslurs\nsluse\nslush\nsluts\nslyer\nslyly\nslype\nsmaak\nsmack\nsmaik\nsmall\nsmalm\nsmalt\nsmarm\nsmart\nsmash\nsmaze\nsmear\nsmeek\nsmees\nsmeik\nsmeke\nsmell\nsmelt\nsmerk\nsmews\nsmick\nsmile\nsmily\nsmirk\nsmirr\nsmirs\nsmite\nsmith\nsmits\nsmize\nsmock\nsmogs\nsmoke\nsmoko\nsmoky\nsmolt\nsmoor\nsmoot\nsmore\nsmorg\nsmote\nsmout\nsmowt\nsmugs\nsmurs\nsmush\nsmuts\nsnabs\nsnack\nsnafu\nsnags\nsnail\nsnake\nsnaky\nsnaps\nsnare\nsnarf\nsnark\nsnarl\nsnars\nsnary\nsnash\nsnath\nsnaws\nsnead\nsneak\nsneap\nsnebs\nsneck\nsneds\nsneed\nsneer\nsnees\nsnell\nsnibs\nsnick\nsnide\nsnied\nsnies\nsniff\nsnift\nsnigs\nsnipe\nsnips\nsnipy\nsnirt\nsnits\nsnive\nsnobs\nsnods\nsnoek\nsnoep\nsnogs\nsnoke\nsnood\nsnook\nsnool\nsnoop\nsnoot\nsnore\nsnort\nsnots\nsnout\nsnowk\nsnows\nsnowy\nsnubs\nsnuck\nsnuff\nsnugs\nsnush\nsnyes\nsoaks\nsoaps\nsoapy\nsoare\nsoars\nsoave\nsobas\nsober\nsocas\nsoces\nsocia\nsocko\nsocks\nsocle\nsodas\nsoddy\nsodic\nsodom\nsofar\nsofas\nsofta\nsofts\nsofty\nsoger\nsoggy\nsohur\nsoils\nsoily\nsojas\nsojus\nsokah\nsoken\nsokes\nsokol\nsolah\nsolan\nsolar\nsolas\nsolde\nsoldi\nsoldo\nsolds\nsoled\nsolei\nsoler\nsoles\nsolid\nsolon\nsolos\nsolum\nsolus\nsolve\nsoman\nsomas\nsonar\nsonce\nsonde\nsones\nsongo\nsongs\nsongy\nsonic\nsonly\nsonne\nsonny\nsonse\nsonsy\nsooey\nsooks\nsooky\nsoole\nsools\nsooms\nsoops\nsoote\nsooth\nsoots\nsooty\nsophs\nsophy\nsopor\nsoppy\nsopra\nsoral\nsoras\nsorbi\nsorbo\nsorbs\nsorda\nsordo\nsords\nsored\nsoree\nsorel\nsorer\nsores\nsorex\nsorgo\nsorns\nsorra\nsorry\nsorta\nsorts\nsorus\nsoths\nsotol\nsotto\nsouce\nsouct\nsough\nsouks\nsouls\nsouly\nsoums\nsound\nsoups\nsoupy\nsours\nsouse\nsouth\nsouts\nsowar\nsowce\nsowed\nsower\nsowff\nsowfs\nsowle\nsowls\nsowms\nsownd\nsowne\nsowps\nsowse\nsowth\nsoxes\nsoyas\nsoyle\nsoyuz\nsozin\nspace\nspack\nspacy\nspade\nspado\nspads\nspaed\nspaer\nspaes\nspags\nspahi\nspail\nspain\nspait\nspake\nspald\nspale\nspall\nspalt\nspams\nspane\nspang\nspank\nspans\nspard\nspare\nspark\nspars\nspart\nspasm\nspate\nspats\nspaul\nspawl\nspawn\nspaws\nspayd\nspays\nspaza\nspazz\nspeak\nspeal\nspean\nspear\nspeat\nspeck\nspecs\nspect\nspeed\nspeel\nspeer\nspeil\nspeir\nspeks\nspeld\nspelk\nspell\nspelt\nspend\nspent\nspeos\nsperm\nspesh\nspets\nspeug\nspews\nspewy\nspial\nspica\nspice\nspick\nspics\nspicy\nspide\nspied\nspiel\nspier\nspies\nspiff\nspifs\nspike\nspiks\nspiky\nspile\nspill\nspilt\nspims\nspina\nspine\nspink\nspins\nspiny\nspire\nspirt\nspiry\nspite\nspits\nspitz\nspivs\nsplat\nsplay\nsplit\nsplog\nspode\nspods\nspoil\nspoke\nspoof\nspook\nspool\nspoom\nspoon\nspoor\nspoot\nspore\nspork\nsport\nsposa\nsposh\nsposo\nspots\nspout\nsprad\nsprag\nsprat\nspray\nspred\nspree\nsprew\nsprig\nsprit\nsprod\nsprog\nsprue\nsprug\nspuds\nspued\nspuer\nspues\nspugs\nspule\nspume\nspumy\nspunk\nspurn\nspurs\nspurt\nsputa\nspyal\nspyre\nsquab\nsquad\nsquat\nsquaw\nsquee\nsqueg\nsquib\nsquid\nsquit\nsquiz\nsrsly\nstabs\nstack\nstade\nstaff\nstage\nstags\nstagy\nstaid\nstaig\nstain\nstair\nstake\nstale\nstalk\nstall\nstamp\nstand\nstane\nstang\nstank\nstans\nstaph\nstaps\nstare\nstark\nstarn\nstarr\nstars\nstart\nstary\nstash\nstate\nstats\nstatu\nstaun\nstave\nstaws\nstays\nstead\nsteak\nsteal\nsteam\nstean\nstear\nstedd\nstede\nsteds\nsteed\nsteek\nsteel\nsteem\nsteen\nsteep\nsteer\nsteez\nsteik\nsteil\nstein\nstela\nstele\nstell\nsteme\nstems\nstend\nsteno\nstens\nstent\nsteps\nstept\nstere\nstern\nstets\nstews\nstewy\nsteys\nstich\nstick\nstied\nsties\nstiff\nstilb\nstile\nstill\nstilt\nstime\nstims\nstimy\nsting\nstink\nstint\nstipa\nstipe\nstire\nstirk\nstirp\nstirs\nstive\nstivy\nstoae\nstoai\nstoas\nstoat\nstobs\nstock\nstoep\nstogs\nstogy\nstoic\nstoit\nstoke\nstole\nstoln\nstoma\nstomp\nstond\nstone\nstong\nstonk\nstonn\nstony\nstood\nstook\nstool\nstoop\nstoor\nstope\nstops\nstopt\nstore\nstork\nstorm\nstory\nstoss\nstots\nstott\nstoun\nstoup\nstour\nstout\nstove\nstown\nstowp\nstows\nstrad\nstrae\nstrag\nstrak\nstrap\nstraw\nstray\nstrep\nstrew\nstria\nstrig\nstrim\nstrip\nstrop\nstrow\nstroy\nstrum\nstrut\nstubs\nstuck\nstucs\nstude\nstuds\nstudy\nstuff\nstull\nstulm\nstumm\nstump\nstums\nstung\nstunk\nstuns\nstunt\nstupa\nstupe\nsture\nsturt\nstush\nstyed\nstyes\nstyle\nstyli\nstylo\nstyme\nstymy\nstyre\nstyte\nsuave\nsubah\nsubak\nsubas\nsubby\nsuber\nsubha\nsucci\nsucks\nsucky\nsucre\nsudan\nsudds\nsudor\nsudsy\nsuede\nsuent\nsuers\nsuete\nsuets\nsuety\nsugan\nsugar\nsughs\nsugos\nsuhur\nsuids\nsuing\nsuint\nsuite\nsuits\nsujee\nsukhs\nsukis\nsukuk\nsulci\nsulfa\nsulfo\nsulks\nsulky\nsulls\nsully\nsulph\nsulus\nsumac\nsumis\nsumma\nsumos\nsumph\nsumps\nsunis\nsunks\nsunna\nsunns\nsunny\nsunts\nsunup\nsuona\nsuped\nsuper\nsupes\nsupra\nsurah\nsural\nsuras\nsurat\nsurds\nsured\nsurer\nsures\nsurfs\nsurfy\nsurge\nsurgy\nsurly\nsurra\nsused\nsuses\nsushi\nsusus\nsutor\nsutra\nsutta\nswabs\nswack\nswads\nswage\nswags\nswail\nswain\nswale\nswaly\nswami\nswamp\nswamy\nswang\nswank\nswans\nswaps\nswapt\nsward\nsware\nswarf\nswarm\nswart\nswash\nswath\nswats\nswayl\nsways\nsweal\nswear\nsweat\nswede\nsweed\nsweel\nsweep\nsweer\nswees\nsweet\nsweir\nswell\nswelt\nswept\nswerf\nsweys\nswies\nswift\nswigs\nswile\nswill\nswims\nswine\nswing\nswink\nswipe\nswire\nswirl\nswish\nswiss\nswith\nswits\nswive\nswizz\nswobs\nswole\nswoll\nswoln\nswoon\nswoop\nswops\nswopt\nsword\nswore\nsworn\nswots\nswoun\nswung\nsybbe\nsybil\nsyboe\nsybow\nsycee\nsyces\nsycon\nsyeds\nsyens\nsyker\nsykes\nsylis\nsylph\nsylva\nsymar\nsynch\nsyncs\nsynds\nsyned\nsynes\nsynod\nsynth\nsyped\nsypes\nsyphs\nsyrah\nsyren\nsyrup\nsysop\nsythe\nsyver\ntaals\ntaata\ntabac\ntabby\ntaber\ntabes\ntabid\ntabis\ntabla\ntable\ntabls\ntaboo\ntabor\ntabos\ntabun\ntabus\ntacan\ntaces\ntacet\ntache\ntachi\ntacho\ntachs\ntacit\ntacks\ntacky\ntacos\ntacts\ntadah\ntaels\ntaffy\ntafia\ntaggy\ntagma\ntagua\ntahas\ntahrs\ntaiga\ntaigs\ntaiko\ntails\ntains\ntaint\ntaira\ntaish\ntaits\ntajes\ntakas\ntaken\ntaker\ntakes\ntakhi\ntakht\ntakin\ntakis\ntakky\ntalak\ntalaq\ntalar\ntalas\ntalcs\ntalcy\ntalea\ntaler\ntales\ntalik\ntalks\ntalky\ntalls\ntally\ntalma\ntalon\ntalpa\ntaluk\ntalus\ntamal\ntamas\ntamed\ntamer\ntames\ntamin\ntamis\ntammy\ntamps\ntanas\ntanga\ntangi\ntango\ntangs\ntangy\ntanhs\ntania\ntanka\ntanks\ntanky\ntanna\ntansu\ntansy\ntante\ntanti\ntanto\ntanty\ntapas\ntaped\ntapen\ntaper\ntapes\ntapet\ntapir\ntapis\ntappa\ntapus\ntaras\ntardo\ntards\ntardy\ntared\ntares\ntarga\ntarge\ntarka\ntarns\ntaroc\ntarok\ntaros\ntarot\ntarps\ntarre\ntarry\ntarse\ntarsi\ntarte\ntarts\ntarty\ntarzy\ntasar\ntasca\ntased\ntaser\ntases\ntasks\ntassa\ntasse\ntasso\ntaste\ntasto\ntasty\ntatar\ntater\ntates\ntaths\ntatie\ntatou\ntatts\ntatty\ntatus\ntaube\ntauld\ntaunt\ntauon\ntaupe\ntauts\ntauty\ntavah\ntavas\ntaver\ntawaf\ntawai\ntawas\ntawed\ntawer\ntawie\ntawny\ntawse\ntawts\ntaxed\ntaxer\ntaxes\ntaxis\ntaxol\ntaxon\ntaxor\ntaxus\ntayra\ntazza\ntazze\nteach\nteade\nteads\nteaed\nteaks\nteals\nteams\ntears\nteary\ntease\nteats\nteaze\ntechs\ntechy\ntecta\ntecum\nteddy\nteels\nteems\nteend\nteene\nteens\nteeny\nteers\nteeth\nteets\nteffs\nteggs\ntegua\ntegus\ntehee\ntehrs\nteiid\nteils\nteind\nteins\ntekke\ntelae\ntelco\nteles\ntelex\ntelia\ntelic\ntells\ntelly\nteloi\ntelos\ntemed\ntemes\ntempi\ntempo\ntemps\ntempt\ntemse\ntench\ntends\ntendu\ntenes\ntenet\ntenge\ntenia\ntenne\ntenno\ntenny\ntenon\ntenor\ntense\ntenth\ntents\ntenty\ntenue\ntepal\ntepas\ntepee\ntepid\ntepoy\nterai\nteras\nterce\nterek\nteres\nterfe\nterfs\nterga\nterms\nterne\nterns\nterra\nterre\nterry\nterse\nterts\nterza\ntesla\ntesta\nteste\ntests\ntesty\ntetes\nteths\ntetra\ntetri\nteuch\nteugh\ntewed\ntewel\ntewit\ntexas\ntexes\ntexta\ntexts\nthack\nthagi\nthaim\nthale\nthali\nthana\nthane\nthang\nthank\nthans\nthanx\ntharm\nthars\nthaws\nthawt\nthawy\nthebe\ntheca\ntheed\ntheek\nthees\ntheft\nthegn\ntheic\nthein\ntheir\nthelf\nthema\ntheme\nthens\ntheor\ntheow\nthere\ntherm\nthese\nthesp\ntheta\nthete\nthews\nthewy\nthick\nthief\nthigh\nthigs\nthilk\nthill\nthine\nthing\nthink\nthins\nthiol\nthird\nthirl\nthoft\nthole\ntholi\nthong\nthorn\nthoro\nthorp\nthose\nthots\nthous\nthowl\nthrae\nthraw\nthree\nthrew\nthrid\nthrip\nthrob\nthroe\nthrow\nthrum\nthuds\nthugs\nthuja\nthumb\nthump\nthunk\nthurl\nthuya\nthyme\nthymi\nthymy\ntians\ntiara\ntiare\ntiars\ntibia\ntical\nticca\nticed\ntices\ntichy\nticks\nticky\ntidal\ntiddy\ntided\ntides\ntiefs\ntiers\ntiffs\ntifos\ntifts\ntiger\ntiges\ntight\ntigon\ntikas\ntikes\ntikia\ntikis\ntikka\ntilak\ntilde\ntiled\ntiler\ntiles\ntills\ntilly\ntilth\ntilts\ntimbo\ntimed\ntimer\ntimes\ntimid\ntimon\ntimps\ntinas\ntinct\ntinds\ntinea\ntined\ntines\ntinge\ntings\ntinks\ntinny\ntinto\ntints\ntinty\ntipis\ntippy\ntipsy\ntipup\ntired\ntires\ntirls\ntiros\ntirrs\ntirth\ntitan\ntitar\ntitas\ntitch\ntiter\ntithe\ntithi\ntitin\ntitir\ntitis\ntitle\ntitre\ntitty\ntitup\ntiyin\ntiyns\ntizes\ntizzy\ntoads\ntoady\ntoast\ntoaze\ntocks\ntocky\ntocos\ntoday\ntodde\ntoddy\ntodea\ntodos\ntoeas\ntoffs\ntoffy\ntofts\ntofus\ntogae\ntogas\ntoged\ntoges\ntogue\ntohos\ntoidy\ntoile\ntoils\ntoing\ntoise\ntoits\ntoity\ntokay\ntoked\ntoken\ntoker\ntokes\ntokos\ntolan\ntolar\ntolas\ntoled\ntoles\ntolls\ntolly\ntolts\ntolus\ntolyl\ntoman\ntombo\ntombs\ntomen\ntomes\ntomia\ntomin\ntomme\ntommy\ntomos\ntomoz\ntonal\ntondi\ntondo\ntoned\ntoner\ntones\ntoney\ntonga\ntongs\ntonic\ntonka\ntonks\ntonne\ntonus\ntools\ntooms\ntoons\ntooth\ntoots\ntopaz\ntoped\ntopee\ntopek\ntoper\ntopes\ntophe\ntophi\ntophs\ntopic\ntopis\ntopoi\ntopos\ntoppy\ntoque\ntorah\ntoran\ntoras\ntorch\ntorcs\ntores\ntoric\ntorii\ntoros\ntorot\ntorrs\ntorse\ntorsi\ntorsk\ntorso\ntorta\ntorte\ntorts\ntorus\ntosas\ntosed\ntoses\ntoshy\ntossy\ntosyl\ntotal\ntoted\ntotem\ntoter\ntotes\ntotty\ntouch\ntough\ntouks\ntouns\ntours\ntouse\ntousy\ntouts\ntouze\ntouzy\ntowai\ntowed\ntowel\ntower\ntowie\ntowno\ntowns\ntowny\ntowse\ntowsy\ntowts\ntowze\ntowzy\ntoxic\ntoxin\ntoyed\ntoyer\ntoyon\ntoyos\ntozed\ntozes\ntozie\ntrabs\ntrace\ntrack\ntract\ntrade\ntrads\ntrady\ntraga\ntragi\ntrags\ntragu\ntraik\ntrail\ntrain\ntrait\ntramp\ntrams\ntrank\ntranq\ntrans\ntrant\ntrape\ntrapo\ntraps\ntrapt\ntrash\ntrass\ntrats\ntratt\ntrave\ntrawl\ntrayf\ntrays\ntread\ntreat\ntreck\ntreed\ntreen\ntrees\ntrefa\ntreif\ntreks\ntrema\ntrems\ntrend\ntress\ntrest\ntrets\ntrews\ntreyf\ntreys\ntriac\ntriad\ntrial\ntribe\ntrice\ntrick\ntride\ntried\ntrier\ntries\ntrifa\ntriff\ntrigo\ntrigs\ntrike\ntrild\ntrill\ntrims\ntrine\ntrins\ntriol\ntrior\ntrios\ntripe\ntrips\ntripy\ntrist\ntrite\ntroad\ntroak\ntroat\ntrock\ntrode\ntrods\ntrogs\ntrois\ntroke\ntroll\ntromp\ntrona\ntronc\ntrone\ntronk\ntrons\ntroop\ntrooz\ntrope\ntropo\ntroth\ntrots\ntrout\ntrove\ntrows\ntroys\ntruce\ntruck\ntrued\ntruer\ntrues\ntrugo\ntrugs\ntrull\ntruly\ntrump\ntrunk\ntruss\ntrust\ntruth\ntryer\ntryke\ntryma\ntryps\ntryst\ntsade\ntsadi\ntsars\ntsked\ntsuba\ntsubo\ntuans\ntuart\ntuath\ntubae\ntubal\ntubar\ntubas\ntubby\ntubed\ntuber\ntubes\ntucks\ntufas\ntuffe\ntuffs\ntufts\ntufty\ntugra\ntuile\ntuina\ntuism\ntuktu\ntules\ntulip\ntulle\ntulpa\ntulps\ntulsi\ntumid\ntummy\ntumor\ntumps\ntumpy\ntunas\ntunds\ntuned\ntuner\ntunes\ntungs\ntunic\ntunny\ntupek\ntupik\ntuple\ntuque\nturbo\nturds\nturfs\nturfy\nturks\nturme\nturms\nturns\nturnt\nturon\nturps\nturrs\ntushy\ntusks\ntusky\ntutee\ntutes\ntutor\ntutti\ntutty\ntutus\ntuxes\ntuyer\ntwaes\ntwain\ntwals\ntwang\ntwank\ntwats\ntways\ntweak\ntweed\ntweel\ntween\ntweep\ntweer\ntweet\ntwerk\ntwerp\ntwice\ntwier\ntwigs\ntwill\ntwilt\ntwine\ntwink\ntwins\ntwiny\ntwire\ntwirk\ntwirl\ntwirp\ntwist\ntwite\ntwits\ntwixt\ntwocs\ntwoer\ntwonk\ntwyer\ntyees\ntyers\ntying\ntyiyn\ntykes\ntyler\ntymps\ntynde\ntyned\ntynes\ntypal\ntyped\ntypes\ntypey\ntypic\ntypos\ntypps\ntypto\ntyran\ntyred\ntyres\ntyros\ntythe\ntzars\nubacs\nubity\nudals\nudder\nudons\nudyog\nugali\nugged\nuhlan\nuhuru\nukase\nulama\nulans\nulcer\nulema\nulmin\nulmos\nulnad\nulnae\nulnar\nulnas\nulpan\nultra\nulvas\nulyie\nulzie\numami\numbel\number\numble\numbos\numbra\numbre\numiac\numiak\numiaq\nummah\nummas\nummed\numped\numphs\numpie\numpty\numrah\numras\nunagi\nunais\nunapt\nunarm\nunary\nunaus\nunbag\nunban\nunbar\nunbed\nunbid\nunbox\nuncap\nunces\nuncia\nuncle\nuncos\nuncoy\nuncus\nuncut\nundam\nundee\nunder\nundid\nundos\nundue\nundug\nuneth\nunfed\nunfit\nunfix\nungag\nunget\nungod\nungot\nungum\nunhat\nunhip\nunica\nunify\nunion\nunios\nunite\nunits\nunity\nunjam\nunked\nunket\nunkey\nunkid\nunkut\nunlap\nunlaw\nunlay\nunled\nunleg\nunlet\nunlid\nunlit\nunmad\nunman\nunmet\nunmew\nunmix\nunode\nunold\nunown\nunpay\nunpeg\nunpen\nunpin\nunply\nunpot\nunput\nunred\nunrid\nunrig\nunrip\nunsaw\nunsay\nunsee\nunset\nunsew\nunsex\nunsod\nunsub\nuntag\nuntax\nuntie\nuntil\nuntin\nunwed\nunwet\nunwit\nunwon\nunzip\nupbow\nupbye\nupdos\nupdry\nupend\nupful\nupjet\nuplay\nupled\nuplit\nupped\nupper\nupran\nuprun\nupsee\nupset\nupsey\nuptak\nupter\nuptie\nuraei\nurali\nuraos\nurare\nurari\nurase\nurate\nurban\nurbex\nurbia\nurdee\nureal\nureas\nuredo\nureic\nureid\nurena\nurent\nurged\nurger\nurges\nurial\nurine\nurite\nurman\nurnal\nurned\nurped\nursae\nursid\nurson\nurubu\nurupa\nurvas\nusage\nusens\nusers\nuseta\nusher\nusing\nusnea\nusnic\nusque\nustad\nuster\nusual\nusure\nusurp\nusury\nuteri\nutero\nutile\nutter\nuveal\nuveas\nuvula\nvacas\nvacay\nvacua\nvacui\nvacuo\nvadas\nvaded\nvades\nvadge\nvagal\nvague\nvagus\nvaids\nvails\nvaire\nvairs\nvairy\nvajra\nvakas\nvakil\nvales\nvalet\nvalid\nvalis\nvalli\nvalor\nvalse\nvalue\nvalve\nvamps\nvampy\nvanda\nvaned\nvanes\nvanga\nvangs\nvants\nvaped\nvaper\nvapes\nvapid\nvapor\nvaran\nvaras\nvarda\nvardo\nvardy\nvarec\nvares\nvaria\nvarix\nvarna\nvarus\nvarve\nvasal\nvases\nvasts\nvasty\nvatas\nvatha\nvatic\nvatje\nvatos\nvatus\nvauch\nvault\nvaunt\nvaute\nvauts\nvawte\nvaxes\nveale\nveals\nvealy\nveena\nveeps\nveers\nveery\nvegan\nvegas\nveges\nveggo\nvegie\nvegos\nvehme\nveils\nveily\nveins\nveiny\nvelar\nvelds\nveldt\nveles\nvells\nvelum\nvenae\nvenal\nvenas\nvends\nvendu\nveney\nvenge\nvenin\nvenom\nventi\nvents\nvenue\nvenus\nverba\nverbs\nverde\nverge\nverra\nverre\nverry\nversa\nverse\nverso\nverst\nverte\nverts\nvertu\nverve\nvespa\nvesta\nvests\nvetch\nveuve\nveves\nvexed\nvexer\nvexes\nvexil\nvezir\nvials\nviand\nvibed\nvibes\nvibex\nvibey\nvicar\nviced\nvices\nvichy\nvicus\nvideo\nviers\nvieux\nviews\nviewy\nvifda\nviffs\nvigas\nvigia\nvigil\nvigor\nvilde\nviler\nvilla\nville\nvilli\nvills\nvimen\nvinal\nvinas\nvinca\nvined\nviner\nvines\nvinew\nvinho\nvinic\nvinny\nvinos\nvints\nvinyl\nviola\nviold\nviols\nviper\nviral\nvired\nvireo\nvires\nvirga\nvirge\nvirgo\nvirid\nvirls\nvirtu\nvirus\nvisas\nvised\nvises\nvisie\nvisit\nvisna\nvisne\nvison\nvisor\nvista\nvisto\nvitae\nvital\nvitas\nvitex\nvitro\nvitta\nvivas\nvivat\nvivda\nviver\nvives\nvivid\nvivos\nvivre\nvixen\nvizir\nvizor\nvlast\nvleis\nvlies\nvlogs\nvoars\nvobla\nvocab\nvocal\nvoces\nvoddy\nvodka\nvodou\nvodun\nvoema\nvogie\nvogue\nvoice\nvoici\nvoids\nvoila\nvoile\nvoips\nvolae\nvolar\nvoled\nvoles\nvolet\nvolke\nvolks\nvolta\nvolte\nvolti\nvolts\nvolva\nvolve\nvomer\nvomit\nvoted\nvoter\nvotes\nvouch\nvouge\nvoulu\nvowed\nvowel\nvower\nvoxel\nvoxes\nvozhd\nvraic\nvrils\nvroom\nvrous\nvrouw\nvrows\nvuggs\nvuggy\nvughs\nvughy\nvulgo\nvulns\nvulva\nvutty\nvygie\nvying\nwaacs\nwacke\nwacko\nwacks\nwacky\nwadas\nwadds\nwaddy\nwaded\nwader\nwades\nwadge\nwadis\nwadts\nwafer\nwaffs\nwafts\nwaged\nwager\nwages\nwagga\nwagon\nwagyu\nwahay\nwahey\nwahoo\nwaide\nwaifs\nwaift\nwails\nwains\nwairs\nwaist\nwaite\nwaits\nwaive\nwakas\nwaked\nwaken\nwaker\nwakes\nwakfs\nwaldo\nwalds\nwaled\nwaler\nwales\nwalie\nwalis\nwalks\nwalla\nwalls\nwally\nwalty\nwaltz\nwamed\nwames\nwamus\nwands\nwaned\nwanes\nwaney\nwangs\nwanks\nwanky\nwanle\nwanly\nwanna\nwanta\nwants\nwanty\nwanze\nwaqfs\nwarbs\nwarby\nwards\nwared\nwares\nwarez\nwarks\nwarms\nwarns\nwarps\nwarre\nwarst\nwarts\nwarty\nwases\nwashi\nwashy\nwasms\nwasps\nwaspy\nwaste\nwasts\nwatap\nwatch\nwater\nwatts\nwauff\nwaugh\nwauks\nwaulk\nwauls\nwaurs\nwaved\nwaver\nwaves\nwavey\nwawas\nwawes\nwawls\nwaxed\nwaxen\nwaxer\nwaxes\nwayed\nwazir\nwazoo\nweald\nweals\nweamb\nweans\nwears\nweary\nweave\nwebby\nweber\nwecht\nwedel\nwedge\nwedgy\nweeds\nweedy\nweeis\nweeke\nweeks\nweels\nweems\nweens\nweeny\nweeps\nweepy\nweest\nweete\nweets\nwefte\nwefts\nweids\nweigh\nweils\nweird\nweirs\nweise\nweize\nwekas\nwelch\nwelds\nwelke\nwelks\nwelkt\nwells\nwelly\nwelsh\nwelts\nwembs\nwench\nwends\nwenge\nwenny\nwents\nwerfs\nweros\nwersh\nwests\nwetas\nwetly\nwexed\nwexes\nwhack\nwhale\nwhamo\nwhams\nwhang\nwhaps\nwhare\nwharf\nwhata\nwhats\nwhaup\nwhaur\nwheal\nwhear\nwheat\nwheek\nwheel\nwheen\nwheep\nwheft\nwhelk\nwhelm\nwhelp\nwhens\nwhere\nwhets\nwhews\nwheys\nwhich\nwhids\nwhies\nwhiff\nwhift\nwhigs\nwhile\nwhilk\nwhims\nwhine\nwhins\nwhiny\nwhios\nwhips\nwhipt\nwhirl\nwhirr\nwhirs\nwhish\nwhisk\nwhiss\nwhist\nwhite\nwhits\nwhity\nwhizz\nwhole\nwhomp\nwhoof\nwhoop\nwhoot\nwhops\nwhore\nwhorl\nwhort\nwhose\nwhoso\nwhows\nwhump\nwhups\nwhyda\nwicca\nwicks\nwicky\nwiddy\nwiden\nwider\nwides\nwidow\nwidth\nwield\nwiels\nwifed\nwifes\nwifey\nwifie\nwifts\nwifty\nwigan\nwigga\nwiggy\nwight\nwikis\nwilco\nwilds\nwiled\nwiles\nwilga\nwilis\nwilja\nwills\nwilly\nwilts\nwimps\nwimpy\nwince\nwinch\nwinds\nwindy\nwined\nwines\nwiney\nwinge\nwings\nwingy\nwinks\nwinky\nwinna\nwinns\nwinos\nwinze\nwiped\nwiper\nwipes\nwired\nwirer\nwires\nwirra\nwirri\nwised\nwiser\nwises\nwisha\nwisht\nwisps\nwispy\nwists\nwitan\nwitch\nwited\nwites\nwithe\nwiths\nwithy\nwitty\nwived\nwiver\nwives\nwizen\nwizes\nwizzo\nwoads\nwoady\nwoald\nwocks\nwodge\nwodgy\nwoful\nwojus\nwoken\nwoker\nwokka\nwolds\nwolfs\nwolly\nwolve\nwoman\nwomas\nwombs\nwomby\nwomen\nwomyn\nwonga\nwongi\nwonks\nwonky\nwonts\nwoods\nwoody\nwooed\nwooer\nwoofs\nwoofy\nwoold\nwools\nwooly\nwoons\nwoops\nwoopy\nwoose\nwoosh\nwootz\nwoozy\nwords\nwordy\nworks\nworky\nworld\nworms\nwormy\nworry\nworse\nworst\nworth\nworts\nwould\nwound\nwoven\nwowed\nwowee\nwowse\nwoxen\nwrack\nwrang\nwraps\nwrapt\nwrast\nwrate\nwrath\nwrawl\nwreak\nwreck\nwrens\nwrest\nwrick\nwried\nwrier\nwries\nwring\nwrist\nwrite\nwrits\nwroke\nwrong\nwroot\nwrote\nwroth\nwrung\nwryer\nwryly\nwuddy\nwudus\nwuffs\nwulls\nwunga\nwurst\nwuses\nwushu\nwussy\nwuxia\nwyled\nwyles\nwynds\nwynns\nwyted\nwytes\nwythe\nxebec\nxenia\nxenic\nxenon\nxeric\nxerox\nxerus\nxoana\nxolos\nxrays\nxviii\nxylan\nxylem\nxylic\nxylol\nxylyl\nxysti\nxysts\nyaars\nyaass\nyabas\nyabba\nyabby\nyacca\nyacht\nyacka\nyacks\nyadda\nyaffs\nyager\nyages\nyagis\nyagna\nyahoo\nyaird\nyajna\nyakka\nyakow\nyales\nyamen\nyampa\nyampy\nyamun\nyandy\nyangs\nyanks\nyapok\nyapon\nyapps\nyappy\nyarak\nyarco\nyards\nyarer\nyarfa\nyarks\nyarns\nyarra\nyarrs\nyarta\nyarto\nyates\nyatra\nyauds\nyauld\nyaups\nyawed\nyawey\nyawls\nyawns\nyawny\nyawps\nyayas\nybore\nyclad\nycled\nycond\nydrad\nydred\nyeads\nyeahs\nyealm\nyeans\nyeard\nyearn\nyears\nyeast\nyecch\nyechs\nyechy\nyedes\nyeeds\nyeeek\nyeesh\nyeggs\nyelks\nyells\nyelms\nyelps\nyelts\nyenta\nyente\nyerba\nyerds\nyerks\nyeses\nyesks\nyests\nyesty\nyetis\nyetts\nyeuch\nyeuks\nyeuky\nyeven\nyeves\nyewen\nyexed\nyexes\nyfere\nyield\nyiked\nyikes\nyills\nyince\nyipes\nyippy\nyirds\nyirks\nyirrs\nyirth\nyites\nyitie\nylems\nylide\nylids\nylike\nylkes\nymolt\nympes\nyobbo\nyobby\nyocks\nyodel\nyodhs\nyodle\nyogas\nyogee\nyoghs\nyogic\nyogin\nyogis\nyohah\nyohay\nyoick\nyojan\nyokan\nyoked\nyokeg\nyokel\nyoker\nyokes\nyokul\nyolks\nyolky\nyolps\nyomim\nyomps\nyonic\nyonis\nyonks\nyonny\nyoofs\nyoops\nyopos\nyoppo\nyores\nyorga\nyorks\nyorps\nyouks\nyoung\nyourn\nyours\nyourt\nyouse\nyouth\nyowed\nyowes\nyowie\nyowls\nyowsa\nyowza\nyoyos\nyrapt\nyrent\nyrivd\nyrneh\nysame\nytost\nyuans\nyucas\nyucca\nyucch\nyucko\nyucks\nyucky\nyufts\nyugas\nyuked\nyukes\nyukky\nyukos\nyulan\nyules\nyummo\nyummy\nyumps\nyupon\nyuppy\nyurta\nyurts\nyuzus\nzabra\nzacks\nzaida\nzaide\nzaidy\nzaire\nzakat\nzamac\nzamak\nzaman\nzambo\nzamia\nzamis\nzanja\nzante\nzanza\nzanze\nzappy\nzarda\nzarfs\nzaris\nzatis\nzawns\nzaxes\nzayde\nzayin\nzazen\nzeals\nzebec\nzebra\nzebub\nzebus\nzedas\nzeera\nzeins\nzendo\nzerda\nzerks\nzeros\nzests\nzesty\nzetas\nzexes\nzezes\nzhomo\nzhush\nzhuzh\nzibet\nziffs\nzigan\nzikrs\nzilas\nzilch\nzilla\nzills\nzimbi\nzimbs\nzinco\nzincs\nzincy\nzineb\nzines\nzings\nzingy\nzinke\nzinky\nzinos\nzippo\nzippy\nziram\nzitis\nzitty\nzizel\nzizit\nzlote\nzloty\nzoaea\nzobos\nzobus\nzocco\nzoeae\nzoeal\nzoeas\nzoism\nzoist\nzokor\nzolle\nzombi\nzonae\nzonal\nzonda\nzoned\nzoner\nzones\nzonks\nzooea\nzooey\nzooid\nzooks\nzooms\nzoomy\nzoons\nzooty\nzoppa\nzoppo\nzoril\nzoris\nzorro\nzorse\nzouks\nzowee\nzowie\nzulus\nzupan\nzupas\nzuppa\nzurfs\nzuzim\nzygal\nzygon\nzymes\nzymic".split("\n"),i=(n,e,t=[])=>{const a=document.createElementNS("http://www.w3.org/2000/svg",n);return Object.keys(e).forEach((n=>{a.setAttribute(n,String(e[n]))})),t.length&&t.forEach((n=>{const e=i(...n);a.appendChild(e)})),a},r=n=>"string"==typeof n?n:n&&n.class?n.class&&"string"==typeof n.class?n.class.split(" "):n.class&&Array.isArray(n.class)?n.class:"":"",s=(n,{nameAttr:e,icons:t,attrs:a})=>{const s=n.getAttribute(e);if(null==s)return;const o=t[s.replace(/(\w)(\w*)(_|-|\s*)/g,((n,e,t)=>e.toUpperCase()+t.toLowerCase()))];if(!o)return console.warn(`${n.outerHTML} icon name was not found in the provided icons object.`);const l=(n=>Array.from(n.attributes).reduce(((n,e)=>(n[e.name]=e.value,n)),{}))(n),[c,u,d]=o,h={...u,"data-lucide":s,...a,...l},f=["lucide",`lucide-${s}`,l,a].flatMap(r).map((n=>n.trim())).filter(Boolean).filter(((n,e,t)=>t.indexOf(n)===e)).join(" ");f&&Object.assign(h,{class:f});const m=(([n,e,t])=>i(n,e,t))([c,h,d]);return n.parentNode?.replaceChild(m,n)},o={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};var l=function(n,e,t,a){return new(t||(t=Promise))((function(i,r){function s(n){try{l(a.next(n))}catch(n){r(n)}}function o(n){try{l(a.throw(n))}catch(n){r(n)}}function l(n){var e;n.done?i(n.value):(e=n.value,e instanceof t?e:new t((function(n){n(e)}))).then(s,o)}l((a=a.apply(n,e||[])).next())}))};(({icons:n={},nameAttr:e="data-lucide",attrs:t={}}={})=>{if(!Object.values(n).length)throw new Error("Please provide an icons object.\nIf you want to use all the icons you can import it like:\n `import { createIcons, icons } from 'lucide';\nlucide.createIcons({icons});`");if("undefined"==typeof document)throw new Error("`createIcons()` only works in a browser environment.");const a=document.querySelectorAll(`[${e}]`);if(Array.from(a).forEach((a=>s(a,{nameAttr:e,icons:n,attrs:t}))),"data-lucide"===e){const e=document.querySelectorAll("[icon-name]");e.length>0&&(console.warn("[Lucide] Some icons were found with the now deprecated icon-name attribute. These will still be replaced for backwards compatibility, but will no longer be supported in v1.0 and you should switch to data-lucide"),Array.from(e).forEach((e=>s(e,{nameAttr:"icon-name",icons:n,attrs:t}))))}})({icons:{Info:["svg",o,[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"M12 16v-4"}],["path",{d:"M12 8h.01"}]]],ChartBar:["svg",o,[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16"}],["path",{d:"M7 16h8"}],["path",{d:"M7 11h12"}],["path",{d:"M7 6h3"}]]],Trophy:["svg",o,[["path",{d:"M6 9H4.5a2.5 2.5 0 0 1 0-5H6"}],["path",{d:"M18 9h1.5a2.5 2.5 0 0 0 0-5H18"}],["path",{d:"M4 22h16"}],["path",{d:"M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20.24 7 22"}],["path",{d:"M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20.24 17 22"}],["path",{d:"M18 2H6v7a6 6 0 0 0 12 0V2Z"}]]],CircleUserRound:["svg",o,[["path",{d:"M18 20a6 6 0 0 0-12 0"}],["circle",{cx:"12",cy:"10",r:"4"}],["circle",{cx:"12",cy:"12",r:"10"}]]],Settings2:["svg",o,[["path",{d:"M20 7h-9"}],["path",{d:"M14 17H5"}],["circle",{cx:"17",cy:"17",r:"3"}],["circle",{cx:"7",cy:"7",r:"3"}]]]}}),t(42);const c=document.querySelector(".wordle-grid-container"),u=document.querySelector(".key-container"),d=document.querySelector(".winner-note");let h=[];function f(n=!0){u.style.opacity=n?"0.5":"1",u.style.pointerEvents=n?"none":"all"}function m(n,e,t,a){return l(this,void 0,void 0,(function*(){return new Promise(((i,r)=>{y(d.firstElementChild,n),d.classList.add(a.toString()),setTimeout((()=>{d.classList.add("displayed")}),e),setTimeout((()=>{d.classList.remove("displayed"),setTimeout((()=>{d.classList.contains("displayed")||d.classList.remove(a.toString())}),250),h.forEach((n=>{n.style.opacity="1"})),i()}),t+e)}))}))}function p(e,t){return h[e*n.WORD_LENGTH+t]}function g(e){const t=h.slice(e*n.WORD_LENGTH,e*n.WORD_LENGTH+n.WORD_LENGTH);let a="";return t.forEach((n=>a+=n.firstElementChild.textContent)),a}function y(n,e){n.textContent=e}function b(n,e,t=500,a=250,i){return l(this,void 0,void 0,(function*(){return new Promise(((r,s)=>l(this,void 0,void 0,(function*(){"dixie"===e.word.toLowerCase()&&t>0&&(yield m("❤️❤️❤️",0,1500,"message"));for(let s=0;s{o.classList.add("flipped")}),s*a),setTimeout((()=>l(this,void 0,void 0,(function*(){let t=document.querySelector(`.keycode-${e.word[s].toLowerCase()}`);"Correct"===e.result[s]?(o.classList.add("correct"),t.classList.add("correct"),t.classList.remove("misplaced"),t.classList.remove("wrong")):"Misplaced"===e.result[s]?(o.classList.add("misplaced"),t.classList.contains("correct")||t.classList.add("misplaced"),t.classList.remove("wrong")):(o.classList.add("wrong"),t.classList.contains("correct")||t.classList.contains("misplaced")||t.classList.add("wrong")),s===e.result.length-1&&(i&&e.correctLetters()===e.result.length&&(yield v(n)),r())}))),s*a+t/2)}}))))}))}function v(e){return l(this,void 0,void 0,(function*(){return new Promise(((t,a)=>{setTimeout((()=>{for(let t=0;t=e*n.WORD_LENGTH+n.WORD_LENGTH||t{i.classList.add("jumped"),a===n.WORD_LENGTH-1&&setTimeout((()=>{t()}),500)}),100*a)}}),250)}))}))}var x=t(714);const k=new(t.n(x)())("yet-another-wordle-clone!!!").shuffle(["aback","abase","abate","abbey","abbot","abhor","abide","abled","abode","abort","about","above","abuse","abyss","acorn","acrid","actor","acute","adage","adapt","adept","admin","admit","adobe","adopt","adore","adorn","adult","affix","afire","afoot","afoul","after","again","agape","agate","agent","agile","aging","aglow","agony","agora","agree","ahead","aider","aisle","alarm","album","alert","algae","alibi","alien","align","alike","alive","allay","alley","allot","allow","alloy","aloft","alone","along","aloof","aloud","alpha","altar","alter","amass","amaze","amber","amble","amend","amiss","amity","among","ample","amply","amuse","angel","anger","angle","angry","angst","anime","ankle","annex","annoy","annul","anode","antic","anvil","aorta","apart","aphid","aping","apnea","apple","apply","apron","aptly","arbor","ardor","arena","argue","arise","armor","aroma","arose","array","arrow","arson","artsy","ascot","ashen","aside","askew","assay","asset","atoll","atone","attic","audio","audit","augur","aunty","avail","avert","avian","avoid","await","awake","award","aware","awash","awful","awoke","axial","axiom","axion","azure","bacon","badge","badly","bagel","baggy","baker","baler","balmy","banal","banjo","barge","baron","basal","basic","basil","basin","basis","baste","batch","bathe","baton","batty","bawdy","bayou","beach","beady","beard","beast","beech","beefy","befit","began","begat","beget","begin","begun","being","belch","belie","belle","belly","below","bench","beret","berry","berth","beset","betel","bevel","bezel","bible","bicep","biddy","bigot","bilge","billy","binge","bingo","biome","birch","birth","bison","bitty","black","blade","blame","bland","blank","blare","blast","blaze","bleak","bleat","bleed","bleep","blend","bless","blimp","blind","blink","bliss","blitz","bloat","block","bloke","blond","blood","bloom","blown","bluer","bluff","blunt","blurb","blurt","blush","board","boast","bobby","boney","bongo","bonus","booby","boost","booth","booty","booze","boozy","borax","borne","bosom","bossy","botch","bough","boule","bound","bowel","boxer","brace","braid","brain","brake","brand","brash","brass","brave","bravo","brawl","brawn","bread","break","breed","briar","bribe","brick","bride","brief","brine","bring","brink","briny","brisk","broad","broil","broke","brood","brook","broom","broth","brown","brunt","brush","brute","buddy","budge","buggy","bugle","build","built","bulge","bulky","bully","bunch","bunny","burly","burnt","burst","bused","bushy","butch","butte","buxom","buyer","bylaw","cabal","cabby","cabin","cable","cacao","cache","cacti","caddy","cadet","cagey","cairn","camel","cameo","canal","candy","canny","canoe","canon","caper","caput","carat","cargo","carol","carry","carve","caste","catch","cater","catty","caulk","cause","cavil","cease","cedar","cello","chafe","chaff","chain","chair","chalk","champ","chant","chaos","chard","charm","chart","chase","chasm","cheap","cheat","check","cheek","cheer","chess","chest","chick","chide","chief","child","chili","chill","chime","china","chirp","chock","choir","choke","chord","chore","chose","chuck","chump","chunk","churn","chute","cider","cigar","cinch","circa","civic","civil","clack","claim","clamp","clang","clank","clash","clasp","class","clean","clear","cleat","cleft","clerk","click","cliff","climb","cling","clink","cloak","clock","clone","close","cloth","cloud","clout","clove","clown","cluck","clued","clump","clung","coach","coast","cobra","cocoa","colon","color","comet","comfy","comic","comma","conch","condo","conic","copse","coral","corer","corny","couch","cough","could","count","coupe","court","coven","cover","covet","covey","cower","coyly","crack","craft","cramp","crane","crank","crash","crass","crate","crave","crawl","craze","crazy","creak","cream","credo","creed","creek","creep","creme","crepe","crept","cress","crest","crick","cried","crier","crime","crimp","crisp","croak","crock","crone","crony","crook","cross","croup","crowd","crown","crude","cruel","crumb","crump","crush","crust","crypt","cubic","cumin","curio","curly","curry","curse","curve","curvy","cutie","cyber","cycle","cynic","daddy","daily","dairy","daisy","dally","dance","dandy","datum","daunt","dealt","death","debar","debit","debug","debut","decal","decay","decor","decoy","decry","defer","deign","deity","delay","delta","delve","demon","demur","denim","dense","depot","depth","derby","deter","detox","deuce","devil","diary","dicey","digit","dilly","dimly","diner","dingo","dingy","diode","dirge","dirty","disco","ditch","ditto","ditty","diver","dixie","dizzy","dodge","dodgy","dogma","doing","dolly","donor","donut","dopey","doubt","dough","dowdy","dowel","downy","dowry","dozen","draft","drain","drake","drama","drank","drape","drawl","drawn","dread","dream","dress","dried","drier","drift","drill","drink","drive","droit","droll","drone","drool","droop","dross","drove","drown","druid","drunk","dryer","dryly","duchy","dully","dummy","dumpy","dunce","dusky","dusty","dutch","duvet","dwarf","dwell","dwelt","dying","eager","eagle","early","earth","easel","eaten","eater","ebony","eclat","edict","edify","eerie","egret","eight","eject","eking","elate","elbow","elder","elect","elegy","elfin","elide","elite","elope","elude","email","embed","ember","emcee","empty","enact","endow","enema","enemy","enjoy","ennui","ensue","enter","entry","envoy","epoch","epoxy","equal","equip","erase","erect","erode","error","erupt","essay","ester","ether","ethic","ethos","etude","evade","event","every","evict","evoke","exact","exalt","excel","exert","exile","exist","expel","extol","extra","exult","eying","fable","facet","faint","fairy","faith","false","fancy","fanny","farce","fatal","fatty","fault","fauna","favor","feast","fecal","feign","fella","felon","femme","femur","fence","feral","ferry","fetal","fetch","fetid","fetus","fever","fewer","fiber","fibre","ficus","field","fiend","fiery","fifth","fifty","fight","filer","filet","filly","filmy","filth","final","finch","finer","first","fishy","fixer","fizzy","fjord","flack","flail","flair","flake","flaky","flame","flank","flare","flash","flask","fleck","fleet","flesh","flick","flier","fling","flint","flirt","float","flock","flood","floor","flora","floss","flour","flout","flown","fluff","fluid","fluke","flume","flung","flunk","flush","flute","flyer","foamy","focal","focus","foggy","foist","folio","folly","foray","force","forge","forgo","forte","forth","forty","forum","found","foyer","frail","frame","frank","fraud","freak","freed","freer","fresh","friar","fried","frill","frisk","fritz","frock","frond","front","frost","froth","frown","froze","fruit","fudge","fugue","fully","fungi","funky","funny","furor","furry","fussy","fuzzy","gaffe","gaily","gamer","gamma","gamut","gassy","gaudy","gauge","gaunt","gauze","gavel","gawky","gayer","gayly","gazer","gecko","geeky","geese","genie","genre","ghost","ghoul","giant","giddy","gipsy","girly","girth","given","giver","glade","gland","glare","glass","glaze","gleam","glean","glide","glint","gloat","globe","gloom","glory","gloss","glove","glyph","gnash","gnome","godly","going","golem","golly","gonad","goner","goody","gooey","goofy","goose","gorge","gouge","gourd","grace","grade","graft","grail","grain","grand","grant","grape","graph","grasp","grass","grate","grave","gravy","graze","great","greed","green","greet","grief","grill","grime","grimy","grind","gripe","groan","groin","groom","grope","gross","group","grout","grove","growl","grown","gruel","gruff","grunt","guard","guava","guess","guest","guide","guild","guile","guilt","guise","gulch","gully","gumbo","gummy","guppy","gusto","gusty","gypsy","habit","hairy","halve","handy","happy","hardy","harem","harpy","harry","harsh","haste","hasty","hatch","hater","haunt","haute","haven","havoc","hazel","heady","heard","heart","heath","heave","heavy","hedge","hefty","heist","helix","hello","hence","heron","hilly","hinge","hippo","hippy","hitch","hoard","hobby","hoist","holly","homer","honey","honor","horde","horny","horse","hotel","hotly","hound","house","hovel","hover","howdy","human","humid","humor","humph","humus","hunch","hunky","hurry","husky","hussy","hutch","hydro","hyena","hymen","hyper","icily","icing","ideal","idiom","idiot","idler","idyll","igloo","iliac","image","imbue","impel","imply","inane","inbox","incur","index","inept","inert","infer","ingot","inlay","inlet","inner","input","inter","intro","ionic","irate","irony","islet","issue","itchy","ivory","jaunt","jazzy","jelly","jerky","jetty","jewel","jiffy","joint","joist","joker","jolly","joust","judge","juice","juicy","jumbo","jumpy","junta","junto","juror","kappa","karma","kayak","kebab","khaki","kinky","kiosk","kitty","knack","knave","knead","kneed","kneel","knelt","knife","knock","knoll","known","koala","krill","label","labor","laden","ladle","lager","lance","lanky","lapel","lapse","large","larva","lasso","latch","later","lathe","latte","laugh","layer","leach","leafy","leaky","leant","leapt","learn","lease","leash","least","leave","ledge","leech","leery","lefty","legal","leggy","lemon","lemur","leper","level","lever","libel","liege","light","liken","lilac","limbo","limit","linen","liner","lingo","lipid","lithe","liver","livid","llama","loamy","loath","lobby","local","locus","lodge","lofty","logic","login","loopy","loose","lorry","loser","louse","lousy","lover","lower","lowly","loyal","lucid","lucky","lumen","lumpy","lunar","lunch","lunge","lupus","lurch","lurid","lusty","lying","lymph","lynch","lyric","macaw","macho","macro","madam","madly","mafia","magic","magma","maize","major","maker","mambo","mamma","mammy","manga","mange","mango","mangy","mania","manic","manly","manor","maple","march","marry","marsh","mason","masse","match","matey","mauve","maxim","maybe","mayor","mealy","meant","meaty","mecca","medal","media","medic","melee","melon","mercy","merge","merit","merry","metal","meter","metro","micro","midge","midst","might","milky","mimic","mince","miner","minim","minor","minty","minus","mirth","miser","missy","mocha","modal","model","modem","mogul","moist","molar","moldy","money","month","moody","moose","moral","moron","morph","mossy","motel","motif","motor","motto","moult","mound","mount","mourn","mouse","mouth","mover","movie","mower","mucky","mucus","muddy","mulch","mummy","munch","mural","murky","mushy","music","musky","musty","myrrh","nadir","naive","nanny","nasal","nasty","natal","naval","navel","needy","neigh","nerdy","nerve","never","newer","newly","nicer","niche","niece","night","ninja","ninny","ninth","noble","nobly","noise","noisy","nomad","noose","north","nosey","notch","novel","nudge","nurse","nutty","nylon","nymph","oaken","obese","occur","ocean","octal","octet","odder","oddly","offal","offer","often","olden","older","olive","ombre","omega","onion","onset","opera","opine","opium","optic","orbit","order","organ","other","otter","ought","ounce","outdo","outer","outgo","ovary","ovate","overt","ovine","ovoid","owing","owner","oxide","ozone","paddy","pagan","paint","paler","palsy","panel","panic","pansy","papal","paper","parer","parka","parry","parse","party","pasta","paste","pasty","patch","patio","patsy","patty","pause","payee","payer","peace","peach","pearl","pecan","pedal","penal","pence","penne","penny","perch","peril","perky","pesky","pesto","petal","petty","phase","phone","phony","photo","piano","picky","piece","piety","piggy","pilot","pinch","piney","pinky","pinto","piper","pique","pitch","pithy","pivot","pixel","pixie","pizza","place","plaid","plain","plait","plane","plank","plant","plate","plaza","plead","pleat","plied","plier","pluck","plumb","plume","plump","plunk","plush","poesy","point","poise","poker","polar","polka","polyp","pooch","poppy","porch","poser","posit","posse","pouch","pound","pouty","power","prank","prawn","preen","press","price","prick","pride","pried","prime","primo","print","prior","prism","privy","prize","probe","prone","prong","proof","prose","proud","prove","prowl","proxy","prude","prune","psalm","pubic","pudgy","puffy","pulpy","pulse","punch","pupal","pupil","puppy","puree","purer","purge","purse","pushy","putty","pygmy","quack","quail","quake","qualm","quark","quart","quash","quasi","queen","queer","quell","query","quest","queue","quick","quiet","quill","quilt","quirk","quite","quota","quote","quoth","rabbi","rabid","racer","radar","radii","radio","rainy","raise","rajah","rally","ralph","ramen","ranch","randy","range","rapid","rarer","raspy","ratio","ratty","raven","rayon","razor","reach","react","ready","realm","rearm","rebar","rebel","rebus","rebut","recap","recur","recut","reedy","refer","refit","regal","rehab","reign","relax","relay","relic","remit","renal","renew","repay","repel","reply","rerun","reset","resin","retch","retro","retry","reuse","revel","revue","rhino","rhyme","rider","ridge","rifle","right","rigid","rigor","rinse","ripen","riper","risen","riser","risky","rival","river","rivet","roach","roast","robin","robot","rocky","rodeo","roger","rogue","roomy","roost","rotor","rouge","rough","round","rouse","route","rover","rowdy","rower","royal","ruddy","ruder","rugby","ruler","rumba","rumor","rupee","rural","rusty","sadly","safer","saint","salad","sally","salon","salsa","salty","salve","salvo","sandy","saner","sappy","sassy","satin","satyr","sauce","saucy","sauna","saute","savor","savoy","savvy","scald","scale","scalp","scaly","scamp","scant","scare","scarf","scary","scene","scent","scion","scoff","scold","scone","scoop","scope","score","scorn","scour","scout","scowl","scram","scrap","scree","screw","scrub","scrum","scuba","sedan","seedy","segue","seize","semen","sense","sepia","serif","serum","serve","setup","seven","sever","sewer","shack","shade","shady","shaft","shake","shaky","shale","shall","shalt","shame","shank","shape","shard","share","shark","sharp","shave","shawl","shear","sheen","sheep","sheer","sheet","sheik","shelf","shell","shied","shift","shine","shiny","shire","shirk","shirt","shoal","shock","shone","shook","shoot","shore","shorn","short","shout","shove","shown","showy","shrew","shrub","shrug","shuck","shunt","shush","shyly","siege","sieve","sight","sigma","silky","silly","since","sinew","singe","siren","sissy","sixth","sixty","skate","skier","skiff","skill","skimp","skirt","skulk","skull","skunk","slack","slain","slang","slant","slash","slate","slave","sleek","sleep","sleet","slept","slice","slick","slide","slime","slimy","sling","slink","sloop","slope","slosh","sloth","slump","slung","slunk","slurp","slush","slyly","smack","small","smart","smash","smear","smell","smelt","smile","smirk","smite","smith","smock","smoke","smoky","smote","snack","snail","snake","snaky","snare","snarl","sneak","sneer","snide","sniff","snipe","snoop","snore","snort","snout","snowy","snuck","snuff","soapy","sober","soggy","solar","solid","solve","sonar","sonic","sooth","sooty","sorry","sound","south","sower","space","spade","spank","spare","spark","spasm","spawn","speak","spear","speck","speed","spell","spelt","spend","spent","sperm","spice","spicy","spied","spiel","spike","spiky","spill","spilt","spine","spiny","spire","spite","splat","split","spoil","spoke","spoof","spook","spool","spoon","spore","sport","spout","spray","spree","sprig","spunk","spurn","spurt","squad","squat","squib","stack","staff","stage","staid","stain","stair","stake","stale","stalk","stall","stamp","stand","stank","stare","stark","start","stash","state","stave","stead","steak","steal","steam","steed","steel","steep","steer","stein","stern","stick","stiff","still","stilt","sting","stink","stint","stock","stoic","stoke","stole","stomp","stone","stony","stood","stool","stoop","store","stork","storm","story","stout","stove","strap","straw","stray","strip","strut","stuck","study","stuff","stump","stung","stunk","stunt","style","suave","sugar","suing","suite","sulky","sully","sumac","sunny","super","surer","surge","surly","sushi","swami","swamp","swarm","swash","swath","swear","sweat","sweep","sweet","swell","swept","swift","swill","swine","swing","swirl","swish","swoon","swoop","sword","swore","sworn","swung","synod","syrup","tabby","table","taboo","tacit","tacky","taffy","taint","taken","taker","tally","talon","tamer","tango","tangy","taper","tapir","tardy","tarot","taste","tasty","tatty","taunt","tawny","teach","teary","tease","teddy","teeth","tempo","tenet","tenor","tense","tenth","tepee","tepid","terra","terse","testy","thank","theft","their","theme","there","these","theta","thick","thief","thigh","thing","think","third","thong","thorn","those","three","threw","throb","throw","thrum","thumb","thump","thyme","tiara","tibia","tidal","tiger","tight","tilde","timer","timid","tipsy","titan","tithe","title","toast","today","toddy","token","tonal","tonga","tonic","tooth","topaz","topic","torch","torso","torus","total","totem","touch","tough","towel","tower","toxic","toxin","trace","track","tract","trade","trail","train","trait","tramp","trash","trawl","tread","treat","trend","triad","trial","tribe","trice","trick","tried","tripe","trite","troll","troop","trope","trout","trove","truce","truck","truer","truly","trump","trunk","truss","trust","truth","tryst","tubal","tuber","tulip","tulle","tumor","tunic","turbo","tutor","twang","tweak","tweed","tweet","twice","twine","twirl","twist","twixt","tying","udder","ulcer","ultra","umbra","uncle","uncut","under","undid","undue","unfed","unfit","unify","union","unite","unity","unlit","unmet","unset","untie","until","unwed","unzip","upper","upset","urban","urine","usage","usher","using","usual","usurp","utile","utter","vague","valet","valid","valor","value","valve","vapid","vapor","vault","vaunt","vegan","venom","venue","verge","verse","verso","verve","vicar","video","vigil","vigor","villa","vinyl","viola","viper","viral","virus","visit","visor","vista","vital","vivid","vixen","vocal","vodka","vogue","voice","voila","vomit","voter","vouch","vowel","vying","wacky","wafer","wager","wagon","waist","waive","waltz","warty","waste","watch","water","waver","waxen","weary","weave","wedge","weedy","weigh","weird","welch","welsh","wench","whack","whale","wharf","wheat","wheel","whelp","where","which","whiff","while","whine","whiny","whirl","whisk","white","whole","whoop","whose","widen","wider","widow","width","wield","wight","willy","wimpy","wince","winch","windy","wiser","wispy","witch","witty","woken","woman","women","woody","wooer","wooly","woozy","wordy","world","worry","worse","worst","worth","would","wound","woven","wrack","wrath","wreak","wreck","wrest","wring","wrist","write","wrong","wrote","wrung","wryly","yacht","yearn","yeast","yield","young","youth","zebra","zesty","zonal"]),w=function(n){const e=[];let t=0;for(let a=0;a>6|192,e[t++]=63&i|128):55296==(64512&i)&&a+1>18|240,e[t++]=i>>12&63|128,e[t++]=i>>6&63|128,e[t++]=63&i|128):(e[t++]=i>>12|224,e[t++]=i>>6&63|128,e[t++]=63&i|128)}return e},C={byteToCharMap_:null,charToByteMap_:null,byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",get ENCODED_VALS(){return this.ENCODED_VALS_BASE+"+/="},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+"-_."},HAS_NATIVE_SUPPORT:"function"==typeof atob,encodeByteArray(n,e){if(!Array.isArray(n))throw Error("encodeByteArray takes an array as a parameter");this.init_();const t=e?this.byteToCharMapWebSafe_:this.byteToCharMap_,a=[];for(let e=0;e>2,u=(3&i)<<4|s>>4;let d=(15&s)<<2|l>>6,h=63&l;o||(h=64,r||(d=64)),a.push(t[c],t[u],t[d],t[h])}return a.join("")},encodeString(n,e){return this.HAS_NATIVE_SUPPORT&&!e?btoa(n):this.encodeByteArray(w(n),e)},decodeString(n,e){return this.HAS_NATIVE_SUPPORT&&!e?atob(n):function(n){const e=[];let t=0,a=0;for(;t191&&i<224){const r=n[t++];e[a++]=String.fromCharCode((31&i)<<6|63&r)}else if(i>239&&i<365){const r=((7&i)<<18|(63&n[t++])<<12|(63&n[t++])<<6|63&n[t++])-65536;e[a++]=String.fromCharCode(55296+(r>>10)),e[a++]=String.fromCharCode(56320+(1023&r))}else{const r=n[t++],s=n[t++];e[a++]=String.fromCharCode((15&i)<<12|(63&r)<<6|63&s)}}return e.join("")}(this.decodeStringToByteArray(n,e))},decodeStringToByteArray(n,e){this.init_();const t=e?this.charToByteMapWebSafe_:this.charToByteMap_,a=[];for(let e=0;e>4;if(a.push(l),64!==s){const n=r<<4&240|s>>2;if(a.push(n),64!==o){const n=s<<6&192|o;a.push(n)}}}return a},init_(){if(!this.byteToCharMap_){this.byteToCharMap_={},this.charToByteMap_={},this.byteToCharMapWebSafe_={},this.charToByteMapWebSafe_={};for(let n=0;n=this.ENCODED_VALS_BASE.length&&(this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(n)]=n,this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(n)]=n)}}};class S extends Error{constructor(){super(...arguments),this.name="DecodeBase64StringError"}}const A=function(n){return function(n){const e=w(n);return C.encodeByteArray(e,!0)}(n).replace(/\./g,"")},T=function(n){try{return C.decodeString(n,!0)}catch(n){console.error("base64Decode failed: ",n)}return null},I=()=>{try{return function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==t.g)return t.g;throw new Error("Unable to locate global object.")}().__FIREBASE_DEFAULTS__||(()=>{if("undefined"==typeof process||void 0===process.env)return;const n=process.env.__FIREBASE_DEFAULTS__;return n?JSON.parse(n):void 0})()||(()=>{if("undefined"==typeof document)return;let n;try{n=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch(n){return}const e=n&&T(n[1]);return e&&JSON.parse(e)})()}catch(n){return void console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${n}`)}},E=n=>{var e,t;return null===(t=null===(e=I())||void 0===e?void 0:e.emulatorHosts)||void 0===t?void 0:t[n]},M=()=>{var n;return null===(n=I())||void 0===n?void 0:n.config},_=n=>{var e;return null===(e=I())||void 0===e?void 0:e[`_${n}`]};class P{constructor(){this.reject=()=>{},this.resolve=()=>{},this.promise=new Promise(((n,e)=>{this.resolve=n,this.reject=e}))}wrapCallback(n){return(e,t)=>{e?this.reject(e):this.resolve(t),"function"==typeof n&&(this.promise.catch((()=>{})),1===n.length?n(e):n(e,t))}}}function R(){return"undefined"!=typeof navigator&&"string"==typeof navigator.userAgent?navigator.userAgent:""}function D(){const n="object"==typeof chrome?chrome.runtime:"object"==typeof browser?browser.runtime:void 0;return"object"==typeof n&&void 0!==n.id}function L(){try{return"object"==typeof indexedDB}catch(n){return!1}}function N(){return new Promise(((n,e)=>{try{let t=!0;const a="validate-browser-context-for-indexeddb-analytics-module",i=self.indexedDB.open(a);i.onsuccess=()=>{i.result.close(),t||self.indexedDB.deleteDatabase(a),n(!0)},i.onupgradeneeded=()=>{t=!1},i.onerror=()=>{var n;e((null===(n=i.error)||void 0===n?void 0:n.message)||"")}}catch(n){e(n)}}))}class B extends Error{constructor(n,e,t){super(e),this.code=n,this.customData=t,this.name="FirebaseError",Object.setPrototypeOf(this,B.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,z.prototype.create)}}class z{constructor(n,e,t){this.service=n,this.serviceName=e,this.errors=t}create(n,...e){const t=e[0]||{},a=`${this.service}/${n}`,i=this.errors[n],r=i?function(n,e){return n.replace(O,((n,t)=>{const a=e[t];return null!=a?String(a):`<${t}?>`}))}(i,t):"Error",s=`${this.serviceName}: ${r} (${a}).`;return new B(a,s,t)}}const O=/\{\$([^}]+)}/g;function F(n,e){if(n===e)return!0;const t=Object.keys(n),a=Object.keys(e);for(const i of t){if(!a.includes(i))return!1;const t=n[i],r=e[i];if(G(t)&&G(r)){if(!F(t,r))return!1}else if(t!==r)return!1}for(const n of a)if(!t.includes(n))return!1;return!0}function G(n){return null!==n&&"object"==typeof n}function j(n){const e=[];for(const[t,a]of Object.entries(n))Array.isArray(a)?a.forEach((n=>{e.push(encodeURIComponent(t)+"="+encodeURIComponent(n))})):e.push(encodeURIComponent(t)+"="+encodeURIComponent(a));return e.length?"&"+e.join("&"):""}function U(n){const e={};return n.replace(/^\?/,"").split("&").forEach((n=>{if(n){const[t,a]=n.split("=");e[decodeURIComponent(t)]=decodeURIComponent(a)}})),e}function V(n){const e=n.indexOf("?");if(!e)return"";const t=n.indexOf("#",e);return n.substring(e,t>0?t:void 0)}class H{constructor(n,e){this.observers=[],this.unsubscribes=[],this.observerCount=0,this.task=Promise.resolve(),this.finalized=!1,this.onNoObservers=e,this.task.then((()=>{n(this)})).catch((n=>{this.error(n)}))}next(n){this.forEachObserver((e=>{e.next(n)}))}error(n){this.forEachObserver((e=>{e.error(n)})),this.close(n)}complete(){this.forEachObserver((n=>{n.complete()})),this.close()}subscribe(n,e,t){let a;if(void 0===n&&void 0===e&&void 0===t)throw new Error("Missing Observer.");a=function(n,e){if("object"!=typeof n||null===n)return!1;for(const e of["next","error","complete"])if(e in n&&"function"==typeof n[e])return!0;return!1}(n)?n:{next:n,error:e,complete:t},void 0===a.next&&(a.next=q),void 0===a.error&&(a.error=q),void 0===a.complete&&(a.complete=q);const i=this.unsubscribeOne.bind(this,this.observers.length);return this.finalized&&this.task.then((()=>{try{this.finalError?a.error(this.finalError):a.complete()}catch(n){}})),this.observers.push(a),i}unsubscribeOne(n){void 0!==this.observers&&void 0!==this.observers[n]&&(delete this.observers[n],this.observerCount-=1,0===this.observerCount&&void 0!==this.onNoObservers&&this.onNoObservers(this))}forEachObserver(n){if(!this.finalized)for(let e=0;e{if(void 0!==this.observers&&void 0!==this.observers[n])try{e(this.observers[n])}catch(n){"undefined"!=typeof console&&console.error&&console.error(n)}}))}close(n){this.finalized||(this.finalized=!0,void 0!==n&&(this.finalError=n),this.task.then((()=>{this.observers=void 0,this.onNoObservers=void 0})))}}function q(){}const W=1e3,K=2,J=144e5,$=.5;function Y(n,e=W,t=K){const a=e*Math.pow(t,n),i=Math.round($*a*(Math.random()-.5)*2);return Math.min(J,a+i)}function Q(n){return n&&n._delegate?n._delegate:n}class X{constructor(n,e,t){this.name=n,this.instanceFactory=e,this.type=t,this.multipleInstances=!1,this.serviceProps={},this.instantiationMode="LAZY",this.onInstanceCreated=null}setInstantiationMode(n){return this.instantiationMode=n,this}setMultipleInstances(n){return this.multipleInstances=n,this}setServiceProps(n){return this.serviceProps=n,this}setInstanceCreatedCallback(n){return this.onInstanceCreated=n,this}}const Z="[DEFAULT]";class nn{constructor(n,e){this.name=n,this.container=e,this.component=null,this.instances=new Map,this.instancesDeferred=new Map,this.instancesOptions=new Map,this.onInitCallbacks=new Map}get(n){const e=this.normalizeInstanceIdentifier(n);if(!this.instancesDeferred.has(e)){const n=new P;if(this.instancesDeferred.set(e,n),this.isInitialized(e)||this.shouldAutoInitialize())try{const t=this.getOrInitializeService({instanceIdentifier:e});t&&n.resolve(t)}catch(n){}}return this.instancesDeferred.get(e).promise}getImmediate(n){var e;const t=this.normalizeInstanceIdentifier(null==n?void 0:n.identifier),a=null!==(e=null==n?void 0:n.optional)&&void 0!==e&&e;if(!this.isInitialized(t)&&!this.shouldAutoInitialize()){if(a)return null;throw Error(`Service ${this.name} is not available`)}try{return this.getOrInitializeService({instanceIdentifier:t})}catch(n){if(a)return null;throw n}}getComponent(){return this.component}setComponent(n){if(n.name!==this.name)throw Error(`Mismatching Component ${n.name} for Provider ${this.name}.`);if(this.component)throw Error(`Component for ${this.name} has already been provided`);if(this.component=n,this.shouldAutoInitialize()){if(function(n){return"EAGER"===n.instantiationMode}(n))try{this.getOrInitializeService({instanceIdentifier:Z})}catch(n){}for(const[n,e]of this.instancesDeferred.entries()){const t=this.normalizeInstanceIdentifier(n);try{const n=this.getOrInitializeService({instanceIdentifier:t});e.resolve(n)}catch(n){}}}}clearInstance(n=Z){this.instancesDeferred.delete(n),this.instancesOptions.delete(n),this.instances.delete(n)}async delete(){const n=Array.from(this.instances.values());await Promise.all([...n.filter((n=>"INTERNAL"in n)).map((n=>n.INTERNAL.delete())),...n.filter((n=>"_delete"in n)).map((n=>n._delete()))])}isComponentSet(){return null!=this.component}isInitialized(n=Z){return this.instances.has(n)}getOptions(n=Z){return this.instancesOptions.get(n)||{}}initialize(n={}){const{options:e={}}=n,t=this.normalizeInstanceIdentifier(n.instanceIdentifier);if(this.isInitialized(t))throw Error(`${this.name}(${t}) has already been initialized`);if(!this.isComponentSet())throw Error(`Component ${this.name} has not been registered yet`);const a=this.getOrInitializeService({instanceIdentifier:t,options:e});for(const[n,e]of this.instancesDeferred.entries())t===this.normalizeInstanceIdentifier(n)&&e.resolve(a);return a}onInit(n,e){var t;const a=this.normalizeInstanceIdentifier(e),i=null!==(t=this.onInitCallbacks.get(a))&&void 0!==t?t:new Set;i.add(n),this.onInitCallbacks.set(a,i);const r=this.instances.get(a);return r&&n(r,a),()=>{i.delete(n)}}invokeOnInitCallbacks(n,e){const t=this.onInitCallbacks.get(e);if(t)for(const a of t)try{a(n,e)}catch(n){}}getOrInitializeService({instanceIdentifier:n,options:e={}}){let t=this.instances.get(n);if(!t&&this.component&&(t=this.component.instanceFactory(this.container,{instanceIdentifier:(a=n,a===Z?void 0:a),options:e}),this.instances.set(n,t),this.instancesOptions.set(n,e),this.invokeOnInitCallbacks(t,n),this.component.onInstanceCreated))try{this.component.onInstanceCreated(this.container,n,t)}catch(n){}var a;return t||null}normalizeInstanceIdentifier(n=Z){return this.component?this.component.multipleInstances?n:Z:n}shouldAutoInitialize(){return!!this.component&&"EXPLICIT"!==this.component.instantiationMode}}class en{constructor(n){this.name=n,this.providers=new Map}addComponent(n){const e=this.getProvider(n.name);if(e.isComponentSet())throw new Error(`Component ${n.name} has already been registered with ${this.name}`);e.setComponent(n)}addOrOverwriteComponent(n){this.getProvider(n.name).isComponentSet()&&this.providers.delete(n.name),this.addComponent(n)}getProvider(n){if(this.providers.has(n))return this.providers.get(n);const e=new nn(n,this);return this.providers.set(n,e),e}getProviders(){return Array.from(this.providers.values())}}const tn=[];var an,rn;(rn=an||(an={}))[rn.DEBUG=0]="DEBUG",rn[rn.VERBOSE=1]="VERBOSE",rn[rn.INFO=2]="INFO",rn[rn.WARN=3]="WARN",rn[rn.ERROR=4]="ERROR",rn[rn.SILENT=5]="SILENT";const sn={debug:an.DEBUG,verbose:an.VERBOSE,info:an.INFO,warn:an.WARN,error:an.ERROR,silent:an.SILENT},on=an.INFO,ln={[an.DEBUG]:"log",[an.VERBOSE]:"log",[an.INFO]:"info",[an.WARN]:"warn",[an.ERROR]:"error"},cn=(n,e,...t)=>{if(ee.some((e=>n instanceof e));let hn,fn;const mn=new WeakMap,pn=new WeakMap,gn=new WeakMap,yn=new WeakMap,bn=new WeakMap;let vn={get(n,e,t){if(n instanceof IDBTransaction){if("done"===e)return pn.get(n);if("objectStoreNames"===e)return n.objectStoreNames||gn.get(n);if("store"===e)return t.objectStoreNames[1]?void 0:t.objectStore(t.objectStoreNames[0])}return kn(n[e])},set:(n,e,t)=>(n[e]=t,!0),has:(n,e)=>n instanceof IDBTransaction&&("done"===e||"store"===e)||e in n};function xn(n){return"function"==typeof n?(e=n)!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(fn||(fn=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(...n){return e.apply(wn(this),n),kn(mn.get(this))}:function(...n){return kn(e.apply(wn(this),n))}:function(n,...t){const a=e.call(wn(this),n,...t);return gn.set(a,n.sort?n.sort():[n]),kn(a)}:(n instanceof IDBTransaction&&function(n){if(pn.has(n))return;const e=new Promise(((e,t)=>{const a=()=>{n.removeEventListener("complete",i),n.removeEventListener("error",r),n.removeEventListener("abort",r)},i=()=>{e(),a()},r=()=>{t(n.error||new DOMException("AbortError","AbortError")),a()};n.addEventListener("complete",i),n.addEventListener("error",r),n.addEventListener("abort",r)}));pn.set(n,e)}(n),dn(n,hn||(hn=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(n,vn):n);var e}function kn(n){if(n instanceof IDBRequest)return function(n){const e=new Promise(((e,t)=>{const a=()=>{n.removeEventListener("success",i),n.removeEventListener("error",r)},i=()=>{e(kn(n.result)),a()},r=()=>{t(n.error),a()};n.addEventListener("success",i),n.addEventListener("error",r)}));return e.then((e=>{e instanceof IDBCursor&&mn.set(e,n)})).catch((()=>{})),bn.set(e,n),e}(n);if(yn.has(n))return yn.get(n);const e=xn(n);return e!==n&&(yn.set(n,e),bn.set(e,n)),e}const wn=n=>bn.get(n);function Cn(n,e,{blocked:t,upgrade:a,blocking:i,terminated:r}={}){const s=indexedDB.open(n,e),o=kn(s);return a&&s.addEventListener("upgradeneeded",(n=>{a(kn(s.result),n.oldVersion,n.newVersion,kn(s.transaction),n)})),t&&s.addEventListener("blocked",(n=>t(n.oldVersion,n.newVersion,n))),o.then((n=>{r&&n.addEventListener("close",(()=>r())),i&&n.addEventListener("versionchange",(n=>i(n.oldVersion,n.newVersion,n)))})).catch((()=>{})),o}const Sn=["get","getKey","getAll","getAllKeys","count"],An=["put","add","delete","clear"],Tn=new Map;function In(n,e){if(!(n instanceof IDBDatabase)||e in n||"string"!=typeof e)return;if(Tn.get(e))return Tn.get(e);const t=e.replace(/FromIndex$/,""),a=e!==t,i=An.includes(t);if(!(t in(a?IDBIndex:IDBObjectStore).prototype)||!i&&!Sn.includes(t))return;const r=async function(n,...e){const r=this.transaction(n,i?"readwrite":"readonly");let s=r.store;return a&&(s=s.index(e.shift())),(await Promise.all([s[t](...e),i&&r.done]))[0]};return Tn.set(e,r),r}var En;En=vn,vn={...En,get:(n,e,t)=>In(n,e)||En.get(n,e,t),has:(n,e)=>!!In(n,e)||En.has(n,e)};class Mn{constructor(n){this.container=n}getPlatformInfoString(){return this.container.getProviders().map((n=>{if(function(n){const e=n.getComponent();return"VERSION"===(null==e?void 0:e.type)}(n)){const e=n.getImmediate();return`${e.library}/${e.version}`}return null})).filter((n=>n)).join(" ")}}const _n="@firebase/app",Pn="0.10.11",Rn=new un("@firebase/app"),Dn="[DEFAULT]",Ln={[_n]:"fire-core","@firebase/app-compat":"fire-core-compat","@firebase/analytics":"fire-analytics","@firebase/analytics-compat":"fire-analytics-compat","@firebase/app-check":"fire-app-check","@firebase/app-check-compat":"fire-app-check-compat","@firebase/auth":"fire-auth","@firebase/auth-compat":"fire-auth-compat","@firebase/database":"fire-rtdb","@firebase/database-compat":"fire-rtdb-compat","@firebase/functions":"fire-fn","@firebase/functions-compat":"fire-fn-compat","@firebase/installations":"fire-iid","@firebase/installations-compat":"fire-iid-compat","@firebase/messaging":"fire-fcm","@firebase/messaging-compat":"fire-fcm-compat","@firebase/performance":"fire-perf","@firebase/performance-compat":"fire-perf-compat","@firebase/remote-config":"fire-rc","@firebase/remote-config-compat":"fire-rc-compat","@firebase/storage":"fire-gcs","@firebase/storage-compat":"fire-gcs-compat","@firebase/firestore":"fire-fst","@firebase/firestore-compat":"fire-fst-compat","@firebase/vertexai-preview":"fire-vertex","fire-js":"fire-js",firebase:"fire-js-all"},Nn=new Map,Bn=new Map,zn=new Map;function On(n,e){try{n.container.addComponent(e)}catch(t){Rn.debug(`Component ${e.name} failed to register with FirebaseApp ${n.name}`,t)}}function Fn(n){const e=n.name;if(zn.has(e))return Rn.debug(`There were multiple attempts to register component ${e}.`),!1;zn.set(e,n);for(const e of Nn.values())On(e,n);for(const e of Bn.values())On(e,n);return!0}function Gn(n,e){const t=n.container.getProvider("heartbeat").getImmediate({optional:!0});return t&&t.triggerHeartbeat(),n.container.getProvider(e)}function jn(n){return void 0!==n.settings}const Un=new z("app","Firebase",{"no-app":"No Firebase App '{$appName}' has been created - call initializeApp() first","bad-app-name":"Illegal App name: '{$appName}'","duplicate-app":"Firebase App named '{$appName}' already exists with different options or config","app-deleted":"Firebase App named '{$appName}' already deleted","server-app-deleted":"Firebase Server App has been deleted","no-options":"Need to provide options, when not being deployed to hosting via source.","invalid-app-argument":"firebase.{$appName}() takes either no argument or a Firebase App instance.","invalid-log-argument":"First argument to `onLog` must be null or a function.","idb-open":"Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.","idb-get":"Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.","idb-set":"Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.","idb-delete":"Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}.","finalization-registry-not-supported":"FirebaseServerApp deleteOnDeref field defined but the JS runtime does not support FinalizationRegistry.","invalid-server-app-environment":"FirebaseServerApp is not for use in browser environments."});class Vn{constructor(n,e,t){this._isDeleted=!1,this._options=Object.assign({},n),this._config=Object.assign({},e),this._name=e.name,this._automaticDataCollectionEnabled=e.automaticDataCollectionEnabled,this._container=t,this.container.addComponent(new X("app",(()=>this),"PUBLIC"))}get automaticDataCollectionEnabled(){return this.checkDestroyed(),this._automaticDataCollectionEnabled}set automaticDataCollectionEnabled(n){this.checkDestroyed(),this._automaticDataCollectionEnabled=n}get name(){return this.checkDestroyed(),this._name}get options(){return this.checkDestroyed(),this._options}get config(){return this.checkDestroyed(),this._config}get container(){return this._container}get isDeleted(){return this._isDeleted}set isDeleted(n){this._isDeleted=n}checkDestroyed(){if(this.isDeleted)throw Un.create("app-deleted",{appName:this._name})}}const Hn="10.13.2";function qn(n,e={}){let t=n;"object"!=typeof e&&(e={name:e});const a=Object.assign({name:Dn,automaticDataCollectionEnabled:!1},e),i=a.name;if("string"!=typeof i||!i)throw Un.create("bad-app-name",{appName:String(i)});if(t||(t=M()),!t)throw Un.create("no-options");const r=Nn.get(i);if(r){if(F(t,r.options)&&F(a,r.config))return r;throw Un.create("duplicate-app",{appName:i})}const s=new en(i);for(const n of zn.values())s.addComponent(n);const o=new Vn(t,a,s);return Nn.set(i,o),o}function Wn(n=Dn){const e=Nn.get(n);if(!e&&n===Dn&&M())return qn();if(!e)throw Un.create("no-app",{appName:n});return e}function Kn(n,e,t){var a;let i=null!==(a=Ln[n])&&void 0!==a?a:n;t&&(i+=`-${t}`);const r=i.match(/\s|\//),s=e.match(/\s|\//);if(r||s){const n=[`Unable to register library "${i}" with version "${e}":`];return r&&n.push(`library name "${i}" contains illegal characters (whitespace or "/")`),r&&s&&n.push("and"),s&&n.push(`version name "${e}" contains illegal characters (whitespace or "/")`),void Rn.warn(n.join(" "))}Fn(new X(`${i}-version`,(()=>({library:i,version:e})),"VERSION"))}const Jn="firebase-heartbeat-database",$n=1,Yn="firebase-heartbeat-store";let Qn=null;function Xn(){return Qn||(Qn=Cn(Jn,$n,{upgrade:(n,e)=>{if(0===e)try{n.createObjectStore(Yn)}catch(n){console.warn(n)}}}).catch((n=>{throw Un.create("idb-open",{originalErrorMessage:n.message})}))),Qn}async function Zn(n,e){try{const t=(await Xn()).transaction(Yn,"readwrite"),a=t.objectStore(Yn);await a.put(e,ne(n)),await t.done}catch(n){if(n instanceof B)Rn.warn(n.message);else{const e=Un.create("idb-set",{originalErrorMessage:null==n?void 0:n.message});Rn.warn(e.message)}}}function ne(n){return`${n.name}!${n.options.appId}`}class ee{constructor(n){this.container=n,this._heartbeatsCache=null;const e=this.container.getProvider("app").getImmediate();this._storage=new ae(e),this._heartbeatsCachePromise=this._storage.read().then((n=>(this._heartbeatsCache=n,n)))}async triggerHeartbeat(){var n,e;try{const t=this.container.getProvider("platform-logger").getImmediate().getPlatformInfoString(),a=te();if(null==(null===(n=this._heartbeatsCache)||void 0===n?void 0:n.heartbeats)&&(this._heartbeatsCache=await this._heartbeatsCachePromise,null==(null===(e=this._heartbeatsCache)||void 0===e?void 0:e.heartbeats)))return;if(this._heartbeatsCache.lastSentHeartbeatDate===a||this._heartbeatsCache.heartbeats.some((n=>n.date===a)))return;return this._heartbeatsCache.heartbeats.push({date:a,agent:t}),this._heartbeatsCache.heartbeats=this._heartbeatsCache.heartbeats.filter((n=>{const e=new Date(n.date).valueOf();return Date.now()-e<=2592e6})),this._storage.overwrite(this._heartbeatsCache)}catch(n){Rn.warn(n)}}async getHeartbeatsHeader(){var n;try{if(null===this._heartbeatsCache&&await this._heartbeatsCachePromise,null==(null===(n=this._heartbeatsCache)||void 0===n?void 0:n.heartbeats)||0===this._heartbeatsCache.heartbeats.length)return"";const e=te(),{heartbeatsToSend:t,unsentEntries:a}=function(n,e=1024){const t=[];let a=n.slice();for(const i of n){const n=t.find((n=>n.agent===i.agent));if(n){if(n.dates.push(i.date),ie(t)>e){n.dates.pop();break}}else if(t.push({agent:i.agent,dates:[i.date]}),ie(t)>e){t.pop();break}a=a.slice(1)}return{heartbeatsToSend:t,unsentEntries:a}}(this._heartbeatsCache.heartbeats),i=A(JSON.stringify({version:2,heartbeats:t}));return this._heartbeatsCache.lastSentHeartbeatDate=e,a.length>0?(this._heartbeatsCache.heartbeats=a,await this._storage.overwrite(this._heartbeatsCache)):(this._heartbeatsCache.heartbeats=[],this._storage.overwrite(this._heartbeatsCache)),i}catch(n){return Rn.warn(n),""}}}function te(){return(new Date).toISOString().substring(0,10)}class ae{constructor(n){this.app=n,this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}async runIndexedDBEnvironmentCheck(){return!!L()&&N().then((()=>!0)).catch((()=>!1))}async read(){if(await this._canUseIndexedDBPromise){const n=await async function(n){try{const e=(await Xn()).transaction(Yn),t=await e.objectStore(Yn).get(ne(n));return await e.done,t}catch(n){if(n instanceof B)Rn.warn(n.message);else{const e=Un.create("idb-get",{originalErrorMessage:null==n?void 0:n.message});Rn.warn(e.message)}}}(this.app);return(null==n?void 0:n.heartbeats)?n:{heartbeats:[]}}return{heartbeats:[]}}async overwrite(n){var e;if(await this._canUseIndexedDBPromise){const t=await this.read();return Zn(this.app,{lastSentHeartbeatDate:null!==(e=n.lastSentHeartbeatDate)&&void 0!==e?e:t.lastSentHeartbeatDate,heartbeats:n.heartbeats})}}async add(n){var e;if(await this._canUseIndexedDBPromise){const t=await this.read();return Zn(this.app,{lastSentHeartbeatDate:null!==(e=n.lastSentHeartbeatDate)&&void 0!==e?e:t.lastSentHeartbeatDate,heartbeats:[...t.heartbeats,...n.heartbeats]})}}}function ie(n){return A(JSON.stringify({version:2,heartbeats:n})).length}Fn(new X("platform-logger",(n=>new Mn(n)),"PRIVATE")),Fn(new X("heartbeat",(n=>new ee(n)),"PRIVATE")),Kn(_n,Pn,""),Kn(_n,Pn,"esm2017"),Kn("fire-js",""),Kn("firebase","10.13.2","app");const re="@firebase/installations",se="0.6.9",oe=1e4,le=`w:${se}`,ce="FIS_v2",ue="https://firebaseinstallations.googleapis.com/v1",de=36e5,he=new z("installations","Installations",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"not-registered":"Firebase Installation is not registered.","installation-not-found":"Firebase Installation not found.","request-failed":'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',"app-offline":"Could not process request. Application offline.","delete-pending-registration":"Can't delete installation while there is a pending registration request."});function fe(n){return n instanceof B&&n.code.includes("request-failed")}function me({projectId:n}){return`${ue}/projects/${n}/installations`}function pe(n){return{token:n.token,requestStatus:2,expiresIn:(e=n.expiresIn,Number(e.replace("s","000"))),creationTime:Date.now()};var e}async function ge(n,e){const t=(await e.json()).error;return he.create("request-failed",{requestName:n,serverCode:t.code,serverMessage:t.message,serverStatus:t.status})}function ye({apiKey:n}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":n})}async function be(n){const e=await n();return e.status>=500&&e.status<600?n():e}function ve(n){return new Promise((e=>{setTimeout(e,n)}))}const xe=/^[cdef][\w-]{21}$/,ke="";function we(){try{const n=new Uint8Array(17);(self.crypto||self.msCrypto).getRandomValues(n),n[0]=112+n[0]%16;const e=function(n){var e;return(e=n,btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_")).substr(0,22)}(n);return xe.test(e)?e:ke}catch(n){return ke}}function Ce(n){return`${n.appName}!${n.appId}`}const Se=new Map;function Ae(n,e){const t=Ce(n);Te(t,e),function(n,e){const t=(!Ie&&"BroadcastChannel"in self&&(Ie=new BroadcastChannel("[Firebase] FID Change"),Ie.onmessage=n=>{Te(n.data.key,n.data.fid)}),Ie);t&&t.postMessage({key:n,fid:e}),0===Se.size&&Ie&&(Ie.close(),Ie=null)}(t,e)}function Te(n,e){const t=Se.get(n);if(t)for(const n of t)n(e)}let Ie=null;const Ee="firebase-installations-database",Me=1,_e="firebase-installations-store";let Pe=null;function Re(){return Pe||(Pe=Cn(Ee,Me,{upgrade:(n,e)=>{0===e&&n.createObjectStore(_e)}})),Pe}async function De(n,e){const t=Ce(n),a=(await Re()).transaction(_e,"readwrite"),i=a.objectStore(_e),r=await i.get(t);return await i.put(e,t),await a.done,r&&r.fid===e.fid||Ae(n,e.fid),e}async function Le(n){const e=Ce(n),t=(await Re()).transaction(_e,"readwrite");await t.objectStore(_e).delete(e),await t.done}async function Ne(n,e){const t=Ce(n),a=(await Re()).transaction(_e,"readwrite"),i=a.objectStore(_e),r=await i.get(t),s=e(r);return void 0===s?await i.delete(t):await i.put(s,t),await a.done,!s||r&&r.fid===s.fid||Ae(n,s.fid),s}async function Be(n){let e;const t=await Ne(n.appConfig,(t=>{const a=function(n){return Fe(n||{fid:we(),registrationStatus:0})}(t),i=function(n,e){if(0===e.registrationStatus){if(!navigator.onLine)return{installationEntry:e,registrationPromise:Promise.reject(he.create("app-offline"))};const t={fid:e.fid,registrationStatus:1,registrationTime:Date.now()},a=async function(n,e){try{const t=await async function({appConfig:n,heartbeatServiceProvider:e},{fid:t}){const a=me(n),i=ye(n),r=e.getImmediate({optional:!0});if(r){const n=await r.getHeartbeatsHeader();n&&i.append("x-firebase-client",n)}const s={fid:t,authVersion:ce,appId:n.appId,sdkVersion:le},o={method:"POST",headers:i,body:JSON.stringify(s)},l=await be((()=>fetch(a,o)));if(l.ok){const n=await l.json();return{fid:n.fid||t,registrationStatus:2,refreshToken:n.refreshToken,authToken:pe(n.authToken)}}throw await ge("Create Installation",l)}(n,e);return De(n.appConfig,t)}catch(t){throw fe(t)&&409===t.customData.serverCode?await Le(n.appConfig):await De(n.appConfig,{fid:e.fid,registrationStatus:0}),t}}(n,t);return{installationEntry:t,registrationPromise:a}}return 1===e.registrationStatus?{installationEntry:e,registrationPromise:ze(n)}:{installationEntry:e}}(n,a);return e=i.registrationPromise,i.installationEntry}));return t.fid===ke?{installationEntry:await e}:{installationEntry:t,registrationPromise:e}}async function ze(n){let e=await Oe(n.appConfig);for(;1===e.registrationStatus;)await ve(100),e=await Oe(n.appConfig);if(0===e.registrationStatus){const{installationEntry:e,registrationPromise:t}=await Be(n);return t||e}return e}function Oe(n){return Ne(n,(n=>{if(!n)throw he.create("installation-not-found");return Fe(n)}))}function Fe(n){return 1===(e=n).registrationStatus&&e.registrationTime+oefetch(a,o)));if(l.ok)return pe(await l.json());throw await ge("Generate Auth Token",l)}async function je(n,e=!1){let t;const a=await Ne(n.appConfig,(a=>{if(!Ve(a))throw he.create("not-registered");const i=a.authToken;if(!e&&(2===(r=i).requestStatus&&!function(n){const e=Date.now();return e{if(!Ve(n))throw he.create("not-registered");return 1===(e=n.authToken).requestStatus&&e.requestTime+oe{const e=n.getProvider("app").getImmediate(),t=function(n){if(!n||!n.options)throw He("App Configuration");if(!n.name)throw He("App Name");const e=["projectId","apiKey","appId"];for(const t of e)if(!n.options[t])throw He(t);return{appName:n.name,projectId:n.options.projectId,apiKey:n.options.apiKey,appId:n.options.appId}}(e);return{app:e,appConfig:t,heartbeatServiceProvider:Gn(e,"heartbeat"),_delete:()=>Promise.resolve()}}),"PUBLIC")),Fn(new X("installations-internal",(n=>{const e=Gn(n.getProvider("app").getImmediate(),qe).getImmediate();return{getId:()=>async function(n){const e=n,{installationEntry:t,registrationPromise:a}=await Be(e);return a?a.catch(console.error):je(e).catch(console.error),t.fid}(e),getToken:n=>async function(n,e=!1){const t=n;return await async function(n){const{registrationPromise:e}=await Be(n);e&&await e}(t),(await je(t,e)).token}(e,n)}}),"PRIVATE")),Kn(re,se),Kn(re,se,"esm2017");const We="analytics",Ke="firebase_id",Je="origin",$e=6e4,Ye="https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig",Qe="https://www.googletagmanager.com/gtag/js",Xe=new un("@firebase/analytics"),Ze=new z("analytics","Analytics",{"already-exists":"A Firebase Analytics instance with the appId {$id} already exists. Only one Firebase Analytics instance can be created for each appId.","already-initialized":"initializeAnalytics() cannot be called again with different options than those it was initially called with. It can be called again with the same options to return the existing instance, or getAnalytics() can be used to get a reference to the already-initialized instance.","already-initialized-settings":"Firebase Analytics has already been initialized.settings() must be called before initializing any Analytics instanceor it will have no effect.","interop-component-reg-failed":"Firebase Analytics Interop Component failed to instantiate: {$reason}","invalid-analytics-context":"Firebase Analytics is not supported in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","indexeddb-unavailable":"IndexedDB unavailable or restricted in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","fetch-throttle":"The config fetch request timed out while in an exponential backoff state. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.","config-fetch-failed":"Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}","no-api-key":'The "apiKey" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid API key.',"no-app-id":'The "appId" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid app ID.',"no-client-id":'The "client_id" field is empty.',"invalid-gtag-resource":"Trusted Types detected an invalid gtag resource: {$gtagURL}."});function nt(n){if(!n.startsWith(Qe)){const e=Ze.create("invalid-gtag-resource",{gtagURL:n});return Xe.warn(e.message),""}return n}function et(n){return Promise.all(n.map((n=>n.catch((n=>n)))))}const tt=30,at=new class{constructor(n={},e=1e3){this.throttleMetadata=n,this.intervalMillis=e}getThrottleMetadata(n){return this.throttleMetadata[n]}setThrottleMetadata(n,e){this.throttleMetadata[n]=e}deleteThrottleMetadata(n){delete this.throttleMetadata[n]}};function it(n){return new Headers({Accept:"application/json","x-goog-api-key":n})}async function rt(n,e=at,t){const{appId:a,apiKey:i,measurementId:r}=n.options;if(!a)throw Ze.create("no-app-id");if(!i){if(r)return{measurementId:r,appId:a};throw Ze.create("no-api-key")}const s=e.getThrottleMetadata(a)||{backoffCount:0,throttleEndTimeMillis:Date.now()},o=new ot;return setTimeout((async()=>{o.abort()}),void 0!==t?t:$e),st({appId:a,apiKey:i,measurementId:r},s,o,e)}async function st(n,{throttleEndTimeMillis:e,backoffCount:t},a,i=at){var r;const{appId:s,measurementId:o}=n;try{await function(n,e){return new Promise(((t,a)=>{const i=Math.max(e-Date.now(),0),r=setTimeout(t,i);n.addEventListener((()=>{clearTimeout(r),a(Ze.create("fetch-throttle",{throttleEndTimeMillis:e}))}))}))}(a,e)}catch(n){if(o)return Xe.warn(`Timed out fetching this Firebase app's measurement ID from the server. Falling back to the measurement ID ${o} provided in the "measurementId" field in the local Firebase config. [${null==n?void 0:n.message}]`),{appId:s,measurementId:o};throw n}try{const e=await async function(n){var e;const{appId:t,apiKey:a}=n,i={method:"GET",headers:it(a)},r=Ye.replace("{app-id}",t),s=await fetch(r,i);if(200!==s.status&&304!==s.status){let n="";try{const t=await s.json();(null===(e=t.error)||void 0===e?void 0:e.message)&&(n=t.error.message)}catch(n){}throw Ze.create("config-fetch-failed",{httpStatus:s.status,responseMessage:n})}return s.json()}(n);return i.deleteThrottleMetadata(s),e}catch(e){const l=e;if(!function(n){if(!(n instanceof B&&n.customData))return!1;const e=Number(n.customData.httpStatus);return 429===e||500===e||503===e||504===e}(l)){if(i.deleteThrottleMetadata(s),o)return Xe.warn(`Failed to fetch this Firebase app's measurement ID from the server. Falling back to the measurement ID ${o} provided in the "measurementId" field in the local Firebase config. [${null==l?void 0:l.message}]`),{appId:s,measurementId:o};throw e}const c=503===Number(null===(r=null==l?void 0:l.customData)||void 0===r?void 0:r.httpStatus)?Y(t,i.intervalMillis,tt):Y(t,i.intervalMillis),u={throttleEndTimeMillis:Date.now()+c,backoffCount:t+1};return i.setThrottleMetadata(s,u),Xe.debug(`Calling attemptFetch again in ${c} millis`),st(n,u,a,i)}}class ot{constructor(){this.listeners=[]}addEventListener(n){this.listeners.push(n)}abort(){this.listeners.forEach((n=>n()))}}let lt,ct;async function ut(n,e,t,a,i,r,s){var o;const l=rt(n);l.then((e=>{t[e.measurementId]=e.appId,n.options.measurementId&&e.measurementId!==n.options.measurementId&&Xe.warn(`The measurement ID in the local Firebase config (${n.options.measurementId}) does not match the measurement ID fetched from the server (${e.measurementId}). To ensure analytics events are always sent to the correct Analytics property, update the measurement ID field in the local config or remove it from the local config.`)})).catch((n=>Xe.error(n))),e.push(l);const c=async function(){if(!L())return Xe.warn(Ze.create("indexeddb-unavailable",{errorInfo:"IndexedDB is not available in this environment."}).message),!1;try{await N()}catch(n){return Xe.warn(Ze.create("indexeddb-unavailable",{errorInfo:null==n?void 0:n.toString()}).message),!1}return!0}().then((n=>n?a.getId():void 0)),[u,d]=await Promise.all([l,c]);(function(n){const e=window.document.getElementsByTagName("script");for(const t of Object.values(e))if(t.src&&t.src.includes(Qe)&&t.src.includes(n))return t;return null})(r)||function(n,e){const t=function(n,e){let t;return window.trustedTypes&&(t=window.trustedTypes.createPolicy("firebase-js-sdk-policy",e)),t}(0,{createScriptURL:nt}),a=document.createElement("script"),i=`${Qe}?l=${n}&id=${e}`;a.src=t?null==t?void 0:t.createScriptURL(i):i,a.async=!0,document.head.appendChild(a)}(r,u.measurementId),ct&&(i("consent","default",ct),ct=void 0),i("js",new Date);const h=null!==(o=null==s?void 0:s.config)&&void 0!==o?o:{};return h[Je]="firebase",h.update=!0,null!=d&&(h[Ke]=d),i("config",u.measurementId,h),lt&&(i("set",lt),lt=void 0),u.measurementId}class dt{constructor(n){this.app=n}_delete(){return delete ht[this.app.options.appId],Promise.resolve()}}let ht={},ft=[];const mt={};let pt,gt,yt="dataLayer",bt=!1;function vt(n,e,t){!function(){const n=[];if(D()&&n.push("This is a browser extension environment."),"undefined"!=typeof navigator&&navigator.cookieEnabled||n.push("Cookies are not available."),n.length>0){const e=n.map(((n,e)=>`(${e+1}) ${n}`)).join(" "),t=Ze.create("invalid-analytics-context",{errorInfo:e});Xe.warn(t.message)}}();const a=n.options.appId;if(!a)throw Ze.create("no-app-id");if(!n.options.apiKey){if(!n.options.measurementId)throw Ze.create("no-api-key");Xe.warn(`The "apiKey" field is empty in the local Firebase config. This is needed to fetch the latest measurement ID for this Firebase app. Falling back to the measurement ID ${n.options.measurementId} provided in the "measurementId" field in the local Firebase config.`)}if(null!=ht[a])throw Ze.create("already-exists",{id:a});if(!bt){!function(n){let e=[];Array.isArray(window[n])?e=window[n]:window[n]=e}(yt);const{wrappedGtag:n,gtagCore:e}=function(n,e,t,a,i){let r=function(...n){window[a].push(arguments)};return window[i]&&"function"==typeof window[i]&&(r=window[i]),window[i]=function(n,e,t,a){return async function(i,...r){try{if("event"===i){const[a,i]=r;await async function(n,e,t,a,i){try{let r=[];if(i&&i.send_to){let n=i.send_to;Array.isArray(n)||(n=[n]);const a=await et(t);for(const t of n){const n=a.find((n=>n.measurementId===t)),i=n&&e[n.appId];if(!i){r=[];break}r.push(i)}}0===r.length&&(r=Object.values(e)),await Promise.all(r),n("event",a,i||{})}catch(n){Xe.error(n)}}(n,e,t,a,i)}else if("config"===i){const[i,s]=r;await async function(n,e,t,a,i,r){const s=a[i];try{if(s)await e[s];else{const n=(await et(t)).find((n=>n.measurementId===i));n&&await e[n.appId]}}catch(n){Xe.error(n)}n("config",i,r)}(n,e,t,a,i,s)}else if("consent"===i){const[e,t]=r;n("consent",e,t)}else if("get"===i){const[e,t,a]=r;n("get",e,t,a)}else if("set"===i){const[e]=r;n("set",e)}else n(i,...r)}catch(n){Xe.error(n)}}}(r,n,e,t),{gtagCore:r,wrappedGtag:window[i]}}(ht,ft,mt,yt,"gtag");gt=n,pt=e,bt=!0}return ht[a]=ut(n,ft,mt,e,pt,yt,t),new dt(n)}const xt="@firebase/analytics",kt="0.10.8";function wt(n,e){var t={};for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&e.indexOf(a)<0&&(t[a]=n[a]);if(null!=n&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(a=Object.getOwnPropertySymbols(n);ivt(n.getProvider("app").getImmediate(),n.getProvider("installations-internal").getImmediate(),e)),"PUBLIC")),Fn(new X("analytics-internal",(function(n){try{const e=n.getProvider(We).getImmediate();return{logEvent:(n,t,a)=>function(n,e,t,a){n=Q(n),async function(n,e,t,a,i){if(i&&i.global)n("event",t,a);else{const i=await e;n("event",t,Object.assign(Object.assign({},a),{send_to:i}))}}(gt,ht[n.app.options.appId],e,t,a).catch((n=>Xe.error(n)))}(e,n,t,a)}}catch(n){throw Ze.create("interop-component-reg-failed",{reason:n})}}),"PRIVATE")),Kn(xt,kt),Kn(xt,kt,"esm2017"),Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError;const Ct=function(){return{"dependent-sdk-initialized-before-auth":"Another Firebase SDK was initialized and is trying to use Auth before Auth is initialized. Please be sure to call `initializeAuth` or `getAuth` before starting any other Firebase SDK."}},St=new z("auth","Firebase",{"dependent-sdk-initialized-before-auth":"Another Firebase SDK was initialized and is trying to use Auth before Auth is initialized. Please be sure to call `initializeAuth` or `getAuth` before starting any other Firebase SDK."}),At=new un("@firebase/auth");function Tt(n,...e){At.logLevel<=an.ERROR&&At.error(`Auth (${Hn}): ${n}`,...e)}function It(n,...e){throw Pt(n,...e)}function Et(n,...e){return Pt(n,...e)}function Mt(n,e,t){const a=Object.assign(Object.assign({},Ct()),{[e]:t});return new z("auth","Firebase",a).create(e,{appName:n.name})}function _t(n){return Mt(n,"operation-not-supported-in-this-environment","Operations that alter the current user are not supported in conjunction with FirebaseServerApp")}function Pt(n,...e){if("string"!=typeof n){const t=e[0],a=[...e.slice(1)];return a[0]&&(a[0].appName=n.name),n._errorFactory.create(t,...a)}return St.create(n,...e)}function Rt(n,e,...t){if(!n)throw Pt(e,...t)}function Dt(n){const e="INTERNAL ASSERTION FAILED: "+n;throw Tt(e),new Error(e)}function Lt(n,e){n||Dt(e)}function Nt(){var n;return"undefined"!=typeof self&&(null===(n=self.location)||void 0===n?void 0:n.href)||""}function Bt(){var n;return"undefined"!=typeof self&&(null===(n=self.location)||void 0===n?void 0:n.protocol)||null}class zt{constructor(n,e){this.shortDelay=n,this.longDelay=e,Lt(e>n,"Short delay should be less than long delay!"),this.isMobile="undefined"!=typeof window&&!!(window.cordova||window.phonegap||window.PhoneGap)&&/ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(R())||"object"==typeof navigator&&"ReactNative"===navigator.product}get(){return"undefined"!=typeof navigator&&navigator&&"onLine"in navigator&&"boolean"==typeof navigator.onLine&&("http:"===Bt()||"https:"===Bt()||D()||"connection"in navigator)&&!navigator.onLine?Math.min(5e3,this.shortDelay):this.isMobile?this.longDelay:this.shortDelay}}function Ot(n,e){Lt(n.emulator,"Emulator should always be set here");const{url:t}=n.emulator;return e?`${t}${e.startsWith("/")?e.slice(1):e}`:t}class Ft{static initialize(n,e,t){this.fetchImpl=n,e&&(this.headersImpl=e),t&&(this.responseImpl=t)}static fetch(){return this.fetchImpl?this.fetchImpl:"undefined"!=typeof self&&"fetch"in self?self.fetch:"undefined"!=typeof globalThis&&globalThis.fetch?globalThis.fetch:"undefined"!=typeof fetch?fetch:void Dt("Could not find fetch implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}static headers(){return this.headersImpl?this.headersImpl:"undefined"!=typeof self&&"Headers"in self?self.Headers:"undefined"!=typeof globalThis&&globalThis.Headers?globalThis.Headers:"undefined"!=typeof Headers?Headers:void Dt("Could not find Headers implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}static response(){return this.responseImpl?this.responseImpl:"undefined"!=typeof self&&"Response"in self?self.Response:"undefined"!=typeof globalThis&&globalThis.Response?globalThis.Response:"undefined"!=typeof Response?Response:void Dt("Could not find Response implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}}const Gt={CREDENTIAL_MISMATCH:"custom-token-mismatch",MISSING_CUSTOM_TOKEN:"internal-error",INVALID_IDENTIFIER:"invalid-email",MISSING_CONTINUE_URI:"internal-error",INVALID_PASSWORD:"wrong-password",MISSING_PASSWORD:"missing-password",INVALID_LOGIN_CREDENTIALS:"invalid-credential",EMAIL_EXISTS:"email-already-in-use",PASSWORD_LOGIN_DISABLED:"operation-not-allowed",INVALID_IDP_RESPONSE:"invalid-credential",INVALID_PENDING_TOKEN:"invalid-credential",FEDERATED_USER_ID_ALREADY_LINKED:"credential-already-in-use",MISSING_REQ_TYPE:"internal-error",EMAIL_NOT_FOUND:"user-not-found",RESET_PASSWORD_EXCEED_LIMIT:"too-many-requests",EXPIRED_OOB_CODE:"expired-action-code",INVALID_OOB_CODE:"invalid-action-code",MISSING_OOB_CODE:"internal-error",CREDENTIAL_TOO_OLD_LOGIN_AGAIN:"requires-recent-login",INVALID_ID_TOKEN:"invalid-user-token",TOKEN_EXPIRED:"user-token-expired",USER_NOT_FOUND:"user-token-expired",TOO_MANY_ATTEMPTS_TRY_LATER:"too-many-requests",PASSWORD_DOES_NOT_MEET_REQUIREMENTS:"password-does-not-meet-requirements",INVALID_CODE:"invalid-verification-code",INVALID_SESSION_INFO:"invalid-verification-id",INVALID_TEMPORARY_PROOF:"invalid-credential",MISSING_SESSION_INFO:"missing-verification-id",SESSION_EXPIRED:"code-expired",MISSING_ANDROID_PACKAGE_NAME:"missing-android-pkg-name",UNAUTHORIZED_DOMAIN:"unauthorized-continue-uri",INVALID_OAUTH_CLIENT_ID:"invalid-oauth-client-id",ADMIN_ONLY_OPERATION:"admin-restricted-operation",INVALID_MFA_PENDING_CREDENTIAL:"invalid-multi-factor-session",MFA_ENROLLMENT_NOT_FOUND:"multi-factor-info-not-found",MISSING_MFA_ENROLLMENT_ID:"missing-multi-factor-info",MISSING_MFA_PENDING_CREDENTIAL:"missing-multi-factor-session",SECOND_FACTOR_EXISTS:"second-factor-already-in-use",SECOND_FACTOR_LIMIT_EXCEEDED:"maximum-second-factor-count-exceeded",BLOCKING_FUNCTION_ERROR_RESPONSE:"internal-error",RECAPTCHA_NOT_ENABLED:"recaptcha-not-enabled",MISSING_RECAPTCHA_TOKEN:"missing-recaptcha-token",INVALID_RECAPTCHA_TOKEN:"invalid-recaptcha-token",INVALID_RECAPTCHA_ACTION:"invalid-recaptcha-action",MISSING_CLIENT_TYPE:"missing-client-type",MISSING_RECAPTCHA_VERSION:"missing-recaptcha-version",INVALID_RECAPTCHA_VERSION:"invalid-recaptcha-version",INVALID_REQ_TYPE:"invalid-req-type"},jt=new zt(3e4,6e4);function Ut(n,e){return n.tenantId&&!e.tenantId?Object.assign(Object.assign({},e),{tenantId:n.tenantId}):e}async function Vt(n,e,t,a,i={}){return Ht(n,i,(async()=>{let i={},r={};a&&("GET"===e?r=a:i={body:JSON.stringify(a)});const s=j(Object.assign({key:n.config.apiKey},r)).slice(1),o=await n._getAdditionalHeaders();o["Content-Type"]="application/json",n.languageCode&&(o["X-Firebase-Locale"]=n.languageCode);const l=Object.assign({method:e,headers:o},i);return"undefined"!=typeof navigator&&"Cloudflare-Workers"===navigator.userAgent||(l.referrerPolicy="no-referrer"),Ft.fetch()(Wt(n,n.config.apiHost,t,s),l)}))}async function Ht(n,e,t){n._canInitEmulator=!1;const a=Object.assign(Object.assign({},Gt),e);try{const e=new Jt(n),i=await Promise.race([t(),e.promise]);e.clearNetworkTimeout();const r=await i.json();if("needConfirmation"in r)throw $t(n,"account-exists-with-different-credential",r);if(i.ok&&!("errorMessage"in r))return r;{const e=i.ok?r.errorMessage:r.error.message,[t,s]=e.split(" : ");if("FEDERATED_USER_ID_ALREADY_LINKED"===t)throw $t(n,"credential-already-in-use",r);if("EMAIL_EXISTS"===t)throw $t(n,"email-already-in-use",r);if("USER_DISABLED"===t)throw $t(n,"user-disabled",r);const o=a[t]||t.toLowerCase().replace(/[_\s]+/g,"-");if(s)throw Mt(n,o,s);It(n,o)}}catch(e){if(e instanceof B)throw e;It(n,"network-request-failed",{message:String(e)})}}async function qt(n,e,t,a,i={}){const r=await Vt(n,e,t,a,i);return"mfaPendingCredential"in r&&It(n,"multi-factor-auth-required",{_serverResponse:r}),r}function Wt(n,e,t,a){const i=`${e}${t}?${a}`;return n.config.emulator?Ot(n.config,i):`${n.config.apiScheme}://${i}`}function Kt(n){switch(n){case"ENFORCE":return"ENFORCE";case"AUDIT":return"AUDIT";case"OFF":return"OFF";default:return"ENFORCEMENT_STATE_UNSPECIFIED"}}class Jt{constructor(n){this.auth=n,this.timer=null,this.promise=new Promise(((n,e)=>{this.timer=setTimeout((()=>e(Et(this.auth,"network-request-failed"))),jt.get())}))}clearNetworkTimeout(){clearTimeout(this.timer)}}function $t(n,e,t){const a={appName:n.name};t.email&&(a.email=t.email),t.phoneNumber&&(a.phoneNumber=t.phoneNumber);const i=Et(n,e,a);return i.customData._tokenResponse=t,i}function Yt(n){return void 0!==n&&void 0!==n.enterprise}class Qt{constructor(n){if(this.siteKey="",this.recaptchaEnforcementState=[],void 0===n.recaptchaKey)throw new Error("recaptchaKey undefined");this.siteKey=n.recaptchaKey.split("/")[3],this.recaptchaEnforcementState=n.recaptchaEnforcementState}getProviderEnforcementState(n){if(!this.recaptchaEnforcementState||0===this.recaptchaEnforcementState.length)return null;for(const e of this.recaptchaEnforcementState)if(e.provider&&e.provider===n)return Kt(e.enforcementState);return null}isProviderEnabled(n){return"ENFORCE"===this.getProviderEnforcementState(n)||"AUDIT"===this.getProviderEnforcementState(n)}}async function Xt(n,e){return Vt(n,"POST","/v1/accounts:lookup",e)}function Zt(n){if(n)try{const e=new Date(Number(n));if(!isNaN(e.getTime()))return e.toUTCString()}catch(n){}}function na(n){return 1e3*Number(n)}function ea(n){const[e,t,a]=n.split(".");if(void 0===e||void 0===t||void 0===a)return Tt("JWT malformed, contained fewer than 3 sections"),null;try{const n=T(t);return n?JSON.parse(n):(Tt("Failed to decode base64 JWT payload"),null)}catch(n){return Tt("Caught error parsing JWT payload as JSON",null==n?void 0:n.toString()),null}}function ta(n){const e=ea(n);return Rt(e,"internal-error"),Rt(void 0!==e.exp,"internal-error"),Rt(void 0!==e.iat,"internal-error"),Number(e.exp)-Number(e.iat)}async function aa(n,e,t=!1){if(t)return e;try{return await e}catch(e){throw e instanceof B&&function({code:n}){return"auth/user-disabled"===n||"auth/user-token-expired"===n}(e)&&n.auth.currentUser===n&&await n.auth.signOut(),e}}class ia{constructor(n){this.user=n,this.isRunning=!1,this.timerId=null,this.errorBackoff=3e4}_start(){this.isRunning||(this.isRunning=!0,this.schedule())}_stop(){this.isRunning&&(this.isRunning=!1,null!==this.timerId&&clearTimeout(this.timerId))}getInterval(n){var e;if(n){const n=this.errorBackoff;return this.errorBackoff=Math.min(2*this.errorBackoff,96e4),n}{this.errorBackoff=3e4;const n=(null!==(e=this.user.stsTokenManager.expirationTime)&&void 0!==e?e:0)-Date.now()-3e5;return Math.max(0,n)}}schedule(n=!1){if(!this.isRunning)return;const e=this.getInterval(n);this.timerId=setTimeout((async()=>{await this.iteration()}),e)}async iteration(){try{await this.user.getIdToken(!0)}catch(n){return void("auth/network-request-failed"===(null==n?void 0:n.code)&&this.schedule(!0))}this.schedule()}}class ra{constructor(n,e){this.createdAt=n,this.lastLoginAt=e,this._initializeTime()}_initializeTime(){this.lastSignInTime=Zt(this.lastLoginAt),this.creationTime=Zt(this.createdAt)}_copy(n){this.createdAt=n.createdAt,this.lastLoginAt=n.lastLoginAt,this._initializeTime()}toJSON(){return{createdAt:this.createdAt,lastLoginAt:this.lastLoginAt}}}async function sa(n){var e;const t=n.auth,a=await n.getIdToken(),i=await aa(n,Xt(t,{idToken:a}));Rt(null==i?void 0:i.users.length,t,"internal-error");const r=i.users[0];n._notifyReloadListener(r);const s=(null===(e=r.providerUserInfo)||void 0===e?void 0:e.length)?oa(r.providerUserInfo):[],o=(l=n.providerData,c=s,[...l.filter((n=>!c.some((e=>e.providerId===n.providerId)))),...c]);var l,c;const u=n.isAnonymous,d=!(n.email&&r.passwordHash||(null==o?void 0:o.length)),h=!!u&&d,f={uid:r.localId,displayName:r.displayName||null,photoURL:r.photoUrl||null,email:r.email||null,emailVerified:r.emailVerified||!1,phoneNumber:r.phoneNumber||null,tenantId:r.tenantId||null,providerData:o,metadata:new ra(r.createdAt,r.lastLoginAt),isAnonymous:h};Object.assign(n,f)}function oa(n){return n.map((n=>{var{providerId:e}=n,t=wt(n,["providerId"]);return{providerId:e,uid:t.rawId||"",displayName:t.displayName||null,email:t.email||null,phoneNumber:t.phoneNumber||null,photoURL:t.photoUrl||null}}))}class la{constructor(){this.refreshToken=null,this.accessToken=null,this.expirationTime=null}get isExpired(){return!this.expirationTime||Date.now()>this.expirationTime-3e4}updateFromServerResponse(n){Rt(n.idToken,"internal-error"),Rt(void 0!==n.idToken,"internal-error"),Rt(void 0!==n.refreshToken,"internal-error");const e="expiresIn"in n&&void 0!==n.expiresIn?Number(n.expiresIn):ta(n.idToken);this.updateTokensAndExpiration(n.idToken,n.refreshToken,e)}updateFromIdToken(n){Rt(0!==n.length,"internal-error");const e=ta(n);this.updateTokensAndExpiration(n,null,e)}async getToken(n,e=!1){return e||!this.accessToken||this.isExpired?(Rt(this.refreshToken,n,"user-token-expired"),this.refreshToken?(await this.refresh(n,this.refreshToken),this.accessToken):null):this.accessToken}clearRefreshToken(){this.refreshToken=null}async refresh(n,e){const{accessToken:t,refreshToken:a,expiresIn:i}=await async function(n,e){const t=await Ht(n,{},(async()=>{const t=j({grant_type:"refresh_token",refresh_token:e}).slice(1),{tokenApiHost:a,apiKey:i}=n.config,r=Wt(n,a,"/v1/token",`key=${i}`),s=await n._getAdditionalHeaders();return s["Content-Type"]="application/x-www-form-urlencoded",Ft.fetch()(r,{method:"POST",headers:s,body:t})}));return{accessToken:t.access_token,expiresIn:t.expires_in,refreshToken:t.refresh_token}}(n,e);this.updateTokensAndExpiration(t,a,Number(i))}updateTokensAndExpiration(n,e,t){this.refreshToken=e||null,this.accessToken=n||null,this.expirationTime=Date.now()+1e3*t}static fromJSON(n,e){const{refreshToken:t,accessToken:a,expirationTime:i}=e,r=new la;return t&&(Rt("string"==typeof t,"internal-error",{appName:n}),r.refreshToken=t),a&&(Rt("string"==typeof a,"internal-error",{appName:n}),r.accessToken=a),i&&(Rt("number"==typeof i,"internal-error",{appName:n}),r.expirationTime=i),r}toJSON(){return{refreshToken:this.refreshToken,accessToken:this.accessToken,expirationTime:this.expirationTime}}_assign(n){this.accessToken=n.accessToken,this.refreshToken=n.refreshToken,this.expirationTime=n.expirationTime}_clone(){return Object.assign(new la,this.toJSON())}_performRefresh(){return Dt("not implemented")}}function ca(n,e){Rt("string"==typeof n||void 0===n,"internal-error",{appName:e})}class ua{constructor(n){var{uid:e,auth:t,stsTokenManager:a}=n,i=wt(n,["uid","auth","stsTokenManager"]);this.providerId="firebase",this.proactiveRefresh=new ia(this),this.reloadUserInfo=null,this.reloadListener=null,this.uid=e,this.auth=t,this.stsTokenManager=a,this.accessToken=a.accessToken,this.displayName=i.displayName||null,this.email=i.email||null,this.emailVerified=i.emailVerified||!1,this.phoneNumber=i.phoneNumber||null,this.photoURL=i.photoURL||null,this.isAnonymous=i.isAnonymous||!1,this.tenantId=i.tenantId||null,this.providerData=i.providerData?[...i.providerData]:[],this.metadata=new ra(i.createdAt||void 0,i.lastLoginAt||void 0)}async getIdToken(n){const e=await aa(this,this.stsTokenManager.getToken(this.auth,n));return Rt(e,this.auth,"internal-error"),this.accessToken!==e&&(this.accessToken=e,await this.auth._persistUserIfCurrent(this),this.auth._notifyListenersIfCurrent(this)),e}getIdTokenResult(n){return async function(n,e=!1){const t=Q(n),a=await t.getIdToken(e),i=ea(a);Rt(i&&i.exp&&i.auth_time&&i.iat,t.auth,"internal-error");const r="object"==typeof i.firebase?i.firebase:void 0,s=null==r?void 0:r.sign_in_provider;return{claims:i,token:a,authTime:Zt(na(i.auth_time)),issuedAtTime:Zt(na(i.iat)),expirationTime:Zt(na(i.exp)),signInProvider:s||null,signInSecondFactor:(null==r?void 0:r.sign_in_second_factor)||null}}(this,n)}reload(){return async function(n){const e=Q(n);await sa(e),await e.auth._persistUserIfCurrent(e),e.auth._notifyListenersIfCurrent(e)}(this)}_assign(n){this!==n&&(Rt(this.uid===n.uid,this.auth,"internal-error"),this.displayName=n.displayName,this.photoURL=n.photoURL,this.email=n.email,this.emailVerified=n.emailVerified,this.phoneNumber=n.phoneNumber,this.isAnonymous=n.isAnonymous,this.tenantId=n.tenantId,this.providerData=n.providerData.map((n=>Object.assign({},n))),this.metadata._copy(n.metadata),this.stsTokenManager._assign(n.stsTokenManager))}_clone(n){const e=new ua(Object.assign(Object.assign({},this),{auth:n,stsTokenManager:this.stsTokenManager._clone()}));return e.metadata._copy(this.metadata),e}_onReload(n){Rt(!this.reloadListener,this.auth,"internal-error"),this.reloadListener=n,this.reloadUserInfo&&(this._notifyReloadListener(this.reloadUserInfo),this.reloadUserInfo=null)}_notifyReloadListener(n){this.reloadListener?this.reloadListener(n):this.reloadUserInfo=n}_startProactiveRefresh(){this.proactiveRefresh._start()}_stopProactiveRefresh(){this.proactiveRefresh._stop()}async _updateTokensIfNecessary(n,e=!1){let t=!1;n.idToken&&n.idToken!==this.stsTokenManager.accessToken&&(this.stsTokenManager.updateFromServerResponse(n),t=!0),e&&await sa(this),await this.auth._persistUserIfCurrent(this),t&&this.auth._notifyListenersIfCurrent(this)}async delete(){if(jn(this.auth.app))return Promise.reject(_t(this.auth));const n=await this.getIdToken();return await aa(this,async function(n,e){return Vt(n,"POST","/v1/accounts:delete",e)}(this.auth,{idToken:n})),this.stsTokenManager.clearRefreshToken(),this.auth.signOut()}toJSON(){return Object.assign(Object.assign({uid:this.uid,email:this.email||void 0,emailVerified:this.emailVerified,displayName:this.displayName||void 0,isAnonymous:this.isAnonymous,photoURL:this.photoURL||void 0,phoneNumber:this.phoneNumber||void 0,tenantId:this.tenantId||void 0,providerData:this.providerData.map((n=>Object.assign({},n))),stsTokenManager:this.stsTokenManager.toJSON(),_redirectEventId:this._redirectEventId},this.metadata.toJSON()),{apiKey:this.auth.config.apiKey,appName:this.auth.name})}get refreshToken(){return this.stsTokenManager.refreshToken||""}static _fromJSON(n,e){var t,a,i,r,s,o,l,c;const u=null!==(t=e.displayName)&&void 0!==t?t:void 0,d=null!==(a=e.email)&&void 0!==a?a:void 0,h=null!==(i=e.phoneNumber)&&void 0!==i?i:void 0,f=null!==(r=e.photoURL)&&void 0!==r?r:void 0,m=null!==(s=e.tenantId)&&void 0!==s?s:void 0,p=null!==(o=e._redirectEventId)&&void 0!==o?o:void 0,g=null!==(l=e.createdAt)&&void 0!==l?l:void 0,y=null!==(c=e.lastLoginAt)&&void 0!==c?c:void 0,{uid:b,emailVerified:v,isAnonymous:x,providerData:k,stsTokenManager:w}=e;Rt(b&&w,n,"internal-error");const C=la.fromJSON(this.name,w);Rt("string"==typeof b,n,"internal-error"),ca(u,n.name),ca(d,n.name),Rt("boolean"==typeof v,n,"internal-error"),Rt("boolean"==typeof x,n,"internal-error"),ca(h,n.name),ca(f,n.name),ca(m,n.name),ca(p,n.name),ca(g,n.name),ca(y,n.name);const S=new ua({uid:b,auth:n,email:d,emailVerified:v,displayName:u,isAnonymous:x,photoURL:f,phoneNumber:h,tenantId:m,stsTokenManager:C,createdAt:g,lastLoginAt:y});return k&&Array.isArray(k)&&(S.providerData=k.map((n=>Object.assign({},n)))),p&&(S._redirectEventId=p),S}static async _fromIdTokenResponse(n,e,t=!1){const a=new la;a.updateFromServerResponse(e);const i=new ua({uid:e.localId,auth:n,stsTokenManager:a,isAnonymous:t});return await sa(i),i}static async _fromGetAccountInfoResponse(n,e,t){const a=e.users[0];Rt(void 0!==a.localId,"internal-error");const i=void 0!==a.providerUserInfo?oa(a.providerUserInfo):[],r=!(a.email&&a.passwordHash||(null==i?void 0:i.length)),s=new la;s.updateFromIdToken(t);const o=new ua({uid:a.localId,auth:n,stsTokenManager:s,isAnonymous:r}),l={uid:a.localId,displayName:a.displayName||null,photoURL:a.photoUrl||null,email:a.email||null,emailVerified:a.emailVerified||!1,phoneNumber:a.phoneNumber||null,tenantId:a.tenantId||null,providerData:i,metadata:new ra(a.createdAt,a.lastLoginAt),isAnonymous:!(a.email&&a.passwordHash||(null==i?void 0:i.length))};return Object.assign(o,l),o}}const da=new Map;function ha(n){Lt(n instanceof Function,"Expected a class definition");let e=da.get(n);return e?(Lt(e instanceof n,"Instance stored in cache mismatched with class"),e):(e=new n,da.set(n,e),e)}class fa{constructor(){this.type="NONE",this.storage={}}async _isAvailable(){return!0}async _set(n,e){this.storage[n]=e}async _get(n){const e=this.storage[n];return void 0===e?null:e}async _remove(n){delete this.storage[n]}_addListener(n,e){}_removeListener(n,e){}}fa.type="NONE";const ma=fa;function pa(n,e,t){return`firebase:${n}:${e}:${t}`}class ga{constructor(n,e,t){this.persistence=n,this.auth=e,this.userKey=t;const{config:a,name:i}=this.auth;this.fullUserKey=pa(this.userKey,a.apiKey,i),this.fullPersistenceKey=pa("persistence",a.apiKey,i),this.boundEventHandler=e._onStorageEvent.bind(e),this.persistence._addListener(this.fullUserKey,this.boundEventHandler)}setCurrentUser(n){return this.persistence._set(this.fullUserKey,n.toJSON())}async getCurrentUser(){const n=await this.persistence._get(this.fullUserKey);return n?ua._fromJSON(this.auth,n):null}removeCurrentUser(){return this.persistence._remove(this.fullUserKey)}savePersistenceForRedirect(){return this.persistence._set(this.fullPersistenceKey,this.persistence.type)}async setPersistence(n){if(this.persistence===n)return;const e=await this.getCurrentUser();return await this.removeCurrentUser(),this.persistence=n,e?this.setCurrentUser(e):void 0}delete(){this.persistence._removeListener(this.fullUserKey,this.boundEventHandler)}static async create(n,e,t="authUser"){if(!e.length)return new ga(ha(ma),n,t);const a=(await Promise.all(e.map((async n=>{if(await n._isAvailable())return n})))).filter((n=>n));let i=a[0]||ha(ma);const r=pa(t,n.config.apiKey,n.name);let s=null;for(const t of e)try{const e=await t._get(r);if(e){const a=ua._fromJSON(n,e);t!==i&&(s=a),i=t;break}}catch(n){}const o=a.filter((n=>n._shouldAllowMigration));return i._shouldAllowMigration&&o.length?(i=o[0],s&&await i._set(r,s.toJSON()),await Promise.all(e.map((async n=>{if(n!==i)try{await n._remove(r)}catch(n){}}))),new ga(i,n,t)):new ga(i,n,t)}}function ya(n){const e=n.toLowerCase();if(e.includes("opera/")||e.includes("opr/")||e.includes("opios/"))return"Opera";if(ka(e))return"IEMobile";if(e.includes("msie")||e.includes("trident/"))return"IE";if(e.includes("edge/"))return"Edge";if(ba(e))return"Firefox";if(e.includes("silk/"))return"Silk";if(Ca(e))return"Blackberry";if(Sa(e))return"Webos";if(va(e))return"Safari";if((e.includes("chrome/")||xa(e))&&!e.includes("edge/"))return"Chrome";if(wa(e))return"Android";{const e=/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/,t=n.match(e);if(2===(null==t?void 0:t.length))return t[1]}return"Other"}function ba(n=R()){return/firefox\//i.test(n)}function va(n=R()){const e=n.toLowerCase();return e.includes("safari/")&&!e.includes("chrome/")&&!e.includes("crios/")&&!e.includes("android")}function xa(n=R()){return/crios\//i.test(n)}function ka(n=R()){return/iemobile/i.test(n)}function wa(n=R()){return/android/i.test(n)}function Ca(n=R()){return/blackberry/i.test(n)}function Sa(n=R()){return/webos/i.test(n)}function Aa(n=R()){return/iphone|ipad|ipod/i.test(n)||/macintosh/i.test(n)&&/mobile/i.test(n)}function Ta(n=R()){return Aa(n)||wa(n)||Sa(n)||Ca(n)||/windows phone/i.test(n)||ka(n)}function Ia(n,e=[]){let t;switch(n){case"Browser":t=ya(R());break;case"Worker":t=`${ya(R())}-${n}`;break;default:t=n}const a=e.length?e.join(","):"FirebaseCore-web";return`${t}/JsCore/${Hn}/${a}`}class Ea{constructor(n){this.auth=n,this.queue=[]}pushCallback(n,e){const t=e=>new Promise(((t,a)=>{try{t(n(e))}catch(n){a(n)}}));t.onAbort=e,this.queue.push(t);const a=this.queue.length-1;return()=>{this.queue[a]=()=>Promise.resolve()}}async runMiddleware(n){if(this.auth.currentUser===n)return;const e=[];try{for(const t of this.queue)await t(n),t.onAbort&&e.push(t.onAbort)}catch(n){e.reverse();for(const n of e)try{n()}catch(n){}throw this.auth._errorFactory.create("login-blocked",{originalMessage:null==n?void 0:n.message})}}}class Ma{constructor(n){var e,t,a,i;const r=n.customStrengthOptions;this.customStrengthOptions={},this.customStrengthOptions.minPasswordLength=null!==(e=r.minPasswordLength)&&void 0!==e?e:6,r.maxPasswordLength&&(this.customStrengthOptions.maxPasswordLength=r.maxPasswordLength),void 0!==r.containsLowercaseCharacter&&(this.customStrengthOptions.containsLowercaseLetter=r.containsLowercaseCharacter),void 0!==r.containsUppercaseCharacter&&(this.customStrengthOptions.containsUppercaseLetter=r.containsUppercaseCharacter),void 0!==r.containsNumericCharacter&&(this.customStrengthOptions.containsNumericCharacter=r.containsNumericCharacter),void 0!==r.containsNonAlphanumericCharacter&&(this.customStrengthOptions.containsNonAlphanumericCharacter=r.containsNonAlphanumericCharacter),this.enforcementState=n.enforcementState,"ENFORCEMENT_STATE_UNSPECIFIED"===this.enforcementState&&(this.enforcementState="OFF"),this.allowedNonAlphanumericCharacters=null!==(a=null===(t=n.allowedNonAlphanumericCharacters)||void 0===t?void 0:t.join(""))&&void 0!==a?a:"",this.forceUpgradeOnSignin=null!==(i=n.forceUpgradeOnSignin)&&void 0!==i&&i,this.schemaVersion=n.schemaVersion}validatePassword(n){var e,t,a,i,r,s;const o={isValid:!0,passwordPolicy:this};return this.validatePasswordLengthOptions(n,o),this.validatePasswordCharacterOptions(n,o),o.isValid&&(o.isValid=null===(e=o.meetsMinPasswordLength)||void 0===e||e),o.isValid&&(o.isValid=null===(t=o.meetsMaxPasswordLength)||void 0===t||t),o.isValid&&(o.isValid=null===(a=o.containsLowercaseLetter)||void 0===a||a),o.isValid&&(o.isValid=null===(i=o.containsUppercaseLetter)||void 0===i||i),o.isValid&&(o.isValid=null===(r=o.containsNumericCharacter)||void 0===r||r),o.isValid&&(o.isValid=null===(s=o.containsNonAlphanumericCharacter)||void 0===s||s),o}validatePasswordLengthOptions(n,e){const t=this.customStrengthOptions.minPasswordLength,a=this.customStrengthOptions.maxPasswordLength;t&&(e.meetsMinPasswordLength=n.length>=t),a&&(e.meetsMaxPasswordLength=n.length<=a)}validatePasswordCharacterOptions(n,e){let t;this.updatePasswordCharacterOptionsStatuses(e,!1,!1,!1,!1);for(let a=0;a="a"&&t<="z",t>="A"&&t<="Z",t>="0"&&t<="9",this.allowedNonAlphanumericCharacters.includes(t))}updatePasswordCharacterOptionsStatuses(n,e,t,a,i){this.customStrengthOptions.containsLowercaseLetter&&(n.containsLowercaseLetter||(n.containsLowercaseLetter=e)),this.customStrengthOptions.containsUppercaseLetter&&(n.containsUppercaseLetter||(n.containsUppercaseLetter=t)),this.customStrengthOptions.containsNumericCharacter&&(n.containsNumericCharacter||(n.containsNumericCharacter=a)),this.customStrengthOptions.containsNonAlphanumericCharacter&&(n.containsNonAlphanumericCharacter||(n.containsNonAlphanumericCharacter=i))}}class _a{constructor(n,e,t,a){this.app=n,this.heartbeatServiceProvider=e,this.appCheckServiceProvider=t,this.config=a,this.currentUser=null,this.emulatorConfig=null,this.operations=Promise.resolve(),this.authStateSubscription=new Ra(this),this.idTokenSubscription=new Ra(this),this.beforeStateQueue=new Ea(this),this.redirectUser=null,this.isProactiveRefreshEnabled=!1,this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION=1,this._canInitEmulator=!0,this._isInitialized=!1,this._deleted=!1,this._initializationPromise=null,this._popupRedirectResolver=null,this._errorFactory=St,this._agentRecaptchaConfig=null,this._tenantRecaptchaConfigs={},this._projectPasswordPolicy=null,this._tenantPasswordPolicies={},this.lastNotifiedUid=void 0,this.languageCode=null,this.tenantId=null,this.settings={appVerificationDisabledForTesting:!1},this.frameworks=[],this.name=n.name,this.clientVersion=a.sdkClientVersion}_initializeWithPersistence(n,e){return e&&(this._popupRedirectResolver=ha(e)),this._initializationPromise=this.queue((async()=>{var t,a;if(!this._deleted&&(this.persistenceManager=await ga.create(this,n),!this._deleted)){if(null===(t=this._popupRedirectResolver)||void 0===t?void 0:t._shouldInitProactively)try{await this._popupRedirectResolver._initialize(this)}catch(n){}await this.initializeCurrentUser(e),this.lastNotifiedUid=(null===(a=this.currentUser)||void 0===a?void 0:a.uid)||null,this._deleted||(this._isInitialized=!0)}})),this._initializationPromise}async _onStorageEvent(){if(this._deleted)return;const n=await this.assertedPersistence.getCurrentUser();return this.currentUser||n?this.currentUser&&n&&this.currentUser.uid===n.uid?(this._currentUser._assign(n),void await this.currentUser.getIdToken()):void await this._updateCurrentUser(n,!0):void 0}async initializeCurrentUserFromIdToken(n){try{const e=await Xt(this,{idToken:n}),t=await ua._fromGetAccountInfoResponse(this,e,n);await this.directlySetCurrentUser(t)}catch(n){console.warn("FirebaseServerApp could not login user with provided authIdToken: ",n),await this.directlySetCurrentUser(null)}}async initializeCurrentUser(n){var e;if(jn(this.app)){const n=this.app.settings.authIdToken;return n?new Promise((e=>{setTimeout((()=>this.initializeCurrentUserFromIdToken(n).then(e,e)))})):this.directlySetCurrentUser(null)}const t=await this.assertedPersistence.getCurrentUser();let a=t,i=!1;if(n&&this.config.authDomain){await this.getOrInitRedirectPersistenceManager();const t=null===(e=this.redirectUser)||void 0===e?void 0:e._redirectEventId,r=null==a?void 0:a._redirectEventId,s=await this.tryRedirectSignIn(n);t&&t!==r||!(null==s?void 0:s.user)||(a=s.user,i=!0)}if(!a)return this.directlySetCurrentUser(null);if(!a._redirectEventId){if(i)try{await this.beforeStateQueue.runMiddleware(a)}catch(n){a=t,this._popupRedirectResolver._overrideRedirectResult(this,(()=>Promise.reject(n)))}return a?this.reloadAndSetCurrentUserOrClear(a):this.directlySetCurrentUser(null)}return Rt(this._popupRedirectResolver,this,"argument-error"),await this.getOrInitRedirectPersistenceManager(),this.redirectUser&&this.redirectUser._redirectEventId===a._redirectEventId?this.directlySetCurrentUser(a):this.reloadAndSetCurrentUserOrClear(a)}async tryRedirectSignIn(n){let e=null;try{e=await this._popupRedirectResolver._completeRedirectFn(this,n,!0)}catch(n){await this._setRedirectUser(null)}return e}async reloadAndSetCurrentUserOrClear(n){try{await sa(n)}catch(n){if("auth/network-request-failed"!==(null==n?void 0:n.code))return this.directlySetCurrentUser(null)}return this.directlySetCurrentUser(n)}useDeviceLanguage(){this.languageCode=function(){if("undefined"==typeof navigator)return null;const n=navigator;return n.languages&&n.languages[0]||n.language||null}()}async _delete(){this._deleted=!0}async updateCurrentUser(n){if(jn(this.app))return Promise.reject(_t(this));const e=n?Q(n):null;return e&&Rt(e.auth.config.apiKey===this.config.apiKey,this,"invalid-user-token"),this._updateCurrentUser(e&&e._clone(this))}async _updateCurrentUser(n,e=!1){if(!this._deleted)return n&&Rt(this.tenantId===n.tenantId,this,"tenant-id-mismatch"),e||await this.beforeStateQueue.runMiddleware(n),this.queue((async()=>{await this.directlySetCurrentUser(n),this.notifyAuthListeners()}))}async signOut(){return jn(this.app)?Promise.reject(_t(this)):(await this.beforeStateQueue.runMiddleware(null),(this.redirectPersistenceManager||this._popupRedirectResolver)&&await this._setRedirectUser(null),this._updateCurrentUser(null,!0))}setPersistence(n){return jn(this.app)?Promise.reject(_t(this)):this.queue((async()=>{await this.assertedPersistence.setPersistence(ha(n))}))}_getRecaptchaConfig(){return null==this.tenantId?this._agentRecaptchaConfig:this._tenantRecaptchaConfigs[this.tenantId]}async validatePassword(n){this._getPasswordPolicyInternal()||await this._updatePasswordPolicy();const e=this._getPasswordPolicyInternal();return e.schemaVersion!==this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION?Promise.reject(this._errorFactory.create("unsupported-password-policy-schema-version",{})):e.validatePassword(n)}_getPasswordPolicyInternal(){return null===this.tenantId?this._projectPasswordPolicy:this._tenantPasswordPolicies[this.tenantId]}async _updatePasswordPolicy(){const n=await async function(n,e={}){return Vt(n,"GET","/v2/passwordPolicy",Ut(n,e))}(this),e=new Ma(n);null===this.tenantId?this._projectPasswordPolicy=e:this._tenantPasswordPolicies[this.tenantId]=e}_getPersistence(){return this.assertedPersistence.persistence.type}_updateErrorMap(n){this._errorFactory=new z("auth","Firebase",n())}onAuthStateChanged(n,e,t){return this.registerStateListener(this.authStateSubscription,n,e,t)}beforeAuthStateChanged(n,e){return this.beforeStateQueue.pushCallback(n,e)}onIdTokenChanged(n,e,t){return this.registerStateListener(this.idTokenSubscription,n,e,t)}authStateReady(){return new Promise(((n,e)=>{if(this.currentUser)n();else{const t=this.onAuthStateChanged((()=>{t(),n()}),e)}}))}async revokeAccessToken(n){if(this.currentUser){const e={providerId:"apple.com",tokenType:"ACCESS_TOKEN",token:n,idToken:await this.currentUser.getIdToken()};null!=this.tenantId&&(e.tenantId=this.tenantId),await async function(n,e){return Vt(n,"POST","/v2/accounts:revokeToken",Ut(n,e))}(this,e)}}toJSON(){var n;return{apiKey:this.config.apiKey,authDomain:this.config.authDomain,appName:this.name,currentUser:null===(n=this._currentUser)||void 0===n?void 0:n.toJSON()}}async _setRedirectUser(n,e){const t=await this.getOrInitRedirectPersistenceManager(e);return null===n?t.removeCurrentUser():t.setCurrentUser(n)}async getOrInitRedirectPersistenceManager(n){if(!this.redirectPersistenceManager){const e=n&&ha(n)||this._popupRedirectResolver;Rt(e,this,"argument-error"),this.redirectPersistenceManager=await ga.create(this,[ha(e._redirectPersistence)],"redirectUser"),this.redirectUser=await this.redirectPersistenceManager.getCurrentUser()}return this.redirectPersistenceManager}async _redirectUserForId(n){var e,t;return this._isInitialized&&await this.queue((async()=>{})),(null===(e=this._currentUser)||void 0===e?void 0:e._redirectEventId)===n?this._currentUser:(null===(t=this.redirectUser)||void 0===t?void 0:t._redirectEventId)===n?this.redirectUser:null}async _persistUserIfCurrent(n){if(n===this.currentUser)return this.queue((async()=>this.directlySetCurrentUser(n)))}_notifyListenersIfCurrent(n){n===this.currentUser&&this.notifyAuthListeners()}_key(){return`${this.config.authDomain}:${this.config.apiKey}:${this.name}`}_startProactiveRefresh(){this.isProactiveRefreshEnabled=!0,this.currentUser&&this._currentUser._startProactiveRefresh()}_stopProactiveRefresh(){this.isProactiveRefreshEnabled=!1,this.currentUser&&this._currentUser._stopProactiveRefresh()}get _currentUser(){return this.currentUser}notifyAuthListeners(){var n,e;if(!this._isInitialized)return;this.idTokenSubscription.next(this.currentUser);const t=null!==(e=null===(n=this.currentUser)||void 0===n?void 0:n.uid)&&void 0!==e?e:null;this.lastNotifiedUid!==t&&(this.lastNotifiedUid=t,this.authStateSubscription.next(this.currentUser))}registerStateListener(n,e,t,a){if(this._deleted)return()=>{};const i="function"==typeof e?e:e.next.bind(e);let r=!1;const s=this._isInitialized?Promise.resolve():this._initializationPromise;if(Rt(s,this,"internal-error"),s.then((()=>{r||i(this.currentUser)})),"function"==typeof e){const i=n.addObserver(e,t,a);return()=>{r=!0,i()}}{const t=n.addObserver(e);return()=>{r=!0,t()}}}async directlySetCurrentUser(n){this.currentUser&&this.currentUser!==n&&this._currentUser._stopProactiveRefresh(),n&&this.isProactiveRefreshEnabled&&n._startProactiveRefresh(),this.currentUser=n,n?await this.assertedPersistence.setCurrentUser(n):await this.assertedPersistence.removeCurrentUser()}queue(n){return this.operations=this.operations.then(n,n),this.operations}get assertedPersistence(){return Rt(this.persistenceManager,this,"internal-error"),this.persistenceManager}_logFramework(n){n&&!this.frameworks.includes(n)&&(this.frameworks.push(n),this.frameworks.sort(),this.clientVersion=Ia(this.config.clientPlatform,this._getFrameworks()))}_getFrameworks(){return this.frameworks}async _getAdditionalHeaders(){var n;const e={"X-Client-Version":this.clientVersion};this.app.options.appId&&(e["X-Firebase-gmpid"]=this.app.options.appId);const t=await(null===(n=this.heartbeatServiceProvider.getImmediate({optional:!0}))||void 0===n?void 0:n.getHeartbeatsHeader());t&&(e["X-Firebase-Client"]=t);const a=await this._getAppCheckToken();return a&&(e["X-Firebase-AppCheck"]=a),e}async _getAppCheckToken(){var n;const e=await(null===(n=this.appCheckServiceProvider.getImmediate({optional:!0}))||void 0===n?void 0:n.getToken());return(null==e?void 0:e.error)&&function(n,...e){At.logLevel<=an.WARN&&At.warn(`Auth (${Hn}): ${n}`,...e)}(`Error while retrieving App Check token: ${e.error}`),null==e?void 0:e.token}}function Pa(n){return Q(n)}class Ra{constructor(n){this.auth=n,this.observer=null,this.addObserver=function(n,e){const t=new H(n,void 0);return t.subscribe.bind(t)}((n=>this.observer=n))}get next(){return Rt(this.observer,this.auth,"internal-error"),this.observer.next.bind(this.observer)}}let Da={async loadJS(){throw new Error("Unable to load external scripts")},recaptchaV2Script:"",recaptchaEnterpriseScript:"",gapiScript:""};function La(n){return Da.loadJS(n)}function Na(n){return`__${n}${Math.floor(1e6*Math.random())}`}class Ba{constructor(n){this.type="recaptcha-enterprise",this.auth=Pa(n)}async verify(n="verify",e=!1){function t(e,t,a){const i=window.grecaptcha;Yt(i)?i.enterprise.ready((()=>{i.enterprise.execute(e,{action:n}).then((n=>{t(n)})).catch((()=>{t("NO_RECAPTCHA")}))})):a(Error("No reCAPTCHA enterprise script loaded."))}return new Promise(((n,a)=>{(async function(n){if(!e){if(null==n.tenantId&&null!=n._agentRecaptchaConfig)return n._agentRecaptchaConfig.siteKey;if(null!=n.tenantId&&void 0!==n._tenantRecaptchaConfigs[n.tenantId])return n._tenantRecaptchaConfigs[n.tenantId].siteKey}return new Promise((async(e,t)=>{(async function(n,e){return Vt(n,"GET","/v2/recaptchaConfig",Ut(n,e))})(n,{clientType:"CLIENT_TYPE_WEB",version:"RECAPTCHA_ENTERPRISE"}).then((a=>{if(void 0!==a.recaptchaKey){const t=new Qt(a);return null==n.tenantId?n._agentRecaptchaConfig=t:n._tenantRecaptchaConfigs[n.tenantId]=t,e(t.siteKey)}t(new Error("recaptcha Enterprise site key undefined"))})).catch((n=>{t(n)}))}))})(this.auth).then((i=>{if(!e&&Yt(window.grecaptcha))t(i,n,a);else{if("undefined"==typeof window)return void a(new Error("RecaptchaVerifier is only supported in browser"));let e=Da.recaptchaEnterpriseScript;0!==e.length&&(e+=i),La(e).then((()=>{t(i,n,a)})).catch((n=>{a(n)}))}})).catch((n=>{a(n)}))}))}}async function za(n,e,t,a=!1){const i=new Ba(n);let r;try{r=await i.verify(t)}catch(n){r=await i.verify(t,!0)}const s=Object.assign({},e);return a?Object.assign(s,{captchaResp:r}):Object.assign(s,{captchaResponse:r}),Object.assign(s,{clientType:"CLIENT_TYPE_WEB"}),Object.assign(s,{recaptchaVersion:"RECAPTCHA_ENTERPRISE"}),s}async function Oa(n,e,t,a){var i;if(null===(i=n._getRecaptchaConfig())||void 0===i?void 0:i.isProviderEnabled("EMAIL_PASSWORD_PROVIDER")){const i=await za(n,e,t,"getOobCode"===t);return a(n,i)}return a(n,e).catch((async i=>{if("auth/missing-recaptcha-token"===i.code){console.log(`${t} is protected by reCAPTCHA Enterprise for this project. Automatically triggering the reCAPTCHA flow and restarting the flow.`);const i=await za(n,e,t,"getOobCode"===t);return a(n,i)}return Promise.reject(i)}))}function Fa(n){const e=n.indexOf(":");return e<0?"":n.substr(0,e+1)}function Ga(n){if(!n)return null;const e=Number(n);return isNaN(e)?null:e}class ja{constructor(n,e){this.providerId=n,this.signInMethod=e}toJSON(){return Dt("not implemented")}_getIdTokenResponse(n){return Dt("not implemented")}_linkToIdToken(n,e){return Dt("not implemented")}_getReauthenticationResolver(n){return Dt("not implemented")}}async function Ua(n,e){return Vt(n,"POST","/v1/accounts:signUp",e)}async function Va(n,e){return qt(n,"POST","/v1/accounts:signInWithPassword",Ut(n,e))}class Ha extends ja{constructor(n,e,t,a=null){super("password",t),this._email=n,this._password=e,this._tenantId=a}static _fromEmailAndPassword(n,e){return new Ha(n,e,"password")}static _fromEmailAndCode(n,e,t=null){return new Ha(n,e,"emailLink",t)}toJSON(){return{email:this._email,password:this._password,signInMethod:this.signInMethod,tenantId:this._tenantId}}static fromJSON(n){const e="string"==typeof n?JSON.parse(n):n;if((null==e?void 0:e.email)&&(null==e?void 0:e.password)){if("password"===e.signInMethod)return this._fromEmailAndPassword(e.email,e.password);if("emailLink"===e.signInMethod)return this._fromEmailAndCode(e.email,e.password,e.tenantId)}return null}async _getIdTokenResponse(n){switch(this.signInMethod){case"password":return Oa(n,{returnSecureToken:!0,email:this._email,password:this._password,clientType:"CLIENT_TYPE_WEB"},"signInWithPassword",Va);case"emailLink":return async function(n,e){return qt(n,"POST","/v1/accounts:signInWithEmailLink",Ut(n,e))}(n,{email:this._email,oobCode:this._password});default:It(n,"internal-error")}}async _linkToIdToken(n,e){switch(this.signInMethod){case"password":return Oa(n,{idToken:e,returnSecureToken:!0,email:this._email,password:this._password,clientType:"CLIENT_TYPE_WEB"},"signUpPassword",Ua);case"emailLink":return async function(n,e){return qt(n,"POST","/v1/accounts:signInWithEmailLink",Ut(n,e))}(n,{idToken:e,email:this._email,oobCode:this._password});default:It(n,"internal-error")}}_getReauthenticationResolver(n){return this._getIdTokenResponse(n)}}async function qa(n,e){return qt(n,"POST","/v1/accounts:signInWithIdp",Ut(n,e))}class Wa extends ja{constructor(){super(...arguments),this.pendingToken=null}static _fromParams(n){const e=new Wa(n.providerId,n.signInMethod);return n.idToken||n.accessToken?(n.idToken&&(e.idToken=n.idToken),n.accessToken&&(e.accessToken=n.accessToken),n.nonce&&!n.pendingToken&&(e.nonce=n.nonce),n.pendingToken&&(e.pendingToken=n.pendingToken)):n.oauthToken&&n.oauthTokenSecret?(e.accessToken=n.oauthToken,e.secret=n.oauthTokenSecret):It("argument-error"),e}toJSON(){return{idToken:this.idToken,accessToken:this.accessToken,secret:this.secret,nonce:this.nonce,pendingToken:this.pendingToken,providerId:this.providerId,signInMethod:this.signInMethod}}static fromJSON(n){const e="string"==typeof n?JSON.parse(n):n,{providerId:t,signInMethod:a}=e,i=wt(e,["providerId","signInMethod"]);if(!t||!a)return null;const r=new Wa(t,a);return r.idToken=i.idToken||void 0,r.accessToken=i.accessToken||void 0,r.secret=i.secret,r.nonce=i.nonce,r.pendingToken=i.pendingToken||null,r}_getIdTokenResponse(n){return qa(n,this.buildRequest())}_linkToIdToken(n,e){const t=this.buildRequest();return t.idToken=e,qa(n,t)}_getReauthenticationResolver(n){const e=this.buildRequest();return e.autoCreate=!1,qa(n,e)}buildRequest(){const n={requestUri:"http://localhost",returnSecureToken:!0};if(this.pendingToken)n.pendingToken=this.pendingToken;else{const e={};this.idToken&&(e.id_token=this.idToken),this.accessToken&&(e.access_token=this.accessToken),this.secret&&(e.oauth_token_secret=this.secret),e.providerId=this.providerId,this.nonce&&!this.pendingToken&&(e.nonce=this.nonce),n.postBody=j(e)}return n}}const Ka={USER_NOT_FOUND:"user-not-found"};class Ja extends ja{constructor(n){super("phone","phone"),this.params=n}static _fromVerification(n,e){return new Ja({verificationId:n,verificationCode:e})}static _fromTokenResponse(n,e){return new Ja({phoneNumber:n,temporaryProof:e})}_getIdTokenResponse(n){return async function(n,e){return qt(n,"POST","/v1/accounts:signInWithPhoneNumber",Ut(n,e))}(n,this._makeVerificationRequest())}_linkToIdToken(n,e){return async function(n,e){const t=await qt(n,"POST","/v1/accounts:signInWithPhoneNumber",Ut(n,e));if(t.temporaryProof)throw $t(n,"account-exists-with-different-credential",t);return t}(n,Object.assign({idToken:e},this._makeVerificationRequest()))}_getReauthenticationResolver(n){return async function(n,e){return qt(n,"POST","/v1/accounts:signInWithPhoneNumber",Ut(n,Object.assign(Object.assign({},e),{operation:"REAUTH"})),Ka)}(n,this._makeVerificationRequest())}_makeVerificationRequest(){const{temporaryProof:n,phoneNumber:e,verificationId:t,verificationCode:a}=this.params;return n&&e?{temporaryProof:n,phoneNumber:e}:{sessionInfo:t,code:a}}toJSON(){const n={providerId:this.providerId};return this.params.phoneNumber&&(n.phoneNumber=this.params.phoneNumber),this.params.temporaryProof&&(n.temporaryProof=this.params.temporaryProof),this.params.verificationCode&&(n.verificationCode=this.params.verificationCode),this.params.verificationId&&(n.verificationId=this.params.verificationId),n}static fromJSON(n){"string"==typeof n&&(n=JSON.parse(n));const{verificationId:e,verificationCode:t,phoneNumber:a,temporaryProof:i}=n;return t||e||a||i?new Ja({verificationId:e,verificationCode:t,phoneNumber:a,temporaryProof:i}):null}}class $a{constructor(n){var e,t,a,i,r,s;const o=U(V(n)),l=null!==(e=o.apiKey)&&void 0!==e?e:null,c=null!==(t=o.oobCode)&&void 0!==t?t:null,u=function(n){switch(n){case"recoverEmail":return"RECOVER_EMAIL";case"resetPassword":return"PASSWORD_RESET";case"signIn":return"EMAIL_SIGNIN";case"verifyEmail":return"VERIFY_EMAIL";case"verifyAndChangeEmail":return"VERIFY_AND_CHANGE_EMAIL";case"revertSecondFactorAddition":return"REVERT_SECOND_FACTOR_ADDITION";default:return null}}(null!==(a=o.mode)&&void 0!==a?a:null);Rt(l&&c&&u,"argument-error"),this.apiKey=l,this.operation=u,this.code=c,this.continueUrl=null!==(i=o.continueUrl)&&void 0!==i?i:null,this.languageCode=null!==(r=o.languageCode)&&void 0!==r?r:null,this.tenantId=null!==(s=o.tenantId)&&void 0!==s?s:null}static parseLink(n){const e=function(n){const e=U(V(n)).link,t=e?U(V(e)).deep_link_id:null,a=U(V(n)).deep_link_id;return(a?U(V(a)).link:null)||a||t||e||n}(n);try{return new $a(e)}catch(n){return null}}}class Ya{constructor(){this.providerId=Ya.PROVIDER_ID}static credential(n,e){return Ha._fromEmailAndPassword(n,e)}static credentialWithLink(n,e){const t=$a.parseLink(e);return Rt(t,"argument-error"),Ha._fromEmailAndCode(n,t.code,t.tenantId)}}Ya.PROVIDER_ID="password",Ya.EMAIL_PASSWORD_SIGN_IN_METHOD="password",Ya.EMAIL_LINK_SIGN_IN_METHOD="emailLink";class Qa{constructor(n){this.providerId=n,this.defaultLanguageCode=null,this.customParameters={}}setDefaultLanguage(n){this.defaultLanguageCode=n}setCustomParameters(n){return this.customParameters=n,this}getCustomParameters(){return this.customParameters}}class Xa extends Qa{constructor(){super(...arguments),this.scopes=[]}addScope(n){return this.scopes.includes(n)||this.scopes.push(n),this}getScopes(){return[...this.scopes]}}class Za extends Xa{constructor(){super("facebook.com")}static credential(n){return Wa._fromParams({providerId:Za.PROVIDER_ID,signInMethod:Za.FACEBOOK_SIGN_IN_METHOD,accessToken:n})}static credentialFromResult(n){return Za.credentialFromTaggedObject(n)}static credentialFromError(n){return Za.credentialFromTaggedObject(n.customData||{})}static credentialFromTaggedObject({_tokenResponse:n}){if(!n||!("oauthAccessToken"in n))return null;if(!n.oauthAccessToken)return null;try{return Za.credential(n.oauthAccessToken)}catch(n){return null}}}Za.FACEBOOK_SIGN_IN_METHOD="facebook.com",Za.PROVIDER_ID="facebook.com";class ni extends Xa{constructor(){super("google.com"),this.addScope("profile")}static credential(n,e){return Wa._fromParams({providerId:ni.PROVIDER_ID,signInMethod:ni.GOOGLE_SIGN_IN_METHOD,idToken:n,accessToken:e})}static credentialFromResult(n){return ni.credentialFromTaggedObject(n)}static credentialFromError(n){return ni.credentialFromTaggedObject(n.customData||{})}static credentialFromTaggedObject({_tokenResponse:n}){if(!n)return null;const{oauthIdToken:e,oauthAccessToken:t}=n;if(!e&&!t)return null;try{return ni.credential(e,t)}catch(n){return null}}}ni.GOOGLE_SIGN_IN_METHOD="google.com",ni.PROVIDER_ID="google.com";class ei extends Xa{constructor(){super("github.com")}static credential(n){return Wa._fromParams({providerId:ei.PROVIDER_ID,signInMethod:ei.GITHUB_SIGN_IN_METHOD,accessToken:n})}static credentialFromResult(n){return ei.credentialFromTaggedObject(n)}static credentialFromError(n){return ei.credentialFromTaggedObject(n.customData||{})}static credentialFromTaggedObject({_tokenResponse:n}){if(!n||!("oauthAccessToken"in n))return null;if(!n.oauthAccessToken)return null;try{return ei.credential(n.oauthAccessToken)}catch(n){return null}}}ei.GITHUB_SIGN_IN_METHOD="github.com",ei.PROVIDER_ID="github.com";class ti extends Xa{constructor(){super("twitter.com")}static credential(n,e){return Wa._fromParams({providerId:ti.PROVIDER_ID,signInMethod:ti.TWITTER_SIGN_IN_METHOD,oauthToken:n,oauthTokenSecret:e})}static credentialFromResult(n){return ti.credentialFromTaggedObject(n)}static credentialFromError(n){return ti.credentialFromTaggedObject(n.customData||{})}static credentialFromTaggedObject({_tokenResponse:n}){if(!n)return null;const{oauthAccessToken:e,oauthTokenSecret:t}=n;if(!e||!t)return null;try{return ti.credential(e,t)}catch(n){return null}}}ti.TWITTER_SIGN_IN_METHOD="twitter.com",ti.PROVIDER_ID="twitter.com";class ai{constructor(n){this.user=n.user,this.providerId=n.providerId,this._tokenResponse=n._tokenResponse,this.operationType=n.operationType}static async _fromIdTokenResponse(n,e,t,a=!1){const i=await ua._fromIdTokenResponse(n,t,a),r=ii(t);return new ai({user:i,providerId:r,_tokenResponse:t,operationType:e})}static async _forOperation(n,e,t){await n._updateTokensIfNecessary(t,!0);const a=ii(t);return new ai({user:n,providerId:a,_tokenResponse:t,operationType:e})}}function ii(n){return n.providerId?n.providerId:"phoneNumber"in n?"phone":null}class ri extends B{constructor(n,e,t,a){var i;super(e.code,e.message),this.operationType=t,this.user=a,Object.setPrototypeOf(this,ri.prototype),this.customData={appName:n.name,tenantId:null!==(i=n.tenantId)&&void 0!==i?i:void 0,_serverResponse:e.customData._serverResponse,operationType:t}}static _fromErrorAndOperation(n,e,t,a){return new ri(n,e,t,a)}}function si(n,e,t,a){return("reauthenticate"===e?t._getReauthenticationResolver(n):t._getIdTokenResponse(n)).catch((t=>{if("auth/multi-factor-auth-required"===t.code)throw ri._fromErrorAndOperation(n,t,e,a);throw t}))}class oi{constructor(n,e,t={}){this.isNewUser=n,this.providerId=e,this.profile=t}}class li extends oi{constructor(n,e,t,a){super(n,e,t),this.username=a}}class ci extends oi{constructor(n,e){super(n,"facebook.com",e)}}class ui extends li{constructor(n,e){super(n,"github.com",e,"string"==typeof(null==e?void 0:e.login)?null==e?void 0:e.login:null)}}class di extends oi{constructor(n,e){super(n,"google.com",e)}}class hi extends li{constructor(n,e,t){super(n,"twitter.com",e,t)}}new WeakMap;const fi="__sak";class mi{constructor(n,e){this.storageRetriever=n,this.type=e}_isAvailable(){try{return this.storage?(this.storage.setItem(fi,"1"),this.storage.removeItem(fi),Promise.resolve(!0)):Promise.resolve(!1)}catch(n){return Promise.resolve(!1)}}_set(n,e){return this.storage.setItem(n,JSON.stringify(e)),Promise.resolve()}_get(n){const e=this.storage.getItem(n);return Promise.resolve(e?JSON.parse(e):null)}_remove(n){return this.storage.removeItem(n),Promise.resolve()}get storage(){return this.storageRetriever()}}class pi extends mi{constructor(){super((()=>window.localStorage),"LOCAL"),this.boundEventHandler=(n,e)=>this.onStorageEvent(n,e),this.listeners={},this.localCache={},this.pollTimer=null,this.fallbackToPolling=Ta(),this._shouldAllowMigration=!0}forAllChangedKeys(n){for(const e of Object.keys(this.listeners)){const t=this.storage.getItem(e),a=this.localCache[e];t!==a&&n(e,a,t)}}onStorageEvent(n,e=!1){if(!n.key)return void this.forAllChangedKeys(((n,e,t)=>{this.notifyListeners(n,t)}));const t=n.key;e?this.detachListener():this.stopPolling();const a=()=>{const n=this.storage.getItem(t);(e||this.localCache[t]!==n)&&this.notifyListeners(t,n)},i=this.storage.getItem(t);!function(){const n=R();return n.indexOf("MSIE ")>=0||n.indexOf("Trident/")>=0}()||10!==document.documentMode||i===n.newValue||n.newValue===n.oldValue?a():setTimeout(a,10)}notifyListeners(n,e){this.localCache[n]=e;const t=this.listeners[n];if(t)for(const n of Array.from(t))n(e?JSON.parse(e):e)}startPolling(){this.stopPolling(),this.pollTimer=setInterval((()=>{this.forAllChangedKeys(((n,e,t)=>{this.onStorageEvent(new StorageEvent("storage",{key:n,oldValue:e,newValue:t}),!0)}))}),1e3)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}attachListener(){window.addEventListener("storage",this.boundEventHandler)}detachListener(){window.removeEventListener("storage",this.boundEventHandler)}_addListener(n,e){0===Object.keys(this.listeners).length&&(this.fallbackToPolling?this.startPolling():this.attachListener()),this.listeners[n]||(this.listeners[n]=new Set,this.localCache[n]=this.storage.getItem(n)),this.listeners[n].add(e)}_removeListener(n,e){this.listeners[n]&&(this.listeners[n].delete(e),0===this.listeners[n].size&&delete this.listeners[n]),0===Object.keys(this.listeners).length&&(this.detachListener(),this.stopPolling())}async _set(n,e){await super._set(n,e),this.localCache[n]=JSON.stringify(e)}async _get(n){const e=await super._get(n);return this.localCache[n]=JSON.stringify(e),e}async _remove(n){await super._remove(n),delete this.localCache[n]}}pi.type="LOCAL";const gi=pi;class yi extends mi{constructor(){super((()=>window.sessionStorage),"SESSION")}_addListener(n,e){}_removeListener(n,e){}}yi.type="SESSION";const bi=yi;class vi{constructor(n){this.eventTarget=n,this.handlersMap={},this.boundEventHandler=this.handleEvent.bind(this)}static _getInstance(n){const e=this.receivers.find((e=>e.isListeningto(n)));if(e)return e;const t=new vi(n);return this.receivers.push(t),t}isListeningto(n){return this.eventTarget===n}async handleEvent(n){const e=n,{eventId:t,eventType:a,data:i}=e.data,r=this.handlersMap[a];if(!(null==r?void 0:r.size))return;e.ports[0].postMessage({status:"ack",eventId:t,eventType:a});const s=Array.from(r).map((async n=>n(e.origin,i))),o=await function(n){return Promise.all(n.map((async n=>{try{return{fulfilled:!0,value:await n}}catch(n){return{fulfilled:!1,reason:n}}})))}(s);e.ports[0].postMessage({status:"done",eventId:t,eventType:a,response:o})}_subscribe(n,e){0===Object.keys(this.handlersMap).length&&this.eventTarget.addEventListener("message",this.boundEventHandler),this.handlersMap[n]||(this.handlersMap[n]=new Set),this.handlersMap[n].add(e)}_unsubscribe(n,e){this.handlersMap[n]&&e&&this.handlersMap[n].delete(e),e&&0!==this.handlersMap[n].size||delete this.handlersMap[n],0===Object.keys(this.handlersMap).length&&this.eventTarget.removeEventListener("message",this.boundEventHandler)}}function xi(n="",e=10){let t="";for(let n=0;n{const l=xi("",20);a.port1.start();const c=setTimeout((()=>{o(new Error("unsupported_event"))}),t);r={messageChannel:a,onMessage(n){const e=n;if(e.data.eventId===l)switch(e.data.status){case"ack":clearTimeout(c),i=setTimeout((()=>{o(new Error("timeout"))}),3e3);break;case"done":clearTimeout(i),s(e.data.response);break;default:clearTimeout(c),clearTimeout(i),o(new Error("invalid_response"))}}},this.handlers.add(r),a.port1.addEventListener("message",r.onMessage),this.target.postMessage({eventType:n,eventId:l,data:e},[a.port2])})).finally((()=>{r&&this.removeMessageHandler(r)}))}}function wi(){return window}function Ci(){return void 0!==wi().WorkerGlobalScope&&"function"==typeof wi().importScripts}const Si="firebaseLocalStorageDb",Ai="firebaseLocalStorage",Ti="fbase_key";class Ii{constructor(n){this.request=n}toPromise(){return new Promise(((n,e)=>{this.request.addEventListener("success",(()=>{n(this.request.result)})),this.request.addEventListener("error",(()=>{e(this.request.error)}))}))}}function Ei(n,e){return n.transaction([Ai],e?"readwrite":"readonly").objectStore(Ai)}function Mi(){const n=indexedDB.open(Si,1);return new Promise(((e,t)=>{n.addEventListener("error",(()=>{t(n.error)})),n.addEventListener("upgradeneeded",(()=>{const e=n.result;try{e.createObjectStore(Ai,{keyPath:Ti})}catch(n){t(n)}})),n.addEventListener("success",(async()=>{const t=n.result;t.objectStoreNames.contains(Ai)?e(t):(t.close(),await function(){const n=indexedDB.deleteDatabase(Si);return new Ii(n).toPromise()}(),e(await Mi()))}))}))}async function _i(n,e,t){const a=Ei(n,!0).put({[Ti]:e,value:t});return new Ii(a).toPromise()}function Pi(n,e){const t=Ei(n,!0).delete(e);return new Ii(t).toPromise()}class Ri{constructor(){this.type="LOCAL",this._shouldAllowMigration=!0,this.listeners={},this.localCache={},this.pollTimer=null,this.pendingWrites=0,this.receiver=null,this.sender=null,this.serviceWorkerReceiverAvailable=!1,this.activeServiceWorker=null,this._workerInitializationPromise=this.initializeServiceWorkerMessaging().then((()=>{}),(()=>{}))}async _openDb(){return this.db||(this.db=await Mi()),this.db}async _withRetries(n){let e=0;for(;;)try{const e=await this._openDb();return await n(e)}catch(n){if(e++>3)throw n;this.db&&(this.db.close(),this.db=void 0)}}async initializeServiceWorkerMessaging(){return Ci()?this.initializeReceiver():this.initializeSender()}async initializeReceiver(){this.receiver=vi._getInstance(Ci()?self:null),this.receiver._subscribe("keyChanged",(async(n,e)=>({keyProcessed:(await this._poll()).includes(e.key)}))),this.receiver._subscribe("ping",(async(n,e)=>["keyChanged"]))}async initializeSender(){var n,e;if(this.activeServiceWorker=await async function(){if(!(null===navigator||void 0===navigator?void 0:navigator.serviceWorker))return null;try{return(await navigator.serviceWorker.ready).active}catch(n){return null}}(),!this.activeServiceWorker)return;this.sender=new ki(this.activeServiceWorker);const t=await this.sender._send("ping",{},800);t&&(null===(n=t[0])||void 0===n?void 0:n.fulfilled)&&(null===(e=t[0])||void 0===e?void 0:e.value.includes("keyChanged"))&&(this.serviceWorkerReceiverAvailable=!0)}async notifyServiceWorker(n){var e;if(this.sender&&this.activeServiceWorker&&((null===(e=null===navigator||void 0===navigator?void 0:navigator.serviceWorker)||void 0===e?void 0:e.controller)||null)===this.activeServiceWorker)try{await this.sender._send("keyChanged",{key:n},this.serviceWorkerReceiverAvailable?800:50)}catch(e){}}async _isAvailable(){try{if(!indexedDB)return!1;const n=await Mi();return await _i(n,fi,"1"),await Pi(n,fi),!0}catch(n){}return!1}async _withPendingWrite(n){this.pendingWrites++;try{await n()}finally{this.pendingWrites--}}async _set(n,e){return this._withPendingWrite((async()=>(await this._withRetries((t=>_i(t,n,e))),this.localCache[n]=e,this.notifyServiceWorker(n))))}async _get(n){const e=await this._withRetries((e=>async function(n,e){const t=Ei(n,!1).get(e),a=await new Ii(t).toPromise();return void 0===a?null:a.value}(e,n)));return this.localCache[n]=e,e}async _remove(n){return this._withPendingWrite((async()=>(await this._withRetries((e=>Pi(e,n))),delete this.localCache[n],this.notifyServiceWorker(n))))}async _poll(){const n=await this._withRetries((n=>{const e=Ei(n,!1).getAll();return new Ii(e).toPromise()}));if(!n)return[];if(0!==this.pendingWrites)return[];const e=[],t=new Set;if(0!==n.length)for(const{fbase_key:a,value:i}of n)t.add(a),JSON.stringify(this.localCache[a])!==JSON.stringify(i)&&(this.notifyListeners(a,i),e.push(a));for(const n of Object.keys(this.localCache))this.localCache[n]&&!t.has(n)&&(this.notifyListeners(n,null),e.push(n));return e}notifyListeners(n,e){this.localCache[n]=e;const t=this.listeners[n];if(t)for(const n of Array.from(t))n(e)}startPolling(){this.stopPolling(),this.pollTimer=setInterval((async()=>this._poll()),800)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}_addListener(n,e){0===Object.keys(this.listeners).length&&this.startPolling(),this.listeners[n]||(this.listeners[n]=new Set,this._get(n)),this.listeners[n].add(e)}_removeListener(n,e){this.listeners[n]&&(this.listeners[n].delete(e),0===this.listeners[n].size&&delete this.listeners[n]),0===Object.keys(this.listeners).length&&this.stopPolling()}}Ri.type="LOCAL";const Di=Ri;Na("rcb"),new zt(3e4,6e4);class Li{constructor(n){this.providerId=Li.PROVIDER_ID,this.auth=Pa(n)}verifyPhoneNumber(n,e){return async function(n,e,t){var a;const i=await t.verify();try{let r;if(Rt("string"==typeof i,n,"argument-error"),Rt("recaptcha"===t.type,n,"argument-error"),r="string"==typeof e?{phoneNumber:e}:e,"session"in r){const e=r.session;if("phoneNumber"in r){Rt("enroll"===e.type,n,"internal-error");const t=await function(n,e){return Vt(n,"POST","/v2/accounts/mfaEnrollment:start",Ut(n,e))}(n,{idToken:e.credential,phoneEnrollmentInfo:{phoneNumber:r.phoneNumber,recaptchaToken:i}});return t.phoneSessionInfo.sessionInfo}{Rt("signin"===e.type,n,"internal-error");const t=(null===(a=r.multiFactorHint)||void 0===a?void 0:a.uid)||r.multiFactorUid;Rt(t,n,"missing-multi-factor-info");const s=await function(n,e){return Vt(n,"POST","/v2/accounts/mfaSignIn:start",Ut(n,e))}(n,{mfaPendingCredential:e.credential,mfaEnrollmentId:t,phoneSignInInfo:{recaptchaToken:i}});return s.phoneResponseInfo.sessionInfo}}{const{sessionInfo:e}=await async function(n,e){return Vt(n,"POST","/v1/accounts:sendVerificationCode",Ut(n,e))}(n,{phoneNumber:r.phoneNumber,recaptchaToken:i});return e}}finally{t._reset()}}(this.auth,n,Q(e))}static credential(n,e){return Ja._fromVerification(n,e)}static credentialFromResult(n){const e=n;return Li.credentialFromTaggedObject(e)}static credentialFromError(n){return Li.credentialFromTaggedObject(n.customData||{})}static credentialFromTaggedObject({_tokenResponse:n}){if(!n)return null;const{phoneNumber:e,temporaryProof:t}=n;return e&&t?Ja._fromTokenResponse(e,t):null}}function Ni(n,e){return e?ha(e):(Rt(n._popupRedirectResolver,n,"argument-error"),n._popupRedirectResolver)}Li.PROVIDER_ID="phone",Li.PHONE_SIGN_IN_METHOD="phone";class Bi extends ja{constructor(n){super("custom","custom"),this.params=n}_getIdTokenResponse(n){return qa(n,this._buildIdpRequest())}_linkToIdToken(n,e){return qa(n,this._buildIdpRequest(e))}_getReauthenticationResolver(n){return qa(n,this._buildIdpRequest())}_buildIdpRequest(n){const e={requestUri:this.params.requestUri,sessionId:this.params.sessionId,postBody:this.params.postBody,tenantId:this.params.tenantId,pendingToken:this.params.pendingToken,returnSecureToken:!0,returnIdpCredential:!0};return n&&(e.idToken=n),e}}function zi(n){return async function(n,e,t=!1){if(jn(n.app))return Promise.reject(_t(n));const a="signIn",i=await si(n,a,e),r=await ai._fromIdTokenResponse(n,a,i);return t||await n._updateCurrentUser(r.user),r}(n.auth,new Bi(n),n.bypassAuthState)}function Oi(n){const{auth:e,user:t}=n;return Rt(t,e,"internal-error"),async function(n,e,t=!1){const{auth:a}=n;if(jn(a.app))return Promise.reject(_t(a));const i="reauthenticate";try{const r=await aa(n,si(a,i,e,n),t);Rt(r.idToken,a,"internal-error");const s=ea(r.idToken);Rt(s,a,"internal-error");const{sub:o}=s;return Rt(n.uid===o,a,"user-mismatch"),ai._forOperation(n,i,r)}catch(n){throw"auth/user-not-found"===(null==n?void 0:n.code)&&It(a,"user-mismatch"),n}}(t,new Bi(n),n.bypassAuthState)}async function Fi(n){const{auth:e,user:t}=n;return Rt(t,e,"internal-error"),async function(n,e,t=!1){const a=await aa(n,e._linkToIdToken(n.auth,await n.getIdToken()),t);return ai._forOperation(n,"link",a)}(t,new Bi(n),n.bypassAuthState)}class Gi{constructor(n,e,t,a,i=!1){this.auth=n,this.resolver=t,this.user=a,this.bypassAuthState=i,this.pendingPromise=null,this.eventManager=null,this.filter=Array.isArray(e)?e:[e]}execute(){return new Promise((async(n,e)=>{this.pendingPromise={resolve:n,reject:e};try{this.eventManager=await this.resolver._initialize(this.auth),await this.onExecution(),this.eventManager.registerConsumer(this)}catch(n){this.reject(n)}}))}async onAuthEvent(n){const{urlResponse:e,sessionId:t,postBody:a,tenantId:i,error:r,type:s}=n;if(r)return void this.reject(r);const o={auth:this.auth,requestUri:e,sessionId:t,tenantId:i||void 0,postBody:a||void 0,user:this.user,bypassAuthState:this.bypassAuthState};try{this.resolve(await this.getIdpTask(s)(o))}catch(n){this.reject(n)}}onError(n){this.reject(n)}getIdpTask(n){switch(n){case"signInViaPopup":case"signInViaRedirect":return zi;case"linkViaPopup":case"linkViaRedirect":return Fi;case"reauthViaPopup":case"reauthViaRedirect":return Oi;default:It(this.auth,"internal-error")}}resolve(n){Lt(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.resolve(n),this.unregisterAndCleanUp()}reject(n){Lt(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.reject(n),this.unregisterAndCleanUp()}unregisterAndCleanUp(){this.eventManager&&this.eventManager.unregisterConsumer(this),this.pendingPromise=null,this.cleanUp()}}const ji=new zt(2e3,1e4);class Ui extends Gi{constructor(n,e,t,a,i){super(n,e,a,i),this.provider=t,this.authWindow=null,this.pollId=null,Ui.currentPopupAction&&Ui.currentPopupAction.cancel(),Ui.currentPopupAction=this}async executeNotNull(){const n=await this.execute();return Rt(n,this.auth,"internal-error"),n}async onExecution(){Lt(1===this.filter.length,"Popup operations only handle one event");const n=xi();this.authWindow=await this.resolver._openPopup(this.auth,this.provider,this.filter[0],n),this.authWindow.associatedEvent=n,this.resolver._originValidation(this.auth).catch((n=>{this.reject(n)})),this.resolver._isIframeWebStorageSupported(this.auth,(n=>{n||this.reject(Et(this.auth,"web-storage-unsupported"))})),this.pollUserCancellation()}get eventId(){var n;return(null===(n=this.authWindow)||void 0===n?void 0:n.associatedEvent)||null}cancel(){this.reject(Et(this.auth,"cancelled-popup-request"))}cleanUp(){this.authWindow&&this.authWindow.close(),this.pollId&&window.clearTimeout(this.pollId),this.authWindow=null,this.pollId=null,Ui.currentPopupAction=null}pollUserCancellation(){const n=()=>{var e,t;(null===(t=null===(e=this.authWindow)||void 0===e?void 0:e.window)||void 0===t?void 0:t.closed)?this.pollId=window.setTimeout((()=>{this.pollId=null,this.reject(Et(this.auth,"popup-closed-by-user"))}),8e3):this.pollId=window.setTimeout(n,ji.get())};n()}}Ui.currentPopupAction=null;const Vi="pendingRedirect",Hi=new Map;class qi extends Gi{constructor(n,e,t=!1){super(n,["signInViaRedirect","linkViaRedirect","reauthViaRedirect","unknown"],e,void 0,t),this.eventId=null}async execute(){let n=Hi.get(this.auth._key());if(!n){try{const e=await async function(n,e){const t=function(n){return pa(Vi,n.config.apiKey,n.name)}(e),a=function(n){return ha(n._redirectPersistence)}(n);if(!await a._isAvailable())return!1;const i="true"===await a._get(t);return await a._remove(t),i}(this.resolver,this.auth),t=e?await super.execute():null;n=()=>Promise.resolve(t)}catch(e){n=()=>Promise.reject(e)}Hi.set(this.auth._key(),n)}return this.bypassAuthState||Hi.set(this.auth._key(),(()=>Promise.resolve(null))),n()}async onAuthEvent(n){if("signInViaRedirect"===n.type)return super.onAuthEvent(n);if("unknown"!==n.type){if(n.eventId){const e=await this.auth._redirectUserForId(n.eventId);if(e)return this.user=e,super.onAuthEvent(n);this.resolve(null)}}else this.resolve(null)}async onExecution(){}cleanUp(){}}function Wi(n,e){Hi.set(n._key(),e)}async function Ki(n,e,t=!1){if(jn(n.app))return Promise.reject(_t(n));const a=Pa(n),i=Ni(a,e),r=new qi(a,i,t),s=await r.execute();return s&&!t&&(delete s.user._redirectEventId,await a._persistUserIfCurrent(s.user),await a._setRedirectUser(null,e)),s}class Ji{constructor(n){this.auth=n,this.cachedEventUids=new Set,this.consumers=new Set,this.queuedRedirectEvent=null,this.hasHandledPotentialRedirect=!1,this.lastProcessedEventTime=Date.now()}registerConsumer(n){this.consumers.add(n),this.queuedRedirectEvent&&this.isEventForConsumer(this.queuedRedirectEvent,n)&&(this.sendToConsumer(this.queuedRedirectEvent,n),this.saveEventToCache(this.queuedRedirectEvent),this.queuedRedirectEvent=null)}unregisterConsumer(n){this.consumers.delete(n)}onEvent(n){if(this.hasEventBeenHandled(n))return!1;let e=!1;return this.consumers.forEach((t=>{this.isEventForConsumer(n,t)&&(e=!0,this.sendToConsumer(n,t),this.saveEventToCache(n))})),this.hasHandledPotentialRedirect||!function(n){switch(n.type){case"signInViaRedirect":case"linkViaRedirect":case"reauthViaRedirect":return!0;case"unknown":return Yi(n);default:return!1}}(n)||(this.hasHandledPotentialRedirect=!0,e||(this.queuedRedirectEvent=n,e=!0)),e}sendToConsumer(n,e){var t;if(n.error&&!Yi(n)){const a=(null===(t=n.error.code)||void 0===t?void 0:t.split("auth/")[1])||"internal-error";e.onError(Et(this.auth,a))}else e.onAuthEvent(n)}isEventForConsumer(n,e){const t=null===e.eventId||!!n.eventId&&n.eventId===e.eventId;return e.filter.includes(n.type)&&t}hasEventBeenHandled(n){return Date.now()-this.lastProcessedEventTime>=6e5&&this.cachedEventUids.clear(),this.cachedEventUids.has($i(n))}saveEventToCache(n){this.cachedEventUids.add($i(n)),this.lastProcessedEventTime=Date.now()}}function $i(n){return[n.type,n.eventId,n.sessionId,n.tenantId].filter((n=>n)).join("-")}function Yi({type:n,error:e}){return"unknown"===n&&"auth/no-auth-event"===(null==e?void 0:e.code)}const Qi=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,Xi=/^https?/;function Zi(n){const e=Nt(),{protocol:t,hostname:a}=new URL(e);if(n.startsWith("chrome-extension://")){const i=new URL(n);return""===i.hostname&&""===a?"chrome-extension:"===t&&n.replace("chrome-extension://","")===e.replace("chrome-extension://",""):"chrome-extension:"===t&&i.hostname===a}if(!Xi.test(t))return!1;if(Qi.test(n))return a===n;const i=n.replace(/\./g,"\\.");return new RegExp("^(.+\\."+i+"|"+i+")$","i").test(a)}const nr=new zt(3e4,6e4);function er(){const n=wi().___jsl;if(null==n?void 0:n.H)for(const e of Object.keys(n.H))if(n.H[e].r=n.H[e].r||[],n.H[e].L=n.H[e].L||[],n.H[e].r=[...n.H[e].L],n.CP)for(let e=0;e{var a,i,r;function s(){er(),gapi.load("gapi.iframes",{callback:()=>{e(gapi.iframes.getContext())},ontimeout:()=>{er(),t(Et(n,"network-request-failed"))},timeout:nr.get()})}if(null===(i=null===(a=wi().gapi)||void 0===a?void 0:a.iframes)||void 0===i?void 0:i.Iframe)e(gapi.iframes.getContext());else{if(!(null===(r=wi().gapi)||void 0===r?void 0:r.load)){const e=Na("iframefcb");return wi()[e]=()=>{gapi.load?s():t(Et(n,"network-request-failed"))},La(`${Da.gapiScript}?onload=${e}`).catch((n=>t(n)))}s()}})).catch((n=>{throw ar=null,n}))}let ar=null;const ir=new zt(5e3,15e3),rr="__/auth/iframe",sr="emulator/auth/iframe",or={style:{position:"absolute",top:"-100px",width:"1px",height:"1px"},"aria-hidden":"true",tabindex:"-1"},lr=new Map([["identitytoolkit.googleapis.com","p"],["staging-identitytoolkit.sandbox.googleapis.com","s"],["test-identitytoolkit.sandbox.googleapis.com","t"]]);function cr(n){const e=n.config;Rt(e.authDomain,n,"auth-domain-config-required");const t=e.emulator?Ot(e,sr):`https://${n.config.authDomain}/${rr}`,a={apiKey:e.apiKey,appName:n.name,v:Hn},i=lr.get(n.config.apiHost);i&&(a.eid=i);const r=n._getFrameworks();return r.length&&(a.fw=r.join(",")),`${t}?${j(a).slice(1)}`}const ur={location:"yes",resizable:"yes",statusbar:"yes",toolbar:"no"};class dr{constructor(n){this.window=n,this.associatedEvent=null}close(){if(this.window)try{this.window.close()}catch(n){}}}const hr=encodeURIComponent("fac");async function fr(n,e,t,a,i,r){Rt(n.config.authDomain,n,"auth-domain-config-required"),Rt(n.config.apiKey,n,"invalid-api-key");const s={apiKey:n.config.apiKey,appName:n.name,authType:t,redirectUrl:a,v:Hn,eventId:i};if(e instanceof Qa){e.setDefaultLanguage(n.languageCode),s.providerId=e.providerId||"",function(n){for(const e in n)if(Object.prototype.hasOwnProperty.call(n,e))return!1;return!0}(e.getCustomParameters())||(s.customParameters=JSON.stringify(e.getCustomParameters()));for(const[n,e]of Object.entries(r||{}))s[n]=e}if(e instanceof Xa){const n=e.getScopes().filter((n=>""!==n));n.length>0&&(s.scopes=n.join(","))}n.tenantId&&(s.tid=n.tenantId);const o=s;for(const n of Object.keys(o))void 0===o[n]&&delete o[n];const l=await n._getAppCheckToken(),c=l?`#${hr}=${encodeURIComponent(l)}`:"";return`${function({config:n}){return n.emulator?Ot(n,"emulator/auth/handler"):`https://${n.authDomain}/__/auth/handler`}(n)}?${j(o).slice(1)}${c}`}const mr="webStorageSupport",pr=class{constructor(){this.eventManagers={},this.iframes={},this.originValidationPromises={},this._redirectPersistence=bi,this._completeRedirectFn=Ki,this._overrideRedirectResult=Wi}async _openPopup(n,e,t,a){var i;return Lt(null===(i=this.eventManagers[n._key()])||void 0===i?void 0:i.manager,"_initialize() not called before _openPopup()"),function(n,e,t,a=500,i=600){const r=Math.max((window.screen.availHeight-i)/2,0).toString(),s=Math.max((window.screen.availWidth-a)/2,0).toString();let o="";const l=Object.assign(Object.assign({},ur),{width:a.toString(),height:i.toString(),top:r,left:s}),c=R().toLowerCase();t&&(o=xa(c)?"_blank":t),ba(c)&&(e=e||"http://localhost",l.scrollbars="yes");const u=Object.entries(l).reduce(((n,[e,t])=>`${n}${e}=${t},`),"");if(function(n=R()){var e;return Aa(n)&&!!(null===(e=window.navigator)||void 0===e?void 0:e.standalone)}(c)&&"_self"!==o)return function(n,e){const t=document.createElement("a");t.href=n,t.target=e;const a=document.createEvent("MouseEvent");a.initMouseEvent("click",!0,!0,window,1,0,0,0,0,!1,!1,!1,!1,1,null),t.dispatchEvent(a)}(e||"",o),new dr(null);const d=window.open(e||"",o,u);Rt(d,n,"popup-blocked");try{d.focus()}catch(n){}return new dr(d)}(n,await fr(n,e,t,Nt(),a),xi())}async _openRedirect(n,e,t,a){return await this._originValidation(n),i=await fr(n,e,t,Nt(),a),wi().location.href=i,new Promise((()=>{}));var i}_initialize(n){const e=n._key();if(this.eventManagers[e]){const{manager:n,promise:t}=this.eventManagers[e];return n?Promise.resolve(n):(Lt(t,"If manager is not set, promise should be"),t)}const t=this.initAndGetManager(n);return this.eventManagers[e]={promise:t},t.catch((()=>{delete this.eventManagers[e]})),t}async initAndGetManager(n){const e=await async function(n){const e=await function(n){return ar=ar||tr(n),ar}(n),t=wi().gapi;return Rt(t,n,"internal-error"),e.open({where:document.body,url:cr(n),messageHandlersFilter:t.iframes.CROSS_ORIGIN_IFRAMES_FILTER,attributes:or,dontclear:!0},(e=>new Promise((async(t,a)=>{await e.restyle({setHideOnLeave:!1});const i=Et(n,"network-request-failed"),r=wi().setTimeout((()=>{a(i)}),ir.get());function s(){wi().clearTimeout(r),t(e)}e.ping(s).then(s,(()=>{a(i)}))}))))}(n),t=new Ji(n);return e.register("authEvent",(e=>(Rt(null==e?void 0:e.authEvent,n,"invalid-auth-event"),{status:t.onEvent(e.authEvent)?"ACK":"ERROR"})),gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER),this.eventManagers[n._key()]={manager:t},this.iframes[n._key()]=e,t}_isIframeWebStorageSupported(n,e){this.iframes[n._key()].send(mr,{type:mr},(t=>{var a;const i=null===(a=null==t?void 0:t[0])||void 0===a?void 0:a[mr];void 0!==i&&e(!!i),It(n,"internal-error")}),gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER)}_originValidation(n){const e=n._key();return this.originValidationPromises[e]||(this.originValidationPromises[e]=async function(n){if(n.config.emulator)return;const{authorizedDomains:e}=await async function(n,e={}){return Vt(n,"GET","/v1/projects",e)}(n);for(const n of e)try{if(Zi(n))return}catch(n){}It(n,"unauthorized-domain")}(n)),this.originValidationPromises[e]}get _shouldInitProactively(){return Ta()||va()||Aa()}};var gr="@firebase/auth",yr="1.7.9";class br{constructor(n){this.auth=n,this.internalListeners=new Map}getUid(){var n;return this.assertAuthConfigured(),(null===(n=this.auth.currentUser)||void 0===n?void 0:n.uid)||null}async getToken(n){return this.assertAuthConfigured(),await this.auth._initializationPromise,this.auth.currentUser?{accessToken:await this.auth.currentUser.getIdToken(n)}:null}addAuthTokenListener(n){if(this.assertAuthConfigured(),this.internalListeners.has(n))return;const e=this.auth.onIdTokenChanged((e=>{n((null==e?void 0:e.stsTokenManager.accessToken)||null)}));this.internalListeners.set(n,e),this.updateProactiveRefresh()}removeAuthTokenListener(n){this.assertAuthConfigured();const e=this.internalListeners.get(n);e&&(this.internalListeners.delete(n),e(),this.updateProactiveRefresh())}assertAuthConfigured(){Rt(this.auth._initializationPromise,"dependent-sdk-initialized-before-auth")}updateProactiveRefresh(){this.internalListeners.size>0?this.auth._startProactiveRefresh():this.auth._stopProactiveRefresh()}}const vr=_("authIdTokenMaxAge")||300;let xr=null;function kr(n=Wn()){const e=Gn(n,"auth");if(e.isInitialized())return e.getImmediate();const t=function(n,e){const t=Gn(n,"auth");if(t.isInitialized()){const n=t.getImmediate();if(F(t.getOptions(),null!=e?e:{}))return n;It(n,"already-initialized")}return t.initialize({options:e})}(n,{popupRedirectResolver:pr,persistence:[Di,gi,bi]}),a=_("authTokenSyncURL");if(a&&"boolean"==typeof isSecureContext&&isSecureContext){const n=new URL(a,location.origin);if(location.origin===n.origin){const e=(i=n.toString(),async n=>{const e=n&&await n.getIdTokenResult(),t=e&&((new Date).getTime()-Date.parse(e.issuedAtTime))/1e3;if(t&&t>vr)return;const a=null==e?void 0:e.token;xr!==a&&(xr=a,await fetch(i,{method:a?"POST":"DELETE",headers:a?{Authorization:`Bearer ${a}`}:{}}))});!function(n,e,t){Q(n).beforeAuthStateChanged(e,t)}(t,e,(()=>e(t.currentUser))),function(n,t,a,i){Q(n).onIdTokenChanged((n=>e(n)),void 0,void 0)}(t)}}var i;const r=E("auth");return r&&function(n,e,t){const a=Pa(n);Rt(a._canInitEmulator,a,"emulator-config-failed"),Rt(/^https?:\/\//.test(e),a,"invalid-emulator-scheme");const i=!!(null==t?void 0:t.disableWarnings),r=Fa(e),{host:s,port:o}=function(n){const e=Fa(n),t=/(\/\/)?([^?#/]+)/.exec(n.substr(e.length));if(!t)return{host:"",port:null};const a=t[2].split("@").pop()||"",i=/^(\[[^\]]+\])(:|$)/.exec(a);if(i){const n=i[1];return{host:n,port:Ga(a.substr(n.length+1))}}{const[n,e]=a.split(":");return{host:n,port:Ga(e)}}}(e),l=null===o?"":`:${o}`;a.config.emulator={url:`${r}//${s}${l}/`},a.settings.appVerificationDisabledForTesting=!0,a.emulatorConfig=Object.freeze({host:s,port:o,protocol:r.replace(":",""),options:Object.freeze({disableWarnings:i})}),i||function(){function n(){const n=document.createElement("p"),e=n.style;n.innerText="Running in emulator mode. Do not use with production credentials.",e.position="fixed",e.width="100%",e.backgroundColor="#ffffff",e.border=".1em solid #000000",e.color="#b50000",e.bottom="0px",e.left="0px",e.margin="0px",e.zIndex="10000",e.textAlign="center",n.classList.add("firebase-emulator-warning"),document.body.appendChild(n)}"undefined"!=typeof console&&"function"==typeof console.info&&console.info("WARNING: You are using the Auth Emulator, which is intended for local testing only. Do not use with production credentials."),"undefined"!=typeof window&&"undefined"!=typeof document&&("loading"===document.readyState?window.addEventListener("DOMContentLoaded",n):n())}()}(t,`http://${r}`),t}var wr;Da={loadJS:n=>new Promise(((e,t)=>{const a=document.createElement("script");var i,r;a.setAttribute("src",n),a.onload=e,a.onerror=n=>{const e=Et("internal-error");e.customData=n,t(e)},a.type="text/javascript",a.charset="UTF-8",(null!==(r=null===(i=document.getElementsByTagName("head"))||void 0===i?void 0:i[0])&&void 0!==r?r:document).appendChild(a)})),gapiScript:"https://apis.google.com/js/api.js",recaptchaV2Script:"https://www.google.com/recaptcha/api.js",recaptchaEnterpriseScript:"https://www.google.com/recaptcha/enterprise.js?render="},wr="Browser",Fn(new X("auth",((n,{options:e})=>{const t=n.getProvider("app").getImmediate(),a=n.getProvider("heartbeat"),i=n.getProvider("app-check-internal"),{apiKey:r,authDomain:s}=t.options;Rt(r&&!r.includes(":"),"invalid-api-key",{appName:t.name});const o={apiKey:r,authDomain:s,clientPlatform:wr,apiHost:"identitytoolkit.googleapis.com",tokenApiHost:"securetoken.googleapis.com",apiScheme:"https",sdkClientVersion:Ia(wr)},l=new _a(t,a,i,o);return function(n,e){const t=(null==e?void 0:e.persistence)||[],a=(Array.isArray(t)?t:[t]).map(ha);(null==e?void 0:e.errorMap)&&n._updateErrorMap(e.errorMap),n._initializeWithPersistence(a,null==e?void 0:e.popupRedirectResolver)}(l,e),l}),"PUBLIC").setInstantiationMode("EXPLICIT").setInstanceCreatedCallback(((n,e,t)=>{n.getProvider("auth-internal").initialize()}))),Fn(new X("auth-internal",(n=>(n=>new br(n))(Pa(n.getProvider("auth").getImmediate()))),"PRIVATE").setInstantiationMode("EXPLICIT")),Kn(gr,yr,function(n){switch(n){case"Node":return"node";case"ReactNative":return"rn";case"Worker":return"webworker";case"Cordova":return"cordova";case"WebExtension":return"web-extension";default:return}}(wr)),Kn(gr,yr,"esm2017");var Cr,Sr,Ar="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},Tr={};(function(){var n;function e(){this.blockSize=-1,this.blockSize=64,this.g=Array(4),this.B=Array(this.blockSize),this.o=this.h=0,this.s()}function t(n,e,t){t||(t=0);var a=Array(16);if("string"==typeof e)for(var i=0;16>i;++i)a[i]=e.charCodeAt(t++)|e.charCodeAt(t++)<<8|e.charCodeAt(t++)<<16|e.charCodeAt(t++)<<24;else for(i=0;16>i;++i)a[i]=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24;e=n.g[0],t=n.g[1],i=n.g[2];var r=n.g[3],s=e+(r^t&(i^r))+a[0]+3614090360&4294967295;s=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=(t=(i=(r=(e=t+(s<<7&4294967295|s>>>25))+((s=r+(i^e&(t^i))+a[1]+3905402710&4294967295)<<12&4294967295|s>>>20))+((s=i+(t^r&(e^t))+a[2]+606105819&4294967295)<<17&4294967295|s>>>15))+((s=t+(e^i&(r^e))+a[3]+3250441966&4294967295)<<22&4294967295|s>>>10))+((s=e+(r^t&(i^r))+a[4]+4118548399&4294967295)<<7&4294967295|s>>>25))+((s=r+(i^e&(t^i))+a[5]+1200080426&4294967295)<<12&4294967295|s>>>20))+((s=i+(t^r&(e^t))+a[6]+2821735955&4294967295)<<17&4294967295|s>>>15))+((s=t+(e^i&(r^e))+a[7]+4249261313&4294967295)<<22&4294967295|s>>>10))+((s=e+(r^t&(i^r))+a[8]+1770035416&4294967295)<<7&4294967295|s>>>25))+((s=r+(i^e&(t^i))+a[9]+2336552879&4294967295)<<12&4294967295|s>>>20))+((s=i+(t^r&(e^t))+a[10]+4294925233&4294967295)<<17&4294967295|s>>>15))+((s=t+(e^i&(r^e))+a[11]+2304563134&4294967295)<<22&4294967295|s>>>10))+((s=e+(r^t&(i^r))+a[12]+1804603682&4294967295)<<7&4294967295|s>>>25))+((s=r+(i^e&(t^i))+a[13]+4254626195&4294967295)<<12&4294967295|s>>>20))+((s=i+(t^r&(e^t))+a[14]+2792965006&4294967295)<<17&4294967295|s>>>15))+((s=t+(e^i&(r^e))+a[15]+1236535329&4294967295)<<22&4294967295|s>>>10))+((s=e+(i^r&(t^i))+a[1]+4129170786&4294967295)<<5&4294967295|s>>>27))+((s=r+(t^i&(e^t))+a[6]+3225465664&4294967295)<<9&4294967295|s>>>23))+((s=i+(e^t&(r^e))+a[11]+643717713&4294967295)<<14&4294967295|s>>>18))+((s=t+(r^e&(i^r))+a[0]+3921069994&4294967295)<<20&4294967295|s>>>12))+((s=e+(i^r&(t^i))+a[5]+3593408605&4294967295)<<5&4294967295|s>>>27))+((s=r+(t^i&(e^t))+a[10]+38016083&4294967295)<<9&4294967295|s>>>23))+((s=i+(e^t&(r^e))+a[15]+3634488961&4294967295)<<14&4294967295|s>>>18))+((s=t+(r^e&(i^r))+a[4]+3889429448&4294967295)<<20&4294967295|s>>>12))+((s=e+(i^r&(t^i))+a[9]+568446438&4294967295)<<5&4294967295|s>>>27))+((s=r+(t^i&(e^t))+a[14]+3275163606&4294967295)<<9&4294967295|s>>>23))+((s=i+(e^t&(r^e))+a[3]+4107603335&4294967295)<<14&4294967295|s>>>18))+((s=t+(r^e&(i^r))+a[8]+1163531501&4294967295)<<20&4294967295|s>>>12))+((s=e+(i^r&(t^i))+a[13]+2850285829&4294967295)<<5&4294967295|s>>>27))+((s=r+(t^i&(e^t))+a[2]+4243563512&4294967295)<<9&4294967295|s>>>23))+((s=i+(e^t&(r^e))+a[7]+1735328473&4294967295)<<14&4294967295|s>>>18))+((s=t+(r^e&(i^r))+a[12]+2368359562&4294967295)<<20&4294967295|s>>>12))+((s=e+(t^i^r)+a[5]+4294588738&4294967295)<<4&4294967295|s>>>28))+((s=r+(e^t^i)+a[8]+2272392833&4294967295)<<11&4294967295|s>>>21))+((s=i+(r^e^t)+a[11]+1839030562&4294967295)<<16&4294967295|s>>>16))+((s=t+(i^r^e)+a[14]+4259657740&4294967295)<<23&4294967295|s>>>9))+((s=e+(t^i^r)+a[1]+2763975236&4294967295)<<4&4294967295|s>>>28))+((s=r+(e^t^i)+a[4]+1272893353&4294967295)<<11&4294967295|s>>>21))+((s=i+(r^e^t)+a[7]+4139469664&4294967295)<<16&4294967295|s>>>16))+((s=t+(i^r^e)+a[10]+3200236656&4294967295)<<23&4294967295|s>>>9))+((s=e+(t^i^r)+a[13]+681279174&4294967295)<<4&4294967295|s>>>28))+((s=r+(e^t^i)+a[0]+3936430074&4294967295)<<11&4294967295|s>>>21))+((s=i+(r^e^t)+a[3]+3572445317&4294967295)<<16&4294967295|s>>>16))+((s=t+(i^r^e)+a[6]+76029189&4294967295)<<23&4294967295|s>>>9))+((s=e+(t^i^r)+a[9]+3654602809&4294967295)<<4&4294967295|s>>>28))+((s=r+(e^t^i)+a[12]+3873151461&4294967295)<<11&4294967295|s>>>21))+((s=i+(r^e^t)+a[15]+530742520&4294967295)<<16&4294967295|s>>>16))+((s=t+(i^r^e)+a[2]+3299628645&4294967295)<<23&4294967295|s>>>9))+((s=e+(i^(t|~r))+a[0]+4096336452&4294967295)<<6&4294967295|s>>>26))+((s=r+(t^(e|~i))+a[7]+1126891415&4294967295)<<10&4294967295|s>>>22))+((s=i+(e^(r|~t))+a[14]+2878612391&4294967295)<<15&4294967295|s>>>17))+((s=t+(r^(i|~e))+a[5]+4237533241&4294967295)<<21&4294967295|s>>>11))+((s=e+(i^(t|~r))+a[12]+1700485571&4294967295)<<6&4294967295|s>>>26))+((s=r+(t^(e|~i))+a[3]+2399980690&4294967295)<<10&4294967295|s>>>22))+((s=i+(e^(r|~t))+a[10]+4293915773&4294967295)<<15&4294967295|s>>>17))+((s=t+(r^(i|~e))+a[1]+2240044497&4294967295)<<21&4294967295|s>>>11))+((s=e+(i^(t|~r))+a[8]+1873313359&4294967295)<<6&4294967295|s>>>26))+((s=r+(t^(e|~i))+a[15]+4264355552&4294967295)<<10&4294967295|s>>>22))+((s=i+(e^(r|~t))+a[6]+2734768916&4294967295)<<15&4294967295|s>>>17))+((s=t+(r^(i|~e))+a[13]+1309151649&4294967295)<<21&4294967295|s>>>11))+((r=(e=t+((s=e+(i^(t|~r))+a[4]+4149444226&4294967295)<<6&4294967295|s>>>26))+((s=r+(t^(e|~i))+a[11]+3174756917&4294967295)<<10&4294967295|s>>>22))^((i=r+((s=i+(e^(r|~t))+a[2]+718787259&4294967295)<<15&4294967295|s>>>17))|~e))+a[9]+3951481745&4294967295,n.g[0]=n.g[0]+e&4294967295,n.g[1]=n.g[1]+(i+(s<<21&4294967295|s>>>11))&4294967295,n.g[2]=n.g[2]+i&4294967295,n.g[3]=n.g[3]+r&4294967295}function a(n,e){this.h=e;for(var t=[],a=!0,i=n.length-1;0<=i;i--){var r=0|n[i];a&&r==e||(t[i]=r,a=!1)}this.g=t}!function(n,e){function t(){}t.prototype=e.prototype,n.D=e.prototype,n.prototype=new t,n.prototype.constructor=n,n.C=function(n,t,a){for(var i=Array(arguments.length-2),r=2;rthis.h?this.blockSize:2*this.blockSize)-this.h);n[0]=128;for(var e=1;ee;++e)for(var a=0;32>a;a+=8)n[t++]=this.g[e]>>>a&255;return n};var i={};function r(n){return-128<=n&&128>n?function(n,e){var t=i;return Object.prototype.hasOwnProperty.call(t,n)?t[n]:t[n]=function(n){return new a([0|n],0>n?-1:0)}(n)}(n):new a([0|n],0>n?-1:0)}function s(n){if(isNaN(n)||!isFinite(n))return o;if(0>n)return h(s(-n));for(var e=[],t=1,i=0;n>=t;i++)e[i]=n/t|0,t*=4294967296;return new a(e,0)}var o=r(0),l=r(1),c=r(16777216);function u(n){if(0!=n.h)return!1;for(var e=0;e>>16,n[e]&=65535,e++}function p(n,e){this.g=n,this.h=e}function g(n,e){if(u(e))throw Error("division by zero");if(u(n))return new p(o,o);if(d(n))return e=g(h(n),e),new p(h(e.g),h(e.h));if(d(e))return e=g(n,h(e)),new p(h(e.g),e.h);if(30=a.l(n);)t=y(t),a=y(a);var i=b(t,1),r=b(a,1);for(a=b(a,2),t=b(t,2);!u(a);){var c=r.add(a);0>=c.l(n)&&(i=i.add(t),r=c),a=b(a,1),t=b(t,1)}return e=f(n,i.j(e)),new p(i,e)}for(i=o;0<=n.l(e);){for(t=Math.max(1,Math.floor(n.m()/e.m())),a=48>=(a=Math.ceil(Math.log(t)/Math.LN2))?1:Math.pow(2,a-48),c=(r=s(t)).j(e);d(c)||0>>31;return new a(t,n.h)}function b(n,e){var t=e>>5;e%=32;for(var i=n.g.length-t,r=[],s=0;s>>e|n.i(s+t+1)<<32-e:n.i(s+t);return new a(r,n.h)}(n=a.prototype).m=function(){if(d(this))return-h(this).m();for(var n=0,e=1,t=0;t(n=n||10)||36>>0).toString(n);if(u(t=i))return r+a;for(;6>r.length;)r="0"+r;a=r+a}},n.i=function(n){return 0>n?0:n>>16)+(this.i(r)>>>16)+(n.i(r)>>>16);i=o>>>16,s&=65535,o&=65535,t[r]=o<<16|s}return new a(t,-2147483648&t[t.length-1]?-1:0)},n.j=function(n){if(u(this)||u(n))return o;if(d(this))return d(n)?h(this).j(h(n)):h(h(this).j(n));if(d(n))return h(this.j(h(n)));if(0>this.l(c)&&0>n.l(c))return s(this.m()*n.m());for(var e=this.g.length+n.g.length,t=[],i=0;i<2*e;i++)t[i]=0;for(i=0;i>>16,f=65535&this.i(i),p=n.i(r)>>>16,g=65535&n.i(r);t[2*i+2*r]+=f*g,m(t,2*i+2*r),t[2*i+2*r+1]+=l*g,m(t,2*i+2*r+1),t[2*i+2*r+1]+=f*p,m(t,2*i+2*r+1),t[2*i+2*r+2]+=l*p,m(t,2*i+2*r+2)}for(i=0;i(t=t||10)||36l?(l=s(Math.pow(t,l)),i=i.j(l).add(s(c))):i=(i=i.j(a)).add(s(c))}return i},Cr=Tr.Integer=a}).apply(void 0!==Ar?Ar:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{});var Ir,Er,Mr,_r,Pr,Rr,Dr,Lr,Nr,Br="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},zr={};(function(){var n,e="function"==typeof Object.defineProperties?Object.defineProperty:function(n,e,t){return n==Array.prototype||n==Object.prototype||(n[e]=t.value),n},t=function(n){n=["object"==typeof globalThis&&globalThis,n,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof Br&&Br];for(var e=0;e{throw n}),0)}function S(){var n=M;let e=null;return n.g&&(e=n.g,n.g=n.g.next,n.g||(n.h=null),e.next=null),e}var A=new class{constructor(n,e){this.i=n,this.j=e,this.h=0,this.g=null}get(){let n;return 0new T),(n=>n.reset()));class T{constructor(){this.next=this.g=this.h=null}set(n,e){this.h=n,this.g=e,this.next=null}reset(){this.next=this.g=this.h=null}}let I,E=!1,M=new class{constructor(){this.h=this.g=null}add(n,e){const t=A.get();t.set(n,e),this.h?this.h.next=t:this.g=t,this.h=t}},_=()=>{const n=i.Promise.resolve(void 0);I=()=>{n.then(P)}};var P=()=>{for(var n;n=S();){try{n.h.call(n.g)}catch(n){C(n)}var e=A;e.j(n),100>e.h&&(e.h++,n.next=e.g,e.g=n)}E=!1};function R(){this.s=this.s,this.C=this.C}function D(n,e){this.type=n,this.g=this.target=e,this.defaultPrevented=!1}R.prototype.s=!1,R.prototype.ma=function(){this.s||(this.s=!0,this.N())},R.prototype.N=function(){if(this.C)for(;this.C.length;)this.C.shift()()},D.prototype.h=function(){this.defaultPrevented=!0};var L=function(){if(!i.addEventListener||!Object.defineProperty)return!1;var n=!1,e=Object.defineProperty({},"passive",{get:function(){n=!0}});try{const n=()=>{};i.addEventListener("test",n,e),i.removeEventListener("test",n,e)}catch(n){}return n}();function N(n,e){if(D.call(this,n?n.type:""),this.relatedTarget=this.g=this.target=null,this.button=this.screenY=this.screenX=this.clientY=this.clientX=0,this.key="",this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1,this.state=null,this.pointerId=0,this.pointerType="",this.i=null,n){var t=this.type=n.type,a=n.changedTouches&&n.changedTouches.length?n.changedTouches[0]:null;if(this.target=n.target||n.srcElement,this.g=e,e=n.relatedTarget){if(y){n:{try{g(e.nodeName);var i=!0;break n}catch(n){}i=!1}i||(e=null)}}else"mouseover"==t?e=n.fromElement:"mouseout"==t&&(e=n.toElement);this.relatedTarget=e,a?(this.clientX=void 0!==a.clientX?a.clientX:a.pageX,this.clientY=void 0!==a.clientY?a.clientY:a.pageY,this.screenX=a.screenX||0,this.screenY=a.screenY||0):(this.clientX=void 0!==n.clientX?n.clientX:n.pageX,this.clientY=void 0!==n.clientY?n.clientY:n.pageY,this.screenX=n.screenX||0,this.screenY=n.screenY||0),this.button=n.button,this.key=n.key||"",this.ctrlKey=n.ctrlKey,this.altKey=n.altKey,this.shiftKey=n.shiftKey,this.metaKey=n.metaKey,this.pointerId=n.pointerId||0,this.pointerType="string"==typeof n.pointerType?n.pointerType:B[n.pointerType]||"",this.state=n.state,this.i=n,n.defaultPrevented&&N.aa.h.call(this)}}d(N,D);var B={2:"touch",3:"pen",4:"mouse"};N.prototype.h=function(){N.aa.h.call(this);var n=this.i;n.preventDefault?n.preventDefault():n.returnValue=!1};var z="closure_listenable_"+(1e6*Math.random()|0),O=0;function F(n,e,t,a,i){this.listener=n,this.proxy=null,this.src=e,this.type=t,this.capture=!!a,this.ha=i,this.key=++O,this.da=this.fa=!1}function G(n){n.da=!0,n.listener=null,n.proxy=null,n.src=null,n.ha=null}function j(n){this.src=n,this.g={},this.h=0}function U(n,e){var t=e.type;if(t in n.g){var a,i=n.g[t],r=Array.prototype.indexOf.call(i,e,void 0);(a=0<=r)&&Array.prototype.splice.call(i,r,1),a&&(G(e),0==n.g[t].length&&(delete n.g[t],n.h--))}}function V(n,e,t,a){for(var i=0;i>>0);function en(n){return"function"==typeof n?n:(n[nn]||(n[nn]=function(e){return n.handleEvent(e)}),n[nn])}function tn(){R.call(this),this.i=new j(this),this.M=this,this.F=null}function an(n,e){var t,a=n.F;if(a)for(t=[];a;a=a.F)t.push(a);if(n=n.M,a=e.type||e,"string"==typeof e)e=new D(e,n);else if(e instanceof D)e.target=e.target||n;else{var i=e;k(e=new D(a,n),i)}if(i=!0,t)for(var r=t.length-1;0<=r;r--){var s=e.g=t[r];i=rn(s,a,!0,e)&&i}if(i=rn(s=e.g=n,a,!0,e)&&i,i=rn(s,a,!1,e)&&i,t)for(r=0;r{n.g=null,n.i&&(n.i=!1,on(n))}),n.l);const e=n.h;n.h=null,n.m.apply(null,e)}d(tn,R),tn.prototype[z]=!0,tn.prototype.removeEventListener=function(n,e,t,a){$(this,n,e,t,a)},tn.prototype.N=function(){if(tn.aa.N.call(this),this.i){var n,e=this.i;for(n in e.g){for(var t=e.g[n],a=0;aa.length)){var i=a[1];if(Array.isArray(i)&&!(1>i.length)){var r=i[0];if("noop"!=r&&"stop"!=r&&"close"!=r)for(var s=1;se.length?Fn:(e=e.slice(a,a+t),n.C=a+t,e))}function Hn(n){n.S=Date.now()+n.I,qn(n,n.I)}function qn(n,e){if(null!=n.B)throw Error("WatchDog timer not null");n.B=Mn(c(n.ba,n),e)}function Wn(n){n.B&&(i.clearTimeout(n.B),n.B=null)}function Kn(n){0==n.j.G||n.J||ot(n.j,n)}function Jn(n){Wn(n);var e=n.M;e&&"function"==typeof e.ma&&e.ma(),n.M=null,dn(n.U),n.g&&(e=n.g,n.g=null,e.abort(),e.ma())}function $n(n,e){try{var t=n.j;if(0!=t.G&&(t.g==n||Zn(t.h,n)))if(!n.K&&Zn(t.h,n)&&3==t.G){try{var a=t.Da.g.parse(e)}catch(n){a=null}if(Array.isArray(a)&&3==a.length){var i=a;if(0==i[0]){n:if(!t.u){if(t.g){if(!(t.g.F+3e3i[2]&&t.F&&0==t.v&&!t.C&&(t.C=Mn(c(t.Za,t),6e3));if(1>=Xn(t.h)&&t.ca){try{t.ca()}catch(n){}t.ca=void 0}}else ct(t,11)}else if((n.K||t.g==n)&&st(t),!m(e))for(i=t.Da.g.parse(e),e=0;e=n.j}function Xn(n){return n.h?1:n.g?n.g.size:0}function Zn(n,e){return n.h?n.h==e:!!n.g&&n.g.has(e)}function ne(n,e){n.g?n.g.add(e):n.h=e}function ee(n,e){n.h&&n.h==e?n.h=null:n.g&&n.g.has(e)&&n.g.delete(e)}function te(n){if(null!=n.h)return n.i.concat(n.h.D);if(null!=n.g&&0!==n.g.size){let e=n.i;for(const t of n.g.values())e=e.concat(t.D);return e}return h(n.i)}function ae(n,e){if(n.forEach&&"function"==typeof n.forEach)n.forEach(e,void 0);else if(r(n)||"string"==typeof n)Array.prototype.forEach.call(n,e,void 0);else for(var t=function(n){if(n.na&&"function"==typeof n.na)return n.na();if(!n.V||"function"!=typeof n.V){if("undefined"!=typeof Map&&n instanceof Map)return Array.from(n.keys());if(!("undefined"!=typeof Set&&n instanceof Set)){if(r(n)||"string"==typeof n){var e=[];n=n.length;for(var t=0;th)&&(3!=h||this.g&&(this.h.h||this.g.oa()||We(this.g)))){this.J||4!=h||7==e||An(),Wn(this);var t=this.g.Z();this.X=t;e:if(Un(this)){var a=We(this.g);n="";var r=a.length,s=4==qe(this.g);if(!this.h.i){if("undefined"==typeof TextDecoder){Jn(this),Kn(this);var o="";break e}this.h.i=new i.TextDecoder}for(e=0;ee)throw Error("Bad port number "+e);n.s=e}else n.s=null}function ce(n,e,t){e instanceof ke?(n.i=e,function(n,e){e&&!n.j&&(we(n),n.i=null,n.g.forEach((function(n,e){var t=e.toLowerCase();e!=t&&(Ce(this,e),Ae(this,t,n))}),n)),n.j=e}(n.i,n.h)):(t||(e=fe(e,ve)),n.i=new ke(e,n.h))}function ue(n,e,t){n.i.set(e,t)}function de(n){return ue(n,"zx",Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^Date.now()).toString(36)),n}function he(n,e){return n?e?decodeURI(n.replace(/%25/g,"%2525")):decodeURIComponent(n):""}function fe(n,e,t){return"string"==typeof n?(n=encodeURI(n).replace(e,me),t&&(n=n.replace(/%25([0-9a-fA-F]{2})/g,"%$1")),n):null}function me(n){return"%"+((n=n.charCodeAt(0))>>4&15).toString(16)+(15&n).toString(16)}re.prototype.toString=function(){var n=[],e=this.j;e&&n.push(fe(e,ge,!0),":");var t=this.g;return(t||"file"==e)&&(n.push("//"),(e=this.o)&&n.push(fe(e,ge,!0),"@"),n.push(encodeURIComponent(String(t)).replace(/%25([0-9a-fA-F]{2})/g,"%$1")),null!=(t=this.s)&&n.push(":",String(t))),(t=this.l)&&(this.g&&"/"!=t.charAt(0)&&n.push("/"),n.push(fe(t,"/"==t.charAt(0)?be:ye,!0))),(t=this.i.toString())&&n.push("?",t),(t=this.m)&&n.push("#",fe(t,xe)),n.join("")};var pe,ge=/[#\/\?@]/g,ye=/[#\?:]/g,be=/[#\?]/g,ve=/[#\?@]/g,xe=/#/g;function ke(n,e){this.h=this.g=null,this.i=n||null,this.j=!!e}function we(n){n.g||(n.g=new Map,n.h=0,n.i&&function(n,e){if(n){n=n.split("&");for(var t=0;t{})),1<=this.readyState&&this.g&&4!=this.readyState&&(this.g=!1,De(this)),this.readyState=0},n.Sa=function(n){if(this.g&&(this.l=n,this.h||(this.status=this.l.status,this.statusText=this.l.statusText,this.h=n.headers,this.readyState=2,Le(this)),this.g&&(this.readyState=3,Le(this),this.g)))if("arraybuffer"===this.responseType)n.arrayBuffer().then(this.Qa.bind(this),this.ga.bind(this));else if(void 0!==i.ReadableStream&&"body"in n){if(this.j=n.body.getReader(),this.o){if(this.responseType)throw Error('responseType must be empty for "streamBinaryChunks" mode responses.');this.response=[]}else this.response=this.responseText="",this.v=new TextDecoder;Re(this)}else n.text().then(this.Ra.bind(this),this.ga.bind(this))},n.Pa=function(n){if(this.g){if(this.o&&n.value)this.response.push(n.value);else if(!this.o){var e=n.value?n.value:new Uint8Array(0);(e=this.v.decode(e,{stream:!n.done}))&&(this.response=this.responseText+=e)}n.done?De(this):Le(this),3==this.readyState&&Re(this)}},n.Ra=function(n){this.g&&(this.response=this.responseText=n,De(this))},n.Qa=function(n){this.g&&(this.response=n,De(this))},n.ga=function(){this.g&&De(this)},n.setRequestHeader=function(n,e){this.u.append(n,e)},n.getResponseHeader=function(n){return this.h&&this.h.get(n.toLowerCase())||""},n.getAllResponseHeaders=function(){if(!this.h)return"";const n=[],e=this.h.entries();for(var t=e.next();!t.done;)t=t.value,n.push(t[0]+": "+t[1]),t=e.next();return n.join("\r\n")},Object.defineProperty(Pe.prototype,"withCredentials",{get:function(){return"include"===this.m},set:function(n){this.m=n?"include":"same-origin"}}),d(ze,tn);var Oe=/^https?$/i,Fe=["POST","PUT"];function Ge(n,e){n.h=!1,n.g&&(n.j=!0,n.g.abort(),n.j=!1),n.l=e,n.m=5,je(n),Ve(n)}function je(n){n.A||(n.A=!0,an(n,"complete"),an(n,"error"))}function Ue(n){if(n.h&&void 0!==a&&(!n.v[1]||4!=qe(n)||2!=n.Z()))if(n.u&&4==qe(n))sn(n.Ea,0,n);else if(an(n,"readystatechange"),4==qe(n)){n.h=!1;try{const a=n.Z();n:switch(a){case 200:case 201:case 202:case 204:case 206:case 304:case 1223:var e=!0;break n;default:e=!1}var t;if(!(t=e)){var r;if(r=0===a){var s=String(n.D).match(ie)[1]||null;!s&&i.self&&i.self.location&&(s=i.self.location.protocol.slice(0,-1)),r=!Oe.test(s?s.toLowerCase():"")}t=r}if(t)an(n,"complete"),an(n,"success");else{n.m=6;try{var o=2{}:null;n.g=null,n.v=null,e||an(n,"ready");try{t.onreadystatechange=a}catch(n){}}}function He(n){n.I&&(i.clearTimeout(n.I),n.I=null)}function qe(n){return n.g?n.g.readyState:0}function We(n){try{if(!n.g)return null;if("response"in n.g)return n.g.response;switch(n.H){case"":case"text":return n.g.responseText;case"arraybuffer":if("mozResponseArrayBuffer"in n.g)return n.g.mozResponseArrayBuffer}return null}catch(n){return null}}function Ke(n,e,t){return t&&t.internalChannelParams&&t.internalChannelParams[n]||e}function Je(n){this.Aa=0,this.i=[],this.j=new _n,this.ia=this.qa=this.I=this.W=this.g=this.ya=this.D=this.H=this.m=this.S=this.o=null,this.Ya=this.U=0,this.Va=Ke("failFast",!1,n),this.F=this.C=this.u=this.s=this.l=null,this.X=!0,this.za=this.T=-1,this.Y=this.v=this.B=0,this.Ta=Ke("baseRetryDelayMs",5e3,n),this.cb=Ke("retryDelaySeedMs",1e4,n),this.Wa=Ke("forwardChannelMaxRetries",2,n),this.wa=Ke("forwardChannelRequestTimeoutMs",2e4,n),this.pa=n&&n.xmlHttpFactory||void 0,this.Xa=n&&n.Tb||void 0,this.Ca=n&&n.useFetchStreams||!1,this.L=void 0,this.J=n&&n.supportsCrossDomainXhr||!1,this.K="",this.h=new Yn(n&&n.concurrentRequestLimit),this.Da=new Ee,this.P=n&&n.fastHandshake||!1,this.O=n&&n.encodeInitMessageHeaders||!1,this.P&&this.O&&(this.O=!1),this.Ua=n&&n.Rb||!1,n&&n.xa&&this.j.xa(),n&&n.forceLongPolling&&(this.X=!1),this.ba=!this.P&&this.X&&n&&n.detectBufferingProxy||!1,this.ja=void 0,n&&n.longPollingTimeout&&0t)e=Math.max(0,i[s].g-100),r=!1;else try{Me(o,n,"req"+t+"_")}catch(n){a&&a(o)}}if(r){a=n.join("&");break n}}}return n=n.i.splice(0,t),e.D=n,a}function tt(n){if(!n.g&&!n.u){n.Y=1;var e=n.Fa;I||_(),E||(I(),E=!0),M.add(e,n),n.v=0}}function at(n){return!(n.g||n.u||3<=n.v||(n.Y++,n.u=Mn(c(n.Fa,n),lt(n,n.v)),n.v++,0))}function it(n){null!=n.A&&(i.clearTimeout(n.A),n.A=null)}function rt(n){n.g=new Bn(n,n.j,"rpc",n.Y),null===n.m&&(n.g.H=n.o),n.g.O=0;var e=se(n.qa);ue(e,"RID","rpc"),ue(e,"SID",n.K),ue(e,"AID",n.T),ue(e,"CI",n.F?"0":"1"),!n.F&&n.ja&&ue(e,"TO",n.ja),ue(e,"TYPE","xmlhttp"),nt(n,e),n.m&&n.o&&Be(e,n.m,n.o),n.L&&(n.g.I=n.L);var t=n.g;n=n.ia,t.L=1,t.v=de(se(e)),t.m=null,t.P=!0,jn(t,n)}function st(n){null!=n.C&&(i.clearTimeout(n.C),n.C=null)}function ot(n,e){var t=null;if(n.g==e){st(n),it(n),n.g=null;var a=2}else{if(!Zn(n.h,e))return;t=e.D,ee(n.h,e),a=1}if(0!=n.G)if(e.o)if(1==a){t=e.m?e.m.length:0,e=Date.now()-e.F;var i=n.B;an(a=Cn(),new En(a,t)),Xe(n)}else tt(n);else if(3==(i=e.s)||0==i&&0=n.h.j-(n.s?1:0)||(n.s?(n.i=e.D.concat(n.i),0):1==n.G||2==n.G||n.B>=(n.Va?0:n.Wa)||(n.s=Mn(c(n.Ga,n,e),lt(n,n.B)),n.B++,0)))}(n,e)||2==a&&at(n)))switch(t&&0{t.abort(),Ie(0,0,!1,e)}),1e4);fetch(n,{signal:t.signal}).then((n=>{clearTimeout(a),n.ok?Ie(0,0,!0,e):Ie(0,0,!1,e)})).catch((()=>{clearTimeout(a),Ie(0,0,!1,e)}))}(a.toString(),t)}else In(2);n.G=0,n.l&&n.l.sa(e),ut(n),Qe(n)}function ut(n){if(n.G=0,n.ka=[],n.l){const e=te(n.h);0==e.length&&0==n.i.length||(f(n.ka,e),f(n.ka,n.i),n.h.i.length=0,h(n.i),n.i.length=0),n.l.ra()}}function dt(n,e,t){var a=t instanceof re?se(t):new re(t);if(""!=a.g)e&&(a.g=e+"."+a.g),le(a,a.s);else{var r=i.location;a=r.protocol,e=e?e+"."+r.hostname:r.hostname,r=+r.port;var s=new re(null);a&&oe(s,a),e&&(s.g=e),r&&le(s,r),t&&(s.l=t),a=s}return t=n.D,e=n.ya,t&&e&&ue(a,t,e),ue(a,"VER",n.la),nt(n,a),a}function ht(n,e,t){if(e&&!n.J)throw Error("Can't create secondary domain capable XhrIo object.");return(e=n.Ca&&!n.pa?new ze(new _e({eb:t})):new ze(n.pa)).Ha(n.J),e}function ft(){}function mt(){}function pt(n,e){tn.call(this),this.g=new Je(e),this.l=n,this.h=e&&e.messageUrlParams||null,n=e&&e.messageHeaders||null,e&&e.clientProtocolHeaderRequired&&(n?n["X-Client-Protocol"]="webchannel":n={"X-Client-Protocol":"webchannel"}),this.g.o=n,n=e&&e.initMessageHeaders||null,e&&e.messageContentType&&(n?n["X-WebChannel-Content-Type"]=e.messageContentType:n={"X-WebChannel-Content-Type":e.messageContentType}),e&&e.va&&(n?n["X-WebChannel-Client-Profile"]=e.va:n={"X-WebChannel-Client-Profile":e.va}),this.g.S=n,(n=e&&e.Sb)&&!m(n)&&(this.g.m=n),this.v=e&&e.supportsCrossDomainXhr||!1,this.u=e&&e.sendRawJson||!1,(e=e&&e.httpSessionIdParam)&&!m(e)&&(this.g.D=e,null!==(n=this.h)&&e in n&&e in(n=this.h)&&delete n[e]),this.j=new bt(this)}function gt(n){vn.call(this),n.__headers__&&(this.headers=n.__headers__,this.statusCode=n.__status__,delete n.__headers__,delete n.__status__);var e=n.__sm__;if(e){n:{for(const t in e){n=t;break n}n=void 0}(this.i=n)&&(n=this.i,e=null!==e&&n in e?e[n]:void 0),this.data=e}else this.data=n}function yt(){xn.call(this),this.status=1}function bt(n){this.g=n}(n=ze.prototype).Ha=function(n){this.J=n},n.ea=function(n,e,t,a){if(this.g)throw Error("[goog.net.XhrIo] Object is active with another request="+this.D+"; newUri="+n);e=e?e.toUpperCase():"GET",this.D=n,this.l="",this.m=0,this.A=!1,this.h=!0,this.g=this.o?this.o.g():Rn.g(),this.v=this.o?gn(this.o):gn(Rn),this.g.onreadystatechange=c(this.Ea,this);try{this.B=!0,this.g.open(e,String(n),!0),this.B=!1}catch(n){return void Ge(this,n)}if(n=t||"",t=new Map(this.headers),a)if(Object.getPrototypeOf(a)===Object.prototype)for(var r in a)t.set(r,a[r]);else{if("function"!=typeof a.keys||"function"!=typeof a.get)throw Error("Unknown input type for opt_headers: "+String(a));for(const n of a.keys())t.set(n,a.get(n))}a=Array.from(t.keys()).find((n=>"content-type"==n.toLowerCase())),r=i.FormData&&n instanceof i.FormData,!(0<=Array.prototype.indexOf.call(Fe,e,void 0))||a||r||t.set("Content-Type","application/x-www-form-urlencoded;charset=utf-8");for(const[n,e]of t)this.g.setRequestHeader(n,e);this.H&&(this.g.responseType=this.H),"withCredentials"in this.g&&this.g.withCredentials!==this.J&&(this.g.withCredentials=this.J);try{He(this),this.u=!0,this.g.send(n),this.u=!1}catch(n){Ge(this,n)}},n.abort=function(n){this.g&&this.h&&(this.h=!1,this.j=!0,this.g.abort(),this.j=!1,this.m=n||7,an(this,"complete"),an(this,"abort"),Ve(this))},n.N=function(){this.g&&(this.h&&(this.h=!1,this.j=!0,this.g.abort(),this.j=!1),Ve(this,!0)),ze.aa.N.call(this)},n.Ea=function(){this.s||(this.B||this.u||this.j?Ue(this):this.bb())},n.bb=function(){Ue(this)},n.isActive=function(){return!!this.g},n.Z=function(){try{return 2=this.R)){var n=2*this.R;this.j.info("BP detection timer enabled: "+n),this.A=Mn(c(this.ab,this),n)}},n.ab=function(){this.A&&(this.A=null,this.j.info("BP detection timeout reached."),this.j.info("Buffering proxy detected and switch to long-polling!"),this.F=!1,this.M=!0,In(10),Ye(this),rt(this))},n.Za=function(){null!=this.C&&(this.C=null,Ye(this),at(this),In(19))},n.fb=function(n){n?(this.j.info("Successfully pinged google.com"),In(2)):(this.j.info("Failed to ping google.com"),In(1))},n.isActive=function(){return!!this.l&&this.l.isActive(this)},(n=ft.prototype).ua=function(){},n.ta=function(){},n.sa=function(){},n.ra=function(){},n.isActive=function(){return!0},n.Na=function(){},mt.prototype.g=function(n,e){return new pt(n,e)},d(pt,tn),pt.prototype.m=function(){this.g.l=this.j,this.v&&(this.g.J=!0),this.g.connect(this.l,this.h||void 0)},pt.prototype.close=function(){$e(this.g)},pt.prototype.o=function(n){var e=this.g;if("string"==typeof n){var t={};t.__data__=n,n=t}else this.u&&((t={}).__data__=hn(n),n=t);e.i.push(new class{constructor(n,e){this.g=n,this.map=e}}(e.Ya++,n)),3==e.G&&Xe(e)},pt.prototype.N=function(){this.g.l=null,delete this.j,$e(this.g),delete this.g,pt.aa.N.call(this)},d(gt,vn),d(yt,xn),d(bt,ft),bt.prototype.ua=function(){an(this.g,"a")},bt.prototype.ta=function(n){an(this.g,new gt(n))},bt.prototype.sa=function(n){an(this.g,new yt)},bt.prototype.ra=function(){an(this.g,"b")},mt.prototype.createWebChannel=mt.prototype.g,pt.prototype.send=pt.prototype.o,pt.prototype.open=pt.prototype.m,pt.prototype.close=pt.prototype.close,Nr=zr.createWebChannelTransport=function(){return new mt},Lr=zr.getStatEventTarget=function(){return Cn()},Dr=zr.Event=kn,Rr=zr.Stat={mb:0,pb:1,qb:2,Jb:3,Ob:4,Lb:5,Mb:6,Kb:7,Ib:8,Nb:9,PROXY:10,NOPROXY:11,Gb:12,Cb:13,Db:14,Bb:15,Eb:16,Fb:17,ib:18,hb:19,jb:20},Dn.NO_ERROR=0,Dn.TIMEOUT=8,Dn.HTTP_ERROR=6,Pr=zr.ErrorCode=Dn,Ln.COMPLETE="complete",_r=zr.EventType=Ln,yn.EventType=bn,bn.OPEN="a",bn.CLOSE="b",bn.ERROR="c",bn.MESSAGE="d",tn.prototype.listen=tn.prototype.K,Mr=zr.WebChannel=yn,Er=zr.FetchXmlHttpFactory=_e,ze.prototype.listenOnce=ze.prototype.L,ze.prototype.getLastError=ze.prototype.Ka,ze.prototype.getLastErrorCode=ze.prototype.Ba,ze.prototype.getStatus=ze.prototype.Z,ze.prototype.getResponseJson=ze.prototype.Oa,ze.prototype.getResponseText=ze.prototype.oa,ze.prototype.send=ze.prototype.ea,ze.prototype.setWithCredentials=ze.prototype.Ha,Ir=zr.XhrIo=ze}).apply(void 0!==Br?Br:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{});const Or="@firebase/firestore";class Fr{constructor(n){this.uid=n}isAuthenticated(){return null!=this.uid}toKey(){return this.isAuthenticated()?"uid:"+this.uid:"anonymous-user"}isEqual(n){return n.uid===this.uid}}Fr.UNAUTHENTICATED=new Fr(null),Fr.GOOGLE_CREDENTIALS=new Fr("google-credentials-uid"),Fr.FIRST_PARTY=new Fr("first-party-uid"),Fr.MOCK_USER=new Fr("mock-user");let Gr="10.13.2";const jr=new un("@firebase/firestore");function Ur(){return jr.logLevel}function Vr(n,...e){if(jr.logLevel<=an.DEBUG){const t=e.map(Wr);jr.debug(`Firestore (${Gr}): ${n}`,...t)}}function Hr(n,...e){if(jr.logLevel<=an.ERROR){const t=e.map(Wr);jr.error(`Firestore (${Gr}): ${n}`,...t)}}function qr(n,...e){if(jr.logLevel<=an.WARN){const t=e.map(Wr);jr.warn(`Firestore (${Gr}): ${n}`,...t)}}function Wr(n){if("string"==typeof n)return n;try{return function(n){return JSON.stringify(n)}(n)}catch(e){return n}}function Kr(n="Unexpected state"){const e=`FIRESTORE (${Gr}) INTERNAL ASSERTION FAILED: `+n;throw Hr(e),new Error(e)}function Jr(n,e){n||Kr()}function $r(n,e){return n}const Yr={OK:"ok",CANCELLED:"cancelled",UNKNOWN:"unknown",INVALID_ARGUMENT:"invalid-argument",DEADLINE_EXCEEDED:"deadline-exceeded",NOT_FOUND:"not-found",ALREADY_EXISTS:"already-exists",PERMISSION_DENIED:"permission-denied",UNAUTHENTICATED:"unauthenticated",RESOURCE_EXHAUSTED:"resource-exhausted",FAILED_PRECONDITION:"failed-precondition",ABORTED:"aborted",OUT_OF_RANGE:"out-of-range",UNIMPLEMENTED:"unimplemented",INTERNAL:"internal",UNAVAILABLE:"unavailable",DATA_LOSS:"data-loss"};class Qr extends B{constructor(n,e){super(n,e),this.code=n,this.message=e,this.toString=()=>`${this.name}: [code=${this.code}]: ${this.message}`}}class Xr{constructor(){this.promise=new Promise(((n,e)=>{this.resolve=n,this.reject=e}))}}class Zr{constructor(n,e){this.user=e,this.type="OAuth",this.headers=new Map,this.headers.set("Authorization",`Bearer ${n}`)}}class ns{getToken(){return Promise.resolve(null)}invalidateToken(){}start(n,e){n.enqueueRetryable((()=>e(Fr.UNAUTHENTICATED)))}shutdown(){}}class es{constructor(n){this.token=n,this.changeListener=null}getToken(){return Promise.resolve(this.token)}invalidateToken(){}start(n,e){this.changeListener=e,n.enqueueRetryable((()=>e(this.token.user)))}shutdown(){this.changeListener=null}}class ts{constructor(n){this.t=n,this.currentUser=Fr.UNAUTHENTICATED,this.i=0,this.forceRefresh=!1,this.auth=null}start(n,e){let t=this.i;const a=n=>this.i!==t?(t=this.i,e(n)):Promise.resolve();let i=new Xr;this.o=()=>{this.i++,this.currentUser=this.u(),i.resolve(),i=new Xr,n.enqueueRetryable((()=>a(this.currentUser)))};const r=()=>{const e=i;n.enqueueRetryable((async()=>{await e.promise,await a(this.currentUser)}))},s=n=>{Vr("FirebaseAuthCredentialsProvider","Auth detected"),this.auth=n,this.auth.addAuthTokenListener(this.o),r()};this.t.onInit((n=>s(n))),setTimeout((()=>{if(!this.auth){const n=this.t.getImmediate({optional:!0});n?s(n):(Vr("FirebaseAuthCredentialsProvider","Auth not yet detected"),i.resolve(),i=new Xr)}}),0),r()}getToken(){const n=this.i,e=this.forceRefresh;return this.forceRefresh=!1,this.auth?this.auth.getToken(e).then((e=>this.i!==n?(Vr("FirebaseAuthCredentialsProvider","getToken aborted due to token change."),this.getToken()):e?(Jr("string"==typeof e.accessToken),new Zr(e.accessToken,this.currentUser)):null)):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.auth&&this.auth.removeAuthTokenListener(this.o)}u(){const n=this.auth&&this.auth.getUid();return Jr(null===n||"string"==typeof n),new Fr(n)}}class as{constructor(n,e,t){this.l=n,this.h=e,this.P=t,this.type="FirstParty",this.user=Fr.FIRST_PARTY,this.I=new Map}T(){return this.P?this.P():null}get headers(){this.I.set("X-Goog-AuthUser",this.l);const n=this.T();return n&&this.I.set("Authorization",n),this.h&&this.I.set("X-Goog-Iam-Authorization-Token",this.h),this.I}}class is{constructor(n,e,t){this.l=n,this.h=e,this.P=t}getToken(){return Promise.resolve(new as(this.l,this.h,this.P))}start(n,e){n.enqueueRetryable((()=>e(Fr.FIRST_PARTY)))}shutdown(){}invalidateToken(){}}class rs{constructor(n){this.value=n,this.type="AppCheck",this.headers=new Map,n&&n.length>0&&this.headers.set("x-firebase-appcheck",this.value)}}class ss{constructor(n){this.A=n,this.forceRefresh=!1,this.appCheck=null,this.R=null}start(n,e){const t=n=>{null!=n.error&&Vr("FirebaseAppCheckTokenProvider",`Error getting App Check token; using placeholder token instead. Error: ${n.error.message}`);const t=n.token!==this.R;return this.R=n.token,Vr("FirebaseAppCheckTokenProvider",`Received ${t?"new":"existing"} token.`),t?e(n.token):Promise.resolve()};this.o=e=>{n.enqueueRetryable((()=>t(e)))};const a=n=>{Vr("FirebaseAppCheckTokenProvider","AppCheck detected"),this.appCheck=n,this.appCheck.addTokenListener(this.o)};this.A.onInit((n=>a(n))),setTimeout((()=>{if(!this.appCheck){const n=this.A.getImmediate({optional:!0});n?a(n):Vr("FirebaseAppCheckTokenProvider","AppCheck not yet detected")}}),0)}getToken(){const n=this.forceRefresh;return this.forceRefresh=!1,this.appCheck?this.appCheck.getToken(n).then((n=>n?(Jr("string"==typeof n.token),this.R=n.token,new rs(n.token)):null)):Promise.resolve(null)}invalidateToken(){this.forceRefresh=!0}shutdown(){this.appCheck&&this.appCheck.removeTokenListener(this.o)}}function os(n){const e="undefined"!=typeof self&&(self.crypto||self.msCrypto),t=new Uint8Array(n);if(e&&"function"==typeof e.getRandomValues)e.getRandomValues(t);else for(let e=0;ee?1:0}function us(n,e,t){return n.length===e.length&&n.every(((n,a)=>t(n,e[a])))}class ds{constructor(n,e){if(this.seconds=n,this.nanoseconds=e,e<0)throw new Qr(Yr.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+e);if(e>=1e9)throw new Qr(Yr.INVALID_ARGUMENT,"Timestamp nanoseconds out of range: "+e);if(n<-62135596800)throw new Qr(Yr.INVALID_ARGUMENT,"Timestamp seconds out of range: "+n);if(n>=253402300800)throw new Qr(Yr.INVALID_ARGUMENT,"Timestamp seconds out of range: "+n)}static now(){return ds.fromMillis(Date.now())}static fromDate(n){return ds.fromMillis(n.getTime())}static fromMillis(n){const e=Math.floor(n/1e3),t=Math.floor(1e6*(n-1e3*e));return new ds(e,t)}toDate(){return new Date(this.toMillis())}toMillis(){return 1e3*this.seconds+this.nanoseconds/1e6}_compareTo(n){return this.seconds===n.seconds?cs(this.nanoseconds,n.nanoseconds):cs(this.seconds,n.seconds)}isEqual(n){return n.seconds===this.seconds&&n.nanoseconds===this.nanoseconds}toString(){return"Timestamp(seconds="+this.seconds+", nanoseconds="+this.nanoseconds+")"}toJSON(){return{seconds:this.seconds,nanoseconds:this.nanoseconds}}valueOf(){const n=this.seconds- -62135596800;return String(n).padStart(12,"0")+"."+String(this.nanoseconds).padStart(9,"0")}}class hs{constructor(n){this.timestamp=n}static fromTimestamp(n){return new hs(n)}static min(){return new hs(new ds(0,0))}static max(){return new hs(new ds(253402300799,999999999))}compareTo(n){return this.timestamp._compareTo(n.timestamp)}isEqual(n){return this.timestamp.isEqual(n.timestamp)}toMicroseconds(){return 1e6*this.timestamp.seconds+this.timestamp.nanoseconds/1e3}toString(){return"SnapshotVersion("+this.timestamp.toString()+")"}toTimestamp(){return this.timestamp}}class fs{constructor(n,e,t){void 0===e?e=0:e>n.length&&Kr(),void 0===t?t=n.length-e:t>n.length-e&&Kr(),this.segments=n,this.offset=e,this.len=t}get length(){return this.len}isEqual(n){return 0===fs.comparator(this,n)}child(n){const e=this.segments.slice(this.offset,this.limit());return n instanceof fs?n.forEach((n=>{e.push(n)})):e.push(n),this.construct(e)}limit(){return this.offset+this.length}popFirst(n){return n=void 0===n?1:n,this.construct(this.segments,this.offset+n,this.length-n)}popLast(){return this.construct(this.segments,this.offset,this.length-1)}firstSegment(){return this.segments[this.offset]}lastSegment(){return this.get(this.length-1)}get(n){return this.segments[this.offset+n]}isEmpty(){return 0===this.length}isPrefixOf(n){if(n.lengthi)return 1}return n.lengthe.length?1:0}}class ms extends fs{construct(n,e,t){return new ms(n,e,t)}canonicalString(){return this.toArray().join("/")}toString(){return this.canonicalString()}toUriEncodedString(){return this.toArray().map(encodeURIComponent).join("/")}static fromString(...n){const e=[];for(const t of n){if(t.indexOf("//")>=0)throw new Qr(Yr.INVALID_ARGUMENT,`Invalid segment (${t}). Paths must not contain // in them.`);e.push(...t.split("/").filter((n=>n.length>0)))}return new ms(e)}static emptyPath(){return new ms([])}}const ps=/^[_a-zA-Z][_a-zA-Z0-9]*$/;class gs extends fs{construct(n,e,t){return new gs(n,e,t)}static isValidIdentifier(n){return ps.test(n)}canonicalString(){return this.toArray().map((n=>(n=n.replace(/\\/g,"\\\\").replace(/`/g,"\\`"),gs.isValidIdentifier(n)||(n="`"+n+"`"),n))).join(".")}toString(){return this.canonicalString()}isKeyField(){return 1===this.length&&"__name__"===this.get(0)}static keyField(){return new gs(["__name__"])}static fromServerFormat(n){const e=[];let t="",a=0;const i=()=>{if(0===t.length)throw new Qr(Yr.INVALID_ARGUMENT,`Invalid field path (${n}). Paths must not be empty, begin with '.', end with '.', or contain '..'`);e.push(t),t=""};let r=!1;for(;a=2&&this.path.get(this.path.length-2)===n}getCollectionGroup(){return this.path.get(this.path.length-2)}getCollectionPath(){return this.path.popLast()}isEqual(n){return null!==n&&0===ms.comparator(this.path,n.path)}toString(){return this.path.toString()}static comparator(n,e){return ms.comparator(n.path,e.path)}static isDocumentKey(n){return n.length%2==0}static fromSegments(n){return new ys(new ms(n.slice()))}}function bs(n){return new vs(n.readTime,n.key,-1)}class vs{constructor(n,e,t){this.readTime=n,this.documentKey=e,this.largestBatchId=t}static min(){return new vs(hs.min(),ys.empty(),-1)}static max(){return new vs(hs.max(),ys.empty(),-1)}}function xs(n,e){let t=n.readTime.compareTo(e.readTime);return 0!==t?t:(t=ys.comparator(n.documentKey,e.documentKey),0!==t?t:cs(n.largestBatchId,e.largestBatchId))}const ks="The current tab is not in the required state to perform this operation. It might be necessary to refresh the browser tab.";class ws{constructor(){this.onCommittedListeners=[]}addOnCommittedListener(n){this.onCommittedListeners.push(n)}raiseOnCommittedEvent(){this.onCommittedListeners.forEach((n=>n()))}}async function Cs(n){if(n.code!==Yr.FAILED_PRECONDITION||n.message!==ks)throw n;Vr("LocalStore","Unexpectedly lost primary lease")}class Ss{constructor(n){this.nextCallback=null,this.catchCallback=null,this.result=void 0,this.error=void 0,this.isDone=!1,this.callbackAttached=!1,n((n=>{this.isDone=!0,this.result=n,this.nextCallback&&this.nextCallback(n)}),(n=>{this.isDone=!0,this.error=n,this.catchCallback&&this.catchCallback(n)}))}catch(n){return this.next(void 0,n)}next(n,e){return this.callbackAttached&&Kr(),this.callbackAttached=!0,this.isDone?this.error?this.wrapFailure(e,this.error):this.wrapSuccess(n,this.result):new Ss(((t,a)=>{this.nextCallback=e=>{this.wrapSuccess(n,e).next(t,a)},this.catchCallback=n=>{this.wrapFailure(e,n).next(t,a)}}))}toPromise(){return new Promise(((n,e)=>{this.next(n,e)}))}wrapUserFunction(n){try{const e=n();return e instanceof Ss?e:Ss.resolve(e)}catch(n){return Ss.reject(n)}}wrapSuccess(n,e){return n?this.wrapUserFunction((()=>n(e))):Ss.resolve(e)}wrapFailure(n,e){return n?this.wrapUserFunction((()=>n(e))):Ss.reject(e)}static resolve(n){return new Ss(((e,t)=>{e(n)}))}static reject(n){return new Ss(((e,t)=>{t(n)}))}static waitFor(n){return new Ss(((e,t)=>{let a=0,i=0,r=!1;n.forEach((n=>{++a,n.next((()=>{++i,r&&i===a&&e()}),(n=>t(n)))})),r=!0,i===a&&e()}))}static or(n){let e=Ss.resolve(!1);for(const t of n)e=e.next((n=>n?Ss.resolve(n):t()));return e}static forEach(n,e){const t=[];return n.forEach(((n,a)=>{t.push(e.call(this,n,a))})),this.waitFor(t)}static mapArray(n,e){return new Ss(((t,a)=>{const i=n.length,r=new Array(i);let s=0;for(let o=0;o{r[l]=n,++s,s===i&&t(r)}),(n=>a(n)))}}))}static doWhile(n,e){return new Ss(((t,a)=>{const i=()=>{!0===n()?e().next((()=>{i()}),a):t()};i()}))}}function As(n){return"IndexedDbTransactionError"===n.name}class Ts{constructor(n,e){this.previousValue=n,e&&(e.sequenceNumberHandler=n=>this.ie(n),this.se=n=>e.writeSequenceNumber(n))}ie(n){return this.previousValue=Math.max(n,this.previousValue),this.previousValue}next(){const n=++this.previousValue;return this.se&&this.se(n),n}}function Is(n){return null==n}function Es(n){return 0===n&&1/n==-1/0}Ts.oe=-1;function Ms(n){let e=0;for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&e++;return e}function _s(n,e){for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&e(t,n[t])}function Ps(n){for(const e in n)if(Object.prototype.hasOwnProperty.call(n,e))return!1;return!0}class Rs{constructor(n,e){this.comparator=n,this.root=e||Ls.EMPTY}insert(n,e){return new Rs(this.comparator,this.root.insert(n,e,this.comparator).copy(null,null,Ls.BLACK,null,null))}remove(n){return new Rs(this.comparator,this.root.remove(n,this.comparator).copy(null,null,Ls.BLACK,null,null))}get(n){let e=this.root;for(;!e.isEmpty();){const t=this.comparator(n,e.key);if(0===t)return e.value;t<0?e=e.left:t>0&&(e=e.right)}return null}indexOf(n){let e=0,t=this.root;for(;!t.isEmpty();){const a=this.comparator(n,t.key);if(0===a)return e+t.left.size;a<0?t=t.left:(e+=t.left.size+1,t=t.right)}return-1}isEmpty(){return this.root.isEmpty()}get size(){return this.root.size}minKey(){return this.root.minKey()}maxKey(){return this.root.maxKey()}inorderTraversal(n){return this.root.inorderTraversal(n)}forEach(n){this.inorderTraversal(((e,t)=>(n(e,t),!1)))}toString(){const n=[];return this.inorderTraversal(((e,t)=>(n.push(`${e}:${t}`),!1))),`{${n.join(", ")}}`}reverseTraversal(n){return this.root.reverseTraversal(n)}getIterator(){return new Ds(this.root,null,this.comparator,!1)}getIteratorFrom(n){return new Ds(this.root,n,this.comparator,!1)}getReverseIterator(){return new Ds(this.root,null,this.comparator,!0)}getReverseIteratorFrom(n){return new Ds(this.root,n,this.comparator,!0)}}class Ds{constructor(n,e,t,a){this.isReverse=a,this.nodeStack=[];let i=1;for(;!n.isEmpty();)if(i=e?t(n.key,e):1,e&&a&&(i*=-1),i<0)n=this.isReverse?n.left:n.right;else{if(0===i){this.nodeStack.push(n);break}this.nodeStack.push(n),n=this.isReverse?n.right:n.left}}getNext(){let n=this.nodeStack.pop();const e={key:n.key,value:n.value};if(this.isReverse)for(n=n.left;!n.isEmpty();)this.nodeStack.push(n),n=n.right;else for(n=n.right;!n.isEmpty();)this.nodeStack.push(n),n=n.left;return e}hasNext(){return this.nodeStack.length>0}peek(){if(0===this.nodeStack.length)return null;const n=this.nodeStack[this.nodeStack.length-1];return{key:n.key,value:n.value}}}class Ls{constructor(n,e,t,a,i){this.key=n,this.value=e,this.color=null!=t?t:Ls.RED,this.left=null!=a?a:Ls.EMPTY,this.right=null!=i?i:Ls.EMPTY,this.size=this.left.size+1+this.right.size}copy(n,e,t,a,i){return new Ls(null!=n?n:this.key,null!=e?e:this.value,null!=t?t:this.color,null!=a?a:this.left,null!=i?i:this.right)}isEmpty(){return!1}inorderTraversal(n){return this.left.inorderTraversal(n)||n(this.key,this.value)||this.right.inorderTraversal(n)}reverseTraversal(n){return this.right.reverseTraversal(n)||n(this.key,this.value)||this.left.reverseTraversal(n)}min(){return this.left.isEmpty()?this:this.left.min()}minKey(){return this.min().key}maxKey(){return this.right.isEmpty()?this.key:this.right.maxKey()}insert(n,e,t){let a=this;const i=t(n,a.key);return a=i<0?a.copy(null,null,null,a.left.insert(n,e,t),null):0===i?a.copy(null,e,null,null,null):a.copy(null,null,null,null,a.right.insert(n,e,t)),a.fixUp()}removeMin(){if(this.left.isEmpty())return Ls.EMPTY;let n=this;return n.left.isRed()||n.left.left.isRed()||(n=n.moveRedLeft()),n=n.copy(null,null,null,n.left.removeMin(),null),n.fixUp()}remove(n,e){let t,a=this;if(e(n,a.key)<0)a.left.isEmpty()||a.left.isRed()||a.left.left.isRed()||(a=a.moveRedLeft()),a=a.copy(null,null,null,a.left.remove(n,e),null);else{if(a.left.isRed()&&(a=a.rotateRight()),a.right.isEmpty()||a.right.isRed()||a.right.left.isRed()||(a=a.moveRedRight()),0===e(n,a.key)){if(a.right.isEmpty())return Ls.EMPTY;t=a.right.min(),a=a.copy(t.key,t.value,null,null,a.right.removeMin())}a=a.copy(null,null,null,null,a.right.remove(n,e))}return a.fixUp()}isRed(){return this.color}fixUp(){let n=this;return n.right.isRed()&&!n.left.isRed()&&(n=n.rotateLeft()),n.left.isRed()&&n.left.left.isRed()&&(n=n.rotateRight()),n.left.isRed()&&n.right.isRed()&&(n=n.colorFlip()),n}moveRedLeft(){let n=this.colorFlip();return n.right.left.isRed()&&(n=n.copy(null,null,null,null,n.right.rotateRight()),n=n.rotateLeft(),n=n.colorFlip()),n}moveRedRight(){let n=this.colorFlip();return n.left.left.isRed()&&(n=n.rotateRight(),n=n.colorFlip()),n}rotateLeft(){const n=this.copy(null,null,Ls.RED,null,this.right.left);return this.right.copy(null,null,this.color,n,null)}rotateRight(){const n=this.copy(null,null,Ls.RED,this.left.right,null);return this.left.copy(null,null,this.color,null,n)}colorFlip(){const n=this.left.copy(null,null,!this.left.color,null,null),e=this.right.copy(null,null,!this.right.color,null,null);return this.copy(null,null,!this.color,n,e)}checkMaxDepth(){const n=this.check();return Math.pow(2,n)<=this.size+1}check(){if(this.isRed()&&this.left.isRed())throw Kr();if(this.right.isRed())throw Kr();const n=this.left.check();if(n!==this.right.check())throw Kr();return n+(this.isRed()?0:1)}}Ls.EMPTY=null,Ls.RED=!0,Ls.BLACK=!1,Ls.EMPTY=new class{constructor(){this.size=0}get key(){throw Kr()}get value(){throw Kr()}get color(){throw Kr()}get left(){throw Kr()}get right(){throw Kr()}copy(n,e,t,a,i){return this}insert(n,e,t){return new Ls(n,e)}remove(n,e){return this}isEmpty(){return!0}inorderTraversal(n){return!1}reverseTraversal(n){return!1}minKey(){return null}maxKey(){return null}isRed(){return!1}checkMaxDepth(){return!0}check(){return 0}};class Ns{constructor(n){this.comparator=n,this.data=new Rs(this.comparator)}has(n){return null!==this.data.get(n)}first(){return this.data.minKey()}last(){return this.data.maxKey()}get size(){return this.data.size}indexOf(n){return this.data.indexOf(n)}forEach(n){this.data.inorderTraversal(((e,t)=>(n(e),!1)))}forEachInRange(n,e){const t=this.data.getIteratorFrom(n[0]);for(;t.hasNext();){const a=t.getNext();if(this.comparator(a.key,n[1])>=0)return;e(a.key)}}forEachWhile(n,e){let t;for(t=void 0!==e?this.data.getIteratorFrom(e):this.data.getIterator();t.hasNext();)if(!n(t.getNext().key))return}firstAfterOrEqual(n){const e=this.data.getIteratorFrom(n);return e.hasNext()?e.getNext().key:null}getIterator(){return new Bs(this.data.getIterator())}getIteratorFrom(n){return new Bs(this.data.getIteratorFrom(n))}add(n){return this.copy(this.data.remove(n).insert(n,!0))}delete(n){return this.has(n)?this.copy(this.data.remove(n)):this}isEmpty(){return this.data.isEmpty()}unionWith(n){let e=this;return e.size{e=e.add(n)})),e}isEqual(n){if(!(n instanceof Ns))return!1;if(this.size!==n.size)return!1;const e=this.data.getIterator(),t=n.data.getIterator();for(;e.hasNext();){const n=e.getNext().key,a=t.getNext().key;if(0!==this.comparator(n,a))return!1}return!0}toArray(){const n=[];return this.forEach((e=>{n.push(e)})),n}toString(){const n=[];return this.forEach((e=>n.push(e))),"SortedSet("+n.toString()+")"}copy(n){const e=new Ns(this.comparator);return e.data=n,e}}class Bs{constructor(n){this.iter=n}getNext(){return this.iter.getNext().key}hasNext(){return this.iter.hasNext()}}class zs{constructor(n){this.fields=n,n.sort(gs.comparator)}static empty(){return new zs([])}unionWith(n){let e=new Ns(gs.comparator);for(const n of this.fields)e=e.add(n);for(const t of n)e=e.add(t);return new zs(e.toArray())}covers(n){for(const e of this.fields)if(e.isPrefixOf(n))return!0;return!1}isEqual(n){return us(this.fields,n.fields,((n,e)=>n.isEqual(e)))}}class Os extends Error{constructor(){super(...arguments),this.name="Base64DecodeError"}}class Fs{constructor(n){this.binaryString=n}static fromBase64String(n){const e=function(n){try{return atob(n)}catch(n){throw"undefined"!=typeof DOMException&&n instanceof DOMException?new Os("Invalid base64 string: "+n):n}}(n);return new Fs(e)}static fromUint8Array(n){const e=function(n){let e="";for(let t=0;tnQs(n,e)))}function Zs(n,e){if(n===e)return 0;const t=Ys(n),a=Ys(e);if(t!==a)return cs(t,a);switch(t){case 0:case 9007199254740991:return 0;case 1:return cs(n.booleanValue,e.booleanValue);case 2:return function(n,e){const t=Us(n.integerValue||n.doubleValue),a=Us(e.integerValue||e.doubleValue);return ta?1:t===a?0:isNaN(t)?isNaN(a)?0:-1:1}(n,e);case 3:return no(n.timestampValue,e.timestampValue);case 4:return no(Ws(n),Ws(e));case 5:return cs(n.stringValue,e.stringValue);case 6:return function(n,e){const t=Vs(n),a=Vs(e);return t.compareTo(a)}(n.bytesValue,e.bytesValue);case 7:return function(n,e){const t=n.split("/"),a=e.split("/");for(let n=0;ne.mapValue.fields[n]=ho(t))),e}if(n.arrayValue){const e={arrayValue:{values:[]}};for(let t=0;t<(n.arrayValue.values||[]).length;++t)e.arrayValue.values[t]=ho(n.arrayValue.values[t]);return e}return Object.assign({},n)}function fo(n){return"__max__"===(((n.mapValue||{}).fields||{}).__type__||{}).stringValue}class mo{constructor(n){this.value=n}static empty(){return new mo({mapValue:{}})}field(n){if(n.isEmpty())return this.value;{let e=this.value;for(let t=0;t{if(!e.isImmediateParentOf(i)){const n=this.getFieldsMap(e);this.applyChanges(n,t,a),t={},a=[],e=i.popLast()}n?t[i.lastSegment()]=ho(n):a.push(i.lastSegment())}));const i=this.getFieldsMap(e);this.applyChanges(i,t,a)}delete(n){const e=this.field(n.popLast());co(e)&&e.mapValue.fields&&delete e.mapValue.fields[n.lastSegment()]}isEqual(n){return Qs(this.value,n.value)}getFieldsMap(n){let e=this.value;e.mapValue.fields||(e.mapValue={fields:{}});for(let t=0;tn[e]=t));for(const e of t)delete n[e]}clone(){return new mo(ho(this.value))}}function po(n){const e=[];return _s(n.fields,((n,t)=>{const a=new gs([n]);if(co(t)){const n=po(t.mapValue).fields;if(0===n.length)e.push(a);else for(const t of n)e.push(a.child(t))}else e.push(a)})),new zs(e)}class go{constructor(n,e,t,a,i,r,s){this.key=n,this.documentType=e,this.version=t,this.readTime=a,this.createTime=i,this.data=r,this.documentState=s}static newInvalidDocument(n){return new go(n,0,hs.min(),hs.min(),hs.min(),mo.empty(),0)}static newFoundDocument(n,e,t,a){return new go(n,1,e,hs.min(),t,a,0)}static newNoDocument(n,e){return new go(n,2,e,hs.min(),hs.min(),mo.empty(),0)}static newUnknownDocument(n,e){return new go(n,3,e,hs.min(),hs.min(),mo.empty(),2)}convertToFoundDocument(n,e){return!this.createTime.isEqual(hs.min())||2!==this.documentType&&0!==this.documentType||(this.createTime=n),this.version=n,this.documentType=1,this.data=e,this.documentState=0,this}convertToNoDocument(n){return this.version=n,this.documentType=2,this.data=mo.empty(),this.documentState=0,this}convertToUnknownDocument(n){return this.version=n,this.documentType=3,this.data=mo.empty(),this.documentState=2,this}setHasCommittedMutations(){return this.documentState=2,this}setHasLocalMutations(){return this.documentState=1,this.version=hs.min(),this}setReadTime(n){return this.readTime=n,this}get hasLocalMutations(){return 1===this.documentState}get hasCommittedMutations(){return 2===this.documentState}get hasPendingWrites(){return this.hasLocalMutations||this.hasCommittedMutations}isValidDocument(){return 0!==this.documentType}isFoundDocument(){return 1===this.documentType}isNoDocument(){return 2===this.documentType}isUnknownDocument(){return 3===this.documentType}isEqual(n){return n instanceof go&&this.key.isEqual(n.key)&&this.version.isEqual(n.version)&&this.documentType===n.documentType&&this.documentState===n.documentState&&this.data.isEqual(n.data)}mutableCopy(){return new go(this.key,this.documentType,this.version,this.readTime,this.createTime,this.data.clone(),this.documentState)}toString(){return`Document(${this.key}, ${this.version}, ${JSON.stringify(this.data.value)}, {createTime: ${this.createTime}}), {documentType: ${this.documentType}}), {documentState: ${this.documentState}})`}}class yo{constructor(n,e){this.position=n,this.inclusive=e}}function bo(n,e,t){let a=0;for(let i=0;i":return n>0;case">=":return n>=0;default:return Kr()}}isInequality(){return["<","<=",">",">=","!=","not-in"].indexOf(this.op)>=0}getFlattenedFilters(){return[this]}getFilters(){return[this]}}class So extends wo{constructor(n,e){super(),this.filters=n,this.op=e,this.ae=null}static create(n,e){return new So(n,e)}matches(n){return Ao(this)?void 0===this.filters.find((e=>!e.matches(n))):void 0!==this.filters.find((e=>e.matches(n)))}getFlattenedFilters(){return null!==this.ae||(this.ae=this.filters.reduce(((n,e)=>n.concat(e.getFlattenedFilters())),[])),this.ae}getFilters(){return Object.assign([],this.filters)}}function Ao(n){return"and"===n.op}function To(n){return function(n){for(const e of n.filters)if(e instanceof So)return!1;return!0}(n)&&Ao(n)}function Io(n){if(n instanceof Co)return n.field.canonicalString()+n.op.toString()+to(n.value);if(To(n))return n.filters.map((n=>Io(n))).join(",");{const e=n.filters.map((n=>Io(n))).join(",");return`${n.op}(${e})`}}function Eo(n,e){return n instanceof Co?function(n,e){return e instanceof Co&&n.op===e.op&&n.field.isEqual(e.field)&&Qs(n.value,e.value)}(n,e):n instanceof So?function(n,e){return e instanceof So&&n.op===e.op&&n.filters.length===e.filters.length&&n.filters.reduce(((n,t,a)=>n&&Eo(t,e.filters[a])),!0)}(n,e):void Kr()}function Mo(n){return n instanceof Co?function(n){return`${n.field.canonicalString()} ${n.op} ${to(n.value)}`}(n):n instanceof So?function(n){return n.op.toString()+" {"+n.getFilters().map(Mo).join(" ,")+"}"}(n):"Filter"}class _o extends Co{constructor(n,e,t){super(n,e,t),this.key=ys.fromName(t.referenceValue)}matches(n){const e=ys.comparator(n.key,this.key);return this.matchesComparison(e)}}class Po extends Co{constructor(n,e){super(n,"in",e),this.keys=Do(0,e)}matches(n){return this.keys.some((e=>e.isEqual(n.key)))}}class Ro extends Co{constructor(n,e){super(n,"not-in",e),this.keys=Do(0,e)}matches(n){return!this.keys.some((e=>e.isEqual(n.key)))}}function Do(n,e){var t;return((null===(t=e.arrayValue)||void 0===t?void 0:t.values)||[]).map((n=>ys.fromName(n.referenceValue)))}class Lo extends Co{constructor(n,e){super(n,"array-contains",e)}matches(n){const e=n.data.field(this.field);return so(e)&&Xs(e.arrayValue,this.value)}}class No extends Co{constructor(n,e){super(n,"in",e)}matches(n){const e=n.data.field(this.field);return null!==e&&Xs(this.value.arrayValue,e)}}class Bo extends Co{constructor(n,e){super(n,"not-in",e)}matches(n){if(Xs(this.value.arrayValue,{nullValue:"NULL_VALUE"}))return!1;const e=n.data.field(this.field);return null!==e&&!Xs(this.value.arrayValue,e)}}class zo extends Co{constructor(n,e){super(n,"array-contains-any",e)}matches(n){const e=n.data.field(this.field);return!(!so(e)||!e.arrayValue.values)&&e.arrayValue.values.some((n=>Xs(this.value.arrayValue,n)))}}class Oo{constructor(n,e=null,t=[],a=[],i=null,r=null,s=null){this.path=n,this.collectionGroup=e,this.orderBy=t,this.filters=a,this.limit=i,this.startAt=r,this.endAt=s,this.ue=null}}function Fo(n,e=null,t=[],a=[],i=null,r=null,s=null){return new Oo(n,e,t,a,i,r,s)}function Go(n){const e=$r(n);if(null===e.ue){let n=e.path.canonicalString();null!==e.collectionGroup&&(n+="|cg:"+e.collectionGroup),n+="|f:",n+=e.filters.map((n=>Io(n))).join(","),n+="|ob:",n+=e.orderBy.map((n=>function(n){return n.field.canonicalString()+n.dir}(n))).join(","),Is(e.limit)||(n+="|l:",n+=e.limit),e.startAt&&(n+="|lb:",n+=e.startAt.inclusive?"b:":"a:",n+=e.startAt.position.map((n=>to(n))).join(",")),e.endAt&&(n+="|ub:",n+=e.endAt.inclusive?"a:":"b:",n+=e.endAt.position.map((n=>to(n))).join(",")),e.ue=n}return e.ue}function jo(n,e){if(n.limit!==e.limit)return!1;if(n.orderBy.length!==e.orderBy.length)return!1;for(let t=0;t0?e.explicitOrderBy[e.explicitOrderBy.length-1].dir:"asc",a=function(n){let e=new Ns(gs.comparator);return n.filters.forEach((n=>{n.getFlattenedFilters().forEach((n=>{n.isInequality()&&(e=e.add(n.field))}))})),e}(e);a.forEach((a=>{n.has(a.canonicalString())||a.isKeyField()||e.ce.push(new xo(a,t))})),n.has(gs.keyField().canonicalString())||e.ce.push(new xo(gs.keyField(),t))}return e.ce}function Jo(n){const e=$r(n);return e.le||(e.le=function(n,e){if("F"===n.limitType)return Fo(n.path,n.collectionGroup,e,n.filters,n.limit,n.startAt,n.endAt);{e=e.map((n=>{const e="desc"===n.dir?"asc":"desc";return new xo(n.field,e)}));const t=n.endAt?new yo(n.endAt.position,n.endAt.inclusive):null,a=n.startAt?new yo(n.startAt.position,n.startAt.inclusive):null;return Fo(n.path,n.collectionGroup,e,n.filters,n.limit,t,a)}}(e,Ko(n))),e.le}function $o(n,e){const t=n.filters.concat([e]);return new Vo(n.path,n.collectionGroup,n.explicitOrderBy.slice(),t,n.limit,n.limitType,n.startAt,n.endAt)}function Yo(n,e,t){return new Vo(n.path,n.collectionGroup,n.explicitOrderBy.slice(),n.filters.slice(),e,t,n.startAt,n.endAt)}function Qo(n,e){return jo(Jo(n),Jo(e))&&n.limitType===e.limitType}function Xo(n){return`${Go(Jo(n))}|lt:${n.limitType}`}function Zo(n){return`Query(target=${function(n){let e=n.path.canonicalString();return null!==n.collectionGroup&&(e+=" collectionGroup="+n.collectionGroup),n.filters.length>0&&(e+=`, filters: [${n.filters.map((n=>Mo(n))).join(", ")}]`),Is(n.limit)||(e+=", limit: "+n.limit),n.orderBy.length>0&&(e+=`, orderBy: [${n.orderBy.map((n=>function(n){return`${n.field.canonicalString()} (${n.dir})`}(n))).join(", ")}]`),n.startAt&&(e+=", startAt: ",e+=n.startAt.inclusive?"b:":"a:",e+=n.startAt.position.map((n=>to(n))).join(",")),n.endAt&&(e+=", endAt: ",e+=n.endAt.inclusive?"a:":"b:",e+=n.endAt.position.map((n=>to(n))).join(",")),`Target(${e})`}(Jo(n))}; limitType=${n.limitType})`}function nl(n,e){return e.isFoundDocument()&&function(n,e){const t=e.key.path;return null!==n.collectionGroup?e.key.hasCollectionId(n.collectionGroup)&&n.path.isPrefixOf(t):ys.isDocumentKey(n.path)?n.path.isEqual(t):n.path.isImmediateParentOf(t)}(n,e)&&function(n,e){for(const t of Ko(n))if(!t.field.isKeyField()&&null===e.data.field(t.field))return!1;return!0}(n,e)&&function(n,e){for(const t of n.filters)if(!t.matches(e))return!1;return!0}(n,e)&&function(n,e){return!(n.startAt&&!function(n,e,t){const a=bo(n,e,t);return n.inclusive?a<=0:a<0}(n.startAt,Ko(n),e)||n.endAt&&!function(n,e,t){const a=bo(n,e,t);return n.inclusive?a>=0:a>0}(n.endAt,Ko(n),e))}(n,e)}function el(n){return(e,t)=>{let a=!1;for(const i of Ko(n)){const n=tl(i,e,t);if(0!==n)return n;a=a||i.field.isKeyField()}return 0}}function tl(n,e,t){const a=n.field.isKeyField()?ys.comparator(e.key,t.key):function(n,e,t){const a=e.data.field(n),i=t.data.field(n);return null!==a&&null!==i?Zs(a,i):Kr()}(n.field,e,t);switch(n.dir){case"asc":return a;case"desc":return-1*a;default:return Kr()}}class al{constructor(n,e){this.mapKeyFn=n,this.equalsFn=e,this.inner={},this.innerSize=0}get(n){const e=this.mapKeyFn(n),t=this.inner[e];if(void 0!==t)for(const[e,a]of t)if(this.equalsFn(e,n))return a}has(n){return void 0!==this.get(n)}set(n,e){const t=this.mapKeyFn(n),a=this.inner[t];if(void 0===a)return this.inner[t]=[[n,e]],void this.innerSize++;for(let t=0;t{for(const[e,a]of t)n(e,a)}))}isEmpty(){return Ps(this.inner)}size(){return this.innerSize}}const il=new Rs(ys.comparator);function rl(){return il}const sl=new Rs(ys.comparator);function ol(...n){let e=sl;for(const t of n)e=e.insert(t.key,t);return e}function ll(n){let e=sl;return n.forEach(((n,t)=>e=e.insert(n,t.overlayedDocument))),e}function cl(){return dl()}function ul(){return dl()}function dl(){return new al((n=>n.toString()),((n,e)=>n.isEqual(e)))}const hl=new Rs(ys.comparator),fl=new Ns(ys.comparator);function ml(...n){let e=fl;for(const t of n)e=e.add(t);return e}const pl=new Ns(cs);function gl(n,e){if(n.useProto3Json){if(isNaN(e))return{doubleValue:"NaN"};if(e===1/0)return{doubleValue:"Infinity"};if(e===-1/0)return{doubleValue:"-Infinity"}}return{doubleValue:Es(e)?"-0":e}}function yl(n){return{integerValue:""+n}}function bl(n,e){return function(n){return"number"==typeof n&&Number.isInteger(n)&&!Es(n)&&n<=Number.MAX_SAFE_INTEGER&&n>=Number.MIN_SAFE_INTEGER}(e)?yl(e):gl(n,e)}class vl{constructor(){this._=void 0}}function xl(n,e,t){return n instanceof Cl?function(n,e){const t={fields:{__type__:{stringValue:"server_timestamp"},__local_write_time__:{timestampValue:{seconds:n.seconds,nanos:n.nanoseconds}}}};return e&&Hs(e)&&(e=qs(e)),e&&(t.fields.__previous_value__=e),{mapValue:t}}(t,e):n instanceof Sl?Al(n,e):n instanceof Tl?Il(n,e):function(n,e){const t=wl(n,e),a=Ml(t)+Ml(n.Pe);return ro(t)&&ro(n.Pe)?yl(a):gl(n.serializer,a)}(n,e)}function kl(n,e,t){return n instanceof Sl?Al(n,e):n instanceof Tl?Il(n,e):t}function wl(n,e){return n instanceof El?function(n){return ro(n)||function(n){return!!n&&"doubleValue"in n}(n)}(e)?e:{integerValue:0}:null}class Cl extends vl{}class Sl extends vl{constructor(n){super(),this.elements=n}}function Al(n,e){const t=_l(e);for(const e of n.elements)t.some((n=>Qs(n,e)))||t.push(e);return{arrayValue:{values:t}}}class Tl extends vl{constructor(n){super(),this.elements=n}}function Il(n,e){let t=_l(e);for(const e of n.elements)t=t.filter((n=>!Qs(n,e)));return{arrayValue:{values:t}}}class El extends vl{constructor(n,e){super(),this.serializer=n,this.Pe=e}}function Ml(n){return Us(n.integerValue||n.doubleValue)}function _l(n){return so(n)&&n.arrayValue.values?n.arrayValue.values.slice():[]}class Pl{constructor(n,e){this.version=n,this.transformResults=e}}class Rl{constructor(n,e){this.updateTime=n,this.exists=e}static none(){return new Rl}static exists(n){return new Rl(void 0,n)}static updateTime(n){return new Rl(n)}get isNone(){return void 0===this.updateTime&&void 0===this.exists}isEqual(n){return this.exists===n.exists&&(this.updateTime?!!n.updateTime&&this.updateTime.isEqual(n.updateTime):!n.updateTime)}}function Dl(n,e){return void 0!==n.updateTime?e.isFoundDocument()&&e.version.isEqual(n.updateTime):void 0===n.exists||n.exists===e.isFoundDocument()}class Ll{}function Nl(n,e){if(!n.hasLocalMutations||e&&0===e.fields.length)return null;if(null===e)return n.isNoDocument()?new ql(n.key,Rl.none()):new Gl(n.key,n.data,Rl.none());{const t=n.data,a=mo.empty();let i=new Ns(gs.comparator);for(let n of e.fields)if(!i.has(n)){let e=t.field(n);null===e&&n.length>1&&(n=n.popLast(),e=t.field(n)),null===e?a.delete(n):a.set(n,e),i=i.add(n)}return new jl(n.key,a,new zs(i.toArray()),Rl.none())}}function Bl(n,e,t){n instanceof Gl?function(n,e,t){const a=n.value.clone(),i=Vl(n.fieldTransforms,e,t.transformResults);a.setAll(i),e.convertToFoundDocument(t.version,a).setHasCommittedMutations()}(n,e,t):n instanceof jl?function(n,e,t){if(!Dl(n.precondition,e))return void e.convertToUnknownDocument(t.version);const a=Vl(n.fieldTransforms,e,t.transformResults),i=e.data;i.setAll(Ul(n)),i.setAll(a),e.convertToFoundDocument(t.version,i).setHasCommittedMutations()}(n,e,t):function(n,e,t){e.convertToNoDocument(t.version).setHasCommittedMutations()}(0,e,t)}function zl(n,e,t,a){return n instanceof Gl?function(n,e,t,a){if(!Dl(n.precondition,e))return t;const i=n.value.clone(),r=Hl(n.fieldTransforms,a,e);return i.setAll(r),e.convertToFoundDocument(e.version,i).setHasLocalMutations(),null}(n,e,t,a):n instanceof jl?function(n,e,t,a){if(!Dl(n.precondition,e))return t;const i=Hl(n.fieldTransforms,a,e),r=e.data;return r.setAll(Ul(n)),r.setAll(i),e.convertToFoundDocument(e.version,r).setHasLocalMutations(),null===t?null:t.unionWith(n.fieldMask.fields).unionWith(n.fieldTransforms.map((n=>n.field)))}(n,e,t,a):function(n,e,t){return Dl(n.precondition,e)?(e.convertToNoDocument(e.version).setHasLocalMutations(),null):t}(n,e,t)}function Ol(n,e){let t=null;for(const a of n.fieldTransforms){const n=e.data.field(a.field),i=wl(a.transform,n||null);null!=i&&(null===t&&(t=mo.empty()),t.set(a.field,i))}return t||null}function Fl(n,e){return n.type===e.type&&!!n.key.isEqual(e.key)&&!!n.precondition.isEqual(e.precondition)&&!!function(n,e){return void 0===n&&void 0===e||!(!n||!e)&&us(n,e,((n,e)=>function(n,e){return n.field.isEqual(e.field)&&function(n,e){return n instanceof Sl&&e instanceof Sl||n instanceof Tl&&e instanceof Tl?us(n.elements,e.elements,Qs):n instanceof El&&e instanceof El?Qs(n.Pe,e.Pe):n instanceof Cl&&e instanceof Cl}(n.transform,e.transform)}(n,e)))}(n.fieldTransforms,e.fieldTransforms)&&(0===n.type?n.value.isEqual(e.value):1!==n.type||n.data.isEqual(e.data)&&n.fieldMask.isEqual(e.fieldMask))}class Gl extends Ll{constructor(n,e,t,a=[]){super(),this.key=n,this.value=e,this.precondition=t,this.fieldTransforms=a,this.type=0}getFieldMask(){return null}}class jl extends Ll{constructor(n,e,t,a,i=[]){super(),this.key=n,this.data=e,this.fieldMask=t,this.precondition=a,this.fieldTransforms=i,this.type=1}getFieldMask(){return this.fieldMask}}function Ul(n){const e=new Map;return n.fieldMask.fields.forEach((t=>{if(!t.isEmpty()){const a=n.data.field(t);e.set(t,a)}})),e}function Vl(n,e,t){const a=new Map;Jr(n.length===t.length);for(let i=0;i{const i=n.get(a.key),r=i.overlayedDocument;let s=this.applyToLocalView(r,i.mutatedFields);s=e.has(a.key)?null:s;const o=Nl(r,s);null!==o&&t.set(a.key,o),r.isValidDocument()||r.convertToNoDocument(hs.min())})),t}keys(){return this.mutations.reduce(((n,e)=>n.add(e.key)),ml())}isEqual(n){return this.batchId===n.batchId&&us(this.mutations,n.mutations,((n,e)=>Fl(n,e)))&&us(this.baseMutations,n.baseMutations,((n,e)=>Fl(n,e)))}}class Jl{constructor(n,e,t,a){this.batch=n,this.commitVersion=e,this.mutationResults=t,this.docVersions=a}static from(n,e,t){Jr(n.mutations.length===t.length);let a=hl;const i=n.mutations;for(let n=0;n=8)throw new ic(`Invalid padding: ${e}`);if(t<0)throw new ic(`Invalid hash count: ${t}`);if(n.length>0&&0===this.hashCount)throw new ic(`Invalid hash count: ${t}`);if(0===n.length&&0!==e)throw new ic(`Invalid padding when bitmap length is 0: ${e}`);this.Ie=8*n.length-e,this.Te=Cr.fromNumber(this.Ie)}Ee(n,e,t){let a=n.add(e.multiply(Cr.fromNumber(t)));return 1===a.compare(nc)&&(a=new Cr([a.getBits(0),a.getBits(1)],0)),a.modulo(this.Te).toNumber()}de(n){return 0!=(this.bitmap[Math.floor(n/8)]&1<r.insert(n))),r}insert(n){if(0===this.Ie)return;const e=ec(n),[t,a]=tc(e);for(let n=0;n0&&(this.we=!0,this.pe=n)}ve(){let n=ml(),e=ml(),t=ml();return this.ge.forEach(((a,i)=>{switch(i){case 0:n=n.add(a);break;case 2:e=e.add(a);break;case 1:t=t.add(a);break;default:Kr()}})),new sc(this.pe,this.ye,n,e,t)}Ce(){this.we=!1,this.ge=fc()}Fe(n,e){this.we=!0,this.ge=this.ge.insert(n,e)}Me(n){this.we=!0,this.ge=this.ge.remove(n)}xe(){this.fe+=1}Oe(){this.fe-=1,Jr(this.fe>=0)}Ne(){this.we=!0,this.ye=!0}}class dc{constructor(n){this.Le=n,this.Be=new Map,this.ke=rl(),this.qe=hc(),this.Qe=new Rs(cs)}Ke(n){for(const e of n.Re)n.Ve&&n.Ve.isFoundDocument()?this.$e(e,n.Ve):this.Ue(e,n.key,n.Ve);for(const e of n.removedTargetIds)this.Ue(e,n.key,n.Ve)}We(n){this.forEachTarget(n,(e=>{const t=this.Ge(e);switch(n.state){case 0:this.ze(e)&&t.De(n.resumeToken);break;case 1:t.Oe(),t.Se||t.Ce(),t.De(n.resumeToken);break;case 2:t.Oe(),t.Se||this.removeTarget(e);break;case 3:this.ze(e)&&(t.Ne(),t.De(n.resumeToken));break;case 4:this.ze(e)&&(this.je(e),t.De(n.resumeToken));break;default:Kr()}}))}forEachTarget(n,e){n.targetIds.length>0?n.targetIds.forEach(e):this.Be.forEach(((n,t)=>{this.ze(t)&&e(t)}))}He(n){const e=n.targetId,t=n.me.count,a=this.Je(e);if(a){const i=a.target;if(Uo(i))if(0===t){const n=new ys(i.path);this.Ue(e,n,go.newNoDocument(n,hs.min()))}else Jr(1===t);else{const a=this.Ye(e);if(a!==t){const t=this.Ze(n),i=t?this.Xe(t,n,a):1;if(0!==i){this.je(e);const n=2===i?"TargetPurposeExistenceFilterMismatchBloom":"TargetPurposeExistenceFilterMismatch";this.Qe=this.Qe.insert(e,n)}}}}}Ze(n){const e=n.me.unchangedNames;if(!e||!e.bits)return null;const{bits:{bitmap:t="",padding:a=0},hashCount:i=0}=e;let r,s;try{r=Vs(t).toUint8Array()}catch(n){if(n instanceof Os)return qr("Decoding the base64 bloom filter in existence filter failed ("+n.message+"); ignoring the bloom filter and falling back to full re-query."),null;throw n}try{s=new ac(r,a,i)}catch(n){return qr(n instanceof ic?"BloomFilter error: ":"Applying bloom filter failed: ",n),null}return 0===s.Ie?null:s}Xe(n,e,t){return e.me.count===t-this.nt(n,e.targetId)?0:2}nt(n,e){const t=this.Le.getRemoteKeysForTarget(e);let a=0;return t.forEach((t=>{const i=this.Le.tt(),r=`projects/${i.projectId}/databases/${i.database}/documents/${t.path.canonicalString()}`;n.mightContain(r)||(this.Ue(e,t,null),a++)})),a}rt(n){const e=new Map;this.Be.forEach(((t,a)=>{const i=this.Je(a);if(i){if(t.current&&Uo(i.target)){const e=new ys(i.target.path);null!==this.ke.get(e)||this.it(a,e)||this.Ue(a,e,go.newNoDocument(e,n))}t.be&&(e.set(a,t.ve()),t.Ce())}}));let t=ml();this.qe.forEach(((n,e)=>{let a=!0;e.forEachWhile((n=>{const e=this.Je(n);return!e||"TargetPurposeLimboResolution"===e.purpose||(a=!1,!1)})),a&&(t=t.add(n))})),this.ke.forEach(((e,t)=>t.setReadTime(n)));const a=new rc(n,e,this.Qe,this.ke,t);return this.ke=rl(),this.qe=hc(),this.Qe=new Rs(cs),a}$e(n,e){if(!this.ze(n))return;const t=this.it(n,e.key)?2:0;this.Ge(n).Fe(e.key,t),this.ke=this.ke.insert(e.key,e),this.qe=this.qe.insert(e.key,this.st(e.key).add(n))}Ue(n,e,t){if(!this.ze(n))return;const a=this.Ge(n);this.it(n,e)?a.Fe(e,1):a.Me(e),this.qe=this.qe.insert(e,this.st(e).delete(n)),t&&(this.ke=this.ke.insert(e,t))}removeTarget(n){this.Be.delete(n)}Ye(n){const e=this.Ge(n).ve();return this.Le.getRemoteKeysForTarget(n).size+e.addedDocuments.size-e.removedDocuments.size}xe(n){this.Ge(n).xe()}Ge(n){let e=this.Be.get(n);return e||(e=new uc,this.Be.set(n,e)),e}st(n){let e=this.qe.get(n);return e||(e=new Ns(cs),this.qe=this.qe.insert(n,e)),e}ze(n){const e=null!==this.Je(n);return e||Vr("WatchChangeAggregator","Detected inactive target",n),e}Je(n){const e=this.Be.get(n);return e&&e.Se?null:this.Le.ot(n)}je(n){this.Be.set(n,new uc),this.Le.getRemoteKeysForTarget(n).forEach((e=>{this.Ue(n,e,null)}))}it(n,e){return this.Le.getRemoteKeysForTarget(n).has(e)}}function hc(){return new Rs(ys.comparator)}function fc(){return new Rs(ys.comparator)}const mc={asc:"ASCENDING",desc:"DESCENDING"},pc={"<":"LESS_THAN","<=":"LESS_THAN_OR_EQUAL",">":"GREATER_THAN",">=":"GREATER_THAN_OR_EQUAL","==":"EQUAL","!=":"NOT_EQUAL","array-contains":"ARRAY_CONTAINS",in:"IN","not-in":"NOT_IN","array-contains-any":"ARRAY_CONTAINS_ANY"},gc={and:"AND",or:"OR"};class yc{constructor(n,e){this.databaseId=n,this.useProto3Json=e}}function bc(n,e){return n.useProto3Json||Is(e)?e:{value:e}}function vc(n,e){return n.useProto3Json?`${new Date(1e3*e.seconds).toISOString().replace(/\.\d*/,"").replace("Z","")}.${("000000000"+e.nanoseconds).slice(-9)}Z`:{seconds:""+e.seconds,nanos:e.nanoseconds}}function xc(n,e){return n.useProto3Json?e.toBase64():e.toUint8Array()}function kc(n,e){return vc(n,e.toTimestamp())}function wc(n){return Jr(!!n),hs.fromTimestamp(function(n){const e=js(n);return new ds(e.seconds,e.nanos)}(n))}function Cc(n,e){return Sc(n,e).canonicalString()}function Sc(n,e){const t=function(n){return new ms(["projects",n.projectId,"databases",n.database])}(n).child("documents");return void 0===e?t:t.child(e)}function Ac(n){const e=ms.fromString(n);return Jr(Vc(e)),e}function Tc(n,e){return Cc(n.databaseId,e.path)}function Ic(n,e){const t=Ac(e);if(t.get(1)!==n.databaseId.projectId)throw new Qr(Yr.INVALID_ARGUMENT,"Tried to deserialize key from different project: "+t.get(1)+" vs "+n.databaseId.projectId);if(t.get(3)!==n.databaseId.database)throw new Qr(Yr.INVALID_ARGUMENT,"Tried to deserialize key from different database: "+t.get(3)+" vs "+n.databaseId.database);return new ys(_c(t))}function Ec(n,e){return Cc(n.databaseId,e)}function Mc(n){return new ms(["projects",n.databaseId.projectId,"databases",n.databaseId.database]).canonicalString()}function _c(n){return Jr(n.length>4&&"documents"===n.get(4)),n.popFirst(5)}function Pc(n,e,t){return{name:Tc(n,e),fields:t.value.mapValue.fields}}function Rc(n,e){return{documents:[Ec(n,e.path)]}}function Dc(n,e){const t={structuredQuery:{}},a=e.path;let i;null!==e.collectionGroup?(i=a,t.structuredQuery.from=[{collectionId:e.collectionGroup,allDescendants:!0}]):(i=a.popLast(),t.structuredQuery.from=[{collectionId:a.lastSegment()}]),t.parent=Ec(n,i);const r=function(n){if(0!==n.length)return jc(So.create(n,"and"))}(e.filters);r&&(t.structuredQuery.where=r);const s=function(n){if(0!==n.length)return n.map((n=>function(n){return{field:Fc(n.field),direction:Bc(n.dir)}}(n)))}(e.orderBy);s&&(t.structuredQuery.orderBy=s);const o=bc(n,e.limit);return null!==o&&(t.structuredQuery.limit=o),e.startAt&&(t.structuredQuery.startAt=function(n){return{before:n.inclusive,values:n.position}}(e.startAt)),e.endAt&&(t.structuredQuery.endAt=function(n){return{before:!n.inclusive,values:n.position}}(e.endAt)),{_t:t,parent:i}}function Lc(n){let e=function(n){const e=Ac(n);return 4===e.length?ms.emptyPath():_c(e)}(n.parent);const t=n.structuredQuery,a=t.from?t.from.length:0;let i=null;if(a>0){Jr(1===a);const n=t.from[0];n.allDescendants?i=n.collectionId:e=e.child(n.collectionId)}let r=[];t.where&&(r=function(n){const e=Nc(n);return e instanceof So&&To(e)?e.getFilters():[e]}(t.where));let s=[];t.orderBy&&(s=function(n){return n.map((n=>function(n){return new xo(Gc(n.field),function(n){switch(n){case"ASCENDING":return"asc";case"DESCENDING":return"desc";default:return}}(n.direction))}(n)))}(t.orderBy));let o=null;t.limit&&(o=function(n){let e;return e="object"==typeof n?n.value:n,Is(e)?null:e}(t.limit));let l=null;t.startAt&&(l=function(n){const e=!!n.before,t=n.values||[];return new yo(t,e)}(t.startAt));let c=null;return t.endAt&&(c=function(n){const e=!n.before,t=n.values||[];return new yo(t,e)}(t.endAt)),function(n,e,t,a,i,r,s,o){return new Vo(n,e,t,a,i,r,s,o)}(e,i,s,r,o,"F",l,c)}function Nc(n){return void 0!==n.unaryFilter?function(n){switch(n.unaryFilter.op){case"IS_NAN":const e=Gc(n.unaryFilter.field);return Co.create(e,"==",{doubleValue:NaN});case"IS_NULL":const t=Gc(n.unaryFilter.field);return Co.create(t,"==",{nullValue:"NULL_VALUE"});case"IS_NOT_NAN":const a=Gc(n.unaryFilter.field);return Co.create(a,"!=",{doubleValue:NaN});case"IS_NOT_NULL":const i=Gc(n.unaryFilter.field);return Co.create(i,"!=",{nullValue:"NULL_VALUE"});default:return Kr()}}(n):void 0!==n.fieldFilter?function(n){return Co.create(Gc(n.fieldFilter.field),function(n){switch(n){case"EQUAL":return"==";case"NOT_EQUAL":return"!=";case"GREATER_THAN":return">";case"GREATER_THAN_OR_EQUAL":return">=";case"LESS_THAN":return"<";case"LESS_THAN_OR_EQUAL":return"<=";case"ARRAY_CONTAINS":return"array-contains";case"IN":return"in";case"NOT_IN":return"not-in";case"ARRAY_CONTAINS_ANY":return"array-contains-any";default:return Kr()}}(n.fieldFilter.op),n.fieldFilter.value)}(n):void 0!==n.compositeFilter?function(n){return So.create(n.compositeFilter.filters.map((n=>Nc(n))),function(n){switch(n){case"AND":return"and";case"OR":return"or";default:return Kr()}}(n.compositeFilter.op))}(n):Kr()}function Bc(n){return mc[n]}function zc(n){return pc[n]}function Oc(n){return gc[n]}function Fc(n){return{fieldPath:n.canonicalString()}}function Gc(n){return gs.fromServerFormat(n.fieldPath)}function jc(n){return n instanceof Co?function(n){if("=="===n.op){if(lo(n.value))return{unaryFilter:{field:Fc(n.field),op:"IS_NAN"}};if(oo(n.value))return{unaryFilter:{field:Fc(n.field),op:"IS_NULL"}}}else if("!="===n.op){if(lo(n.value))return{unaryFilter:{field:Fc(n.field),op:"IS_NOT_NAN"}};if(oo(n.value))return{unaryFilter:{field:Fc(n.field),op:"IS_NOT_NULL"}}}return{fieldFilter:{field:Fc(n.field),op:zc(n.op),value:n.value}}}(n):n instanceof So?function(n){const e=n.getFilters().map((n=>jc(n)));return 1===e.length?e[0]:{compositeFilter:{op:Oc(n.op),filters:e}}}(n):Kr()}function Uc(n){const e=[];return n.fields.forEach((n=>e.push(n.canonicalString()))),{fieldPaths:e}}function Vc(n){return n.length>=4&&"projects"===n.get(0)&&"databases"===n.get(2)}class Hc{constructor(n,e,t,a,i=hs.min(),r=hs.min(),s=Fs.EMPTY_BYTE_STRING,o=null){this.target=n,this.targetId=e,this.purpose=t,this.sequenceNumber=a,this.snapshotVersion=i,this.lastLimboFreeSnapshotVersion=r,this.resumeToken=s,this.expectedCount=o}withSequenceNumber(n){return new Hc(this.target,this.targetId,this.purpose,n,this.snapshotVersion,this.lastLimboFreeSnapshotVersion,this.resumeToken,this.expectedCount)}withResumeToken(n,e){return new Hc(this.target,this.targetId,this.purpose,this.sequenceNumber,e,this.lastLimboFreeSnapshotVersion,n,null)}withExpectedCount(n){return new Hc(this.target,this.targetId,this.purpose,this.sequenceNumber,this.snapshotVersion,this.lastLimboFreeSnapshotVersion,this.resumeToken,n)}withLastLimboFreeSnapshotVersion(n){return new Hc(this.target,this.targetId,this.purpose,this.sequenceNumber,this.snapshotVersion,n,this.resumeToken,this.expectedCount)}}class qc{constructor(n){this.ct=n}}function Wc(n){const e=Lc({parent:n.parent,structuredQuery:n.structuredQuery});return"LAST"===n.limitType?Yo(e,e.limit,"L"):e}class Kc{constructor(){}It(n,e){this.Tt(n,e),e.Et()}Tt(n,e){if("nullValue"in n)this.dt(e,5);else if("booleanValue"in n)this.dt(e,10),e.At(n.booleanValue?1:0);else if("integerValue"in n)this.dt(e,15),e.At(Us(n.integerValue));else if("doubleValue"in n){const t=Us(n.doubleValue);isNaN(t)?this.dt(e,13):(this.dt(e,15),Es(t)?e.At(0):e.At(t))}else if("timestampValue"in n){let t=n.timestampValue;this.dt(e,20),"string"==typeof t&&(t=js(t)),e.Rt(`${t.seconds||""}`),e.At(t.nanos||0)}else if("stringValue"in n)this.Vt(n.stringValue,e),this.ft(e);else if("bytesValue"in n)this.dt(e,30),e.gt(Vs(n.bytesValue)),this.ft(e);else if("referenceValue"in n)this.yt(n.referenceValue,e);else if("geoPointValue"in n){const t=n.geoPointValue;this.dt(e,45),e.At(t.latitude||0),e.At(t.longitude||0)}else"mapValue"in n?fo(n)?this.dt(e,Number.MAX_SAFE_INTEGER):uo(n)?this.wt(n.mapValue,e):(this.St(n.mapValue,e),this.ft(e)):"arrayValue"in n?(this.bt(n.arrayValue,e),this.ft(e)):Kr()}Vt(n,e){this.dt(e,25),this.Dt(n,e)}Dt(n,e){e.Rt(n)}St(n,e){const t=n.fields||{};this.dt(e,55);for(const n of Object.keys(t))this.Vt(n,e),this.Tt(t[n],e)}wt(n,e){var t,a;const i=n.fields||{};this.dt(e,53);const r="value",s=(null===(a=null===(t=i[r].arrayValue)||void 0===t?void 0:t.values)||void 0===a?void 0:a.length)||0;this.dt(e,15),e.At(Us(s)),this.Vt(r,e),this.Tt(i[r],e)}bt(n,e){const t=n.values||[];this.dt(e,50);for(const n of t)this.Tt(n,e)}yt(n,e){this.dt(e,37),ys.fromName(n).path.forEach((n=>{this.dt(e,60),this.Dt(n,e)}))}dt(n,e){n.At(e)}ft(n){n.At(2)}}Kc.vt=new Kc;class Jc{constructor(){this.un=new $c}addToCollectionParentIndex(n,e){return this.un.add(e),Ss.resolve()}getCollectionParents(n,e){return Ss.resolve(this.un.getEntries(e))}addFieldIndex(n,e){return Ss.resolve()}deleteFieldIndex(n,e){return Ss.resolve()}deleteAllFieldIndexes(n){return Ss.resolve()}createTargetIndexes(n,e){return Ss.resolve()}getDocumentsMatchingTarget(n,e){return Ss.resolve(null)}getIndexType(n,e){return Ss.resolve(0)}getFieldIndexes(n,e){return Ss.resolve([])}getNextCollectionGroupToUpdate(n){return Ss.resolve(null)}getMinOffset(n,e){return Ss.resolve(vs.min())}getMinOffsetFromCollectionGroup(n,e){return Ss.resolve(vs.min())}updateCollectionGroup(n,e,t){return Ss.resolve()}updateIndexEntries(n,e){return Ss.resolve()}}class $c{constructor(){this.index={}}add(n){const e=n.lastSegment(),t=n.popLast(),a=this.index[e]||new Ns(ms.comparator),i=!a.has(t);return this.index[e]=a.add(t),i}has(n){const e=n.lastSegment(),t=n.popLast(),a=this.index[e];return a&&a.has(t)}getEntries(n){return(this.index[n]||new Ns(ms.comparator)).toArray()}}new Uint8Array(0);class Yc{constructor(n,e,t){this.cacheSizeCollectionThreshold=n,this.percentileToCollect=e,this.maximumSequenceNumbersToCollect=t}static withCacheSize(n){return new Yc(n,Yc.DEFAULT_COLLECTION_PERCENTILE,Yc.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT)}}Yc.DEFAULT_COLLECTION_PERCENTILE=10,Yc.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT=1e3,Yc.DEFAULT=new Yc(41943040,Yc.DEFAULT_COLLECTION_PERCENTILE,Yc.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT),Yc.DISABLED=new Yc(-1,0,0);class Qc{constructor(n){this.Ln=n}next(){return this.Ln+=2,this.Ln}static Bn(){return new Qc(0)}static kn(){return new Qc(-1)}}class Xc{constructor(){this.changes=new al((n=>n.toString()),((n,e)=>n.isEqual(e))),this.changesApplied=!1}addEntry(n){this.assertNotApplied(),this.changes.set(n.key,n)}removeEntry(n,e){this.assertNotApplied(),this.changes.set(n,go.newInvalidDocument(n).setReadTime(e))}getEntry(n,e){this.assertNotApplied();const t=this.changes.get(e);return void 0!==t?Ss.resolve(t):this.getFromCache(n,e)}getEntries(n,e){return this.getAllFromCache(n,e)}apply(n){return this.assertNotApplied(),this.changesApplied=!0,this.applyChanges(n)}assertNotApplied(){}}class Zc{constructor(n,e){this.overlayedDocument=n,this.mutatedFields=e}}class nu{constructor(n,e,t,a){this.remoteDocumentCache=n,this.mutationQueue=e,this.documentOverlayCache=t,this.indexManager=a}getDocument(n,e){let t=null;return this.documentOverlayCache.getOverlay(n,e).next((a=>(t=a,this.remoteDocumentCache.getEntry(n,e)))).next((n=>(null!==t&&zl(t.mutation,n,zs.empty(),ds.now()),n)))}getDocuments(n,e){return this.remoteDocumentCache.getEntries(n,e).next((e=>this.getLocalViewOfDocuments(n,e,ml()).next((()=>e))))}getLocalViewOfDocuments(n,e,t=ml()){const a=cl();return this.populateOverlays(n,a,e).next((()=>this.computeViews(n,e,a,t).next((n=>{let e=ol();return n.forEach(((n,t)=>{e=e.insert(n,t.overlayedDocument)})),e}))))}getOverlayedDocuments(n,e){const t=cl();return this.populateOverlays(n,t,e).next((()=>this.computeViews(n,e,t,ml())))}populateOverlays(n,e,t){const a=[];return t.forEach((n=>{e.has(n)||a.push(n)})),this.documentOverlayCache.getOverlays(n,a).next((n=>{n.forEach(((n,t)=>{e.set(n,t)}))}))}computeViews(n,e,t,a){let i=rl();const r=dl(),s=dl();return e.forEach(((n,e)=>{const s=t.get(e.key);a.has(e.key)&&(void 0===s||s.mutation instanceof jl)?i=i.insert(e.key,e):void 0!==s?(r.set(e.key,s.mutation.getFieldMask()),zl(s.mutation,e,s.mutation.getFieldMask(),ds.now())):r.set(e.key,zs.empty())})),this.recalculateAndSaveOverlays(n,i).next((n=>(n.forEach(((n,e)=>r.set(n,e))),e.forEach(((n,e)=>{var t;return s.set(n,new Zc(e,null!==(t=r.get(n))&&void 0!==t?t:null))})),s)))}recalculateAndSaveOverlays(n,e){const t=dl();let a=new Rs(((n,e)=>n-e)),i=ml();return this.mutationQueue.getAllMutationBatchesAffectingDocumentKeys(n,e).next((n=>{for(const i of n)i.keys().forEach((n=>{const r=e.get(n);if(null===r)return;let s=t.get(n)||zs.empty();s=i.applyToLocalView(r,s),t.set(n,s);const o=(a.get(i.batchId)||ml()).add(n);a=a.insert(i.batchId,o)}))})).next((()=>{const r=[],s=a.getReverseIterator();for(;s.hasNext();){const a=s.getNext(),o=a.key,l=a.value,c=ul();l.forEach((n=>{if(!i.has(n)){const a=Nl(e.get(n),t.get(n));null!==a&&c.set(n,a),i=i.add(n)}})),r.push(this.documentOverlayCache.saveOverlays(n,o,c))}return Ss.waitFor(r)})).next((()=>t))}recalculateAndSaveOverlaysForDocumentKeys(n,e){return this.remoteDocumentCache.getEntries(n,e).next((e=>this.recalculateAndSaveOverlays(n,e)))}getDocumentsMatchingQuery(n,e,t,a){return function(n){return ys.isDocumentKey(n.path)&&null===n.collectionGroup&&0===n.filters.length}(e)?this.getDocumentsMatchingDocumentQuery(n,e.path):Wo(e)?this.getDocumentsMatchingCollectionGroupQuery(n,e,t,a):this.getDocumentsMatchingCollectionQuery(n,e,t,a)}getNextDocuments(n,e,t,a){return this.remoteDocumentCache.getAllFromCollectionGroup(n,e,t,a).next((i=>{const r=a-i.size>0?this.documentOverlayCache.getOverlaysForCollectionGroup(n,e,t.largestBatchId,a-i.size):Ss.resolve(cl());let s=-1,o=i;return r.next((e=>Ss.forEach(e,((e,t)=>(s{o=o.insert(e,n)}))))).next((()=>this.populateOverlays(n,e,i))).next((()=>this.computeViews(n,o,e,ml()))).next((n=>({batchId:s,changes:ll(n)})))))}))}getDocumentsMatchingDocumentQuery(n,e){return this.getDocument(n,new ys(e)).next((n=>{let e=ol();return n.isFoundDocument()&&(e=e.insert(n.key,n)),e}))}getDocumentsMatchingCollectionGroupQuery(n,e,t,a){const i=e.collectionGroup;let r=ol();return this.indexManager.getCollectionParents(n,i).next((s=>Ss.forEach(s,(s=>{const o=function(n,e){return new Vo(e,null,n.explicitOrderBy.slice(),n.filters.slice(),n.limit,n.limitType,n.startAt,n.endAt)}(e,s.child(i));return this.getDocumentsMatchingCollectionQuery(n,o,t,a).next((n=>{n.forEach(((n,e)=>{r=r.insert(n,e)}))}))})).next((()=>r))))}getDocumentsMatchingCollectionQuery(n,e,t,a){let i;return this.documentOverlayCache.getOverlaysForCollection(n,e.path,t.largestBatchId).next((r=>(i=r,this.remoteDocumentCache.getDocumentsMatchingQuery(n,e,t,i,a)))).next((n=>{i.forEach(((e,t)=>{const a=t.getKey();null===n.get(a)&&(n=n.insert(a,go.newInvalidDocument(a)))}));let t=ol();return n.forEach(((n,a)=>{const r=i.get(n);void 0!==r&&zl(r.mutation,a,zs.empty(),ds.now()),nl(e,a)&&(t=t.insert(n,a))})),t}))}}class eu{constructor(n){this.serializer=n,this.hr=new Map,this.Pr=new Map}getBundleMetadata(n,e){return Ss.resolve(this.hr.get(e))}saveBundleMetadata(n,e){return this.hr.set(e.id,function(n){return{id:n.id,version:n.version,createTime:wc(n.createTime)}}(e)),Ss.resolve()}getNamedQuery(n,e){return Ss.resolve(this.Pr.get(e))}saveNamedQuery(n,e){return this.Pr.set(e.name,function(n){return{name:n.name,query:Wc(n.bundledQuery),readTime:wc(n.readTime)}}(e)),Ss.resolve()}}class tu{constructor(){this.overlays=new Rs(ys.comparator),this.Ir=new Map}getOverlay(n,e){return Ss.resolve(this.overlays.get(e))}getOverlays(n,e){const t=cl();return Ss.forEach(e,(e=>this.getOverlay(n,e).next((n=>{null!==n&&t.set(e,n)})))).next((()=>t))}saveOverlays(n,e,t){return t.forEach(((t,a)=>{this.ht(n,e,a)})),Ss.resolve()}removeOverlaysForBatchId(n,e,t){const a=this.Ir.get(t);return void 0!==a&&(a.forEach((n=>this.overlays=this.overlays.remove(n))),this.Ir.delete(t)),Ss.resolve()}getOverlaysForCollection(n,e,t){const a=cl(),i=e.length+1,r=new ys(e.child("")),s=this.overlays.getIteratorFrom(r);for(;s.hasNext();){const n=s.getNext().value,r=n.getKey();if(!e.isPrefixOf(r.path))break;r.path.length===i&&n.largestBatchId>t&&a.set(n.getKey(),n)}return Ss.resolve(a)}getOverlaysForCollectionGroup(n,e,t,a){let i=new Rs(((n,e)=>n-e));const r=this.overlays.getIterator();for(;r.hasNext();){const n=r.getNext().value;if(n.getKey().getCollectionGroup()===e&&n.largestBatchId>t){let e=i.get(n.largestBatchId);null===e&&(e=cl(),i=i.insert(n.largestBatchId,e)),e.set(n.getKey(),n)}}const s=cl(),o=i.getIterator();for(;o.hasNext()&&(o.getNext().value.forEach(((n,e)=>s.set(n,e))),!(s.size()>=a)););return Ss.resolve(s)}ht(n,e,t){const a=this.overlays.get(t.key);if(null!==a){const n=this.Ir.get(a.largestBatchId).delete(t.key);this.Ir.set(a.largestBatchId,n)}this.overlays=this.overlays.insert(t.key,new $l(e,t));let i=this.Ir.get(e);void 0===i&&(i=ml(),this.Ir.set(e,i)),this.Ir.set(e,i.add(t.key))}}class au{constructor(){this.sessionToken=Fs.EMPTY_BYTE_STRING}getSessionToken(n){return Ss.resolve(this.sessionToken)}setSessionToken(n,e){return this.sessionToken=e,Ss.resolve()}}class iu{constructor(){this.Tr=new Ns(ru.Er),this.dr=new Ns(ru.Ar)}isEmpty(){return this.Tr.isEmpty()}addReference(n,e){const t=new ru(n,e);this.Tr=this.Tr.add(t),this.dr=this.dr.add(t)}Rr(n,e){n.forEach((n=>this.addReference(n,e)))}removeReference(n,e){this.Vr(new ru(n,e))}mr(n,e){n.forEach((n=>this.removeReference(n,e)))}gr(n){const e=new ys(new ms([])),t=new ru(e,n),a=new ru(e,n+1),i=[];return this.dr.forEachInRange([t,a],(n=>{this.Vr(n),i.push(n.key)})),i}pr(){this.Tr.forEach((n=>this.Vr(n)))}Vr(n){this.Tr=this.Tr.delete(n),this.dr=this.dr.delete(n)}yr(n){const e=new ys(new ms([])),t=new ru(e,n),a=new ru(e,n+1);let i=ml();return this.dr.forEachInRange([t,a],(n=>{i=i.add(n.key)})),i}containsKey(n){const e=new ru(n,0),t=this.Tr.firstAfterOrEqual(e);return null!==t&&n.isEqual(t.key)}}class ru{constructor(n,e){this.key=n,this.wr=e}static Er(n,e){return ys.comparator(n.key,e.key)||cs(n.wr,e.wr)}static Ar(n,e){return cs(n.wr,e.wr)||ys.comparator(n.key,e.key)}}class su{constructor(n,e){this.indexManager=n,this.referenceDelegate=e,this.mutationQueue=[],this.Sr=1,this.br=new Ns(ru.Er)}checkEmpty(n){return Ss.resolve(0===this.mutationQueue.length)}addMutationBatch(n,e,t,a){const i=this.Sr;this.Sr++,this.mutationQueue.length>0&&this.mutationQueue[this.mutationQueue.length-1];const r=new Kl(i,e,t,a);this.mutationQueue.push(r);for(const e of a)this.br=this.br.add(new ru(e.key,i)),this.indexManager.addToCollectionParentIndex(n,e.key.path.popLast());return Ss.resolve(r)}lookupMutationBatch(n,e){return Ss.resolve(this.Dr(e))}getNextMutationBatchAfterBatchId(n,e){const t=e+1,a=this.vr(t),i=a<0?0:a;return Ss.resolve(this.mutationQueue.length>i?this.mutationQueue[i]:null)}getHighestUnacknowledgedBatchId(){return Ss.resolve(0===this.mutationQueue.length?-1:this.Sr-1)}getAllMutationBatches(n){return Ss.resolve(this.mutationQueue.slice())}getAllMutationBatchesAffectingDocumentKey(n,e){const t=new ru(e,0),a=new ru(e,Number.POSITIVE_INFINITY),i=[];return this.br.forEachInRange([t,a],(n=>{const e=this.Dr(n.wr);i.push(e)})),Ss.resolve(i)}getAllMutationBatchesAffectingDocumentKeys(n,e){let t=new Ns(cs);return e.forEach((n=>{const e=new ru(n,0),a=new ru(n,Number.POSITIVE_INFINITY);this.br.forEachInRange([e,a],(n=>{t=t.add(n.wr)}))})),Ss.resolve(this.Cr(t))}getAllMutationBatchesAffectingQuery(n,e){const t=e.path,a=t.length+1;let i=t;ys.isDocumentKey(i)||(i=i.child(""));const r=new ru(new ys(i),0);let s=new Ns(cs);return this.br.forEachWhile((n=>{const e=n.key.path;return!!t.isPrefixOf(e)&&(e.length===a&&(s=s.add(n.wr)),!0)}),r),Ss.resolve(this.Cr(s))}Cr(n){const e=[];return n.forEach((n=>{const t=this.Dr(n);null!==t&&e.push(t)})),e}removeMutationBatch(n,e){Jr(0===this.Fr(e.batchId,"removed")),this.mutationQueue.shift();let t=this.br;return Ss.forEach(e.mutations,(a=>{const i=new ru(a.key,e.batchId);return t=t.delete(i),this.referenceDelegate.markPotentiallyOrphaned(n,a.key)})).next((()=>{this.br=t}))}On(n){}containsKey(n,e){const t=new ru(e,0),a=this.br.firstAfterOrEqual(t);return Ss.resolve(e.isEqual(a&&a.key))}performConsistencyCheck(n){return this.mutationQueue.length,Ss.resolve()}Fr(n,e){return this.vr(n)}vr(n){return 0===this.mutationQueue.length?0:n-this.mutationQueue[0].batchId}Dr(n){const e=this.vr(n);return e<0||e>=this.mutationQueue.length?null:this.mutationQueue[e]}}class ou{constructor(n){this.Mr=n,this.docs=new Rs(ys.comparator),this.size=0}setIndexManager(n){this.indexManager=n}addEntry(n,e){const t=e.key,a=this.docs.get(t),i=a?a.size:0,r=this.Mr(e);return this.docs=this.docs.insert(t,{document:e.mutableCopy(),size:r}),this.size+=r-i,this.indexManager.addToCollectionParentIndex(n,t.path.popLast())}removeEntry(n){const e=this.docs.get(n);e&&(this.docs=this.docs.remove(n),this.size-=e.size)}getEntry(n,e){const t=this.docs.get(e);return Ss.resolve(t?t.document.mutableCopy():go.newInvalidDocument(e))}getEntries(n,e){let t=rl();return e.forEach((n=>{const e=this.docs.get(n);t=t.insert(n,e?e.document.mutableCopy():go.newInvalidDocument(n))})),Ss.resolve(t)}getDocumentsMatchingQuery(n,e,t,a){let i=rl();const r=e.path,s=new ys(r.child("")),o=this.docs.getIteratorFrom(s);for(;o.hasNext();){const{key:n,value:{document:s}}=o.getNext();if(!r.isPrefixOf(n.path))break;n.path.length>r.length+1||xs(bs(s),t)<=0||(a.has(s.key)||nl(e,s))&&(i=i.insert(s.key,s.mutableCopy()))}return Ss.resolve(i)}getAllFromCollectionGroup(n,e,t,a){Kr()}Or(n,e){return Ss.forEach(this.docs,(n=>e(n)))}newChangeBuffer(n){return new lu(this)}getSize(n){return Ss.resolve(this.size)}}class lu extends Xc{constructor(n){super(),this.cr=n}applyChanges(n){const e=[];return this.changes.forEach(((t,a)=>{a.isValidDocument()?e.push(this.cr.addEntry(n,a)):this.cr.removeEntry(t)})),Ss.waitFor(e)}getFromCache(n,e){return this.cr.getEntry(n,e)}getAllFromCache(n,e){return this.cr.getEntries(n,e)}}class cu{constructor(n){this.persistence=n,this.Nr=new al((n=>Go(n)),jo),this.lastRemoteSnapshotVersion=hs.min(),this.highestTargetId=0,this.Lr=0,this.Br=new iu,this.targetCount=0,this.kr=Qc.Bn()}forEachTarget(n,e){return this.Nr.forEach(((n,t)=>e(t))),Ss.resolve()}getLastRemoteSnapshotVersion(n){return Ss.resolve(this.lastRemoteSnapshotVersion)}getHighestSequenceNumber(n){return Ss.resolve(this.Lr)}allocateTargetId(n){return this.highestTargetId=this.kr.next(),Ss.resolve(this.highestTargetId)}setTargetsMetadata(n,e,t){return t&&(this.lastRemoteSnapshotVersion=t),e>this.Lr&&(this.Lr=e),Ss.resolve()}Kn(n){this.Nr.set(n.target,n);const e=n.targetId;e>this.highestTargetId&&(this.kr=new Qc(e),this.highestTargetId=e),n.sequenceNumber>this.Lr&&(this.Lr=n.sequenceNumber)}addTargetData(n,e){return this.Kn(e),this.targetCount+=1,Ss.resolve()}updateTargetData(n,e){return this.Kn(e),Ss.resolve()}removeTargetData(n,e){return this.Nr.delete(e.target),this.Br.gr(e.targetId),this.targetCount-=1,Ss.resolve()}removeTargets(n,e,t){let a=0;const i=[];return this.Nr.forEach(((r,s)=>{s.sequenceNumber<=e&&null===t.get(s.targetId)&&(this.Nr.delete(r),i.push(this.removeMatchingKeysForTargetId(n,s.targetId)),a++)})),Ss.waitFor(i).next((()=>a))}getTargetCount(n){return Ss.resolve(this.targetCount)}getTargetData(n,e){const t=this.Nr.get(e)||null;return Ss.resolve(t)}addMatchingKeys(n,e,t){return this.Br.Rr(e,t),Ss.resolve()}removeMatchingKeys(n,e,t){this.Br.mr(e,t);const a=this.persistence.referenceDelegate,i=[];return a&&e.forEach((e=>{i.push(a.markPotentiallyOrphaned(n,e))})),Ss.waitFor(i)}removeMatchingKeysForTargetId(n,e){return this.Br.gr(e),Ss.resolve()}getMatchingKeysForTargetId(n,e){const t=this.Br.yr(e);return Ss.resolve(t)}containsKey(n,e){return Ss.resolve(this.Br.containsKey(e))}}class uu{constructor(n,e){this.qr={},this.overlays={},this.Qr=new Ts(0),this.Kr=!1,this.Kr=!0,this.$r=new au,this.referenceDelegate=n(this),this.Ur=new cu(this),this.indexManager=new Jc,this.remoteDocumentCache=function(n){return new ou(n)}((n=>this.referenceDelegate.Wr(n))),this.serializer=new qc(e),this.Gr=new eu(this.serializer)}start(){return Promise.resolve()}shutdown(){return this.Kr=!1,Promise.resolve()}get started(){return this.Kr}setDatabaseDeletedListener(){}setNetworkEnabled(){}getIndexManager(n){return this.indexManager}getDocumentOverlayCache(n){let e=this.overlays[n.toKey()];return e||(e=new tu,this.overlays[n.toKey()]=e),e}getMutationQueue(n,e){let t=this.qr[n.toKey()];return t||(t=new su(e,this.referenceDelegate),this.qr[n.toKey()]=t),t}getGlobalsCache(){return this.$r}getTargetCache(){return this.Ur}getRemoteDocumentCache(){return this.remoteDocumentCache}getBundleCache(){return this.Gr}runTransaction(n,e,t){Vr("MemoryPersistence","Starting transaction:",n);const a=new du(this.Qr.next());return this.referenceDelegate.zr(),t(a).next((n=>this.referenceDelegate.jr(a).next((()=>n)))).toPromise().then((n=>(a.raiseOnCommittedEvent(),n)))}Hr(n,e){return Ss.or(Object.values(this.qr).map((t=>()=>t.containsKey(n,e))))}}class du extends ws{constructor(n){super(),this.currentSequenceNumber=n}}class hu{constructor(n){this.persistence=n,this.Jr=new iu,this.Yr=null}static Zr(n){return new hu(n)}get Xr(){if(this.Yr)return this.Yr;throw Kr()}addReference(n,e,t){return this.Jr.addReference(t,e),this.Xr.delete(t.toString()),Ss.resolve()}removeReference(n,e,t){return this.Jr.removeReference(t,e),this.Xr.add(t.toString()),Ss.resolve()}markPotentiallyOrphaned(n,e){return this.Xr.add(e.toString()),Ss.resolve()}removeTarget(n,e){this.Jr.gr(e.targetId).forEach((n=>this.Xr.add(n.toString())));const t=this.persistence.getTargetCache();return t.getMatchingKeysForTargetId(n,e.targetId).next((n=>{n.forEach((n=>this.Xr.add(n.toString())))})).next((()=>t.removeTargetData(n,e)))}zr(){this.Yr=new Set}jr(n){const e=this.persistence.getRemoteDocumentCache().newChangeBuffer();return Ss.forEach(this.Xr,(t=>{const a=ys.fromPath(t);return this.ei(n,a).next((n=>{n||e.removeEntry(a,hs.min())}))})).next((()=>(this.Yr=null,e.apply(n))))}updateLimboDocument(n,e){return this.ei(n,e).next((n=>{n?this.Xr.delete(e.toString()):this.Xr.add(e.toString())}))}Wr(n){return 0}ei(n,e){return Ss.or([()=>Ss.resolve(this.Jr.containsKey(e)),()=>this.persistence.getTargetCache().containsKey(n,e),()=>this.persistence.Hr(n,e)])}}class fu{constructor(n,e,t,a){this.targetId=n,this.fromCache=e,this.$i=t,this.Ui=a}static Wi(n,e){let t=ml(),a=ml();for(const n of e.docChanges)switch(n.type){case 0:t=t.add(n.doc.key);break;case 1:a=a.add(n.doc.key)}return new fu(n,e.fromCache,t,a)}}class mu{constructor(){this._documentReadCount=0}get documentReadCount(){return this._documentReadCount}incrementDocumentReadCount(n){this._documentReadCount+=n}}class pu{constructor(){this.Gi=!1,this.zi=!1,this.ji=100,this.Hi=!function(){var n;const e=null===(n=I())||void 0===n?void 0:n.forceEnvironment;if("node"===e)return!0;if("browser"===e)return!1;try{return"[object process]"===Object.prototype.toString.call(t.g.process)}catch(n){return!1}}()&&navigator.userAgent&&navigator.userAgent.includes("Safari")&&!navigator.userAgent.includes("Chrome")?8:function(n){const e=n.match(/Android ([\d.]+)/i),t=e?e[1].split(".").slice(0,2).join("."):"-1";return Number(t)}(R())>0?6:4}initialize(n,e){this.Ji=n,this.indexManager=e,this.Gi=!0}getDocumentsMatchingQuery(n,e,t,a){const i={result:null};return this.Yi(n,e).next((n=>{i.result=n})).next((()=>{if(!i.result)return this.Zi(n,e,a,t).next((n=>{i.result=n}))})).next((()=>{if(i.result)return;const t=new mu;return this.Xi(n,e,t).next((a=>{if(i.result=a,this.zi)return this.es(n,e,t,a.size)}))})).next((()=>i.result))}es(n,e,t,a){return t.documentReadCountthis.Hi*a?(Ur()<=an.DEBUG&&Vr("QueryEngine","The SDK decides to create cache indexes for query:",Zo(e),"as using cache indexes may help improve performance."),this.indexManager.createTargetIndexes(n,Jo(e))):Ss.resolve())}Yi(n,e){if(qo(e))return Ss.resolve(null);let t=Jo(e);return this.indexManager.getIndexType(n,t).next((a=>0===a?null:(null!==e.limit&&1===a&&(e=Yo(e,null,"F"),t=Jo(e)),this.indexManager.getDocumentsMatchingTarget(n,t).next((a=>{const i=ml(...a);return this.Ji.getDocuments(n,i).next((a=>this.indexManager.getMinOffset(n,t).next((t=>{const r=this.ts(e,a);return this.ns(e,r,i,t.readTime)?this.Yi(n,Yo(e,null,"F")):this.rs(n,r,e,t)}))))})))))}Zi(n,e,t,a){return qo(e)||a.isEqual(hs.min())?Ss.resolve(null):this.Ji.getDocuments(n,t).next((i=>{const r=this.ts(e,i);return this.ns(e,r,t,a)?Ss.resolve(null):(Ur()<=an.DEBUG&&Vr("QueryEngine","Re-using previous result from %s to execute query: %s",a.toString(),Zo(e)),this.rs(n,r,e,function(n,e){const t=n.toTimestamp().seconds,a=n.toTimestamp().nanoseconds+1,i=hs.fromTimestamp(1e9===a?new ds(t+1,0):new ds(t,a));return new vs(i,ys.empty(),e)}(a,-1)).next((n=>n)))}))}ts(n,e){let t=new Ns(el(n));return e.forEach(((e,a)=>{nl(n,a)&&(t=t.add(a))})),t}ns(n,e,t,a){if(null===n.limit)return!1;if(t.size!==e.size)return!0;const i="F"===n.limitType?e.last():e.first();return!!i&&(i.hasPendingWrites||i.version.compareTo(a)>0)}Xi(n,e,t){return Ur()<=an.DEBUG&&Vr("QueryEngine","Using full collection scan to execute query:",Zo(e)),this.Ji.getDocumentsMatchingQuery(n,e,vs.min(),t)}rs(n,e,t,a){return this.Ji.getDocumentsMatchingQuery(n,t,a).next((n=>(e.forEach((e=>{n=n.insert(e.key,e)})),n)))}}class gu{constructor(n,e,t,a){this.persistence=n,this.ss=e,this.serializer=a,this.os=new Rs(cs),this._s=new al((n=>Go(n)),jo),this.us=new Map,this.cs=n.getRemoteDocumentCache(),this.Ur=n.getTargetCache(),this.Gr=n.getBundleCache(),this.ls(t)}ls(n){this.documentOverlayCache=this.persistence.getDocumentOverlayCache(n),this.indexManager=this.persistence.getIndexManager(n),this.mutationQueue=this.persistence.getMutationQueue(n,this.indexManager),this.localDocuments=new nu(this.cs,this.mutationQueue,this.documentOverlayCache,this.indexManager),this.cs.setIndexManager(this.indexManager),this.ss.initialize(this.localDocuments,this.indexManager)}collectGarbage(n){return this.persistence.runTransaction("Collect garbage","readwrite-primary",(e=>n.collect(e,this.os)))}}async function yu(n,e){const t=$r(n);return await t.persistence.runTransaction("Handle user change","readonly",(n=>{let a;return t.mutationQueue.getAllMutationBatches(n).next((i=>(a=i,t.ls(e),t.mutationQueue.getAllMutationBatches(n)))).next((e=>{const i=[],r=[];let s=ml();for(const n of a){i.push(n.batchId);for(const e of n.mutations)s=s.add(e.key)}for(const n of e){r.push(n.batchId);for(const e of n.mutations)s=s.add(e.key)}return t.localDocuments.getDocuments(n,s).next((n=>({hs:n,removedBatchIds:i,addedBatchIds:r})))}))}))}function bu(n){const e=$r(n);return e.persistence.runTransaction("Get last remote snapshot version","readonly",(n=>e.Ur.getLastRemoteSnapshotVersion(n)))}function vu(n,e){const t=$r(n);return t.persistence.runTransaction("Get next mutation batch","readonly",(n=>(void 0===e&&(e=-1),t.mutationQueue.getNextMutationBatchAfterBatchId(n,e))))}async function xu(n,e,t){const a=$r(n),i=a.os.get(e),r=t?"readwrite":"readwrite-primary";try{t||await a.persistence.runTransaction("Release target",r,(n=>a.persistence.referenceDelegate.removeTarget(n,i)))}catch(n){if(!As(n))throw n;Vr("LocalStore",`Failed to update sequence numbers for target ${e}: ${n}`)}a.os=a.os.remove(e),a._s.delete(i.target)}function ku(n,e,t){const a=$r(n);let i=hs.min(),r=ml();return a.persistence.runTransaction("Execute query","readwrite",(n=>function(n,e,t){const a=$r(n),i=a._s.get(t);return void 0!==i?Ss.resolve(a.os.get(i)):a.Ur.getTargetData(e,t)}(a,n,Jo(e)).next((e=>{if(e)return i=e.lastLimboFreeSnapshotVersion,a.Ur.getMatchingKeysForTargetId(n,e.targetId).next((n=>{r=n}))})).next((()=>a.ss.getDocumentsMatchingQuery(n,e,t?i:hs.min(),t?r:ml()))).next((n=>(function(n,e,t){let a=n.us.get(e)||hs.min();t.forEach(((n,e)=>{e.readTime.compareTo(a)>0&&(a=e.readTime)})),n.us.set(e,a)}(a,function(n){return n.collectionGroup||(n.path.length%2==1?n.path.lastSegment():n.path.get(n.path.length-2))}(e),n),{documents:n,Ts:r})))))}class wu{constructor(){this.activeTargetIds=pl}fs(n){this.activeTargetIds=this.activeTargetIds.add(n)}gs(n){this.activeTargetIds=this.activeTargetIds.delete(n)}Vs(){const n={activeTargetIds:this.activeTargetIds.toArray(),updateTimeMs:Date.now()};return JSON.stringify(n)}}class Cu{constructor(){this.so=new wu,this.oo={},this.onlineStateHandler=null,this.sequenceNumberHandler=null}addPendingMutation(n){}updateMutationState(n,e,t){}addLocalQueryTarget(n,e=!0){return e&&this.so.fs(n),this.oo[n]||"not-current"}updateQueryState(n,e,t){this.oo[n]=e}removeLocalQueryTarget(n){this.so.gs(n)}isLocalQueryTarget(n){return this.so.activeTargetIds.has(n)}clearQueryState(n){delete this.oo[n]}getAllActiveQueryTargets(){return this.so.activeTargetIds}isActiveQueryTarget(n){return this.so.activeTargetIds.has(n)}start(){return this.so=new wu,Promise.resolve()}handleUserChange(n,e,t){}setOnlineState(n){}shutdown(){}writeSequenceNumber(n){}notifyBundleLoaded(n){}}class Su{_o(n){}shutdown(){}}class Au{constructor(){this.ao=()=>this.uo(),this.co=()=>this.lo(),this.ho=[],this.Po()}_o(n){this.ho.push(n)}shutdown(){window.removeEventListener("online",this.ao),window.removeEventListener("offline",this.co)}Po(){window.addEventListener("online",this.ao),window.addEventListener("offline",this.co)}uo(){Vr("ConnectivityMonitor","Network connectivity changed: AVAILABLE");for(const n of this.ho)n(0)}lo(){Vr("ConnectivityMonitor","Network connectivity changed: UNAVAILABLE");for(const n of this.ho)n(1)}static D(){return"undefined"!=typeof window&&void 0!==window.addEventListener&&void 0!==window.removeEventListener}}let Tu=null;function Iu(){return null===Tu?Tu=268435456+Math.round(2147483648*Math.random()):Tu++,"0x"+Tu.toString(16)}const Eu={BatchGetDocuments:"batchGet",Commit:"commit",RunQuery:"runQuery",RunAggregationQuery:"runAggregationQuery"};class Mu{constructor(n){this.Io=n.Io,this.To=n.To}Eo(n){this.Ao=n}Ro(n){this.Vo=n}mo(n){this.fo=n}onMessage(n){this.po=n}close(){this.To()}send(n){this.Io(n)}yo(){this.Ao()}wo(){this.Vo()}So(n){this.fo(n)}bo(n){this.po(n)}}const _u="WebChannelConnection";class Pu extends class{constructor(n){this.databaseInfo=n,this.databaseId=n.databaseId;const e=n.ssl?"https":"http",t=encodeURIComponent(this.databaseId.projectId),a=encodeURIComponent(this.databaseId.database);this.Do=e+"://"+n.host,this.vo=`projects/${t}/databases/${a}`,this.Co="(default)"===this.databaseId.database?`project_id=${t}`:`project_id=${t}&database_id=${a}`}get Fo(){return!1}Mo(n,e,t,a,i){const r=Iu(),s=this.xo(n,e.toUriEncodedString());Vr("RestConnection",`Sending RPC '${n}' ${r}:`,s,t);const o={"google-cloud-resource-prefix":this.vo,"x-goog-request-params":this.Co};return this.Oo(o,a,i),this.No(n,s,o,t).then((e=>(Vr("RestConnection",`Received RPC '${n}' ${r}: `,e),e)),(e=>{throw qr("RestConnection",`RPC '${n}' ${r} failed with error: `,e,"url: ",s,"request:",t),e}))}Lo(n,e,t,a,i,r){return this.Mo(n,e,t,a,i)}Oo(n,e,t){n["X-Goog-Api-Client"]="gl-js/ fire/"+Gr,n["Content-Type"]="text/plain",this.databaseInfo.appId&&(n["X-Firebase-GMPID"]=this.databaseInfo.appId),e&&e.headers.forEach(((e,t)=>n[t]=e)),t&&t.headers.forEach(((e,t)=>n[t]=e))}xo(n,e){const t=Eu[n];return`${this.Do}/v1/${e}:${t}`}terminate(){}}{constructor(n){super(n),this.forceLongPolling=n.forceLongPolling,this.autoDetectLongPolling=n.autoDetectLongPolling,this.useFetchStreams=n.useFetchStreams,this.longPollingOptions=n.longPollingOptions}No(n,e,t,a){const i=Iu();return new Promise(((r,s)=>{const o=new Ir;o.setWithCredentials(!0),o.listenOnce(_r.COMPLETE,(()=>{try{switch(o.getLastErrorCode()){case Pr.NO_ERROR:const e=o.getResponseJson();Vr(_u,`XHR for RPC '${n}' ${i} received:`,JSON.stringify(e)),r(e);break;case Pr.TIMEOUT:Vr(_u,`RPC '${n}' ${i} timed out`),s(new Qr(Yr.DEADLINE_EXCEEDED,"Request time out"));break;case Pr.HTTP_ERROR:const t=o.getStatus();if(Vr(_u,`RPC '${n}' ${i} failed with status:`,t,"response text:",o.getResponseText()),t>0){let n=o.getResponseJson();Array.isArray(n)&&(n=n[0]);const e=null==n?void 0:n.error;if(e&&e.status&&e.message){const n=function(n){const e=n.toLowerCase().replace(/_/g,"-");return Object.values(Yr).indexOf(e)>=0?e:Yr.UNKNOWN}(e.status);s(new Qr(n,e.message))}else s(new Qr(Yr.UNKNOWN,"Server responded with status "+o.getStatus()))}else s(new Qr(Yr.UNAVAILABLE,"Connection failed."));break;default:Kr()}}finally{Vr(_u,`RPC '${n}' ${i} completed.`)}}));const l=JSON.stringify(a);Vr(_u,`RPC '${n}' ${i} sending request:`,a),o.send(e,"POST",l,t,15)}))}Bo(n,e,t){const a=Iu(),i=[this.Do,"/","google.firestore.v1.Firestore","/",n,"/channel"],r=Nr(),s=Lr(),o={httpSessionIdParam:"gsessionid",initMessageHeaders:{},messageUrlParams:{database:`projects/${this.databaseId.projectId}/databases/${this.databaseId.database}`},sendRawJson:!0,supportsCrossDomainXhr:!0,internalChannelParams:{forwardChannelRequestTimeoutMs:6e5},forceLongPolling:this.forceLongPolling,detectBufferingProxy:this.autoDetectLongPolling},l=this.longPollingOptions.timeoutSeconds;void 0!==l&&(o.longPollingTimeout=Math.round(1e3*l)),this.useFetchStreams&&(o.xmlHttpFactory=new Er({})),this.Oo(o.initMessageHeaders,e,t),o.encodeInitMessageHeaders=!0;const c=i.join("");Vr(_u,`Creating RPC '${n}' stream ${a}: ${c}`,o);const u=r.createWebChannel(c,o);let d=!1,h=!1;const f=new Mu({Io:e=>{h?Vr(_u,`Not sending because RPC '${n}' stream ${a} is closed:`,e):(d||(Vr(_u,`Opening RPC '${n}' stream ${a} transport.`),u.open(),d=!0),Vr(_u,`RPC '${n}' stream ${a} sending:`,e),u.send(e))},To:()=>u.close()}),m=(n,e,t)=>{n.listen(e,(n=>{try{t(n)}catch(n){setTimeout((()=>{throw n}),0)}}))};return m(u,Mr.EventType.OPEN,(()=>{h||(Vr(_u,`RPC '${n}' stream ${a} transport opened.`),f.yo())})),m(u,Mr.EventType.CLOSE,(()=>{h||(h=!0,Vr(_u,`RPC '${n}' stream ${a} transport closed`),f.So())})),m(u,Mr.EventType.ERROR,(e=>{h||(h=!0,qr(_u,`RPC '${n}' stream ${a} transport errored:`,e),f.So(new Qr(Yr.UNAVAILABLE,"The operation could not be completed")))})),m(u,Mr.EventType.MESSAGE,(e=>{var t;if(!h){const i=e.data[0];Jr(!!i);const r=i,s=r.error||(null===(t=r[0])||void 0===t?void 0:t.error);if(s){Vr(_u,`RPC '${n}' stream ${a} received error:`,s);const e=s.status;let t=function(n){const e=Ql[n];if(void 0!==e)return Zl(e)}(e),i=s.message;void 0===t&&(t=Yr.INTERNAL,i="Unknown error status: "+e+" with message "+s.message),h=!0,f.So(new Qr(t,i)),u.close()}else Vr(_u,`RPC '${n}' stream ${a} received:`,i),f.bo(i)}})),m(s,Dr.STAT_EVENT,(e=>{e.stat===Rr.PROXY?Vr(_u,`RPC '${n}' stream ${a} detected buffering proxy`):e.stat===Rr.NOPROXY&&Vr(_u,`RPC '${n}' stream ${a} detected no buffering proxy`)})),setTimeout((()=>{f.wo()}),0),f}}function Ru(){return"undefined"!=typeof document?document:null}function Du(n){return new yc(n,!0)}class Lu{constructor(n,e,t=1e3,a=1.5,i=6e4){this.ui=n,this.timerId=e,this.ko=t,this.qo=a,this.Qo=i,this.Ko=0,this.$o=null,this.Uo=Date.now(),this.reset()}reset(){this.Ko=0}Wo(){this.Ko=this.Qo}Go(n){this.cancel();const e=Math.floor(this.Ko+this.zo()),t=Math.max(0,Date.now()-this.Uo),a=Math.max(0,e-t);a>0&&Vr("ExponentialBackoff",`Backing off for ${a} ms (base delay: ${this.Ko} ms, delay with jitter: ${e} ms, last attempt: ${t} ms ago)`),this.$o=this.ui.enqueueAfterDelay(this.timerId,a,(()=>(this.Uo=Date.now(),n()))),this.Ko*=this.qo,this.Kothis.Qo&&(this.Ko=this.Qo)}jo(){null!==this.$o&&(this.$o.skipDelay(),this.$o=null)}cancel(){null!==this.$o&&(this.$o.cancel(),this.$o=null)}zo(){return(Math.random()-.5)*this.Ko}}class Nu{constructor(n,e,t,a,i,r,s,o){this.ui=n,this.Ho=t,this.Jo=a,this.connection=i,this.authCredentialsProvider=r,this.appCheckCredentialsProvider=s,this.listener=o,this.state=0,this.Yo=0,this.Zo=null,this.Xo=null,this.stream=null,this.e_=0,this.t_=new Lu(n,e)}n_(){return 1===this.state||5===this.state||this.r_()}r_(){return 2===this.state||3===this.state}start(){this.e_=0,4!==this.state?this.auth():this.i_()}async stop(){this.n_()&&await this.close(0)}s_(){this.state=0,this.t_.reset()}o_(){this.r_()&&null===this.Zo&&(this.Zo=this.ui.enqueueAfterDelay(this.Ho,6e4,(()=>this.__())))}a_(n){this.u_(),this.stream.send(n)}async __(){if(this.r_())return this.close(0)}u_(){this.Zo&&(this.Zo.cancel(),this.Zo=null)}c_(){this.Xo&&(this.Xo.cancel(),this.Xo=null)}async close(n,e){this.u_(),this.c_(),this.t_.cancel(),this.Yo++,4!==n?this.t_.reset():e&&e.code===Yr.RESOURCE_EXHAUSTED?(Hr(e.toString()),Hr("Using maximum backoff delay to prevent overloading the backend."),this.t_.Wo()):e&&e.code===Yr.UNAUTHENTICATED&&3!==this.state&&(this.authCredentialsProvider.invalidateToken(),this.appCheckCredentialsProvider.invalidateToken()),null!==this.stream&&(this.l_(),this.stream.close(),this.stream=null),this.state=n,await this.listener.mo(e)}l_(){}auth(){this.state=1;const n=this.h_(this.Yo),e=this.Yo;Promise.all([this.authCredentialsProvider.getToken(),this.appCheckCredentialsProvider.getToken()]).then((([n,t])=>{this.Yo===e&&this.P_(n,t)}),(e=>{n((()=>{const n=new Qr(Yr.UNKNOWN,"Fetching auth token failed: "+e.message);return this.I_(n)}))}))}P_(n,e){const t=this.h_(this.Yo);this.stream=this.T_(n,e),this.stream.Eo((()=>{t((()=>this.listener.Eo()))})),this.stream.Ro((()=>{t((()=>(this.state=2,this.Xo=this.ui.enqueueAfterDelay(this.Jo,1e4,(()=>(this.r_()&&(this.state=3),Promise.resolve()))),this.listener.Ro())))})),this.stream.mo((n=>{t((()=>this.I_(n)))})),this.stream.onMessage((n=>{t((()=>1==++this.e_?this.E_(n):this.onNext(n)))}))}i_(){this.state=5,this.t_.Go((async()=>{this.state=0,this.start()}))}I_(n){return Vr("PersistentStream",`close with error: ${n}`),this.stream=null,this.close(4,n)}h_(n){return e=>{this.ui.enqueueAndForget((()=>this.Yo===n?e():(Vr("PersistentStream","stream callback skipped by getCloseGuardedDispatcher."),Promise.resolve())))}}}class Bu extends Nu{constructor(n,e,t,a,i,r){super(n,"listen_stream_connection_backoff","listen_stream_idle","health_check_timeout",e,t,a,r),this.serializer=i}T_(n,e){return this.connection.Bo("Listen",n,e)}E_(n){return this.onNext(n)}onNext(n){this.t_.reset();const e=function(n,e){let t;if("targetChange"in e){e.targetChange;const a=function(n){return"NO_CHANGE"===n?0:"ADD"===n?1:"REMOVE"===n?2:"CURRENT"===n?3:"RESET"===n?4:Kr()}(e.targetChange.targetChangeType||"NO_CHANGE"),i=e.targetChange.targetIds||[],r=function(n,e){return n.useProto3Json?(Jr(void 0===e||"string"==typeof e),Fs.fromBase64String(e||"")):(Jr(void 0===e||e instanceof Buffer||e instanceof Uint8Array),Fs.fromUint8Array(e||new Uint8Array))}(n,e.targetChange.resumeToken),s=e.targetChange.cause,o=s&&function(n){const e=void 0===n.code?Yr.UNKNOWN:Zl(n.code);return new Qr(e,n.message||"")}(s);t=new cc(a,i,r,o||null)}else if("documentChange"in e){e.documentChange;const a=e.documentChange;a.document,a.document.name,a.document.updateTime;const i=Ic(n,a.document.name),r=wc(a.document.updateTime),s=a.document.createTime?wc(a.document.createTime):hs.min(),o=new mo({mapValue:{fields:a.document.fields}}),l=go.newFoundDocument(i,r,s,o),c=a.targetIds||[],u=a.removedTargetIds||[];t=new oc(c,u,l.key,l)}else if("documentDelete"in e){e.documentDelete;const a=e.documentDelete;a.document;const i=Ic(n,a.document),r=a.readTime?wc(a.readTime):hs.min(),s=go.newNoDocument(i,r),o=a.removedTargetIds||[];t=new oc([],o,s.key,s)}else if("documentRemove"in e){e.documentRemove;const a=e.documentRemove;a.document;const i=Ic(n,a.document),r=a.removedTargetIds||[];t=new oc([],r,i,null)}else{if(!("filter"in e))return Kr();{e.filter;const n=e.filter;n.targetId;const{count:a=0,unchangedNames:i}=n,r=new Yl(a,i),s=n.targetId;t=new lc(s,r)}}return t}(this.serializer,n),t=function(n){if(!("targetChange"in n))return hs.min();const e=n.targetChange;return e.targetIds&&e.targetIds.length?hs.min():e.readTime?wc(e.readTime):hs.min()}(n);return this.listener.d_(e,t)}A_(n){const e={};e.database=Mc(this.serializer),e.addTarget=function(n,e){let t;const a=e.target;if(t=Uo(a)?{documents:Rc(n,a)}:{query:Dc(n,a)._t},t.targetId=e.targetId,e.resumeToken.approximateByteSize()>0){t.resumeToken=xc(n,e.resumeToken);const a=bc(n,e.expectedCount);null!==a&&(t.expectedCount=a)}else if(e.snapshotVersion.compareTo(hs.min())>0){t.readTime=vc(n,e.snapshotVersion.toTimestamp());const a=bc(n,e.expectedCount);null!==a&&(t.expectedCount=a)}return t}(this.serializer,n);const t=function(n,e){const t=function(n){switch(n){case"TargetPurposeListen":return null;case"TargetPurposeExistenceFilterMismatch":return"existence-filter-mismatch";case"TargetPurposeExistenceFilterMismatchBloom":return"existence-filter-mismatch-bloom";case"TargetPurposeLimboResolution":return"limbo-document";default:return Kr()}}(e.purpose);return null==t?null:{"goog-listen-tags":t}}(this.serializer,n);t&&(e.labels=t),this.a_(e)}R_(n){const e={};e.database=Mc(this.serializer),e.removeTarget=n,this.a_(e)}}class zu extends Nu{constructor(n,e,t,a,i,r){super(n,"write_stream_connection_backoff","write_stream_idle","health_check_timeout",e,t,a,r),this.serializer=i}get V_(){return this.e_>0}start(){this.lastStreamToken=void 0,super.start()}l_(){this.V_&&this.m_([])}T_(n,e){return this.connection.Bo("Write",n,e)}E_(n){return Jr(!!n.streamToken),this.lastStreamToken=n.streamToken,Jr(!n.writeResults||0===n.writeResults.length),this.listener.f_()}onNext(n){Jr(!!n.streamToken),this.lastStreamToken=n.streamToken,this.t_.reset();const e=function(n,e){return n&&n.length>0?(Jr(void 0!==e),n.map((n=>function(n,e){let t=n.updateTime?wc(n.updateTime):wc(e);return t.isEqual(hs.min())&&(t=wc(e)),new Pl(t,n.transformResults||[])}(n,e)))):[]}(n.writeResults,n.commitTime),t=wc(n.commitTime);return this.listener.g_(t,e)}p_(){const n={};n.database=Mc(this.serializer),this.a_(n)}m_(n){const e={streamToken:this.lastStreamToken,writes:n.map((n=>function(n,e){let t;if(e instanceof Gl)t={update:Pc(n,e.key,e.value)};else if(e instanceof ql)t={delete:Tc(n,e.key)};else if(e instanceof jl)t={update:Pc(n,e.key,e.data),updateMask:Uc(e.fieldMask)};else{if(!(e instanceof Wl))return Kr();t={verify:Tc(n,e.key)}}return e.fieldTransforms.length>0&&(t.updateTransforms=e.fieldTransforms.map((n=>function(n,e){const t=e.transform;if(t instanceof Cl)return{fieldPath:e.field.canonicalString(),setToServerValue:"REQUEST_TIME"};if(t instanceof Sl)return{fieldPath:e.field.canonicalString(),appendMissingElements:{values:t.elements}};if(t instanceof Tl)return{fieldPath:e.field.canonicalString(),removeAllFromArray:{values:t.elements}};if(t instanceof El)return{fieldPath:e.field.canonicalString(),increment:t.Pe};throw Kr()}(0,n)))),e.precondition.isNone||(t.currentDocument=function(n,e){return void 0!==e.updateTime?{updateTime:kc(n,e.updateTime)}:void 0!==e.exists?{exists:e.exists}:Kr()}(n,e.precondition)),t}(this.serializer,n)))};this.a_(e)}}class Ou extends class{}{constructor(n,e,t,a){super(),this.authCredentials=n,this.appCheckCredentials=e,this.connection=t,this.serializer=a,this.y_=!1}w_(){if(this.y_)throw new Qr(Yr.FAILED_PRECONDITION,"The client has already been terminated.")}Mo(n,e,t,a){return this.w_(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then((([i,r])=>this.connection.Mo(n,Sc(e,t),a,i,r))).catch((n=>{throw"FirebaseError"===n.name?(n.code===Yr.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),n):new Qr(Yr.UNKNOWN,n.toString())}))}Lo(n,e,t,a,i){return this.w_(),Promise.all([this.authCredentials.getToken(),this.appCheckCredentials.getToken()]).then((([r,s])=>this.connection.Lo(n,Sc(e,t),a,r,s,i))).catch((n=>{throw"FirebaseError"===n.name?(n.code===Yr.UNAUTHENTICATED&&(this.authCredentials.invalidateToken(),this.appCheckCredentials.invalidateToken()),n):new Qr(Yr.UNKNOWN,n.toString())}))}terminate(){this.y_=!0,this.connection.terminate()}}class Fu{constructor(n,e){this.asyncQueue=n,this.onlineStateHandler=e,this.state="Unknown",this.S_=0,this.b_=null,this.D_=!0}v_(){0===this.S_&&(this.C_("Unknown"),this.b_=this.asyncQueue.enqueueAfterDelay("online_state_timeout",1e4,(()=>(this.b_=null,this.F_("Backend didn't respond within 10 seconds."),this.C_("Offline"),Promise.resolve()))))}M_(n){"Online"===this.state?this.C_("Unknown"):(this.S_++,this.S_>=1&&(this.x_(),this.F_(`Connection failed 1 times. Most recent error: ${n.toString()}`),this.C_("Offline")))}set(n){this.x_(),this.S_=0,"Online"===n&&(this.D_=!1),this.C_(n)}C_(n){n!==this.state&&(this.state=n,this.onlineStateHandler(n))}F_(n){const e=`Could not reach Cloud Firestore backend. ${n}\nThis typically indicates that your device does not have a healthy Internet connection at the moment. The client will operate in offline mode until it is able to successfully connect to the backend.`;this.D_?(Hr(e),this.D_=!1):Vr("OnlineStateTracker",e)}x_(){null!==this.b_&&(this.b_.cancel(),this.b_=null)}}class Gu{constructor(n,e,t,a,i){this.localStore=n,this.datastore=e,this.asyncQueue=t,this.remoteSyncer={},this.O_=[],this.N_=new Map,this.L_=new Set,this.B_=[],this.k_=i,this.k_._o((n=>{t.enqueueAndForget((async()=>{$u(this)&&(Vr("RemoteStore","Restarting streams for network reachability change."),await async function(n){const e=$r(n);e.L_.add(4),await Uu(e),e.q_.set("Unknown"),e.L_.delete(4),await ju(e)}(this))}))})),this.q_=new Fu(t,a)}}async function ju(n){if($u(n))for(const e of n.B_)await e(!0)}async function Uu(n){for(const e of n.B_)await e(!1)}function Vu(n,e){const t=$r(n);t.N_.has(e.targetId)||(t.N_.set(e.targetId,e),Ju(t)?Ku(t):fd(t).r_()&&qu(t,e))}function Hu(n,e){const t=$r(n),a=fd(t);t.N_.delete(e),a.r_()&&Wu(t,e),0===t.N_.size&&(a.r_()?a.o_():$u(t)&&t.q_.set("Unknown"))}function qu(n,e){if(n.Q_.xe(e.targetId),e.resumeToken.approximateByteSize()>0||e.snapshotVersion.compareTo(hs.min())>0){const t=n.remoteSyncer.getRemoteKeysForTarget(e.targetId).size;e=e.withExpectedCount(t)}fd(n).A_(e)}function Wu(n,e){n.Q_.xe(e),fd(n).R_(e)}function Ku(n){n.Q_=new dc({getRemoteKeysForTarget:e=>n.remoteSyncer.getRemoteKeysForTarget(e),ot:e=>n.N_.get(e)||null,tt:()=>n.datastore.serializer.databaseId}),fd(n).start(),n.q_.v_()}function Ju(n){return $u(n)&&!fd(n).n_()&&n.N_.size>0}function $u(n){return 0===$r(n).L_.size}function Yu(n){n.Q_=void 0}async function Qu(n){n.q_.set("Online")}async function Xu(n){n.N_.forEach(((e,t)=>{qu(n,e)}))}async function Zu(n,e){Yu(n),Ju(n)?(n.q_.M_(e),Ku(n)):n.q_.set("Unknown")}async function nd(n,e,t){if(n.q_.set("Online"),e instanceof cc&&2===e.state&&e.cause)try{await async function(n,e){const t=e.cause;for(const a of e.targetIds)n.N_.has(a)&&(await n.remoteSyncer.rejectListen(a,t),n.N_.delete(a),n.Q_.removeTarget(a))}(n,e)}catch(t){Vr("RemoteStore","Failed to remove targets %s: %s ",e.targetIds.join(","),t),await ed(n,t)}else if(e instanceof oc?n.Q_.Ke(e):e instanceof lc?n.Q_.He(e):n.Q_.We(e),!t.isEqual(hs.min()))try{const e=await bu(n.localStore);t.compareTo(e)>=0&&await function(n,e){const t=n.Q_.rt(e);return t.targetChanges.forEach(((t,a)=>{if(t.resumeToken.approximateByteSize()>0){const i=n.N_.get(a);i&&n.N_.set(a,i.withResumeToken(t.resumeToken,e))}})),t.targetMismatches.forEach(((e,t)=>{const a=n.N_.get(e);if(!a)return;n.N_.set(e,a.withResumeToken(Fs.EMPTY_BYTE_STRING,a.snapshotVersion)),Wu(n,e);const i=new Hc(a.target,e,t,a.sequenceNumber);qu(n,i)})),n.remoteSyncer.applyRemoteEvent(t)}(n,t)}catch(e){Vr("RemoteStore","Failed to raise snapshot:",e),await ed(n,e)}}async function ed(n,e,t){if(!As(e))throw e;n.L_.add(1),await Uu(n),n.q_.set("Offline"),t||(t=()=>bu(n.localStore)),n.asyncQueue.enqueueRetryable((async()=>{Vr("RemoteStore","Retrying IndexedDB access"),await t(),n.L_.delete(1),await ju(n)}))}function td(n,e){return e().catch((t=>ed(n,t,e)))}async function ad(n){const e=$r(n),t=md(e);let a=e.O_.length>0?e.O_[e.O_.length-1].batchId:-1;for(;id(e);)try{const n=await vu(e.localStore,a);if(null===n){0===e.O_.length&&t.o_();break}a=n.batchId,rd(e,n)}catch(n){await ed(e,n)}sd(e)&&od(e)}function id(n){return $u(n)&&n.O_.length<10}function rd(n,e){n.O_.push(e);const t=md(n);t.r_()&&t.V_&&t.m_(e.mutations)}function sd(n){return $u(n)&&!md(n).n_()&&n.O_.length>0}function od(n){md(n).start()}async function ld(n){md(n).p_()}async function cd(n){const e=md(n);for(const t of n.O_)e.m_(t.mutations)}async function ud(n,e,t){const a=n.O_.shift(),i=Jl.from(a,e,t);await td(n,(()=>n.remoteSyncer.applySuccessfulWrite(i))),await ad(n)}async function dd(n,e){e&&md(n).V_&&await async function(n,e){if(function(n){return function(n){switch(n){default:return Kr();case Yr.CANCELLED:case Yr.UNKNOWN:case Yr.DEADLINE_EXCEEDED:case Yr.RESOURCE_EXHAUSTED:case Yr.INTERNAL:case Yr.UNAVAILABLE:case Yr.UNAUTHENTICATED:return!1;case Yr.INVALID_ARGUMENT:case Yr.NOT_FOUND:case Yr.ALREADY_EXISTS:case Yr.PERMISSION_DENIED:case Yr.FAILED_PRECONDITION:case Yr.ABORTED:case Yr.OUT_OF_RANGE:case Yr.UNIMPLEMENTED:case Yr.DATA_LOSS:return!0}}(n)&&n!==Yr.ABORTED}(e.code)){const t=n.O_.shift();md(n).s_(),await td(n,(()=>n.remoteSyncer.rejectFailedWrite(t.batchId,e))),await ad(n)}}(n,e),sd(n)&&od(n)}async function hd(n,e){const t=$r(n);t.asyncQueue.verifyOperationInProgress(),Vr("RemoteStore","RemoteStore received new credentials");const a=$u(t);t.L_.add(3),await Uu(t),a&&t.q_.set("Unknown"),await t.remoteSyncer.handleCredentialChange(e),t.L_.delete(3),await ju(t)}function fd(n){return n.K_||(n.K_=function(n,e,t){const a=$r(n);return a.w_(),new Bu(e,a.connection,a.authCredentials,a.appCheckCredentials,a.serializer,t)}(n.datastore,n.asyncQueue,{Eo:Qu.bind(null,n),Ro:Xu.bind(null,n),mo:Zu.bind(null,n),d_:nd.bind(null,n)}),n.B_.push((async e=>{e?(n.K_.s_(),Ju(n)?Ku(n):n.q_.set("Unknown")):(await n.K_.stop(),Yu(n))}))),n.K_}function md(n){return n.U_||(n.U_=function(n,e,t){const a=$r(n);return a.w_(),new zu(e,a.connection,a.authCredentials,a.appCheckCredentials,a.serializer,t)}(n.datastore,n.asyncQueue,{Eo:()=>Promise.resolve(),Ro:ld.bind(null,n),mo:dd.bind(null,n),f_:cd.bind(null,n),g_:ud.bind(null,n)}),n.B_.push((async e=>{e?(n.U_.s_(),await ad(n)):(await n.U_.stop(),n.O_.length>0&&(Vr("RemoteStore",`Stopping write stream with ${n.O_.length} pending writes`),n.O_=[]))}))),n.U_}class pd{constructor(n,e,t,a,i){this.asyncQueue=n,this.timerId=e,this.targetTimeMs=t,this.op=a,this.removalCallback=i,this.deferred=new Xr,this.then=this.deferred.promise.then.bind(this.deferred.promise),this.deferred.promise.catch((n=>{}))}get promise(){return this.deferred.promise}static createAndSchedule(n,e,t,a,i){const r=Date.now()+t,s=new pd(n,e,r,a,i);return s.start(t),s}start(n){this.timerHandle=setTimeout((()=>this.handleDelayElapsed()),n)}skipDelay(){return this.handleDelayElapsed()}cancel(n){null!==this.timerHandle&&(this.clearTimeout(),this.deferred.reject(new Qr(Yr.CANCELLED,"Operation cancelled"+(n?": "+n:""))))}handleDelayElapsed(){this.asyncQueue.enqueueAndForget((()=>null!==this.timerHandle?(this.clearTimeout(),this.op().then((n=>this.deferred.resolve(n)))):Promise.resolve()))}clearTimeout(){null!==this.timerHandle&&(this.removalCallback(this),clearTimeout(this.timerHandle),this.timerHandle=null)}}function gd(n,e){if(Hr("AsyncQueue",`${e}: ${n}`),As(n))return new Qr(Yr.UNAVAILABLE,`${e}: ${n}`);throw n}class yd{constructor(n){this.comparator=n?(e,t)=>n(e,t)||ys.comparator(e.key,t.key):(n,e)=>ys.comparator(n.key,e.key),this.keyedMap=ol(),this.sortedSet=new Rs(this.comparator)}static emptySet(n){return new yd(n.comparator)}has(n){return null!=this.keyedMap.get(n)}get(n){return this.keyedMap.get(n)}first(){return this.sortedSet.minKey()}last(){return this.sortedSet.maxKey()}isEmpty(){return this.sortedSet.isEmpty()}indexOf(n){const e=this.keyedMap.get(n);return e?this.sortedSet.indexOf(e):-1}get size(){return this.sortedSet.size}forEach(n){this.sortedSet.inorderTraversal(((e,t)=>(n(e),!1)))}add(n){const e=this.delete(n.key);return e.copy(e.keyedMap.insert(n.key,n),e.sortedSet.insert(n,null))}delete(n){const e=this.get(n);return e?this.copy(this.keyedMap.remove(n),this.sortedSet.remove(e)):this}isEqual(n){if(!(n instanceof yd))return!1;if(this.size!==n.size)return!1;const e=this.sortedSet.getIterator(),t=n.sortedSet.getIterator();for(;e.hasNext();){const n=e.getNext().key,a=t.getNext().key;if(!n.isEqual(a))return!1}return!0}toString(){const n=[];return this.forEach((e=>{n.push(e.toString())})),0===n.length?"DocumentSet ()":"DocumentSet (\n "+n.join(" \n")+"\n)"}copy(n,e){const t=new yd;return t.comparator=this.comparator,t.keyedMap=n,t.sortedSet=e,t}}class bd{constructor(){this.W_=new Rs(ys.comparator)}track(n){const e=n.doc.key,t=this.W_.get(e);t?0!==n.type&&3===t.type?this.W_=this.W_.insert(e,n):3===n.type&&1!==t.type?this.W_=this.W_.insert(e,{type:t.type,doc:n.doc}):2===n.type&&2===t.type?this.W_=this.W_.insert(e,{type:2,doc:n.doc}):2===n.type&&0===t.type?this.W_=this.W_.insert(e,{type:0,doc:n.doc}):1===n.type&&0===t.type?this.W_=this.W_.remove(e):1===n.type&&2===t.type?this.W_=this.W_.insert(e,{type:1,doc:t.doc}):0===n.type&&1===t.type?this.W_=this.W_.insert(e,{type:2,doc:n.doc}):Kr():this.W_=this.W_.insert(e,n)}G_(){const n=[];return this.W_.inorderTraversal(((e,t)=>{n.push(t)})),n}}class vd{constructor(n,e,t,a,i,r,s,o,l){this.query=n,this.docs=e,this.oldDocs=t,this.docChanges=a,this.mutatedKeys=i,this.fromCache=r,this.syncStateChanged=s,this.excludesMetadataChanges=o,this.hasCachedResults=l}static fromInitialDocuments(n,e,t,a,i){const r=[];return e.forEach((n=>{r.push({type:0,doc:n})})),new vd(n,e,yd.emptySet(e),r,t,a,!0,!1,i)}get hasPendingWrites(){return!this.mutatedKeys.isEmpty()}isEqual(n){if(!(this.fromCache===n.fromCache&&this.hasCachedResults===n.hasCachedResults&&this.syncStateChanged===n.syncStateChanged&&this.mutatedKeys.isEqual(n.mutatedKeys)&&Qo(this.query,n.query)&&this.docs.isEqual(n.docs)&&this.oldDocs.isEqual(n.oldDocs)))return!1;const e=this.docChanges,t=n.docChanges;if(e.length!==t.length)return!1;for(let n=0;nn.J_()))}}class kd{constructor(){this.queries=wd(),this.onlineState="Unknown",this.Y_=new Set}terminate(){!function(n,e){const t=$r(n),a=t.queries;t.queries=wd(),a.forEach(((n,t)=>{for(const n of t.j_)n.onError(e)}))}(this,new Qr(Yr.ABORTED,"Firestore shutting down"))}}function wd(){return new al((n=>Xo(n)),Qo)}async function Cd(n,e){const t=$r(n);let a=3;const i=e.query;let r=t.queries.get(i);r?!r.H_()&&e.J_()&&(a=2):(r=new xd,a=e.J_()?0:1);try{switch(a){case 0:r.z_=await t.onListen(i,!0);break;case 1:r.z_=await t.onListen(i,!1);break;case 2:await t.onFirstRemoteStoreListen(i)}}catch(n){const t=gd(n,`Initialization of query '${Zo(e.query)}' failed`);return void e.onError(t)}t.queries.set(i,r),r.j_.push(e),e.Z_(t.onlineState),r.z_&&e.X_(r.z_)&&Id(t)}async function Sd(n,e){const t=$r(n),a=e.query;let i=3;const r=t.queries.get(a);if(r){const n=r.j_.indexOf(e);n>=0&&(r.j_.splice(n,1),0===r.j_.length?i=e.J_()?0:1:!r.H_()&&e.J_()&&(i=2))}switch(i){case 0:return t.queries.delete(a),t.onUnlisten(a,!0);case 1:return t.queries.delete(a),t.onUnlisten(a,!1);case 2:return t.onLastRemoteStoreUnlisten(a);default:return}}function Ad(n,e){const t=$r(n);let a=!1;for(const n of e){const e=n.query,i=t.queries.get(e);if(i){for(const e of i.j_)e.X_(n)&&(a=!0);i.z_=n}}a&&Id(t)}function Td(n,e,t){const a=$r(n),i=a.queries.get(e);if(i)for(const n of i.j_)n.onError(t);a.queries.delete(e)}function Id(n){n.Y_.forEach((n=>{n.next()}))}var Ed,Md;(Md=Ed||(Ed={})).ea="default",Md.Cache="cache";class _d{constructor(n,e,t){this.query=n,this.ta=e,this.na=!1,this.ra=null,this.onlineState="Unknown",this.options=t||{}}X_(n){if(!this.options.includeMetadataChanges){const e=[];for(const t of n.docChanges)3!==t.type&&e.push(t);n=new vd(n.query,n.docs,n.oldDocs,e,n.mutatedKeys,n.fromCache,n.syncStateChanged,!0,n.hasCachedResults)}let e=!1;return this.na?this.ia(n)&&(this.ta.next(n),e=!0):this.sa(n,this.onlineState)&&(this.oa(n),e=!0),this.ra=n,e}onError(n){this.ta.error(n)}Z_(n){this.onlineState=n;let e=!1;return this.ra&&!this.na&&this.sa(this.ra,n)&&(this.oa(this.ra),e=!0),e}sa(n,e){if(!n.fromCache)return!0;if(!this.J_())return!0;const t="Offline"!==e;return(!this.options._a||!t)&&(!n.docs.isEmpty()||n.hasCachedResults||"Offline"===e)}ia(n){if(n.docChanges.length>0)return!0;const e=this.ra&&this.ra.hasPendingWrites!==n.hasPendingWrites;return!(!n.syncStateChanged&&!e)&&!0===this.options.includeMetadataChanges}oa(n){n=vd.fromInitialDocuments(n.query,n.docs,n.mutatedKeys,n.fromCache,n.hasCachedResults),this.na=!0,this.ta.next(n)}J_(){return this.options.source!==Ed.Cache}}class Pd{constructor(n){this.key=n}}class Rd{constructor(n){this.key=n}}class Dd{constructor(n,e){this.query=n,this.Ta=e,this.Ea=null,this.hasCachedResults=!1,this.current=!1,this.da=ml(),this.mutatedKeys=ml(),this.Aa=el(n),this.Ra=new yd(this.Aa)}get Va(){return this.Ta}ma(n,e){const t=e?e.fa:new bd,a=e?e.Ra:this.Ra;let i=e?e.mutatedKeys:this.mutatedKeys,r=a,s=!1;const o="F"===this.query.limitType&&a.size===this.query.limit?a.last():null,l="L"===this.query.limitType&&a.size===this.query.limit?a.first():null;if(n.inorderTraversal(((n,e)=>{const c=a.get(n),u=nl(this.query,e)?e:null,d=!!c&&this.mutatedKeys.has(c.key),h=!!u&&(u.hasLocalMutations||this.mutatedKeys.has(u.key)&&u.hasCommittedMutations);let f=!1;c&&u?c.data.isEqual(u.data)?d!==h&&(t.track({type:3,doc:u}),f=!0):this.ga(c,u)||(t.track({type:2,doc:u}),f=!0,(o&&this.Aa(u,o)>0||l&&this.Aa(u,l)<0)&&(s=!0)):!c&&u?(t.track({type:0,doc:u}),f=!0):c&&!u&&(t.track({type:1,doc:c}),f=!0,(o||l)&&(s=!0)),f&&(u?(r=r.add(u),i=h?i.add(n):i.delete(n)):(r=r.delete(n),i=i.delete(n)))})),null!==this.query.limit)for(;r.size>this.query.limit;){const n="F"===this.query.limitType?r.last():r.first();r=r.delete(n.key),i=i.delete(n.key),t.track({type:1,doc:n})}return{Ra:r,fa:t,ns:s,mutatedKeys:i}}ga(n,e){return n.hasLocalMutations&&e.hasCommittedMutations&&!e.hasLocalMutations}applyChanges(n,e,t,a){const i=this.Ra;this.Ra=n.Ra,this.mutatedKeys=n.mutatedKeys;const r=n.fa.G_();r.sort(((n,e)=>function(n,e){const t=n=>{switch(n){case 0:return 1;case 2:case 3:return 2;case 1:return 0;default:return Kr()}};return t(n)-t(e)}(n.type,e.type)||this.Aa(n.doc,e.doc))),this.pa(t),a=null!=a&&a;const s=e&&!a?this.ya():[],o=0===this.da.size&&this.current&&!a?1:0,l=o!==this.Ea;return this.Ea=o,0!==r.length||l?{snapshot:new vd(this.query,n.Ra,i,r,n.mutatedKeys,0===o,l,!1,!!t&&t.resumeToken.approximateByteSize()>0),wa:s}:{wa:s}}Z_(n){return this.current&&"Offline"===n?(this.current=!1,this.applyChanges({Ra:this.Ra,fa:new bd,mutatedKeys:this.mutatedKeys,ns:!1},!1)):{wa:[]}}Sa(n){return!this.Ta.has(n)&&!!this.Ra.has(n)&&!this.Ra.get(n).hasLocalMutations}pa(n){n&&(n.addedDocuments.forEach((n=>this.Ta=this.Ta.add(n))),n.modifiedDocuments.forEach((n=>{})),n.removedDocuments.forEach((n=>this.Ta=this.Ta.delete(n))),this.current=n.current)}ya(){if(!this.current)return[];const n=this.da;this.da=ml(),this.Ra.forEach((n=>{this.Sa(n.key)&&(this.da=this.da.add(n.key))}));const e=[];return n.forEach((n=>{this.da.has(n)||e.push(new Rd(n))})),this.da.forEach((t=>{n.has(t)||e.push(new Pd(t))})),e}ba(n){this.Ta=n.Ts,this.da=ml();const e=this.ma(n.documents);return this.applyChanges(e,!0)}Da(){return vd.fromInitialDocuments(this.query,this.Ra,this.mutatedKeys,0===this.Ea,this.hasCachedResults)}}class Ld{constructor(n,e,t){this.query=n,this.targetId=e,this.view=t}}class Nd{constructor(n){this.key=n,this.va=!1}}class Bd{constructor(n,e,t,a,i,r){this.localStore=n,this.remoteStore=e,this.eventManager=t,this.sharedClientState=a,this.currentUser=i,this.maxConcurrentLimboResolutions=r,this.Ca={},this.Fa=new al((n=>Xo(n)),Qo),this.Ma=new Map,this.xa=new Set,this.Oa=new Rs(ys.comparator),this.Na=new Map,this.La=new iu,this.Ba={},this.ka=new Map,this.qa=Qc.kn(),this.onlineState="Unknown",this.Qa=void 0}get isPrimaryClient(){return!0===this.Qa}}async function zd(n,e,t=!0){const a=ah(n);let i;const r=a.Fa.get(e);return r?(a.sharedClientState.addLocalQueryTarget(r.targetId),i=r.view.Da()):i=await Fd(a,e,t,!0),i}async function Od(n,e){const t=ah(n);await Fd(t,e,!0,!1)}async function Fd(n,e,t,a){const i=await function(n,e){const t=$r(n);return t.persistence.runTransaction("Allocate target","readwrite",(n=>{let a;return t.Ur.getTargetData(n,e).next((i=>i?(a=i,Ss.resolve(a)):t.Ur.allocateTargetId(n).next((i=>(a=new Hc(e,i,"TargetPurposeListen",n.currentSequenceNumber),t.Ur.addTargetData(n,a).next((()=>a)))))))})).then((n=>{const a=t.os.get(n.targetId);return(null===a||n.snapshotVersion.compareTo(a.snapshotVersion)>0)&&(t.os=t.os.insert(n.targetId,n),t._s.set(e,n.targetId)),n}))}(n.localStore,Jo(e)),r=i.targetId,s=n.sharedClientState.addLocalQueryTarget(r,t);let o;return a&&(o=await async function(n,e,t,a,i){n.Ka=(e,t,a)=>async function(n,e,t,a){let i=e.view.ma(t);i.ns&&(i=await ku(n.localStore,e.query,!1).then((({documents:n})=>e.view.ma(n,i))));const r=a&&a.targetChanges.get(e.targetId),s=a&&null!=a.targetMismatches.get(e.targetId),o=e.view.applyChanges(i,n.isPrimaryClient,r,s);return Qd(n,e.targetId,o.wa),o.snapshot}(n,e,t,a);const r=await ku(n.localStore,e,!0),s=new Dd(e,r.Ts),o=s.ma(r.documents),l=sc.createSynthesizedTargetChangeForCurrentChange(t,a&&"Offline"!==n.onlineState,i),c=s.applyChanges(o,n.isPrimaryClient,l);Qd(n,t,c.wa);const u=new Ld(e,t,s);return n.Fa.set(e,u),n.Ma.has(t)?n.Ma.get(t).push(e):n.Ma.set(t,[e]),c.snapshot}(n,e,r,"current"===s,i.resumeToken)),n.isPrimaryClient&&t&&Vu(n.remoteStore,i),o}async function Gd(n,e,t){const a=$r(n),i=a.Fa.get(e),r=a.Ma.get(i.targetId);if(r.length>1)return a.Ma.set(i.targetId,r.filter((n=>!Qo(n,e)))),void a.Fa.delete(e);a.isPrimaryClient?(a.sharedClientState.removeLocalQueryTarget(i.targetId),a.sharedClientState.isActiveQueryTarget(i.targetId)||await xu(a.localStore,i.targetId,!1).then((()=>{a.sharedClientState.clearQueryState(i.targetId),t&&Hu(a.remoteStore,i.targetId),$d(a,i.targetId)})).catch(Cs)):($d(a,i.targetId),await xu(a.localStore,i.targetId,!0))}async function jd(n,e){const t=$r(n),a=t.Fa.get(e),i=t.Ma.get(a.targetId);t.isPrimaryClient&&1===i.length&&(t.sharedClientState.removeLocalQueryTarget(a.targetId),Hu(t.remoteStore,a.targetId))}async function Ud(n,e){const t=$r(n);try{const n=await function(n,e){const t=$r(n),a=e.snapshotVersion;let i=t.os;return t.persistence.runTransaction("Apply remote event","readwrite-primary",(n=>{const r=t.cs.newChangeBuffer({trackRemovals:!0});i=t.os;const s=[];e.targetChanges.forEach(((r,o)=>{const l=i.get(o);if(!l)return;s.push(t.Ur.removeMatchingKeys(n,r.removedDocuments,o).next((()=>t.Ur.addMatchingKeys(n,r.addedDocuments,o))));let c=l.withSequenceNumber(n.currentSequenceNumber);null!==e.targetMismatches.get(o)?c=c.withResumeToken(Fs.EMPTY_BYTE_STRING,hs.min()).withLastLimboFreeSnapshotVersion(hs.min()):r.resumeToken.approximateByteSize()>0&&(c=c.withResumeToken(r.resumeToken,a)),i=i.insert(o,c),function(n,e,t){return 0===n.resumeToken.approximateByteSize()||e.snapshotVersion.toMicroseconds()-n.snapshotVersion.toMicroseconds()>=3e8||t.addedDocuments.size+t.modifiedDocuments.size+t.removedDocuments.size>0}(l,c,r)&&s.push(t.Ur.updateTargetData(n,c))}));let o=rl(),l=ml();if(e.documentUpdates.forEach((a=>{e.resolvedLimboDocuments.has(a)&&s.push(t.persistence.referenceDelegate.updateLimboDocument(n,a))})),s.push(function(n,e,t){let a=ml(),i=ml();return t.forEach((n=>a=a.add(n))),e.getEntries(n,a).next((n=>{let a=rl();return t.forEach(((t,r)=>{const s=n.get(t);r.isFoundDocument()!==s.isFoundDocument()&&(i=i.add(t)),r.isNoDocument()&&r.version.isEqual(hs.min())?(e.removeEntry(t,r.readTime),a=a.insert(t,r)):!s.isValidDocument()||r.version.compareTo(s.version)>0||0===r.version.compareTo(s.version)&&s.hasPendingWrites?(e.addEntry(r),a=a.insert(t,r)):Vr("LocalStore","Ignoring outdated watch update for ",t,". Current version:",s.version," Watch version:",r.version)})),{Ps:a,Is:i}}))}(n,r,e.documentUpdates).next((n=>{o=n.Ps,l=n.Is}))),!a.isEqual(hs.min())){const e=t.Ur.getLastRemoteSnapshotVersion(n).next((e=>t.Ur.setTargetsMetadata(n,n.currentSequenceNumber,a)));s.push(e)}return Ss.waitFor(s).next((()=>r.apply(n))).next((()=>t.localDocuments.getLocalViewOfDocuments(n,o,l))).next((()=>o))})).then((n=>(t.os=i,n)))}(t.localStore,e);e.targetChanges.forEach(((n,e)=>{const a=t.Na.get(e);a&&(Jr(n.addedDocuments.size+n.modifiedDocuments.size+n.removedDocuments.size<=1),n.addedDocuments.size>0?a.va=!0:n.modifiedDocuments.size>0?Jr(a.va):n.removedDocuments.size>0&&(Jr(a.va),a.va=!1))})),await nh(t,n,e)}catch(n){await Cs(n)}}function Vd(n,e,t){const a=$r(n);if(a.isPrimaryClient&&0===t||!a.isPrimaryClient&&1===t){const n=[];a.Fa.forEach(((t,a)=>{const i=a.view.Z_(e);i.snapshot&&n.push(i.snapshot)})),function(n,e){const t=$r(n);t.onlineState=e;let a=!1;t.queries.forEach(((n,t)=>{for(const n of t.j_)n.Z_(e)&&(a=!0)})),a&&Id(t)}(a.eventManager,e),n.length&&a.Ca.d_(n),a.onlineState=e,a.isPrimaryClient&&a.sharedClientState.setOnlineState(e)}}async function Hd(n,e,t){const a=$r(n);a.sharedClientState.updateQueryState(e,"rejected",t);const i=a.Na.get(e),r=i&&i.key;if(r){let n=new Rs(ys.comparator);n=n.insert(r,go.newNoDocument(r,hs.min()));const t=ml().add(r),i=new rc(hs.min(),new Map,new Rs(cs),n,t);await Ud(a,i),a.Oa=a.Oa.remove(r),a.Na.delete(e),Zd(a)}else await xu(a.localStore,e,!1).then((()=>$d(a,e,t))).catch(Cs)}async function qd(n,e){const t=$r(n),a=e.batch.batchId;try{const n=await function(n,e){const t=$r(n);return t.persistence.runTransaction("Acknowledge batch","readwrite-primary",(n=>{const a=e.batch.keys(),i=t.cs.newChangeBuffer({trackRemovals:!0});return function(n,e,t,a){const i=t.batch,r=i.keys();let s=Ss.resolve();return r.forEach((n=>{s=s.next((()=>a.getEntry(e,n))).next((e=>{const r=t.docVersions.get(n);Jr(null!==r),e.version.compareTo(r)<0&&(i.applyToRemoteDocument(e,t),e.isValidDocument()&&(e.setReadTime(t.commitVersion),a.addEntry(e)))}))})),s.next((()=>n.mutationQueue.removeMutationBatch(e,i)))}(t,n,e,i).next((()=>i.apply(n))).next((()=>t.mutationQueue.performConsistencyCheck(n))).next((()=>t.documentOverlayCache.removeOverlaysForBatchId(n,a,e.batch.batchId))).next((()=>t.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(n,function(n){let e=ml();for(let t=0;t0&&(e=e.add(n.batch.mutations[t].key));return e}(e)))).next((()=>t.localDocuments.getDocuments(n,a)))}))}(t.localStore,e);Jd(t,a,null),Kd(t,a),t.sharedClientState.updateMutationState(a,"acknowledged"),await nh(t,n)}catch(n){await Cs(n)}}async function Wd(n,e,t){const a=$r(n);try{const n=await function(n,e){const t=$r(n);return t.persistence.runTransaction("Reject batch","readwrite-primary",(n=>{let a;return t.mutationQueue.lookupMutationBatch(n,e).next((e=>(Jr(null!==e),a=e.keys(),t.mutationQueue.removeMutationBatch(n,e)))).next((()=>t.mutationQueue.performConsistencyCheck(n))).next((()=>t.documentOverlayCache.removeOverlaysForBatchId(n,a,e))).next((()=>t.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(n,a))).next((()=>t.localDocuments.getDocuments(n,a)))}))}(a.localStore,e);Jd(a,e,t),Kd(a,e),a.sharedClientState.updateMutationState(e,"rejected",t),await nh(a,n)}catch(t){await Cs(t)}}function Kd(n,e){(n.ka.get(e)||[]).forEach((n=>{n.resolve()})),n.ka.delete(e)}function Jd(n,e,t){const a=$r(n);let i=a.Ba[a.currentUser.toKey()];if(i){const n=i.get(e);n&&(t?n.reject(t):n.resolve(),i=i.remove(e)),a.Ba[a.currentUser.toKey()]=i}}function $d(n,e,t=null){n.sharedClientState.removeLocalQueryTarget(e);for(const a of n.Ma.get(e))n.Fa.delete(a),t&&n.Ca.$a(a,t);n.Ma.delete(e),n.isPrimaryClient&&n.La.gr(e).forEach((e=>{n.La.containsKey(e)||Yd(n,e)}))}function Yd(n,e){n.xa.delete(e.path.canonicalString());const t=n.Oa.get(e);null!==t&&(Hu(n.remoteStore,t),n.Oa=n.Oa.remove(e),n.Na.delete(t),Zd(n))}function Qd(n,e,t){for(const a of t)a instanceof Pd?(n.La.addReference(a.key,e),Xd(n,a)):a instanceof Rd?(Vr("SyncEngine","Document no longer in limbo: "+a.key),n.La.removeReference(a.key,e),n.La.containsKey(a.key)||Yd(n,a.key)):Kr()}function Xd(n,e){const t=e.key,a=t.path.canonicalString();n.Oa.get(t)||n.xa.has(a)||(Vr("SyncEngine","New document in limbo: "+t),n.xa.add(a),Zd(n))}function Zd(n){for(;n.xa.size>0&&n.Oa.size{s.push(a.Ka(o,e,t).then((n=>{var e;if((n||t)&&a.isPrimaryClient){const i=n?!n.fromCache:null===(e=null==t?void 0:t.targetChanges.get(o.targetId))||void 0===e?void 0:e.current;a.sharedClientState.updateQueryState(o.targetId,i?"current":"not-current")}if(n){i.push(n);const e=fu.Wi(o.targetId,n);r.push(e)}})))})),await Promise.all(s),a.Ca.d_(i),await async function(n,e){const t=$r(n);try{await t.persistence.runTransaction("notifyLocalViewChanges","readwrite",(n=>Ss.forEach(e,(e=>Ss.forEach(e.$i,(a=>t.persistence.referenceDelegate.addReference(n,e.targetId,a))).next((()=>Ss.forEach(e.Ui,(a=>t.persistence.referenceDelegate.removeReference(n,e.targetId,a)))))))))}catch(n){if(!As(n))throw n;Vr("LocalStore","Failed to update sequence numbers: "+n)}for(const n of e){const e=n.targetId;if(!n.fromCache){const n=t.os.get(e),a=n.snapshotVersion,i=n.withLastLimboFreeSnapshotVersion(a);t.os=t.os.insert(e,i)}}}(a.localStore,r))}async function eh(n,e){const t=$r(n);if(!t.currentUser.isEqual(e)){Vr("SyncEngine","User change. New user:",e.toKey());const n=await yu(t.localStore,e);t.currentUser=e,function(n,e){n.ka.forEach((n=>{n.forEach((n=>{n.reject(new Qr(Yr.CANCELLED,"'waitForPendingWrites' promise is rejected due to a user change."))}))})),n.ka.clear()}(t),t.sharedClientState.handleUserChange(e,n.removedBatchIds,n.addedBatchIds),await nh(t,n.hs)}}function th(n,e){const t=$r(n),a=t.Na.get(e);if(a&&a.va)return ml().add(a.key);{let n=ml();const a=t.Ma.get(e);if(!a)return n;for(const e of a){const a=t.Fa.get(e);n=n.unionWith(a.view.Va)}return n}}function ah(n){const e=$r(n);return e.remoteStore.remoteSyncer.applyRemoteEvent=Ud.bind(null,e),e.remoteStore.remoteSyncer.getRemoteKeysForTarget=th.bind(null,e),e.remoteStore.remoteSyncer.rejectListen=Hd.bind(null,e),e.Ca.d_=Ad.bind(null,e.eventManager),e.Ca.$a=Td.bind(null,e.eventManager),e}function ih(n){const e=$r(n);return e.remoteStore.remoteSyncer.applySuccessfulWrite=qd.bind(null,e),e.remoteStore.remoteSyncer.rejectFailedWrite=Wd.bind(null,e),e}class rh{constructor(){this.synchronizeTabs=!1}async initialize(n){this.serializer=Du(n.databaseInfo.databaseId),this.sharedClientState=this.createSharedClientState(n),this.persistence=this.createPersistence(n),await this.persistence.start(),this.localStore=this.createLocalStore(n),this.gcScheduler=this.createGarbageCollectionScheduler(n,this.localStore),this.indexBackfillerScheduler=this.createIndexBackfillerScheduler(n,this.localStore)}createGarbageCollectionScheduler(n,e){return null}createIndexBackfillerScheduler(n,e){return null}createLocalStore(n){return function(n,e,t,a){return new gu(n,e,t,a)}(this.persistence,new pu,n.initialUser,this.serializer)}createPersistence(n){return new uu(hu.Zr,this.serializer)}createSharedClientState(n){return new Cu}async terminate(){var n,e;null===(n=this.gcScheduler)||void 0===n||n.stop(),null===(e=this.indexBackfillerScheduler)||void 0===e||e.stop(),this.sharedClientState.shutdown(),await this.persistence.shutdown()}}class sh{async initialize(n,e){this.localStore||(this.localStore=n.localStore,this.sharedClientState=n.sharedClientState,this.datastore=this.createDatastore(e),this.remoteStore=this.createRemoteStore(e),this.eventManager=this.createEventManager(e),this.syncEngine=this.createSyncEngine(e,!n.synchronizeTabs),this.sharedClientState.onlineStateHandler=n=>Vd(this.syncEngine,n,1),this.remoteStore.remoteSyncer.handleCredentialChange=eh.bind(null,this.syncEngine),await async function(n,e){const t=$r(n);e?(t.L_.delete(2),await ju(t)):e||(t.L_.add(2),await Uu(t),t.q_.set("Unknown"))}(this.remoteStore,this.syncEngine.isPrimaryClient))}createEventManager(n){return new kd}createDatastore(n){const e=Du(n.databaseInfo.databaseId),t=function(n){return new Pu(n)}(n.databaseInfo);return function(n,e,t,a){return new Ou(n,e,t,a)}(n.authCredentials,n.appCheckCredentials,t,e)}createRemoteStore(n){return function(n,e,t,a,i){return new Gu(n,e,t,a,i)}(this.localStore,this.datastore,n.asyncQueue,(n=>Vd(this.syncEngine,n,0)),Au.D()?new Au:new Su)}createSyncEngine(n,e){return function(n,e,t,a,i,r,s){const o=new Bd(n,e,t,a,i,r);return s&&(o.Qa=!0),o}(this.localStore,this.remoteStore,this.eventManager,this.sharedClientState,n.initialUser,n.maxConcurrentLimboResolutions,e)}async terminate(){var n,e;await async function(n){const e=$r(n);Vr("RemoteStore","RemoteStore shutting down."),e.L_.add(5),await Uu(e),e.k_.shutdown(),e.q_.set("Unknown")}(this.remoteStore),null===(n=this.datastore)||void 0===n||n.terminate(),null===(e=this.eventManager)||void 0===e||e.terminate()}}class oh{constructor(n){this.observer=n,this.muted=!1}next(n){this.observer.next&&this.Ga(this.observer.next,n)}error(n){this.observer.error?this.Ga(this.observer.error,n):Hr("Uncaught Error in snapshot listener:",n.toString())}za(){this.muted=!0}Ga(n,e){this.muted||setTimeout((()=>{this.muted||n(e)}),0)}}class lh{constructor(n,e,t,a){this.authCredentials=n,this.appCheckCredentials=e,this.asyncQueue=t,this.databaseInfo=a,this.user=Fr.UNAUTHENTICATED,this.clientId=ls.newId(),this.authCredentialListener=()=>Promise.resolve(),this.appCheckCredentialListener=()=>Promise.resolve(),this.authCredentials.start(t,(async n=>{Vr("FirestoreClient","Received user=",n.uid),await this.authCredentialListener(n),this.user=n})),this.appCheckCredentials.start(t,(n=>(Vr("FirestoreClient","Received new app check token=",n),this.appCheckCredentialListener(n,this.user))))}get configuration(){return{asyncQueue:this.asyncQueue,databaseInfo:this.databaseInfo,clientId:this.clientId,authCredentials:this.authCredentials,appCheckCredentials:this.appCheckCredentials,initialUser:this.user,maxConcurrentLimboResolutions:100}}setCredentialChangeListener(n){this.authCredentialListener=n}setAppCheckTokenChangeListener(n){this.appCheckCredentialListener=n}verifyNotTerminated(){if(this.asyncQueue.isShuttingDown)throw new Qr(Yr.FAILED_PRECONDITION,"The client has already been terminated.")}terminate(){this.asyncQueue.enterRestrictedMode();const n=new Xr;return this.asyncQueue.enqueueAndForgetEvenWhileRestricted((async()=>{try{this._onlineComponents&&await this._onlineComponents.terminate(),this._offlineComponents&&await this._offlineComponents.terminate(),this.authCredentials.shutdown(),this.appCheckCredentials.shutdown(),n.resolve()}catch(e){const t=gd(e,"Failed to shutdown persistence");n.reject(t)}})),n.promise}}async function ch(n,e){n.asyncQueue.verifyOperationInProgress(),Vr("FirestoreClient","Initializing OfflineComponentProvider");const t=n.configuration;await e.initialize(t);let a=t.initialUser;n.setCredentialChangeListener((async n=>{a.isEqual(n)||(await yu(e.localStore,n),a=n)})),e.persistence.setDatabaseDeletedListener((()=>n.terminate())),n._offlineComponents=e}async function uh(n,e){n.asyncQueue.verifyOperationInProgress();const t=await async function(n){if(!n._offlineComponents)if(n._uninitializedComponentsProvider){Vr("FirestoreClient","Using user provided OfflineComponentProvider");try{await ch(n,n._uninitializedComponentsProvider._offline)}catch(e){const t=e;if(!function(n){return"FirebaseError"===n.name?n.code===Yr.FAILED_PRECONDITION||n.code===Yr.UNIMPLEMENTED:!("undefined"!=typeof DOMException&&n instanceof DOMException)||22===n.code||20===n.code||11===n.code}(t))throw t;qr("Error using user provided cache. Falling back to memory cache: "+t),await ch(n,new rh)}}else Vr("FirestoreClient","Using default OfflineComponentProvider"),await ch(n,new rh);return n._offlineComponents}(n);Vr("FirestoreClient","Initializing OnlineComponentProvider"),await e.initialize(t,n.configuration),n.setCredentialChangeListener((n=>hd(e.remoteStore,n))),n.setAppCheckTokenChangeListener(((n,t)=>hd(e.remoteStore,t))),n._onlineComponents=e}async function dh(n){return n._onlineComponents||(n._uninitializedComponentsProvider?(Vr("FirestoreClient","Using user provided OnlineComponentProvider"),await uh(n,n._uninitializedComponentsProvider._online)):(Vr("FirestoreClient","Using default OnlineComponentProvider"),await uh(n,new sh))),n._onlineComponents}async function hh(n){const e=await dh(n),t=e.eventManager;return t.onListen=zd.bind(null,e.syncEngine),t.onUnlisten=Gd.bind(null,e.syncEngine),t.onFirstRemoteStoreListen=Od.bind(null,e.syncEngine),t.onLastRemoteStoreUnlisten=jd.bind(null,e.syncEngine),t}function fh(n){const e={};return void 0!==n.timeoutSeconds&&(e.timeoutSeconds=n.timeoutSeconds),e}const mh=new Map;function ph(n,e,t){if(!t)throw new Qr(Yr.INVALID_ARGUMENT,`Function ${n}() cannot be called with an empty ${e}.`)}function gh(n){if(!ys.isDocumentKey(n))throw new Qr(Yr.INVALID_ARGUMENT,`Invalid document reference. Document references must have an even number of segments, but ${n} has ${n.length}.`)}function yh(n){if(ys.isDocumentKey(n))throw new Qr(Yr.INVALID_ARGUMENT,`Invalid collection reference. Collection references must have an odd number of segments, but ${n} has ${n.length}.`)}function bh(n){if(void 0===n)return"undefined";if(null===n)return"null";if("string"==typeof n)return n.length>20&&(n=`${n.substring(0,20)}...`),JSON.stringify(n);if("number"==typeof n||"boolean"==typeof n)return""+n;if("object"==typeof n){if(n instanceof Array)return"an array";{const e=function(n){return n.constructor?n.constructor.name:null}(n);return e?`a custom ${e} object`:"an object"}}return"function"==typeof n?"a function":Kr()}function vh(n,e){if("_delegate"in n&&(n=n._delegate),!(n instanceof e)){if(e.name===n.constructor.name)throw new Qr(Yr.INVALID_ARGUMENT,"Type does not match the expected instance. Did you pass a reference from a different Firestore SDK?");{const t=bh(n);throw new Qr(Yr.INVALID_ARGUMENT,`Expected type '${e.name}', but it was: ${t}`)}}return n}class xh{constructor(n){var e,t;if(void 0===n.host){if(void 0!==n.ssl)throw new Qr(Yr.INVALID_ARGUMENT,"Can't provide ssl option if host option is not set");this.host="firestore.googleapis.com",this.ssl=!0}else this.host=n.host,this.ssl=null===(e=n.ssl)||void 0===e||e;if(this.credentials=n.credentials,this.ignoreUndefinedProperties=!!n.ignoreUndefinedProperties,this.localCache=n.localCache,void 0===n.cacheSizeBytes)this.cacheSizeBytes=41943040;else{if(-1!==n.cacheSizeBytes&&n.cacheSizeBytes<1048576)throw new Qr(Yr.INVALID_ARGUMENT,"cacheSizeBytes must be at least 1048576");this.cacheSizeBytes=n.cacheSizeBytes}(function(n,e,t,a){if(!0===e&&!0===a)throw new Qr(Yr.INVALID_ARGUMENT,"experimentalForceLongPolling and experimentalAutoDetectLongPolling cannot be used together.")})(0,n.experimentalForceLongPolling,0,n.experimentalAutoDetectLongPolling),this.experimentalForceLongPolling=!!n.experimentalForceLongPolling,this.experimentalForceLongPolling?this.experimentalAutoDetectLongPolling=!1:void 0===n.experimentalAutoDetectLongPolling?this.experimentalAutoDetectLongPolling=!0:this.experimentalAutoDetectLongPolling=!!n.experimentalAutoDetectLongPolling,this.experimentalLongPollingOptions=fh(null!==(t=n.experimentalLongPollingOptions)&&void 0!==t?t:{}),function(n){if(void 0!==n.timeoutSeconds){if(isNaN(n.timeoutSeconds))throw new Qr(Yr.INVALID_ARGUMENT,`invalid long polling timeout: ${n.timeoutSeconds} (must not be NaN)`);if(n.timeoutSeconds<5)throw new Qr(Yr.INVALID_ARGUMENT,`invalid long polling timeout: ${n.timeoutSeconds} (minimum allowed value is 5)`);if(n.timeoutSeconds>30)throw new Qr(Yr.INVALID_ARGUMENT,`invalid long polling timeout: ${n.timeoutSeconds} (maximum allowed value is 30)`)}}(this.experimentalLongPollingOptions),this.useFetchStreams=!!n.useFetchStreams}isEqual(n){return this.host===n.host&&this.ssl===n.ssl&&this.credentials===n.credentials&&this.cacheSizeBytes===n.cacheSizeBytes&&this.experimentalForceLongPolling===n.experimentalForceLongPolling&&this.experimentalAutoDetectLongPolling===n.experimentalAutoDetectLongPolling&&function(n,e){return n.timeoutSeconds===e.timeoutSeconds}(this.experimentalLongPollingOptions,n.experimentalLongPollingOptions)&&this.ignoreUndefinedProperties===n.ignoreUndefinedProperties&&this.useFetchStreams===n.useFetchStreams}}class kh{constructor(n,e,t,a){this._authCredentials=n,this._appCheckCredentials=e,this._databaseId=t,this._app=a,this.type="firestore-lite",this._persistenceKey="(lite)",this._settings=new xh({}),this._settingsFrozen=!1}get app(){if(!this._app)throw new Qr(Yr.FAILED_PRECONDITION,"Firestore was not initialized using the Firebase SDK. 'app' is not available");return this._app}get _initialized(){return this._settingsFrozen}get _terminated(){return void 0!==this._terminateTask}_setSettings(n){if(this._settingsFrozen)throw new Qr(Yr.FAILED_PRECONDITION,"Firestore has already been started and its settings can no longer be changed. You can only modify settings before calling any other methods on a Firestore object.");this._settings=new xh(n),void 0!==n.credentials&&(this._authCredentials=function(n){if(!n)return new ns;switch(n.type){case"firstParty":return new is(n.sessionIndex||"0",n.iamToken||null,n.authTokenFactory||null);case"provider":return n.client;default:throw new Qr(Yr.INVALID_ARGUMENT,"makeAuthCredentialsProvider failed due to invalid credential type")}}(n.credentials))}_getSettings(){return this._settings}_freezeSettings(){return this._settingsFrozen=!0,this._settings}_delete(){return this._terminateTask||(this._terminateTask=this._terminate()),this._terminateTask}toJSON(){return{app:this._app,databaseId:this._databaseId,settings:this._settings}}_terminate(){return function(n){const e=mh.get(n);e&&(Vr("ComponentProvider","Removing Datastore"),mh.delete(n),e.terminate())}(this),Promise.resolve()}}class wh{constructor(n,e,t){this.converter=e,this._query=t,this.type="query",this.firestore=n}withConverter(n){return new wh(this.firestore,n,this._query)}}class Ch{constructor(n,e,t){this.converter=e,this._key=t,this.type="document",this.firestore=n}get _path(){return this._key.path}get id(){return this._key.path.lastSegment()}get path(){return this._key.path.canonicalString()}get parent(){return new Sh(this.firestore,this.converter,this._key.path.popLast())}withConverter(n){return new Ch(this.firestore,n,this._key)}}class Sh extends wh{constructor(n,e,t){super(n,e,Ho(t)),this._path=t,this.type="collection"}get id(){return this._query.path.lastSegment()}get path(){return this._query.path.canonicalString()}get parent(){const n=this._path.popLast();return n.isEmpty()?null:new Ch(this.firestore,null,new ys(n))}withConverter(n){return new Sh(this.firestore,n,this._path)}}function Ah(n,e,...t){if(n=Q(n),ph("collection","path",e),n instanceof kh){const a=ms.fromString(e,...t);return yh(a),new Sh(n,null,a)}{if(!(n instanceof Ch||n instanceof Sh))throw new Qr(Yr.INVALID_ARGUMENT,"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");const a=n._path.child(ms.fromString(e,...t));return yh(a),new Sh(n.firestore,null,a)}}function Th(n,e,...t){if(n=Q(n),1===arguments.length&&(e=ls.newId()),ph("doc","path",e),n instanceof kh){const a=ms.fromString(e,...t);return gh(a),new Ch(n,null,new ys(a))}{if(!(n instanceof Ch||n instanceof Sh))throw new Qr(Yr.INVALID_ARGUMENT,"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore");const a=n._path.child(ms.fromString(e,...t));return gh(a),new Ch(n.firestore,n instanceof Sh?n.converter:null,new ys(a))}}class Ih{constructor(){this.au=Promise.resolve(),this.uu=[],this.cu=!1,this.lu=[],this.hu=null,this.Pu=!1,this.Iu=!1,this.Tu=[],this.t_=new Lu(this,"async_queue_retry"),this.Eu=()=>{const n=Ru();n&&Vr("AsyncQueue","Visibility state changed to "+n.visibilityState),this.t_.jo()};const n=Ru();n&&"function"==typeof n.addEventListener&&n.addEventListener("visibilitychange",this.Eu)}get isShuttingDown(){return this.cu}enqueueAndForget(n){this.enqueue(n)}enqueueAndForgetEvenWhileRestricted(n){this.du(),this.Au(n)}enterRestrictedMode(n){if(!this.cu){this.cu=!0,this.Iu=n||!1;const e=Ru();e&&"function"==typeof e.removeEventListener&&e.removeEventListener("visibilitychange",this.Eu)}}enqueue(n){if(this.du(),this.cu)return new Promise((()=>{}));const e=new Xr;return this.Au((()=>this.cu&&this.Iu?Promise.resolve():(n().then(e.resolve,e.reject),e.promise))).then((()=>e.promise))}enqueueRetryable(n){this.enqueueAndForget((()=>(this.uu.push(n),this.Ru())))}async Ru(){if(0!==this.uu.length){try{await this.uu[0](),this.uu.shift(),this.t_.reset()}catch(n){if(!As(n))throw n;Vr("AsyncQueue","Operation failed with retryable error: "+n)}this.uu.length>0&&this.t_.Go((()=>this.Ru()))}}Au(n){const e=this.au.then((()=>(this.Pu=!0,n().catch((n=>{this.hu=n,this.Pu=!1;const e=function(n){let e=n.message||"";return n.stack&&(e=n.stack.includes(n.message)?n.stack:n.message+"\n"+n.stack),e}(n);throw Hr("INTERNAL UNHANDLED ERROR: ",e),n})).then((n=>(this.Pu=!1,n))))));return this.au=e,e}enqueueAfterDelay(n,e,t){this.du(),this.Tu.indexOf(n)>-1&&(e=0);const a=pd.createAndSchedule(this,n,e,t,(n=>this.Vu(n)));return this.lu.push(a),a}du(){this.hu&&Kr()}verifyOperationInProgress(){}async mu(){let n;do{n=this.au,await n}while(n!==this.au)}fu(n){for(const e of this.lu)if(e.timerId===n)return!0;return!1}gu(n){return this.mu().then((()=>{this.lu.sort(((n,e)=>n.targetTimeMs-e.targetTimeMs));for(const e of this.lu)if(e.skipDelay(),"all"!==n&&e.timerId===n)break;return this.mu()}))}pu(n){this.Tu.push(n)}Vu(n){const e=this.lu.indexOf(n);this.lu.splice(e,1)}}function Eh(n){return function(n,e){if("object"!=typeof n||null===n)return!1;const t=n;for(const n of["next","error","complete"])if(n in t&&"function"==typeof t[n])return!0;return!1}(n)}class Mh extends kh{constructor(n,e,t,a){super(n,e,t,a),this.type="firestore",this._queue=new Ih,this._persistenceKey=(null==a?void 0:a.name)||"[DEFAULT]"}_terminate(){return this._firestoreClient||Ph(this),this._firestoreClient.terminate()}}function _h(n){return n._firestoreClient||Ph(n),n._firestoreClient.verifyNotTerminated(),n._firestoreClient}function Ph(n){var e,t,a;const i=n._freezeSettings(),r=function(n,e,t,a){return new Ks(n,e,t,a.host,a.ssl,a.experimentalForceLongPolling,a.experimentalAutoDetectLongPolling,fh(a.experimentalLongPollingOptions),a.useFetchStreams)}(n._databaseId,(null===(e=n._app)||void 0===e?void 0:e.options.appId)||"",n._persistenceKey,i);n._firestoreClient=new lh(n._authCredentials,n._appCheckCredentials,n._queue,r),(null===(t=i.localCache)||void 0===t?void 0:t._offlineComponentProvider)&&(null===(a=i.localCache)||void 0===a?void 0:a._onlineComponentProvider)&&(n._firestoreClient._uninitializedComponentsProvider={_offlineKind:i.localCache.kind,_offline:i.localCache._offlineComponentProvider,_online:i.localCache._onlineComponentProvider})}class Rh{constructor(n){this._byteString=n}static fromBase64String(n){try{return new Rh(Fs.fromBase64String(n))}catch(n){throw new Qr(Yr.INVALID_ARGUMENT,"Failed to construct data from Base64 string: "+n)}}static fromUint8Array(n){return new Rh(Fs.fromUint8Array(n))}toBase64(){return this._byteString.toBase64()}toUint8Array(){return this._byteString.toUint8Array()}toString(){return"Bytes(base64: "+this.toBase64()+")"}isEqual(n){return this._byteString.isEqual(n._byteString)}}class Dh{constructor(...n){for(let e=0;e90)throw new Qr(Yr.INVALID_ARGUMENT,"Latitude must be a number between -90 and 90, but was: "+n);if(!isFinite(e)||e<-180||e>180)throw new Qr(Yr.INVALID_ARGUMENT,"Longitude must be a number between -180 and 180, but was: "+e);this._lat=n,this._long=e}get latitude(){return this._lat}get longitude(){return this._long}isEqual(n){return this._lat===n._lat&&this._long===n._long}toJSON(){return{latitude:this._lat,longitude:this._long}}_compareTo(n){return cs(this._lat,n._lat)||cs(this._long,n._long)}}class Bh{constructor(n){this._values=(n||[]).map((n=>n))}toArray(){return this._values.map((n=>n))}isEqual(n){return function(n,e){if(n.length!==e.length)return!1;for(let t=0;tn.isPrefixOf(e)))||void 0!==this.fieldTransforms.find((e=>n.isPrefixOf(e.field)))}yu(){if(this.path)for(let n=0;nl.covers(n.field)))}else l=null,c=s.fieldTransforms;return new Oh(new mo(o),l,c)}class qh extends Lh{_toFieldTransform(n){if(2!==n.wu)throw 1===n.wu?n.Mu(`${this._methodName}() can only appear at the top level of your update data`):n.Mu(`${this._methodName}() cannot be used with set() unless you pass {merge:true}`);return n.fieldMask.push(n.path),null}isEqual(n){return n instanceof qh}}function Wh(n,e){if(Jh(n=Q(n)))return $h("Unsupported field value:",e,n),Kh(n,e);if(n instanceof Lh)return function(n,e){if(!Gh(e.wu))throw e.Mu(`${n._methodName}() can only be used with update() and set()`);if(!e.path)throw e.Mu(`${n._methodName}() is not currently supported inside arrays`);const t=n._toFieldTransform(e);t&&e.fieldTransforms.push(t)}(n,e),null;if(void 0===n&&e.ignoreUndefinedProperties)return null;if(e.path&&e.fieldMask.push(e.path),n instanceof Array){if(e.settings.Du&&4!==e.wu)throw e.Mu("Nested arrays are not supported");return function(n,e){const t=[];let a=0;for(const i of n){let n=Wh(i,e.Fu(a));null==n&&(n={nullValue:"NULL_VALUE"}),t.push(n),a++}return{arrayValue:{values:t}}}(n,e)}return function(n,e){if(null===(n=Q(n)))return{nullValue:"NULL_VALUE"};if("number"==typeof n)return bl(e.serializer,n);if("boolean"==typeof n)return{booleanValue:n};if("string"==typeof n)return{stringValue:n};if(n instanceof Date){const t=ds.fromDate(n);return{timestampValue:vc(e.serializer,t)}}if(n instanceof ds){const t=new ds(n.seconds,1e3*Math.floor(n.nanoseconds/1e3));return{timestampValue:vc(e.serializer,t)}}if(n instanceof Nh)return{geoPointValue:{latitude:n.latitude,longitude:n.longitude}};if(n instanceof Rh)return{bytesValue:xc(e.serializer,n._byteString)};if(n instanceof Ch){const t=e.databaseId,a=n.firestore._databaseId;if(!a.isEqual(t))throw e.Mu(`Document reference is for database ${a.projectId}/${a.database} but should be for database ${t.projectId}/${t.database}`);return{referenceValue:Cc(n.firestore._databaseId||e.databaseId,n._key.path)}}if(n instanceof Bh)return function(n,e){return{mapValue:{fields:{__type__:{stringValue:"__vector__"},value:{arrayValue:{values:n.toArray().map((n=>{if("number"!=typeof n)throw e.Mu("VectorValues must only contain numeric values.");return gl(e.serializer,n)}))}}}}}}(n,e);throw e.Mu(`Unsupported field value: ${bh(n)}`)}(n,e)}function Kh(n,e){const t={};return Ps(n)?e.path&&e.path.length>0&&e.fieldMask.push(e.path):_s(n,((n,a)=>{const i=Wh(a,e.bu(n));null!=i&&(t[n]=i)})),{mapValue:{fields:t}}}function Jh(n){return!("object"!=typeof n||null===n||n instanceof Array||n instanceof Date||n instanceof ds||n instanceof Nh||n instanceof Rh||n instanceof Ch||n instanceof Lh||n instanceof Bh)}function $h(n,e,t){if(!Jh(t)||!function(n){return"object"==typeof n&&null!==n&&(Object.getPrototypeOf(n)===Object.prototype||null===Object.getPrototypeOf(n))}(t)){const a=bh(t);throw"an object"===a?e.Mu(n+" a custom object"):e.Mu(n+" "+a)}}function Yh(n,e,t){if((e=Q(e))instanceof Dh)return e._internalPath;if("string"==typeof e)return Xh(n,e);throw Zh("Field path arguments must be of type string or ",n,!1,void 0,t)}const Qh=new RegExp("[~\\*/\\[\\]]");function Xh(n,e,t){if(e.search(Qh)>=0)throw Zh(`Invalid field path (${e}). Paths must not contain '~', '*', '/', '[', or ']'`,n,!1,void 0,t);try{return new Dh(...e.split("."))._internalPath}catch(a){throw Zh(`Invalid field path (${e}). Paths must not be empty, begin with '.', end with '.', or contain '..'`,n,!1,void 0,t)}}function Zh(n,e,t,a,i){const r=a&&!a.isEmpty(),s=void 0!==i;let o=`Function ${e}() called with invalid data`;t&&(o+=" (via `toFirestore()`)"),o+=". ";let l="";return(r||s)&&(l+=" (found",r&&(l+=` in field ${a}`),s&&(l+=` in document ${i}`),l+=")"),new Qr(Yr.INVALID_ARGUMENT,o+n+l)}function nf(n,e){return n.some((n=>n.isEqual(e)))}class ef{constructor(n,e,t,a,i){this._firestore=n,this._userDataWriter=e,this._key=t,this._document=a,this._converter=i}get id(){return this._key.path.lastSegment()}get ref(){return new Ch(this._firestore,this._converter,this._key)}exists(){return null!==this._document}data(){if(this._document){if(this._converter){const n=new tf(this._firestore,this._userDataWriter,this._key,this._document,null);return this._converter.fromFirestore(n)}return this._userDataWriter.convertValue(this._document.data.value)}}get(n){if(this._document){const e=this._document.data.field(af("DocumentSnapshot.get",n));if(null!==e)return this._userDataWriter.convertValue(e)}}}class tf extends ef{data(){return super.data()}}function af(n,e){return"string"==typeof e?Xh(n,e):e instanceof Dh?e._internalPath:e._delegate._internalPath}class rf{}class sf extends rf{}class of extends sf{constructor(n,e,t){super(),this._field=n,this._op=e,this._value=t,this.type="where"}static _create(n,e,t){return new of(n,e,t)}_apply(n){const e=this._parse(n);return ff(n._query,e),new wh(n.firestore,n.converter,$o(n._query,e))}_parse(n){const e=Vh(n.firestore),t=function(n,e,t,a,i,r,s){let o;if(i.isKeyField()){if("array-contains"===r||"array-contains-any"===r)throw new Qr(Yr.INVALID_ARGUMENT,`Invalid Query. You can't perform '${r}' queries on documentId().`);if("in"===r||"not-in"===r){hf(s,r);const e=[];for(const t of s)e.push(df(a,n,t));o={arrayValue:{values:e}}}else o=df(a,n,s)}else"in"!==r&&"not-in"!==r&&"array-contains-any"!==r||hf(s,r),o=function(n,e,t,a=!1){return Wh(t,n.Nu(a?4:3,e))}(t,"where",s,"in"===r||"not-in"===r);return Co.create(i,r,o)}(n._query,0,e,n.firestore._databaseId,this._field,this._op,this._value);return t}}class lf extends rf{constructor(n,e){super(),this.type=n,this._queryConstraints=e}static _create(n,e){return new lf(n,e)}_parse(n){const e=this._queryConstraints.map((e=>e._parse(n))).filter((n=>n.getFilters().length>0));return 1===e.length?e[0]:So.create(e,this._getOperator())}_apply(n){const e=this._parse(n);return 0===e.getFilters().length?n:(function(n,e){let t=n;const a=e.getFlattenedFilters();for(const n of a)ff(t,n),t=$o(t,n)}(n._query,e),new wh(n.firestore,n.converter,$o(n._query,e)))}_getQueryConstraints(){return this._queryConstraints}_getOperator(){return"and"===this.type?"and":"or"}}class cf extends sf{constructor(n,e){super(),this._field=n,this._direction=e,this.type="orderBy"}static _create(n,e){return new cf(n,e)}_apply(n){const e=function(n,e,t){if(null!==n.startAt)throw new Qr(Yr.INVALID_ARGUMENT,"Invalid query. You must not call startAt() or startAfter() before calling orderBy().");if(null!==n.endAt)throw new Qr(Yr.INVALID_ARGUMENT,"Invalid query. You must not call endAt() or endBefore() before calling orderBy().");return new xo(e,t)}(n._query,this._field,this._direction);return new wh(n.firestore,n.converter,function(n,e){const t=n.explicitOrderBy.concat([e]);return new Vo(n.path,n.collectionGroup,t,n.filters.slice(),n.limit,n.limitType,n.startAt,n.endAt)}(n._query,e))}}class uf extends sf{constructor(n,e,t){super(),this.type=n,this._limit=e,this._limitType=t}static _create(n,e,t){return new uf(n,e,t)}_apply(n){return new wh(n.firestore,n.converter,Yo(n._query,this._limit,this._limitType))}}function df(n,e,t){if("string"==typeof(t=Q(t))){if(""===t)throw new Qr(Yr.INVALID_ARGUMENT,"Invalid query. When querying with documentId(), you must provide a valid document ID, but it was an empty string.");if(!Wo(e)&&-1!==t.indexOf("/"))throw new Qr(Yr.INVALID_ARGUMENT,`Invalid query. When querying a collection by documentId(), you must provide a plain document ID, but '${t}' contains a '/' character.`);const a=e.path.child(ms.fromString(t));if(!ys.isDocumentKey(a))throw new Qr(Yr.INVALID_ARGUMENT,`Invalid query. When querying a collection group by documentId(), the value provided must result in a valid document path, but '${a}' is not because it has an odd number of segments (${a.length}).`);return io(n,new ys(a))}if(t instanceof Ch)return io(n,t._key);throw new Qr(Yr.INVALID_ARGUMENT,`Invalid query. When querying with documentId(), you must provide a valid string or a DocumentReference, but it was: ${bh(t)}.`)}function hf(n,e){if(!Array.isArray(n)||0===n.length)throw new Qr(Yr.INVALID_ARGUMENT,`Invalid Query. A non-empty array is required for '${e.toString()}' filters.`)}function ff(n,e){const t=function(n,e){for(const t of n)for(const n of t.getFlattenedFilters())if(e.indexOf(n.op)>=0)return n.op;return null}(n.filters,function(n){switch(n){case"!=":return["!=","not-in"];case"array-contains-any":case"in":return["not-in"];case"not-in":return["array-contains-any","in","not-in","!="];default:return[]}}(e.op));if(null!==t)throw t===e.op?new Qr(Yr.INVALID_ARGUMENT,`Invalid query. You cannot use more than one '${e.op.toString()}' filter.`):new Qr(Yr.INVALID_ARGUMENT,`Invalid query. You cannot use '${e.op.toString()}' filters with '${t.toString()}' filters.`)}class mf{convertValue(n,e="none"){switch(Ys(n)){case 0:return null;case 1:return n.booleanValue;case 2:return Us(n.integerValue||n.doubleValue);case 3:return this.convertTimestamp(n.timestampValue);case 4:return this.convertServerTimestamp(n,e);case 5:return n.stringValue;case 6:return this.convertBytes(Vs(n.bytesValue));case 7:return this.convertReference(n.referenceValue);case 8:return this.convertGeoPoint(n.geoPointValue);case 9:return this.convertArray(n.arrayValue,e);case 11:return this.convertObject(n.mapValue,e);case 10:return this.convertVectorValue(n.mapValue);default:throw Kr()}}convertObject(n,e){return this.convertObjectMap(n.fields,e)}convertObjectMap(n,e="none"){const t={};return _s(n,((n,a)=>{t[n]=this.convertValue(a,e)})),t}convertVectorValue(n){var e,t,a;const i=null===(a=null===(t=null===(e=n.fields)||void 0===e?void 0:e.value.arrayValue)||void 0===t?void 0:t.values)||void 0===a?void 0:a.map((n=>Us(n.doubleValue)));return new Bh(i)}convertGeoPoint(n){return new Nh(Us(n.latitude),Us(n.longitude))}convertArray(n,e){return(n.values||[]).map((n=>this.convertValue(n,e)))}convertServerTimestamp(n,e){switch(e){case"previous":const t=qs(n);return null==t?null:this.convertValue(t,e);case"estimate":return this.convertTimestamp(Ws(n));default:return null}}convertTimestamp(n){const e=js(n);return new ds(e.seconds,e.nanos)}convertDocumentKey(n,e){const t=ms.fromString(n);Jr(Vc(t));const a=new Js(t.get(1),t.get(3)),i=new ys(t.popFirst(5));return a.isEqual(e)||Hr(`Document ${i} contains a document reference within a different database (${a.projectId}/${a.database}) which is not supported. It will be treated as a reference in the current database (${e.projectId}/${e.database}) instead.`),i}}class pf{constructor(n,e){this.hasPendingWrites=n,this.fromCache=e}isEqual(n){return this.hasPendingWrites===n.hasPendingWrites&&this.fromCache===n.fromCache}}class gf extends ef{constructor(n,e,t,a,i,r){super(n,e,t,a,r),this._firestore=n,this._firestoreImpl=n,this.metadata=i}exists(){return super.exists()}data(n={}){if(this._document){if(this._converter){const e=new yf(this._firestore,this._userDataWriter,this._key,this._document,this.metadata,null);return this._converter.fromFirestore(e,n)}return this._userDataWriter.convertValue(this._document.data.value,n.serverTimestamps)}}get(n,e={}){if(this._document){const t=this._document.data.field(af("DocumentSnapshot.get",n));if(null!==t)return this._userDataWriter.convertValue(t,e.serverTimestamps)}}}class yf extends gf{data(n={}){return super.data(n)}}class bf{constructor(n,e,t,a){this._firestore=n,this._userDataWriter=e,this._snapshot=a,this.metadata=new pf(a.hasPendingWrites,a.fromCache),this.query=t}get docs(){const n=[];return this.forEach((e=>n.push(e))),n}get size(){return this._snapshot.docs.size}get empty(){return 0===this.size}forEach(n,e){this._snapshot.docs.forEach((t=>{n.call(e,new yf(this._firestore,this._userDataWriter,t.key,t,new pf(this._snapshot.mutatedKeys.has(t.key),this._snapshot.fromCache),this.query.converter))}))}docChanges(n={}){const e=!!n.includeMetadataChanges;if(e&&this._snapshot.excludesMetadataChanges)throw new Qr(Yr.INVALID_ARGUMENT,"To include metadata changes with your document changes, you must also pass { includeMetadataChanges:true } to onSnapshot().");return this._cachedChanges&&this._cachedChangesIncludeMetadataChanges===e||(this._cachedChanges=function(n,e){if(n._snapshot.oldDocs.isEmpty()){let e=0;return n._snapshot.docChanges.map((t=>{const a=new yf(n._firestore,n._userDataWriter,t.doc.key,t.doc,new pf(n._snapshot.mutatedKeys.has(t.doc.key),n._snapshot.fromCache),n.query.converter);return t.doc,{type:"added",doc:a,oldIndex:-1,newIndex:e++}}))}{let t=n._snapshot.oldDocs;return n._snapshot.docChanges.filter((n=>e||3!==n.type)).map((e=>{const a=new yf(n._firestore,n._userDataWriter,e.doc.key,e.doc,new pf(n._snapshot.mutatedKeys.has(e.doc.key),n._snapshot.fromCache),n.query.converter);let i=-1,r=-1;return 0!==e.type&&(i=t.indexOf(e.doc.key),t=t.delete(e.doc.key)),1!==e.type&&(t=t.add(e.doc),r=t.indexOf(e.doc.key)),{type:vf(e.type),doc:a,oldIndex:i,newIndex:r}}))}}(this,e),this._cachedChangesIncludeMetadataChanges=e),this._cachedChanges}}function vf(n){switch(n){case 0:return"added";case 2:case 3:return"modified";case 1:return"removed";default:return Kr()}}function xf(n){n=vh(n,Ch);const e=vh(n.firestore,Mh);return function(n,e,t={}){const a=new Xr;return n.asyncQueue.enqueueAndForget((async()=>function(n,e,t,a,i){const r=new oh({next:r=>{e.enqueueAndForget((()=>Sd(n,s)));const o=r.docs.has(t);!o&&r.fromCache?i.reject(new Qr(Yr.UNAVAILABLE,"Failed to get document because the client is offline.")):o&&r.fromCache&&a&&"server"===a.source?i.reject(new Qr(Yr.UNAVAILABLE,'Failed to get document from server. (However, this document does exist in the local cache. Run again without setting source to "server" to retrieve the cached document.)')):i.resolve(r)},error:n=>i.reject(n)}),s=new _d(Ho(t.path),r,{includeMetadataChanges:!0,_a:!0});return Cd(n,s)}(await hh(n),n.asyncQueue,e,t,a))),a.promise}(_h(e),n._key).then((t=>Sf(e,n,t)))}class kf extends mf{constructor(n){super(),this.firestore=n}convertBytes(n){return new Rh(n)}convertReference(n){const e=this.convertDocumentKey(n,this.firestore._databaseId);return new Ch(this.firestore,null,e)}}function wf(n,e,t,...a){n=vh(n,Ch);const i=vh(n.firestore,Mh),r=Vh(i);let s;return s="string"==typeof(e=Q(e))||e instanceof Dh?function(n,e,t,a,i,r){const s=n.Nu(1,e,t),o=[Yh(e,a,t)],l=[i];if(r.length%2!=0)throw new Qr(Yr.INVALID_ARGUMENT,`Function ${e}() needs to be called with an even number of arguments that alternate between field names and values.`);for(let n=0;n=0;--n)if(!nf(c,o[n])){const e=o[n];let t=l[n];t=Q(t);const a=s.Cu(e);if(t instanceof qh)c.push(e);else{const n=Wh(t,a);null!=n&&(c.push(e),u.set(e,n))}}const d=new zs(c);return new Fh(u,d,s.fieldTransforms)}(r,"updateDoc",n._key,e,t,a):function(n,e,t,a){const i=n.Nu(1,e,t);$h("Data must be an object, but it was:",i,a);const r=[],s=mo.empty();_s(a,((n,a)=>{const o=Xh(e,n,t);a=Q(a);const l=i.Cu(o);if(a instanceof qh)r.push(o);else{const n=Wh(a,l);null!=n&&(r.push(o),s.set(o,n))}}));const o=new zs(r);return new Fh(s,o,i.fieldTransforms)}(r,"updateDoc",n._key,e),Cf(i,[s.toMutation(n._key,Rl.exists(!0))])}function Cf(n,e){return function(n,e){const t=new Xr;return n.asyncQueue.enqueueAndForget((async()=>async function(n,e,t){const a=ih(n);try{const n=await function(n,e){const t=$r(n),a=ds.now(),i=e.reduce(((n,e)=>n.add(e.key)),ml());let r,s;return t.persistence.runTransaction("Locally write mutations","readwrite",(n=>{let o=rl(),l=ml();return t.cs.getEntries(n,i).next((n=>{o=n,o.forEach(((n,e)=>{e.isValidDocument()||(l=l.add(n))}))})).next((()=>t.localDocuments.getOverlayedDocuments(n,o))).next((i=>{r=i;const s=[];for(const n of e){const e=Ol(n,r.get(n.key).overlayedDocument);null!=e&&s.push(new jl(n.key,e,po(e.value.mapValue),Rl.exists(!0)))}return t.mutationQueue.addMutationBatch(n,a,s,e)})).next((e=>{s=e;const a=e.applyToLocalDocumentSet(r,l);return t.documentOverlayCache.saveOverlays(n,e.batchId,a)}))})).then((()=>({batchId:s.batchId,changes:ll(r)})))}(a.localStore,e);a.sharedClientState.addPendingMutation(n.batchId),function(n,e,t){let a=n.Ba[n.currentUser.toKey()];a||(a=new Rs(cs)),a=a.insert(e,t),n.Ba[n.currentUser.toKey()]=a}(a,n.batchId,t),await nh(a,n.changes),await ad(a.remoteStore)}catch(n){const e=gd(n,"Failed to persist write");t.reject(e)}}(await function(n){return dh(n).then((n=>n.syncEngine))}(n),e,t))),t.promise}(_h(n),e)}function Sf(n,e,t){const a=t.docs.get(e._key),i=new kf(n);return new gf(n,i,e._key,a,new pf(t.hasPendingWrites,t.fromCache),e.converter)}new WeakMap,function(n,e=!0){!function(n){Gr=n}(Hn),Fn(new X("firestore",((n,{instanceIdentifier:t,options:a})=>{const i=n.getProvider("app").getImmediate(),r=new Mh(new ts(n.getProvider("auth-internal")),new ss(n.getProvider("app-check-internal")),function(n,e){if(!Object.prototype.hasOwnProperty.apply(n.options,["projectId"]))throw new Qr(Yr.INVALID_ARGUMENT,'"projectId" not provided in firebase.initializeApp.');return new Js(n.options.projectId,e)}(i,t),i);return a=Object.assign({useFetchStreams:e},a),r._setSettings(a),r}),"PUBLIC").setMultipleInstances(!0)),Kn(Or,"4.7.2",n),Kn(Or,"4.7.2","esm2017")}(),function(n=Wn()){const e=Gn(n=Q(n),We);e.isInitialized()?e.getImmediate():function(n,e={}){const t=Gn(n,We);if(t.isInitialized()){const n=t.getImmediate();if(F(e,t.getOptions()))return n;throw Ze.create("already-initialized")}t.initialize({options:e})}(n)}(qn({apiKey:"AIzaSyCXTdVrpP062FdyF5G3N_F124CV8gLKJwo",authDomain:"yet-another-wordle-clone.firebaseapp.com",projectId:"yet-another-wordle-clone",storageBucket:"yet-another-wordle-clone.appspot.com",messagingSenderId:"125079979526",appId:"1:125079979526:web:c2fcdc570bfc40091ce587",measurementId:"G-EMMCZENGBE"}));const Af=kr(),Tf=new ni,If=async()=>{try{const n=await async function(n,e,t){if(jn(n.app))return Promise.reject(Et(n,"operation-not-supported-in-this-environment"));const a=Pa(n);!function(n,e,t){if(!(e instanceof t))throw t.name!==e.constructor.name&&It(n,"argument-error"),Mt(n,"argument-error",`Type of ${e.constructor.name} does not match expected instance.Did you pass a reference from a different Auth SDK?`)}(n,e,Qa);const i=Ni(a,void 0);return new Ui(a,"signInViaPopup",e,i).executeNotNull()}(Af,Tf);return ni.credentialFromResult(n),n}catch(n){console.error(n)}},Ef=function(n,e){const t=Gn(Wn(),"firestore").getImmediate({identifier:"(default)"});if(!t._initialized){const n=(n=>{const e=E("firestore");if(!e)return;const t=e.lastIndexOf(":");if(t<=0||t+1===e.length)throw new Error(`Invalid host ${e} with no separate hostname and port!`);const a=parseInt(e.substring(t+1),10);return"["===e[0]?[e.substring(1,t-1),a]:[e.substring(0,t),a]})();n&&function(n,e,t,a={}){var i;const r=(n=vh(n,kh))._getSettings(),s=`${e}:${t}`;if("firestore.googleapis.com"!==r.host&&r.host!==s&&qr("Host has been set in both settings() and connectFirestoreEmulator(), emulator host will be used."),n._setSettings(Object.assign(Object.assign({},r),{host:s,ssl:!1})),a.mockUserToken){let e,t;if("string"==typeof a.mockUserToken)e=a.mockUserToken,t=Fr.MOCK_USER;else{e=function(n,e){if(n.uid)throw new Error('The "uid" field is no longer supported by mockUserToken. Please use "sub" instead for Firebase Auth User ID.');const t=e||"demo-project",a=n.iat||0,i=n.sub||n.user_id;if(!i)throw new Error("mockUserToken must contain 'sub' or 'user_id' field!");const r=Object.assign({iss:`https://securetoken.google.com/${t}`,aud:t,iat:a,exp:a+3600,auth_time:a,sub:i,user_id:i,firebase:{sign_in_provider:"custom",identities:{}}},n);return[A(JSON.stringify({alg:"none",type:"JWT"})),A(JSON.stringify(r)),""].join(".")}(a.mockUserToken,null===(i=n._app)||void 0===i?void 0:i.options.projectId);const r=a.mockUserToken.sub||a.mockUserToken.user_id;if(!r)throw new Qr(Yr.INVALID_ARGUMENT,"mockUserToken must contain 'sub' or 'user_id' field!");t=new Fr(r)}n._authCredentials=new es(new Zr(e,t))}}(t,...n)}return t}(),Mf=Ah(Ef,"users"),_f=async n=>{const e=Th(Mf,n.uid);return(await xf(e)).data()},Pf={0:600,1:400,2:300,3:200,4:150,5:100,6:5},Rf=async(n,e)=>{try{const t=Th(Mf,n.uid),a=await xf(t);await wf(t,{...a.data(),gameState:e})}catch(n){console.log(n)}},Df=async(n,e)=>{try{const t=Th(Mf,n.uid),a=await xf(t),i=e.guessDistribution.reduce(((n,e,t)=>n+Pf[t]*e),0);await wf(t,{...a.data(),userData:e,points:i})}catch(n){console.log(n)}};let Lf=[];const Nf=async()=>{try{return function(n,...e){var t,a,i;n=Q(n);let r={includeMetadataChanges:!1,source:"default"},s=0;"object"!=typeof e[s]||Eh(e[s])||(r=e[s],s++);const o={includeMetadataChanges:r.includeMetadataChanges,source:r.source};if(Eh(e[s])){const n=e[s];e[s]=null===(t=n.next)||void 0===t?void 0:t.bind(n),e[s+1]=null===(a=n.error)||void 0===a?void 0:a.bind(n),e[s+2]=null===(i=n.complete)||void 0===i?void 0:i.bind(n)}let l,c,u;if(n instanceof Ch)c=vh(n.firestore,Mh),u=Ho(n._key.path),l={next:t=>{e[s]&&e[s](Sf(c,n,t))},error:e[s+1],complete:e[s+2]};else{const t=vh(n,wh);c=vh(t.firestore,Mh),u=t._query;const a=new kf(c);l={next:n=>{e[s]&&e[s](new bf(c,a,t,n))},error:e[s+1],complete:e[s+2]},function(n){if("L"===n.limitType&&0===n.explicitOrderBy.length)throw new Qr(Yr.UNIMPLEMENTED,"limitToLast() queries require specifying at least one orderBy() clause")}(n._query)}return function(n,e,t,a){const i=new oh(a),r=new _d(e,i,t);return n.asyncQueue.enqueueAndForget((async()=>Cd(await hh(n),r))),()=>{i.za(),n.asyncQueue.enqueueAndForget((async()=>Sd(await hh(n),r)))}}(_h(c),u,o,l)}(function(n,e,...t){let a=[];e instanceof rf&&a.push(e),a=a.concat(t),function(n){const e=n.filter((n=>n instanceof lf)).length,t=n.filter((n=>n instanceof of)).length;if(e>1||e>0&&t>0)throw new Qr(Yr.INVALID_ARGUMENT,"InvalidQuery. When using composite filters, you cannot use more than one filter at the top level. Consider nesting the multiple filters within an `and(...)` statement. For example: change `query(query, where(...), or(...))` to `query(query, and(where(...), or(...)))`.")}(a);for(const e of a)n=e._apply(n);return n}(Ah(Ef,"users"),function(n,e="asc"){const t=e,a=af("orderBy","points");return cf._create(a,t)}(0,"desc"),(function(n,e){if(e<=0)throw new Qr(Yr.INVALID_ARGUMENT,`Function ${n}() requires a positive number, but it was: ${e}.`)}("limit",10),uf._create("limit",10,"F"))),(n=>{Lf=[],n.forEach((n=>{Lf.push({...n.data(),id:n.id})}))}))}catch(n){console.log(n)}};var Bf=function(n,e,t,a){return new(t||(t=Promise))((function(i,r){function s(n){try{l(a.next(n))}catch(n){r(n)}}function o(n){try{l(a.throw(n))}catch(n){r(n)}}function l(n){var e;n.done?i(n.value):(e=n.value,e instanceof t?e:new t((function(n){n(e)}))).then(s,o)}l((a=a.apply(n,e||[])).next())}))};const zf=kr();function Of(){return k[k.length%(n=new Date,(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate())-Date.UTC(n.getFullYear(),0,0))/24/60/60/1e3)];var n}function Ff(){const n=new Date,e=new Date(n);return e.setHours(24,0,0,0),e.getTime()}function Gf(){return Ff()-(new Date).getTime()}k.length;const jf=()=>Bf(void 0,void 0,void 0,(function*(){return null!==zf.currentUser?(yield _f(zf.currentUser)).userData:JSON.parse(localStorage.getItem("userData"))})),Uf=()=>Bf(void 0,void 0,void 0,(function*(){if(null!==zf.currentUser){const n=(yield _f(zf.currentUser)).gameState;return yield n}return JSON.parse(localStorage.getItem("gameState"))})),Vf=()=>JSON.parse(localStorage.getItem("settings"));function Hf(){return Bf(this,void 0,void 0,(function*(){let n={guesses:[],wordToGuess:Of(),ttl:Ff(),triggered:0};$f=n,null!=zf.currentUser?yield Rf(zf.currentUser,n):localStorage.setItem("gameState",JSON.stringify($f))}))}function qf(n,e){return Bf(this,void 0,void 0,(function*(){"gamesPlayed"===n?Yf.gamesPlayed=e:"gamesWon"===n?Yf.gamesWon=e:"winRate"===n?Yf.winRate=e:"currentStreak"===n?Yf.currentStreak=e:"longestStreak"===n&&(Yf.longestStreak=e),null!=zf.currentUser?yield Df(zf.currentUser,Yf):localStorage.setItem("userData",JSON.stringify(Yf))}))}function Wf(n){return Bf(this,void 0,void 0,(function*(){Yf.guessDistribution[n]++,null!=zf.currentUser?yield Df(zf.currentUser,Yf):localStorage.setItem("userData",JSON.stringify(Yf))}))}function Kf(n){Qf.theme=n,localStorage.setItem("settings",JSON.stringify(Qf))}function Jf(n){Qf.mode=n,localStorage.setItem("settings",JSON.stringify(Qf))}let $f,Yf,Qf;var Xf=function(n,e,t,a){return new(t||(t=Promise))((function(i,r){function s(n){try{l(a.next(n))}catch(n){r(n)}}function o(n){try{l(a.throw(n))}catch(n){r(n)}}function l(n){var e;n.done?i(n.value):(e=n.value,e instanceof t?e:new t((function(n){n(e)}))).then(s,o)}l((a=a.apply(n,e||[])).next())}))};const Zf=kr();let nm=n.TRIES;const em=document.querySelectorAll(".sign-in-google-btn"),tm=document.querySelectorAll(".sign-out-google-btn"),am=document.querySelectorAll(".google-sign-in"),im=document.querySelectorAll(".user-avatar-img-element"),rm=document.querySelector(".google-signed-in-username-input"),sm=document.querySelector(".account-settings-save-btn"),om=document.querySelector(".stats-container"),lm=document.querySelector(".settings-container"),cm=document.querySelector(".info-container"),um=document.querySelector(".leaderboards-container"),dm=document.querySelector(".account-container"),hm=(document.querySelectorAll(".value"),document.querySelectorAll(".guess-value")),fm=document.querySelector(".cover"),mm=document.querySelector(".stats-icon"),pm=document.querySelector(".settings-icon"),gm=document.querySelector(".info-icon"),ym=document.querySelector(".leaderboards-icon"),bm=document.querySelector(".account-icon"),vm=document.querySelector(".copy-to-clipboard-btn"),xm=document.querySelectorAll(".key"),km=document.querySelector(".next-word-container"),wm=document.querySelector(".next-word-time-value"),Cm=document.querySelector(".word-to-guess"),Sm=document.querySelectorAll(".word-to-guess-sqr"),Am=document.querySelector(".hard-mode-switch-container"),Tm=(document.querySelector(".hard-mode-switch-handle"),document.querySelector(".dark-mode-switch-container"));document.querySelector(".dark-mode-switch-handle");let Im=0,Em=0,Mm={correct:new Array(n.WORD_LENGTH),misplaced:[]},_m=[],Pm=!1,Rm=!1,Dm=!1,Lm=null;function Nm(){Cm.classList.remove("displayed"),km.classList.remove("displayed"),document.querySelector(".hr-one").style.display="none"}function Bm(n,e){Mm.correct[n]=e}function zm(n){Mm.misplaced.push(n)}function Om(e,t,a){return Xf(this,void 0,void 0,(function*(){const i=yield Uf(),r=yield jf();if((null==i.triggered||1!==i.triggered)&&Math.random()<1e-4&&!e)return setTimeout((()=>{m("Wait, you're feeling EXTREMELY lucky today: You've been granted one more guess!",0,3500,"system")}),1e3),setTimeout((()=>{const e=document.createElement("div");e.classList.add("row-container");for(let t=0;t{const n=new Date(Gf()),e=`${n.getUTCHours().toString().padStart(2,"0")}:${n.getUTCMinutes().toString().padStart(2,"0")}:${n.getUTCSeconds().toString().padStart(2,"0")}`;y(wm,e)}),1e3),vm.classList.remove("disabled");const l=i.wordToGuess,u=Fm(g(Im-1),l);for(let n=0;nr.longestStreak&&(yield qf("longestStreak",r.currentStreak))),t&&(yield m("You got it!",100*n.WORD_LENGTH+500,1500,"message"))):(a&&(yield qf("currentStreak",0)),t&&(yield m("Unlucky...",100*n.WORD_LENGTH+500,1500,"message"))),a&&(yield qf("winRate",Math.round(r.gamesWon/r.gamesPlayed*100))),Um(!0,yield jf())}))}function Fm(e,t){const a={word:e,result:new Array(n.WORD_LENGTH),correctLetters(){let n=0;return this.result.forEach((e=>{"Correct"===e&&n++})),n}},i=t.toLowerCase().split("");for(let n=0;n0?document.getElementById("guess-distrib-7").style.display="grid":document.getElementById("guess-distrib-7").style.display="none",e){if(Pm)for(let n=0;n{Sm[n].classList.add("flipped"),setTimeout((()=>{Sm[n].classList.remove("flipped")}),500)}),200*n);const n=document.querySelectorAll(".guess-value-container");if(Rm&&(hm[Im-1].classList.add("added"),1==n[Im-1].children.length)){const e=document.createElement("p");e.className="points-added",e.textContent="+"+Pf[Im-1].toString(),n[Im-1].appendChild(e)}document.querySelector(".games-played-value-p").textContent=t.gamesPlayed.toString(),document.querySelector(".win-rate-value-p").textContent=t.winRate.toString(),document.querySelector(".current-streak-value-p").textContent=t.currentStreak.toString(),document.querySelector(".longest-streak-value-p").textContent=t.longestStreak.toString();for(let n=0;n0)for(let n=0;n0&&e<=parseFloat(hm[n].style.minWidth)&&(e+=1),hm[n].style.width=`${e}%`}Gm(om)}else jm(om)}))}let Vm=[],Hm=[];const qm=()=>{document.documentElement.style.setProperty("--background-color",getComputedStyle(document.documentElement).getPropertyValue("--dark-background-color")),document.documentElement.style.setProperty("--background-color-rgb",getComputedStyle(document.documentElement).getPropertyValue("--dark-background-color-rgb")),document.documentElement.style.setProperty("--square-border-color",getComputedStyle(document.documentElement).getPropertyValue("--dark-square-border-color")),document.documentElement.style.setProperty("--square-border-color-rgb",getComputedStyle(document.documentElement).getPropertyValue("--dark-square-border-color-rgb")),document.documentElement.style.setProperty("--filled-color",getComputedStyle(document.documentElement).getPropertyValue("--dark-filled-color")),document.documentElement.style.setProperty("--filled-color-rgb",getComputedStyle(document.documentElement).getPropertyValue("--dark-filled-color-rgb")),document.documentElement.style.setProperty("--correct",getComputedStyle(document.documentElement).getPropertyValue("--dark-correct")),document.documentElement.style.setProperty("--misplaced",getComputedStyle(document.documentElement).getPropertyValue("--dark-misplaced")),document.documentElement.style.setProperty("--wrong",getComputedStyle(document.documentElement).getPropertyValue("--dark-wrong")),document.documentElement.style.setProperty("--error",getComputedStyle(document.documentElement).getPropertyValue("--dark-error")),document.documentElement.style.setProperty("--primary",getComputedStyle(document.documentElement).getPropertyValue("--dark-primary")),document.documentElement.style.setProperty("--primary-rgb",getComputedStyle(document.documentElement).getPropertyValue("--dark-primary-rgb")),document.documentElement.style.setProperty("--secondary",getComputedStyle(document.documentElement).getPropertyValue("--dark-secondary")),document.documentElement.style.setProperty("--secondary-rgb",getComputedStyle(document.documentElement).getPropertyValue("--dark-secondary-rgb")),document.documentElement.style.setProperty("--system-color-rgb",getComputedStyle(document.documentElement).getPropertyValue("--dark-system-color-rgb"))},Wm=()=>{document.documentElement.style.setProperty("--background-color",getComputedStyle(document.documentElement).getPropertyValue("--light-background-color")),document.documentElement.style.setProperty("--background-color-rgb",getComputedStyle(document.documentElement).getPropertyValue("--light-background-color-rgb")),document.documentElement.style.setProperty("--square-border-color",getComputedStyle(document.documentElement).getPropertyValue("--light-square-border-color")),document.documentElement.style.setProperty("--square-border-color-rgb",getComputedStyle(document.documentElement).getPropertyValue("--light-square-border-color-rgb")),document.documentElement.style.setProperty("--filled-color",getComputedStyle(document.documentElement).getPropertyValue("--light-filled-color")),document.documentElement.style.setProperty("--filled-color-rgb",getComputedStyle(document.documentElement).getPropertyValue("--light-filled-color-rgb")),document.documentElement.style.setProperty("--correct",getComputedStyle(document.documentElement).getPropertyValue("--light-correct")),document.documentElement.style.setProperty("--misplaced",getComputedStyle(document.documentElement).getPropertyValue("--light-misplaced")),document.documentElement.style.setProperty("--wrong",getComputedStyle(document.documentElement).getPropertyValue("--light-wrong")),document.documentElement.style.setProperty("--error",getComputedStyle(document.documentElement).getPropertyValue("--light-error")),document.documentElement.style.setProperty("--primary",getComputedStyle(document.documentElement).getPropertyValue("--light-primary")),document.documentElement.style.setProperty("--primary-rgb",getComputedStyle(document.documentElement).getPropertyValue("--light-primary-rgb")),document.documentElement.style.setProperty("--secondary",getComputedStyle(document.documentElement).getPropertyValue("--light-secondary")),document.documentElement.style.setProperty("--secondary-rgb",getComputedStyle(document.documentElement).getPropertyValue("--light-secondary-rgb")),document.documentElement.style.setProperty("--system-color-rgb",getComputedStyle(document.documentElement).getPropertyValue("--light-system-color-rgb"))},Km=()=>{fm.addEventListener("click",(()=>{jm(Lm)})),gm.addEventListener("click",(()=>{Gm(cm);const n=[document.querySelector(".square.tutorial-sqr.correct"),document.querySelector(".square.tutorial-sqr.misplaced"),document.querySelector(".square.tutorial-sqr.wrong")];for(let e=0;e{n[e].classList.add("flipped")}),250*e),setTimeout((()=>{n[e].classList.remove("flipped")}),250*e+500)})),ym.addEventListener("click",(()=>{!function(){Xf(this,void 0,void 0,(function*(){let n=!1;0==Hm.length&&(Hm=Lf),0==Vm.length&&(Vm=Hm),Hm.toString()!=Lf.toString()&&(!0,Vm=Hm,Hm=Lf);const e=document.querySelector(".leaderboard-cards-container");if(e.textContent="",console.log(Lf),Lf.forEach(((n,t)=>{const a=document.createElement("div");a.className="leaderboard-card";const i=Vm.findIndex((e=>e.id===n.id));let r;r=i>t?"+":i\n

${t+1}

\n \n
\n
\n
\n \n
\n
\n

${n.username}

\n

${n.userData.winRate}% WR

\n
\n
\n

${n.points}

\n
\n `,e.appendChild(a)})),0==Lf.length){const n=document.createElement("p");n.style.color="var(--filled-color)",n.style.opacity="0.5",n.style.textAlign="center",n.style.width="100%",n.style.fontFamily="Poppins",n.textContent="No data yet",e.appendChild(n)}Gm(um)}))}()})),bm.addEventListener("click",(()=>{Gm(dm),Xf(void 0,void 0,void 0,(function*(){Gm(dm)}))})),mm.addEventListener("click",(()=>Xf(void 0,void 0,void 0,(function*(){Um(!0,yield jf())})))),pm.addEventListener("click",(()=>{Gm(lm)})),vm.addEventListener("click",(()=>{!function(){Xf(this,void 0,void 0,(function*(){const n=yield Uf(),e=[`Wordle ${(new Date).toLocaleDateString()}`];n.guesses.forEach((t=>{let a="";Fm(t,n.wordToGuess).result.forEach((n=>{a+="Correct"===n?"🟦":"Misplaced"===n?"🟧":"⬛"})),e.push(a)})),n.guesses[n.guesses.length-1].toLowerCase()===n.wordToGuess.toLowerCase()?e.push(`Guessed the word in ${n.guesses.length} ${1===n.guesses.length?"try":"tries"} in ${"hard"===Vf().mode?"Hard Mode":"Normal Mode"}.`):e.push("Failed to guess the word for today."),navigator.clipboard.writeText(e.join("\n")),yield m("Copied to clipboard!",0,1500,"system")}))}()})),Am.addEventListener("click",(()=>{0===Im?(Am.classList.toggle("on"),Am.classList.contains("on")?Jf("hard"):Jf("normal")):Am.classList.contains("on")?m("Hard mode can only be disabled at the start of the round.",0,1500,"error"):m("Hard mode can only be enabled at the start of the round.",0,1500,"error")})),Tm.addEventListener("click",(()=>{Tm.classList.toggle("on"),Tm.classList.contains("on")?(qm(),Kf("dark")):(Wm(),Kf("light"))})),xm.forEach((n=>{["mousedown","touchstart"].forEach((e=>{n.addEventListener(e,(()=>{n.classList.contains("wrong")&&n.classList.add("error"),n.classList.add("pressed")}))})),["mouseup","touchend"].forEach((e=>{n.addEventListener(e,(()=>{n.classList.remove("pressed")}))})),["mouseleave","touchcancel"].forEach((e=>{n.addEventListener(e,(()=>{n.classList.contains("pressed")&&n.classList.remove("pressed")}))})),n.addEventListener("click",(()=>{n.classList.add("popped"),setTimeout((()=>{n.classList.remove("popped")}),100);let e=n.textContent;"Delete"===n.textContent&&(e="Backspace");const t=new KeyboardEvent("keydown",{key:e});document.dispatchEvent(t)}))})),document.addEventListener("keydown",(t=>Xf(void 0,void 0,void 0,(function*(){if(!Pm&&!Dm){let r;if(i=t.key,/^[a-zA-Z]$/.test(i)&&1==i.length&&Em<=n.WORD_LENGTH-1){if("hard"===Vf().mode){const n=document.querySelector(`.keycode-${t.key.toLowerCase()}`);if(n.classList.contains("wrong"))return n.classList.add("pressed"),n.classList.add("error"),void setTimeout((()=>{n.classList.remove("error"),n.classList.remove("pressed")}),100);if(void 0!==Mm.correct[Em]&&Mm.correct[Em]!==t.key.toLowerCase())return m("Hard mode is enabled. Revealed hints must be used.",0,1e3,"error"),n.classList.add("pressed"),n.classList.add("error"),void setTimeout((()=>{n.classList.remove("error"),n.classList.remove("pressed")}),100);if(Mm.misplaced.includes(t.key.toLowerCase())&&Mm.correct[Em]!==t.key.toLowerCase()){let n=Mm.misplaced.splice(Mm.misplaced.indexOf(t.key.toLowerCase()),1);_m=_m.concat(n)}}const n=p(Im,Em);y(n.firstElementChild,t.key),n.classList.add("popped"),n.classList.add("filled"),n.classList.remove("out"),r=document.querySelector(`.keycode-${t.key.toLowerCase()}`),Em++}else if("Backspace"===t.key){if(r=document.querySelector(".delete"),0!==Em){const n=p(Im,Em-1);"hard"===Vf().mode&&_m.includes(n.firstElementChild.textContent.toLowerCase())&&(_m.splice(_m.indexOf(n.firstElementChild.textContent.toLowerCase()),1),zm(n.firstElementChild.textContent.toLowerCase())),n.firstElementChild.textContent="",n.classList.add("out"),n.classList.remove("filled"),n.classList.remove("popped"),Em--}}else{if("Enter"!==t.key)return;if(r=document.querySelector(".enter"),Em===n.WORD_LENGTH){const t=g(Im);if(function(n){return e.includes(n.toLowerCase())}(t)){if(0===Im&&Am.classList.add("disabled"),"hard"===Vf().mode){if(Mm.misplaced.length>0)return void m("All revealed hints must be used.",0,1e3,"error");_m=[]}const e=Fm(t,(yield Uf()).wordToGuess);f(!0),Dm=!0,yield b(Im,e,200,250,!0),f(!1),Dm=!1,yield function(n,e){return Bf(this,void 0,void 0,(function*(){$f=yield Uf(),$f.guesses[n]=e,null!=zf.currentUser?yield Rf(zf.currentUser,$f):localStorage.setItem("gameState",JSON.stringify($f))}))}(Im,t),e.correctLetters()===n.WORD_LENGTH?(Im++,Rm=!0,yield Om(Rm,!0,!0)):Im{n.classList.remove("shake")}),100)}}}r.classList.add("pressed"),setTimeout((()=>{r.classList.remove("pressed")}),50)}var a,i})))),em.forEach((n=>{n.addEventListener("click",(()=>Xf(void 0,void 0,void 0,(function*(){try{const n=yield If();(function(n){const{user:e,_tokenResponse:t}=n;return e.isAnonymous&&!t?{providerId:null,isNewUser:!1,profile:null}:function(n){var e,t;if(!n)return null;const{providerId:a}=n,i=n.rawUserInfo?JSON.parse(n.rawUserInfo):{},r=n.isNewUser||"identitytoolkit#SignupNewUserResponse"===n.kind;if(!a&&(null==n?void 0:n.idToken)){const a=null===(t=null===(e=ea(n.idToken))||void 0===e?void 0:e.firebase)||void 0===t?void 0:t.sign_in_provider;if(a)return new oi(r,"anonymous"!==a&&"custom"!==a?a:null)}if(!a)return null;switch(a){case"facebook.com":return new ci(r,i);case"github.com":return new ui(r,i);case"google.com":return new di(r,i);case"twitter.com":return new hi(r,i,n.screenName||null);case"custom":case"anonymous":return new oi(r,null);default:return new oi(r,a,i)}}(t)})(n).isNewUser&&(yield(async(n,e,t,a,i)=>{const r=t.guessDistribution.reduce(((n,e,t)=>n+Pf[t]*e),0);try{await function(n,e,t){n=vh(n,Ch);const a=vh(n.firestore,Mh),i=function(n,e,t){let a;return a=n?t&&(t.merge||t.mergeFields)?n.toFirestore(e,t):n.toFirestore(e):e,a}(n.converter,e,t);return Cf(a,[Hh(Vh(a),"setDoc",n._key,i,null!==n.converter,t).toMutation(n._key,Rl.none())])}(Th(Ef,"users",n.uid),{gameState:e,userData:t,username:a,photoURL:i,points:r})}catch(n){console.log(n)}})(n.user,JSON.parse(localStorage.getItem("gameState")),JSON.parse(localStorage.getItem("userData")),n.user.displayName.split(" ")[0],n.user.photoURL))}catch(n){console.log(n)}}))))})),tm.forEach((n=>{n.addEventListener("click",(()=>Xf(void 0,void 0,void 0,(function*(){yield function(n){return Q(n).signOut()}(Zf),window.location.reload()}))))})),function(n,e,t,a){Q(n).onAuthStateChanged((n=>Xf(void 0,void 0,void 0,(function*(){n?Jm(Zf):$m()}))),void 0,void 0)}(Zf)},Jm=n=>Xf(void 0,void 0,void 0,(function*(){am.forEach((n=>n.style.display="none"));const e=document.querySelectorAll(".google-signed-in");im.forEach((e=>{e.src=n.currentUser.photoURL,console.log("Src: ",e.src)})),e.forEach((n=>{n.style.display="flex"})),Nf();const t=yield _f(n.currentUser);console.log(t),rm.value=t.username,rm.addEventListener("input",(n=>{n.target.value!==t.username?sm.disabled=!1:sm.disabled=!0})),sm.addEventListener("click",(()=>Xf(void 0,void 0,void 0,(function*(){yield(async(n,e)=>{try{const n=await xf(userRef);await wf(userRef,{...n.data(),username:e})}catch(n){console.log(n)}})(n.currentUser,rm.value)}))))})),$m=()=>{am.forEach((n=>n.style.display="flex")),document.querySelectorAll(".google-signed-in").forEach((n=>{n.style.display="none"}))};!function(){Xf(this,void 0,void 0,(function*(){!function(e=n.WORD_LENGTH,t=nm,a=c){for(let i=0;i{Nm(),location.reload()}),t),function(e){Xf(this,void 0,void 0,(function*(){return yield m("Please wait while we load the game...",0,1e3,"system"),new Promise(((t,a)=>Xf(this,void 0,void 0,(function*(){(null==e.ttl||e.ttl<(new Date).getTime())&&(yield Hf(),Nm(),vm.classList.add("disabled"),location.reload());for(let a=0;a
-
+
+

Leaderboards


-
-
-

1

-
-
-
-

Ken

-

100% WR

-
-

4684

-
-
-
-
-

2

-
-
-
-

Ken

-

100% WR

-
-

4684

-
-
-
-
-

3

-
-
-
-

Ken

-

100% WR

-
-

4684

-
-
-
-
-

4

-
-
-
-

Ken

-

100% WR

-
-

4684

-
-
-
-
-

5

-
-
-
-

Ken

-

100% WR

-
-

4684

-
-
-
-
-

6

-
-
-
-

Ken

-

100% WR

-
-

4684

-
-
-
-
-

7

-
-
-
-

Ken

-

100% WR

-
-

4684

-
-
-
-
-

8

-
-
-
-

Ken

-

100% WR

-
-

4684

-
-
-
-
-

9

-
-
-
-

Ken

-

100% WR

-
-

4684

-
-
-
-
-

10

-
-
-
-

Ken

-

100% WR

-
-

4684

-
+