aE*|E@NQoF}jTp%>F_OMbgb^FtX#J`6to&GD4-c?J9z22@C+r}S-sa!a
za+a=dlH3l5GwD9wmfVJ@rVzVFQI3Civ|7$z6=xe5hwh<@3RPck9f`?m1iO`#7kBmo
z4juZaKI+gayPcl$NHYC+j~csiqzktOmC|uX*42JBU9TySxmsIM{$Tv(k>HulfA)2p}^As0U!`)t**YemIy6z4T>~dxI
zJN7=JH+}kCcmrw{U-ACp-tUSxR}a6uMU|q=y?-BNJ1iP!i|>K`_jil5_L}U-B4nfB
z)}y@Y*Aw;hSCV)&zL{r>&6=3gDA#sc47XJ_V`9wCvq<;QVzPGI$s#n6em+v7a-~(}
zii_%mMQN=%71!B8bxLd1DJ|;|kTEWWr7A$_z5wl=KXBYmpk+->sHR@mKlBmcaUPWe
z@aTK%{!?m9pY(R_?&L>txSU2q%*VG&Bpmwosa2U>m9eZ^bgEI
zomXz5992S7!YLmaVk#nT@3g!J4~OUbUA=23u9f3|Ch=X{_5USy?a38Cid+eiE3T6b
zP{bft?Dmoxxzgnv9U?oyuYW5o46n_^^t;5$*%P1aDS8uTi*glB-)_OB!iz`K>GvEu
ze|*d<#~Q~m?;SdIDAE?vXYinx`+4Z23|)2@%H%xG>w?|5veeEy<9{l%=$AS>*Bo@;
z)2#Xf1ga=g4K`VKeLb6QYzw@Qmo(E9`j2|tlW2zs8`ppQ0~Cd{c7|(Y2ZuOA-MswH
zbT~MNu$?A?>*(Y$>UyoLerge>q_^{VHk{)8e_p@o
z9dGa9?YrqbTi$HgI%;)ay!`alXRqIU{>9rb|MJ(bzW(OhzkT=pyB~i1>F@vjKXH=6
z=<#Iw%hhbYSYH3ST5oP{-+#FKjSH!?XZ#>+mGNr1?APexxnTbx|Ie9Vo@SoMJi|Pn
zc>(i6W;io~8Oe+~y-hO3u!|Yyvw(%*9}|KJ$r?g2p_%Y7i80|b5ik)li6~=}WKuDy
zne>=6O!}t;2jBx!oGHN+v?!)DQyx=>DW9o;sgP;Tv|t(s6d0kI_Lw$I`%DK+hs@*5
zgHMuq$F^Ux-%cH|*xRT!^AQoV=>DshfB(N%-+cD^+i%`}{jMj3(D;v4KMM!FYKt8r
z^P{+(#ZM0*i5&tT{)kLlcE#_EbPd`k+ih`0yJ+5Zg$&N@l++f|cYBWHx_DrJF%?@8
zN<226r%d@=$hPpdQfj=&9|UcGD>Y6(<$I&Hkn9!@%)$NsCiiQ{hS^7)ufE~3M$ASG
z=bXKxG5rP|7oSZyi@WFs*@tgNwx$;cs`7vsAAN#Y#Pcj_y<0&RQgmn+weUQlzodxb
zeswhLALB*8?nZRqwl2_kS^n4!swE
zeT4vE>6WTX0p#mN-I=v*S;5n|QUMV>`i4g&kP#SnW?E>TGBn&>_w{cl!=
z2Y-K(?f)}jV^9EG+}B+Bm`n`jF@;+o
z5^~{bUtnYbVn7D~V!9Aq$&lQ~HjHk8N0Ut`Md*2&hMJJ;Fz|IiGfg11QXX&y-Y{GP
zKpb-up;dqpM*;I708-X(SPFL-;RNxh1h5<8
zMTl@>rjk;IzK>A|HUmSU14I?AP|oOU=DhD#u#J{&ACVq=mLybD#>l1
z_!|V0(gVqF%~Kkl!9W?RFfSMY4Fo|FV=d683?ev<5P%EYz*^t;DWJ$OO?KI#9fk%-
zSen*_31JGR@Q_w=;#>nJXivdLn+zUNPSBKZv?fq}Dlj_4V^CZQ?gbhmC``z!kYcNR
z14ao*qa+2^MuRef`$P^RFcRDIKtJ+VVM$1(i-pJ$@Qy-bLR2U?4OO5$AV;!=iues1
zsGg7~Si`7fp;~|*h_dEX^*lPWAlX9|AVw5$pcLZd10n{3aIDFHXObVspDW9B%_lc+$5Dt&QZnu5NQ^M#3vvSpkkvC
zQyL=ip%!sL=ry_vh!NV*;m{{2Ur}0Prw0q!%U9mKcMS!A7ddloOBygK>HXJtP@K1%l#)YzEv^b~unk
zUBd!ReTxbzNW?vO+kgawgcIOk9SSNMBSe7H@DXvajSEdsQ-eX7Ra6{sWJlVdhH^UO
zBa8;rr!t4lfprvt1S`-p?Y9FDTtHjpL`L)+FQg9uU<&dQWsMQyf>^<9KSgk$0rnzP
z7*EI=Xa#4e5C@bwm=>rRp`Bsekn{}!SHLu&wnN_M3KS3Nin;>gjdb&Bn+Ka}rsEfepot8Ze}wEQ4zR6)A_2LtB>s4sr$fdeEt8uCVNf)tC_AC(1n7iA%H&
zm}oGW09;@lSfo)Fkf%fz8dosBQeC3q$b|Gg2-${0!@Phhjgbr@kw`Eb6^@hBKBX@*!;lB0O9Bik!{8;7N>e5qLxs(Hh;mIG7Ez_n
zK?5=}6(t0kAec%R8ue?yE{PLRMr9le{=a5B*RkX{qA=|Dn+Ui@?F$4s1o#vJ4H>d%
z%8{dY*Z;*G0unInVOM2kMw~5@X_sw!;IQad%iT~VQlSNchR4(`CS5sY
zLuT88N|GO#$EIuP)eU8ZXFGYHQm5bZ108o5_0sdx)OGakWYE(}0^s`AchGUr^u_N9
z{MxS8syZG&uG%Y4iYX>fzPy^cx3-}@EpT~p2vHYbY^fiDikd(0`?-<5etl6rfYf4W
zh8R)zclpR3j!a46
zjhH68K=CZo6%WNt24ORbzb@0Mp^+s9Ai(cKP}N9OQaT~%*76C`=}sk+&}^lbN|@rcjgBc4a7H@idAuJl
z+(69bwv(Q&;&_SoK8}IiKBHsOlYwpPWe0oB+w)1~NV^xOEI`L7?e%k?G(?sB`GM1c
z{XJ?d8tu5DZv46dfX}?#C$^SkYR2HULnQ4D0Q(mzGi>cJwz_$vXl{JeDzZAboyv&>Z}`*LW?}$
z8vCuBM!(!@j9l&nPwjsatQB`1S1F#UoQH4+vF_g*|1
z1M?Z`5UdN~b~@tL(X$d>A8wcY;M*N)fc=h{-%|!4`ix=^Fv9Mg`!tlu#4%c5E(c`>L-3{o%aFS0%Xn(tsKmh_$KEN0UdB3G9WH
zhOXN&SwRg4fh7NyF5X4f!S11XlD}{b%=ROji!9)`GY2(3D2i%`EPuqWxNs}b3IwmCS+#!XeAv~>T
z)_2^)*Z`Q_7e(JgM#n1Xc|lg%{3I4WHB%Lmfo9>3rUZE2#Yc~V!cf@dS
z=(}=pJJa98PTQTbSBj%5>|XMZc|U_@tYE1HgMiYazf&-P9uQ3XVMw?oFqH-@l2?xmrmKusC?nhtHznz
zP^-FqMI@A{u#R5rZN{YeM)Bj#Jqs3nc=Z^i4;&^_@4xh3ug};Kc`KeyY+Z7y3|fbS
z24bGhwwkP{g_G4H9|FZ3A(ni&%oC071kxqUlfQ~LX@RkA7Zg9hd8fjwzvCzaPd|8C
z51{I7B5^9O7pHHpQ2^)IpGy8CWfWP8X(GNYO@&I^(N2fM!1yO$vW;n?()!+8a(qZs
zqTN@^eE@qf^<_m4d(_G*PO7RdKpwjGCdRLiihVkh4-JXdof13QD*`cEo{|738LCsx
z669XaNx&Ca-jh8E*l6(TG!CrCP!_(uR56>W)}qm~KOP5zH~1vvd7DwxT{{--?!uQMCs9
z4&fX-cTz)>4^x?!jr+WW%gLeq47p@yZ^q^{Q)pcmXdeGBV~WgWw<-S}s7seb)#o(A
zJ*5*kPTcb7rBn7(&AyWNc#H+UCuvGIFxo#4=Riy823;BE#
zM9lZJ^+`u7!#3W~Kwh(Mb2JNNedGhSpla?YhR9|QWD%dClm+Rmh8U58(y*7kY;wWt
z<(w{Z^c11d(Q&+QV)B-IBFKpd-_U5%#LKiGF~VxqM@eOCp>Os{ufhYLvddyF03bUS
zK)&xcDojiZgMP?2{u+k%;guD}NtM<@+0-gz8?`c8h)cP?1C^cHBEdT8js^XO3bLC{
z>~mLbL+g{kBDYHlUK3OX;=xPincTTp@>rJL>R8>g*j%*$wGf4%&!`Ut*^3M)Ni*qp
z0!5peWL4{_lc`KIveOvnrSZo~Wll{-zT*5Gzv{O-^62Xt2tLwF7^Oah>ymiKce5fN
zTiI?q7s5*p4c|4CO^LDd9kAl7KK=e~Jn>!4l1#x!)&a#JTB;P##OX9P(yJ!qWF!
z;5eQ>*%_!%7x#&>#FR!Gu>d$ST4YiCZWFIRL#};BTMgk7ZZpAajW09uPMC1m<4xQ-
zqozxl{OpT3f3qPSou@blQKMjrY7FE~=B9sX~;J_wZI#~m<&gj}8
zVVyj(&%CEng@;l-`tSefyi
z=O_z){kS%%Q(bGvuStqi-WCx0jzOw%~Ppd@625V&)I(gY=}0Kdiy5>iI1LVPMQ*^Xb31PGqql>xdCwT
z^|pbE9p$Gd`twZMDzWs*Jtpe*32}tTFhF@VSVLfTMK70*|qQgl?T|O1K`QCoXgIWnv1m
zVyDvP27UK2bNyI%pJ{v$(s$Grp9!1U-chfz+s|A$3Fdt4+(6jx?}Ta_;M)Xl0+mGU
zmun{dr+Y+2>Q7$A>znMiv+F)^nLWMd`))qGj{%3vm`9ZsxtcFwf{v%&&jWv;gykD%
z-3s|(Ef?WebaG8J!m}KR{+$>_zGWhZmkD@xNglU3e1wF{4FRc{Nl?%=k~Qo%b?vdr
zUj!B(zLVXvw)ZoxZCea{&c~Q(x<(g3Cw*st~Y+d8ZNXGeM%1z?~dp)Quh1IXOYl0r?mM9AH=>rpIz(
z7J#x&EPI*7OUnhQ>+p%MaUDrK(y@S!kNJ=)7dgljovay}{M3-NeZ&>ZOlni}7rFY=
zYai+?eI=9CqjS?BS(Vm%CdD7zn>$W9HCkTu6jKaHx|Fi9B$|Kmtaq6ysGA3`w{@Vd
zDa}P4^Zv!iLwL}E9?N9+xxPS7CiXD-qkZNp<0#N*AbQM2uf;$%L>ot(jb=hVk@iZD
zB8^@!b!(ouyuWjLA;7av>a>n9^4G)vmyC-donX7?ByO;Tkw;|Hi>EUf|bnc5vxC
z%arkx=$PBd8>rk&)C>kMuurGWtvV6@H3R87pG}jb9^VPAZcga995DkeEzPUDZDwvW
zj-)>rMjZZIfz-V1?So%=#RsV^OTu^^4w9PHq35j1Si_CGuv^rB0%kbF1y7D`e8~X3vChpL1bz8^u-;wE0TeE^qnVan%J(kbS@@(>p)*pXp1;SizqjP-J1
zFa?qKzt{OUYYgP^j%EoF_~#kC9n;2#DZNV)2<0JEwc|eF40*B}7XW0>A~uDF^RcIB
z(y~wC66>{@l+`-)YgJ8scNnX-GO=-g&2S8zOAIOv%jzW7Nml#8P5oT>Xp{D=L?aA5
zZTyG(b+M1^yj|Or54ls2{yOx^>iW}#LL{rQs`nd0-gBL1Puh!_f*P0qge76eBm+il
z_xa2Sz1I2O?F0SQmWtZhmVO6`Hr0t;)i0Sf@H3H<(;ya&KijM^PH`zw0!*3zqIp3fu3A&M(&^
zjv3{wo4Dc}2COnxF#nl(4Xx$o!r>0}J6C4m_h{2N;7~v4dhUT4oUOJJWzW@*b?$h6
zIO$qaj(t88G3-W?&o4){ee*%lt%PE(!2oID>+udn?WVxmz-^HL;Q7YS{d6Mp>lG+u
z`w@JvytY3+zyIT(#c5oLk#;~LQCo3fe@APE`R!q&8fUgrMwgWvwTlKkiY{`U8u{{vlS@4kXm006b6Uv>Zh
literal 0
HcmV?d00001
diff --git a/Legend-of-the-Water-Cup/node_modules/bcryptjs/dist/bcrypt.min.map b/Legend-of-the-Water-Cup/node_modules/bcryptjs/dist/bcrypt.min.map
new file mode 100644
index 0000000..35d0f83
--- /dev/null
+++ b/Legend-of-the-Water-Cup/node_modules/bcryptjs/dist/bcrypt.min.map
@@ -0,0 +1,8 @@
+{
+"version":3,
+"file":"",
+"lineCount":48,
+"mappings":"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",
+"sources":["dist/bcrypt.js"],
+"names":["global","factory","define","require","module","random","len","e","a","self","Uint32Array","Array","prototype","slice","call","randomFallback","Error","safeStringCompare","known","unknown","right","wrong","i","k","length","charCodeAt","stringToBytes","str","out","utfx","encodeUTF16toUTF8","b","push","base64_encode","off","rs","c1","c2","BASE64_CODE","join","base64_decode","s","slen","olen","o","code","BASE64_INDEX","stringFromCharCode","c3","c4","res","_encipher","lr","P","S","n","l","r","_streamtoword","data","offp","word","key","_key","offset","plen","sw","_ekskey","_crypt","salt","rounds","callback","progressCallback","next","start","Date","now","MAX_EXECUTION_TIME","j","clen","cdata","ret","nextTick","C_ORIG","err","bind","BCRYPT_SALT_LEN","Int32Array","P_ORIG","S_ORIG","_hash","finish","bytes","minor","toString","saltb","charAt","substring","String","fromCharCode","r1","parseInt","r2","real_salt","passwordb","bcrypt","setRandomFallback","bcrypt.setRandomFallback","genSaltSync","bcrypt.genSaltSync","seed_length","GENSALT_DEFAULT_LOG2_ROUNDS","genSalt","bcrypt.genSalt","_async","undefined","Promise","resolve","reject","hashSync","bcrypt.hashSync","hash","bcrypt.hash","compareSync","bcrypt.compareSync","substr","compare","bcrypt.compare","comp","getRounds","bcrypt.getRounds","split","getSalt","bcrypt.getSalt","process","setImmediate","setTimeout","utfx.encodeUTF8","src","dst","cp","utfx.decodeUTF8","c","d","fail","indexOf","name","RangeError","utfx.UTF16toUTF8","utfx.UTF8toUTF16","utfx.encodeUTF16toUTF8","UTF16toUTF8","encodeUTF8","utfx.decodeUTF8toUTF16","decodeUTF8","UTF8toUTF16","utfx.calculateCodePoint","utfx.calculateUTF8","calculateCodePoint","utfx.calculateUTF16asUTF8","encodeBase64","decodeBase64"]
+}
diff --git a/Legend-of-the-Water-Cup/node_modules/bcryptjs/externs/bcrypt.js b/Legend-of-the-Water-Cup/node_modules/bcryptjs/externs/bcrypt.js
new file mode 100644
index 0000000..c458f9d
--- /dev/null
+++ b/Legend-of-the-Water-Cup/node_modules/bcryptjs/externs/bcrypt.js
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2012 The Closure Compiler Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @fileoverview Definitions for bcrypt.js 2.
+ * @externs
+ * @author Daniel Wirtz
+ */
+
+/**
+ * @type {Object.}
+ */
+var bcrypt = {};
+
+/**
+ * @param {?function(number):!Array.} random
+ */
+bcrypt.setRandomFallback = function(random) {};
+
+/**
+ * @param {number=} rounds
+ * @param {number=} seed_length
+ * @returns {string}
+ */
+bcrypt.genSaltSync = function(rounds, seed_length) {};
+
+/**
+ * @param {(number|function(Error, ?string))=} rounds
+ * @param {(number|function(Error, ?string))=} seed_length
+ * @param {function(Error, string=)=} callback
+ */
+bcrypt.genSalt = function(rounds, seed_length, callback) {};
+
+/**
+ * @param {string} s
+ * @param {(number|string)=} salt
+ * @returns {?string}
+ */
+bcrypt.hashSync = function(s, salt) {};
+
+/**
+ * @param {string} s
+ * @param {number|string} salt
+ * @param {function(Error, string=)} callback
+ * @expose
+ */
+bcrypt.hash = function(s, salt, callback) {};
+
+/**
+ * @param {string} s
+ * @param {string} hash
+ * @returns {boolean}
+ * @throws {Error}
+ */
+bcrypt.compareSync = function(s, hash) {};
+
+/**
+ * @param {string} s
+ * @param {string} hash
+ * @param {function(Error, boolean)} callback
+ * @throws {Error}
+ */
+bcrypt.compare = function(s, hash, callback) {};
+
+/**
+ * @param {string} hash
+ * @returns {number}
+ * @throws {Error}
+ */
+bcrypt.getRounds = function(hash) {};
+
+/**
+ * @param {string} hash
+ * @returns {string}
+ * @throws {Error}
+ * @expose
+ */
+bcrypt.getSalt = function(hash) {};
diff --git a/Legend-of-the-Water-Cup/node_modules/bcryptjs/externs/minimal-env.js b/Legend-of-the-Water-Cup/node_modules/bcryptjs/externs/minimal-env.js
new file mode 100644
index 0000000..0db9d4c
--- /dev/null
+++ b/Legend-of-the-Water-Cup/node_modules/bcryptjs/externs/minimal-env.js
@@ -0,0 +1,98 @@
+/**
+ * @fileoverview Minimal environment for bcrypt.js.
+ * @externs
+ */
+
+/**
+ * @param {string} moduleName
+ * returns {*}
+ */
+function require(moduleName) {}
+
+/**
+ * @constructor
+ * @private
+ */
+var Module = function() {};
+
+/**
+ * @type {*}
+ */
+Module.prototype.exports;
+
+/**
+ * @type {Module}
+ */
+var module;
+
+/**
+ * @type {string}
+ */
+var __dirname;
+
+/**
+ * @type {Object.}
+ */
+var process = {};
+
+/**
+ * @param {function()} func
+ */
+process.nextTick = function(func) {};
+
+/**
+ * @param {string} s
+ * @constructor
+ * @extends Array
+ */
+var Buffer = function(s) {};
+
+/**
+ BEGIN_NODE_INCLUDE
+ var crypto = require('crypto');
+ END_NODE_INCLUDE
+ */
+
+/**
+ * @type {Object.}
+ */
+var crypto = {};
+
+/**
+ * @param {number} n
+ * @returns {Array.}
+ */
+crypto.randomBytes = function(n) {};
+
+/**
+ * @type {Object.}
+ */
+window.crypto = {};
+
+/**
+ * @param {Uint8Array|Int8Array|Uint16Array|Int16Array|Uint32Array|Int32Array} array
+ */
+window.crypto.getRandomValues = function(array) {};
+
+/**
+ * @param {string} name
+ * @param {function(...[*]):*} constructor
+ */
+var define = function(name, constructor) {};
+
+/**
+ * @type {boolean}
+ */
+define.amd;
+
+/**
+ * @param {...*} var_args
+ * @returns {string}
+ */
+String.fromCodePoint = function(var_args) {};
+
+/**
+ * @param {number} offset
+ * @returns {number}
+ */
+String.prototype.codePointAt = function(offset) {};
diff --git a/Legend-of-the-Water-Cup/node_modules/bcryptjs/index.js b/Legend-of-the-Water-Cup/node_modules/bcryptjs/index.js
new file mode 100644
index 0000000..f11b4e7
--- /dev/null
+++ b/Legend-of-the-Water-Cup/node_modules/bcryptjs/index.js
@@ -0,0 +1,29 @@
+/*
+ Copyright (c) 2012 Nevins Bartolomeo
+ Copyright (c) 2012 Shane Girish
+ Copyright (c) 2013 Daniel Wirtz
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+module.exports = require("./dist/bcrypt.js");
diff --git a/Legend-of-the-Water-Cup/node_modules/bcryptjs/package.json b/Legend-of-the-Water-Cup/node_modules/bcryptjs/package.json
new file mode 100644
index 0000000..97be5df
--- /dev/null
+++ b/Legend-of-the-Water-Cup/node_modules/bcryptjs/package.json
@@ -0,0 +1,47 @@
+{
+ "name": "bcryptjs",
+ "description": "Optimized bcrypt in plain JavaScript with zero dependencies. Compatible to 'bcrypt'.",
+ "version": "2.4.3",
+ "author": "Daniel Wirtz ",
+ "contributors": [
+ "Shane Girish (https://github.com/shaneGirish)",
+ "Alex Murray <> (https://github.com/alexmurray)",
+ "Nicolas Pelletier <> (https://github.com/NicolasPelletier)",
+ "Josh Rogers <> (https://github.com/geekymole)",
+ "Noah Isaacson (https://github.com/nisaacson)"
+ ],
+ "repository": {
+ "type": "url",
+ "url": "https://github.com/dcodeIO/bcrypt.js.git"
+ },
+ "bugs": {
+ "url": "https://github.com/dcodeIO/bcrypt.js/issues"
+ },
+ "keywords": [
+ "bcrypt",
+ "password",
+ "auth",
+ "authentication",
+ "encryption",
+ "crypt",
+ "crypto"
+ ],
+ "main": "index.js",
+ "browser": "dist/bcrypt.js",
+ "dependencies": {},
+ "devDependencies": {
+ "testjs": "~1",
+ "closurecompiler": "~1",
+ "metascript": "~0.18",
+ "bcrypt": "latest",
+ "utfx": "~1"
+ },
+ "license": "MIT",
+ "scripts": {
+ "test": "node node_modules/testjs/bin/testjs",
+ "build": "node scripts/build.js",
+ "compile": "node node_modules/closurecompiler/bin/ccjs dist/bcrypt.js --compilation_level=SIMPLE_OPTIMIZATIONS --create_source_map=dist/bcrypt.min.map > dist/bcrypt.min.js",
+ "compress": "gzip -c -9 dist/bcrypt.min.js > dist/bcrypt.min.js.gz",
+ "make": "npm run build && npm run compile && npm run compress && npm test"
+ }
+}
diff --git a/Legend-of-the-Water-Cup/node_modules/bcryptjs/scripts/build.js b/Legend-of-the-Water-Cup/node_modules/bcryptjs/scripts/build.js
new file mode 100644
index 0000000..7b34ea4
--- /dev/null
+++ b/Legend-of-the-Water-Cup/node_modules/bcryptjs/scripts/build.js
@@ -0,0 +1,37 @@
+var MetaScript = require("metascript"),
+ path = require("path"),
+ fs = require("fs");
+
+var rootDir = path.join(__dirname, ".."),
+ srcDir = path.join(rootDir, "src"),
+ distDir = path.join(rootDir, "dist"),
+ pkg = require(path.join(rootDir, "package.json")),
+ filename;
+
+var scope = {
+ VERSION: pkg.version,
+ ISAAC: false
+};
+
+// Make standard build
+console.log("Building bcrypt.js with scope", JSON.stringify(scope, null, 2));
+fs.writeFileSync(
+ path.join(distDir, "bcrypt.js"),
+ MetaScript.transform(fs.readFileSync(filename = path.join(srcDir, "wrap.js")), filename, scope, srcDir)
+);
+
+// Make isaac build - see: https://github.com/dcodeIO/bcrypt.js/issues/16
+/* scope.ISAAC = true;
+console.log("Building bcrypt-isaac.js with scope", JSON.stringify(scope, null, 2));
+fs.writeFileSync(
+ path.join(distDir, "bcrypt-isaac.js"),
+ MetaScript.transform(fs.readFileSync(filename = path.join(srcDir, "bcrypt.js")), filename, scope, srcDir)
+); */
+
+// Update bower.json
+scope = { VERSION: pkg.version };
+console.log("Updating bower.json with scope", JSON.stringify(scope, null, 2));
+fs.writeFileSync(
+ path.join(rootDir, "bower.json"),
+ MetaScript.transform(fs.readFileSync(filename = path.join(srcDir, "bower.json")), filename, scope, srcDir)
+);
diff --git a/Legend-of-the-Water-Cup/node_modules/bcryptjs/src/bcrypt.js b/Legend-of-the-Water-Cup/node_modules/bcryptjs/src/bcrypt.js
new file mode 100644
index 0000000..11dedc1
--- /dev/null
+++ b/Legend-of-the-Water-Cup/node_modules/bcryptjs/src/bcrypt.js
@@ -0,0 +1,327 @@
+/**
+ * bcrypt namespace.
+ * @type {Object.}
+ */
+var bcrypt = {};
+
+/**
+ * The random implementation to use as a fallback.
+ * @type {?function(number):!Array.}
+ * @inner
+ */
+var randomFallback = null;
+
+/**
+ * Generates cryptographically secure random bytes.
+ * @function
+ * @param {number} len Bytes length
+ * @returns {!Array.} Random bytes
+ * @throws {Error} If no random implementation is available
+ * @inner
+ */
+function random(len) {
+ /* node */ if (typeof module !== 'undefined' && module && module['exports'])
+ try {
+ return require("crypto")['randomBytes'](len);
+ } catch (e) {}
+ /* WCA */ try {
+ var a; (self['crypto']||self['msCrypto'])['getRandomValues'](a = new Uint32Array(len));
+ return Array.prototype.slice.call(a);
+ } catch (e) {}
+ /* fallback */ if (!randomFallback)
+ throw Error("Neither WebCryptoAPI nor a crypto module is available. Use bcrypt.setRandomFallback to set an alternative");
+ return randomFallback(len);
+}
+
+// Test if any secure randomness source is available
+var randomAvailable = false;
+try {
+ random(1);
+ randomAvailable = true;
+} catch (e) {}
+
+// Default fallback, if any
+randomFallback = /*? if (ISAAC) { */function(len) {
+ for (var a=[], i=0; i} random Function taking the number of bytes to generate as its
+ * sole argument, returning the corresponding array of cryptographically secure random byte values.
+ * @see http://nodejs.org/api/crypto.html
+ * @see http://www.w3.org/TR/WebCryptoAPI/
+ */
+bcrypt.setRandomFallback = function(random) {
+ randomFallback = random;
+};
+
+/**
+ * Synchronously generates a salt.
+ * @param {number=} rounds Number of rounds to use, defaults to 10 if omitted
+ * @param {number=} seed_length Not supported.
+ * @returns {string} Resulting salt
+ * @throws {Error} If a random fallback is required but not set
+ * @expose
+ */
+bcrypt.genSaltSync = function(rounds, seed_length) {
+ rounds = rounds || GENSALT_DEFAULT_LOG2_ROUNDS;
+ if (typeof rounds !== 'number')
+ throw Error("Illegal arguments: "+(typeof rounds)+", "+(typeof seed_length));
+ if (rounds < 4)
+ rounds = 4;
+ else if (rounds > 31)
+ rounds = 31;
+ var salt = [];
+ salt.push("$2a$");
+ if (rounds < 10)
+ salt.push("0");
+ salt.push(rounds.toString());
+ salt.push('$');
+ salt.push(base64_encode(random(BCRYPT_SALT_LEN), BCRYPT_SALT_LEN)); // May throw
+ return salt.join('');
+};
+
+/**
+ * Asynchronously generates a salt.
+ * @param {(number|function(Error, string=))=} rounds Number of rounds to use, defaults to 10 if omitted
+ * @param {(number|function(Error, string=))=} seed_length Not supported.
+ * @param {function(Error, string=)=} callback Callback receiving the error, if any, and the resulting salt
+ * @returns {!Promise} If `callback` has been omitted
+ * @throws {Error} If `callback` is present but not a function
+ * @expose
+ */
+bcrypt.genSalt = function(rounds, seed_length, callback) {
+ if (typeof seed_length === 'function')
+ callback = seed_length,
+ seed_length = undefined; // Not supported.
+ if (typeof rounds === 'function')
+ callback = rounds,
+ rounds = undefined;
+ if (typeof rounds === 'undefined')
+ rounds = GENSALT_DEFAULT_LOG2_ROUNDS;
+ else if (typeof rounds !== 'number')
+ throw Error("illegal arguments: "+(typeof rounds));
+
+ function _async(callback) {
+ nextTick(function() { // Pretty thin, but salting is fast enough
+ try {
+ callback(null, bcrypt.genSaltSync(rounds));
+ } catch (err) {
+ callback(err);
+ }
+ });
+ }
+
+ if (callback) {
+ if (typeof callback !== 'function')
+ throw Error("Illegal callback: "+typeof(callback));
+ _async(callback);
+ } else
+ return new Promise(function(resolve, reject) {
+ _async(function(err, res) {
+ if (err) {
+ reject(err);
+ return;
+ }
+ resolve(res);
+ });
+ });
+};
+
+/**
+ * Synchronously generates a hash for the given string.
+ * @param {string} s String to hash
+ * @param {(number|string)=} salt Salt length to generate or salt to use, default to 10
+ * @returns {string} Resulting hash
+ * @expose
+ */
+bcrypt.hashSync = function(s, salt) {
+ if (typeof salt === 'undefined')
+ salt = GENSALT_DEFAULT_LOG2_ROUNDS;
+ if (typeof salt === 'number')
+ salt = bcrypt.genSaltSync(salt);
+ if (typeof s !== 'string' || typeof salt !== 'string')
+ throw Error("Illegal arguments: "+(typeof s)+', '+(typeof salt));
+ return _hash(s, salt);
+};
+
+/**
+ * Asynchronously generates a hash for the given string.
+ * @param {string} s String to hash
+ * @param {number|string} salt Salt length to generate or salt to use
+ * @param {function(Error, string=)=} callback Callback receiving the error, if any, and the resulting hash
+ * @param {function(number)=} progressCallback Callback successively called with the percentage of rounds completed
+ * (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.
+ * @returns {!Promise} If `callback` has been omitted
+ * @throws {Error} If `callback` is present but not a function
+ * @expose
+ */
+bcrypt.hash = function(s, salt, callback, progressCallback) {
+
+ function _async(callback) {
+ if (typeof s === 'string' && typeof salt === 'number')
+ bcrypt.genSalt(salt, function(err, salt) {
+ _hash(s, salt, callback, progressCallback);
+ });
+ else if (typeof s === 'string' && typeof salt === 'string')
+ _hash(s, salt, callback, progressCallback);
+ else
+ nextTick(callback.bind(this, Error("Illegal arguments: "+(typeof s)+', '+(typeof salt))));
+ }
+
+ if (callback) {
+ if (typeof callback !== 'function')
+ throw Error("Illegal callback: "+typeof(callback));
+ _async(callback);
+ } else
+ return new Promise(function(resolve, reject) {
+ _async(function(err, res) {
+ if (err) {
+ reject(err);
+ return;
+ }
+ resolve(res);
+ });
+ });
+};
+
+/**
+ * Compares two strings of the same length in constant time.
+ * @param {string} known Must be of the correct length
+ * @param {string} unknown Must be the same length as `known`
+ * @returns {boolean}
+ * @inner
+ */
+function safeStringCompare(known, unknown) {
+ var right = 0,
+ wrong = 0;
+ for (var i=0, k=known.length; i} b Byte array
+ * @param {number} len Maximum input length
+ * @returns {string}
+ * @expose
+ */
+bcrypt.encodeBase64 = base64_encode;
+
+/**
+ * Decodes a base64 encoded string to up to len bytes of output, using the custom bcrypt alphabet.
+ * @function
+ * @param {string} s String to decode
+ * @param {number} len Maximum output length
+ * @returns {!Array.}
+ * @expose
+ */
+bcrypt.decodeBase64 = base64_decode;
diff --git a/Legend-of-the-Water-Cup/node_modules/bcryptjs/src/bcrypt/impl.js b/Legend-of-the-Water-Cup/node_modules/bcryptjs/src/bcrypt/impl.js
new file mode 100644
index 0000000..fb00aee
--- /dev/null
+++ b/Legend-of-the-Water-Cup/node_modules/bcryptjs/src/bcrypt/impl.js
@@ -0,0 +1,669 @@
+/**
+ * @type {number}
+ * @const
+ * @inner
+ */
+var BCRYPT_SALT_LEN = 16;
+
+/**
+ * @type {number}
+ * @const
+ * @inner
+ */
+var GENSALT_DEFAULT_LOG2_ROUNDS = 10;
+
+/**
+ * @type {number}
+ * @const
+ * @inner
+ */
+var BLOWFISH_NUM_ROUNDS = 16;
+
+/**
+ * @type {number}
+ * @const
+ * @inner
+ */
+var MAX_EXECUTION_TIME = 100;
+
+/**
+ * @type {Array.}
+ * @const
+ * @inner
+ */
+var P_ORIG = [
+ 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822,
+ 0x299f31d0, 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377,
+ 0xbe5466cf, 0x34e90c6c, 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5,
+ 0xb5470917, 0x9216d5d9, 0x8979fb1b
+];
+
+/**
+ * @type {Array.}
+ * @const
+ * @inner
+ */
+var S_ORIG = [
+ 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed,
+ 0x6a267e96, 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7,
+ 0x0801f2e2, 0x858efc16, 0x636920d8, 0x71574e69, 0xa458fea3,
+ 0xf4933d7e, 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee,
+ 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, 0xc5d1b023,
+ 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e,
+ 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda,
+ 0x55605c60, 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440,
+ 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, 0xa15486af,
+ 0x7c72e993, 0xb3ee1411, 0x636fbc2a, 0x2ba9c55d, 0x741831f6,
+ 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, 0x7a325381,
+ 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,
+ 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d,
+ 0xe98575b1, 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5,
+ 0x0f6d6ff3, 0x83f44239, 0x2e0b4482, 0xa4842004, 0x69c8f04a,
+ 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0,
+ 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, 0x6eef0b6c,
+ 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176,
+ 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3,
+ 0x3b8b5ebe, 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6,
+ 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, 0x37d0d724,
+ 0xd00a1248, 0xdb0fead3, 0x49f1c09b, 0x075372c9, 0x80991b7b,
+ 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b, 0x976ce0bd,
+ 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,
+ 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f,
+ 0x9b30952c, 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd,
+ 0x660f2807, 0x192e4bb3, 0xc0cba857, 0x45c8740f, 0xd20b5f39,
+ 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279,
+ 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, 0x3c7516df,
+ 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760,
+ 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e,
+ 0xdf1769db, 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573,
+ 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98,
+ 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, 0x9a53e479, 0xb6f84565,
+ 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341,
+ 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,
+ 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0,
+ 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64,
+ 0x8888b812, 0x900df01c, 0x4fad5ea0, 0x688fc31c, 0xd1cff191,
+ 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1,
+ 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, 0xb4a84fe0,
+ 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705,
+ 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5,
+ 0xfb9d35cf, 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49,
+ 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, 0x2464369b,
+ 0xf009b91e, 0x5563911d, 0x59dfa6aa, 0x78c14389, 0xd95a537f,
+ 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9, 0x11c81968,
+ 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,
+ 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5,
+ 0x571be91f, 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6,
+ 0xff34052e, 0xc5855664, 0x53b02d5d, 0xa99f8fa1, 0x08ba4799,
+ 0x6e85076a, 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623,
+ 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, 0xecaa8c71,
+ 0x699a17ff, 0x5664526c, 0xc2b19ee1, 0x193602a5, 0x75094c29,
+ 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, 0x6b8fe4d6,
+ 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,
+ 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f,
+ 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286,
+ 0xb79c5305, 0xaa500737, 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec,
+ 0x5716f2b8, 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,
+ 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, 0xd19113f9,
+ 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc,
+ 0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e,
+ 0xa4751e41, 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331,
+ 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, 0x2cb81290,
+ 0x24977c79, 0x5679b072, 0xbcaf89af, 0xde9a771f, 0xd9930810,
+ 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, 0x501adde6,
+ 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,
+ 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847,
+ 0x3215d908, 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451,
+ 0x50940002, 0x133ae4dd, 0x71dff89e, 0x10314e55, 0x81ac77d6,
+ 0x5f11199b, 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,
+ 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, 0x86e34570,
+ 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa,
+ 0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978,
+ 0x9c10b36a, 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4,
+ 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, 0x5223a708,
+ 0xf71312b6, 0xebadfe6e, 0xeac31f66, 0xe3bc4595, 0xa67bc883,
+ 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, 0x65582185,
+ 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,
+ 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830,
+ 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239,
+ 0xd59e9e0b, 0xcbaade14, 0xeecc86bc, 0x60622ca7, 0x9cab5cab,
+ 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,
+ 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, 0x9b540b19,
+ 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77,
+ 0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1,
+ 0x7858ba99, 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696,
+ 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, 0x58ebf2ef,
+ 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, 0x5d4a14d9, 0xe864b7e3,
+ 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15,
+ 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,
+ 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2,
+ 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492,
+ 0x47848a0b, 0x5692b285, 0x095bbf00, 0xad19489d, 0x1462b174,
+ 0x23820e00, 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,
+ 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, 0x7cde3759,
+ 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e,
+ 0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc,
+ 0x800bcadc, 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9,
+ 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, 0xc5c43465,
+ 0x713e38d8, 0x3d28f89e, 0xf16dff20, 0x153e21e7, 0x8fb03d4a,
+ 0xe6e39f2b, 0xdb83adf7, 0xe93d5a68, 0x948140f7, 0xf64c261c,
+ 0x94692934, 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068,
+ 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, 0x1e39f62e,
+ 0x97244546, 0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af,
+ 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0,
+ 0x31cb8504, 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,
+ 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, 0x68dc1462,
+ 0xd7486900, 0x680ec0a4, 0x27a18dee, 0x4f3ffea2, 0xe887ad8c,
+ 0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec, 0xce78a399,
+ 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,
+ 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74,
+ 0xdd5b4332, 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397,
+ 0x454056ac, 0xba489527, 0x55533a3a, 0x20838d87, 0xfe6ba9b7,
+ 0xd096954b, 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33,
+ 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, 0xfdf8e802,
+ 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22,
+ 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x404779a4,
+ 0x5d886e17, 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,
+ 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2,
+ 0x02e1329e, 0xaf664fd1, 0xcad18115, 0x6b2395e0, 0x333e92e1,
+ 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, 0xde720c8c,
+ 0x2da2f728, 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,
+ 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x0a476341,
+ 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8,
+ 0x991be14c, 0xdb6e6b0d, 0xc67b5510, 0x6d672c37, 0x2765d43b,
+ 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b,
+ 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, 0xbb132f88,
+ 0x515bad24, 0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979,
+ 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc,
+ 0x782ef11c, 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,
+ 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, 0x44421659,
+ 0x0a121386, 0xd90cec6e, 0xd5abea2a, 0x64af674e, 0xda86a85f,
+ 0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086, 0x60787bf8,
+ 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,
+ 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be,
+ 0xbde8ae24, 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2,
+ 0xf474ef38, 0x8789bdc2, 0x5366f9c3, 0xc8b38e74, 0xb475f255,
+ 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2,
+ 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, 0xb90bace1,
+ 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09,
+ 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0x4a99a025,
+ 0x1d6efe10, 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,
+ 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01,
+ 0xa70683fa, 0xa002b5c4, 0x0de6d027, 0x9af88c27, 0x773f8641,
+ 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, 0x006058aa,
+ 0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,
+ 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x6f05e409,
+ 0x4b7c0188, 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9,
+ 0x1ac15bb4, 0xd39eb8fc, 0xed545578, 0x08fca5b5, 0xd83d7cd3,
+ 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c,
+ 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, 0xd79a3234,
+ 0x92638212, 0x670efa8e, 0x406000e0, 0x3a39ce37, 0xd3faf5cf,
+ 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, 0xd3822740,
+ 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,
+ 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f,
+ 0xbc946e79, 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d,
+ 0xd5730a1d, 0x4cd04dc6, 0x2939bbdb, 0xa9ba4650, 0xac9526e8,
+ 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22,
+ 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, 0x83c061ba,
+ 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1,
+ 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69,
+ 0x77fa0a59, 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593,
+ 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a,
+ 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, 0x1f9f25cf, 0xadf2b89b,
+ 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6, 0x47b0acfd,
+ 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,
+ 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4,
+ 0x88f46dba, 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2,
+ 0x97271aec, 0xa93a072a, 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb,
+ 0x26dcf319, 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb,
+ 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, 0x4de81751,
+ 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce,
+ 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369,
+ 0x6413e680, 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166,
+ 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd,
+ 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, 0xdda26a7e, 0x3a59ff45,
+ 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, 0x8d6612ae,
+ 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,
+ 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08,
+ 0x4eb4e2cc, 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d,
+ 0x06b89fb4, 0xce6ea048, 0x6f3f3b82, 0x3520ab82, 0x011a1d4b,
+ 0x277227f8, 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd,
+ 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, 0xe01cc87e,
+ 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a,
+ 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c,
+ 0xe0b12b4f, 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c,
+ 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, 0xfae59361,
+ 0xceb69ceb, 0xc2a86459, 0x12baa8d1, 0xb6c1075e, 0xe3056a0c,
+ 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be,
+ 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,
+ 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d,
+ 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891,
+ 0xce6279cf, 0xcd3e7e6f, 0x1618b166, 0xfd2c1d05, 0x848fd2c5,
+ 0xf6fb2299, 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02,
+ 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, 0xde966292,
+ 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a,
+ 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2,
+ 0x35bdd2f6, 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b,
+ 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, 0xba38209c,
+ 0xf746ce76, 0x77afa1c5, 0x20756060, 0x85cbfe4e, 0x8ae88dd8,
+ 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, 0x01c36ae4,
+ 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,
+ 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6
+];
+
+/**
+ * @type {Array.}
+ * @const
+ * @inner
+ */
+var C_ORIG = [
+ 0x4f727068, 0x65616e42, 0x65686f6c, 0x64657253, 0x63727944,
+ 0x6f756274
+];
+
+/**
+ * @param {Array.} lr
+ * @param {number} off
+ * @param {Array.} P
+ * @param {Array.} S
+ * @returns {Array.}
+ * @inner
+ */
+function _encipher(lr, off, P, S) { // This is our bottleneck: 1714/1905 ticks / 90% - see profile.txt
+ var n,
+ l = lr[off],
+ r = lr[off + 1];
+
+ l ^= P[0];
+
+ /*
+ for (var i=0, k=BLOWFISH_NUM_ROUNDS-2; i<=k;)
+ // Feistel substitution on left word
+ n = S[l >>> 24],
+ n += S[0x100 | ((l >> 16) & 0xff)],
+ n ^= S[0x200 | ((l >> 8) & 0xff)],
+ n += S[0x300 | (l & 0xff)],
+ r ^= n ^ P[++i],
+ // Feistel substitution on right word
+ n = S[r >>> 24],
+ n += S[0x100 | ((r >> 16) & 0xff)],
+ n ^= S[0x200 | ((r >> 8) & 0xff)],
+ n += S[0x300 | (r & 0xff)],
+ l ^= n ^ P[++i];
+ */
+
+ //The following is an unrolled version of the above loop.
+ //Iteration 0
+ n = S[l >>> 24];
+ n += S[0x100 | ((l >> 16) & 0xff)];
+ n ^= S[0x200 | ((l >> 8) & 0xff)];
+ n += S[0x300 | (l & 0xff)];
+ r ^= n ^ P[1];
+ n = S[r >>> 24];
+ n += S[0x100 | ((r >> 16) & 0xff)];
+ n ^= S[0x200 | ((r >> 8) & 0xff)];
+ n += S[0x300 | (r & 0xff)];
+ l ^= n ^ P[2];
+ //Iteration 1
+ n = S[l >>> 24];
+ n += S[0x100 | ((l >> 16) & 0xff)];
+ n ^= S[0x200 | ((l >> 8) & 0xff)];
+ n += S[0x300 | (l & 0xff)];
+ r ^= n ^ P[3];
+ n = S[r >>> 24];
+ n += S[0x100 | ((r >> 16) & 0xff)];
+ n ^= S[0x200 | ((r >> 8) & 0xff)];
+ n += S[0x300 | (r & 0xff)];
+ l ^= n ^ P[4];
+ //Iteration 2
+ n = S[l >>> 24];
+ n += S[0x100 | ((l >> 16) & 0xff)];
+ n ^= S[0x200 | ((l >> 8) & 0xff)];
+ n += S[0x300 | (l & 0xff)];
+ r ^= n ^ P[5];
+ n = S[r >>> 24];
+ n += S[0x100 | ((r >> 16) & 0xff)];
+ n ^= S[0x200 | ((r >> 8) & 0xff)];
+ n += S[0x300 | (r & 0xff)];
+ l ^= n ^ P[6];
+ //Iteration 3
+ n = S[l >>> 24];
+ n += S[0x100 | ((l >> 16) & 0xff)];
+ n ^= S[0x200 | ((l >> 8) & 0xff)];
+ n += S[0x300 | (l & 0xff)];
+ r ^= n ^ P[7];
+ n = S[r >>> 24];
+ n += S[0x100 | ((r >> 16) & 0xff)];
+ n ^= S[0x200 | ((r >> 8) & 0xff)];
+ n += S[0x300 | (r & 0xff)];
+ l ^= n ^ P[8];
+ //Iteration 4
+ n = S[l >>> 24];
+ n += S[0x100 | ((l >> 16) & 0xff)];
+ n ^= S[0x200 | ((l >> 8) & 0xff)];
+ n += S[0x300 | (l & 0xff)];
+ r ^= n ^ P[9];
+ n = S[r >>> 24];
+ n += S[0x100 | ((r >> 16) & 0xff)];
+ n ^= S[0x200 | ((r >> 8) & 0xff)];
+ n += S[0x300 | (r & 0xff)];
+ l ^= n ^ P[10];
+ //Iteration 5
+ n = S[l >>> 24];
+ n += S[0x100 | ((l >> 16) & 0xff)];
+ n ^= S[0x200 | ((l >> 8) & 0xff)];
+ n += S[0x300 | (l & 0xff)];
+ r ^= n ^ P[11];
+ n = S[r >>> 24];
+ n += S[0x100 | ((r >> 16) & 0xff)];
+ n ^= S[0x200 | ((r >> 8) & 0xff)];
+ n += S[0x300 | (r & 0xff)];
+ l ^= n ^ P[12];
+ //Iteration 6
+ n = S[l >>> 24];
+ n += S[0x100 | ((l >> 16) & 0xff)];
+ n ^= S[0x200 | ((l >> 8) & 0xff)];
+ n += S[0x300 | (l & 0xff)];
+ r ^= n ^ P[13];
+ n = S[r >>> 24];
+ n += S[0x100 | ((r >> 16) & 0xff)];
+ n ^= S[0x200 | ((r >> 8) & 0xff)];
+ n += S[0x300 | (r & 0xff)];
+ l ^= n ^ P[14];
+ //Iteration 7
+ n = S[l >>> 24];
+ n += S[0x100 | ((l >> 16) & 0xff)];
+ n ^= S[0x200 | ((l >> 8) & 0xff)];
+ n += S[0x300 | (l & 0xff)];
+ r ^= n ^ P[15];
+ n = S[r >>> 24];
+ n += S[0x100 | ((r >> 16) & 0xff)];
+ n ^= S[0x200 | ((r >> 8) & 0xff)];
+ n += S[0x300 | (r & 0xff)];
+ l ^= n ^ P[16];
+
+ lr[off] = r ^ P[BLOWFISH_NUM_ROUNDS + 1];
+ lr[off + 1] = l;
+ return lr;
+}
+
+/**
+ * @param {Array.} data
+ * @param {number} offp
+ * @returns {{key: number, offp: number}}
+ * @inner
+ */
+function _streamtoword(data, offp) {
+ for (var i = 0, word = 0; i < 4; ++i)
+ word = (word << 8) | (data[offp] & 0xff),
+ offp = (offp + 1) % data.length;
+ return { key: word, offp: offp };
+}
+
+/**
+ * @param {Array.} key
+ * @param {Array.} P
+ * @param {Array.} S
+ * @inner
+ */
+function _key(key, P, S) {
+ var offset = 0,
+ lr = [0, 0],
+ plen = P.length,
+ slen = S.length,
+ sw;
+ for (var i = 0; i < plen; i++)
+ sw = _streamtoword(key, offset),
+ offset = sw.offp,
+ P[i] = P[i] ^ sw.key;
+ for (i = 0; i < plen; i += 2)
+ lr = _encipher(lr, 0, P, S),
+ P[i] = lr[0],
+ P[i + 1] = lr[1];
+ for (i = 0; i < slen; i += 2)
+ lr = _encipher(lr, 0, P, S),
+ S[i] = lr[0],
+ S[i + 1] = lr[1];
+}
+
+/**
+ * Expensive key schedule Blowfish.
+ * @param {Array.} data
+ * @param {Array.} key
+ * @param {Array.} P
+ * @param {Array.} S
+ * @inner
+ */
+function _ekskey(data, key, P, S) {
+ var offp = 0,
+ lr = [0, 0],
+ plen = P.length,
+ slen = S.length,
+ sw;
+ for (var i = 0; i < plen; i++)
+ sw = _streamtoword(key, offp),
+ offp = sw.offp,
+ P[i] = P[i] ^ sw.key;
+ offp = 0;
+ for (i = 0; i < plen; i += 2)
+ sw = _streamtoword(data, offp),
+ offp = sw.offp,
+ lr[0] ^= sw.key,
+ sw = _streamtoword(data, offp),
+ offp = sw.offp,
+ lr[1] ^= sw.key,
+ lr = _encipher(lr, 0, P, S),
+ P[i] = lr[0],
+ P[i + 1] = lr[1];
+ for (i = 0; i < slen; i += 2)
+ sw = _streamtoword(data, offp),
+ offp = sw.offp,
+ lr[0] ^= sw.key,
+ sw = _streamtoword(data, offp),
+ offp = sw.offp,
+ lr[1] ^= sw.key,
+ lr = _encipher(lr, 0, P, S),
+ S[i] = lr[0],
+ S[i + 1] = lr[1];
+}
+
+/**
+ * Internaly crypts a string.
+ * @param {Array.} b Bytes to crypt
+ * @param {Array.} salt Salt bytes to use
+ * @param {number} rounds Number of rounds
+ * @param {function(Error, Array.=)=} callback Callback receiving the error, if any, and the resulting bytes. If
+ * omitted, the operation will be performed synchronously.
+ * @param {function(number)=} progressCallback Callback called with the current progress
+ * @returns {!Array.|undefined} Resulting bytes if callback has been omitted, otherwise `undefined`
+ * @inner
+ */
+function _crypt(b, salt, rounds, callback, progressCallback) {
+ var cdata = C_ORIG.slice(),
+ clen = cdata.length,
+ err;
+
+ // Validate
+ if (rounds < 4 || rounds > 31) {
+ err = Error("Illegal number of rounds (4-31): "+rounds);
+ if (callback) {
+ nextTick(callback.bind(this, err));
+ return;
+ } else
+ throw err;
+ }
+ if (salt.length !== BCRYPT_SALT_LEN) {
+ err =Error("Illegal salt length: "+salt.length+" != "+BCRYPT_SALT_LEN);
+ if (callback) {
+ nextTick(callback.bind(this, err));
+ return;
+ } else
+ throw err;
+ }
+ rounds = (1 << rounds) >>> 0;
+
+ var P, S, i = 0, j;
+
+ //Use typed arrays when available - huge speedup!
+ if (Int32Array) {
+ P = new Int32Array(P_ORIG);
+ S = new Int32Array(S_ORIG);
+ } else {
+ P = P_ORIG.slice();
+ S = S_ORIG.slice();
+ }
+
+ _ekskey(salt, b, P, S);
+
+ /**
+ * Calcualtes the next round.
+ * @returns {Array.|undefined} Resulting array if callback has been omitted, otherwise `undefined`
+ * @inner
+ */
+ function next() {
+ if (progressCallback)
+ progressCallback(i / rounds);
+ if (i < rounds) {
+ var start = Date.now();
+ for (; i < rounds;) {
+ i = i + 1;
+ _key(b, P, S);
+ _key(salt, P, S);
+ if (Date.now() - start > MAX_EXECUTION_TIME)
+ break;
+ }
+ } else {
+ for (i = 0; i < 64; i++)
+ for (j = 0; j < (clen >> 1); j++)
+ _encipher(cdata, j << 1, P, S);
+ var ret = [];
+ for (i = 0; i < clen; i++)
+ ret.push(((cdata[i] >> 24) & 0xff) >>> 0),
+ ret.push(((cdata[i] >> 16) & 0xff) >>> 0),
+ ret.push(((cdata[i] >> 8) & 0xff) >>> 0),
+ ret.push((cdata[i] & 0xff) >>> 0);
+ if (callback) {
+ callback(null, ret);
+ return;
+ } else
+ return ret;
+ }
+ if (callback)
+ nextTick(next);
+ }
+
+ // Async
+ if (typeof callback !== 'undefined') {
+ next();
+
+ // Sync
+ } else {
+ var res;
+ while (true)
+ if (typeof(res = next()) !== 'undefined')
+ return res || [];
+ }
+}
+
+/**
+ * Internally hashes a string.
+ * @param {string} s String to hash
+ * @param {?string} salt Salt to use, actually never null
+ * @param {function(Error, string=)=} callback Callback receiving the error, if any, and the resulting hash. If omitted,
+ * hashing is perormed synchronously.
+ * @param {function(number)=} progressCallback Callback called with the current progress
+ * @returns {string|undefined} Resulting hash if callback has been omitted, otherwise `undefined`
+ * @inner
+ */
+function _hash(s, salt, callback, progressCallback) {
+ var err;
+ if (typeof s !== 'string' || typeof salt !== 'string') {
+ err = Error("Invalid string / salt: Not a string");
+ if (callback) {
+ nextTick(callback.bind(this, err));
+ return;
+ }
+ else
+ throw err;
+ }
+
+ // Validate the salt
+ var minor, offset;
+ if (salt.charAt(0) !== '$' || salt.charAt(1) !== '2') {
+ err = Error("Invalid salt version: "+salt.substring(0,2));
+ if (callback) {
+ nextTick(callback.bind(this, err));
+ return;
+ }
+ else
+ throw err;
+ }
+ if (salt.charAt(2) === '$')
+ minor = String.fromCharCode(0),
+ offset = 3;
+ else {
+ minor = salt.charAt(2);
+ if ((minor !== 'a' && minor !== 'b' && minor !== 'y') || salt.charAt(3) !== '$') {
+ err = Error("Invalid salt revision: "+salt.substring(2,4));
+ if (callback) {
+ nextTick(callback.bind(this, err));
+ return;
+ } else
+ throw err;
+ }
+ offset = 4;
+ }
+
+ // Extract number of rounds
+ if (salt.charAt(offset + 2) > '$') {
+ err = Error("Missing salt rounds");
+ if (callback) {
+ nextTick(callback.bind(this, err));
+ return;
+ } else
+ throw err;
+ }
+ var r1 = parseInt(salt.substring(offset, offset + 1), 10) * 10,
+ r2 = parseInt(salt.substring(offset + 1, offset + 2), 10),
+ rounds = r1 + r2,
+ real_salt = salt.substring(offset + 3, offset + 25);
+ s += minor >= 'a' ? "\x00" : "";
+
+ var passwordb = stringToBytes(s),
+ saltb = base64_decode(real_salt, BCRYPT_SALT_LEN);
+
+ /**
+ * Finishes hashing.
+ * @param {Array.} bytes Byte array
+ * @returns {string}
+ * @inner
+ */
+ function finish(bytes) {
+ var res = [];
+ res.push("$2");
+ if (minor >= 'a')
+ res.push(minor);
+ res.push("$");
+ if (rounds < 10)
+ res.push("0");
+ res.push(rounds.toString());
+ res.push("$");
+ res.push(base64_encode(saltb, saltb.length));
+ res.push(base64_encode(bytes, C_ORIG.length * 4 - 1));
+ return res.join('');
+ }
+
+ // Sync
+ if (typeof callback == 'undefined')
+ return finish(_crypt(passwordb, saltb, rounds));
+
+ // Async
+ else {
+ _crypt(passwordb, saltb, rounds, function(err, bytes) {
+ if (err)
+ callback(err, null);
+ else
+ callback(null, finish(bytes));
+ }, progressCallback);
+ }
+}
diff --git a/Legend-of-the-Water-Cup/node_modules/bcryptjs/src/bcrypt/prng/README.md b/Legend-of-the-Water-Cup/node_modules/bcryptjs/src/bcrypt/prng/README.md
new file mode 100644
index 0000000..4735aa6
--- /dev/null
+++ b/Legend-of-the-Water-Cup/node_modules/bcryptjs/src/bcrypt/prng/README.md
@@ -0,0 +1,5 @@
+Because of [reasonable security doubts](https://github.com/dcodeIO/bcrypt.js/issues/16), these files, which used to be
+a part of bcrypt-isaac.js, are no longer used but are kept here for reference only.
+
+What is required instead is a proper way to collect entropy sources (using an intermediate stream cipher) which is then
+used to seed the CSPRNG. Pick one and use `bcrypt.setRandomFallback` instead.
diff --git a/Legend-of-the-Water-Cup/node_modules/bcryptjs/src/bcrypt/prng/accum.js b/Legend-of-the-Water-Cup/node_modules/bcryptjs/src/bcrypt/prng/accum.js
new file mode 100644
index 0000000..8ea7773
--- /dev/null
+++ b/Legend-of-the-Water-Cup/node_modules/bcryptjs/src/bcrypt/prng/accum.js
@@ -0,0 +1,133 @@
+/* basic entropy accumulator */
+var accum = (function() {
+
+ var pool, // randomness pool
+ time, // start timestamp
+ last; // last step timestamp
+
+ /* initialize with default pool */
+ function init() {
+ pool = [];
+ time = new Date().getTime();
+ last = time;
+ // use Math.random
+ pool.push((Math.random() * 0xffffffff)|0);
+ // use current time
+ pool.push(time|0);
+ }
+
+ /* perform one step */
+ function step() {
+ if (!to)
+ return;
+ if (pool.length >= 255) { // stop at 255 values (1 more is added on fetch)
+ stop();
+ return;
+ }
+ var now = new Date().getTime();
+ // use actual time difference
+ pool.push(now-last);
+ // always compute, occasionally use Math.random
+ var rnd = (Math.random() * 0xffffffff)|0;
+ if (now % 2)
+ pool[pool.length-1] += rnd;
+ last = now;
+ to = setTimeout(step, 100+Math.random()*512); // use hypothetical time difference
+ }
+
+ var to = null;
+
+ /* starts accumulating */
+ function start() {
+ if (to) return;
+ to = setTimeout(step, 100+Math.random()*512);
+ if (console.log)
+ console.log("bcrypt-isaac: collecting entropy...");
+ // install collectors
+ if (typeof window !== 'undefined' && window && window.addEventListener)
+ window.addEventListener("load", loadCollector, false),
+ window.addEventListener("mousemove", mouseCollector, false),
+ window.addEventListener("touchmove", touchCollector, false);
+ else if (typeof document !== 'undefined' && document && document.attachEvent)
+ document.attachEvent("onload", loadCollector),
+ document.attachEvent("onmousemove", mouseCollector);
+ }
+
+ /* stops accumulating */
+ function stop() {
+ if (!to) return;
+ clearTimeout(to); to = null;
+ // uninstall collectors
+ if (typeof window !== 'undefined' && window && window.removeEventListener)
+ window.removeEventListener("load", loadCollector, false),
+ window.removeEventListener("mousemove", mouseCollector, false),
+ window.removeEventListener("touchmove", touchCollector, false);
+ else if (typeof document !== 'undefined' && document && document.detachEvent)
+ document.detachEvent("onload", loadCollector),
+ document.detachEvent("onmousemove", mouseCollector);
+ }
+
+ /* fetches the randomness pool */
+ function fetch() {
+ // add overall time difference
+ pool.push((new Date().getTime()-time)|0);
+ var res = pool;
+ init();
+ if (console.log)
+ console.log("bcrypt-isaac: using "+res.length+"/256 samples of entropy");
+ // console.log(res);
+ return res;
+ }
+
+ /* adds the current time to the top of the pool */
+ function addTime() {
+ pool[pool.length-1] += new Date().getTime() - time;
+ }
+
+ /* page load collector */
+ function loadCollector() {
+ if (!to || pool.length >= 255)
+ return;
+ pool.push(0);
+ addTime();
+ }
+
+ /* mouse events collector */
+ function mouseCollector(ev) {
+ if (!to || pool.length >= 255)
+ return;
+ try {
+ var x = ev.x || ev.clientX || ev.offsetX || 0,
+ y = ev.y || ev.clientY || ev.offsetY || 0;
+ if (x != 0 || y != 0)
+ pool[pool.length-1] += ((x-mouseCollector.last[0]) ^ (y-mouseCollector.last[1])),
+ addTime(),
+ mouseCollector.last = [x,y];
+ } catch (e) {}
+ }
+ mouseCollector.last = [0,0];
+
+ /* touch events collector */
+ function touchCollector(ev) {
+ if (!to || pool.length >= 255)
+ return;
+ try {
+ var touch = ev.touches[0] || ev.changedTouches[0];
+ var x = touch.pageX || touch.clientX || 0,
+ y = touch.pageY || touch.clientY || 0;
+ if (x != 0 || y != 0)
+ pool[pool.length-1] += (x-touchCollector.last[0]) ^ (y-touchCollector.last[1]),
+ addTime(),
+ touchCollector.last = [x,y];
+ } catch (e) {}
+ }
+ touchCollector.last = [0,0];
+
+ init();
+ return {
+ "start": start,
+ "stop": stop,
+ "fetch": fetch
+ }
+
+})();
diff --git a/Legend-of-the-Water-Cup/node_modules/bcryptjs/src/bcrypt/prng/isaac.js b/Legend-of-the-Water-Cup/node_modules/bcryptjs/src/bcrypt/prng/isaac.js
new file mode 100644
index 0000000..e33b0e5
--- /dev/null
+++ b/Legend-of-the-Water-Cup/node_modules/bcryptjs/src/bcrypt/prng/isaac.js
@@ -0,0 +1,140 @@
+/*
+ isaac.js Copyright (c) 2012 Yves-Marie K. Rinquin
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/* isaac module pattern */
+var isaac = (function(){
+
+ /* internal states */
+ var m = Array(256), // internal memory
+ acc = 0, // accumulator
+ brs = 0, // last result
+ cnt = 0, // counter
+ r = Array(256), // result array
+ gnt = 0, // generation counter
+ isd = false; // initially seeded
+
+
+ /* 32-bit integer safe adder */
+ function add(x, y) {
+ var lsb = (x & 0xffff) + (y & 0xffff),
+ msb = (x >>> 16) + (y >>> 16) + (lsb >>> 16);
+ return (msb << 16) | (lsb & 0xffff);
+ }
+
+ /* initialisation */
+ function reset() {
+ acc = brs = cnt = 0;
+ for (var i = 0; i < 256; ++i)
+ m[i] = r[i] = 0;
+ gnt = 0;
+ }
+
+ /* seeding function */
+ function seed(s) {
+ var a, b, c, d, e, f, g, h, i;
+
+ /* seeding the seeds of love */
+ a = b = c = d = e = f = g = h = 0x9e3779b9; /* the golden ratio */
+
+ if (s && typeof(s) === 'number')
+ s = [s];
+
+ if (s instanceof Array) {
+ reset();
+ for (i = 0; i < s.length; ++i)
+ r[i & 0xff] += typeof(s[i]) === 'number' ? s[i] : 0;
+ }
+
+ /* private: seed mixer */
+ function seed_mix() {
+ a ^= b << 11; d = add(d, a); b = add(b, c);
+ b ^= c >>> 2; e = add(e, b); c = add(c, d);
+ c ^= d << 8; f = add(f, c); d = add(d, e);
+ d ^= e >>> 16; g = add(g, d); e = add(e, f);
+ e ^= f << 10; h = add(h, e); f = add(f, g);
+ f ^= g >>> 4; a = add(a, f); g = add(g, h);
+ g ^= h << 8; b = add(b, g); h = add(h, a);
+ h ^= a >>> 9; c = add(c, h); a = add(a, b);
+ }
+
+ for (i = 0; i < 4; i++) /* scramble it */
+ seed_mix();
+
+ for (i = 0; i < 256; i += 8) {
+ if (s) /* use all the information in the seed */
+ a = add(a, r[i + 0]), b = add(b, r[i + 1]),
+ c = add(c, r[i + 2]), d = add(d, r[i + 3]),
+ e = add(e, r[i + 4]), f = add(f, r[i + 5]),
+ g = add(g, r[i + 6]), h = add(h, r[i + 7]);
+ seed_mix();
+ /* fill in m[] with messy stuff */
+ m[i + 0] = a; m[i + 1] = b; m[i + 2] = c; m[i + 3] = d;
+ m[i + 4] = e; m[i + 5] = f; m[i + 6] = g; m[i + 7] = h;
+ }
+ if (s)
+ /* do a second pass to make all of the seed affect all of m[] */
+ for (i = 0; i < 256; i += 8)
+ a = add(a, m[i + 0]), b = add(b, m[i + 1]),
+ c = add(c, m[i + 2]), d = add(d, m[i + 3]),
+ e = add(e, m[i + 4]), f = add(f, m[i + 5]),
+ g = add(g, m[i + 6]), h = add(h, m[i + 7]),
+ seed_mix(),
+ /* fill in m[] with messy stuff (again) */
+ m[i + 0] = a, m[i + 1] = b, m[i + 2] = c, m[i + 3] = d,
+ m[i + 4] = e, m[i + 5] = f, m[i + 6] = g, m[i + 7] = h;
+ prng(); /* fill in the first set of results */
+ gnt = 256; /* prepare to use the first set of results */;
+ }
+
+ /* isaac generator, n = number of run */
+ function prng(n) {
+ var i, x, y;
+ n = n && typeof(n) === 'number' ? Math.abs(Math.floor(n)) : 1;
+ while (n--) {
+ cnt = add(cnt, 1);
+ brs = add(brs, cnt);
+ for(i = 0; i < 256; i++) {
+ switch(i & 3) {
+ case 0: acc ^= acc << 13; break;
+ case 1: acc ^= acc >>> 6; break;
+ case 2: acc ^= acc << 2; break;
+ case 3: acc ^= acc >>> 16; break;
+ }
+ acc = add(m[(i + 128) & 0xff], acc); x = m[i];
+ m[i] = y = add(m[(x >>> 2) & 0xff], add(acc, brs));
+ r[i] = brs = add(m[(y >>> 10) & 0xff], x);
+ }
+ }
+ }
+
+ /* return a random number between */
+ return function() {
+ if (!isd) // seed from accumulator
+ isd = true,
+ accum.stop(),
+ seed(accum.fetch());
+ if (!gnt--)
+ prng(), gnt = 255;
+ return r[gnt];
+ };
+})();
diff --git a/Legend-of-the-Water-Cup/node_modules/bcryptjs/src/bcrypt/util.js b/Legend-of-the-Water-Cup/node_modules/bcryptjs/src/bcrypt/util.js
new file mode 100644
index 0000000..a149f71
--- /dev/null
+++ b/Legend-of-the-Water-Cup/node_modules/bcryptjs/src/bcrypt/util.js
@@ -0,0 +1,33 @@
+/**
+ * Continues with the callback on the next tick.
+ * @function
+ * @param {function(...[*])} callback Callback to execute
+ * @inner
+ */
+var nextTick = typeof process !== 'undefined' && process && typeof process.nextTick === 'function'
+ ? (typeof setImmediate === 'function' ? setImmediate : process.nextTick)
+ : setTimeout;
+
+/**
+ * Converts a JavaScript string to UTF8 bytes.
+ * @param {string} str String
+ * @returns {!Array.} UTF8 bytes
+ * @inner
+ */
+function stringToBytes(str) {
+ var out = [],
+ i = 0;
+ utfx.encodeUTF16toUTF8(function() {
+ if (i >= str.length) return null;
+ return str.charCodeAt(i++);
+ }, function(b) {
+ out.push(b);
+ });
+ return out;
+}
+
+//? include("util/base64.js");
+
+//? include("../../node_modules/utfx/dist/utfx-embeddable.js");
+
+Date.now = Date.now || function() { return +new Date; };
diff --git a/Legend-of-the-Water-Cup/node_modules/bcryptjs/src/bcrypt/util/base64.js b/Legend-of-the-Water-Cup/node_modules/bcryptjs/src/bcrypt/util/base64.js
new file mode 100644
index 0000000..deda4af
--- /dev/null
+++ b/Legend-of-the-Water-Cup/node_modules/bcryptjs/src/bcrypt/util/base64.js
@@ -0,0 +1,115 @@
+// A base64 implementation for the bcrypt algorithm. This is partly non-standard.
+
+/**
+ * bcrypt's own non-standard base64 dictionary.
+ * @type {!Array.}
+ * @const
+ * @inner
+ **/
+var BASE64_CODE = "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split('');
+
+/**
+ * @type {!Array.}
+ * @const
+ * @inner
+ **/
+var BASE64_INDEX = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,
+ 1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1,
+ -1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, -1, -1, -1, -1, 28, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, -1, -1, -1, -1, -1];
+
+/**
+ * @type {!function(...number):string}
+ * @inner
+ */
+var stringFromCharCode = String.fromCharCode;
+
+/**
+ * Encodes a byte array to base64 with up to len bytes of input.
+ * @param {!Array.} b Byte array
+ * @param {number} len Maximum input length
+ * @returns {string}
+ * @inner
+ */
+function base64_encode(b, len) {
+ var off = 0,
+ rs = [],
+ c1, c2;
+ if (len <= 0 || len > b.length)
+ throw Error("Illegal len: "+len);
+ while (off < len) {
+ c1 = b[off++] & 0xff;
+ rs.push(BASE64_CODE[(c1 >> 2) & 0x3f]);
+ c1 = (c1 & 0x03) << 4;
+ if (off >= len) {
+ rs.push(BASE64_CODE[c1 & 0x3f]);
+ break;
+ }
+ c2 = b[off++] & 0xff;
+ c1 |= (c2 >> 4) & 0x0f;
+ rs.push(BASE64_CODE[c1 & 0x3f]);
+ c1 = (c2 & 0x0f) << 2;
+ if (off >= len) {
+ rs.push(BASE64_CODE[c1 & 0x3f]);
+ break;
+ }
+ c2 = b[off++] & 0xff;
+ c1 |= (c2 >> 6) & 0x03;
+ rs.push(BASE64_CODE[c1 & 0x3f]);
+ rs.push(BASE64_CODE[c2 & 0x3f]);
+ }
+ return rs.join('');
+}
+
+/**
+ * Decodes a base64 encoded string to up to len bytes of output.
+ * @param {string} s String to decode
+ * @param {number} len Maximum output length
+ * @returns {!Array.}
+ * @inner
+ */
+function base64_decode(s, len) {
+ var off = 0,
+ slen = s.length,
+ olen = 0,
+ rs = [],
+ c1, c2, c3, c4, o, code;
+ if (len <= 0)
+ throw Error("Illegal len: "+len);
+ while (off < slen - 1 && olen < len) {
+ code = s.charCodeAt(off++);
+ c1 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;
+ code = s.charCodeAt(off++);
+ c2 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;
+ if (c1 == -1 || c2 == -1)
+ break;
+ o = (c1 << 2) >>> 0;
+ o |= (c2 & 0x30) >> 4;
+ rs.push(stringFromCharCode(o));
+ if (++olen >= len || off >= slen)
+ break;
+ code = s.charCodeAt(off++);
+ c3 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;
+ if (c3 == -1)
+ break;
+ o = ((c2 & 0x0f) << 4) >>> 0;
+ o |= (c3 & 0x3c) >> 2;
+ rs.push(stringFromCharCode(o));
+ if (++olen >= len || off >= slen)
+ break;
+ code = s.charCodeAt(off++);
+ c4 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;
+ o = ((c3 & 0x03) << 6) >>> 0;
+ o |= c4;
+ rs.push(stringFromCharCode(o));
+ ++olen;
+ }
+ var res = [];
+ for (off = 0; off
+ Copyright (c) 2012 Shane Girish
+ Copyright (c) 2014 Daniel Wirtz
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * @license bcrypt.js (c) 2013 Daniel Wirtz
+ * Released under the Apache License, Version 2.0
+ * see: https://github.com/dcodeIO/bcrypt.js for details
+ */
+(function(global, factory) {
+
+ /* AMD */ if (typeof define === 'function' && define["amd"])
+ define([], factory);
+ /* CommonJS */ else if (typeof require === 'function' && typeof module === "object" && module && module["exports"])
+ module["exports"] = factory();
+ /* Global */ else
+ (global["dcodeIO"] = global["dcodeIO"] || {})["bcrypt"] = factory();
+
+}(this, function() {
+ "use strict";
+
+ //? include("bcrypt.js");
+
+ return bcrypt;
+}));
diff --git a/Legend-of-the-Water-Cup/node_modules/bcryptjs/tests/quickbrown.txt b/Legend-of-the-Water-Cup/node_modules/bcryptjs/tests/quickbrown.txt
new file mode 100644
index 0000000..81e850f
--- /dev/null
+++ b/Legend-of-the-Water-Cup/node_modules/bcryptjs/tests/quickbrown.txt
@@ -0,0 +1,150 @@
+Sentences that contain all letters commonly used in a language
+--------------------------------------------------------------
+
+Markus Kuhn -- 2012-04-11
+
+This is an example of a plain-text file encoded in UTF-8.
+
+
+Danish (da)
+---------
+
+ Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen
+ Wolther spillede på xylofon.
+ (= Quiz contestants were eating strawbery with cream while Wolther
+ the circus clown played on xylophone.)
+
+German (de)
+-----------
+
+ Falsches Üben von Xylophonmusik quält jeden größeren Zwerg
+ (= Wrongful practicing of xylophone music tortures every larger dwarf)
+
+ Zwölf Boxkämpfer jagten Eva quer über den Sylter Deich
+ (= Twelve boxing fighters hunted Eva across the dike of Sylt)
+
+ Heizölrückstoßabdämpfung
+ (= fuel oil recoil absorber)
+ (jqvwxy missing, but all non-ASCII letters in one word)
+
+Greek (el)
+----------
+
+ Γαζέες καὶ μυρτιὲς δὲν θὰ βρῶ πιὰ στὸ χρυσαφὶ ξέφωτο
+ (= No more shall I see acacias or myrtles in the golden clearing)
+
+ Ξεσκεπάζω τὴν ψυχοφθόρα βδελυγμία
+ (= I uncover the soul-destroying abhorrence)
+
+English (en)
+------------
+
+ The quick brown fox jumps over the lazy dog
+
+Spanish (es)
+------------
+
+ El pingüino Wenceslao hizo kilómetros bajo exhaustiva lluvia y
+ frío, añoraba a su querido cachorro.
+ (Contains every letter and every accent, but not every combination
+ of vowel + acute.)
+
+French (fr)
+-----------
+
+ Portez ce vieux whisky au juge blond qui fume sur son île intérieure, à
+ côté de l'alcôve ovoïde, où les bûches se consument dans l'âtre, ce
+ qui lui permet de penser à la cænogenèse de l'être dont il est question
+ dans la cause ambiguë entendue à Moÿ, dans un capharnaüm qui,
+ pense-t-il, diminue çà et là la qualité de son œuvre.
+
+ l'île exiguë
+ Où l'obèse jury mûr
+ Fête l'haï volapük,
+ Âne ex aéquo au whist,
+ Ôtez ce vœu déçu.
+
+ Le cœur déçu mais l'âme plutôt naïve, Louÿs rêva de crapaüter en
+ canoë au delà des îles, près du mälström où brûlent les novæ.
+
+Irish Gaelic (ga)
+-----------------
+
+ D'fhuascail Íosa, Úrmhac na hÓighe Beannaithe, pór Éava agus Ádhaimh
+
+Hungarian (hu)
+--------------
+
+ Árvíztűrő tükörfúrógép
+ (= flood-proof mirror-drilling machine, only all non-ASCII letters)
+
+Icelandic (is)
+--------------
+
+ Kæmi ný öxi hér ykist þjófum nú bæði víl og ádrepa
+
+ Sævör grét áðan því úlpan var ónýt
+ (some ASCII letters missing)
+
+Japanese (jp)
+-------------
+
+ Hiragana: (Iroha)
+
+ いろはにほへとちりぬるを
+ わかよたれそつねならむ
+ うゐのおくやまけふこえて
+ あさきゆめみしゑひもせす
+
+ Katakana:
+
+ イロハニホヘト チリヌルヲ ワカヨタレソ ツネナラム
+ ウヰノオクヤマ ケフコエテ アサキユメミシ ヱヒモセスン
+
+Hebrew (iw)
+-----------
+
+ ? דג סקרן שט בים מאוכזב ולפתע מצא לו חברה איך הקליטה
+
+Polish (pl)
+-----------
+
+ Pchnąć w tę łódź jeża lub ośm skrzyń fig
+ (= To push a hedgehog or eight bins of figs in this boat)
+
+Russian (ru)
+------------
+
+ В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!
+ (= Would a citrus live in the bushes of south? Yes, but only a fake one!)
+
+ Съешь же ещё этих мягких французских булок да выпей чаю
+ (= Eat some more of these fresh French loafs and have some tea)
+
+Thai (th)
+---------
+
+ [--------------------------|------------------------]
+ ๏ เป็นมนุษย์สุดประเสริฐเลิศคุณค่า กว่าบรรดาฝูงสัตว์เดรัจฉาน
+ จงฝ่าฟันพัฒนาวิชาการ อย่าล้างผลาญฤๅเข่นฆ่าบีฑาใคร
+ ไม่ถือโทษโกรธแช่งซัดฮึดฮัดด่า หัดอภัยเหมือนกีฬาอัชฌาสัย
+ ปฏิบัติประพฤติกฎกำหนดใจ พูดจาให้จ๊ะๆ จ๋าๆ น่าฟังเอย ฯ
+
+ [The copyright for the Thai example is owned by The Computer
+ Association of Thailand under the Royal Patronage of His Majesty the
+ King.]
+
+Turkish (tr)
+------------
+
+ Pijamalı hasta, yağız şoföre çabucak güvendi.
+ (=Patient with pajamas, trusted swarthy driver quickly)
+
+
+Special thanks to the people from all over the world who contributed
+these sentences since 1999.
+
+A much larger collection of such pangrams is now available at
+
+ http://en.wikipedia.org/wiki/List_of_pangrams
+
diff --git a/Legend-of-the-Water-Cup/node_modules/bcryptjs/tests/suite.js b/Legend-of-the-Water-Cup/node_modules/bcryptjs/tests/suite.js
new file mode 100644
index 0000000..8c8afe1
--- /dev/null
+++ b/Legend-of-the-Water-Cup/node_modules/bcryptjs/tests/suite.js
@@ -0,0 +1,197 @@
+var path = require("path"),
+ fs = require("fs"),
+ binding = require("bcrypt"),
+ bcrypt = require(path.join(__dirname, '..', 'index.js'))/*,
+ isaac = eval(
+ fs.readFileSync(path.join(__dirname, "..", "src", "bcrypt", "prng", "accum.js"))+
+ fs.readFileSync(path.join(__dirname, "..", "src", "bcrypt", "prng", "isaac.js"))+
+ " accum.start();"+
+ " isaac"
+ )*/;
+
+module.exports = {
+
+ "encodeBase64": function(test) {
+ var str = bcrypt.encodeBase64([0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10], 16);
+ test.strictEqual(str, "..CA.uOD/eaGAOmJB.yMBu");
+ test.done();
+ },
+
+ "decodeBase64": function(test) {
+ var bytes = bcrypt.decodeBase64("..CA.uOD/eaGAOmJB.yMBv.", 16);
+ test.deepEqual(bytes, [0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F]);
+ test.done();
+ },
+
+ "genSaltSync": function(test) {
+ var salt = bcrypt.genSaltSync(10);
+ test.ok(salt);
+ test.ok(typeof salt == 'string');
+ test.ok(salt.length > 0);
+ test.done();
+ },
+
+ "genSalt": function(test) {
+ bcrypt.genSalt(10, function(err, salt) {
+ test.ok(salt);
+ test.ok(typeof salt == 'string');
+ test.ok(salt.length > 0);
+ test.done();
+ });
+ },
+
+ "hashSync": function(test) {
+ test.doesNotThrow(function() {
+ bcrypt.hashSync("hello", 10);
+ });
+ test.notEqual(bcrypt.hashSync("hello", 10), bcrypt.hashSync("hello", 10));
+ test.done();
+ },
+
+ "hash": function(test) {
+ bcrypt.hash("hello", 10, function(err, hash) {
+ test.notOk(err);
+ test.ok(hash);
+ test.done();
+ });
+ },
+
+ "compareSync": function(test) {
+ var salt1 = bcrypt.genSaltSync(),
+ hash1 = bcrypt.hashSync("hello", salt1); // $2a$
+ var salt2 = bcrypt.genSaltSync().replace(/\$2a\$/, "$2y$"),
+ hash2 = bcrypt.hashSync("world", salt2);
+ var salt3 = bcrypt.genSaltSync().replace(/\$2a\$/, "$2b$"),
+ hash3 = bcrypt.hashSync("hello world", salt3);
+
+ test.strictEqual(hash1.substring(0,4), "$2a$");
+ test.ok(bcrypt.compareSync("hello", hash1));
+ test.notOk(bcrypt.compareSync("hello", hash2));
+ test.notOk(bcrypt.compareSync("hello", hash3));
+
+ test.strictEqual(hash2.substring(0,4), "$2y$");
+ test.ok(bcrypt.compareSync("world", hash2));
+ test.notOk(bcrypt.compareSync("world", hash1));
+ test.notOk(bcrypt.compareSync("world", hash3));
+
+ test.strictEqual(hash3.substring(0,4), "$2b$");
+ test.ok(bcrypt.compareSync("hello world", hash3));
+ test.notOk(bcrypt.compareSync("hello world", hash1));
+ test.notOk(bcrypt.compareSync("hello world", hash2));
+
+ test.done();
+ },
+
+ "compare": function(test) {
+ var salt1 = bcrypt.genSaltSync(),
+ hash1 = bcrypt.hashSync("hello", salt1); // $2a$
+ var salt2 = bcrypt.genSaltSync();
+ salt2 = salt2.substring(0,2)+'y'+salt2.substring(3); // $2y$
+ var hash2 = bcrypt.hashSync("world", salt2);
+ bcrypt.compare("hello", hash1, function(err, same) {
+ test.notOk(err);
+ test.ok(same);
+ bcrypt.compare("hello", hash2, function(err, same) {
+ test.notOk(err);
+ test.notOk(same);
+ bcrypt.compare("world", hash2, function(err, same) {
+ test.notOk(err);
+ test.ok(same);
+ bcrypt.compare("world", hash1, function(err, same) {
+ test.notOk(err);
+ test.notOk(same);
+ test.done();
+ });
+ });
+ });
+ });
+ },
+
+ "getSalt": function(test) {
+ var hash1 = bcrypt.hashSync("hello", bcrypt.genSaltSync());
+ var salt = bcrypt.getSalt(hash1);
+ var hash2 = bcrypt.hashSync("hello", salt);
+ test.equal(hash1, hash2);
+ test.done();
+ },
+
+ "getRounds": function(test) {
+ var hash1 = bcrypt.hashSync("hello", bcrypt.genSaltSync());
+ test.equal(bcrypt.getRounds(hash1), 10);
+ test.done();
+ },
+
+ "progress": function(test) {
+ bcrypt.genSalt(12, function(err, salt) {
+ test.ok(!err);
+ var progress = [];
+ bcrypt.hash("hello world", salt, function(err, hash) {
+ test.ok(!err);
+ test.ok(typeof hash === 'string');
+ test.ok(progress.length >= 2);
+ test.strictEqual(progress[0], 0);
+ test.strictEqual(progress[progress.length-1], 1);
+ test.done();
+ }, function(n) {
+ progress.push(n);
+ });
+ });
+ },
+
+ "promise": function(test) {
+ bcrypt.genSalt(10)
+ .then(function(salt) {
+ bcrypt.hash("hello", salt)
+ .then(function(hash) {
+ test.ok(hash);
+ bcrypt.compare("hello", hash)
+ .then(function(result) {
+ test.ok(result);
+ bcrypt.genSalt(/* no args */)
+ .then(function(salt) {
+ test.ok(salt);
+ test.done();
+ }, function(err) {
+ test.fail(err, null, "promise rejected");
+ });
+ }, function(err) {
+ test.fail(err, null, "promise rejected");
+ });
+ }, function(err) {
+ test.fail(err, null, 'promise rejected');
+ });
+ }, function(err) {
+ test.fail(err, null, "promise rejected");
+ });
+ },
+
+ "compat": {
+ "quickbrown": function(test) {
+ var pass = fs.readFileSync(path.join(__dirname, "quickbrown.txt"))+"",
+ salt = bcrypt.genSaltSync(),
+ hash1 = binding.hashSync(pass, salt),
+ hash2 = bcrypt.hashSync(pass, salt);
+ test.equal(hash1, hash2);
+ test.done();
+ },
+
+ "roundsOOB": function(test) {
+ var salt1 = bcrypt.genSaltSync(0), // $10$ like not set
+ salt2 = binding.genSaltSync(0);
+ test.strictEqual(salt1.substring(0, 7), "$2a$10$");
+ test.strictEqual(salt2.substring(0, 7), "$2a$10$");
+
+ salt1 = bcrypt.genSaltSync(3); // $04$ is lower cap
+ salt2 = bcrypt.genSaltSync(3);
+ test.strictEqual(salt1.substring(0, 7), "$2a$04$");
+ test.strictEqual(salt2.substring(0, 7), "$2a$04$");
+
+ salt1 = bcrypt.genSaltSync(32); // $31$ is upper cap
+ salt2 = bcrypt.genSaltSync(32);
+ test.strictEqual(salt1.substring(0, 7), "$2a$31$");
+ test.strictEqual(salt2.substring(0, 7), "$2a$31$");
+
+ test.done();
+ }
+ }
+};
diff --git a/Legend-of-the-Water-Cup/package-lock.json b/Legend-of-the-Water-Cup/package-lock.json
new file mode 100644
index 0000000..3d573ec
--- /dev/null
+++ b/Legend-of-the-Water-Cup/package-lock.json
@@ -0,0 +1,35 @@
+{
+ "name": "Legend-of-the-Water-Cup",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "dependencies": {
+ "@types/bcryptjs": "^2.4.6",
+ "bcryptjs": "^2.4.3"
+ }
+ },
+ "node_modules/@types/bcryptjs": {
+ "version": "2.4.6",
+ "resolved": "https://registry.npmjs.org/@types/bcryptjs/-/bcryptjs-2.4.6.tgz",
+ "integrity": "sha512-9xlo6R2qDs5uixm0bcIqCeMCE6HiQsIyel9KQySStiyqNl2tnj2mP3DX1Nf56MD6KMenNNlBBsy3LJ7gUEQPXQ=="
+ },
+ "node_modules/bcryptjs": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
+ "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ=="
+ }
+ },
+ "dependencies": {
+ "@types/bcryptjs": {
+ "version": "2.4.6",
+ "resolved": "https://registry.npmjs.org/@types/bcryptjs/-/bcryptjs-2.4.6.tgz",
+ "integrity": "sha512-9xlo6R2qDs5uixm0bcIqCeMCE6HiQsIyel9KQySStiyqNl2tnj2mP3DX1Nf56MD6KMenNNlBBsy3LJ7gUEQPXQ=="
+ },
+ "bcryptjs": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
+ "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ=="
+ }
+ }
+}
diff --git a/Legend-of-the-Water-Cup/package.json b/Legend-of-the-Water-Cup/package.json
new file mode 100644
index 0000000..048bb7f
--- /dev/null
+++ b/Legend-of-the-Water-Cup/package.json
@@ -0,0 +1,6 @@
+{
+ "dependencies": {
+ "@types/bcryptjs": "^2.4.6",
+ "bcryptjs": "^2.4.3"
+ }
+}
diff --git a/Legend-of-the-Water-Cup/settings/project.json b/Legend-of-the-Water-Cup/settings/project.json
index b78cee9..531b189 100644
--- a/Legend-of-the-Water-Cup/settings/project.json
+++ b/Legend-of-the-Water-Cup/settings/project.json
@@ -28,7 +28,7 @@
"group-list": [
"default"
],
- "last-module-event-record-time": 1693912626102,
+ "last-module-event-record-time": 1716198114411,
"simulator-orientation": false,
"simulator-resolution": {
"height": 640,