2 lines
26 KiB
JavaScript
2 lines
26 KiB
JavaScript
var Te=Object.defineProperty,we=Object.defineProperties;var De=Object.getOwnPropertyDescriptors;var K=Object.getOwnPropertySymbols;var Ie=Object.prototype.hasOwnProperty,Pe=Object.prototype.propertyIsEnumerable;var j=Math.pow,Z=(n,e,t)=>e in n?Te(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,C=(n,e)=>{for(var t in e||(e={}))Ie.call(e,t)&&Z(n,t,e[t]);if(K)for(var t of K(e))Pe.call(e,t)&&Z(n,t,e[t]);return n},D=(n,e)=>we(n,De(e));import{_ as T,ai as Le,a as oe,aH as _e,a3 as je,Z as Re,ac as ie,af as Ne,G as Oe,as as Ge,r as ce,aI as $e,aJ as X,a2 as J,V as R,p as G,I as Be,aK as $,b as Ue,f as Ve,k as B,H as Ye,J as Fe,aA as We,o as Q,h as qe,j as He,aC as ze,aD as Ke,x as Ze,aE as Xe,aF as Je,aG as Qe,aB as et,l as tt,i as ee,n as U,L as st}from"./index.d70f4f63.js";import{V as nt}from"./Checkbox.19d6f240.js";var at=function(){return{name:String,prefixCls:String,options:{type:Array,default:function(){return[]}},disabled:Boolean,id:String}},Ts=function(){return T(T({},at()),{},{defaultValue:{type:Array},value:{type:Array},onChange:{type:Function},"onUpdate:value":{type:Function}})},rt=function(){return{prefixCls:String,defaultChecked:{type:Boolean,default:void 0},checked:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},isGroup:{type:Boolean,default:void 0},value:Le.any,name:String,id:String,indeterminate:{type:Boolean,default:void 0},type:{type:String,default:"checkbox"},autofocus:{type:Boolean,default:void 0},onChange:Function,"onUpdate:checked":Function,onClick:Function,skipGroup:{type:Boolean,default:!1}}},ot=function(){return T(T({},rt()),{},{indeterminate:{type:Boolean,default:!1}})},it=Symbol("CheckboxGroupContext"),ct=["indeterminate","skipGroup","id"],lt=["onMouseenter","onMouseleave","onInput","class","style"],ws=oe({compatConfig:{MODE:3},name:"ACheckbox",inheritAttrs:!1,__ANT_CHECKBOX:!0,props:ot(),setup:function(e,t){var s=t.emit,a=t.attrs,r=t.slots,o=t.expose,i=_e(),c=je("checkbox",e),l=c.prefixCls,g=c.direction,h=Re(it,void 0),p=Symbol("checkboxUniId");ie(function(){!e.skipGroup&&h&&h.registerValue(p,e.value)}),Ne(function(){h&&h.cancelValue(p)}),Oe(function(){Ge(e.checked!==void 0||h||e.value===void 0,"Checkbox","`value` is not validate prop, do you mean `checked`?")});var m=function(d){var v=d.target.checked;s("update:checked",v),s("change",d)},f=ce(),b=function(){var d;(d=f.value)===null||d===void 0||d.focus()},E=function(){var d;(d=f.value)===null||d===void 0||d.blur()};return o({focus:b,blur:E}),function(){var y,d,v=$e((y=r.default)===null||y===void 0?void 0:y.call(r)),k=e.indeterminate,x=e.skipGroup,_=e.id,N=_===void 0?i.id.value:_,w=X(e,ct),P=a.onMouseenter,Me=a.onMouseleave;a.onInput;var xe=a.class,Ee=a.style,Ce=X(a,lt),S=T(T({},w),{},{id:N,prefixCls:l.value},Ce);h&&!x?(S.onChange=function(){for(var H=arguments.length,z=new Array(H),O=0;O<H;O++)z[O]=arguments[O];s.apply(void 0,["change"].concat(z)),h.toggleOption({label:v,value:e.value})},S.name=h.name.value,S.checked=h.mergedValue.value.indexOf(e.value)!==-1,S.disabled=e.disabled||h.disabled.value,S.indeterminate=k):S.onChange=m;var Se=J((d={},R(d,"".concat(l.value,"-wrapper"),!0),R(d,"".concat(l.value,"-rtl"),g.value==="rtl"),R(d,"".concat(l.value,"-wrapper-checked"),S.checked),R(d,"".concat(l.value,"-wrapper-disabled"),S.disabled),d),xe),Ae=J(R({},"".concat(l.value,"-indeterminate"),k));return G("label",{class:Se,style:Ee,onMouseenter:P,onMouseleave:Me},[G(nt,T(T({},S),{},{class:Ae,ref:f}),null),v.length?G("span",null,[v]):null])}}});const ut=n=>Object.keys(n).length===0,F=(n,e)=>n.push.apply(n,e),ht=(n,e)=>n.split("").map(s=>e[s]||s).join(""),L=n=>n.sort((e,t)=>e.i-t.i||e.j-t.j),te=n=>{const e={};let t=1;return n.forEach(s=>{e[s]=t,t+=1}),e};var dt={4:[[1,2],[2,3]],5:[[1,3],[2,3],[2,4]],6:[[1,2],[2,4],[4,5]],7:[[1,3],[2,3],[4,5],[4,6]],8:[[2,4],[4,6]]};const se=2050,ne=1e3,ft=dt,gt=10,pt=1e4,le=10,ue=50,he=20,de=/^[A-Z\xbf-\xdf][^A-Z\xbf-\xdf]+$/,mt=/^[^A-Z\xbf-\xdf]+[A-Z\xbf-\xdf]$/,bt=/^[A-Z\xbf-\xdf]+$/,fe=/^[^a-z\xdf-\xff]+$/,yt=/^[a-z\xdf-\xff]+$/,vt=/^[^A-Z\xbf-\xdf]+$/,kt=/[a-z\xdf-\xff]/,Mt=/[A-Z\xbf-\xdf]/,xt=/[^A-Za-z\xbf-\xdf]/gi,Et=/^\d+$/,q=new Date().getFullYear(),Ct={recentYear:/19\d\d|200\d|201\d|202\d/g};class St{match({password:e}){const t=[...this.getMatchesWithoutSeparator(e),...this.getMatchesWithSeparator(e)],s=this.filterNoise(t);return L(s)}getMatchesWithSeparator(e){const t=[],s=/^(\d{1,4})([\s/\\_.-])(\d{1,2})\2(\d{1,4})$/;for(let a=0;a<=Math.abs(e.length-6);a+=1)for(let r=a+5;r<=a+9&&!(r>=e.length);r+=1){const o=e.slice(a,+r+1||9e9),i=s.exec(o);if(i!=null){const c=this.mapIntegersToDayMonthYear([parseInt(i[1],10),parseInt(i[3],10),parseInt(i[4],10)]);c!=null&&t.push({pattern:"date",token:o,i:a,j:r,separator:i[2],year:c.year,month:c.month,day:c.day})}}return t}getMatchesWithoutSeparator(e){const t=[],s=/^\d{4,8}$/,a=r=>Math.abs(r.year-q);for(let r=0;r<=Math.abs(e.length-4);r+=1)for(let o=r+3;o<=r+7&&!(o>=e.length);o+=1){const i=e.slice(r,+o+1||9e9);if(s.exec(i)){const c=[],l=i.length;if(ft[l].forEach(([h,p])=>{const m=this.mapIntegersToDayMonthYear([parseInt(i.slice(0,h),10),parseInt(i.slice(h,p),10),parseInt(i.slice(p),10)]);m!=null&&c.push(m)}),c.length>0){let h=c[0],p=a(c[0]);c.slice(1).forEach(m=>{const f=a(m);f<p&&(h=m,p=f)}),t.push({pattern:"date",token:i,i:r,j:o,separator:"",year:h.year,month:h.month,day:h.day})}}}return t}filterNoise(e){return e.filter(t=>{let s=!1;const a=e.length;for(let r=0;r<a;r+=1){const o=e[r];if(t!==o&&o.i<=t.i&&o.j>=t.j){s=!0;break}}return!s})}mapIntegersToDayMonthYear(e){if(e[1]>31||e[1]<=0)return null;let t=0,s=0,a=0;for(let r=0,o=e.length;r<o;r+=1){const i=e[r];if(i>99&&i<ne||i>se)return null;i>31&&(s+=1),i>12&&(t+=1),i<=0&&(a+=1)}return s>=2||t===3||a>=2?null:this.getDayMonth(e)}getDayMonth(e){const t=[[e[2],e.slice(0,2)],[e[0],e.slice(1,3)]],s=t.length;for(let a=0;a<s;a+=1){const[r,o]=t[a];if(ne<=r&&r<=se){const i=this.mapIntegersToDayMonth(o);return i!=null?{year:r,month:i.month,day:i.day}:null}}for(let a=0;a<s;a+=1){const[r,o]=t[a],i=this.mapIntegersToDayMonth(o);if(i!=null)return{year:this.twoToFourDigitYear(r),month:i.month,day:i.day}}return null}mapIntegersToDayMonth(e){const t=[e,e.slice().reverse()];for(let s=0;s<t.length;s+=1){const a=t[s],r=a[0],o=a[1];if(r>=1&&r<=31&&o>=1&&o<=12)return{day:r,month:o}}return null}twoToFourDigitYear(e){return e>99?e:e>50?e+1900:e+2e3}}const A=new Uint32Array(65536),At=(n,e)=>{const t=n.length,s=e.length,a=1<<t-1;let r=-1,o=0,i=t,c=t;for(;c--;)A[n.charCodeAt(c)]|=1<<c;for(c=0;c<s;c++){let l=A[e.charCodeAt(c)];const g=l|o;l|=(l&r)+r^r,o|=~(l|r),r&=l,o&a&&i++,r&a&&i--,o=o<<1|1,r=r<<1|~(g|o),o&=g}for(c=t;c--;)A[n.charCodeAt(c)]=0;return i},Tt=(n,e)=>{const t=e.length,s=n.length,a=[],r=[],o=Math.ceil(t/32),i=Math.ceil(s/32);for(let f=0;f<o;f++)r[f]=-1,a[f]=0;let c=0;for(;c<i-1;c++){let f=0,b=-1;const E=c*32,y=Math.min(32,s)+E;for(let d=E;d<y;d++)A[n.charCodeAt(d)]|=1<<d;for(let d=0;d<t;d++){const v=A[e.charCodeAt(d)],k=r[d/32|0]>>>d%32&1,x=a[d/32|0]>>>d%32&1,_=v|f,N=((v|x)&b)+b^b|v|x;let w=f|~(N|b),P=b&N;w>>>31^k&&(r[d/32|0]^=1<<d%32),P>>>31^x&&(a[d/32|0]^=1<<d%32),w=w<<1|k,P=P<<1|x,b=P|~(_|w),f=w&_}for(let d=E;d<y;d++)A[n.charCodeAt(d)]=0}let l=0,g=-1;const h=c*32,p=Math.min(32,s-h)+h;for(let f=h;f<p;f++)A[n.charCodeAt(f)]|=1<<f;let m=s;for(let f=0;f<t;f++){const b=A[e.charCodeAt(f)],E=r[f/32|0]>>>f%32&1,y=a[f/32|0]>>>f%32&1,d=b|l,v=((b|y)&g)+g^g|b|y;let k=l|~(v|g),x=g&v;m+=k>>>s%32-1&1,m-=x>>>s%32-1&1,k>>>31^E&&(r[f/32|0]^=1<<f%32),x>>>31^y&&(a[f/32|0]^=1<<f%32),k=k<<1|E,x=x<<1|y,g=x|~(d|k),l=k&d}for(let f=h;f<p;f++)A[n.charCodeAt(f)]=0;return m},wt=(n,e)=>{if(n.length<e.length){const t=e;e=n,n=t}return e.length===0?n.length:n.length<=32?At(n,e):Tt(n,e)},Dt=(n,e,t)=>{const s=n.length<=e.length,a=n.length<=t;return s||a?Math.ceil(n.length/4):t},It=(n,e,t)=>{let s=0;const a=Object.keys(e).find(r=>{const o=Dt(n,r,t),i=wt(n,r),c=i<=o;return c&&(s=i),c});return a?{levenshteinDistance:s,levenshteinDistanceEntry:a}:{}};var Pt={a:["4","@"],b:["8"],c:["(","{","[","<"],e:["3"],g:["6","9"],i:["1","!","|"],l:["1","|","7"],o:["0"],s:["$","5"],t:["+","7"],x:["%"],z:["2"]},V={warnings:{straightRow:"straightRow",keyPattern:"keyPattern",simpleRepeat:"simpleRepeat",extendedRepeat:"extendedRepeat",sequences:"sequences",recentYears:"recentYears",dates:"dates",topTen:"topTen",topHundred:"topHundred",common:"common",similarToCommon:"similarToCommon",wordByItself:"wordByItself",namesByThemselves:"namesByThemselves",commonNames:"commonNames",userInputs:"userInputs",pwned:"pwned"},suggestions:{l33t:"l33t",reverseWords:"reverseWords",allUppercase:"allUppercase",capitalization:"capitalization",dates:"dates",recentYears:"recentYears",associatedYears:"associatedYears",sequences:"sequences",repeated:"repeated",longerKeyboardPattern:"longerKeyboardPattern",anotherWord:"anotherWord",useWords:"useWords",noNeed:"noNeed",pwned:"pwned"},timeEstimation:{ltSecond:"ltSecond",second:"second",seconds:"seconds",minute:"minute",minutes:"minutes",hour:"hour",hours:"hours",day:"day",days:"days",month:"month",months:"months",year:"year",years:"years",centuries:"centuries"}};class Lt{constructor(){this.matchers={},this.l33tTable=Pt,this.dictionary={userInputs:[]},this.rankedDictionaries={},this.translations=V,this.graphs={},this.availableGraphs=[],this.useLevenshteinDistance=!1,this.levenshteinThreshold=2,this.setRankedDictionaries()}setOptions(e={}){e.l33tTable&&(this.l33tTable=e.l33tTable),e.dictionary&&(this.dictionary=e.dictionary,this.setRankedDictionaries()),e.translations&&this.setTranslations(e.translations),e.graphs&&(this.graphs=e.graphs),e.useLevenshteinDistance!==void 0&&(this.useLevenshteinDistance=e.useLevenshteinDistance),e.levenshteinThreshold!==void 0&&(this.levenshteinThreshold=e.levenshteinThreshold)}setTranslations(e){if(this.checkCustomTranslations(e))this.translations=e;else throw new Error("Invalid translations object fallback to keys")}checkCustomTranslations(e){let t=!0;return Object.keys(V).forEach(s=>{if(s in e){const a=s;Object.keys(V[a]).forEach(r=>{r in e[a]||(t=!1)})}else t=!1}),t}setRankedDictionaries(){const e={};Object.keys(this.dictionary).forEach(t=>{e[t]=this.getRankedDictionary(t)}),this.rankedDictionaries=e}getRankedDictionary(e){const t=this.dictionary[e];if(e==="userInputs"){const s=[];return t.forEach(a=>{const r=typeof a;(r==="string"||r==="number"||r==="boolean")&&s.push(a.toString().toLowerCase())}),te(s)}return te(t)}extendUserInputsDictionary(e){this.dictionary.userInputs?this.dictionary.userInputs=[...this.dictionary.userInputs,...e]:this.dictionary.userInputs=e,this.rankedDictionaries.userInputs=this.getRankedDictionary("userInputs")}addMatcher(e,t){this.matchers[e]?console.info(`Matcher ${e} already exists`):this.matchers[e]=t}}const u=new Lt;class _t{constructor(e){this.defaultMatch=e}match({password:e}){const t=e.split("").reverse().join("");return this.defaultMatch({password:t}).map(s=>D(C({},s),{token:s.token.split("").reverse().join(""),reversed:!0,i:e.length-1-s.j,j:e.length-1-s.i}))}}class jt{constructor(e){this.defaultMatch=e}match({password:e}){const t=[],s=this.enumerateL33tSubs(this.relevantL33tSubtable(e,u.l33tTable));for(let a=0;a<s.length;a+=1){const r=s[a];if(ut(r))break;const o=ht(e,r);this.defaultMatch({password:o}).forEach(c=>{const l=e.slice(c.i,+c.j+1||9e9);if(l.toLowerCase()!==c.matchedWord){const g={};Object.keys(r).forEach(p=>{const m=r[p];l.indexOf(p)!==-1&&(g[p]=m)});const h=Object.keys(g).map(p=>`${p} -> ${g[p]}`).join(", ");t.push(D(C({},c),{l33t:!0,token:l,sub:g,subDisplay:h}))}})}return t.filter(a=>a.token.length>1)}relevantL33tSubtable(e,t){const s={},a={};return e.split("").forEach(r=>{s[r]=!0}),Object.keys(t).forEach(r=>{const i=t[r].filter(c=>c in s);i.length>0&&(a[r]=i)}),a}enumerateL33tSubs(e){const t=Object.keys(e);return this.getSubs(t,[[]],e).map(a=>{const r={};return a.forEach(([o,i])=>{r[o]=i}),r})}getSubs(e,t,s){if(!e.length)return t;const a=e[0],r=e.slice(1),o=[];s[a].forEach(c=>{t.forEach(l=>{let g=-1;for(let h=0;h<l.length;h+=1)if(l[h][0]===c){g=h;break}if(g===-1){const h=l.concat([[c,a]]);o.push(h)}else{const h=l.slice(0);h.splice(g,1),h.push([c,a]),o.push(l),o.push(h)}})});const i=this.dedup(o);return r.length?this.getSubs(r,i,s):i}dedup(e){const t=[],s={};return e.forEach(a=>{const r=a.map((i,c)=>[i,c]);r.sort();const o=r.map(([i,c])=>`${i},${c}`).join("-");o in s||(s[o]=!0,t.push(a))}),t}}class Rt{constructor(){this.l33t=new jt(this.defaultMatch),this.reverse=new _t(this.defaultMatch)}match({password:e}){const t=[...this.defaultMatch({password:e}),...this.reverse.match({password:e}),...this.l33t.match({password:e})];return L(t)}defaultMatch({password:e}){const t=[],s=e.length,a=e.toLowerCase();return Object.keys(u.rankedDictionaries).forEach(r=>{const o=u.rankedDictionaries[r];for(let i=0;i<s;i+=1)for(let c=i;c<s;c+=1){const l=a.slice(i,+c+1||9e9),g=l in o;let h={};const p=i===0&&c===s-1;u.useLevenshteinDistance&&p&&!g&&(h=It(l,o,u.levenshteinThreshold));const m=Object.keys(h).length!==0;if(g||m){const f=m?h.levenshteinDistanceEntry:l,b=o[f];t.push(C({pattern:"dictionary",i,j:c,token:e.slice(i,+c+1||9e9),matchedWord:l,rank:b,dictionaryName:r,reversed:!1,l33t:!1},h))}}}),t}}class Nt{match({password:e,regexes:t=Ct}){const s=[];return Object.keys(t).forEach(a=>{const r=t[a];r.lastIndex=0;const o=r.exec(e);if(o){const i=o[0];s.push({pattern:"regex",token:i,i:o.index,j:o.index+o[0].length-1,regexName:a,regexMatch:o})}}),L(s)}}var I={nCk(n,e){let t=n;if(e>t)return 0;if(e===0)return 1;let s=1;for(let a=1;a<=e;a+=1)s*=t,s/=a,t-=1;return s},log10(n){return Math.log(n)/Math.log(10)},log2(n){return Math.log(n)/Math.log(2)},factorial(n){let e=1;for(let t=2;t<=n;t+=1)e*=t;return e}},Ot=({token:n})=>{let e=j(gt,n.length);e===Number.POSITIVE_INFINITY&&(e=Number.MAX_VALUE);let t;return n.length===1?t=le+1:t=ue+1,Math.max(e,t)},Gt=({year:n,separator:e})=>{let s=Math.max(Math.abs(n-q),he)*365;return e&&(s*=4),s};const $t=n=>{const e=n.split(""),t=e.filter(o=>o.match(Mt)).length,s=e.filter(o=>o.match(kt)).length;let a=0;const r=Math.min(t,s);for(let o=1;o<=r;o+=1)a+=I.nCk(t+s,o);return a};var Bt=n=>{const e=n.replace(xt,"");if(e.match(vt)||e.toLowerCase()===e)return 1;const t=[de,mt,fe],s=t.length;for(let a=0;a<s;a+=1){const r=t[a];if(e.match(r))return 2}return $t(e)};const Ut=({subs:n,subbed:e,token:t})=>{const s=n[e],a=t.toLowerCase().split(""),r=a.filter(i=>i===e).length,o=a.filter(i=>i===s).length;return{subbedCount:r,unsubbedCount:o}};var Vt=({l33t:n,sub:e,token:t})=>{if(!n)return 1;let s=1;const a=e;return Object.keys(a).forEach(r=>{const{subbedCount:o,unsubbedCount:i}=Ut({subs:a,subbed:r,token:t});if(o===0||i===0)s*=2;else{const c=Math.min(i,o);let l=0;for(let g=1;g<=c;g+=1)l+=I.nCk(i+o,g);s*=l}}),s},Yt=({rank:n,reversed:e,l33t:t,sub:s,token:a})=>{const r=n,o=Bt(a),i=Vt({l33t:t,sub:s,token:a}),c=e&&2||1,l=r*o*i*c;return{baseGuesses:r,uppercaseVariations:o,l33tVariations:i,calculation:l}},Ft=({regexName:n,regexMatch:e,token:t})=>{const s={alphaLower:26,alphaUpper:26,alpha:52,alphanumeric:62,digits:10,symbols:33};if(n in s)return j(s[n],t.length);switch(n){case"recentYear":return Math.max(Math.abs(parseInt(e[0],10)-q),he)}return 0},Wt=({baseGuesses:n,repeatCount:e})=>n*e,qt=({token:n,ascending:e})=>{const t=n.charAt(0);let s=0;return["a","A","z","Z","0","1","9"].includes(t)?s=4:t.match(/\d/)?s=10:s=26,e||(s*=2),s*n.length};const Ht=n=>{let e=0;return Object.keys(n).forEach(t=>{e+=n[t].filter(a=>!!a).length}),e/=Object.entries(n).length,e},zt=({token:n,graph:e,turns:t})=>{const s=Object.keys(u.graphs[e]).length,a=Ht(u.graphs[e]);let r=0;const o=n.length;for(let i=2;i<=o;i+=1){const c=Math.min(t,i-1);for(let l=1;l<=c;l+=1)r+=I.nCk(i-1,l-1)*s*j(a,l)}return r};var Kt=({graph:n,token:e,shiftedCount:t,turns:s})=>{let a=zt({token:e,graph:n,turns:s});if(t){const r=e.length-t;if(t===0||r===0)a*=2;else{let o=0;for(let i=1;i<=Math.min(t,r);i+=1)o+=I.nCk(t+r,i);a*=o}}return Math.round(a)};const Zt=(n,e)=>{let t=1;return n.token.length<e.length&&(n.token.length===1?t=le:t=ue),t},ae={bruteforce:Ot,date:Gt,dictionary:Yt,regex:Ft,repeat:Wt,sequence:qt,spatial:Kt},Xt=(n,e)=>ae[n]?ae[n](e):u.matchers[n]&&"scoring"in u.matchers[n]?u.matchers[n].scoring(e):0;var Jt=(n,e)=>{const t={};if("guesses"in n&&n.guesses!=null)return n;const s=Zt(n,e),a=Xt(n.pattern,n);let r=0;typeof a=="number"?r=a:n.pattern==="dictionary"&&(r=a.calculation,t.baseGuesses=a.baseGuesses,t.uppercaseVariations=a.uppercaseVariations,t.l33tVariations=a.l33tVariations);const o=Math.max(r,s);return D(C(C({},n),t),{guesses:o,guessesLog10:I.log10(o)})};const M={password:"",optimal:{},excludeAdditive:!1,fillArray(n,e){const t=[];for(let s=0;s<n;s+=1){let a=[];e==="object"&&(a={}),t.push(a)}return t},makeBruteforceMatch(n,e){return{pattern:"bruteforce",token:this.password.slice(n,+e+1||9e9),i:n,j:e}},update(n,e){const t=n.j,s=Jt(n,this.password);let a=s.guesses;e>1&&(a*=this.optimal.pi[s.i-1][e-1]);let r=I.factorial(e)*a;this.excludeAdditive||(r+=j(pt,e-1));let o=!1;Object.keys(this.optimal.g[t]).forEach(i=>{const c=this.optimal.g[t][i];parseInt(i,10)<=e&&c<=r&&(o=!0)}),o||(this.optimal.g[t][e]=r,this.optimal.m[t][e]=s,this.optimal.pi[t][e]=a)},bruteforceUpdate(n){let e=this.makeBruteforceMatch(0,n);this.update(e,1);for(let t=1;t<=n;t+=1){e=this.makeBruteforceMatch(t,n);const s=this.optimal.m[t-1];Object.keys(s).forEach(a=>{s[a].pattern!=="bruteforce"&&this.update(e,parseInt(a,10)+1)})}},unwind(n){const e=[];let t=n-1,s=0,a=1/0;const r=this.optimal.g[t];for(r&&Object.keys(r).forEach(o=>{const i=r[o];i<a&&(s=parseInt(o,10),a=i)});t>=0;){const o=this.optimal.m[t][s];e.unshift(o),t=o.i-1,s-=1}return e}};var W={mostGuessableMatchSequence(n,e,t=!1){M.password=n,M.excludeAdditive=t;const s=n.length;let a=M.fillArray(s,"array");e.forEach(c=>{a[c.j].push(c)}),a=a.map(c=>c.sort((l,g)=>l.i-g.i)),M.optimal={m:M.fillArray(s,"object"),pi:M.fillArray(s,"object"),g:M.fillArray(s,"object")};for(let c=0;c<s;c+=1)a[c].forEach(l=>{l.i>0?Object.keys(M.optimal.m[l.i-1]).forEach(g=>{M.update(l,parseInt(g,10)+1)}):M.update(l,1)}),M.bruteforceUpdate(c);const r=M.unwind(s),o=r.length,i=this.getGuesses(n,o);return{password:n,guesses:i,guessesLog10:I.log10(i),sequence:r}},getGuesses(n,e){const t=n.length;let s=0;return n.length===0?s=1:s=M.optimal.g[t-1][e],s}};class Qt{match({password:e,omniMatch:t}){const s=[];let a=0;for(;a<e.length;){const o=this.getGreedyMatch(e,a),i=this.getLazyMatch(e,a);if(o==null)break;const{match:c,baseToken:l}=this.setMatchToken(o,i);if(c){const g=c.index+c[0].length-1,h=this.getBaseGuesses(l,t);s.push(this.normalizeMatch(l,g,c,h)),a=g+1}}return s.some(o=>o instanceof Promise)?Promise.all(s):s}normalizeMatch(e,t,s,a){const r={pattern:"repeat",i:s.index,j:t,token:s[0],baseToken:e,baseGuesses:0,repeatCount:s[0].length/e.length};return a instanceof Promise?a.then(o=>D(C({},r),{baseGuesses:o})):D(C({},r),{baseGuesses:a})}getGreedyMatch(e,t){const s=/(.+)\1+/g;return s.lastIndex=t,s.exec(e)}getLazyMatch(e,t){const s=/(.+?)\1+/g;return s.lastIndex=t,s.exec(e)}setMatchToken(e,t){const s=/^(.+?)\1+$/;let a,r="";if(t&&e[0].length>t[0].length){a=e;const o=s.exec(a[0]);o&&(r=o[1])}else a=t,a&&(r=a[1]);return{match:a,baseToken:r}}getBaseGuesses(e,t){const s=t.match(e);return s instanceof Promise?s.then(r=>W.mostGuessableMatchSequence(e,r).guesses):W.mostGuessableMatchSequence(e,s).guesses}}class es{constructor(){this.MAX_DELTA=5}match({password:e}){const t=[];if(e.length===1)return[];let s=0,a=null;const r=e.length;for(let o=1;o<r;o+=1){const i=e.charCodeAt(o)-e.charCodeAt(o-1);if(a==null&&(a=i),i!==a){const c=o-1;this.update({i:s,j:c,delta:a,password:e,result:t}),s=c,a=i}}return this.update({i:s,j:r-1,delta:a,password:e,result:t}),t}update({i:e,j:t,delta:s,password:a,result:r}){if(t-e>1||Math.abs(s)===1){const o=Math.abs(s);if(o>0&&o<=this.MAX_DELTA){const i=a.slice(e,+t+1||9e9),{sequenceName:c,sequenceSpace:l}=this.getSequence(i);return r.push({pattern:"sequence",i:e,j:t,token:a.slice(e,+t+1||9e9),sequenceName:c,sequenceSpace:l,ascending:s>0})}}return null}getSequence(e){let t="unicode",s=26;return yt.test(e)?(t="lower",s=26):bt.test(e)?(t="upper",s=26):Et.test(e)&&(t="digits",s=10),{sequenceName:t,sequenceSpace:s}}}class ts{constructor(){this.SHIFTED_RX=/[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?]/}match({password:e}){const t=[];return Object.keys(u.graphs).forEach(s=>{const a=u.graphs[s];F(t,this.helper(e,a,s))}),L(t)}checkIfShifted(e,t,s){return!e.includes("keypad")&&this.SHIFTED_RX.test(t.charAt(s))?1:0}helper(e,t,s){let a;const r=[];let o=0;const i=e.length;for(;o<i-1;){let c=o+1,l=0,g=0;for(a=this.checkIfShifted(s,e,o);;){const h=e.charAt(c-1),p=t[h]||[];let m=!1,f=-1,b=-1;if(c<i){const E=e.charAt(c),y=p.length;for(let d=0;d<y;d+=1){const v=p[d];if(b+=1,v){const k=v.indexOf(E);if(k!==-1){m=!0,f=b,k===1&&(a+=1),l!==f&&(g+=1,l=f);break}}}}if(m)c+=1;else{c-o>2&&r.push({pattern:"spatial",i:o,j:c-1,token:e.slice(o,c),graph:s,turns:g,shiftedCount:a}),o=c;break}}}return r}}class ss{constructor(){this.matchers={date:St,dictionary:Rt,regex:Nt,repeat:Qt,sequence:es,spatial:ts}}match(e){const t=[],s=[];return[...Object.keys(this.matchers),...Object.keys(u.matchers)].forEach(r=>{if(!this.matchers[r]&&!u.matchers[r])return;const o=this.matchers[r]?this.matchers[r]:u.matchers[r].Matching,c=new o().match({password:e,omniMatch:this});c instanceof Promise?(c.then(l=>{F(t,l)}),s.push(c)):F(t,c)}),s.length>0?new Promise(r=>{Promise.all(s).then(()=>{r(L(t))})}):L(t)}}const ge=1,pe=ge*60,me=pe*60,be=me*24,ye=be*31,ve=ye*12,ns=ve*100,Y={second:ge,minute:pe,hour:me,day:be,month:ye,year:ve,century:ns};class as{translate(e,t){let s=e;t!==void 0&&t!==1&&(s+="s");const{timeEstimation:a}=u.translations;return a[s].replace("{base}",`${t}`)}estimateAttackTimes(e){const t={onlineThrottling100PerHour:e/.027777777777777776,onlineNoThrottling10PerSecond:e/10,offlineSlowHashing1e4PerSecond:e/1e4,offlineFastHashing1e10PerSecond:e/1e10},s={onlineThrottling100PerHour:"",onlineNoThrottling10PerSecond:"",offlineSlowHashing1e4PerSecond:"",offlineFastHashing1e10PerSecond:""};return Object.keys(t).forEach(a=>{const r=t[a];s[a]=this.displayTime(r)}),{crackTimesSeconds:t,crackTimesDisplay:s,score:this.guessesToScore(e)}}guessesToScore(e){return e<1e3+5?0:e<1e6+5?1:e<1e8+5?2:e<1e10+5?3:4}displayTime(e){let t="centuries",s;const a=Object.keys(Y),r=a.findIndex(o=>e<Y[o]);return r>-1&&(t=a[r-1],r!==0?s=Math.round(e/Y[t]):t="ltSecond"),this.translate(t,s)}}var rs=()=>null,os=()=>({warning:u.translations.warnings.dates,suggestions:[u.translations.suggestions.dates]});const is=(n,e)=>{let t="";return e&&!n.l33t&&!n.reversed?n.rank<=10?t=u.translations.warnings.topTen:n.rank<=100?t=u.translations.warnings.topHundred:t=u.translations.warnings.common:n.guessesLog10<=4&&(t=u.translations.warnings.similarToCommon),t},cs=(n,e)=>{let t="";return e&&(t=u.translations.warnings.wordByItself),t},ls=(n,e)=>e?u.translations.warnings.namesByThemselves:u.translations.warnings.commonNames,us=(n,e)=>{let t="";const s=n.dictionaryName,a=s==="lastnames"||s.toLowerCase().includes("firstnames");return s==="passwords"?t=is(n,e):s.includes("wikipedia")?t=cs(n,e):a?t=ls(n,e):s==="userInputs"&&(t=u.translations.warnings.userInputs),t};var hs=(n,e)=>{const t=us(n,e),s=[],a=n.token;return a.match(de)?s.push(u.translations.suggestions.capitalization):a.match(fe)&&a.toLowerCase()!==a&&s.push(u.translations.suggestions.allUppercase),n.reversed&&n.token.length>=4&&s.push(u.translations.suggestions.reverseWords),n.l33t&&s.push(u.translations.suggestions.l33t),{warning:t,suggestions:s}},ds=n=>n.regexName==="recentYear"?{warning:u.translations.warnings.recentYears,suggestions:[u.translations.suggestions.recentYears,u.translations.suggestions.associatedYears]}:{warning:"",suggestions:[]},fs=n=>{let e=u.translations.warnings.extendedRepeat;return n.baseToken.length===1&&(e=u.translations.warnings.simpleRepeat),{warning:e,suggestions:[u.translations.suggestions.repeated]}},gs=()=>({warning:u.translations.warnings.sequences,suggestions:[u.translations.suggestions.sequences]}),ps=n=>{let e=u.translations.warnings.keyPattern;return n.turns===1&&(e=u.translations.warnings.straightRow),{warning:e,suggestions:[u.translations.suggestions.longerKeyboardPattern]}};const re={warning:"",suggestions:[]};class ms{constructor(){this.matchers={bruteforce:rs,date:os,dictionary:hs,regex:ds,repeat:fs,sequence:gs,spatial:ps},this.defaultFeedback={warning:"",suggestions:[]},this.setDefaultSuggestions()}setDefaultSuggestions(){this.defaultFeedback.suggestions.push(u.translations.suggestions.useWords,u.translations.suggestions.noNeed)}getFeedback(e,t){if(t.length===0)return this.defaultFeedback;if(e>2)return re;const s=u.translations.suggestions.anotherWord,a=this.getLongestMatch(t);let r=this.getMatchFeedback(a,t.length===1);return r!=null?(r.suggestions.unshift(s),r.warning==null&&(r.warning="")):r={warning:"",suggestions:[s]},r}getLongestMatch(e){let t=e[0];return e.slice(1).forEach(a=>{a.token.length>t.token.length&&(t=a)}),t}getMatchFeedback(e,t){return this.matchers[e.pattern]?this.matchers[e.pattern](e,t):u.matchers[e.pattern]&&"feedback"in u.matchers[e.pattern]?u.matchers[e.pattern].feedback(e,t):re}}const ke=()=>new Date().getTime(),bs=(n,e,t)=>{const s=new ms,a=new as,r=W.mostGuessableMatchSequence(e,n),o=ke()-t,i=a.estimateAttackTimes(r.guesses);return D(C(C({calcTime:o},r),i),{feedback:s.getFeedback(i.score,r.sequence)})},ys=(n,e)=>(e&&u.extendUserInputsDictionary(e),new ss().match(n)),vs=(n,e)=>{const t=ke(),s=ys(n,e);if(s instanceof Promise)throw new Error("You are using a Promised matcher, please use `zxcvbnAsync` for it.");return bs(s,n,t)};const ks=oe({name:"StrengthMeter",components:{InputPassword:Be.Password},props:{value:$.string,showInput:$.bool.def(!0),disabled:$.bool},emits:["score-change","change"],setup(n,{emit:e}){const t=ce(""),{prefixCls:s}=Ue("strength-meter"),a=Ve(()=>{const{disabled:o}=n;if(o)return-1;const c=B(t)?vs(B(t)).score:-1;return e("score-change",c),c});function r(o){t.value=o.target.value}return ie(()=>{t.value=n.value||""}),Ye(()=>B(t),o=>{e("change",o)}),{getPasswordStrength:a,handleChange:r,prefixCls:s,innerValueRef:t}}}),Ms=["data-score"];function xs(n,e,t,s,a,r){const o=We("InputPassword");return Q(),qe("div",{class:U([n.prefixCls,"relative"])},[n.showInput?(Q(),He(o,et({key:0},n.$attrs,{allowClear:"",value:n.innerValueRef,onChange:n.handleChange,disabled:n.disabled}),ze({_:2},[Ke(Object.keys(n.$slots),i=>({name:i,fn:Ze(c=>[Xe(n.$slots,i,Je(Qe(c||{})),void 0,!0)])}))]),1040,["value","onChange","disabled"])):tt("",!0),ee("div",{class:U(`${n.prefixCls}-bar`)},[ee("div",{class:U(`${n.prefixCls}-bar--fill`),"data-score":n.getPasswordStrength},null,10,Ms)],2)],2)}var Es=Fe(ks,[["render",xs],["__scopeId","data-v-367aeb21"]]);const Ds=st(Es);export{ws as C,Ds as S,it as a,Ts as c};
|