Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BREAKING: New application implementation #13

Merged
merged 43 commits into from
Jun 5, 2024
Merged

BREAKING: New application implementation #13

merged 43 commits into from
Jun 5, 2024

Conversation

moleus
Copy link
Owner

@moleus moleus commented May 25, 2024

What's new

  • Use the same API as a target (i.e: /rest/v1/forpost/cameras). Old API is removed, /cameras won't work anymore
  • refactor all handlers
  • password authentication
  • better error handling
  • automatically refresh AccessToken
  • auto-redirect to /login page when can't refresh AccessToken
  • new credentials file format (store.go)
  • extensive logging (--log-level=debug)

Breaking changes:

  • Old API is replaced with new one, /cameras, /door, etc. won't work anymore
  • Door opens via POST request instead of GET
  • replace /stream?{cameraId} with /stream/{cameraId} to as close as possible to an original API
  • new snapshot url format: `rest/v1/places/{placeId}/accesscontrols/{accessControlId}/videosnapshots

fixes: ad#13

@twocolors
Copy link

twocolors commented May 28, 2024

i test docker

domru:devel-new-implementation

and see error when use login/password (in web - not console)

failed to login with password: auth password request: failed to decode response. Body: '<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>..</title> <meta http-equiv="refresh" content="10;URL=/ciez2a" /> </head> <body> <script type="text/javascript"> // // !function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports):"function"==typeof define&&define.amd?define(["exports"],i):i(t.t={})}(this,function(t){"use strict";var e="0123456789abcdefghijklmnopqrstuvwxyz";function a(t){return e.charAt(t)}function i(t,i){return t&i}function u(t,i){return t|i}function r(t,i){return t^i}function n(t,

and two slash
in link https://myhome.proptech.ru/auth/v2/auth//password

@moleus
Copy link
Owner Author

moleus commented May 28, 2024

Oh, thx. I haven't checked login/password authentication yet. Will take a look in a week or so

@moleus
Copy link
Owner Author

moleus commented May 30, 2024

html is returned by Varity server. It's a bot protection software. User guide - https://disk.yandex.ru/i/RVPkZX1EOVGSeA

Currently I don't know how to overcome it. When I send request using curl or go, it always returns html page instead of json.

As far as I understand this software checks headers, SSL handshake etc. Body is not processed.

curl -X POST 'https://myhome.proptech.ru/auth/v2/auth/{account_id}/password' \
-H 'User-Agent: Google sdkgphone64x8664 | Android 14 | erth | 8.9.2 (8090200) |  | null | 10c99d90-9899-4a25-926f-067b34bc4a7f | null' \
-H 'Content-Type: application/json; charset=UTF-8' \
-H 'Connection: Keep-Alive' \
-H 'Accept-Encoding: gzip'

If Variti checks pass then the request is sent to nginx server which returns json with credentials

@twocolors
Copy link

i will try sniffing first req for password use https://requestly.com/blog/modify-http-traffic-from-android-apps/

@moleus
Copy link
Owner Author

moleus commented May 30, 2024

i will try sniffing first req for password use https://requestly.com/blog/modify-http-traffic-from-android-apps/

I have already sniffed traffic using mitmproxy from domru application running emulator. I suspect that the Variti software is looking at TLS handshake and blocks based on TLS Fingerprint.

Currently, I'm trying to modify Client Hello using utls library to make Hello Message from go look like android's one

Golang's ClientHello has a very unique fingerprint, which especially sticks out on mobile clients, where Golang is not too popular yet. Some members of anti-censorship community are concerned that their tools could be trivially blocked based on ClientHello with relatively small collateral damage. There are multiple solutions to this issue.

Here is the client hello from android application:
image

@moleus
Copy link
Owner Author

moleus commented May 30, 2024

Here is the POST request to get token:
image
image
image

@twocolors
Copy link

I don't think this is the main problem.

authorization via SMS works and everything else works

but I could be wrong...

@moleus
Copy link
Owner Author

moleus commented Jun 1, 2024

@twocolors Hi! Finally, I've managed to defeat bot protection and random errors. Also, updated README.

May I ask you to check that it works in your setup?

@twocolors
Copy link

warning on run

dietpi@kubik3:~$ sudo docker compose logs -f --tail=150 domru 
domru  | 2024/06/02 16:32:21 Credentials file is not set
domru  | Usage of /ko-app/domru:
domru  |       --credentials string   credentials file path (i.e: /usr/domofon/credentials.yaml
domru  |       --login int            dom.ru login or phone (i.e: 71231234567)
domru  |       --operator int         operator id
domru  |       --port int             listen port (default 18000)
domru  |       --refresh string       dom.ru refresh token
domru  |       --token string         dom.ru token
domru  | 2024/06/02 16:32:21 Operator id is not set. Set your value
domru  | Usage of /ko-app/domru:
domru  |       --credentials string   credentials file path (i.e: /usr/domofon/credentials.yaml
domru  |       --login int            dom.ru login or phone (i.e: 71231234567)
domru  |       --operator int         operator id
domru  |       --port int             listen port (default 18000)
domru  |       --refresh string       dom.ru refresh token
domru  |       --token string         dom.ru token
domru  | 2024/06/02 16:32:21 Listening on %!s(int=18000)
  • if error login | password see error on web
?"("+this.sub.length+" elem)":this.stream.R(i,i+n,t);case 4:return this.sub?"("+this.sub.length+" elem)":this.stream.q(i,i+n,t);case 6:return this.stream.D(i,i+n,t);case 16:case 17:return null!==this.sub?"("+this.sub.length+" elem)":"(no elem)";case 12:return E(this.stream.S(i,i+n),t);case 18:case 19:case 20:case 21:case 22:case 26:return E(this.stream.I(i,i+n),t);case 30:return E(this.stream.T(i,i+n),t);case 23:case 24:return this.stream.A(i,i+n,23==this.tag.L)}}return null},c.prototype.toString=function(){return this.N()+"@"+this.stream.p+"[header:"+this._+",length:"+this.length+",sub:"+(null===this.sub?"null":this.sub.length)+"]"},c.prototype.C=function(t){var i=(t=void 0===t?"":t)+this.N()+" @"+this.stream.p;if(0<=this.length&&(i+="+"),i+=this.length,this.tag.Z?i+=" (constructed)":!this.tag.k()||3!=this.tag.L&&4!=this.tag.L||null===this.sub||(i+=" (encapsulates)"),i+="\n",null!==this.sub){t+=" ";for(var n=0,s=this.sub.length;n<s;++n)i+=this.sub[n].C(t)}return i},c.prototype.F=function(){return this.stream.p},c.prototype.U=function(){return this.stream.p+this._},c.prototype.G=function(){return this.stream.p+this._+Math.abs(this.length)},c.prototype.Y=function(){return this.stream.m(this.F(),this.G(),!0)},c.$=function(t){var i=t.get(),n=127&i;if(n==i)return n;if(6<n)throw new Error("Length over 48 bits not supported at position "+(t.p-1));if(0===n)return null;for(var s=i=0;s<n;++s)i=256*i+t.get();return i},c.prototype.P=function(){var t=this.Y(),i=2*this._,n=2*this.length;return t.substr(i,n)},c.decode=function(t){var s=t instanceof D?t:new D(t,0),i=new D(s),n=new R(s),r=c.$(s),h=s.p,e=h-i.p,u=null,o=function(){var t=[];if(null!==r){for(var i=h+r;s.p<i;)t[t.length]=c.decode(s);if(s.p!=i)throw new Error("Content size is not correct for container starting at offset "+h)}else try{for(;;){var n=c.decode(s);if(n.tag.K())break;t[t.length]=n}r=h-s.p}catch(t){throw new Error("Exception while decoding undefined length content: "+t)}return t};if(n.Z)u=o();else if(n.k()&&(3==n.L||4==n.L))try{if(3==n.L&&0!=s.get())throw new Error("BIT STRINGs with unused bits cannot encapsulate.");for(var u=o(),f=0;f<u.length;++f)if(u[f].tag.K())throw new Error("EOC is not supposed to be actual content.")}catch(t){u=null}if(null===u){if(null===r)throw new Error("We can't skip over an invalid tag with undefined length at offset "+h);s.p=h+Math.abs(r)}return new c(i,e,r,n,u)},c}(),R=function(){function t(t){var i=t.get();if(this.j=i>>6,this.Z=0!=(32&i),this.L=31&i,31==this.L){for(var n=new y;i=t.get(),n.o(128,127&i),128&i;);this.L=n.v()}}return t.prototype.k=function(){return 0===this.j},t.prototype.K=function(){return 0===this.j&&0===this.L},t}(),B=[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],A=(1<<26)/B[B.length-1],O=function(){function p(t,i,n){null!=t&&("number"==typeof t?this.V(t,i,n):null==i&&"string"!=typeof t?this.H(t,256):this.H(t,i))}return p.prototype.toString=function(t){if(this.s<0)return"-"+this.W().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.X(t);i=2}var n,s=(1<<i)-1,r=!1,h="",e=this.J,u=this.tt-e*this.tt%i;if(0<e--)for(u<this.tt&&0<(n=this[e]>>u)&&(r=!0,h=a(n));0<=e;)u<i?(n=(this[e]&(1<<u)-1)<<i-u,n|=this[--e]>>(u+=this.tt-i)):(n=this[e]>>(u-=i)&s,u<=0&&(u+=this.tt,--e)),(r=0<n||r)&&(h+=a(n));return r?h:"0"},p.prototype.W=function(){var t=M();return p.ZERO.it(this,t),t},p.prototype.abs=function(){return this.s<0?this.W():this},p.prototype.nt=function(t){var i=this.s-t.s;if(0!=i)return i;var n=this.J;if(0!=(i=n-t.J))return this.s<0?-i:i;for(;0<=--n;)if(0!=(i=this[n]-t[n]))return i;return 0},p.prototype.st=function(){return this.J<=0?0:this.tt*(this.J-1)+U(this[this.J-1]^this.s&this.rt)},p.prototype.ht=function(t){var i=M();return this.abs().et(t,null,i),this.s<0&&0<i.nt(p.ZERO)&&t.it(i,i),i},p.prototype.ut=function(t,i){i=new(t<256||i.ot()?I:N)(i);return this.exp(t,i)},p.prototype.clone=function(){var t=M();return this.ft(t),t},p.prototype.ct=function(){if(this.s<0){if(1==this.J)return this[0]-this.vt;if(0==this.J)return-1}else{if(1==this.J)return this[0];if(0==this.J)return 0}return(this[1]&(1<<32-this.tt)-1)<<this.tt|this[0]},p.prototype.lt=function(){return 0==this.J?this.s:this[0]<<24>>24},p.prototype.wt=function(){return 0==this.J?this.s:this[0]<<16>>16},p.prototype.dt=function(){return this.s<0?-1:this.J<=0||1==this.J&&this[0]<=0?0:1},p.prototype.gt=function(){var t=this.J,i=[];i[0]=this.s;var n,s=this.tt-t*this.tt%8,r=0;if(0<t--)for(s<this.tt&&(n=this[t]>>s)!=(this.s&this.rt)>>s&&(i[r++]=n|this.s<<this.tt-s);0<=t;)s<8?(n=(this[t]&(1<<s)-1)<<8-s,n|=this[--t]>>(s+=this.tt-8)):(n=this[t]>>(s-=8)&255,s<=0&&(s+=this.tt,--t)),0!=(128&n)&&(n|=-256),0==r&&(128&this.s)!=(128&n)&&++r,(0<r||n!=this.s)&&(i[r++]=n);return i},p.prototype.equals=function(t){return 0==this.nt(t)},p.prototype.min=function(t){return this.nt(t)<0?this:t},p.prototype.max=function(t){return 0<this.nt(t)?this:t},p.prototype.and=function(t){var n=M();return this.Et(t,i,n),n},p.prototype.or=function(t){var i=M();return this.Et(t,u,i),i},p.prototype.xor=function(t){var i=M();return this.Et(t,r,i),i},p.prototype.Mt=function(t){var i=M();return this.Et(t,n,i),i},p.prototype.bt=function(){for(var t=M(),i=0;i<this.J;++i)t[i]=this.rt&~this[i];return t.J=this.J,t.s=~this.s,t},p.prototype.shiftLeft=function(t){var i=M();return t<0?this.Ot(-t,i):this.yt(t,i),i},p.prototype.It=function(t){var i=M();return t<0?this.yt(-t,i):this.Ot(t,i),i},p.prototype.St=function(){for(var t=0;t<this.J;++t)if(0!=this[t])return t*this.tt+s(this[t]);return this.s<0?this.J*this.tt:-1},p.prototype.Tt=function(){for(var t=0,i=this.s&this.rt,n=0;n<this.J;++n)t+=o(this[n]^i);return t},p.prototype.At=function(t){var i=Math.floor(t/this.tt);return i>=this.J?0!=this.s:0!=(this[i]&1<<t%this.tt)},p.prototype.Bt=function(t){return this.Rt(t,u)},p.prototype.qt=function(t){return this.Rt(t,n)},p.prototype.xt=function(t){return this.Rt(t,r)},p.prototype.add=function(t){var i=M();return this.Dt(t,i),i},p.prototype._t=function(t){var i=M();return this.it(t,i),i},p.prototype.multiply=function(t){var i=M();return this.Nt(t,i),i},p.prototype.jt=function(t){var i=M();return this.et(t,i,null),i},p.prototype.Lt=function(t){var i=M();return this.et(t,null,i),i},p.prototype.Ut=function(t){var i=M(),n=M();return this.et(t,i,n),[i,n]},p.prototype.kt=function(t,i){var n=t.st(),s=F(1);if(n<=0)return s;var r=n<18?1:n<48?3:n<144?4:n<768?5:6,h=new(n<8?I:i.ot()?P:N)(i),e=[],u=3,o=r-1,f=(1<<r)-1;if(e[1]=h.Ct(this),1<r){var c=M();for(h.Zt(e[1],c);u<=f;)e[u]=M(),h.Ft(c,e[u-2],e[u]),u+=2}for(var a,v,l=t.J-1,w=!0,d=M(),n=U(t[l])-1;0<=l;){for(o<=n?a=t[l]>>n-o&f:(a=(t[l]&(1<<n+1)-1)<<o-n,0<l&&(a|=t[l-1]>>this.tt+n-o)),u=r;0==(1&a);)a>>=1,--u;if((n-=u)<0&&(n+=this.tt,--l),w)e[a].ft(s),w=!1;else{for(;1<u;)h.Zt(s,d),h.Zt(d,s),u-=2;0<u?h.Zt(s,d):(v=s,s=d,d=v),h.Ft(d,e[a],s)}for(;0<=l&&0==(t[l]&1<<n);)h.Zt(s,d),v=s,s=d,d=v,--n<0&&(n=this.tt-1,--l)}return h.Gt(s)},p.prototype.Yt=function(t){var i=t.ot();if(this.ot()&&i||0==t.dt())return p.ZERO;for(var n=t.clone(),s=this.clone(),r=F(1),h=F(0),e=F(0),u=F(1);0!=n.dt();){for(;n.ot();)n.Ot(1,n),i?(r.ot()&&h.ot()||(r.Dt(this,r),h.it(t,h)),r.Ot(1,r)):h.ot()||h.it(t,h),h.Ot(1,h);for(;s.ot();)s.Ot(1,s),i?(e.ot()&&u.ot()||(e.Dt(this,e),u.it(t,u)),e.Ot(1,e)):u.ot()||u.it(t,u),u.Ot(1,u);0<=n.nt(s)?(n.it(s,n),i&&r.it(e,r),h.it(u,h)):(s.it(n,s),i&&e.it(r,e),u.it(h,u))}return 0!=s.nt(p.ONE)?p.ZERO:0<=u.nt(t)?u._t(t):u.dt()<0&&(u.Dt(t,u),u.dt()<0)?u.add(t):u},p.prototype.pow=function(t){return this.exp(t,new V)},p.prototype.$t=function(t){var i=this.s<0?this.W():this.clone(),n=t.s<0?t.W():t.clone(),s=(i.nt(n)<0&&(t=i,i=n,n=t),i.St()),t=n.St();if(t<0)return i;for(0<(t=s<t?s:t)&&(i.Ot(t,i),n.Ot(t,n));0<i.dt();)0<(s=i.St())&&i.Ot(s,i),0<(s=n.St())&&n.Ot(s,n),0<=i.nt(n)?(i.it(n,i),i.Ot(1,i)):(n.it(i,n),n.Ot(1,n));return 0<t&&n.yt(t,n),n},p.prototype.Pt=function(t){var i,n=this.abs();if(1==n.J&&n[0]<=B[B.length-1]){for(i=0;i<B.length;++i)if(n[0]==B[i])return!0;return!1}if(n.ot())return!1;for(i=1;i<B.length;){for(var s=B[i],r=i+1;r<B.length&&s<A;)s*=B[r++];for(s=n.Kt(s);i<r;)if(s%B[i++]==0)return!1}return n.zt(t)},p.prototype.ft=function(t){for(var i=this.J-1;0<=i;--i)t[i]=this[i];t.J=this.J,t.s=this.s},p.prototype.Vt=function(t){this.J=1,this.s=t<0?-1:0,0<t?this[0]=t:t<-1?this[0]=t+this.vt:this.J=0},p.prototype.H=function(t,i){var n;if(16==i)n=4;else if(8==i)n=3;else if(256==i)n=8;else if(2==i)n=1;else if(32==i)n=5;else{if(4!=i)return void this.Ht(t,i);n=2}this.J=0,this.s=0;for(var s=t.length,r=!1,h=0;0<=--s;){var e=8==n?255&+t[s]:C(t,s);e<0?"-"==t.charAt(s)&&(r=!0):(r=!1,0==h?this[this.J++]=e:h+n>this.tt?(this[this.J-1]|=(e&(1<<this.tt-h)-1)<<h,this[this.J++]=e>>this.tt-h):this[this.J-1]|=e<<h,(h+=n)>=this.tt&&(h-=this.tt))}8==n&&0!=(128&+t[0])&&(this.s=-1,0<h)&&(this[this.J-1]|=(1<<this.tt-h)-1<<h),this.Wt(),r&&p.ZERO.it(this,this)},p.prototype.Wt=function(){for(var t=this.s&this.rt;0<this.J&&this[this.J-1]==t;)--this.J},p.prototype.Xt=function(t,i){for(var n=this.J-1;0<=n;--n)i[n+t]=this[n];for(n=t-1;0<=n;--n)i[n]=0;i.J=this.J+t,i.s=this.s},p.prototype.Jt=function(t,i){for(var n=t;n<this.J;++n)i[n-t]=this[n];i.J=Math.max(this.J-t,0),i.s=this.s},p.prototype.yt=function(t,i){for(var n=t%this.tt,s=this.tt-n,r=(1<<s)-1,h=Math.floor(t/this.tt),e=this.s<<n&this.rt,u=this.J-1;0<=u;--u)i[u+h+1]=this[u]>>s|e,e=(this[u]&r)<<n;for(u=h-1;0<=u;--u)i[u]=0;i[h]=e,i.J=this.J+h+1,i.s=this.s,i.Wt()},p.prototype.Ot=function(t,i){i.s=this.s;var n=Math.floor(t/this.tt);if(n>=this.J)i.J=0;else{var s=t%this.tt,r=this.tt-s,h=(1<<s)-1;i[0]=this[n]>>s;for(var e=n+1;e<this.J;++e)i[e-n-1]|=(this[e]&h)<<r,i[e-n]=this[e]>>s;0<s&&(i[this.J-n-1]|=(this.s&h)<<r),i.J=this.J-n,i.Wt()}},p.prototype.it=function(t,i){for(var n=0,s=0,r=Math.min(t.J,this.J);n<r;)s+=this[n]-t[n],i[n++]=s&this.rt,s>>=this.tt;if(t.J<this.J){for(s-=t.s;n<this.J;)s+=this[n],i[n++]=s&this.rt,s>>=this.tt;s+=this.s}else{for(s+=this.s;n<t.J;)s-=t[n],i[n++]=s&this.rt,s>>=this.tt;s-=t.s}i.s=s<0?-1:0,s<-1?i[n++]=this.vt+s:0<s&&(i[n++]=s),i.J=n,i.Wt()},p.prototype.Nt=function(t,i){var n=this.abs(),s=t.abs(),r=n.J;for(i.J=r+s.J;0<=--r;)i[r]=0;for(r=0;r<s.J;++r)i[r+n.J]=n.Qt(0,s[r],i,r,0,n.J);i.s=0,i.Wt(),this.s!=t.s&&p.ZERO.it(i,i)},p.prototype.ti=function(t){for(var i=this.abs(),n=t.J=2*i.J;0<=--n;)t[n]=0;for(n=0;n<i.J-1;++n){var s=i.Qt(n,i[n],t,2*n,0,1);(t[n+i.J]+=i.Qt(n+1,2*i[n],t,2*n+1,s,i.J-n-1))>=i.vt&&(t[n+i.J]-=i.vt,t[n+i.J+1]=1)}0<t.J&&(t[t.J-1]+=i.Qt(n,i[n],t,2*n,0,1)),t.s=0,t.Wt()},p.prototype.et=function(t,i,n){var s=t.abs();if(!(s.J<=0)){var r=this.abs();if(r.J<s.J)null!=i&&i.Vt(0),void(null!=n&&this.ft(n));else{null==n&&(n=M());var h=M(),e=this.s,t=t.s,u=this.tt-U(s[s.J-1]),o=(0<u?(s.yt(u,h),r.yt(u,n)):(s.ft(h),r.ft(n)),h.J),f=h[o-1];if(0!=f){var s=f*(1<<this.ii)+(1<o?h[o-2]>>this.ni:0),c=this.si/s,a=(1<<this.ii)/s,v=1<<this.ni,l=n.J,w=l-o,d=null==i?M():i;for(h.Xt(w,d),0<=n.nt(d)&&(n[n.J++]=1,n.it(d,n)),p.ONE.Xt(o,d),d.it(h,h);h.J<o;)h[h.J++]=0;for(;0<=--w;){var g=n[--l]==f?this.rt:Math.floor(n[l]*c+(n[l-1]+v)*a);if((n[l]+=h.Qt(0,g,n,w,0,o))<g)for(h.Xt(w,d),n.it(d,n);n[l]<--g;)n.it(d,n)}null!=i&&(n.Jt(o,i),e!=t)&&p.ZERO.it(i,i),n.J=o,n.Wt(),0<u&&n.Ot(u,n),e<0&&p.ZERO.it(n,n)}}}},p.prototype.ri=function(){var t,i;return this.J<1||0==(1&(t=this[0]))?0:0<(i=(i=(i=(i=(i=3&t)*(2-(15&t)*i)&15)*(2-(255&t)*i)&255)*(2-((65535&t)*i&65535))&65535)*(2-t*i%this.vt)%this.vt)?this.vt-i:-i},p.prototype.ot=function(){return 0==(0<this.J?1&this[0]:this.s)},p.prototype.exp=function(t,i){if(4294967295<t||t<1)return p.ONE;var n,s=M(),r=M(),h=i.Ct(this),e=U(t)-1;for(h.ft(s);0<=--e;)i.Zt(s,r),0<(t&1<<e)?i.Ft(r,h,s):(n=s,s=r,r=n);return i.Gt(s)},p.prototype.hi=function(t){return Math.floor(Math.LN2*this.tt/Math.log(t))},p.prototype.X=function(t){if(null==t&&(t=10),0==this.dt()||t<2||36<t)return"0";var i=this.hi(t),n=Math.pow(t,i),s=F(n),r=M(),h=M(),e="";for(this.et(s,r,h);0<r.dt();)e=(n+h.ct()).toString(t).substr(1)+e,r.et(s,r,h);return h.ct().toString(t)+e},p.prototype.Ht=function(t,i){this.Vt(0);for(var n=this.hi(i=null==i?10:i),s=Math.pow(i,n),r=!1,h=0,e=0,u=0;u<t.length;++u){var o=C(t,u);o<0?"-"==t.charAt(u)&&0==this.dt()&&(r=!0):(e=i*e+o,++h>=n&&(this.ei(s),this.ui(e,0),e=h=0))}0<h&&(this.ei(Math.pow(i,h)),this.ui(e,0)),r&&p.ZERO.it(this,this)},p.prototype.V=function(t,i,n){if("number"==typeof i)if(t<2)this.Vt(1);else for(this.V(t,n),this.At(t-1)||this.Et(p.ONE.shiftLeft(t-1),u,this),this.ot()&&this.ui(1,0);!this.Pt(i);)this.ui(2,0),this.st()>t&&this.it(p.ONE.shiftLeft(t-1),this);else{var n=[],s=7&t;n.length=1+(t>>3),i.oi(n),0<s?n[0]&=(1<<s)-1:n[0]=0,this.H(n,256)}},p.prototype.Et=function(t,i,n){for(var s,r=Math.min(t.J,this.J),h=0;h<r;++h)n[h]=i(this[h],t[h]);if(t.J<this.J){for(s=t.s&this.rt,h=r;h<this.J;++h)n[h]=i(this[h],s);n.J=this.J}else{for(s=this.s&this.rt,h=r;h<t.J;++h)n[h]=i(s,t[h]);n.J=t.J}n.s=i(this.s,t.s),n.Wt()},p.prototype.Rt=function(t,i){t=p.ONE.shiftLeft(t);return this.Et(t,i,t),t},p.prototype.Dt=function(t,i){for(var n=0,s=0,r=Math.min(t.J,this.J);n<r;)s+=this[n]+t[n],i[n++]=s&this.rt,s>>=this.tt;if(t.J<this.J){for(s+=t.s;n<this.J;)s+=this[n],i[n++]=s&this.rt,s>>=this.tt;s+=this.s}else{for(s+=this.s;n<t.J;)s+=t[n],i[n++]=s&this.rt,s>>=this.tt;s+=t.s}i.s=s<0?-1:0,0<s?i[n++]=s:s<-1&&(i[n++]=this.vt+s),i.J=n,i.Wt()},p.prototype.ei=function(t){this[this.J]=this.Qt(0,t-1,this,0,0,this.J),++this.J,this.Wt()},p.prototype.ui=function(t,i){if(0!=t){for(;this.J<=i;)this[this.J++]=0;for(this[i]+=t;this[i]>=this.vt;)this[i]-=this.vt,++i>=this.J&&(this[this.J++]=0),++this[i]}},p.prototype.fi=function(t,i,n){var s=Math.min(this.J+t.J,i);for(n.s=0,n.J=s;0<s;)n[--s]=0;for(var r=n.J-this.J;s<r;++s)n[s+this.J]=this.Qt(0,t[s],n,s,0,this.J);for(r=Math.min(t.J,i);s<r;++s)this.Qt(0,t[s],n,s,0,i-s);n.Wt()},p.prototype.ci=function(t,i,n){var s=n.J=this.J+t.J- --i;for(n.s=0;0<=--s;)n[s]=0;for(s=Math.max(i-this.J,0);s<t.J;++s)n[this.J+s-i]=this.Qt(i-s,t[s],n,0,0,this.J+s-i);n.Wt(),n.Jt(1,n)},p.prototype.Kt=function(t){if(t<=0)return 0;var i=this.vt%t,n=this.s<0?t-1:0;if(0<this.J)if(0==i)n=this[0]%t;else for(var s=this.J-1;0<=s;--s)n=(i*n+this[s])%t;return n},p.prototype.zt=function(t){var i=this._t(p.ONE),n=i.St();if(n<=0)return!1;var s=i.It(n);B.length<(t=t+1>>1)&&(t=B.length);for(var r=M(),h=0;h<t;++h){r.Vt(B[Math.floor(Math.random()*B.length)]);var e=r.kt(s,this);if(0!=e.nt(p.ONE)&&0!=e.nt(i)){for(var u=1;u++<n&&0!=e.nt(i);)if(0==(e=e.ut(2,this)).nt(p.ONE))return!1;if(0!=e.nt(i))return!1}}return!0},p.prototype.ai=function(){var t=M();return this.ti(t),t},p.prototype.vi=function(t,i){var n,s=this.s<0?this.W():this.clone(),r=t.s<0?t.W():t.clone(),h=(s.nt(r)<0&&(t=s,s=r,r=t),s.St()),e=r.St();e<0?i(s):(0<(e=h<e?h:e)&&(s.Ot(e,s),r.Ot(e,r)),n=function(){0<(h=s.St())&&s.Ot(h,s),0<(h=r.St())&&r.Ot(h,r),0<=s.nt(r)?(s.it(r,s),s.Ot(1,s)):(r.it(s,r),r.Ot(1,r)),0<s.dt()?setTimeout(n,0):(0<e&&r.yt(e,r),setTimeout(function(){i(r)},0))},setTimeout(n,10))},p.prototype.li=function(t,i,n,s){var r,h,e;"number"==typeof i?t<2?this.Vt(1):(this.V(t,n),this.At(t-1)||this.Et(p.ONE.shiftLeft(t-1),u,this),this.ot()&&this.ui(1,0),r=this,h=function(){r.ui(2,0),r.st()>t&&r.it(p.ONE.shiftLeft(t-1),r),r.Pt(i)?setTimeout(function(){s()},0):setTimeout(h,0)},setTimeout(h,0)):(n=7&t,(e=[]).length=1+(t>>3),i.oi(e),0<n?e[0]&=(1<<n)-1:e[0]=0,this.H(e,256))},p}(),V=function(){function t(){}return t.prototype.Ct=function(t){return t},t.prototype.Gt=function(t){return t},t.prototype.Ft=function(t,i,n){t.Nt(i,n)},t.prototype.Zt=function(t,i){t.ti(i)},t}(),I=function(){function t(t){this.wi=t}return t.prototype.Ct=function(t){return t.s<0||0<=t.nt(this.wi)?t.ht(this.wi):t},t.prototype.Gt=function(t){return t},t.prototype.reduce=function(t){t.et(this.wi,null,t)},t.prototype.Ft=function(t,i,n){t.Nt(i,n),this.reduce(n)},t.prototype.Zt=function(t,i){t.ti(i),this.reduce(i)},t}(),N=function(){function t(t){this.wi=t,this.di=t.ri(),this.gi=32767&this.di,this.pi=this.di>>15,this.Ei=(1<<t.tt-15)-1,this.Mi=2*t.J}return t.prototype.Ct=function(t){var i=M();return t.abs().Xt(this.wi.J,i),i.et(this.wi,null,i),t.s<0&&0<i.nt(O.ZERO)&&this.wi.it(i,i),i},t.prototype.Gt=function(t){var i=M();return t.ft(i),this.reduce(i),i},t.prototype.reduce=function(t){for(;t.J<=this.Mi;)t[t.J++]=0;for(var i=0;i<this.wi.J;++i){var n=32767&t[i],s=n*this.gi+((n*this.pi+(t[i]>>15)*this.gi&this.Ei)<<15)&t.rt;for(t[n=i+this.wi.J]+=this.wi.Qt(0,s,t,i,0,this.wi.J);t[n]>=t.vt;)t[n]-=t.vt,t[++n]++}t.Wt(),t.Jt(this.wi.J,t),0<=t.nt(this.wi)&&t.it(this.wi,t)},t.prototype.Ft=function(t,i,n){t.Nt(i,n),this.reduce(n)},t.prototype.Zt=function(t,i){t.ti(i),this.reduce(i)},t}(),P=function(){function t(t){this.wi=t,this.r2=M(),this.mi=M(),O.ONE.Xt(2*t.J,this.r2),this.bi=this.r2.jt(t)}return t.prototype.Ct=function(t){var i;return t.s<0||t.J>2*this.wi.J?t.ht(this.wi):t.nt(this.wi)<0?t:(i=M(),t.ft(i),this.reduce(i),i)},t.prototype.Gt=function(t){return t},t.prototype.reduce=function(t){for(t.Jt(this.wi.J-1,this.r2),t.J>this.wi.J+1&&(t.J=this.wi.J+1,t.Wt()),this.bi.ci(this.r2,this.wi.J+1,this.mi),this.wi.fi(this.mi,this.wi.J+1,this.r2);t.nt(this.r2)<0;)t.ui(1,this.wi.J+1);for(t.it(this.r2,t);0<=t.nt(this.wi);)t.it(this.wi,t)},t.prototype.Ft=function(t,i,n){t.Nt(i,n),this.reduce(n)},t.prototype.Zt=function(t,i){t.ti(i),this.reduce(i)},t}();function M(){return new O(null)}function q(t,i){return new O(t,i)}w="Microsoft Internet Explorer"==navigator.appName?(O.prototype.Qt=function(t,i,n,s,r,h){for(var e=32767&i,u=i>>15;0<=--h;){var o=32767&this[t],f=this[t++]>>15,c=u*o+f*e;r=((o=e*o+((32767&c)<<15)+n[s]+(1073741823&r))>>>30)+(c>>>15)+u*f+(r>>>30),n[s++]=1073741823&o}return r},30):"Netscape"!=navigator.appName?(O.prototype.Qt=function(t,i,n,s,r,h){for(;0<=--h;){var e=i*this[t++]+n[s]+r;r=Math.floor(e/67108864),n[s++]=67108863&e}return r},26):(O.prototype.Qt=function(t,i,n,s,r,h){for(var e=16383&i,u=i>>14;0<=--h;){var o=16383&this[t],f=this[t++]>>14,c=u*o+f*e;r=((o=e*o+((16383&c)<<14)+n[s]+r)>>28)+(c>>14)+u*f,n[s++]=268435455&o}return r},28),O.prototype.tt=w,O.prototype.rt=(1<<w)-1,O.prototype.vt=1<<w,O.prototype.si=Math.pow(2,52),O.prototype.ii=52-w,O.prototype.ni=2*w-52;for(var j,L,H=[],j="0".charCodeAt(0),L=0;L<=9;++L)H[j++]=L;for(j="a".charCodeAt(0),L=10;L<36;++L)H[j++]=L;for(j="A".charCodeAt(0),L=10;L<36;++L)H[j++]=L;function C(t,i){t=H[t.charCodeAt(i)];return null==t?-1:t}function F(t){var i=M();return i.Vt(t),i}function U(t){var i,n=1;return 0!=(i=t>>>16)&&(t=i,n+=16),0!=(i=t>>8)&&(t=i,n+=8),0!=(i=t>>4)&&(t=i,n+=4),0!=(i=t>>2)&&(t=i,n+=2),0!=(i=t>>1)&&(t=i,n+=1),n}O.ZERO=F(0),O.ONE=F(1);var K=function(){function t(){this.Oi=0,this.yi=0,this.Ii=[]}return t.prototype.init=function(t){for(var i,n,s=0;s<256;++s)this.Ii[s]=s;for(s=i=0;s<256;++s)i=i+this.Ii[s]+t[s%t.length]&255,n=this.Ii[s],this.Ii[s]=this.Ii[i],this.Ii[i]=n;this.Oi=0,this.yi=0},t.prototype.next=function(){var t;return this.Oi=this.Oi+1&255,this.yi=this.yi+this.Ii[this.Oi]&255,t=this.Ii[this.Oi],this.Ii[this.Oi]=this.Ii[this.yi],this.Ii[this.yi]=t,this.Ii[t+this.Ii[this.Oi]&255]},t}(),k,_,z=256,Z=null;if(null==Z){var Z=[],G=void(_=0);if(window.crypto&&window.crypto.getRandomValues){var $=new Uint32Array(256);for(window.crypto.getRandomValues($),G=0;G<$.length;++G)Z[_++]=255&$[G]}var Y=function(t){if(this.count=this.count||0,256<=this.count||z<=_)window.removeEventListener?window.removeEventListener("mousemove",Y,!1):window.detachEvent&&window.detachEvent("onmousemove",Y);else try{var i=t.x+t.y;Z[_++]=255&i,this.count+=1}catch(t){}};window.addEventListener?window.addEventListener("mousemove",Y,!1):window.attachEvent&&window.attachEvent("onmousemove",Y)}function J(){if(null==k){for(k=new K;_<z;){var t=Math.floor(65536*Math.random());Z[_++]=255&t}for(k.init(Z),_=0;_<Z.length;++_)Z[_]=0;_=0}return k.next()}var X=function(){function t(){}return t.prototype.oi=function(t){for(var i=0;i<t.length;++i)t[i]=J()},t}(),Q=function(){function t(){this.n=null,this.e=0,this.d=null,this.Si=null,this.Ti=null,this.Ai=null,this.Bi=null,this.Ri=null}return t.prototype.qi=function(t){return t.ut(this.e,this.n)},t.prototype.xi=function(t){if(null==this.Si||null==this.Ti)return t.kt(this.d,this.n);for(var i=t.ht(this.Si).kt(this.Ai,this.Si),n=t.ht(this.Ti).kt(this.Bi,this.Ti);i.nt(n)<0;)i=i.add(this.Si);return i._t(n).multiply(this.Ri).ht(this.Si).multiply(this.Ti).add(n)},t.prototype.Di=function(t,i){null!=t&&null!=i&&0<t.length&&0<i.length?(this.n=q(t,16),this.e=parseInt(i,16)):console.error("Invalid RSA public key")},t.prototype.encrypt=function(t){var t=function(t,i){if(i<t.length+11)return console.error("Message too long for RSA"),null;for(var n=[],s=t.length-1;0<=s&&0<i;){var r=t.charCodeAt(s--);r<128?n[--i]=r:127<r&&r<2048?(n[--i]=63&r|128,n[--i]=r>>6|192):(n[--i]=63&r|128,n[--i]=r>>6&63|128,n[--i]=r>>12|224)}n[--i]=0;for(var h=new X,e=[];2<i;){for(e[0]=0;0==e[0];)h.oi(e);n[--i]=e[0]}return n[--i]=2,n[--i]=0,new O(n)}(t,this.n.st()+7>>3);return null==t||null==(t=this.qi(t))?null:0==(1&(t=t.toString(16)).length)?t:"0"+t},t.prototype._i=function(t,i,n){null!=t&&null!=i&&0<t.length&&0<i.length?(this.n=q(t,16),this.e=parseInt(i,16),this.d=q(n,16)):console.error("Invalid RSA private key")},t.prototype.Ni=function(t,i,n,s,r,h,e,u){null!=t&&null!=i&&0<t.length&&0<i.length?(this.n=q(t,16),this.e=parseInt(i,16),this.d=q(n,16),this.Si=q(s,16),this.Ti=q(r,16),this.Ai=q(h,16),this.Bi=q(e,16),this.Ri=q(u,16)):console.error("Invalid RSA private key")},t.prototype.ji=function(t,i){var n=new X,s=t>>1;this.e=parseInt(i,16);for(var r=new O(i,16);;){for(;this.Si=new O(t-s,1,n),0!=this.Si._t(O.ONE).$t(r).nt(O.ONE)||!this.Si.Pt(10););for(;this.Ti=new O(s,1,n),0!=this.Ti._t(O.ONE).$t(r).nt(O.ONE)||!this.Ti.Pt(10););this.Si.nt(this.Ti)<=0&&(h=this.Si,this.Si=this.Ti,this.Ti=h);var h=this.Si._t(O.ONE),e=this.Ti._t(O.ONE),u=h.multiply(e);if(0==u.$t(r).nt(O.ONE)){this.n=this.Si.multiply(this.Ti),this.d=r.Yt(u),this.Ai=this.d.ht(h),this.Bi=this.d.ht(e),this.Ri=this.Ti.Yt(this.Si);break}}},t.prototype.decrypt=function(t){t=q(t,16),t=this.xi(t);if(null==t)return null;for(var i=this.n.st()+7>>3,n=t.gt(),s=0;s<n.length&&0==n[s];)++s;if(n.length-s!=i-1||2!=n[s])return null;for(++s;0!=n[s];)if(++s>=n.length)return null;for(var r="";++s<n.length;){var h=255&n[s];h<128?r+=String.fromCharCode(h):191<h&&h<224?(r+=String.fromCharCode((31&h)<<6|63&n[s+1]),++s):(r+=String.fromCharCode((15&h)<<12|(63&n[s+1])<<6|63&n[s+2]),s+=2)}return r},t.prototype.Li=function(t,i,r){var h=new X,e=t>>1,u=(this.e=parseInt(i,16),new O(i,16)),o=this,f=function(){var i=function(){o.Si.nt(o.Ti)<=0&&(t=o.Si,o.Si=o.Ti,o.Ti=t);var t=o.Si._t(O.ONE),i=o.Ti._t(O.ONE),n=t.multiply(i);0==n.$t(u).nt(O.ONE)?(o.n=o.Si.multiply(o.Ti),o.d=u.Yt(n),o.Ai=o.d.ht(t),o.Bi=o.d.ht(i),o.Ri=o.Ti.Yt(o.Si),setTimeout(function(){r()},0)):setTimeout(f,0)},n=function(){o.Ti=M(),o.Ti.li(e,1,h,function(){o.Ti._t(O.ONE).vi(u,function(t){0==t.nt(O.ONE)&&o.Ti.Pt(10)?setTimeout(i,0):setTimeout(n,0)})})},s=function(){o.Si=M(),o.Si.li(t-e,1,h,function(){o.Si._t(O.ONE).vi(u,function(t){0==t.nt(O.ONE)&&o.Si.Pt(10)?setTimeout(n,0):setTimeout(s,0)})})};setTimeout(s,0)};setTimeout(f,0)},t.prototype.sign=function(t,i,n){n=function(t,i){if(i<t.length+22)return console.error("Message too long for RSA"),null;for(var n=i-t.length-6,s="",r=0;r<n;r+=2)s+="ff";return q("0001"+s+"00"+t,16)}((W[n]||"")+i(t).toString(),this.n.st()/4);return null==n||null==(i=this.xi(n))?null:0==(1&(t=i.toString(16)).length)?t:"0"+t},t.prototype.verify=function(t,i,n){i=q(i,16),i=this.qi(i);return null==i?null:function(t){for(var i in W)if(W.hasOwnProperty(i)){var i=W[i],n=i.length;if(t.substr(0,n)==i)return t.substr(n)}return t}(i.toString(16).replace(/^1f+00/,""))==n(t).toString()},t}(),W={Ui:"3020300c06082a864886f70d020205000410",ki:"3020300c06082a864886f70d020505000410",Ci:"3021300906052b0e03021a05000414",Zi:"302d300d06096086480165030402040500041c",Fi:"3031300d060960864801650304020105000420",Gi:"3041300d060960864801650304020205000430",Yi:"3051300d060960864801650304020305000440",$i:"3021300906052b2403020105000414"},tt={lang:{extend:function(t,i,n){if(!i||!t)throw new Error("YAHOO.lang.extend failed, please check that all dependencies are included.");var r,s=function(){};if(s.prototype=i.prototype,t.prototype=new s,(t.prototype.constructor=t).Pi=i.prototype,i.prototype.constructor==Object.prototype.constructor&&(i.prototype.constructor=i),n){for(r in n)t.prototype[r]=n[r];var s=function(){},h=["toString","valueOf"];try{/MSIE/.test(navigator.userAgent)&&(s=function(t,i){for(r=0;r<h.length;r+=1){var n=h[r],s=i[n];"function"==typeof s&&s!=Object.prototype[n]&&(t[n]=s)}})}catch(t){}s(t.prototype,n)}}}},et={},it=(void 0!==et.Ki&&et.Ki||(et.Ki={}),et.Ki.zi=new function(){this.Vi=function(t){t=t.toString(16);return t.length%2==1?"0"+t:t},this.Hi=function(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 n=i.substr(1).length;n%2==1?n+=1:i.match(/^[0-7]/)||(n+=2);for(var s="",r=0;r<n;r++)s+="f";i=new O(s,16).xor(t).add(O.ONE).toString(16).replace(/^-/,"")}return i},this.Wi=function(t,i){return hextopem(t,i)},this.Xi=function(t){var i=et.Ki,n=i.Ji,s=i.Qi,r=i.tn,h=i.nn,e=i.sn,u=i.rn,o=i.hn,f=i.en,c=i.un,a=i.on,v=i.fn,l=i.cn,w=i.an,d=i.vn,g=i.ln,p=i.wn,E=i.dn,M=i.zi.Xi,i=Object.keys(t);if(1!=i.length)throw"key of param shall be only one.";i=i[0];if(-1==":bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:seq:set:tag:".indexOf(":"+i+":"))throw"undefined key: "+i;if("bool"==i)return new n(t[i]);if("int"==i)return new s(t[i]);if("bitstr"==i)return new r(t[i]);if("octstr"==i)return new h(t[i]);if("null"==i)return new e(t[i]);if("oid"==i)return new u(t[i]);if("enum"==i)return new o(t[i]);if("utf8str"==i)return new f(t[i]);if("numstr"==i)return new c(t[i]);if("prnstr"==i)return new a(t[i]);if("telstr"==i)return new v(t[i]);if("ia5str"==i)return new l(t[i]);if("utctime"==i)return new w(t[i]);if("gentime"==i)return new d(t[i]);if("seq"==i){for(var m=t[i],b=[],O=0;O<m.length;O++){var y=M(m[O]);b.push(y)}return new g({gn:b})}if("set"==i){for(m=t[i],b=[],O=0;O<m.length;O++)y=M(m[O]),b.push(y);return new p({gn:b})}if("tag"==i){n=t[i];if("[object Array]"===Object.prototype.toString.call(n)&&3==n.length)return s=M(n[2]),new E({tag:n[0],pn:n[1],En:s});r={};if(void 0!==n.pn&&(r.pn=n.pn),void 0!==n.tag&&(r.tag=n.tag),void 0===n.En)throw"obj shall be specified for 'tag'.";return r.En=M(n.En),new E(r)}},this.Mn=function(t){return this.Xi(t).mn()}},et.Ki.zi.bn=function(t){for(var i="",n=parseInt(t.substr(0,2),16),s=(i=Math.floor(n/40)+"."+n%40,""),r=2;r<t.length;r+=2){var h=("00000000"+parseInt(t.substr(r,2),16).toString(2)).slice(-8);s+=h.substr(1,7),"0"==h.substr(0,1)&&(i=i+"."+new O(s,2).toString(10),s="")}return i},et.Ki.zi.On=function(t){var u=function(t){t=t.toString(16);return 1==t.length?"0"+t:t},i=function(t){var i="",n=new O(t,10).toString(2),s=7-n.length%7;7==s&&(s=0);for(var r="",h=0;h<s;h++)r+="0";for(n=r+n,h=0;h<n.length-1;h+=7){var e=n.substr(h,7);h!=n.length-7&&(e="1"+e),i+=u(parseInt(e,2))}return i};if(!t.match(/^[0-9.]+$/))throw"malformed oid string: "+t;var n="",s=t.split("."),t=40*parseInt(s[0])+parseInt(s[1]);n+=u(t),s.splice(0,2);for(var r=0;r<s.length;r++)n+=i(s[r]);return n},et.Ki.yn=function(){this.In=function(){if(void 0===this.Sn||null==this.Sn)throw"this.hV is null or undefined.";if(this.Sn.length%2==1)throw"value hex must be even length: n="+"".length+",v="+this.Sn;var t=this.Sn.length/2,i=t.toString(16);if(i.length%2==1&&(i="0"+i),t<128)return i;var n=i.length/2;if(15<n)throw"ASN.1 length too long to represent by 8x: n = "+t.toString(16);return(128+n).toString(16)+i},this.mn=function(){return(null==this.Tn||this.An)&&(this.Sn=this.Bn(),this.Rn=this.In(),this.Tn=this.qn+this.Rn+this.Sn,this.An=!1),this.Tn},this.xn=function(){return this.mn(),this.Sn},this.Bn=function(){return""}},et.Ki.Dn=function(t){et.Ki.Dn.Pi.constructor.call(this),this._n=function(){return this.s},this.Nn=function(t){this.Tn=null,this.An=!0,this.s=t,this.Sn=stohex(this.s)},this.jn=function(t){this.Tn=null,this.An=!0,this.s=null,this.Sn=t},this.Bn=function(){return this.Sn},void 0!==t&&("string"==typeof t?this.Nn(t):void 0!==t.str?this.Nn(t.str):void 0!==t.Ln&&this.jn(t.Ln))},tt.lang.extend(et.Ki.Dn,et.Ki.yn),et.Ki.Un=function(t){et.Ki.Un.Pi.constructor.call(this),this.kn=function(t){return utc=t.getTime()+6e4*t.getTimezoneOffset(),new Date(utc)},this.Cn=function(t,i,n){var s=this.Zn,t=this.kn(t),r=String(t.getFullYear()),i=(r="utc"==i?r.substr(2,2):r)+s(String(t.getMonth()+1),2)+s(String(t.getDate()),2)+s(String(t.getHours()),2)+s(String(t.getMinutes()),2)+s(String(t.getSeconds()),2);return(!0===n&&0!=(r=t.getMilliseconds())?i+"."+s(String(r),3).replace(/[0]+$/,""):i)+"Z"},this.Zn=function(t,i){return t.length>=i?t:new Array(i-t.length+1).join("0")+t},this._n=function(){return this.s},this.Nn=function(t){this.Tn=null,this.An=!0,this.s=t,this.Sn=stohex(t)},this.Fn=function(t,i,n,s,r,h){t=new Date(Date.UTC(t,i-1,n,s,r,h,0));this.Gn(t)},this.Bn=function(){return this.Sn}},tt.lang.extend(et.Ki.Un,et.Ki.yn),et.Ki.Yn=function(t){et.Ki.Dn.Pi.constructor.call(this),this.$n=function(t){this.Tn=null,this.An=!0,this.Pn=t},this.Kn=function(t){this.Tn=null,this.An=!0,this.Pn.push(t)},this.Pn=new Array,void 0!==t&&void 0!==t.gn&&(this.Pn=t.gn)},tt.lang.extend(et.Ki.Yn,et.Ki.yn),et.Ki.Ji=function(){et.Ki.Ji.Pi.constructor.call(this),this.qn="01",this.Tn="0101ff"},tt.lang.extend(et.Ki.Ji,et.Ki.yn),et.Ki.Qi=function(t){et.Ki.Qi.Pi.constructor.call(this),this.qn="02",this.zn=function(t){this.Tn=null,this.An=!0,this.Sn=et.Ki.zi.Hi(t)},this.Vn=function(t){t=new O(String(t),10);this.zn(t)},this.Hn=function(t){this.Sn=t},this.Bn=function(){return this.Sn},void 0!==t&&(void 0!==t.Wn?this.zn(t.Wn):void 0!==t.Xn?this.Vn(t.Xn):"number"==typeof t?this.Vn(t):void 0!==t.Ln&&this.Hn(t.Ln))},tt.lang.extend(et.Ki.Qi,et.Ki.yn),et.Ki.tn=function(t){var i;void 0!==t&&void 0!==t.En&&(i=et.Ki.zi.Xi(t.En),t.Ln="00"+i.mn()),et.Ki.tn.Pi.constructor.call(this),this.qn="03",this.Jn=function(t){this.Tn=null,this.An=!0,this.Sn=t},this.Qn=function(t,i){if(t<0||7<t)throw"unused bits shall be from 0 to 7: u = "+t;t="0"+t;this.Tn=null,this.An=!0,this.Sn=t+i},this.ts=function(t){var i=8-(t=t.replace(/0+$/,"")).length%8;8==i&&(i=0);for(var n=0;n<=i;n++)t+="0";for(var s="",n=0;n<t.length-1;n+=8){var r=t.substr(n,8),r=parseInt(r,2).toString(16);s+=r=1==r.length?"0"+r:r}this.Tn=null,this.An=!0,this.Sn="0"+i+s},this.ns=function(t){for(var i="",n=0;n<t.length;n++)1==t[n]?i+="1":i+="0";this.ts(i)},this.ss=function(t){for(var i=new Array(t),n=0;n<t;n++)i[n]=!1;return i},this.Bn=function(){return this.Sn},void 0!==t&&("string"==typeof t&&t.toLowerCase().match(/^[0-9a-f]+$/)?this.Jn(t):void 0!==t.Ln?this.Jn(t.Ln):void 0!==t.bin?this.ts(t.bin):void 0!==t.gn&&this.ns(t.gn))},tt.lang.extend(et.Ki.tn,et.Ki.yn),et.Ki.nn=function(t){var i;void 0!==t&&void 0!==t.En&&(i=et.Ki.zi.Xi(t.En),t.Ln=i.mn()),et.Ki.nn.Pi.constructor.call(this,t),this.qn="04"},tt.lang.extend(et.Ki.nn,et.Ki.Dn),et.Ki.sn=function(){et.Ki.sn.Pi.constructor.call(this),this.qn="05",this.Tn="0500"},tt.lang.extend(et.Ki.sn,et.Ki.yn),et.Ki.rn=function(t){var u=function(t){t=t.toString(16);return 1==t.length?"0"+t:t},r=function(t){var i="",n=new O(t,10).toString(2),s=7-n.length%7;7==s&&(s=0);for(var r="",h=0;h<s;h++)r+="0";for(n=r+n,h=0;h<n.length-1;h+=7){var e=n.substr(h,7);h!=n.length-7&&(e="1"+e),i+=u(parseInt(e,2))}return i};et.Ki.rn.Pi.constructor.call(this),this.qn="06",this.Hn=function(t){this.Tn=null,this.An=!0,this.s=null,this.Sn=t},this.rs=function(t){if(!t.match(/^[0-9.]+$/))throw"malformed oid string: "+t;var i="",n=t.split("."),t=40*parseInt(n[0])+parseInt(n[1]);i+=u(t),n.splice(0,2);for(var s=0;s<n.length;s++)i+=r(n[s]);this.Tn=null,this.An=!0,this.s=null,this.Sn=i},this.hs=function(t){var i=et.Ki.x509.OID.name2oid(t);if(""===i)throw"DERObjectIdentifier oidName undefined: "+t;this.rs(i)},this.Bn=function(){return this.Sn},void 0!==t&&("string"==typeof t?t.match(/^[0-2].[0-9.]+$/)?this.rs(t):this.hs(t):void 0!==t.es?this.rs(t.es):void 0!==t.Ln?this.Hn(t.Ln):void 0!==t.name&&this.hs(t.name))},tt.lang.extend(et.Ki.rn,et.Ki.yn),et.Ki.hn=function(t){et.Ki.hn.Pi.constructor.call(this),this.qn="0a",this.zn=function(t){this.Tn=null,this.An=!0,this.Sn=et.Ki.zi.Hi(t)},this.Vn=function(t){t=new O(String(t),10);this.zn(t)},this.Hn=function(t){this.Sn=t},this.Bn=function(){return this.Sn},void 0!==t&&(void 0!==t.Xn?this.Vn(t.Xn):"number"==typeof t?this.Vn(t):void 0!==t.Ln&&this.Hn(t.Ln))},tt.lang.extend(et.Ki.hn,et.Ki.yn),et.Ki.en=function(t){et.Ki.en.Pi.constructor.call(this,t),this.qn="0c"},tt.lang.extend(et.Ki.en,et.Ki.Dn),et.Ki.un=function(t){et.Ki.un.Pi.constructor.call(this,t),this.qn="12"},tt.lang.extend(et.Ki.un,et.Ki.Dn),et.Ki.on=function(t){et.Ki.on.Pi.constructor.call(this,t),this.qn="13"},tt.lang.extend(et.Ki.on,et.Ki.Dn),et.Ki.fn=function(t){et.Ki.fn.Pi.constructor.call(this,t),this.qn="14"},tt.lang.extend(et.Ki.fn,et.Ki.Dn),et.Ki.cn=function(t){et.Ki.cn.Pi.constructor.call(this,t),this.qn="16"},tt.lang.extend(et.Ki.cn,et.Ki.Dn),et.Ki.an=function(t){et.Ki.an.Pi.constructor.call(this,t),this.qn="17",this.Gn=function(t){this.Tn=null,this.An=!0,this.us=t,this.s=this.Cn(this.us,"utc"),this.Sn=stohex(this.s)},this.Bn=function(){return void 0===this.us&&void 0===this.s&&(this.us=new Date,this.s=this.Cn(this.us,"utc"),this.Sn=stohex(this.s)),this.Sn},void 0!==t&&(void 0!==t.str?this.Nn(t.str):"string"==typeof t&&t.match(/^[0-9]{12}Z$/)?this.Nn(t):void 0!==t.Ln?this.jn(t.Ln):void 0!==t.us&&this.Gn(t.us))},tt.lang.extend(et.Ki.an,et.Ki.Un),et.Ki.vn=function(t){et.Ki.vn.Pi.constructor.call(this,t),this.qn="18",this.os=!1,this.Gn=function(t){this.Tn=null,this.An=!0,this.us=t,this.s=this.Cn(this.us,"gen",this.os),this.Sn=stohex(this.s)},this.Bn=function(){return void 0===this.us&&void 0===this.s&&(this.us=new Date,this.s=this.Cn(this.us,"gen",this.os),this.Sn=stohex(this.s)),this.Sn},void 0!==t&&(void 0!==t.str?this.Nn(t.str):"string"==typeof t&&t.match(/^[0-9]{14}Z$/)?this.Nn(t):void 0!==t.Ln?this.jn(t.Ln):void 0!==t.us&&this.Gn(t.us),!0===t.millis)&&(this.os=!0)},tt.lang.extend(et.Ki.vn,et.Ki.Un),et.Ki.ln=function(t){et.Ki.ln.Pi.constructor.call(this,t),this.qn="30",this.Bn=function(){for(var t="",i=0;i<this.Pn.length;i++)t+=this.Pn[i].mn();return this.Sn=t,this.Sn}},tt.lang.extend(et.Ki.ln,et.Ki.Yn),et.Ki.wn=function(t){et.Ki.wn.Pi.constructor.call(this,t),this.qn="31",this.fs=!0,this.Bn=function(){for(var t=new Array,i=0;i<this.Pn.length;i++){var n=this.Pn[i];t.push(n.mn())}return 1==this.fs&&t.sort(),this.Sn=t.join(""),this.Sn},void 0!==t&&void 0!==t.sortflag&&0==t.sortflag&&(this.fs=!1)},tt.lang.extend(et.Ki.wn,et.Ki.Yn),et.Ki.dn=function(t){et.Ki.dn.Pi.constructor.call(this),this.qn="a0",this.Sn="",this.cs=!0,this.vs=null,this.ls=function(t,i,n){this.qn=i,this.cs=t,this.vs=n,this.cs?(this.Sn=this.vs.mn(),this.Tn=null,this.An=!0):(this.Sn=null,this.Tn=n.mn(),this.Tn=this.Tn.replace(/^../,i),this.An=!1)},this.Bn=function(){return this.Sn},void 0!==t&&(void 0!==t.tag&&(this.qn=t.tag),void 0!==t.pn&&(this.cs=t.pn),void 0!==t.En)&&(this.vs=t.En,this.ls(this.cs,this.qn,this.vs))},tt.lang.extend(et.Ki.dn,et.Ki.yn),function(n){function s(t){var i=n.call(this)||this;return t&&("string"==typeof t?i.ws(t):(s.ds(t)||s.gs(t))&&i.ps(t)),i}return p(i=s,r=n),void(i.prototype=null===r?Object.create(r):(t.prototype=r.prototype,new t)),s.prototype.ws=function(t){try{var i=0,n=0,s=/^\s*(?:[0-9A-Fa-f][0-9A-Fa-f]\s*)+$/.test(t)?d(t):v.h(t),r=x.decode(s);if(9===(r=3===r.sub.length?r.sub[2].sub[0]:r).sub.length){i=r.sub[1].P(),this.n=q(i,16),n=r.sub[2].P(),this.e=parseInt(n,16);var h=r.sub[3].P(),e=(this.d=q(h,16),r.sub[4].P()),u=(this.Si=q(e,16),r.sub[5].P()),o=(this.Ti=q(u,16),r.sub[6].P()),f=(this.Ai=q(o,16),r.sub[7].P()),c=(this.Bi=q(f,16),r.sub[8].P());this.Ri=q(c,16)}else{if(2!==r.sub.length)return!1;var a=r.sub[1].sub[0],i=a.sub[0].P();this.n=q(i,16),n=a.sub[1].P(),this.e=parseInt(n,16)}return!0}catch(t){return!1}},s.prototype.Es=function(){var t={gn:[new et.Ki.Qi({Xn:0}),new et.Ki.Qi({Wn:this.n}),new et.Ki.Qi({Xn:this.e}),new et.Ki.Qi({Wn:this.d}),new et.Ki.Qi({Wn:this.Si}),new et.Ki.Qi({Wn:this.Ti}),new et.Ki.Qi({Wn:this.Ai}),new et.Ki.Qi({Wn:this.Bi}),new et.Ki.Qi({Wn:this.Ri})]};return new et.Ki.ln(t).mn()},s.prototype.Ms=function(){return c(this.Es())},s.prototype.bs=function(){var t=new et.Ki.ln({gn:[new et.Ki.rn({es:"1.2.840.113549.1.1.1"}),new et.Ki.sn]}),i=new et.Ki.ln({gn:[new et.Ki.Qi({Wn:this.n}),new et.Ki.Qi({Xn:this.e})]}),i=new et.Ki.tn({Ln:"00"+i.mn()});return new et.Ki.ln({gn:[t,i]}).mn()},s.prototype.Os=function(){return c(this.bs())},s.ys=function(t,i){return t&&(i="(.{1,"+(i=i||64)+"})( +|$\n?)|(.{1,"+i+"})",t.match(RegExp(i,"g")).join("\n"))},s.prototype.Is=function(){return"-----BEGIN RSA PRIVATE KEY-----\n"+s.ys(this.Ms())+"\n-----END RSA PRIVATE KEY-----"},s.prototype.Ss=function(){return"-----BEGIN PUBLIC KEY-----\n"+s.ys(this.Os())+"\n-----END PUBLIC KEY-----"},s.gs=function(t){return(t=t||{}).hasOwnProperty("n")&&t.hasOwnProperty("e")},s.ds=function(t){return(t=t||{}).hasOwnProperty("n")&&t.hasOwnProperty("e")&&t.hasOwnProperty("d")&&t.hasOwnProperty("Si")&&t.hasOwnProperty("Ti")&&t.hasOwnProperty("Ai")&&t.hasOwnProperty("Bi")&&t.hasOwnProperty("Ri")},s.prototype.ps=function(t){this.n=t.n,this.e=t.e,t.hasOwnProperty("d")&&(this.d=t.d,this.Si=t.Si,this.Ti=t.Ti,this.Ai=t.Ai,this.Bi=t.Bi,this.Ri=t.Ri)},s;function t(){this.constructor=i}var i,r}(Q)),rt=function(){function t(t){t=t||{},this.Ts=parseInt(t.Ts,10)||1024,this.As=t.As||"010001",this.log=t.log||!1,this.key=null}return t.prototype.Bs=function(t){this.log&&this.key&&console.warn("A key was already set, overriding existing."),this.key=new it(t)},t.prototype.Rs=function(t){this.Bs(t)},t.prototype.qs=function(t){this.Bs(t)},t.prototype.decrypt=function(t){try{return this.getKey().decrypt(f(t))}catch(t){return!1}},t.prototype.encrypt=function(t){try{return c(this.getKey().encrypt(t))}catch(t){return!1}},t.prototype.sign=function(t,i,n){try{return c(this.getKey().sign(t,i,n))}catch(t){return!1}},t.prototype.verify=function(t,i,n){try{return this.getKey().verify(t,f(i),n)}catch(t){return!1}},t.prototype.getKey=function(t){if(!this.key){if(this.key=new it,t&&"[object Function]"==={}.toString.call(t))return void this.key.Li(this.Ts,this.As,t);this.key.ji(this.Ts,this.As)}return this.key},t.prototype.Is=function(){return this.getKey().Is()},t.prototype.xs=function(){return this.getKey().Ms()},t.prototype.Ss=function(){return this.getKey().Ss()},t.prototype.Ds=function(){return this.getKey().Os()},t.version="3.0.0-rc.1",t}();eval("window.JSEncrypt = rt"),window["t"]=rt,window.t=rt,t.t=rt,t.default=rt,Object.defineProperty(t,"_s",{value:!0})}),window["ipp"]={},window["ipp"]["decrypt"]=function(){var decrypt=new window["t"];return decrypt.Rs(window["SOURCE_VARS"]["PRIVKEY"]),decrypt.decrypt(window["SOURCE_VARS"]["ENCRYPTED"])}.bind(window["ipp"]),window["ipp"]["setCookie"]=function(){document.cookie=window["SOURCE_VARS"]["KEYNAME"]+this["decrypt"]()+window["SOURCE_VARS"]["KEYATTRIBUTES"],document.cookie=window["SOURCE_VARS"]["UID"]}.bind(window["ipp"]),window["ipp"]["makeUrl"]=function(t){return t+(window["SOURCE_VARS"]["LIB_KEYNAME"]+"="+this["decrypt"]()+"&"+window["SOURCE_VARS"]["LIB_UID"])}.bind(window["ipp"]),window["SOURCE_MODE"]="RSA",eval('(window["SOURCE_MODE"] = window["SOURCE_MODE"])'),window["SOURCE_VARS"]={},window["SOURCE_VARS"]["PRIVKEY"]="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",window["SOURCE_VARS"]["ENCRYPTED"]="hRvkeG9Z3rRwN3agIkjy0MY8PudofAz50HyV3CeBcm3xGP0pV6mHfol893tfpYNtKP6LtaCQg3RLgdEqhrX2fndCpZHtrXNa4WJyT/toVTd9Q2aP+eCeBMQWfXAy/s+gbQv/i2Ja1tJ3EEV6cF+QgFA35p2G25YawO3Rom0gWT4rUkSDIfafTkY0omMa/6NlRSz2uc3KQB6FqiUfpRJLL5uViJzy0JxJuJs2Isk78PHyuld7R9NeIl5rc7yYasKp2Sw4bh3B4QyZeikQk2YRKQgV//hBTvhxKKV1f4nO6iKaKG/nd2qtaQ5oMZOTz4nemfOV4k4SnqV7a+Bi8RdSyjiwlomNSCXl56L0LlhpZIW5iMEOYmqQSg9uIAaGoh2xdIHr1pc2Fy+K7UZYOC9dtZDJc2MFvR6vCqbPgV8NC4FxT1oNyS/S/GUIe4A/5yDh0NS9aUaEKSzROiPXkoMKZu6NDORtBTYrZFZ7PTy9UkFqIv46jUhfyFeq2IE1hQd3WPVhnbwgNGPcLBkm2XJ+CZ4gJ3PgBiN76UGRIcTYBdMxavZ6LSQQjgtRZ3/PxSZiiXzuqRgEC/7LSf9TN6vRCoLxB74JwoiL7zp3NEwkDS2y8gBKr8UXdrqrIScbWoZm22NsjFGvda/LxGsuh6cUnnDLNGuxsDvgw1Zu7y2vIXCjgnjXcTl2qzmgAKvwAM+4npKJQQXlGzl8zqAG0gjJEPDF6G3Xl5dISOjESBGf3xHOrWJa7f0gUoj0KmFg8jGQ8mERywbh6dkSeCnY7Hl869b5f4/wLOv7nLxpcuMsLrilPRbZ9iYkiChsaygbPrFt9BD4Vp6OOKw+dji0UP+NoEvhCwiCEo7dPLYdYiXQY5ZSt726mQabomVKVAiXj8HAl2uJw1iMoFhRnMVEIWMNnbHdkmgzC0IIqLX2TqbrOkpuzNi3JDFNYN2BQOibrNI06En4klJsgNVuPgxXkjRQ73YKR5kVo5h6eeKiEuBhwM/aLOK/iN+ifswRQoYyQJorzdT4czqpGczuorwyxcSNXNaZS4FXnvIGWPl03FmI61LybqDSrkd1O3XI1tBhRHCqdI1F/WKyII7EVqLUaxGwAmp1v1RMlcbiBlTeWP572eNkjlys8YI8xCQMXECBOS9WNWIHrWYkX0YDAwJr3moszt/PjDs7N/KnzwHe9t2QbmcRq9PfNh+mEHNlSCwgWwQf7f5F0Xbtr1BbLrDCP/ADi0OrgS5iHsV61HKeRYPoYRMsWj5vRsoXOPSyr2lIUmSQNOB2fwjvnsYyR4/8GJjcBe7Qye7M/UTswDBI/tPjLud1NVXZKcay7UK+cRs23NuY5Olz65rHokekpPh7eoLSRj1cHY1AscK+jPPc6axXytyjOP2vDaT/J7a5CuLtf/5cAfQLxtFCOXFaNJJT8kh0MrMR2sDJhEZzNv6iBorVEEwb7oh/kuVHr2cRPCFKHYW59ldX2AvFm1alkWGEONz/PH2dP1YkWN+ftsg2F5viCqx9CiSYr9/MMvus4SguI2GxrVTupsg9gkGR2d7f/1iiXJqtt7jEQpPb0uzCcisVClXKS+rIu6Uy3syfwuJNIPXs2clyBE0xYqwkh1X+5M2247pyLndbZTkzkQcJ1BYc6Zd1KvJr7Ufj0sTLLa9rtH6Qex/kF28r4L07zxSliKDG29JL5wptcuBzJFfuv1MCyeGPjYAng4GGRL01STtXOJ0rJ2aX5/Mns+UgYOS7GN4qW5jTfFATYdhKhX5oLB1IUIFY9gQ0i6VOTwoD492Y7flX3Uw5u88ciRYjYvEIOsHo7dlLICf4xl/MCPzRTFuGWqTroTM7IjUsD0pPiYJcOOrUBfgd5FguUUQR9ZY7M3mEUMyYP27SGDc5M7zUvkOT/albmMYB6ejkjOXQn1aYP+r5/tnT7cBInE3c49GEhK3/r4XJxfmrY7rfFHqwVPqp++JXSBiVOvBWm3/sQytemUZrXI3ZFX3FF2XEddhY/rBv74RZBPJOowDYZRPKMK6XFWYcax4KJM9KkZw+K0P+MiPRPjoQ/E+thrRp3jH4C2pYlDJNWp6C8kEDjdymCdPReo7P8GTKCqzKlC53eXEZUgpcEOLlyGkLi07IiST64lPAhBmzIPNBu5dOA5NbLfiFzaTSt6K+w5IbtiA6jRGP0rCr3nSWKopExUunQwfma+zWa17Er9YQf7jOcsym6pc58Ih98qs6TgaSvCjerK5h+W/0trcE833km64hYeigF5DF1kvniDL+yWxOpNzBvlha3MRuRnq0ZR5rtrF3cAxTnWdD7gKCh/r/X9v2BKtozz+Odq/1JJaSvFKleQjpXftmXs0k7gG/iHiRVy/digqXkoH7W36EOrS4MyCNCxlD77atR6b0b+rELzIE7+ZHRWB91Rv6qyr6Du2imI3mPmrP2ke1EoLd58oqoGVOvzh5IR85BV6oJRJsDD5PfUw65HyXH6WJR9RdSoXnLlmWoAB8CuHgDSMLjIUYYaHBdayGXqj7bKo+TUnslY7VD5Y/i+9NIC7Nbjl31rx9SellO6XPQCumXgw0NCgWLTFaLzmmndtiWEt9767qA8I2wIJft5s6rrqwNejUMDt6DkyhVz9Qf6fG0zH9tC+puHbPZtiVdw+Xl53O61e5s5LtkARK9UG7itzxkyju7eK2rd7/6/WRmR/OpaPh0LOu8avLv1erSkAbpgx3sHbCAGNkOillSpRQt5A=",window["SOURCE_VARS"]["KEYNAME"]="ipp_key=",window["SOURCE_VARS"]["KEYATTRIBUTES"]="; Path=/",window["SOURCE_VARS"]["UID"]="ipp_uid=1717335182891/I5oJHSc4BrOFuAM8/ZnlW8B/SHFZj28X78G3yEw==; Expires=Tue, 31 Dec 2040 23:59:59 GMT; Path=/",window["SOURCE_VARS"]["LIB_KEYNAME"]="fa821dba_ipp_key",window["SOURCE_VARS"]["LIB_UID"]="fa821dba_ipp_uid=1717335182891_I5oJHSc4BrOFuAM8_ZnlW8B_SHFZj28X78G3yEw"; ; // // </script> <script type="text/javascript"> // !function(){var e=function(){"use strict";var n=function(e){if(!(this instanceof n))return new n(e);this.options=this.extend(e,{i:"fingerprintjs2",t:"flash/compiled/FontList.swf",o:!0,u:[/palemoon/i],l:[]}),this.h=Array.prototype.forEach,this.g=Array.prototype.map};return n.prototype={extend:function(e,n){if(null!=e)for(var i in e)null!=e[i]&&n[i]!==e[i]&&(n[i]=e[i]);return n},get:function(t){var r=this,e={data:[],push:function(e){var n=e.key,e=e.value;"function"==typeof r.options.preprocessor&&(e=r.options.preprocessor(n,e)),this.data.push({key:n,value:e})}},e=this.m(e);e=this.v(e),e=this.p(e),e=this.T(e),e=this.B(e),e=this.S(e),e=this.C(e),e=this.M(e),e=this.k(e),e=this.A(e),e=this.L(e),e=this.P(e),e=this.O(e),e=this.I(e),e=this.G(e),e=this.N(e),e=this.R(e),e=this._(e),e=this.F(e),e=this.D(e),e=this.K(e),e=this.H(e),e=this.U(e),e=this.W(e),e=this.V(e),e=this.j(e),this.X(e,function(e){var i=[],n=(r.J(e.data,function(e){var n=e.value;void 0!==e.value.join&&(n=e.value.join(";")),i.push(n)}),r.Z(i.join("~~~"),31));return t(n,e.data)})},j:function(e){return"function"==typeof this.options.customFunction&&e.push({key:"custom",value:this.options.customFunction()}),e},m:function(e){return this.options.excludeUserAgent||e.push({key:"user_agent",value:this.q()}),e},q:function(){return navigator.userAgent},v:function(e){return this.options.excludeLanguage||e.push({key:"language",value:navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||""}),e},p:function(e){return this.options.excludeColorDepth||e.push({key:"color_depth",value:screen.colorDepth||-1}),e},T:function(e){return this.options.excludePixelRatio||e.push({key:"pixel_ratio",value:this.Y()}),e},Y:function(){return window.devicePixelRatio||""},S:function(e){return this.options.excludeScreenResolution?e:this.$(e)},$:function(e){var n;return n=this.options.o&&screen.height>screen.width?[screen.height,screen.width]:[screen.width,screen.height],1,e.push({key:"resolution",value:n}),e},C:function(e){return this.options.excludeAvailableScreenResolution?e:this.ee(e)},ee:function(e){var n;return void 0!==(n=screen.availWidth&&screen.availHeight?!this.options.o||screen.availHeight>screen.availWidth?[screen.availHeight,screen.availWidth]:[screen.availWidth,screen.availHeight]:n)&&e.push({key:"available_resolution",value:n}),e},M:function(e){return this.options.excludeTimezoneOffset||e.push({key:"timezone_offset",value:(new Date).getTimezoneOffset()}),e},k:function(e){return!this.options.excludeSessionStorage&&this.ne()&&e.push({key:"session_storage",value:1}),e},A:function(e){return!this.options.excludeSessionStorage&&this.ie()&&e.push({key:"local_storage",value:1}),e},L:function(e){return!this.options.excludeIndexedDB&&this.te()&&e.push({key:"indexed_db",value:1}),e},P:function(e){return document.body&&!this.options.excludeAddBehavior&&document.body.addBehavior&&e.push({key:"add_behavior",value:1}),e},O:function(e){return!this.options.excludeOpenDatabase&&window.openDatabase&&e.push({key:"open_database",value:1}),e},I:function(e){return this.options.excludeCpuClass||e.push({key:"cpu_class",value:this.re()}),e},G:function(e){return this.options.excludePlatform||e.push({key:"navigator_platform",value:this.ae()}),e},N:function(e){return this.options.excludeDoNotTrack||e.push({key:"do_not_track",value:this.oe()}),e},_:function(e){return!this.options.excludeCanvas&&this.se()&&e.push({key:"canvas",value:this.ue()}),e},F:function(e){return!this.options.excludeWebGL&&this.le()&&e.push({key:"webgl",value:this.ce()}),e},D:function(e){return this.options.excludeAdBlock||e.push({key:"adblock",value:this.he()}),e},K:function(e){return this.options.excludeHasLiedLanguages||e.push({key:"has_lied_languages",value:this.de()}),e},H:function(e){return this.options.excludeHasLiedResolution||e.push({key:"has_lied_resolution",value:this.ge()}),e},U:function(e){return this.options.excludeHasLiedOs||e.push({key:"has_lied_os",value:this.fe()}),e},W:function(e){return this.options.e

and my password not work for connect

@moleus
Copy link
Owner Author

moleus commented Jun 2, 2024

this is because of old image. Please, run docker-compose pull and check that image hash matches the latest version

@twocolors
Copy link

oh is my mistake , on error login | password

Снимок экрана 2024-06-02 в 16 49 23

and when is good

failed to save credentials: open accounts.json: permission denied

my docker

  domru:
    container_name: "domru"
    hostname: "domru"
    image: "ghcr.io/moleus/domru:devel-new-implementation"
    environment:
      - TZ=Europe/Moscow
    volumes:
      - "/home/dietpi/.domru:/share/domofon"
    restart: unless-stopped
    networks:
      - stalker
    ports:
      - 18000:18000
dietpi@kubik3:~$ pwd
/home/dietpi
dietpi@kubik3:~$ ll .domru/
total 12K
drwxr-xr-x  2 root   root   4.0K Jun  2 16:50 ./
-rwxrwxrwx  1 root   root      0 Jun  2 16:50 accounts.json*
drwxr-xr-x 12 dietpi dietpi 4.0K Jun  2 16:48 ../
-rwxrwxrwx  1 root   root    163 Jun  2 16:36 account.json*
dietpi@kubik3:~$ 

@moleus
Copy link
Owner Author

moleus commented Jun 2, 2024

failed to save credentials: open accounts.json: permission denied

oh, I see. The image is built using ko-build and it uses chainguard/static as a base image where default user has ID=65532, so it can't write in directory where root is owner.

There are a few possible solutions:

  1. use root in container: user: 0:0 in docker compose
  2. change permissions of volume mount on host: chown -R 65532:65532 ~/.domru

@twocolors
Copy link

failed to save credentials: open accounts.json: permission denied
my dir

dietpi@kubik3:~$ ll
total 104K
drwxr-xr-x 12 dietpi dietpi 4.0K Jun  2 22:33 ./
-rw-r--r--  1 dietpi dietpi 4.8K Jun  2 22:33 docker-compose.yml
drwxr-xr-x  6 dietpi dietpi 4.0K Jun  2 17:00 .vaultwarden/
drwxrwxrwx  2  65532  65532 4.0K Jun  2 16:50 .domru/
-rw-------  1 dietpi dietpi  25K May 31 15:36 .bash_history
drwxr-xr-x  8 dietpi dietpi 4.0K May 28 15:20 .node-red/
drwxr-xr-x  3 dietpi dietpi 4.0K May  8 22:04 .homepage/
drwxr-xr-x  4 root   root   4.0K May  3 13:59 .android/
drwx------  3 dietpi dietpi 4.0K Apr 27 15:57 .config/
-rw-r--r--  1 dietpi dietpi 1.4K Apr 24 14:19 .multibackup
drwxr-xr-x  3 dietpi dietpi 4.0K Jan 16 09:53 .esphome/
drwxr-xr-x  4 root   root   4.0K Dec 31 00:44 .scrypted/
drwxr-xr-x  2 dietpi dietpi 4.0K Nov 27  2023 .go2rtc/
-rw-r--r--  1 dietpi dietpi  571 Nov 27  2023 .bashrc
-rw-r--r--  1 dietpi dietpi  436 Nov 27  2023 tunnel-nbzsv7.service
drwxr-xr-x  2 dietpi dietpi 4.0K Nov 27  2023 .ssh/
drwxr-xr-x  3 root   root   4.0K Nov 24  2023 ../
-rw-r--r--  1 dietpi dietpi  161 Nov 24  2023 .profile
-rw-r--r--  1 dietpi dietpi  220 Apr 24  2023 .bash_logout
dietpi@kubik3:~$ ll .domru/
total 12K
drwxr-xr-x 12 dietpi dietpi 4.0K Jun  2 22:33 ../
-rwxrwxrwx  1  65532  65532  163 Jun  2 17:07 account.json*
drwxrwxrwx  2  65532  65532 4.0K Jun  2 16:50 ./
-rwxrwxrwx  1  65532  65532    0 Jun  2 16:50 accounts.json*
dietpi@kubik3:~$ 

this 0.1.6-dev.0 work good and have all permit to rw account.json

@twocolors
Copy link

user: 0:0 this help , but running as root is a bad idea

@moleus
Copy link
Owner Author

moleus commented Jun 3, 2024

    volumes:
      - "/home/dietpi/.domru:/share/domofon"

I think that you also have to specify workdir or credentials path because default workdir is / and user can't write to it.

P.S: added /share/domofon/accounts.json as a default path for credentials file. Not it should work out of the box ;)

@twocolors
Copy link

@moleus oh if you can find me in https://t.me/alice_in_red_wonderland

* fix: phone on web

* fix: rest template for HA

* fix: web if else for phone
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants