sm2.js 40.3 KB
window.sm2=function(t){function i(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,i),n.l=!0,n.exports}var e={};return i.m=t,i.c=e,i.d=function(t,e,r){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,i){return Object.prototype.hasOwnProperty.call(t,i)},i.p="",i(i.s=3)}([function(t,i,e){(function(){function e(t,i,e){null!=t&&("number"==typeof t?this.fromNumber(t,i,e):null==i&&"string"!=typeof t?this.fromString(t,256):this.fromString(t,i))}function r(){return new e(null)}function n(t,i,e,r,n,s){for(;--s>=0;){var o=i*this[t++]+e[r]+n;n=Math.floor(o/67108864),e[r++]=67108863&o}return n}function s(t,i,e,r,n,s){for(var o=32767&i,h=i>>15;--s>=0;){var u=32767&this[t],a=this[t++]>>15,f=h*u+a*o;u=o*u+((32767&f)<<15)+e[r]+(1073741823&n),n=(u>>>30)+(f>>>15)+h*a+(n>>>30),e[r++]=1073741823&u}return n}function o(t,i,e,r,n,s){for(var o=16383&i,h=i>>14;--s>=0;){var u=16383&this[t],a=this[t++]>>14,f=h*u+a*o;u=o*u+((16383&f)<<14)+e[r]+n,n=(u>>28)+(f>>14)+h*a,e[r++]=268435455&u}return n}function h(t){return pi.charAt(t)}function u(t,i){var e=yi[t.charCodeAt(i)];return null==e?-1:e}function a(t){for(var i=this.t-1;i>=0;--i)t[i]=this[i];t.t=this.t,t.s=this.s}function f(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0}function l(t){var i=r();return i.fromInt(t),i}function c(t,i){var r;if(16==i)r=4;else if(8==i)r=3;else if(256==i)r=8;else if(2==i)r=1;else if(32==i)r=5;else{if(4!=i)return void this.fromRadix(t,i);r=2}this.t=0,this.s=0;for(var n=t.length,s=!1,o=0;--n>=0;){var h=8==r?255&t[n]:u(t,n);h<0?"-"==t.charAt(n)&&(s=!0):(s=!1,0==o?this[this.t++]=h:o+r>this.DB?(this[this.t-1]|=(h&(1<<this.DB-o)-1)<<o,this[this.t++]=h>>this.DB-o):this[this.t-1]|=h<<o,(o+=r)>=this.DB&&(o-=this.DB))}8==r&&0!=(128&t[0])&&(this.s=-1,o>0&&(this[this.t-1]|=(1<<this.DB-o)-1<<o)),this.clamp(),s&&e.ZERO.subTo(this,this)}function p(){for(var t=this.s&this.DM;this.t>0&&this[this.t-1]==t;)--this.t}function y(t){if(this.s<0)return"-"+this.negate().toString(t);var i;if(16==t)i=4;else if(8==t)i=3;else if(2==t)i=1;else if(32==t)i=5;else{if(4!=t)return this.toRadix(t);i=2}var e,r=(1<<i)-1,n=!1,s="",o=this.t,u=this.DB-o*this.DB%i;if(o-- >0)for(u<this.DB&&(e=this[o]>>u)>0&&(n=!0,s=h(e));o>=0;)u<i?(e=(this[o]&(1<<u)-1)<<i-u,e|=this[--o]>>(u+=this.DB-i)):(e=this[o]>>(u-=i)&r,u<=0&&(u+=this.DB,--o)),e>0&&(n=!0),n&&(s+=h(e));return n?s:"0"}function v(){var t=r();return e.ZERO.subTo(this,t),t}function g(){return this.s<0?this.negate():this}function m(t){var i=this.s-t.s;if(0!=i)return i;var e=this.t;if(0!=(i=e-t.t))return this.s<0?-i:i;for(;--e>=0;)if(0!=(i=this[e]-t[e]))return i;return 0}function d(t){var i,e=1;return 0!=(i=t>>>16)&&(t=i,e+=16),0!=(i=t>>8)&&(t=i,e+=8),0!=(i=t>>4)&&(t=i,e+=4),0!=(i=t>>2)&&(t=i,e+=2),0!=(i=t>>1)&&(t=i,e+=1),e}function T(){return this.t<=0?0:this.DB*(this.t-1)+d(this[this.t-1]^this.s&this.DM)}function b(t,i){var e;for(e=this.t-1;e>=0;--e)i[e+t]=this[e];for(e=t-1;e>=0;--e)i[e]=0;i.t=this.t+t,i.s=this.s}function F(t,i){for(var e=t;e<this.t;++e)i[e-t]=this[e];i.t=Math.max(this.t-t,0),i.s=this.s}function B(t,i){var e,r=t%this.DB,n=this.DB-r,s=(1<<n)-1,o=Math.floor(t/this.DB),h=this.s<<r&this.DM;for(e=this.t-1;e>=0;--e)i[e+o+1]=this[e]>>n|h,h=(this[e]&s)<<r;for(e=o-1;e>=0;--e)i[e]=0;i[o]=h,i.t=this.t+o+1,i.s=this.s,i.clamp()}function x(t,i){i.s=this.s;var e=Math.floor(t/this.DB);if(e>=this.t)return void(i.t=0);var r=t%this.DB,n=this.DB-r,s=(1<<r)-1;i[0]=this[e]>>r;for(var o=e+1;o<this.t;++o)i[o-e-1]|=(this[o]&s)<<n,i[o-e]=this[o]>>r;r>0&&(i[this.t-e-1]|=(this.s&s)<<n),i.t=this.t-e,i.clamp()}function w(t,i){for(var e=0,r=0,n=Math.min(t.t,this.t);e<n;)r+=this[e]-t[e],i[e++]=r&this.DM,r>>=this.DB;if(t.t<this.t){for(r-=t.s;e<this.t;)r+=this[e],i[e++]=r&this.DM,r>>=this.DB;r+=this.s}else{for(r+=this.s;e<t.t;)r-=t[e],i[e++]=r&this.DM,r>>=this.DB;r-=t.s}i.s=r<0?-1:0,r<-1?i[e++]=this.DV+r:r>0&&(i[e++]=r),i.t=e,i.clamp()}function S(t,i){var r=this.abs(),n=t.abs(),s=r.t;for(i.t=s+n.t;--s>=0;)i[s]=0;for(s=0;s<n.t;++s)i[s+r.t]=r.am(0,n[s],i,s,0,r.t);i.s=0,i.clamp(),this.s!=t.s&&e.ZERO.subTo(i,i)}function k(t){for(var i=this.abs(),e=t.t=2*i.t;--e>=0;)t[e]=0;for(e=0;e<i.t-1;++e){var r=i.am(e,i[e],t,2*e,0,1);(t[e+i.t]+=i.am(e+1,2*i[e],t,2*e+1,r,i.t-e-1))>=i.DV&&(t[e+i.t]-=i.DV,t[e+i.t+1]=1)}t.t>0&&(t[t.t-1]+=i.am(e,i[e],t,2*e,0,1)),t.s=0,t.clamp()}function D(t,i,n){var s=t.abs();if(!(s.t<=0)){var o=this.abs();if(o.t<s.t)return null!=i&&i.fromInt(0),void(null!=n&&this.copyTo(n));null==n&&(n=r());var h=r(),u=this.s,a=t.s,f=this.DB-d(s[s.t-1]);f>0?(s.lShiftTo(f,h),o.lShiftTo(f,n)):(s.copyTo(h),o.copyTo(n));var l=h.t,c=h[l-1];if(0!=c){var p=c*(1<<this.F1)+(l>1?h[l-2]>>this.F2:0),y=this.FV/p,v=(1<<this.F1)/p,g=1<<this.F2,m=n.t,T=m-l,b=null==i?r():i;for(h.dlShiftTo(T,b),n.compareTo(b)>=0&&(n[n.t++]=1,n.subTo(b,n)),e.ONE.dlShiftTo(l,b),b.subTo(h,h);h.t<l;)h[h.t++]=0;for(;--T>=0;){var F=n[--m]==c?this.DM:Math.floor(n[m]*y+(n[m-1]+g)*v);if((n[m]+=h.am(0,F,n,T,0,l))<F)for(h.dlShiftTo(T,b),n.subTo(b,n);n[m]<--F;)n.subTo(b,n)}null!=i&&(n.drShiftTo(l,i),u!=a&&e.ZERO.subTo(i,i)),n.t=l,n.clamp(),f>0&&n.rShiftTo(f,n),u<0&&e.ZERO.subTo(n,n)}}}function I(t){var i=r();return this.abs().divRemTo(t,null,i),this.s<0&&i.compareTo(e.ZERO)>0&&t.subTo(i,i),i}function E(t){this.m=t}function O(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t}function q(t){return t}function A(t){t.divRemTo(this.m,null,t)}function V(t,i,e){t.multiplyTo(i,e),this.reduce(e)}function R(t,i){t.squareTo(i),this.reduce(i)}function M(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var i=3&t;return i=i*(2-(15&t)*i)&15,i=i*(2-(255&t)*i)&255,i=i*(2-((65535&t)*i&65535))&65535,i=i*(2-t*i%this.DV)%this.DV,i>0?this.DV-i:-i}function C(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<<t.DB-15)-1,this.mt2=2*t.t}function _(t){var i=r();return t.abs().dlShiftTo(this.m.t,i),i.divRemTo(this.m,null,i),t.s<0&&i.compareTo(e.ZERO)>0&&this.m.subTo(i,i),i}function H(t){var i=r();return t.copyTo(i),this.reduce(i),i}function P(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var i=0;i<this.m.t;++i){var e=32767&t[i],r=e*this.mpl+((e*this.mph+(t[i]>>15)*this.mpl&this.um)<<15)&t.DM;for(e=i+this.m.t,t[e]+=this.m.am(0,r,t,i,0,this.m.t);t[e]>=t.DV;)t[e]-=t.DV,t[++e]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)}function L(t,i){t.squareTo(i),this.reduce(i)}function N(t,i,e){t.multiplyTo(i,e),this.reduce(e)}function U(){return 0==(this.t>0?1&this[0]:this.s)}function z(t,i){if(t>4294967295||t<1)return e.ONE;var n=r(),s=r(),o=i.convert(this),h=d(t)-1;for(o.copyTo(n);--h>=0;)if(i.sqrTo(n,s),(t&1<<h)>0)i.mulTo(s,o,n);else{var u=n;n=s,s=u}return i.revert(n)}function j(t,i){var e;return e=t<256||i.isEven()?new E(i):new C(i),this.exp(t,e)}function X(){var t=r();return this.copyTo(t),t}function Z(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]}function K(){return 0==this.t?this.s:this[0]<<24>>24}function G(){return 0==this.t?this.s:this[0]<<16>>16}function Y(t){return Math.floor(Math.LN2*this.DB/Math.log(t))}function W(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1}function J(t){if(null==t&&(t=10),0==this.signum()||t<2||t>36)return"0";var i=this.chunkSize(t),e=Math.pow(t,i),n=l(e),s=r(),o=r(),h="";for(this.divRemTo(n,s,o);s.signum()>0;)h=(e+o.intValue()).toString(t).substr(1)+h,s.divRemTo(n,s,o);return o.intValue().toString(t)+h}function Q(t,i){this.fromInt(0),null==i&&(i=10);for(var r=this.chunkSize(i),n=Math.pow(i,r),s=!1,o=0,h=0,a=0;a<t.length;++a){var f=u(t,a);f<0?"-"==t.charAt(a)&&0==this.signum()&&(s=!0):(h=i*h+f,++o>=r&&(this.dMultiply(n),this.dAddOffset(h,0),o=0,h=0))}o>0&&(this.dMultiply(Math.pow(i,o)),this.dAddOffset(h,0)),s&&e.ZERO.subTo(this,this)}function $(t,i,r){if("number"==typeof i)if(t<2)this.fromInt(1);else for(this.fromNumber(t,r),this.testBit(t-1)||this.bitwiseTo(e.ONE.shiftLeft(t-1),ht,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(i);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(e.ONE.shiftLeft(t-1),this);else{var n=new Array,s=7&t;n.length=1+(t>>3),i.nextBytes(n),s>0?n[0]&=(1<<s)-1:n[0]=0,this.fromString(n,256)}}function tt(){var t=this.t,i=new Array;i[0]=this.s;var e,r=this.DB-t*this.DB%8,n=0;if(t-- >0)for(r<this.DB&&(e=this[t]>>r)!=(this.s&this.DM)>>r&&(i[n++]=e|this.s<<this.DB-r);t>=0;)r<8?(e=(this[t]&(1<<r)-1)<<8-r,e|=this[--t]>>(r+=this.DB-8)):(e=this[t]>>(r-=8)&255,r<=0&&(r+=this.DB,--t)),0!=(128&e)&&(e|=-256),0==n&&(128&this.s)!=(128&e)&&++n,(n>0||e!=this.s)&&(i[n++]=e);return i}function it(t){return 0==this.compareTo(t)}function et(t){return this.compareTo(t)<0?this:t}function rt(t){return this.compareTo(t)>0?this:t}function nt(t,i,e){var r,n,s=Math.min(t.t,this.t);for(r=0;r<s;++r)e[r]=i(this[r],t[r]);if(t.t<this.t){for(n=t.s&this.DM,r=s;r<this.t;++r)e[r]=i(this[r],n);e.t=this.t}else{for(n=this.s&this.DM,r=s;r<t.t;++r)e[r]=i(n,t[r]);e.t=t.t}e.s=i(this.s,t.s),e.clamp()}function st(t,i){return t&i}function ot(t){var i=r();return this.bitwiseTo(t,st,i),i}function ht(t,i){return t|i}function ut(t){var i=r();return this.bitwiseTo(t,ht,i),i}function at(t,i){return t^i}function ft(t){var i=r();return this.bitwiseTo(t,at,i),i}function lt(t,i){return t&~i}function ct(t){var i=r();return this.bitwiseTo(t,lt,i),i}function pt(){for(var t=r(),i=0;i<this.t;++i)t[i]=this.DM&~this[i];return t.t=this.t,t.s=~this.s,t}function yt(t){var i=r();return t<0?this.rShiftTo(-t,i):this.lShiftTo(t,i),i}function vt(t){var i=r();return t<0?this.lShiftTo(-t,i):this.rShiftTo(t,i),i}function gt(t){if(0==t)return-1;var i=0;return 0==(65535&t)&&(t>>=16,i+=16),0==(255&t)&&(t>>=8,i+=8),0==(15&t)&&(t>>=4,i+=4),0==(3&t)&&(t>>=2,i+=2),0==(1&t)&&++i,i}function mt(){for(var t=0;t<this.t;++t)if(0!=this[t])return t*this.DB+gt(this[t]);return this.s<0?this.t*this.DB:-1}function dt(t){for(var i=0;0!=t;)t&=t-1,++i;return i}function Tt(){for(var t=0,i=this.s&this.DM,e=0;e<this.t;++e)t+=dt(this[e]^i);return t}function bt(t){var i=Math.floor(t/this.DB);return i>=this.t?0!=this.s:0!=(this[i]&1<<t%this.DB)}function Ft(t,i){var r=e.ONE.shiftLeft(t);return this.bitwiseTo(r,i,r),r}function Bt(t){return this.changeBit(t,ht)}function xt(t){return this.changeBit(t,lt)}function wt(t){return this.changeBit(t,at)}function St(t,i){for(var e=0,r=0,n=Math.min(t.t,this.t);e<n;)r+=this[e]+t[e],i[e++]=r&this.DM,r>>=this.DB;if(t.t<this.t){for(r+=t.s;e<this.t;)r+=this[e],i[e++]=r&this.DM,r>>=this.DB;r+=this.s}else{for(r+=this.s;e<t.t;)r+=t[e],i[e++]=r&this.DM,r>>=this.DB;r+=t.s}i.s=r<0?-1:0,r>0?i[e++]=r:r<-1&&(i[e++]=this.DV+r),i.t=e,i.clamp()}function kt(t){var i=r();return this.addTo(t,i),i}function Dt(t){var i=r();return this.subTo(t,i),i}function It(t){var i=r();return this.multiplyTo(t,i),i}function Et(){var t=r();return this.squareTo(t),t}function Ot(t){var i=r();return this.divRemTo(t,i,null),i}function qt(t){var i=r();return this.divRemTo(t,null,i),i}function At(t){var i=r(),e=r();return this.divRemTo(t,i,e),new Array(i,e)}function Vt(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()}function Rt(t,i){if(0!=t){for(;this.t<=i;)this[this.t++]=0;for(this[i]+=t;this[i]>=this.DV;)this[i]-=this.DV,++i>=this.t&&(this[this.t++]=0),++this[i]}}function Mt(){}function Ct(t){return t}function _t(t,i,e){t.multiplyTo(i,e)}function Ht(t,i){t.squareTo(i)}function Pt(t){return this.exp(t,new Mt)}function Lt(t,i,e){var r=Math.min(this.t+t.t,i);for(e.s=0,e.t=r;r>0;)e[--r]=0;var n;for(n=e.t-this.t;r<n;++r)e[r+this.t]=this.am(0,t[r],e,r,0,this.t);for(n=Math.min(t.t,i);r<n;++r)this.am(0,t[r],e,r,0,i-r);e.clamp()}function Nt(t,i,e){--i;var r=e.t=this.t+t.t-i;for(e.s=0;--r>=0;)e[r]=0;for(r=Math.max(i-this.t,0);r<t.t;++r)e[this.t+r-i]=this.am(i-r,t[r],e,0,0,this.t+r-i);e.clamp(),e.drShiftTo(1,e)}function Ut(t){this.r2=r(),this.q3=r(),e.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t),this.m=t}function zt(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var i=r();return t.copyTo(i),this.reduce(i),i}function jt(t){return t}function Xt(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)}function Zt(t,i){t.squareTo(i),this.reduce(i)}function Kt(t,i,e){t.multiplyTo(i,e),this.reduce(e)}function Gt(t,i){var e,n,s=t.bitLength(),o=l(1);if(s<=0)return o;e=s<18?1:s<48?3:s<144?4:s<768?5:6,n=s<8?new E(i):i.isEven()?new Ut(i):new C(i);var h=new Array,u=3,a=e-1,f=(1<<e)-1;if(h[1]=n.convert(this),e>1){var c=r();for(n.sqrTo(h[1],c);u<=f;)h[u]=r(),n.mulTo(c,h[u-2],h[u]),u+=2}var p,y,v=t.t-1,g=!0,m=r();for(s=d(t[v])-1;v>=0;){for(s>=a?p=t[v]>>s-a&f:(p=(t[v]&(1<<s+1)-1)<<a-s,v>0&&(p|=t[v-1]>>this.DB+s-a)),u=e;0==(1&p);)p>>=1,--u;if((s-=u)<0&&(s+=this.DB,--v),g)h[p].copyTo(o),g=!1;else{for(;u>1;)n.sqrTo(o,m),n.sqrTo(m,o),u-=2;u>0?n.sqrTo(o,m):(y=o,o=m,m=y),n.mulTo(m,h[p],o)}for(;v>=0&&0==(t[v]&1<<s);)n.sqrTo(o,m),y=o,o=m,m=y,--s<0&&(s=this.DB-1,--v)}return n.revert(o)}function Yt(t){var i=this.s<0?this.negate():this.clone(),e=t.s<0?t.negate():t.clone();if(i.compareTo(e)<0){var r=i;i=e,e=r}var n=i.getLowestSetBit(),s=e.getLowestSetBit();if(s<0)return i;for(n<s&&(s=n),s>0&&(i.rShiftTo(s,i),e.rShiftTo(s,e));i.signum()>0;)(n=i.getLowestSetBit())>0&&i.rShiftTo(n,i),(n=e.getLowestSetBit())>0&&e.rShiftTo(n,e),i.compareTo(e)>=0?(i.subTo(e,i),i.rShiftTo(1,i)):(e.subTo(i,e),e.rShiftTo(1,e));return s>0&&e.lShiftTo(s,e),e}function Wt(t){if(t<=0)return 0;var i=this.DV%t,e=this.s<0?t-1:0;if(this.t>0)if(0==i)e=this[0]%t;else for(var r=this.t-1;r>=0;--r)e=(i*e+this[r])%t;return e}function Jt(t){var i=t.isEven();if(this.isEven()&&i||0==t.signum())return e.ZERO;for(var r=t.clone(),n=this.clone(),s=l(1),o=l(0),h=l(0),u=l(1);0!=r.signum();){for(;r.isEven();)r.rShiftTo(1,r),i?(s.isEven()&&o.isEven()||(s.addTo(this,s),o.subTo(t,o)),s.rShiftTo(1,s)):o.isEven()||o.subTo(t,o),o.rShiftTo(1,o);for(;n.isEven();)n.rShiftTo(1,n),i?(h.isEven()&&u.isEven()||(h.addTo(this,h),u.subTo(t,u)),h.rShiftTo(1,h)):u.isEven()||u.subTo(t,u),u.rShiftTo(1,u);r.compareTo(n)>=0?(r.subTo(n,r),i&&s.subTo(h,s),o.subTo(u,o)):(n.subTo(r,n),i&&h.subTo(s,h),u.subTo(o,u))}return 0!=n.compareTo(e.ONE)?e.ZERO:u.compareTo(t)>=0?u.subtract(t):u.signum()<0?(u.addTo(t,u),u.signum()<0?u.add(t):u):u}function Qt(t){var i,e=this.abs();if(1==e.t&&e[0]<=vi[vi.length-1]){for(i=0;i<vi.length;++i)if(e[0]==vi[i])return!0;return!1}if(e.isEven())return!1;for(i=1;i<vi.length;){for(var r=vi[i],n=i+1;n<vi.length&&r<gi;)r*=vi[n++];for(r=e.modInt(r);i<n;)if(r%vi[i++]==0)return!1}return e.millerRabin(t)}function $t(t){var i=this.subtract(e.ONE),n=i.getLowestSetBit();if(n<=0)return!1;var s=i.shiftRight(n);(t=t+1>>1)>vi.length&&(t=vi.length);for(var o=r(),h=0;h<t;++h){o.fromInt(vi[Math.floor(Math.random()*vi.length)]);var u=o.modPow(s,this);if(0!=u.compareTo(e.ONE)&&0!=u.compareTo(i)){for(var a=1;a++<n&&0!=u.compareTo(i);)if(u=u.modPowInt(2,this),0==u.compareTo(e.ONE))return!1;if(0!=u.compareTo(i))return!1}}return!0}function ti(t){di[Ti++]^=255&t,di[Ti++]^=t>>8&255,di[Ti++]^=t>>16&255,di[Ti++]^=t>>24&255,Ti>=xi&&(Ti-=xi)}function ii(){ti((new Date).getTime())}function ei(){if(null==mi){for(ii(),mi=ui(),mi.init(di),Ti=0;Ti<di.length;++Ti)di[Ti]=0;Ti=0}return mi.next()}function ri(t){var i;for(i=0;i<t.length;++i)t[i]=ei()}function ni(){}function si(){this.i=0,this.j=0,this.S=new Array}function oi(t){var i,e,r;for(i=0;i<256;++i)this.S[i]=i;for(e=0,i=0;i<256;++i)e=e+this.S[i]+t[i%t.length]&255,r=this.S[i],this.S[i]=this.S[e],this.S[e]=r;this.i=0,this.j=0}function hi(){var t;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,t=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=t,this.S[t+this.S[this.i]&255]}function ui(){return new si}var ai,fi="undefined"!=typeof navigator;fi&&"Microsoft Internet Explorer"==navigator.appName?(e.prototype.am=s,ai=30):fi&&"Netscape"!=navigator.appName?(e.prototype.am=n,ai=26):(e.prototype.am=o,ai=28),e.prototype.DB=ai,e.prototype.DM=(1<<ai)-1,e.prototype.DV=1<<ai;e.prototype.FV=Math.pow(2,52),e.prototype.F1=52-ai,e.prototype.F2=2*ai-52;var li,ci,pi="0123456789abcdefghijklmnopqrstuvwxyz",yi=new Array;for(li="0".charCodeAt(0),ci=0;ci<=9;++ci)yi[li++]=ci;for(li="a".charCodeAt(0),ci=10;ci<36;++ci)yi[li++]=ci;for(li="A".charCodeAt(0),ci=10;ci<36;++ci)yi[li++]=ci;E.prototype.convert=O,E.prototype.revert=q,E.prototype.reduce=A,E.prototype.mulTo=V,E.prototype.sqrTo=R,C.prototype.convert=_,C.prototype.revert=H,C.prototype.reduce=P,C.prototype.mulTo=N,C.prototype.sqrTo=L,e.prototype.copyTo=a,e.prototype.fromInt=f,e.prototype.fromString=c,e.prototype.clamp=p,e.prototype.dlShiftTo=b,e.prototype.drShiftTo=F,e.prototype.lShiftTo=B,e.prototype.rShiftTo=x,e.prototype.subTo=w,e.prototype.multiplyTo=S,e.prototype.squareTo=k,e.prototype.divRemTo=D,e.prototype.invDigit=M,e.prototype.isEven=U,e.prototype.exp=z,e.prototype.toString=y,e.prototype.negate=v,e.prototype.abs=g,e.prototype.compareTo=m,e.prototype.bitLength=T,e.prototype.mod=I,e.prototype.modPowInt=j,e.ZERO=l(0),e.ONE=l(1),Mt.prototype.convert=Ct,Mt.prototype.revert=Ct,Mt.prototype.mulTo=_t,Mt.prototype.sqrTo=Ht,Ut.prototype.convert=zt,Ut.prototype.revert=jt,Ut.prototype.reduce=Xt,Ut.prototype.mulTo=Kt,Ut.prototype.sqrTo=Zt;var vi=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],gi=(1<<26)/vi[vi.length-1];e.prototype.chunkSize=Y,e.prototype.toRadix=J,e.prototype.fromRadix=Q,e.prototype.fromNumber=$,e.prototype.bitwiseTo=nt,e.prototype.changeBit=Ft,e.prototype.addTo=St,e.prototype.dMultiply=Vt,e.prototype.dAddOffset=Rt,e.prototype.multiplyLowerTo=Lt,e.prototype.multiplyUpperTo=Nt,e.prototype.modInt=Wt,e.prototype.millerRabin=$t,e.prototype.clone=X,e.prototype.intValue=Z,e.prototype.byteValue=K,e.prototype.shortValue=G,e.prototype.signum=W,e.prototype.toByteArray=tt,e.prototype.equals=it,e.prototype.min=et,e.prototype.max=rt,e.prototype.and=ot,e.prototype.or=ut,e.prototype.xor=ft,e.prototype.andNot=ct,e.prototype.not=pt,e.prototype.shiftLeft=yt,e.prototype.shiftRight=vt,e.prototype.getLowestSetBit=mt,e.prototype.bitCount=Tt,e.prototype.testBit=bt,e.prototype.setBit=Bt,e.prototype.clearBit=xt,e.prototype.flipBit=wt,e.prototype.add=kt,e.prototype.subtract=Dt,e.prototype.multiply=It,e.prototype.divide=Ot,e.prototype.remainder=qt,e.prototype.divideAndRemainder=At,e.prototype.modPow=Gt,e.prototype.modInverse=Jt,e.prototype.pow=Pt,e.prototype.gcd=Yt,e.prototype.isProbablePrime=Qt,e.prototype.square=Et,e.prototype.Barrett=Ut;var mi,di,Ti;if(null==di){di=new Array,Ti=0;var bi;if("undefined"!=typeof window&&window.crypto)if(window.crypto.getRandomValues){var Fi=new Uint8Array(32);for(window.crypto.getRandomValues(Fi),bi=0;bi<32;++bi)di[Ti++]=Fi[bi]}else if("Netscape"==navigator.appName&&navigator.appVersion<"5"){var Bi=window.crypto.random(32);for(bi=0;bi<Bi.length;++bi)di[Ti++]=255&Bi.charCodeAt(bi)}for(;Ti<xi;)bi=Math.floor(65536*Math.random()),di[Ti++]=bi>>>8,di[Ti++]=255&bi;Ti=0,ii()}ni.prototype.nextBytes=ri,si.prototype.init=oi,si.prototype.next=hi;var xi=256;i=t.exports={default:e,BigInteger:e,SecureRandom:ni}}).call(this)},function(t,i,e){"use strict";function r(){return b}function n(){var t=new y("FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF",16),i=new y("FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC",16),e=new y("28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E93",16),r=new m(t,i,e);return{curve:r,G:r.decodePointHex("0432C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7BC3736A2F4F6779C59BDCEE36B692153D0A9877CC62A474002DF32E52139F0A0"),n:new y("FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123",16)}}function s(){var t=new y(B.bitLength(),d).mod(B.subtract(y.ONE)).add(y.ONE),i=a(t.toString(16),64),e=F.multiply(t);return{privateKey:i,publicKey:"04"+a(e.getX().toBigInteger().toString(16),64)+a(e.getY().toBigInteger().toString(16),64)}}function o(t){var i=new y(t,16),e=a(i.toString(16),64),r=F.multiply(i);return{privateKey:e,publicKey:"04"+a(r.getX().toBigInteger().toString(16),64)+a(r.getY().toBigInteger().toString(16),64)}}function h(t){t=unescape(encodeURIComponent(t));for(var i=t.length,e=[],r=0;r<i;r++)e[r>>>2]|=(255&t.charCodeAt(r))<<24-r%4*8;for(var n=[],s=0;s<i;s++){var o=e[s>>>2]>>>24-s%4*8&255;n.push((o>>>4).toString(16)),n.push((15&o).toString(16))}return n.join("")}function u(t){return Array.prototype.map.call(new Uint8Array(t),function(t){return("00"+t.toString(16)).slice(-2)}).join("")}function a(t,i){return t.length>=i?t:new Array(i-t.length+1).join("0")+t}function f(t){for(var i=[],e=0,r=0;r<2*t.length;r+=2)i[r>>>3]|=parseInt(t[e],10)<<24-r%8*4,e++;for(var n=[],s=0;s<t.length;s++){var o=i[s>>>2]>>>24-s%4*8&255;n.push((o>>>4).toString(16)),n.push((15&o).toString(16))}return n.join("")}function l(t){for(var i=[],e=0,r=0;r<2*t.length;r+=2)i[r>>>3]|=parseInt(t[e],10)<<24-r%8*4,e++;try{for(var n=[],s=0;s<t.length;s++){var o=i[s>>>2]>>>24-s%4*8&255;n.push(String.fromCharCode(o))}return decodeURIComponent(escape(n.join("")))}catch(t){throw new Error("Malformed UTF-8 data")}}function c(t){var i=[],e=t.length;e%2!=0&&(t=a(t,e+1)),e=t.length;for(var r=0;r<e;r+=2)i.push(parseInt(t.substr(r,2),16));return i}var p=e(0),y=p.BigInteger,v=p.SecureRandom,g=e(5),m=g.ECCurveFp,d=new v,T=n(),b=T.curve,F=T.G,B=T.n;t.exports={getGlobalCurve:r,generateEcparam:n,generateKeyPairHex:s,generateKeyPairHexByHashValue:o,parseUtf8StringToHex:h,parseArrayBufferToHex:u,leftPad:a,arrayToHex:f,arrayToUtf8:l,hexToArray:c}},function(t,i,e){"use strict";function r(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}var n=function(){function t(t,i){for(var e=0;e<i.length;e++){var r=i[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(i,e,r){return e&&t(i.prototype,e),r&&t(i,r),i}}(),s=e(0),o=s.BigInteger,h=e(1),u=function(t,i,e,r,n){for(var s=0;s<n;s++)e[r+s]=t[i+s]},a={minValue:-2147483648,maxValue:2147483647,parse:function(t){if(t<this.minValue){for(var i=Number(-t),e=i.toString(2),r=e.substr(e.length-31,31),n="",s=0;s<r.length;s++){n+="0"===r.substr(s,1)?"1":"0"}return parseInt(n,2)+1}if(t>this.maxValue){for(var o=Number(t),h=o.toString(2),u=h.substr(h.length-31,31),a="",f=0;f<u.length;f++){a+="0"===u.substr(f,1)?"1":"0"}return-(parseInt(a,2)+1)}return t},parseByte:function(t){if(t<0){for(var i=Number(-t),e=i.toString(2),r=e.substr(e.length-8,8),n="",s=0;s<r.length;s++){n+="0"===r.substr(s,1)?"1":"0"}return(parseInt(n,2)+1)%256}if(t>255){var o=Number(t),h=o.toString(2);return parseInt(h.substr(h.length-8,8),2)}return t}},f=function(){function t(){r(this,t),this.xBuf=[],this.xBufOff=0,this.byteCount=0,this.DIGEST_LENGTH=32,this.v0=[1937774191,1226093241,388252375,3666478592,2842636476,372324522,3817729613,2969243214],this.v0=[1937774191,1226093241,388252375,-628488704,-1452330820,372324522,-477237683,-1325724082],this.v=new Array(8),this.v_=new Array(8),this.X0=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.X=new Array(68),this.xOff=0,this.T_00_15=2043430169,this.T_16_63=2055708042,arguments.length>0?this.initDigest(arguments.length<=0?void 0:arguments[0]):this.init()}return n(t,[{key:"init",value:function(){this.xBuf=new Array(4),this.reset()}},{key:"initDigest",value:function(t){this.xBuf=[].concat(t.xBuf),this.xBufOff=t.xBufOff,this.byteCount=t.byteCount,u(t.X,0,this.X,0,t.X.length),this.xOff=t.xOff,u(t.v,0,this.v,0,t.v.length)}},{key:"getDigestSize",value:function(){return this.DIGEST_LENGTH}},{key:"reset",value:function(){this.byteCount=0,this.xBufOff=0;for(var t=Object.keys(this.xBuf),i=0,e=t.length;i<e;i++)this.xBuf[t[i]]=null;u(this.v0,0,this.v,0,this.v0.length),this.xOff=0,u(this.X0,0,this.X,0,this.X0.length)}},{key:"processBlock",value:function(){var t=void 0,i=this.X,e=new Array(64);for(t=16;t<68;t++)i[t]=this.p1(i[t-16]^i[t-9]^this.rotate(i[t-3],15))^this.rotate(i[t-13],7)^i[t-6];for(t=0;t<64;t++)e[t]=i[t]^i[t+4];var r=this.v,n=this.v_;u(r,0,n,0,this.v0.length);var s=void 0,o=void 0,h=void 0,f=void 0,l=void 0;for(t=0;t<16;t++)l=this.rotate(n[0],12),s=a.parse(a.parse(l+n[4])+this.rotate(this.T_00_15,t)),s=this.rotate(s,7),o=s^l,h=a.parse(a.parse(this.ff_00_15(n[0],n[1],n[2])+n[3])+o)+e[t],f=a.parse(a.parse(this.gg_00_15(n[4],n[5],n[6])+n[7])+s)+i[t],n[3]=n[2],n[2]=this.rotate(n[1],9),n[1]=n[0],n[0]=h,n[7]=n[6],n[6]=this.rotate(n[5],19),n[5]=n[4],n[4]=this.p0(f);for(t=16;t<64;t++)l=this.rotate(n[0],12),s=a.parse(a.parse(l+n[4])+this.rotate(this.T_16_63,t)),s=this.rotate(s,7),o=s^l,h=a.parse(a.parse(this.ff_16_63(n[0],n[1],n[2])+n[3])+o)+e[t],f=a.parse(a.parse(this.gg_16_63(n[4],n[5],n[6])+n[7])+s)+i[t],n[3]=n[2],n[2]=this.rotate(n[1],9),n[1]=n[0],n[0]=h,n[7]=n[6],n[6]=this.rotate(n[5],19),n[5]=n[4],n[4]=this.p0(f);for(t=0;t<8;t++)r[t]^=a.parse(n[t]);this.xOff=0,u(this.X0,0,this.X,0,this.X0.length)}},{key:"processWord",value:function(t,i){var e=t[i]<<24;e|=(255&t[++i])<<16,e|=(255&t[++i])<<8,e|=255&t[++i],this.X[this.xOff]=e,16==++this.xOff&&this.processBlock()}},{key:"processLength",value:function(t){this.xOff>14&&this.processBlock(),this.X[14]=this.urShiftLong(t,32),this.X[15]=4294967295&t}},{key:"intToBigEndian",value:function(t,i,e){i[e]=255&a.parseByte(this.urShift(t,24)),i[++e]=255&a.parseByte(this.urShift(t,16)),i[++e]=255&a.parseByte(this.urShift(t,8)),i[++e]=255&a.parseByte(t)}},{key:"doFinal",value:function(t,i){this.finish();for(var e=0;e<8;e++)this.intToBigEndian(this.v[e],t,i+4*e);return this.reset(),this.DIGEST_LENGTH}},{key:"update",value:function(t){this.xBuf[this.xBufOff++]=t,this.xBufOff===this.xBuf.length&&(this.processWord(this.xBuf,0),this.xBufOff=0),this.byteCount++}},{key:"blockUpdate",value:function(t,i,e){for(;0!==this.xBufOff&&e>0;)this.update(t[i]),i++,e--;for(;e>this.xBuf.length;)this.processWord(t,i),i+=this.xBuf.length,e-=this.xBuf.length,this.byteCount+=this.xBuf.length;for(;e>0;)this.update(t[i]),i++,e--}},{key:"finish",value:function(){var t=this.byteCount<<3;for(this.update(128);0!==this.xBufOff;)this.update(0);this.processLength(t),this.processBlock()}},{key:"rotate",value:function(t,i){return t<<i|this.urShift(t,32-i)}},{key:"p0",value:function(t){return t^this.rotate(t,9)^this.rotate(t,17)}},{key:"p1",value:function(t){return t^this.rotate(t,15)^this.rotate(t,23)}},{key:"ff_00_15",value:function(t,i,e){return t^i^e}},{key:"ff_16_63",value:function(t,i,e){return t&i|t&e|i&e}},{key:"gg_00_15",value:function(t,i,e){return t^i^e}},{key:"gg_16_63",value:function(t,i,e){return t&i|~t&e}},{key:"urShift",value:function(t,i){return(t>a.maxValue||t<a.minValue)&&(t=a.parse(t)),t>>>i}},{key:"urShiftLong",value:function(t,i){var e=void 0,r=new o;if(r.fromInt(t),r.signum()>=0)e=r.shiftRight(i).intValue();else{var n=new o;n.fromInt(2);var s=~i,h="";if(s<0){for(var u=64+s,a=0;a<u;a++)h+="0";var f=new o;f.fromInt(t>>i);var l=new o("10"+h,2);h=l.toRadix(10);e=l.add(f).toRadix(10)}else h=n.shiftLeft(~i).intValue(),e=(t>>i)+h}return e}},{key:"getZ",value:function(t,i){var e=h.parseUtf8StringToHex("1234567812345678"),r=4*e.length;this.update(r>>8&255),this.update(255&r);var n=h.hexToArray(e);this.blockUpdate(n,0,n.length);var s=h.hexToArray(t.curve.a.toBigInteger().toRadix(16)),o=h.hexToArray(t.curve.b.toBigInteger().toRadix(16)),u=h.hexToArray(t.getX().toBigInteger().toRadix(16)),a=h.hexToArray(t.getY().toBigInteger().toRadix(16)),f=h.hexToArray(i.substr(0,64)),l=h.hexToArray(i.substr(64,64));this.blockUpdate(s,0,s.length),this.blockUpdate(o,0,o.length),this.blockUpdate(u,0,u.length),this.blockUpdate(a,0,a.length),this.blockUpdate(f,0,f.length),this.blockUpdate(l,0,l.length);var c=new Array(this.getDigestSize());return this.doFinal(c,0),c}}]),t}();t.exports=f},function(t,i,e){"use strict";function r(t,i){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=new g;t=m.hexToArray(m.parseUtf8StringToHex(t)),i.length>128&&(i=i.substr(i.length-128));var n=i.substr(0,64),s=i.substr(64);i=r.createPoint(n,s);var o=r.initEncipher(i);r.encryptBlock(t);var h=m.arrayToHex(t),u=new Array(32);return r.doFinal(u),u=m.arrayToHex(u),e===B?o+h+u:o+u+h}function n(t,i){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=new g;i=new l(i,16);var n=t.substr(0,64),s=t.substr(0+n.length,64),o=n.length+s.length,h=t.substr(o,64),u=t.substr(o+64);e===B&&(h=t.substr(t.length-64),u=t.substr(o,t.length-o-64));var a=m.hexToArray(u),f=r.createPoint(n,s);r.initDecipher(i,f),r.decryptBlock(a);var c=new Array(32);if(r.doFinal(c),m.arrayToHex(c)===h)return m.arrayToUtf8(a);return""}function s(t,i){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=e.pointPool,n=e.der,s=e.hash,o=e.publicKey,f="string"==typeof t?m.parseUtf8StringToHex(t):m.parseArrayBufferToHex(t);s&&(o=o||u(i),f=h(f,o));var c=new l(i,16),y=new l(f,16),v=null,g=null,d=null;do{do{var T=void 0;T=r&&r.length?r.pop():a(),v=T.k,g=y.add(T.x1).mod(F)}while(g.equals(l.ZERO)||g.add(v).equals(F));d=c.add(l.ONE).modInverse(F).multiply(v.subtract(g.multiply(c))).mod(F)}while(d.equals(l.ZERO));return n?p(g,d):m.leftPad(g.toString(16),64)+m.leftPad(d.toString(16),64)}function o(t,i,e){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=r.der,s=r.hash,o="string"==typeof t?m.parseUtf8StringToHex(t):m.parseArrayBufferToHex(t);s&&(o=h(o,e));var u=void 0,a=void 0;if(n){var f=y(i);u=f.r,a=f.s}else u=new l(i.substring(0,64),16),a=new l(i.substring(64),16);var c=b.decodePointHex(e),p=new l(o,16),v=u.add(a).mod(F);if(v.equals(l.ZERO))return!1;var g=T.multiply(a).add(c.multiply(v)),d=p.add(g.getX().toBigInteger()).mod(F);return u.equals(d)}function h(t,i){var e=new v,r=(new v).getZ(T,i.substr(2,128)),n=m.hexToArray(m.arrayToHex(r).toString()),s=t,o=m.hexToArray(s),h=new Array(e.getDigestSize());return e.blockUpdate(n,0,n.length),e.blockUpdate(o,0,o.length),e.doFinal(h,0),m.arrayToHex(h).toString()}function u(t){var i=T.multiply(new l(t,16));return"04"+m.leftPad(i.getX().toBigInteger().toString(16),64)+m.leftPad(i.getY().toBigInteger().toString(16),64)}function a(){var t=m.generateKeyPairHex(),i=b.decodePointHex(t.publicKey);return t.k=new l(t.privateKey,16),t.x1=i.getX().toBigInteger(),t}var f=e(0),l=f.BigInteger,c=e(4),p=c.encodeDer,y=c.decodeDer,v=e(2),g=e(6),m=e(1),d=m.generateEcparam(),T=d.G,b=d.curve,F=d.n,B=0;t.exports={generateKeyPairHex:m.generateKeyPairHex,generateKeyPairHexByHashValue:m.generateKeyPairHexByHashValue,doEncrypt:r,doDecrypt:n,doSignature:s,doVerifySignature:o,getPoint:a}},function(t,i,e){"use strict";function r(t,i){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!i||"object"!=typeof i&&"function"!=typeof i?t:i}function n(t,i){if("function"!=typeof i&&null!==i)throw new TypeError("Super expression must either be null or a function, not "+typeof i);t.prototype=Object.create(i&&i.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),i&&(Object.setPrototypeOf?Object.setPrototypeOf(t,i):t.__proto__=i)}function s(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function o(t){var i=t.toString(16);if("-"!==i.substr(0,1))i.length%2==1?i="0"+i:i.match(/^[0-7]/)||(i="00"+i);else{var e=i.substr(1),r=e.length;r%2==1?r+=1:i.match(/^[0-7]/)||(r+=2);for(var n="",s=0;s<r;s++)n+="f";i=new g(n,16).xor(t).add(g.ONE).toString(16).replace(/^-/,"")}return i}function h(t,i){if("8"!==t.substring(i+2,i+3))return 1;var e=parseInt(t.substring(i+3,i+4),10);return 0===e?-1:e>0&&e<10?e+1:-2}function u(t,i){var e=h(t,i);return e<1?"":t.substring(i+2,i+2+2*e)}function a(t,i){var e=u(t,i);if(""===e)return-1;var r=void 0;return r=parseInt(e.substring(0,1),10)<8?new g(e,16):new g(e.substring(2),16),r.intValue()}function f(t,i){var e=h(t,i);return e<0?e:i+2*(e+1)}function l(t,i){var e=f(t,i),r=a(t,i);return t.substring(e,e+2*r)}function c(t,i){return f(t,i)+2*a(t,i)}function p(t,i){var e=[],r=f(t,i);e.push(r);for(var n=a(t,i),s=r,o=0;;){var h=c(t,s);if(null==h||h-r>=2*n)break;if(o>=200)break;e.push(h),s=h,o++}return e}var y=function(){function t(t,i){for(var e=0;e<i.length;e++){var r=i[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(i,e,r){return e&&t(i.prototype,e),r&&t(i,r),i}}(),v=e(0),g=v.BigInteger,m=function(){function t(){s(this,t),this.isModified=!0,this.hTLV=null,this.hT="00",this.hL="00",this.hV=""}return y(t,[{key:"getLengthHexFromValue",value:function(){var t=this.hV.length/2,i=t.toString(16);return i.length%2==1&&(i="0"+i),t<128?i:(128+i.length/2).toString(16)+i}},{key:"getEncodedHex",value:function(){return(null==this.hTLV||this.isModified)&&(this.hV=this.getFreshValueHex(),this.hL=this.getLengthHexFromValue(),this.hTLV=this.hT+this.hL+this.hV,this.isModified=!1),this.hTLV}},{key:"getFreshValueHex",value:function(){return""}}]),t}(),d=function(t){function i(t){s(this,i);var e=r(this,(i.__proto__||Object.getPrototypeOf(i)).call(this));return e.hT="02",t&&t.bigint&&(e.hTLV=null,e.isModified=!0,e.hV=o(t.bigint)),e}return n(i,t),y(i,[{key:"getFreshValueHex",value:function(){return this.hV}}]),i}(m),T=function(t){function i(t){s(this,i);var e=r(this,(i.__proto__||Object.getPrototypeOf(i)).call(this));return e.hT="30",e.asn1Array=[],t&&t.array&&(e.asn1Array=t.array),e}return n(i,t),y(i,[{key:"getFreshValueHex",value:function(){for(var t="",i=0;i<this.asn1Array.length;i++){t+=this.asn1Array[i].getEncodedHex()}return this.hV=t,this.hV}}]),i}(m);t.exports={encodeDer:function(t,i){var e=new d({bigint:t}),r=new d({bigint:i});return new T({array:[e,r]}).getEncodedHex()},decodeDer:function(t){var i=p(t,0),e=i[0],r=i[1],n=l(t,e),s=l(t,r);return{r:new g(n,16),s:new g(s,16)}}}},function(t,i,e){"use strict";function r(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}var n=function(){function t(t,i){for(var e=0;e<i.length;e++){var r=i[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(i,e,r){return e&&t(i.prototype,e),r&&t(i,r),i}}(),s=e(0),o=s.BigInteger,h=new o("3"),u=function(){function t(i,e){r(this,t),this.x=e,this.q=i}return n(t,[{key:"equals",value:function(t){return t===this||this.q.equals(t.q)&&this.x.equals(t.x)}},{key:"toBigInteger",value:function(){return this.x}},{key:"negate",value:function(){return new t(this.q,this.x.negate().mod(this.q))}},{key:"add",value:function(i){return new t(this.q,this.x.add(i.toBigInteger()).mod(this.q))}},{key:"subtract",value:function(i){return new t(this.q,this.x.subtract(i.toBigInteger()).mod(this.q))}},{key:"multiply",value:function(i){return new t(this.q,this.x.multiply(i.toBigInteger()).mod(this.q))}},{key:"divide",value:function(i){return new t(this.q,this.x.multiply(i.toBigInteger().modInverse(this.q)).mod(this.q))}},{key:"square",value:function(){return new t(this.q,this.x.square().mod(this.q))}}]),t}(),a=function(){function t(i,e,n,s){r(this,t),this.curve=i,this.x=e,this.y=n,this.z=null==s?o.ONE:s,this.zinv=null}return n(t,[{key:"getX",value:function(){return null===this.zinv&&(this.zinv=this.z.modInverse(this.curve.q)),this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q))}},{key:"getY",value:function(){return null===this.zinv&&(this.zinv=this.z.modInverse(this.curve.q)),this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q))}},{key:"equals",value:function(t){return t===this||(this.isInfinity()?t.isInfinity():t.isInfinity()?this.isInfinity():!!t.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(t.z)).mod(this.curve.q).equals(o.ZERO)&&t.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(t.z)).mod(this.curve.q).equals(o.ZERO))}},{key:"isInfinity",value:function(){return null===this.x&&null===this.y||this.z.equals(o.ZERO)&&!this.y.toBigInteger().equals(o.ZERO)}},{key:"negate",value:function(){return new t(this.curve,this.x,this.y.negate(),this.z)}},{key:"add",value:function(i){if(this.isInfinity())return i;if(i.isInfinity())return this;var e=this.x.toBigInteger(),r=this.y.toBigInteger(),n=this.z,s=i.x.toBigInteger(),h=i.y.toBigInteger(),u=i.z,a=this.curve.q,f=e.multiply(u).mod(a),l=s.multiply(n).mod(a),c=f.subtract(l),p=r.multiply(u).mod(a),y=h.multiply(n).mod(a),v=p.subtract(y);if(o.ZERO.equals(c))return o.ZERO.equals(v)?this.twice():this.curve.infinity;var g=f.add(l),m=n.multiply(u).mod(a),d=c.square().mod(a),T=c.multiply(d).mod(a),b=m.multiply(v.square()).subtract(g.multiply(d)).mod(a),F=c.multiply(b).mod(a),B=v.multiply(d.multiply(f).subtract(b)).subtract(p.multiply(T)).mod(a),x=T.multiply(m).mod(a);return new t(this.curve,this.curve.fromBigInteger(F),this.curve.fromBigInteger(B),x)}},{key:"twice",value:function(){if(this.isInfinity())return this;if(!this.y.toBigInteger().signum())return this.curve.infinity;var i=this.x.toBigInteger(),e=this.y.toBigInteger(),r=this.z,n=this.curve.q,s=this.curve.a.toBigInteger(),o=i.square().multiply(h).add(s.multiply(r.square())).mod(n),u=e.shiftLeft(1).multiply(r).mod(n),a=e.square().mod(n),f=a.multiply(i).multiply(r).mod(n),l=u.square().mod(n),c=o.square().subtract(f.shiftLeft(3)).mod(n),p=u.multiply(c).mod(n),y=o.multiply(f.shiftLeft(2).subtract(c)).subtract(l.shiftLeft(1).multiply(a)).mod(n),v=u.multiply(l).mod(n);return new t(this.curve,this.curve.fromBigInteger(p),this.curve.fromBigInteger(y),v)}},{key:"multiply",value:function(t){if(this.isInfinity())return this;if(!t.signum())return this.curve.infinity;for(var i=t.multiply(h),e=this.negate(),r=this,n=i.bitLength()-2;n>0;n--){r=r.twice();var s=i.testBit(n);s!==t.testBit(n)&&(r=r.add(s?this:e))}return r}}]),t}(),f=function(){function t(i,e,n){r(this,t),this.q=i,this.a=this.fromBigInteger(e),this.b=this.fromBigInteger(n),this.infinity=new a(this,null,null)}return n(t,[{key:"equals",value:function(t){return t===this||this.q.equals(t.q)&&this.a.equals(t.a)&&this.b.equals(t.b)}},{key:"fromBigInteger",value:function(t){return new u(this.q,t)}},{key:"decodePointHex",value:function(t){switch(parseInt(t.substr(0,2),16)){case 0:return this.infinity;case 2:case 3:return null;case 4:case 6:case 7:var i=(t.length-2)/2,e=t.substr(2,i),r=t.substr(i+2,i);return new a(this,this.fromBigInteger(new o(e,16)),this.fromBigInteger(new o(r,16)));default:return null}}}]),t}();t.exports={ECPointFp:a,ECCurveFp:f}},function(t,i,e){"use strict";function r(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}var n=function(){function t(t,i){for(var e=0;e<i.length;e++){var r=i[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(i,e,r){return e&&t(i.prototype,e),r&&t(i,r),i}}(),s=e(0),o=s.BigInteger,h=e(2),u=e(1),a=function(){function t(){r(this,t),this.ct=1,this.p2=null,this.sm3keybase=null,this.sm3c3=null,this.key=new Array(32),this.keyOff=0}return n(t,[{key:"reset",value:function(){this.sm3keybase=new h,this.sm3c3=new h;var t=u.hexToArray(this.p2.getX().toBigInteger().toRadix(16)),i=u.hexToArray(this.p2.getY().toBigInteger().toRadix(16));this.sm3keybase.blockUpdate(t,0,t.length),this.sm3c3.blockUpdate(t,0,t.length),this.sm3keybase.blockUpdate(i,0,i.length),this.ct=1,this.nextKey()}},{key:"nextKey",value:function(){var t=new h(this.sm3keybase);t.update(this.ct>>24&255),t.update(this.ct>>16&255),t.update(this.ct>>8&255),t.update(255&this.ct),t.doFinal(this.key,0),this.keyOff=0,this.ct++}},{key:"initEncipher",value:function(t){var i=u.generateKeyPairHex(),e=new o(i.privateKey,16),r=i.publicKey;return this.p2=t.multiply(e),this.reset(),r.length>128&&(r=r.substr(r.length-128)),r}},{key:"encryptBlock",value:function(t){this.sm3c3.blockUpdate(t,0,t.length);for(var i=0;i<t.length;i++)this.keyOff===this.key.length&&this.nextKey(),t[i]^=255&this.key[this.keyOff++]}},{key:"initDecipher",value:function(t,i){this.p2=i.multiply(t),this.reset()}},{key:"decryptBlock",value:function(t){for(var i=0;i<t.length;i++)this.keyOff===this.key.length&&this.nextKey(),t[i]^=255&this.key[this.keyOff++];this.sm3c3.blockUpdate(t,0,t.length)}},{key:"doFinal",value:function(t){var i=u.hexToArray(this.p2.getY().toBigInteger().toRadix(16));this.sm3c3.blockUpdate(i,0,i.length),this.sm3c3.doFinal(t,0),this.reset()}},{key:"createPoint",value:function(t,i){var e="04"+t+i;return u.getGlobalCurve().decodePointHex(e)}}]),t}();t.exports=a}]);