diff --git a/assets/static/networkChangeNotifier.js b/assets/static/networkChangeNotifier.js index 22a9d76..b444162 100644 --- a/assets/static/networkChangeNotifier.js +++ b/assets/static/networkChangeNotifier.js @@ -11,20 +11,20 @@ var commonModule = (function () { pub.startWatching = function (_notifyPort, _web3) { notifyPort = _notifyPort; web3 = _web3; - setInterval(checkNetworkId, 100); + // setInterval(checkNetworkId, 100); } - var checkNetworkId = function () { - web3.version.getNetwork(function (e, networkId) { - if (e) { - console.log("error with web3.version.getNetwork: ", e); - } - else if (networkId != lastNetworkId) { - notifyPort.send(parseInt(networkId)); - lastNetworkId = networkId; - } - }); - } + // var checkNetworkId = function () { + // web3.version.getNetwork(function (e, networkId) { + // if (e) { + // console.log("error with web3.version.getNetwork: ", e); + // } + // else if (networkId != lastNetworkId) { + // notifyPort.send(parseInt(networkId)); + // lastNetworkId = networkId; + // } + // }); + // } return pub; })(); diff --git a/docs/404.html b/docs/404.html index 69036af..5ff32e7 100644 --- a/docs/404.html +++ b/docs/404.html @@ -28,6 +28,6 @@
- + \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 69036af..5ff32e7 100644 --- a/docs/index.html +++ b/docs/index.html @@ -28,6 +28,6 @@
- + \ No newline at end of file diff --git a/docs/static/js/main-30b6f9d20a094e02ae79.js b/docs/static/js/main-30b6f9d20a094e02ae79.js deleted file mode 100644 index 6d8d26d..0000000 --- a/docs/static/js/main-30b6f9d20a094e02ae79.js +++ /dev/null @@ -1,7 +0,0 @@ -!function(e){function t(n){if(r[n])return r[n].exports;var a=r[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var r={};t.m=e,t.c=r,t.i=function(e){return e},t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/DAIHard/",t(t.s=43)}([function(e,t){e.exports={options:{usePureJavaScript:!1}}},function(e,t,r){(function(t,n,a,i){function o(e){if(8!==e&&16!==e&&24!==e&&32!==e)throw new Error("Only 8, 16, 24, or 32 bits supported: "+e)}function u(e){if(this.data="",this.read=0,"string"==typeof e)this.data=e;else if(l.isArrayBuffer(e)||l.isArrayBufferView(e))if(void 0!==i&&e instanceof i)this.data=e.toString("binary");else{var t=new Uint8Array(e);try{this.data=String.fromCharCode.apply(null,t)}catch(e){for(var r=0;r15?(i=Date.now(),s(e)):(a.push(e),1===a.length&&u.setAttribute("a",o=!o))}}l.nextTick=l.setImmediate}(),l.isNodejs=void 0!==t&&t.versions&&t.versions.node,l.globalScope=function(){return l.isNodejs?a:"undefined"==typeof self?window:self}(),l.isArray=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},l.isArrayBuffer=function(e){return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer},l.isArrayBufferView=function(e){return e&&l.isArrayBuffer(e.buffer)&&void 0!==e.byteLength},l.ByteBuffer=u,l.ByteStringBuffer=u;l.ByteStringBuffer.prototype._optimizeConstructedString=function(e){this._constructedStringLength+=e,this._constructedStringLength>4096&&(this.data.substr(0,1),this._constructedStringLength=0)},l.ByteStringBuffer.prototype.length=function(){return this.data.length-this.read},l.ByteStringBuffer.prototype.isEmpty=function(){return this.length()<=0},l.ByteStringBuffer.prototype.putByte=function(e){return this.putBytes(String.fromCharCode(e))},l.ByteStringBuffer.prototype.fillWithByte=function(e,t){e=String.fromCharCode(e);for(var r=this.data;t>0;)1&t&&(r+=e),(t>>>=1)>0&&(e+=e);return this.data=r,this._optimizeConstructedString(t),this},l.ByteStringBuffer.prototype.putBytes=function(e){return this.data+=e,this._optimizeConstructedString(e.length),this},l.ByteStringBuffer.prototype.putString=function(e){return this.putBytes(l.encodeUtf8(e))},l.ByteStringBuffer.prototype.putInt16=function(e){return this.putBytes(String.fromCharCode(e>>8&255)+String.fromCharCode(255&e))},l.ByteStringBuffer.prototype.putInt24=function(e){return this.putBytes(String.fromCharCode(e>>16&255)+String.fromCharCode(e>>8&255)+String.fromCharCode(255&e))},l.ByteStringBuffer.prototype.putInt32=function(e){return this.putBytes(String.fromCharCode(e>>24&255)+String.fromCharCode(e>>16&255)+String.fromCharCode(e>>8&255)+String.fromCharCode(255&e))},l.ByteStringBuffer.prototype.putInt16Le=function(e){return this.putBytes(String.fromCharCode(255&e)+String.fromCharCode(e>>8&255))},l.ByteStringBuffer.prototype.putInt24Le=function(e){return this.putBytes(String.fromCharCode(255&e)+String.fromCharCode(e>>8&255)+String.fromCharCode(e>>16&255))},l.ByteStringBuffer.prototype.putInt32Le=function(e){return this.putBytes(String.fromCharCode(255&e)+String.fromCharCode(e>>8&255)+String.fromCharCode(e>>16&255)+String.fromCharCode(e>>24&255))},l.ByteStringBuffer.prototype.putInt=function(e,t){o(t);var r="";do{t-=8,r+=String.fromCharCode(e>>t&255)}while(t>0);return this.putBytes(r)},l.ByteStringBuffer.prototype.putSignedInt=function(e,t){return e<0&&(e+=2<0);return t},l.ByteStringBuffer.prototype.getSignedInt=function(e){var t=this.getInt(e),r=2<=r&&(t-=r<<1),t},l.ByteStringBuffer.prototype.getBytes=function(e){var t;return e?(e=Math.min(this.length(),e),t=this.data.slice(this.read,this.read+e),this.read+=e):0===e?t="":(t=0===this.read?this.data:this.data.slice(this.read),this.clear()),t},l.ByteStringBuffer.prototype.bytes=function(e){return void 0===e?this.data.slice(this.read):this.data.slice(this.read,this.read+e)},l.ByteStringBuffer.prototype.at=function(e){return this.data.charCodeAt(this.read+e)},l.ByteStringBuffer.prototype.setAt=function(e,t){return this.data=this.data.substr(0,this.read+e)+String.fromCharCode(t)+this.data.substr(this.read+e+1),this},l.ByteStringBuffer.prototype.last=function(){return this.data.charCodeAt(this.data.length-1)},l.ByteStringBuffer.prototype.copy=function(){var e=l.createBuffer(this.data);return e.read=this.read,e},l.ByteStringBuffer.prototype.compact=function(){return this.read>0&&(this.data=this.data.slice(this.read),this.read=0),this},l.ByteStringBuffer.prototype.clear=function(){return this.data="",this.read=0,this},l.ByteStringBuffer.prototype.truncate=function(e){var t=Math.max(0,this.length()-e);return this.data=this.data.substr(this.read,t),this.read=0,this},l.ByteStringBuffer.prototype.toHex=function(){for(var e="",t=this.read;t=e)return this;t=Math.max(t||this.growSize,e);var r=new Uint8Array(this.data.buffer,this.data.byteOffset,this.data.byteLength),n=new Uint8Array(this.length()+t);return n.set(r),this.data=new DataView(n.buffer),this},l.DataBuffer.prototype.putByte=function(e){return this.accommodate(1),this.data.setUint8(this.write++,e),this},l.DataBuffer.prototype.fillWithByte=function(e,t){this.accommodate(t);for(var r=0;r>8&65535),this.data.setInt8(this.write,e>>16&255),this.write+=3,this},l.DataBuffer.prototype.putInt32=function(e){return this.accommodate(4),this.data.setInt32(this.write,e),this.write+=4,this},l.DataBuffer.prototype.putInt16Le=function(e){return this.accommodate(2),this.data.setInt16(this.write,e,!0),this.write+=2,this},l.DataBuffer.prototype.putInt24Le=function(e){return this.accommodate(3),this.data.setInt8(this.write,e>>16&255),this.data.setInt16(this.write,e>>8&65535,!0),this.write+=3,this},l.DataBuffer.prototype.putInt32Le=function(e){return this.accommodate(4),this.data.setInt32(this.write,e,!0),this.write+=4,this},l.DataBuffer.prototype.putInt=function(e,t){o(t),this.accommodate(t/8);do{t-=8,this.data.setInt8(this.write++,e>>t&255)}while(t>0);return this},l.DataBuffer.prototype.putSignedInt=function(e,t){return o(t),this.accommodate(t/8),e<0&&(e+=2<0);return t},l.DataBuffer.prototype.getSignedInt=function(e){var t=this.getInt(e),r=2<=r&&(t-=r<<1),t},l.DataBuffer.prototype.getBytes=function(e){var t;return e?(e=Math.min(this.length(),e),t=this.data.slice(this.read,this.read+e),this.read+=e):0===e?t="":(t=0===this.read?this.data:this.data.slice(this.read),this.clear()),t},l.DataBuffer.prototype.bytes=function(e){return void 0===e?this.data.slice(this.read):this.data.slice(this.read,this.read+e)},l.DataBuffer.prototype.at=function(e){return this.data.getUint8(this.read+e)},l.DataBuffer.prototype.setAt=function(e,t){return this.data.setUint8(e,t),this},l.DataBuffer.prototype.last=function(){return this.data.getUint8(this.write-1)},l.DataBuffer.prototype.copy=function(){return new l.DataBuffer(this)},l.DataBuffer.prototype.compact=function(){if(this.read>0){var e=new Uint8Array(this.data.buffer,this.read),t=new Uint8Array(e.byteLength);t.set(e),this.data=new DataView(t),this.write-=this.read,this.read=0}return this},l.DataBuffer.prototype.clear=function(){return this.data=new DataView(new ArrayBuffer(0)),this.read=this.write=0,this},l.DataBuffer.prototype.truncate=function(e){return this.write=Math.max(0,this.length()-e),this.read=Math.min(this.read,this.write),this},l.DataBuffer.prototype.toHex=function(){for(var e="",t=this.read;t0;)1&t&&(r+=e),(t>>>=1)>0&&(e+=e);return r},l.xorBytes=function(e,t,r){for(var n="",a="",i="",o=0,u=0;r>0;--r,++o)a=e.charCodeAt(o)^t.charCodeAt(o),u>=10&&(n+=i,i="",u=0),i+=String.fromCharCode(a),++u;return n+=i},l.hexToBytes=function(e){var t="",r=0;for(!0&e.length&&(r=1,t+=String.fromCharCode(parseInt(e[0],16)));r>24&255)+String.fromCharCode(e>>16&255)+String.fromCharCode(e>>8&255)+String.fromCharCode(255&e)};var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",h=[62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,64,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],p="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";l.encode64=function(e,t){for(var r,n,a,i="",o="",u=0;u>2),i+=d.charAt((3&r)<<4|n>>4),isNaN(n)?i+="==":(i+=d.charAt((15&n)<<2|a>>6),i+=isNaN(a)?"=":d.charAt(63&a)),t&&i.length>t&&(o+=i.substr(0,t)+"\r\n",i=i.substr(t));return o+=i},l.decode64=function(e){e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");for(var t,r,n,a,i="",o=0;o>4),64!==n&&(i+=String.fromCharCode((15&r)<<4|n>>2),64!==a&&(i+=String.fromCharCode((3&n)<<6|a)));return i},l.encodeUtf8=function(e){return unescape(encodeURIComponent(e))},l.decodeUtf8=function(e){return decodeURIComponent(escape(e))},l.binary={raw:{},hex:{},base64:{},base58:{},baseN:{encode:f.encode,decode:f.decode}},l.binary.raw.encode=function(e){return String.fromCharCode.apply(null,e)},l.binary.raw.decode=function(e,t,r){var n=t;n||(n=new Uint8Array(e.length)),r=r||0;for(var a=r,i=0;i>2),i+=d.charAt((3&r)<<4|n>>4),isNaN(n)?i+="==":(i+=d.charAt((15&n)<<2|a>>6),i+=isNaN(a)?"=":d.charAt(63&a)),t&&i.length>t&&(o+=i.substr(0,t)+"\r\n",i=i.substr(t));return o+=i},l.binary.base64.decode=function(e,t,r){var n=t;n||(n=new Uint8Array(3*Math.ceil(e.length/4))),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,""),r=r||0;for(var a,i,o,u,s=0,c=r;s>4,64!==o&&(n[c++]=(15&i)<<4|o>>2,64!==u&&(n[c++]=(3&o)<<6|u));return t?c-r:n.subarray(0,c)},l.binary.base58.encode=function(e,t){return l.binary.baseN.encode(e,p,t)},l.binary.base58.decode=function(e,t){return l.binary.baseN.decode(e,p,t)},l.text={utf8:{},utf16:{}},l.text.utf8.encode=function(e,t,r){e=l.encodeUtf8(e);var n=t;n||(n=new Uint8Array(e.length)),r=r||0;for(var a=r,i=0;i0?(a=r[n].substring(0,o),i=r[n].substring(o+1)):(a=r[n],i=null),a in t||(t[a]=[]),a in Object.prototype||null===i||t[a].push(unescape(i))}return t};return void 0===e?(null===E&&(E="undefined"!=typeof window&&window.location&&window.location.search?r(window.location.search.substring(1)):{}),t=E):t=r(e),t},l.parseFragment=function(e){var t=e,r="",n=e.indexOf("?");n>0&&(t=e.substring(0,n),r=e.substring(n+1));var a=t.split("/");return a.length>0&&""===a[0]&&a.shift(),{pathString:t,queryString:r,path:a,query:""===r?{}:l.getQueryVariables(r)}},l.makeRequest=function(e){var t=l.parseFragment(e),r={path:t.pathString,query:t.queryString,getPath:function(e){return void 0===e?t.path:t.path[e]},getQuery:function(e,r){var n;return void 0===e?n=t.query:(n=t.query[e])&&void 0!==r&&(n=n[r]),n},getQueryLast:function(e,t){var n=r.getQuery(e);return n?n[n.length-1]:t}};return r},l.makeLink=function(e,t,r){e=jQuery.isArray(e)?e.join("/"):e;var n=jQuery.param(t||{});return r=r||"",e+(n.length>0?"?"+n:"")+(r.length>0?"#"+r:"")},l.setPath=function(e,t,r){if("object"==typeof e&&null!==e)for(var n=0,a=t.length;n0&&i.push(r),o=n.lastIndex;var u=t[0][1];switch(u){case"s":case"o":a");break;case"%":i.push("%");break;default:i.push("<%"+u+"?>")}}return i.push(e.substring(o)),i.join("")},l.formatNumber=function(e,t,r,n){var a=e,i=isNaN(t=Math.abs(t))?2:t,o=void 0===r?",":r,u=void 0===n?".":n,s=a<0?"-":"",c=parseInt(a=Math.abs(+a||0).toFixed(i),10)+"",f=c.length>3?c.length%3:0;return s+(f?c.substr(0,f)+u:"")+c.substr(f).replace(/(\d{3})(?=\d)/g,"$1"+u)+(i?o+Math.abs(a-c).toFixed(i).slice(2):"")},l.formatSize=function(e){return e=e>=1073741824?l.formatNumber(e/1073741824,2,".","")+" GiB":e>=1048576?l.formatNumber(e/1048576,2,".","")+" MiB":e>=1024?l.formatNumber(e/1024,0)+" KiB":l.formatNumber(e,0)+" bytes"},l.bytesFromIP=function(e){return-1!==e.indexOf(".")?l.bytesFromIPv4(e):-1!==e.indexOf(":")?l.bytesFromIPv6(e):null},l.bytesFromIPv4=function(e){if(e=e.split("."),4!==e.length)return null;for(var t=l.createBuffer(),r=0;rr[n].end-r[n].start&&(n=r.length-1)):r.push({start:u,end:u})}t.push(i)}if(r.length>0){var s=r[n];s.end-s.start>0&&(t.splice(s.start,s.end-s.start+1,""),0===s.start&&t.unshift(""),7===s.end&&t.push(""))}return t.join(":")},l.estimateCores=function(e,t){function r(e,o,u){if(0===o){var s=Math.floor(e.reduce(function(e,t){return e+t},0)/e.length);return l.cores=Math.max(1,s),URL.revokeObjectURL(i),t(null,l.cores)}n(u,function(t,n){e.push(a(u,n)),r(e,o-1,u)})}function n(e,t){for(var r=[],n=[],a=0;au.st&&a.sta.st&&u.st0)return l.cores=navigator.hardwareConcurrency,t(null,l.cores);if("undefined"==typeof Worker)return l.cores=1,t(null,l.cores);if("undefined"==typeof Blob)return l.cores=2,t(null,l.cores);var i=URL.createObjectURL(new Blob(["(",function(){self.addEventListener("message",function(e){for(var t=Date.now(),r=t+4;Date.now()t){var n=new Error("Too few bytes to parse DER.");throw n.available=e.length(),n.remaining=t,n.requested=r,n}}function a(e,t,r,i){var s;n(e,t,2);var c=e.getByte();t--;var f=192&c,l=31&c;s=e.length();var d=u(e,t);if(t-=s-e.length(),void 0!==d&&d>t){if(i.strict){var h=new Error("Too few bytes to read ASN.1 value.");throw h.available=e.length(),h.remaining=t,h.requested=d,h}d=t}var p,g,v=32==(32&c);if(v)if(p=[],void 0===d)for(;;){if(n(e,t,2),e.bytes(2)===String.fromCharCode(0,0)){e.getBytes(2),t-=2;break}s=e.length(),p.push(a(e,t,r+1,i)),t-=s-e.length()}else for(;d>0;)s=e.length(),p.push(a(e,d,r+1,i)),t-=s-e.length(),d-=s-e.length();if(void 0===p&&f===o.Class.UNIVERSAL&&l===o.Type.BITSTRING&&(g=e.bytes(d)),void 0===p&&i.decodeBitStrings&&f===o.Class.UNIVERSAL&&l===o.Type.BITSTRING&&d>1){var y=e.read,m=t,b=0;if(l===o.Type.BITSTRING&&(n(e,t,1),b=e.getByte(),t--),0===b)try{s=e.length();var C={verbose:i.verbose,strict:!0,decodeBitStrings:!0},S=a(e,t,r+1,C),E=s-e.length();t-=E,l==o.Type.BITSTRING&&E++;var T=S.tagClass;E!==d||T!==o.Class.UNIVERSAL&&T!==o.Class.CONTEXT_SPECIFIC||(p=[S])}catch(e){}void 0===p&&(e.read=y,t=m)}if(void 0===p){if(void 0===d){if(i.strict)throw new Error("Non-constructed ASN.1 object of indefinite length.");d=t}if(l===o.Type.BMPSTRING)for(p="";d>0;d-=2)n(e,t,2),p+=String.fromCharCode(e.getInt16()),t-=2;else p=e.getBytes(d)}var w=void 0===g?null:{bitStringContents:g};return o.create(f,l,v,p,w)}var i=r(0);r(1),r(6);var o=e.exports=i.asn1=i.asn1||{};o.Class={UNIVERSAL:0,APPLICATION:64,CONTEXT_SPECIFIC:128,PRIVATE:192},o.Type={NONE:0,BOOLEAN:1,INTEGER:2,BITSTRING:3,OCTETSTRING:4,NULL:5,OID:6,ODESC:7,EXTERNAL:8,REAL:9,ENUMERATED:10,EMBEDDED:11,UTF8:12,ROID:13,SEQUENCE:16,SET:17,PRINTABLESTRING:19,IA5STRING:22,UTCTIME:23,GENERALIZEDTIME:24,BMPSTRING:30},o.create=function(e,t,r,n,a){if(i.util.isArray(n)){for(var u=[],s=0;s1&&(0===e.value.charCodeAt(0)&&0==(128&e.value.charCodeAt(1))||255===e.value.charCodeAt(0)&&128==(128&e.value.charCodeAt(1)))?n.putBytes(e.value.substr(1)):n.putBytes(e.value);if(t.putByte(r),n.length()<=127)t.putByte(127&n.length());else{var s=n.length(),c="";do{c+=String.fromCharCode(255&s),s>>>=8}while(s>0);t.putByte(128|c.length);for(var u=c.length-1;u>=0;--u)t.putByte(c.charCodeAt(u))}return t.putBuffer(n),t},o.oidToDer=function(e){var t=e.split("."),r=i.util.createBuffer();r.putByte(40*parseInt(t[0],10)+parseInt(t[1],10));for(var n,a,o,u,s=2;s>>=7,n||(u|=128),a.push(u),n=!1}while(o>0);for(var c=a.length-1;c>=0;--c)r.putByte(a[c])}return r},o.derToOid=function(e){var t;"string"==typeof e&&(e=i.util.createBuffer(e));var r=e.getByte();t=Math.floor(r/40)+"."+r%40;for(var n=0;e.length()>0;)r=e.getByte(),n<<=7,128&r?n+=127&r:(t+="."+(n+r),n=0);return t},o.utcTimeToDate=function(e){var t=new Date,r=parseInt(e.substr(0,2),10);r=r>=50?1900+r:2e3+r;var n=parseInt(e.substr(2,2),10)-1,a=parseInt(e.substr(4,2),10),i=parseInt(e.substr(6,2),10),o=parseInt(e.substr(8,2),10),u=0;if(e.length>11){var s=e.charAt(10),c=10;"+"!==s&&"-"!==s&&(u=parseInt(e.substr(10,2),10),c+=2)}if(t.setUTCFullYear(r,n,a),t.setUTCHours(i,o,u,0),c&&("+"===(s=e.charAt(c))||"-"===s)){var f=parseInt(e.substr(c+1,2),10),l=parseInt(e.substr(c+4,2),10),d=60*f+l;d*=6e4,"+"===s?t.setTime(+t-d):t.setTime(+t+d)}return t},o.generalizedTimeToDate=function(e){var t=new Date,r=parseInt(e.substr(0,4),10),n=parseInt(e.substr(4,2),10)-1,a=parseInt(e.substr(6,2),10),i=parseInt(e.substr(8,2),10),o=parseInt(e.substr(10,2),10),u=parseInt(e.substr(12,2),10),s=0,c=0,f=!1;"Z"===e.charAt(e.length-1)&&(f=!0);var l=e.length-5,d=e.charAt(l);if("+"===d||"-"===d){c=60*parseInt(e.substr(l+1,2),10)+parseInt(e.substr(l+4,2),10),c*=6e4,"+"===d&&(c*=-1),f=!0}return"."===e.charAt(14)&&(s=1e3*parseFloat(e.substr(14),10)),f?(t.setUTCFullYear(r,n,a),t.setUTCHours(i,o,u,s),t.setTime(+t+c)):(t.setFullYear(r,n,a),t.setHours(i,o,u,s)),t},o.dateToUtcTime=function(e){if("string"==typeof e)return e;var t="",r=[];r.push((""+e.getUTCFullYear()).substr(2)),r.push(""+(e.getUTCMonth()+1)),r.push(""+e.getUTCDate()),r.push(""+e.getUTCHours()),r.push(""+e.getUTCMinutes()),r.push(""+e.getUTCSeconds());for(var n=0;n=-128&&e<128)return t.putSignedInt(e,8);if(e>=-32768&&e<32768)return t.putSignedInt(e,16);if(e>=-8388608&&e<8388608)return t.putSignedInt(e,24);if(e>=-2147483648&&e<2147483648)return t.putSignedInt(e,32);var r=new Error("Integer too large; max is 32-bits.");throw r.integer=e,r},o.derToInteger=function(e){"string"==typeof e&&(e=i.util.createBuffer(e));var t=8*e.length();if(t>32)throw new Error("Integer too large; max is 32-bits.");return e.getSignedInt(t)},o.validate=function(e,t,r,n){var a=!1;if(e.tagClass!==t.tagClass&&void 0!==t.tagClass||e.type!==t.type&&void 0!==t.type)n&&(e.tagClass!==t.tagClass&&n.push("["+t.name+'] Expected tag class "'+t.tagClass+'", got "'+e.tagClass+'"'),e.type!==t.type&&n.push("["+t.name+'] Expected type "'+t.type+'", got "'+e.type+'"'));else if(e.constructed===t.constructed||void 0===t.constructed){if(a=!0,t.value&&i.util.isArray(t.value))for(var u=0,s=0;a&&s0&&(n+="\n");for(var a="",u=0;u1?n+="0x"+i.util.bytesToHex(e.value.slice(1)):n+="(none)",e.value.length>0){var d=e.value.charCodeAt(0);1==d?n+=" (1 unused bit shown)":d>1&&(n+=" ("+d+" unused bits shown)")}}else e.type===o.Type.OCTETSTRING?(s.test(e.value)||(n+="("+e.value+") "),n+="0x"+i.util.bytesToHex(e.value)):e.type===o.Type.UTF8?n+=i.util.decodeUtf8(e.value):e.type===o.Type.PRINTABLESTRING||e.type===o.Type.IA5String?n+=e.value:s.test(e.value)?n+="0x"+i.util.bytesToHex(e.value):0===e.value.length?n+="[null]":n+=e.value}return n}},function(e,t,r){var n=r(0);e.exports=n.md=n.md||{},n.md.algorithms=n.md.algorithms||{}},function(e,t,r){function n(e,t){var r=function(){return new s.aes.Algorithm(e,t)};s.cipher.registerAlgorithm(e,r)}function a(){p=!0,l=[0,1,2,4,8,16,32,64,128,27,54];for(var e=new Array(256),t=0;t<128;++t)e[t]=t<<1,e[t+128]=t+128<<1^283;c=new Array(256),f=new Array(256),d=new Array(4),h=new Array(4);for(var t=0;t<4;++t)d[t]=new Array(256),h[t]=new Array(256);for(var r,n,a,i,o,u,s,g=0,v=0,t=0;t<256;++t){i=v^v<<1^v<<2^v<<3^v<<4,i=i>>8^255&i^99,c[g]=i,f[i]=g,o=e[i],r=e[g],n=e[r],a=e[n],u=o<<24^i<<16^i<<8^i^o,s=(r^n^a)<<24^(g^a)<<16^(g^n^a)<<8^g^r^a;for(var y=0;y<4;++y)d[y][g]=u,h[y][i]=s,u=u<<24|u>>>8,s=s<<24|s>>>8;0===g?g=v=1:(g=r^e[e[e[r^a]]],v^=e[e[v]])}}function i(e,t){for(var r,n=e.slice(0),a=1,i=n.length,o=i+6+1,u=g*o,s=i;s>>16&255]<<24^c[r>>>8&255]<<16^c[255&r]<<8^c[r>>>24]^l[a]<<24,a++):i>6&&s%i==4&&(r=c[r>>>24]<<24^c[r>>>16&255]<<16^c[r>>>8&255]<<8^c[255&r]),n[s]=n[s-i]^r;if(t){var f,d=h[0],p=h[1],v=h[2],y=h[3],m=n.slice(0);u=n.length;for(var s=0,b=u-g;s>>24]]^p[c[f>>>16&255]]^v[c[f>>>8&255]]^y[c[255&f]];n=m}return n}function o(e,t,r,n){var a,i,o,u,s,l=e.length/4-1;n?(a=h[0],i=h[1],o=h[2],u=h[3],s=f):(a=d[0],i=d[1],o=d[2],u=d[3],s=c);var p,g,v,y,m,b,C;p=t[0]^e[0],g=t[n?3:1]^e[1],v=t[2]^e[2],y=t[n?1:3]^e[3];for(var S=3,E=1;E>>24]^i[g>>>16&255]^o[v>>>8&255]^u[255&y]^e[++S],b=a[g>>>24]^i[v>>>16&255]^o[y>>>8&255]^u[255&p]^e[++S],C=a[v>>>24]^i[y>>>16&255]^o[p>>>8&255]^u[255&g]^e[++S],y=a[y>>>24]^i[p>>>16&255]^o[g>>>8&255]^u[255&v]^e[++S],p=m,g=b,v=C;r[0]=s[p>>>24]<<24^s[g>>>16&255]<<16^s[v>>>8&255]<<8^s[255&y]^e[++S],r[n?3:1]=s[g>>>24]<<24^s[v>>>16&255]<<16^s[y>>>8&255]<<8^s[255&p]^e[++S],r[2]=s[v>>>24]<<24^s[y>>>16&255]<<16^s[p>>>8&255]<<8^s[255&g]^e[++S],r[n?1:3]=s[y>>>24]<<24^s[p>>>16&255]<<16^s[g>>>8&255]<<8^s[255&v]^e[++S]}function u(e){e=e||{};var t,r=(e.mode||"CBC").toUpperCase(),n="AES-"+r;t=e.decrypt?s.cipher.createDecipher(n,e.key):s.cipher.createCipher(n,e.key);var a=t.start;return t.start=function(e,r){var n=null;r instanceof s.util.ByteBuffer&&(n=r,r={}),r=r||{},r.output=n,r.iv=e,a.call(t,r)},t}var s=r(0);r(15),r(23),r(1),e.exports=s.aes=s.aes||{},s.aes.startEncrypting=function(e,t,r,n){var a=u({key:e,output:r,decrypt:!1,mode:n});return a.start(t),a},s.aes.createEncryptionCipher=function(e,t){return u({key:e,output:null,decrypt:!1,mode:t})},s.aes.startDecrypting=function(e,t,r,n){var a=u({key:e,output:r,decrypt:!0,mode:n});return a.start(t),a},s.aes.createDecryptionCipher=function(e,t){return u({key:e,output:null,decrypt:!0,mode:t})},s.aes.Algorithm=function(e,t){p||a();var r=this;r.name=e,r.mode=new t({blockSize:16,cipher:{encrypt:function(e,t){return o(r._w,e,t,!1)},decrypt:function(e,t){return o(r._w,e,t,!0)}}}),r._init=!1},s.aes.Algorithm.prototype.initialize=function(e){if(!this._init){var t,r=e.key;if("string"!=typeof r||16!==r.length&&24!==r.length&&32!==r.length){if(s.util.isArray(r)&&(16===r.length||24===r.length||32===r.length)){t=r,r=s.util.createBuffer();for(var n=0;n>>=2;for(var n=0;n65&&-1!==o){var u=t[o];","===u?(++o,t=t.substr(0,o)+"\r\n "+t.substr(o)):t=t.substr(0,o)+"\r\n"+u+t.substr(o+1),i=a-o-1,o=-1,++a}else" "!==t[a]&&"\t"!==t[a]&&","!==t[a]||(o=a);return t}function a(e){return e.replace(/^\s+/,"")}var i=r(0);r(1);var o=e.exports=i.pem=i.pem||{};o.encode=function(e,t){t=t||{};var r,a="-----BEGIN "+e.type+"-----\r\n";if(e.procType&&(r={name:"Proc-Type",values:[String(e.procType.version),e.procType.type]},a+=n(r)),e.contentDomain&&(r={name:"Content-Domain",values:[e.contentDomain]},a+=n(r)),e.dekInfo&&(r={name:"DEK-Info",values:[e.dekInfo.algorithm]},e.dekInfo.parameters&&r.values.push(e.dekInfo.parameters),a+=n(r)),e.headers)for(var o=0;ot.blockLength&&(t.start(),t.update(o.bytes()),o=t.digest()),r=n.util.createBuffer(),a=n.util.createBuffer(),c=o.length();for(var s=0;s=64;){for(a=e.h0,i=e.h1,o=e.h2,u=e.h3,s=e.h4,f=0;f<16;++f)n=r.getInt32(),t[f]=n,c=u^i&(o^u),n=(a<<5|a>>>27)+c+s+1518500249+n,s=u,u=o,o=(i<<30|i>>>2)>>>0,i=a,a=n;for(;f<20;++f)n=t[f-3]^t[f-8]^t[f-14]^t[f-16],n=n<<1|n>>>31,t[f]=n,c=u^i&(o^u),n=(a<<5|a>>>27)+c+s+1518500249+n,s=u,u=o,o=(i<<30|i>>>2)>>>0,i=a,a=n;for(;f<32;++f)n=t[f-3]^t[f-8]^t[f-14]^t[f-16],n=n<<1|n>>>31,t[f]=n,c=i^o^u,n=(a<<5|a>>>27)+c+s+1859775393+n,s=u,u=o,o=(i<<30|i>>>2)>>>0,i=a,a=n;for(;f<40;++f)n=t[f-6]^t[f-16]^t[f-28]^t[f-32],n=n<<2|n>>>30,t[f]=n,c=i^o^u,n=(a<<5|a>>>27)+c+s+1859775393+n,s=u,u=o,o=(i<<30|i>>>2)>>>0,i=a,a=n;for(;f<60;++f)n=t[f-6]^t[f-16]^t[f-28]^t[f-32],n=n<<2|n>>>30,t[f]=n,c=i&o|u&(i^o),n=(a<<5|a>>>27)+c+s+2400959708+n,s=u,u=o,o=(i<<30|i>>>2)>>>0,i=a,a=n;for(;f<80;++f)n=t[f-6]^t[f-16]^t[f-28]^t[f-32],n=n<<2|n>>>30,t[f]=n,c=i^o^u,n=(a<<5|a>>>27)+c+s+3395469782+n,s=u,u=o,o=(i<<30|i>>>2)>>>0,i=a,a=n;e.h0=e.h0+a|0,e.h1=e.h1+i|0,e.h2=e.h2+o|0,e.h3=e.h3+u|0,e.h4=e.h4+s|0,l-=64}}var i=r(0);r(4),r(1);var o=e.exports=i.sha1=i.sha1||{};i.md.sha1=i.md.algorithms.sha1=o,o.create=function(){s||n();var e=null,t=i.util.createBuffer(),r=new Array(80),o={algorithm:"sha1",blockLength:64,digestLength:20,messageLength:0,fullMessageLength:null,messageLengthSize:8};return o.start=function(){o.messageLength=0,o.fullMessageLength=o.messageLength64=[];for(var r=o.messageLengthSize/4,n=0;n>>0,s>>>0];for(var c=o.fullMessageLength.length-1;c>=0;--c)o.fullMessageLength[c]+=s[1],s[1]=s[0]+(o.fullMessageLength[c]/4294967296>>>0),o.fullMessageLength[c]=o.fullMessageLength[c]>>>0,s[0]=s[1]/4294967296>>>0;return t.putBytes(n),a(e,r,t),(t.read>2048||0===t.length())&&t.compact(),o},o.digest=function(){var n=i.util.createBuffer();n.putBytes(t.bytes());var s=o.fullMessageLength[o.fullMessageLength.length-1]+o.messageLengthSize,c=s&o.blockLength-1;n.putBytes(u.substr(0,o.blockLength-c));for(var f,l,d=8*o.fullMessageLength[0],h=0;h>>0,d+=l,n.putInt32(d>>>0),d=f>>>0;n.putInt32(d);var p={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3,h4:e.h4};a(p,r,n);var g=i.util.createBuffer();return g.putInt32(p.h0),g.putInt32(p.h1),g.putInt32(p.h2),g.putInt32(p.h3),g.putInt32(p.h4),g},o};var u=null,s=!1},function(e,t,r){"use strict";(function(e){function n(){return i.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(e,t){if(n()=n())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n().toString(16)+" bytes");return 0|e}function g(e){return+e!=e&&(e=0),i.alloc(+e)}function v(e,t){if(i.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return j(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return z(e).length;default:if(n)return j(e).length;t=(""+t).toLowerCase(),n=!0}}function y(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if(r>>>=0,t>>>=0,r<=t)return"";for(e||(e="utf8");;)switch(e){case"hex":return x(this,t,r);case"utf8":case"utf-8":return k(this,t,r);case"ascii":return R(this,t,r);case"latin1":case"binary":return $(this,t,r);case"base64":return B(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return _(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function m(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function b(e,t,r,n,a){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=a?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(a)return-1;r=e.length-1}else if(r<0){if(!a)return-1;r=0}if("string"==typeof t&&(t=i.from(t,n)),i.isBuffer(t))return 0===t.length?-1:C(e,t,r,n,a);if("number"==typeof t)return t&=255,i.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?a?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):C(e,[t],r,n,a);throw new TypeError("val must be string, number or Buffer")}function C(e,t,r,n,a){function i(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}var o=1,u=e.length,s=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;o=2,u/=2,s/=2,r/=2}var c;if(a){var f=-1;for(c=r;cu&&(r=u-s),c=r;c>=0;c--){for(var l=!0,d=0;da&&(n=a):n=a;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");n>i/2&&(n=i/2);for(var o=0;o239?4:i>223?3:i>191?2:1;if(a+u<=r){var s,c,f,l;switch(u){case 1:i<128&&(o=i);break;case 2:s=e[a+1],128==(192&s)&&(l=(31&i)<<6|63&s)>127&&(o=l);break;case 3:s=e[a+1],c=e[a+2],128==(192&s)&&128==(192&c)&&(l=(15&i)<<12|(63&s)<<6|63&c)>2047&&(l<55296||l>57343)&&(o=l);break;case 4:s=e[a+1],c=e[a+2],f=e[a+3],128==(192&s)&&128==(192&c)&&128==(192&f)&&(l=(15&i)<<18|(63&s)<<12|(63&c)<<6|63&f)>65535&&l<1114112&&(o=l)}}null===o?(o=65533,u=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),a+=u}return N(n)}function N(e){var t=e.length;if(t<=Z)return String.fromCharCode.apply(String,e);for(var r="",n=0;nn)&&(r=n);for(var a="",i=t;ir)throw new RangeError("Trying to access beyond buffer length")}function P(e,t,r,n,a,o){if(!i.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>a||te.length)throw new RangeError("Index out of range")}function D(e,t,r,n){t<0&&(t=65535+t+1);for(var a=0,i=Math.min(e.length-r,2);a>>8*(n?a:1-a)}function U(e,t,r,n){t<0&&(t=4294967295+t+1);for(var a=0,i=Math.min(e.length-r,4);a>>8*(n?a:3-a)&255}function O(e,t,r,n,a,i){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function M(e,t,r,n,a){return a||O(e,t,r,4,3.4028234663852886e38,-3.4028234663852886e38),Q.write(e,t,r,n,23,4),r+4}function F(e,t,r,n,a){return a||O(e,t,r,8,1.7976931348623157e308,-1.7976931348623157e308),Q.write(e,t,r,n,52,8),r+8}function V(e){if(e=K(e).replace(ee,""),e.length<2)return"";for(;e.length%4!=0;)e+="=";return e}function K(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function H(e){return e<16?"0"+e.toString(16):e.toString(16)}function j(e,t){t=t||1/0;for(var r,n=e.length,a=null,i=[],o=0;o55295&&r<57344){if(!a){if(r>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(o+1===n){(t-=3)>-1&&i.push(239,191,189);continue}a=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),a=r;continue}r=65536+(a-55296<<10|r-56320)}else a&&(t-=3)>-1&&i.push(239,191,189);if(a=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function q(e){for(var t=[],r=0;r>8,a=r%256,i.push(a),i.push(n);return i}function z(e){return J.toByteArray(V(e))}function Y(e,t,r,n){for(var a=0;a=t.length||a>=e.length);++a)t[a+r]=e[a];return a}function W(e){return e!==e}/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -var J=r(44),Q=r(45),X=r(46);t.Buffer=i,t.SlowBuffer=g,t.INSPECT_MAX_BYTES=50,i.TYPED_ARRAY_SUPPORT=void 0!==e.TYPED_ARRAY_SUPPORT?e.TYPED_ARRAY_SUPPORT:function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()&&"function"==typeof e.subarray&&0===e.subarray(1,1).byteLength}catch(e){return!1}}(),t.kMaxLength=n(),i.poolSize=8192,i._augment=function(e){return e.__proto__=i.prototype,e},i.from=function(e,t,r){return o(null,e,t,r)},i.TYPED_ARRAY_SUPPORT&&(i.prototype.__proto__=Uint8Array.prototype,i.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&i[Symbol.species]===i&&Object.defineProperty(i,Symbol.species,{value:null,configurable:!0})),i.alloc=function(e,t,r){return s(null,e,t,r)},i.allocUnsafe=function(e){return c(null,e)},i.allocUnsafeSlow=function(e){return c(null,e)},i.isBuffer=function(e){return!(null==e||!e._isBuffer)},i.compare=function(e,t){if(!i.isBuffer(e)||!i.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var r=e.length,n=t.length,a=0,o=Math.min(r,n);a0&&(e=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(e+=" ... ")),""},i.prototype.compare=function(e,t,r,n,a){if(!i.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===a&&(a=this.length),t<0||r>e.length||n<0||a>this.length)throw new RangeError("out of range index");if(n>=a&&t>=r)return 0;if(n>=a)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,a>>>=0,this===e)return 0;for(var o=a-n,u=r-t,s=Math.min(o,u),c=this.slice(n,a),f=e.slice(t,r),l=0;la)&&(r=a),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return S(this,e,t,r);case"utf8":case"utf-8":return E(this,e,t,r);case"ascii":return T(this,e,t,r);case"latin1":case"binary":return w(this,e,t,r);case"base64":return I(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,e,t,r);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},i.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var Z=4096;i.prototype.slice=function(e,t){var r=this.length;e=~~e,t=void 0===t?r:~~t,e<0?(e+=r)<0&&(e=0):e>r&&(e=r),t<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(a*=256);)n+=this[e+--t]*a;return n},i.prototype.readUInt8=function(e,t){return t||L(e,1,this.length),this[e]},i.prototype.readUInt16LE=function(e,t){return t||L(e,2,this.length),this[e]|this[e+1]<<8},i.prototype.readUInt16BE=function(e,t){return t||L(e,2,this.length),this[e]<<8|this[e+1]},i.prototype.readUInt32LE=function(e,t){return t||L(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},i.prototype.readUInt32BE=function(e,t){return t||L(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},i.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||L(e,t,this.length);for(var n=this[e],a=1,i=0;++i=a&&(n-=Math.pow(2,8*t)),n},i.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||L(e,t,this.length);for(var n=t,a=1,i=this[e+--n];n>0&&(a*=256);)i+=this[e+--n]*a;return a*=128,i>=a&&(i-=Math.pow(2,8*t)),i},i.prototype.readInt8=function(e,t){return t||L(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},i.prototype.readInt16LE=function(e,t){t||L(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},i.prototype.readInt16BE=function(e,t){t||L(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},i.prototype.readInt32LE=function(e,t){return t||L(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},i.prototype.readInt32BE=function(e,t){return t||L(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},i.prototype.readFloatLE=function(e,t){return t||L(e,4,this.length),Q.read(this,e,!0,23,4)},i.prototype.readFloatBE=function(e,t){return t||L(e,4,this.length),Q.read(this,e,!1,23,4)},i.prototype.readDoubleLE=function(e,t){return t||L(e,8,this.length),Q.read(this,e,!0,52,8)},i.prototype.readDoubleBE=function(e,t){return t||L(e,8,this.length),Q.read(this,e,!1,52,8)},i.prototype.writeUIntLE=function(e,t,r,n){if(e=+e,t|=0,r|=0,!n){P(this,e,t,r,Math.pow(2,8*r)-1,0)}var a=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+a]=e/i&255;return t+r},i.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||P(this,e,t,1,255,0),i.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},i.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||P(this,e,t,2,65535,0),i.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):D(this,e,t,!0),t+2},i.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||P(this,e,t,2,65535,0),i.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):D(this,e,t,!1),t+2},i.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||P(this,e,t,4,4294967295,0),i.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):U(this,e,t,!0),t+4},i.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||P(this,e,t,4,4294967295,0),i.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):U(this,e,t,!1),t+4},i.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var a=Math.pow(2,8*r-1);P(this,e,t,r,a-1,-a)}var i=0,o=1,u=0;for(this[t]=255&e;++i>0)-u&255;return t+r},i.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var a=Math.pow(2,8*r-1);P(this,e,t,r,a-1,-a)}var i=r-1,o=1,u=0;for(this[t+i]=255&e;--i>=0&&(o*=256);)e<0&&0===u&&0!==this[t+i+1]&&(u=1),this[t+i]=(e/o>>0)-u&255;return t+r},i.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||P(this,e,t,1,127,-128),i.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},i.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||P(this,e,t,2,32767,-32768),i.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):D(this,e,t,!0),t+2},i.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||P(this,e,t,2,32767,-32768),i.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):D(this,e,t,!1),t+2},i.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||P(this,e,t,4,2147483647,-2147483648),i.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):U(this,e,t,!0),t+4},i.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||P(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),i.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):U(this,e,t,!1),t+4},i.prototype.writeFloatLE=function(e,t,r){return M(this,e,t,!0,r)},i.prototype.writeFloatBE=function(e,t,r){return M(this,e,t,!1,r)},i.prototype.writeDoubleLE=function(e,t,r){return F(this,e,t,!0,r)},i.prototype.writeDoubleBE=function(e,t,r){return F(this,e,t,!1,r)},i.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t=0;--a)e[a+t]=this[a+r];else if(o<1e3||!i.TYPED_ARRAY_SUPPORT)for(a=0;a>>=0,r=void 0===r?this.length:r>>>0,e||(e=0);var o;if("number"==typeof e)for(o=t;o8?3:1,y=[],m=[0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0],b=0,C=0;C>>4^E),E^=t,S^=t<<4,t=65535&(E>>>-16^S),S^=t,E^=t<<-16,t=858993459&(S>>>2^E),E^=t,S^=t<<2,t=65535&(E>>>-16^S),S^=t,E^=t<<-16,t=1431655765&(S>>>1^E),E^=t,S^=t<<1,t=16711935&(E>>>8^S),S^=t,E^=t<<8,t=1431655765&(S>>>1^E),E^=t,S^=t<<1,t=S<<8|E>>>20&240,S=E<<24|E<<8&16711680|E>>>8&65280|E>>>24&240,E=t;for(var T=0;T>>26,E=E<<2|E>>>26):(S=S<<1|S>>>27,E=E<<1|E>>>27),S&=-15,E&=-15;var w=r[S>>>28]|n[S>>>24&15]|a[S>>>20&15]|i[S>>>16&15]|o[S>>>12&15]|u[S>>>8&15]|s[S>>>4&15],I=c[E>>>28]|f[E>>>24&15]|l[E>>>20&15]|d[E>>>16&15]|h[E>>>12&15]|p[E>>>8&15]|g[E>>>4&15];t=65535&(I>>>16^w),y[b++]=w^t,y[b++]=I^t<<16}}return y}function i(e,t,r,n){var a,i=32===e.length?3:9;a=3===i?n?[30,-2,-2]:[0,32,2]:n?[94,62,-2,32,64,2,30,-2,-2]:[0,32,2,62,30,-2,64,96,2];var o,u=t[0],v=t[1];o=252645135&(u>>>4^v),v^=o,u^=o<<4,o=65535&(u>>>16^v),v^=o,u^=o<<16,o=858993459&(v>>>2^u),u^=o,v^=o<<2,o=16711935&(v>>>8^u),u^=o,v^=o<<8,o=1431655765&(u>>>1^v),v^=o,u^=o<<1,u=u<<1|u>>>31,v=v<<1|v>>>31;for(var y=0;y>>4|v<<28)^e[C+1];o=u,u=v,v=o^(c[S>>>24&63]|l[S>>>16&63]|h[S>>>8&63]|g[63&S]|s[E>>>24&63]|f[E>>>16&63]|d[E>>>8&63]|p[63&E])}o=u,u=v,v=o}u=u>>>1|u<<31,v=v>>>1|v<<31,o=1431655765&(u>>>1^v),v^=o,u^=o<<1,o=16711935&(v>>>8^u),u^=o,v^=o<<8,o=858993459&(v>>>2^u),u^=o,v^=o<<2,o=65535&(u>>>16^v),v^=o,u^=o<<16,o=252645135&(u>>>4^v),v^=o,u^=o<<4,r[0]=u,r[1]=v}function o(e){e=e||{};var t,r=(e.mode||"CBC").toUpperCase(),n="DES-"+r;t=e.decrypt?u.cipher.createDecipher(n,e.key):u.cipher.createCipher(n,e.key);var a=t.start;return t.start=function(e,r){var n=null;r instanceof u.util.ByteBuffer&&(n=r,r={}),r=r||{},r.output=n,r.iv=e,a.call(t,r)},t}var u=r(0);r(15),r(23),r(1),e.exports=u.des=u.des||{},u.des.startEncrypting=function(e,t,r,n){var a=o({key:e,output:r,decrypt:!1,mode:n||(null===t?"ECB":"CBC")});return a.start(t),a},u.des.createEncryptionCipher=function(e,t){return o({key:e,output:null,decrypt:!1,mode:t})},u.des.startDecrypting=function(e,t,r,n){var a=o({key:e,output:r,decrypt:!0,mode:n||(null===t?"ECB":"CBC")});return a.start(t),a},u.des.createDecryptionCipher=function(e,t){return o({key:e,output:null,decrypt:!0,mode:t})},u.des.Algorithm=function(e,t){var r=this;r.name=e,r.mode=new t({blockSize:8,cipher:{encrypt:function(e,t){return i(r._keys,e,t,!1)},decrypt:function(e,t){return i(r._keys,e,t,!0)}}}),r._init=!1},u.des.Algorithm.prototype.initialize=function(e){if(!this._init){var t=u.util.createBuffer(e.key);if(0===this.name.indexOf("3DES")&&24!==t.length())throw new Error("Invalid Triple-DES key size: "+8*t.length());this._keys=a(t),this._init=!0}},n("DES-ECB",u.cipher.modes.ecb),n("DES-CBC",u.cipher.modes.cbc),n("DES-CFB",u.cipher.modes.cfb),n("DES-OFB",u.cipher.modes.ofb),n("DES-CTR",u.cipher.modes.ctr),n("3DES-ECB",u.cipher.modes.ecb),n("3DES-CBC",u.cipher.modes.cbc),n("3DES-CFB",u.cipher.modes.cfb),n("3DES-OFB",u.cipher.modes.ofb),n("3DES-CTR",u.cipher.modes.ctr);var s=[16843776,0,65536,16843780,16842756,66564,4,65536,1024,16843776,16843780,1024,16778244,16842756,16777216,4,1028,16778240,16778240,66560,66560,16842752,16842752,16778244,65540,16777220,16777220,65540,0,1028,66564,16777216,65536,16843780,4,16842752,16843776,16777216,16777216,1024,16842756,65536,66560,16777220,1024,4,16778244,66564,16843780,65540,16842752,16778244,16777220,1028,66564,16843776,1028,16778240,16778240,0,65540,66560,0,16842756],c=[-2146402272,-2147450880,32768,1081376,1048576,32,-2146435040,-2147450848,-2147483616,-2146402272,-2146402304,-2147483648,-2147450880,1048576,32,-2146435040,1081344,1048608,-2147450848,0,-2147483648,32768,1081376,-2146435072,1048608,-2147483616,0,1081344,32800,-2146402304,-2146435072,32800,0,1081376,-2146435040,1048576,-2147450848,-2146435072,-2146402304,32768,-2146435072,-2147450880,32,-2146402272,1081376,32,32768,-2147483648,32800,-2146402304,1048576,-2147483616,1048608,-2147450848,-2147483616,1048608,1081344,0,-2147450880,32800,-2147483648,-2146435040,-2146402272,1081344],f=[520,134349312,0,134348808,134218240,0,131592,134218240,131080,134217736,134217736,131072,134349320,131080,134348800,520,134217728,8,134349312,512,131584,134348800,134348808,131592,134218248,131584,131072,134218248,8,134349320,512,134217728,134349312,134217728,131080,520,131072,134349312,134218240,0,512,131080,134349320,134218240,134217736,512,0,134348808,134218248,131072,134217728,134349320,8,131592,131584,134217736,134348800,134218248,520,134348800,131592,8,134348808,131584],l=[8396801,8321,8321,128,8396928,8388737,8388609,8193,0,8396800,8396800,8396929,129,0,8388736,8388609,1,8192,8388608,8396801,128,8388608,8193,8320,8388737,1,8320,8388736,8192,8396928,8396929,129,8388736,8388609,8396800,8396929,129,0,0,8396800,8320,8388736,8388737,1,8396801,8321,8321,128,8396929,129,1,8192,8388609,8193,8396928,8388737,8193,8320,8388608,8396801,128,8388608,8192,8396928],d=[256,34078976,34078720,1107296512,524288,256,1073741824,34078720,1074266368,524288,33554688,1074266368,1107296512,1107820544,524544,1073741824,33554432,1074266112,1074266112,0,1073742080,1107820800,1107820800,33554688,1107820544,1073742080,0,1107296256,34078976,33554432,1107296256,524544,524288,1107296512,256,33554432,1073741824,34078720,1107296512,1074266368,33554688,1073741824,1107820544,34078976,1074266368,256,33554432,1107820544,1107820800,524544,1107296256,1107820800,34078720,0,1074266112,1107296256,524544,33554688,1073742080,524288,0,1074266112,34078976,1073742080],h=[536870928,541065216,16384,541081616,541065216,16,541081616,4194304,536887296,4210704,4194304,536870928,4194320,536887296,536870912,16400,0,4194320,536887312,16384,4210688,536887312,16,541065232,541065232,0,4210704,541081600,16400,4210688,541081600,536870912,536887296,16,541065232,4210688,541081616,4194304,16400,536870928,4194304,536887296,536870912,16400,536870928,541081616,4210688,541065216,4210704,541081600,0,541065232,16,16384,541065216,4210704,16384,4194320,536887312,0,541081600,536870912,4194320,536887312],p=[2097152,69206018,67110914,0,2048,67110914,2099202,69208064,69208066,2097152,0,67108866,2,67108864,69206018,2050,67110912,2099202,2097154,67110912,67108866,69206016,69208064,2097154,69206016,2048,2050,69208066,2099200,2,67108864,2099200,67108864,2099200,2097152,67110914,67110914,69206018,69206018,2,2097154,67108864,67110912,2097152,69208064,2050,2099202,69208064,2050,67108866,69208066,69206016,2099200,0,2,69208066,0,2099202,69206016,2048,67108866,67110912,2048,2097154],g=[268439616,4096,262144,268701760,268435456,268439616,64,268435456,262208,268697600,268701760,266240,268701696,266304,4096,64,268697600,268435520,268439552,4160,266240,262208,268697664,268701696,4160,0,0,268697664,268435520,268439552,266304,262144,266304,262144,268701696,4096,64,268697664,4096,266304,268439552,64,268435520,268697600,268697664,268435456,262144,268439616,0,268701760,262208,268435520,268697600,268439552,268439616,0,268701760,266240,266240,4160,4160,262208,268435456,268701696]},function(e,t,r){function n(e,t,r){this.data=[],null!=e&&("number"==typeof e?this.fromNumber(e,t,r):null==t&&"string"!=typeof e?this.fromString(e,256):this.fromString(e,t))}function a(){return new n(null)}function i(e,t,r,n,a,i){for(;--i>=0;){var o=t*this.data[e++]+r.data[n]+a;a=Math.floor(o/67108864),r.data[n++]=67108863&o}return a}function o(e,t,r,n,a,i){for(var o=32767&t,u=t>>15;--i>=0;){var s=32767&this.data[e],c=this.data[e++]>>15,f=u*s+c*o;s=o*s+((32767&f)<<15)+r.data[n]+(1073741823&a),a=(s>>>30)+(f>>>15)+u*c+(a>>>30),r.data[n++]=1073741823&s}return a}function u(e,t,r,n,a,i){for(var o=16383&t,u=t>>14;--i>=0;){var s=16383&this.data[e],c=this.data[e++]>>14,f=u*s+c*o;s=o*s+((16383&f)<<14)+r.data[n]+a,a=(s>>28)+(f>>14)+u*c,r.data[n++]=268435455&s}return a}function s(e){return it.charAt(e)}function c(e,t){var r=ot[e.charCodeAt(t)];return null==r?-1:r}function f(e){for(var t=this.t-1;t>=0;--t)e.data[t]=this.data[t];e.t=this.t,e.s=this.s}function l(e){this.t=1,this.s=e<0?-1:0,e>0?this.data[0]=e:e<-1?this.data[0]=e+this.DV:this.t=0}function d(e){var t=a();return t.fromInt(e),t}function h(e,t){var r;if(16==t)r=4;else if(8==t)r=3;else if(256==t)r=8;else if(2==t)r=1;else if(32==t)r=5;else{if(4!=t)return void this.fromRadix(e,t);r=2}this.t=0,this.s=0;for(var a=e.length,i=!1,o=0;--a>=0;){var u=8==r?255&e[a]:c(e,a);u<0?"-"==e.charAt(a)&&(i=!0):(i=!1,0==o?this.data[this.t++]=u:o+r>this.DB?(this.data[this.t-1]|=(u&(1<>this.DB-o):this.data[this.t-1]|=u<=this.DB&&(o-=this.DB))}8==r&&0!=(128&e[0])&&(this.s=-1,o>0&&(this.data[this.t-1]|=(1<0&&this.data[this.t-1]==e;)--this.t}function g(e){if(this.s<0)return"-"+this.negate().toString(e);var t;if(16==e)t=4;else if(8==e)t=3;else if(2==e)t=1;else if(32==e)t=5;else{if(4!=e)return this.toRadix(e);t=2}var r,n=(1<0)for(u>u)>0&&(a=!0,i=s(r));o>=0;)u>(u+=this.DB-t)):(r=this.data[o]>>(u-=t)&n,u<=0&&(u+=this.DB,--o)),r>0&&(a=!0),a&&(i+=s(r));return a?i:"0"}function v(){var e=a();return n.ZERO.subTo(this,e),e}function y(){return this.s<0?this.negate():this}function m(e){var t=this.s-e.s;if(0!=t)return t;var r=this.t;if(0!=(t=r-e.t))return this.s<0?-t:t;for(;--r>=0;)if(0!=(t=this.data[r]-e.data[r]))return t;return 0}function b(e){var t,r=1;return 0!=(t=e>>>16)&&(e=t,r+=16),0!=(t=e>>8)&&(e=t,r+=8),0!=(t=e>>4)&&(e=t,r+=4),0!=(t=e>>2)&&(e=t,r+=2),0!=(t=e>>1)&&(e=t,r+=1),r}function C(){return this.t<=0?0:this.DB*(this.t-1)+b(this.data[this.t-1]^this.s&this.DM)}function S(e,t){var r;for(r=this.t-1;r>=0;--r)t.data[r+e]=this.data[r];for(r=e-1;r>=0;--r)t.data[r]=0;t.t=this.t+e,t.s=this.s}function E(e,t){for(var r=e;r=0;--r)t.data[r+o+1]=this.data[r]>>a|u,u=(this.data[r]&i)<=0;--r)t.data[r]=0;t.data[o]=u,t.t=this.t+o+1,t.s=this.s,t.clamp()}function w(e,t){t.s=this.s;var r=Math.floor(e/this.DB);if(r>=this.t)return void(t.t=0);var n=e%this.DB,a=this.DB-n,i=(1<>n;for(var o=r+1;o>n;n>0&&(t.data[this.t-r-1]|=(this.s&i)<>=this.DB;if(e.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n-=e.s}t.s=n<0?-1:0,n<-1?t.data[r++]=this.DV+n:n>0&&(t.data[r++]=n),t.t=r,t.clamp()}function A(e,t){var r=this.abs(),a=e.abs(),i=r.t;for(t.t=i+a.t;--i>=0;)t.data[i]=0;for(i=0;i=0;)e.data[r]=0;for(r=0;r=t.DV&&(e.data[r+t.t]-=t.DV,e.data[r+t.t+1]=1)}e.t>0&&(e.data[e.t-1]+=t.am(r,t.data[r],e,2*r,0,1)),e.s=0,e.clamp()}function k(e,t,r){var i=e.abs();if(!(i.t<=0)){var o=this.abs();if(o.t0?(i.lShiftTo(f,u),o.lShiftTo(f,r)):(i.copyTo(u),o.copyTo(r));var l=u.t,d=u.data[l-1];if(0!=d){var h=d*(1<1?u.data[l-2]>>this.F2:0),p=this.FV/h,g=(1<=0&&(r.data[r.t++]=1,r.subTo(C,r)),n.ONE.dlShiftTo(l,C),C.subTo(u,u);u.t=0;){var S=r.data[--y]==d?this.DM:Math.floor(r.data[y]*p+(r.data[y-1]+v)*g);if((r.data[y]+=u.am(0,S,r,m,0,l))0&&r.rShiftTo(f,r),s<0&&n.ZERO.subTo(r,r)}}}function N(e){var t=a();return this.abs().divRemTo(e,null,t),this.s<0&&t.compareTo(n.ZERO)>0&&e.subTo(t,t),t}function R(e){this.m=e}function $(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e}function x(e){return e}function _(e){e.divRemTo(this.m,null,e)}function L(e,t,r){e.multiplyTo(t,r),this.reduce(r)}function P(e,t){e.squareTo(t),this.reduce(t)}function D(){if(this.t<1)return 0;var e=this.data[0];if(0==(1&e))return 0;var t=3&e;return t=t*(2-(15&e)*t)&15,t=t*(2-(255&e)*t)&255,t=t*(2-((65535&e)*t&65535))&65535,t=t*(2-e*t%this.DV)%this.DV,t>0?this.DV-t:-t}function U(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<0&&this.m.subTo(t,t),t}function M(e){var t=a();return e.copyTo(t),this.reduce(t),t}function F(e){for(;e.t<=this.mt2;)e.data[e.t++]=0;for(var t=0;t>15)*this.mpl&this.um)<<15)&e.DM;for(r=t+this.m.t,e.data[r]+=this.m.am(0,n,e,t,0,this.m.t);e.data[r]>=e.DV;)e.data[r]-=e.DV,e.data[++r]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)}function V(e,t){e.squareTo(t),this.reduce(t)}function K(e,t,r){e.multiplyTo(t,r),this.reduce(r)}function H(){return 0==(this.t>0?1&this.data[0]:this.s)}function j(e,t){if(e>4294967295||e<1)return n.ONE;var r=a(),i=a(),o=t.convert(this),u=b(e)-1;for(o.copyTo(r);--u>=0;)if(t.sqrTo(r,i),(e&1<0)t.mulTo(i,o,r);else{var s=r;r=i,i=s}return t.revert(r)}function q(e,t){var r;return r=e<256||t.isEven()?new R(t):new U(t),this.exp(e,r)}function G(){var e=a();return this.copyTo(e),e}function z(){if(this.s<0){if(1==this.t)return this.data[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this.data[0];if(0==this.t)return 0}return(this.data[1]&(1<<32-this.DB)-1)<>24}function W(){return 0==this.t?this.s:this.data[0]<<16>>16}function J(e){return Math.floor(Math.LN2*this.DB/Math.log(e))}function Q(){return this.s<0?-1:this.t<=0||1==this.t&&this.data[0]<=0?0:1}function X(e){if(null==e&&(e=10),0==this.signum()||e<2||e>36)return"0";var t=this.chunkSize(e),r=Math.pow(e,t),n=d(r),i=a(),o=a(),u="";for(this.divRemTo(n,i,o);i.signum()>0;)u=(r+o.intValue()).toString(e).substr(1)+u,i.divRemTo(n,i,o);return o.intValue().toString(e)+u}function Z(e,t){this.fromInt(0),null==t&&(t=10);for(var r=this.chunkSize(t),a=Math.pow(t,r),i=!1,o=0,u=0,s=0;s=r&&(this.dMultiply(a),this.dAddOffset(u,0),o=0,u=0))}o>0&&(this.dMultiply(Math.pow(t,o)),this.dAddOffset(u,0)),i&&n.ZERO.subTo(this,this)}function ee(e,t,r){if("number"==typeof t)if(e<2)this.fromInt(1);else for(this.fromNumber(e,r),this.testBit(e-1)||this.bitwiseTo(n.ONE.shiftLeft(e-1),se,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(t);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(n.ONE.shiftLeft(e-1),this);else{var a=new Array,i=7&e;a.length=1+(e>>3),t.nextBytes(a),i>0?a[0]&=(1<0)for(n>n)!=(this.s&this.DM)>>n&&(t[a++]=r|this.s<=0;)n<8?(r=(this.data[e]&(1<>(n+=this.DB-8)):(r=this.data[e]>>(n-=8)&255,n<=0&&(n+=this.DB,--e)),0!=(128&r)&&(r|=-256),0==a&&(128&this.s)!=(128&r)&&++a,(a>0||r!=this.s)&&(t[a++]=r);return t}function re(e){return 0==this.compareTo(e)}function ne(e){return this.compareTo(e)<0?this:e}function ae(e){return this.compareTo(e)>0?this:e}function ie(e,t,r){var n,a,i=Math.min(e.t,this.t);for(n=0;n>=16,t+=16),0==(255&e)&&(e>>=8,t+=8),0==(15&e)&&(e>>=4,t+=4),0==(3&e)&&(e>>=2,t+=2),0==(1&e)&&++t,t}function me(){for(var e=0;e=this.t?0!=this.s:0!=(this.data[t]&1<>=this.DB;if(e.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n+=e.s}t.s=n<0?-1:0,n>0?t.data[r++]=n:n<-1&&(t.data[r++]=this.DV+n),t.t=r,t.clamp()}function Be(e){var t=a();return this.addTo(e,t),t}function ke(e){var t=a();return this.subTo(e,t),t}function Ne(e){var t=a();return this.multiplyTo(e,t),t}function Re(e){var t=a();return this.divRemTo(e,t,null),t}function $e(e){var t=a();return this.divRemTo(e,null,t),t}function xe(e){var t=a(),r=a();return this.divRemTo(e,t,r),new Array(t,r)}function _e(e){this.data[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()}function Le(e,t){if(0!=e){for(;this.t<=t;)this.data[this.t++]=0;for(this.data[t]+=e;this.data[t]>=this.DV;)this.data[t]-=this.DV,++t>=this.t&&(this.data[this.t++]=0),++this.data[t]}}function Pe(){}function De(e){return e}function Ue(e,t,r){e.multiplyTo(t,r)}function Oe(e,t){e.squareTo(t)}function Me(e){return this.exp(e,new Pe)}function Fe(e,t,r){var n=Math.min(this.t+e.t,t);for(r.s=0,r.t=n;n>0;)r.data[--n]=0;var a;for(a=r.t-this.t;n=0;)r.data[n]=0;for(n=Math.max(t-this.t,0);n2*this.m.t)return e.mod(this.m);if(e.compareTo(this.m)<0)return e;var t=a();return e.copyTo(t),this.reduce(t),t}function je(e){return e}function qe(e){for(e.drShiftTo(this.m.t-1,this.r2),e.t>this.m.t+1&&(e.t=this.m.t+1,e.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);e.compareTo(this.r2)<0;)e.dAddOffset(1,this.m.t+1);for(e.subTo(this.r2,e);e.compareTo(this.m)>=0;)e.subTo(this.m,e)}function Ge(e,t){e.squareTo(t),this.reduce(t)}function ze(e,t,r){e.multiplyTo(t,r),this.reduce(r)}function Ye(e,t){var r,n,i=e.bitLength(),o=d(1);if(i<=0)return o;r=i<18?1:i<48?3:i<144?4:i<768?5:6,n=i<8?new R(t):t.isEven()?new Ke(t):new U(t);var u=new Array,s=3,c=r-1,f=(1<1){var l=a();for(n.sqrTo(u[1],l);s<=f;)u[s]=a(),n.mulTo(l,u[s-2],u[s]),s+=2}var h,p,g=e.t-1,v=!0,y=a();for(i=b(e.data[g])-1;g>=0;){for(i>=c?h=e.data[g]>>i-c&f:(h=(e.data[g]&(1<0&&(h|=e.data[g-1]>>this.DB+i-c)),s=r;0==(1&h);)h>>=1,--s;if((i-=s)<0&&(i+=this.DB,--g),v)u[h].copyTo(o),v=!1;else{for(;s>1;)n.sqrTo(o,y),n.sqrTo(y,o),s-=2;s>0?n.sqrTo(o,y):(p=o,o=y,y=p),n.mulTo(y,u[h],o)}for(;g>=0&&0==(e.data[g]&1<0&&(t.rShiftTo(i,t),r.rShiftTo(i,r));t.signum()>0;)(a=t.getLowestSetBit())>0&&t.rShiftTo(a,t),(a=r.getLowestSetBit())>0&&r.rShiftTo(a,r),t.compareTo(r)>=0?(t.subTo(r,t),t.rShiftTo(1,t)):(r.subTo(t,r),r.rShiftTo(1,r));return i>0&&r.lShiftTo(i,r),r}function Je(e){if(e<=0)return 0;var t=this.DV%e,r=this.s<0?e-1:0;if(this.t>0)if(0==t)r=this.data[0]%e;else for(var n=this.t-1;n>=0;--n)r=(t*r+this.data[n])%e;return r}function Qe(e){var t=e.isEven();if(this.isEven()&&t||0==e.signum())return n.ZERO;for(var r=e.clone(),a=this.clone(),i=d(1),o=d(0),u=d(0),s=d(1);0!=r.signum();){for(;r.isEven();)r.rShiftTo(1,r),t?(i.isEven()&&o.isEven()||(i.addTo(this,i),o.subTo(e,o)),i.rShiftTo(1,i)):o.isEven()||o.subTo(e,o),o.rShiftTo(1,o);for(;a.isEven();)a.rShiftTo(1,a),t?(u.isEven()&&s.isEven()||(u.addTo(this,u),s.subTo(e,s)),u.rShiftTo(1,u)):s.isEven()||s.subTo(e,s),s.rShiftTo(1,s);r.compareTo(a)>=0?(r.subTo(a,r),t&&i.subTo(u,i),o.subTo(s,o)):(a.subTo(r,a),t&&u.subTo(i,u),s.subTo(o,s))}return 0!=a.compareTo(n.ONE)?n.ZERO:s.compareTo(e)>=0?s.subtract(e):s.signum()<0?(s.addTo(e,s),s.signum()<0?s.add(e):s):s}function Xe(e){var t,r=this.abs();if(1==r.t&&r.data[0]<=ut[ut.length-1]){for(t=0;t=0);var s=a.modPow(i,this);if(0!=s.compareTo(n.ONE)&&0!=s.compareTo(t)){for(var c=1;c++a-11){var i=new Error("Message is too long for PKCS#1 v1.5 padding.");throw i.length=e.length,i.max=a-11,i}n.putByte(0),n.putByte(r);var o,u=a-3-e.length;if(0===r||1===r){o=0===r?0:255;for(var s=0;s0;){for(var c=0,f=d.random.getBytes(u),s=0;s1;){if(255!==i.getByte()){--i.read;break}++s}else if(2===u)for(s=0;i.length()>1;){if(0===i.getByte()){--i.read;break}++s}if(0!==i.getByte()||s!==a-3-i.length())throw new Error("Encryption block is invalid.");return i.getBytes()}function i(e,t,r){function n(){a(e.pBits,function(t,n){return t?r(t):(e.p=n,null!==e.q?i(t,e.q):void a(e.qBits,i))})}function a(e,t){d.prime.generateProbablePrime(e,o,t)}function i(t,o){if(t)return r(t);if(e.q=o,e.p.compareTo(e.q)<0){var u=e.p;e.p=e.q,e.q=u}if(0!==e.p.subtract(h.ONE).gcd(e.e).compareTo(h.ONE))return e.p=null,void n();if(0!==e.q.subtract(h.ONE).gcd(e.e).compareTo(h.ONE))return e.q=null,void a(e.qBits,i);if(e.p1=e.p.subtract(h.ONE),e.q1=e.q.subtract(h.ONE),e.phi=e.p1.multiply(e.q1),0!==e.phi.gcd(e.e).compareTo(h.ONE))return e.p=e.q=null,void n();if(e.n=e.p.multiply(e.q),e.n.bitLength()!==e.bits)return e.q=null,void a(e.qBits,i);var s=e.e.modInverse(e.phi);e.keys={privateKey:y.rsa.setPrivateKey(e.n,e.e,s,e.p,e.q,s.mod(e.p1),s.mod(e.q1),e.q.modInverse(e.p)),publicKey:y.rsa.setPublicKey(e.n,e.e)},r(null,e.keys)}"function"==typeof t&&(r=t,t={}),t=t||{};var o={algorithm:{name:t.algorithm||"PRIMEINC",options:{workers:t.workers||2,workLoad:t.workLoad||100,workerScript:t.workerScript}}};"prng"in t&&(o.prng=t.prng),n()}function o(e){var t=e.toString(16);t[0]>="8"&&(t="00"+t);var r=d.util.hexToBytes(t);return r.length>1&&(0===r.charCodeAt(0)&&0==(128&r.charCodeAt(1))||255===r.charCodeAt(0)&&128==(128&r.charCodeAt(1)))?r.substr(1):r}function u(e){return e<=100?27:e<=150?18:e<=200?15:e<=250?12:e<=300?9:e<=350?8:e<=400?7:e<=500?6:e<=600?5:e<=800?4:e<=1250?3:2}function s(e){return d.util.isNodejs&&"function"==typeof p[e]}function c(e){return void 0!==v.globalScope&&"object"==typeof v.globalScope.crypto&&"object"==typeof v.globalScope.crypto.subtle&&"function"==typeof v.globalScope.crypto.subtle[e]}function f(e){return void 0!==v.globalScope&&"object"==typeof v.globalScope.msCrypto&&"object"==typeof v.globalScope.msCrypto.subtle&&"function"==typeof v.globalScope.msCrypto.subtle[e]}function l(e){for(var t=d.util.hexToBytes(e.toString(16)),r=new Uint8Array(t.length),n=0;n=0||!n.gcd(t.n).equals(h.ONE));e=e.multiply(n.modPow(t.e,t.n)).mod(t.n);for(var a=e.mod(t.p).modPow(t.dP,t.p),i=e.mod(t.q).modPow(t.dQ,t.q);a.compareTo(i)<0;)a=a.add(t.p);var o=a.subtract(i).multiply(t.qInv).mod(t.p).multiply(t.q).add(i);return o=o.multiply(n.modInverse(t.n)).mod(t.n)};y.rsa.encrypt=function(e,t,r){var a,i=r,o=Math.ceil(t.n.bitLength()/8);!1!==r&&!0!==r?(i=2===r,a=n(e,t,r)):(a=d.util.createBuffer(),a.putBytes(e));for(var u=new h(a.toHex(),16),s=w(u,t,i),c=s.toString(16),f=d.util.createBuffer(),l=o-Math.ceil(c.length/2);l>0;)f.putByte(0),--l;return f.putBytes(d.util.hexToBytes(c)),f.getBytes()},y.rsa.decrypt=function(e,t,r,n){var i=Math.ceil(t.n.bitLength()/8);if(e.length!==i){var o=new Error("Encrypted message length is invalid.");throw o.length=e.length,o.expected=i,o}var u=new h(d.util.createBuffer(e).toHex(),16);if(u.compareTo(t.n)>=0)throw new Error("Encrypted message is invalid.");for(var s=w(u,t,r),c=s.toString(16),f=d.util.createBuffer(),l=i-Math.ceil(c.length/2);l>0;)f.putByte(0),--l;return f.putBytes(d.util.hexToBytes(c)),!1!==n?a(f.getBytes(),t,r):f.getBytes()},y.rsa.createKeyPairGenerationState=function(e,t,r){"string"==typeof e&&(e=parseInt(e,10)),e=e||2048,r=r||{};var n,a=r.prng||d.random,i={nextBytes:function(e){for(var t=a.getBytesSync(e.length),r=0;r>1,pBits:e-(e>>1),pqState:0,num:null,keys:null},n.e.fromInt(n.eInt),n},y.rsa.stepKeyPairGenerationState=function(e,t){"algorithm"in e||(e.algorithm="PRIMEINC");var r=new h(null);r.fromInt(30);for(var n,a=0,i=function(e,t){return e|t},o=+new Date,s=0;null===e.keys&&(t<=0||sc?e.pqState=0:e.num.isProbablePrime(u(e.num.bitLength()))?++e.pqState:e.num.dAddOffset(m[a++%8],0):2===e.pqState?e.pqState=0===e.num.subtract(h.ONE).gcd(e.e).compareTo(h.ONE)?3:0:3===e.pqState&&(e.pqState=0,null===e.p?e.p=e.num:e.q=e.num,null!==e.p&&null!==e.q&&++e.state,e.num=null)}else if(1===e.state)e.p.compareTo(e.q)<0&&(e.num=e.p,e.p=e.q,e.q=e.num),++e.state;else if(2===e.state)e.p1=e.p.subtract(h.ONE),e.q1=e.q.subtract(h.ONE),e.phi=e.p1.multiply(e.q1),++e.state;else if(3===e.state)0===e.phi.gcd(e.e).compareTo(h.ONE)?++e.state:(e.p=null,e.q=null,e.state=0);else if(4===e.state)e.n=e.p.multiply(e.q),e.n.bitLength()===e.bits?++e.state:(e.q=null,e.state=0);else if(5===e.state){var l=e.e.modInverse(e.phi);e.keys={privateKey:y.rsa.setPrivateKey(e.n,e.e,l,e.p,e.q,l.mod(e.p1),l.mod(e.q1),e.q.modInverse(e.p)),publicKey:y.rsa.setPublicKey(e.n,e.e)}}n=+new Date,s+=n-o,o=n}return null!==e.keys},y.rsa.generateKeyPair=function(e,t,r,n){if(1===arguments.length?"object"==typeof e?(r=e,e=void 0):"function"==typeof e&&(n=e,e=void 0):2===arguments.length?"number"==typeof e?"function"==typeof t?(n=t,t=void 0):"number"!=typeof t&&(r=t,t=void 0):(r=e,n=t,e=void 0,t=void 0):3===arguments.length&&("number"==typeof t?"function"==typeof r&&(n=r,r=void 0):(n=r,r=t,t=void 0)),r=r||{},void 0===e&&(e=r.bits||2048),void 0===t&&(t=r.e||65537),!d.options.usePureJavaScript&&!r.prng&&e>=256&&e<=16384&&(65537===t||3===t))if(n){if(s("generateKeyPair"))return p.generateKeyPair("rsa",{modulusLength:e,publicExponent:t,publicKeyEncoding:{type:"spki",format:"pem"},privateKeyEncoding:{type:"pkcs8",format:"pem"}},function(e,t,r){if(e)return n(e);n(null,{privateKey:y.privateKeyFromPem(r),publicKey:y.publicKeyFromPem(t)})});if(c("generateKey")&&c("exportKey"))return v.globalScope.crypto.subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:e,publicExponent:l(t),hash:{name:"SHA-256"}},!0,["sign","verify"]).then(function(e){return v.globalScope.crypto.subtle.exportKey("pkcs8",e.privateKey)}).then(void 0,function(e){n(e)}).then(function(e){if(e){var t=y.privateKeyFromAsn1(g.fromDer(d.util.createBuffer(e)));n(null,{privateKey:t,publicKey:y.setRsaPublicKey(t.n,t.e)})}});if(f("generateKey")&&f("exportKey")){var a=v.globalScope.msCrypto.subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:e,publicExponent:l(t),hash:{name:"SHA-256"}},!0,["sign","verify"]);return a.oncomplete=function(e){var t=e.target.result,r=v.globalScope.msCrypto.subtle.exportKey("pkcs8",t.privateKey);r.oncomplete=function(e){var t=e.target.result,r=y.privateKeyFromAsn1(g.fromDer(d.util.createBuffer(t)));n(null,{privateKey:r,publicKey:y.setRsaPublicKey(r.n,r.e)})},r.onerror=function(e){n(e)}},void(a.onerror=function(e){n(e)})}}else if(s("generateKeyPairSync")){var o=p.generateKeyPairSync("rsa",{modulusLength:e,publicExponent:t,publicKeyEncoding:{type:"spki",format:"pem"},privateKeyEncoding:{type:"pkcs8",format:"pem"}});return{privateKey:y.privateKeyFromPem(o.privateKey),publicKey:y.publicKeyFromPem(o.publicKey)}}var u=y.rsa.createKeyPairGenerationState(e,t,r);if(!n)return y.rsa.stepKeyPairGenerationState(u,0),u.keys;i(u,r,n)},y.setRsaPublicKey=y.rsa.setPublicKey=function(e,t){var r={n:e,e:t};return r.encrypt=function(e,t,a){if("string"==typeof t?t=t.toUpperCase():void 0===t&&(t="RSAES-PKCS1-V1_5"),"RSAES-PKCS1-V1_5"===t)t={encode:function(e,t,r){return n(e,t,2).getBytes()}};else if("RSA-OAEP"===t||"RSAES-OAEP"===t)t={encode:function(e,t){return d.pkcs1.encode_rsa_oaep(t,e,a)}};else if(-1!==["RAW","NONE","NULL",null].indexOf(t))t={encode:function(e){return e}};else if("string"==typeof t)throw new Error('Unsupported encryption scheme: "'+t+'".');var i=t.encode(e,r,!0);return y.rsa.encrypt(i,r,!0)},r.verify=function(e,t,n){"string"==typeof n?n=n.toUpperCase():void 0===n&&(n="RSASSA-PKCS1-V1_5"),"RSASSA-PKCS1-V1_5"===n?n={verify:function(e,t){return t=a(t,r,!0),e===g.fromDer(t).value[1].value}}:"NONE"!==n&&"NULL"!==n&&null!==n||(n={verify:function(e,t){return t=a(t,r,!0),e===t}});var i=y.rsa.decrypt(t,r,!0,!1);return n.verify(e,i,r.n.bitLength())},r},y.setRsaPrivateKey=y.rsa.setPrivateKey=function(e,t,r,n,i,o,u,s){var c={n:e,e:t,d:r,p:n,q:i,dP:o,dQ:u,qInv:s};return c.decrypt=function(e,t,r){"string"==typeof t?t=t.toUpperCase():void 0===t&&(t="RSAES-PKCS1-V1_5");var n=y.rsa.decrypt(e,c,!1,!1);if("RSAES-PKCS1-V1_5"===t)t={decode:a};else if("RSA-OAEP"===t||"RSAES-OAEP"===t)t={decode:function(e,t){return d.pkcs1.decode_rsa_oaep(t,e,r)}};else{if(-1===["RAW","NONE","NULL",null].indexOf(t))throw new Error('Unsupported encryption scheme: "'+t+'".');t={decode:function(e){return e}}}return t.decode(n,c,!1)},c.sign=function(e,t){var r=!1;"string"==typeof t&&(t=t.toUpperCase()),void 0===t||"RSASSA-PKCS1-V1_5"===t?(t={encode:T},r=1):"NONE"!==t&&"NULL"!==t&&null!==t||(t={encode:function(){return e}},r=1);var n=t.encode(e,c.n.bitLength());return y.rsa.encrypt(n,c,r)},c},y.wrapRsaPrivateKey=function(e){return g.create(g.Class.UNIVERSAL,g.Type.SEQUENCE,!0,[g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,g.integerToDer(0).getBytes()),g.create(g.Class.UNIVERSAL,g.Type.SEQUENCE,!0,[g.create(g.Class.UNIVERSAL,g.Type.OID,!1,g.oidToDer(y.oids.rsaEncryption).getBytes()),g.create(g.Class.UNIVERSAL,g.Type.NULL,!1,"")]),g.create(g.Class.UNIVERSAL,g.Type.OCTETSTRING,!1,g.toDer(e).getBytes())])},y.privateKeyFromAsn1=function(e){var t={},r=[];if(g.validate(e,b,t,r)&&(e=g.fromDer(d.util.createBuffer(t.privateKey))),t={},r=[],!g.validate(e,C,t,r)){var n=new Error("Cannot read private key. ASN.1 object does not contain an RSAPrivateKey.");throw n.errors=r,n}var a,i,o,u,s,c,f,l;return a=d.util.createBuffer(t.privateKeyModulus).toHex(),i=d.util.createBuffer(t.privateKeyPublicExponent).toHex(),o=d.util.createBuffer(t.privateKeyPrivateExponent).toHex(),u=d.util.createBuffer(t.privateKeyPrime1).toHex(),s=d.util.createBuffer(t.privateKeyPrime2).toHex(),c=d.util.createBuffer(t.privateKeyExponent1).toHex(),f=d.util.createBuffer(t.privateKeyExponent2).toHex(),l=d.util.createBuffer(t.privateKeyCoefficient).toHex(),y.setRsaPrivateKey(new h(a,16),new h(i,16),new h(o,16),new h(u,16),new h(s,16),new h(c,16),new h(f,16),new h(l,16))},y.privateKeyToAsn1=y.privateKeyToRSAPrivateKey=function(e){return g.create(g.Class.UNIVERSAL,g.Type.SEQUENCE,!0,[g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,g.integerToDer(0).getBytes()),g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,o(e.n)),g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,o(e.e)),g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,o(e.d)),g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,o(e.p)),g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,o(e.q)),g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,o(e.dP)),g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,o(e.dQ)),g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,o(e.qInv))])},y.publicKeyFromAsn1=function(e){var t={},r=[];if(g.validate(e,E,t,r)){var n=g.derToOid(t.publicKeyOid);if(n!==y.oids.rsaEncryption){var a=new Error("Cannot read public key. Unknown OID.");throw a.oid=n,a}e=t.rsaPublicKey}if(r=[],!g.validate(e,S,t,r)){var a=new Error("Cannot read public key. ASN.1 object does not contain an RSAPublicKey.");throw a.errors=r,a}var i=d.util.createBuffer(t.publicKeyModulus).toHex(),o=d.util.createBuffer(t.publicKeyExponent).toHex();return y.setRsaPublicKey(new h(i,16),new h(o,16))},y.publicKeyToAsn1=y.publicKeyToSubjectPublicKeyInfo=function(e){return g.create(g.Class.UNIVERSAL,g.Type.SEQUENCE,!0,[g.create(g.Class.UNIVERSAL,g.Type.SEQUENCE,!0,[g.create(g.Class.UNIVERSAL,g.Type.OID,!1,g.oidToDer(y.oids.rsaEncryption).getBytes()),g.create(g.Class.UNIVERSAL,g.Type.NULL,!1,"")]),g.create(g.Class.UNIVERSAL,g.Type.BITSTRING,!1,[y.publicKeyToRSAPublicKey(e)])])},y.publicKeyToRSAPublicKey=function(e){return g.create(g.Class.UNIVERSAL,g.Type.SEQUENCE,!0,[g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,o(e.n)),g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,o(e.e))])}},function(e,t){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,r){var n=r(0);r(1),e.exports=n.cipher=n.cipher||{},n.cipher.algorithms=n.cipher.algorithms||{},n.cipher.createCipher=function(e,t){var r=e;if("string"==typeof r&&(r=n.cipher.getAlgorithm(r))&&(r=r()),!r)throw new Error("Unsupported algorithm: "+e);return new n.cipher.BlockCipher({algorithm:r,key:t,decrypt:!1})},n.cipher.createDecipher=function(e,t){var r=e;if("string"==typeof r&&(r=n.cipher.getAlgorithm(r))&&(r=r()),!r)throw new Error("Unsupported algorithm: "+e);return new n.cipher.BlockCipher({algorithm:r,key:t,decrypt:!0})},n.cipher.registerAlgorithm=function(e,t){e=e.toUpperCase(),n.cipher.algorithms[e]=t},n.cipher.getAlgorithm=function(e){return e=e.toUpperCase(),e in n.cipher.algorithms?n.cipher.algorithms[e]:null};var a=n.cipher.BlockCipher=function(e){this.algorithm=e.algorithm,this.mode=this.algorithm.mode,this.blockSize=this.mode.blockSize,this._finish=!1,this._input=null,this.output=null,this._op=e.decrypt?this.mode.decrypt:this.mode.encrypt,this._decrypt=e.decrypt,this.algorithm.initialize(e)};a.prototype.start=function(e){e=e||{};var t={};for(var r in e)t[r]=e[r];t.decrypt=this._decrypt,this._finish=!1,this._input=n.util.createBuffer(),this.output=e.output||n.util.createBuffer(),this.mode.start(t)},a.prototype.update=function(e){for(e&&this._input.putBuffer(e);!this._op.call(this.mode,this._input,this.output,this._finish)&&!this._finish;);this._input.compact()},a.prototype.finish=function(e){!e||"ECB"!==this.mode.name&&"CBC"!==this.mode.name||(this.mode.pad=function(t){return e(this.blockSize,t,!1)},this.mode.unpad=function(t){return e(this.blockSize,t,!0)});var t={};return t.decrypt=this._decrypt,t.overflow=this._input.length()%this.blockSize,!(!this._decrypt&&this.mode.pad&&!this.mode.pad(this._input,t))&&(this._finish=!0,this.update(),!(this._decrypt&&this.mode.unpad&&!this.mode.unpad(this.output,t))&&!(this.mode.afterFinish&&!this.mode.afterFinish(this.output,t)))}},function(e,t,r){function n(){u=String.fromCharCode(128),u+=i.util.fillString(String.fromCharCode(0),64),s=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,1,6,11,0,5,10,15,4,9,14,3,8,13,2,7,12,5,8,11,14,1,4,7,10,13,0,3,6,9,12,15,2,0,7,14,5,12,3,10,1,8,15,6,13,4,11,2,9],c=[7,12,17,22,7,12,17,22,7,12,17,22,7,12,17,22,5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20,4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23,6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21],f=new Array(64);for(var e=0;e<64;++e)f[e]=Math.floor(4294967296*Math.abs(Math.sin(e+1)));l=!0}function a(e,t,r){for(var n,a,i,o,u,l,d,h,p=r.length();p>=64;){for(a=e.h0,i=e.h1,o=e.h2,u=e.h3,h=0;h<16;++h)t[h]=r.getInt32Le(),l=u^i&(o^u),n=a+l+f[h]+t[h],d=c[h],a=u,u=o,o=i,i+=n<>>32-d;for(;h<32;++h)l=o^u&(i^o),n=a+l+f[h]+t[s[h]],d=c[h],a=u,u=o,o=i,i+=n<>>32-d;for(;h<48;++h)l=i^o^u,n=a+l+f[h]+t[s[h]],d=c[h],a=u,u=o,o=i,i+=n<>>32-d;for(;h<64;++h)l=o^(i|~u),n=a+l+f[h]+t[s[h]],d=c[h],a=u,u=o,o=i,i+=n<>>32-d;e.h0=e.h0+a|0,e.h1=e.h1+i|0,e.h2=e.h2+o|0,e.h3=e.h3+u|0,p-=64}}var i=r(0);r(4),r(1);var o=e.exports=i.md5=i.md5||{};i.md.md5=i.md.algorithms.md5=o,o.create=function(){l||n();var e=null,t=i.util.createBuffer(),r=new Array(16),o={algorithm:"md5",blockLength:64,digestLength:16,messageLength:0,fullMessageLength:null,messageLengthSize:8};return o.start=function(){o.messageLength=0,o.fullMessageLength=o.messageLength64=[];for(var r=o.messageLengthSize/4,n=0;n>>0,s>>>0];for(var c=o.fullMessageLength.length-1;c>=0;--c)o.fullMessageLength[c]+=s[1],s[1]=s[0]+(o.fullMessageLength[c]/4294967296>>>0),o.fullMessageLength[c]=o.fullMessageLength[c]>>>0,s[0]=s[1]/4294967296>>>0;return t.putBytes(n),a(e,r,t),(t.read>2048||0===t.length())&&t.compact(),o},o.digest=function(){var n=i.util.createBuffer();n.putBytes(t.bytes());var s=o.fullMessageLength[o.fullMessageLength.length-1]+o.messageLengthSize,c=s&o.blockLength-1;n.putBytes(u.substr(0,o.blockLength-c));for(var f,l=0,d=o.fullMessageLength.length-1;d>=0;--d)f=8*o.fullMessageLength[d]+l,l=f/4294967296>>>0,n.putInt32Le(f>>>0);var h={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3};a(h,r,n);var p=i.util.createBuffer();return p.putInt32Le(h.h0),p.putInt32Le(h.h1),p.putInt32Le(h.h2),p.putInt32Le(h.h3),p},o};var u=null,s=null,c=null,f=null,l=!1},function(e,t,r){(function(t){var n=r(0);r(8),r(4),r(1);var a,i=n.pkcs5=n.pkcs5||{};n.util.isNodejs&&!n.options.usePureJavaScript&&(a=r(21)),e.exports=n.pbkdf2=i.pbkdf2=function(e,r,i,o,u,s){function c(){if(C>h)return s(null,b);g.start(null,null),g.update(r),g.update(n.util.int32ToBytes(C)),v=m=g.digest().getBytes(),S=2,f()}function f(){if(S<=i)return g.start(null,null),g.update(m),y=g.digest().getBytes(),v=n.util.xorBytes(v,y,l),m=y,++S,n.util.setImmediate(f);b+=C4||!u||"sha1"===u))return"string"!=typeof u&&(u="sha1"),e=new t(e,"binary"),r=new t(r,"binary"),s?4===a.pbkdf2Sync.length?a.pbkdf2(e,r,i,o,function(e,t){if(e)return s(e);s(null,t.toString("binary"))}):a.pbkdf2(e,r,i,o,u,function(e,t){if(e)return s(e);s(null,t.toString("binary"))}):4===a.pbkdf2Sync.length?a.pbkdf2Sync(e,r,i,o).toString("binary"):a.pbkdf2Sync(e,r,i,o,u).toString("binary");if(void 0!==u&&null!==u||(u="sha1"),"string"==typeof u){if(!(u in n.md.algorithms))throw new Error("Unknown hash algorithm: "+u);u=n.md[u].create()}var l=u.digestLength;if(o>4294967295*l){var d=new Error("Derived key is too long.");if(s)return s(d);throw d}var h=Math.ceil(o/l),p=o-(h-1)*l,g=n.hmac.create();g.start(u,e);var v,y,m,b="";if(!s){for(var C=1;C<=h;++C){g.start(null,null),g.update(r),g.update(n.util.int32ToBytes(C)),v=m=g.digest().getBytes();for(var S=2;S<=i;++S)g.start(null,null),g.update(m),y=g.digest().getBytes(),v=n.util.xorBytes(v,y,l),m=y;b+=C>8*l-f&255;return(C=String.fromCharCode(C.charCodeAt(0)&~S)+C.substr(1))+g+String.fromCharCode(188)},s.verify=function(e,i,u){var s,c=u-1,f=Math.ceil(c/8);if(i=i.substr(-f),f>8*f-c&255;if(0!=(d.charCodeAt(0)&p))throw new Error("Bits beyond keysize not zero as expected.");var g=r.generate(h,l),v="";for(s=0;s128)throw new Error('Invalid "nsComment" content.');e.value=l.create(l.Class.UNIVERSAL,l.Type.IA5STRING,!1,e.comment)}else if("subjectKeyIdentifier"===e.name&&t.cert){var v=t.cert.generateSubjectKeyIdentifier();e.subjectKeyIdentifier=v.toHex(),e.value=l.create(l.Class.UNIVERSAL,l.Type.OCTETSTRING,!1,v.getBytes())}else if("authorityKeyIdentifier"===e.name&&t.cert){e.value=l.create(l.Class.UNIVERSAL,l.Type.SEQUENCE,!0,[]);var s=e.value.value;if(e.keyIdentifier){var y=!0===e.keyIdentifier?t.cert.generateSubjectKeyIdentifier().getBytes():e.keyIdentifier;s.push(l.create(l.Class.CONTEXT_SPECIFIC,0,!1,y))}if(e.authorityCertIssuer){var m=[l.create(l.Class.CONTEXT_SPECIFIC,4,!0,[a(!0===e.authorityCertIssuer?t.cert.issuer:e.authorityCertIssuer)])];s.push(l.create(l.Class.CONTEXT_SPECIFIC,1,!0,m))}if(e.serialNumber){var b=f.util.hexToBytes(!0===e.serialNumber?t.cert.serialNumber:e.serialNumber);s.push(l.create(l.Class.CONTEXT_SPECIFIC,2,!1,b))}}else if("cRLDistributionPoints"===e.name){e.value=l.create(l.Class.UNIVERSAL,l.Type.SEQUENCE,!0,[]);for(var p,s=e.value.value,C=l.create(l.Class.UNIVERSAL,l.Type.SEQUENCE,!0,[]),S=l.create(l.Class.CONTEXT_SPECIFIC,0,!0,[]),g=0;g=S&&e2)throw new Error("Cannot read notBefore/notAfter validity times; more than two times were provided in the certificate.");if(p.length<2)throw new Error("Cannot read notBefore/notAfter validity times; they were not provided as either UTCTime or GeneralizedTime.");if(s.validity.notBefore=p[0],s.validity.notAfter=p[1],s.tbsCertificate=r.tbsCertificate,t){if(s.md=null,s.signatureOid in h){var u=h[s.signatureOid];switch(u){case"sha1WithRSAEncryption":s.md=f.md.sha1.create();break;case"md5WithRSAEncryption":s.md=f.md.md5.create();break;case"sha256WithRSAEncryption":s.md=f.md.sha256.create();break;case"sha384WithRSAEncryption":s.md=f.md.sha384.create();break;case"sha512WithRSAEncryption":s.md=f.md.sha512.create();break;case"RSASSA-PSS":s.md=f.md.sha256.create()}}if(null===s.md){var o=new Error("Could not compute certificate digest. Unknown signature OID.");throw o.signatureOid=s.signatureOid,o}var g=l.toDer(s.tbsCertificate);s.md.update(g.getBytes())}var y=f.md.sha1.create();s.issuer.getField=function(e){return n(s.issuer,e)},s.issuer.addField=function(e){i([e]),s.issuer.attributes.push(e)},s.issuer.attributes=d.RDNAttributesAsArray(r.certIssuer,y),r.certIssuerUniqueId&&(s.issuer.uniqueId=r.certIssuerUniqueId),s.issuer.hash=y.digest().toHex();var m=f.md.sha1.create();return s.subject.getField=function(e){return n(s.subject,e)},s.subject.addField=function(e){i([e]),s.subject.attributes.push(e)},s.subject.attributes=d.RDNAttributesAsArray(r.certSubject,m),r.certSubjectUniqueId&&(s.subject.uniqueId=r.certSubjectUniqueId),s.subject.hash=m.digest().toHex(),r.certExtensions?s.extensions=d.certificateExtensionsFromAsn1(r.certExtensions):s.extensions=[],s.publicKey=d.publicKeyFromAsn1(r.subjectPublicKeyInfo),s},d.certificateExtensionsFromAsn1=function(e){for(var t=[],r=0;r1&&(n=r.value.charCodeAt(1),a=r.value.length>2?r.value.charCodeAt(2):0),t.digitalSignature=128==(128&n),t.nonRepudiation=64==(64&n),t.keyEncipherment=32==(32&n),t.dataEncipherment=16==(16&n),t.keyAgreement=8==(8&n),t.keyCertSign=4==(4&n),t.cRLSign=2==(2&n),t.encipherOnly=1==(1&n),t.decipherOnly=128==(128&a)}else if("basicConstraints"===t.name){var r=l.fromDer(t.value);r.value.length>0&&r.value[0].type===l.Type.BOOLEAN?t.cA=0!==r.value[0].value.charCodeAt(0):t.cA=!1;var i=null;r.value.length>0&&r.value[0].type===l.Type.INTEGER?i=r.value[0].value:r.value.length>1&&(i=r.value[1].value),null!==i&&(t.pathLenConstraint=l.derToInteger(i))}else if("extKeyUsage"===t.name)for(var r=l.fromDer(t.value),o=0;o1&&(n=r.value.charCodeAt(1)),t.client=128==(128&n),t.server=64==(64&n),t.email=32==(32&n),t.objsign=16==(16&n),t.reserved=8==(8&n),t.sslCA=4==(4&n),t.emailCA=2==(2&n),t.objCA=1==(1&n)}else if("subjectAltName"===t.name||"issuerAltName"===t.name){t.altNames=[];for(var s,r=l.fromDer(t.value),c=0;c0&&n.value.push(d.certificateExtensionsToAsn1(e.extensions)),n},d.getCertificationRequestInfo=function(e){return l.create(l.Class.UNIVERSAL,l.Type.SEQUENCE,!0,[l.create(l.Class.UNIVERSAL,l.Type.INTEGER,!1,l.integerToDer(e.version).getBytes()),a(e.subject),d.publicKeyToAsn1(e.publicKey),s(e)])},d.distinguishedNameToAsn1=function(e){return a(e)},d.certificateToAsn1=function(e){var t=e.tbsCertificate||d.getTBSCertificate(e);return l.create(l.Class.UNIVERSAL,l.Type.SEQUENCE,!0,[t,l.create(l.Class.UNIVERSAL,l.Type.SEQUENCE,!0,[l.create(l.Class.UNIVERSAL,l.Type.OID,!1,l.oidToDer(e.signatureOid).getBytes()),u(e.signatureOid,e.signatureParameters)]),l.create(l.Class.UNIVERSAL,l.Type.BITSTRING,!1,String.fromCharCode(0)+e.signature)])},d.certificateExtensionsToAsn1=function(e){var t=l.create(l.Class.CONTEXT_SPECIFIC,3,!0,[]),r=l.create(l.Class.UNIVERSAL,l.Type.SEQUENCE,!0,[]);t.value.push(r);for(var n=0;ns.validity.notAfter)&&(o={message:"Certificate is not valid yet or has expired.",error:d.certificateError.certificate_expired,notBefore:s.validity.notBefore,notAfter:s.validity.notAfter,now:a}),null===o){if(c=t[0]||e.getIssuer(s),null===c&&s.isIssuer(s)&&(l=!0,c=s),c){var h=c;f.util.isArray(h)||(h=[h]);for(var p=!1;!p&&h.length>0;){c=h.shift();try{p=c.verify(s)}catch(e){}}p||(o={message:"Certificate signature is invalid.",error:d.certificateError.bad_certificate})}null!==o||c&&!l||e.hasCertificate(s)||(o={message:"Certificate is not trusted.",error:d.certificateError.unknown_ca})}if(null===o&&c&&!s.isIssuer(c)&&(o={message:"Certificate issuer is invalid.",error:d.certificateError.bad_certificate}),null===o)for(var g={keyUsage:!0,basicConstraints:!0},v=0;null===o&&vm.pathLenConstraint&&(o={message:"Certificate basicConstraints pathLenConstraint violated.",error:d.certificateError.bad_certificate})}}var C=null===o||o.error,S=r.verify?r.verify(C,u,n):C;if(!0!==S)throw!0===C&&(o={message:"The application rejected the certificate.",error:d.certificateError.bad_certificate}),(S||0===S)&&("object"!=typeof S||f.util.isArray(S)?"string"==typeof S&&(o.error=S):(S.message&&(o.message=S.message),S.error&&(o.error=S.error))),o;o=null,i=!1,++u}while(t.length>0);return!0}},function(e,t){function r(){throw new Error("setTimeout has not been defined")}function n(){throw new Error("clearTimeout has not been defined")}function a(e){if(f===setTimeout)return setTimeout(e,0);if((f===r||!f)&&setTimeout)return f=setTimeout,setTimeout(e,0);try{return f(e,0)}catch(t){try{return f.call(null,e,0)}catch(t){return f.call(this,e,0)}}}function i(e){if(l===clearTimeout)return clearTimeout(e);if((l===n||!l)&&clearTimeout)return l=clearTimeout,clearTimeout(e);try{return l(e)}catch(t){try{return l.call(null,e)}catch(t){return l.call(this,e)}}}function o(){g&&h&&(g=!1,h.length?p=h.concat(p):v=-1,p.length&&u())}function u(){if(!g){var e=a(o);g=!0;for(var t=p.length;t;){for(h=p,p=[];++v1)for(var r=1;r4){var t=e;e=o.util.createBuffer();for(var r=0;r0))return!0;for(var n=0;n0))return!0;for(var n=0;n0)return!1;var r=e.length(),n=e.at(r-1);return!(n>this.blockSize<<2)&&(e.truncate(n),!0)},u.cbc=function(e){e=e||{},this.name="CBC",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=new Array(this._ints),this._outBlock=new Array(this._ints)},u.cbc.prototype.start=function(e){if(null===e.iv){if(!this._prev)throw new Error("Invalid IV parameter.");this._iv=this._prev.slice(0)}else{if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=n(e.iv),this._prev=this._iv.slice(0)}},u.cbc.prototype.encrypt=function(e,t,r){if(e.length()0))return!0;for(var n=0;n0))return!0;for(var n=0;n0)return!1;var r=e.length(),n=e.at(r-1);return!(n>this.blockSize<<2)&&(e.truncate(n),!0)},u.cfb=function(e){e=e||{},this.name="CFB",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=null,this._outBlock=new Array(this._ints),this._partialBlock=new Array(this._ints),this._partialOutput=o.util.createBuffer(),this._partialBytes=0},u.cfb.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=n(e.iv),this._inBlock=this._iv.slice(0),this._partialBytes=0},u.cfb.prototype.encrypt=function(e,t,r){var n=e.length();if(0===n)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize)for(var a=0;a0&&(i=this.blockSize-i),this._partialOutput.clear();for(var a=0;a0)e.read-=this.blockSize;else for(var a=0;a0&&this._partialOutput.getBytes(this._partialBytes),i>0&&!r)return t.putBytes(this._partialOutput.getBytes(i-this._partialBytes)),this._partialBytes=i,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}},u.cfb.prototype.decrypt=function(e,t,r){var n=e.length();if(0===n)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize)for(var a=0;a0&&(i=this.blockSize-i),this._partialOutput.clear();for(var a=0;a0)e.read-=this.blockSize;else for(var a=0;a0&&this._partialOutput.getBytes(this._partialBytes),i>0&&!r)return t.putBytes(this._partialOutput.getBytes(i-this._partialBytes)),this._partialBytes=i,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}},u.ofb=function(e){e=e||{},this.name="OFB",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=null,this._outBlock=new Array(this._ints),this._partialOutput=o.util.createBuffer(),this._partialBytes=0},u.ofb.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=n(e.iv),this._inBlock=this._iv.slice(0),this._partialBytes=0},u.ofb.prototype.encrypt=function(e,t,r){var n=e.length();if(0===e.length())return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize)for(var a=0;a0&&(i=this.blockSize-i),this._partialOutput.clear();for(var a=0;a0)e.read-=this.blockSize;else for(var a=0;a0&&this._partialOutput.getBytes(this._partialBytes),i>0&&!r)return t.putBytes(this._partialOutput.getBytes(i-this._partialBytes)),this._partialBytes=i,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}},u.ofb.prototype.decrypt=u.ofb.prototype.encrypt,u.ctr=function(e){e=e||{},this.name="CTR",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=null,this._outBlock=new Array(this._ints),this._partialOutput=o.util.createBuffer(),this._partialBytes=0},u.ctr.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=n(e.iv),this._inBlock=this._iv.slice(0),this._partialBytes=0},u.ctr.prototype.encrypt=function(e,t,r){var n=e.length();if(0===n)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize)for(var i=0;i0&&(o=this.blockSize-o),this._partialOutput.clear();for(var i=0;i0&&(e.read-=this.blockSize),this._partialBytes>0&&this._partialOutput.getBytes(this._partialBytes),o>0&&!r)return t.putBytes(this._partialOutput.getBytes(o-this._partialBytes)),this._partialBytes=o,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}a(this._inBlock)},u.ctr.prototype.decrypt=u.ctr.prototype.encrypt,u.gcm=function(e){e=e||{},this.name="GCM",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=new Array(this._ints),this._outBlock=new Array(this._ints),this._partialOutput=o.util.createBuffer(),this._partialBytes=0,this._R=3774873600},u.gcm.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");var t=o.util.createBuffer(e.iv);this._cipherLength=0;var r;if(r="additionalData"in e?o.util.createBuffer(e.additionalData):o.util.createBuffer(),this._tagLength="tagLength"in e?e.tagLength:128,this._tag=null,e.decrypt&&(this._tag=o.util.createBuffer(e.tag).getBytes(),this._tag.length!==this._tagLength/8))throw new Error("Authentication tag does not match tag length.");this._hashBlock=new Array(this._ints),this.tag=null,this._hashSubkey=new Array(this._ints),this.cipher.encrypt([0,0,0,0],this._hashSubkey),this.componentBits=4,this._m=this.generateHashTable(this._hashSubkey,this.componentBits);var n=t.length();if(12===n)this._j0=[t.getInt32(),t.getInt32(),t.getInt32(),1];else{for(this._j0=[0,0,0,0];t.length()>0;)this._j0=this.ghash(this._hashSubkey,this._j0,[t.getInt32(),t.getInt32(),t.getInt32(),t.getInt32()]);this._j0=this.ghash(this._hashSubkey,this._j0,[0,0].concat(i(8*n)))}this._inBlock=this._j0.slice(0),a(this._inBlock),this._partialBytes=0,r=o.util.createBuffer(r),this._aDataLength=i(8*r.length());var u=r.length()%this.blockSize;for(u&&r.fillWithByte(0,this.blockSize-u),this._s=[0,0,0,0];r.length()>0;)this._s=this.ghash(this._hashSubkey,this._s,[r.getInt32(),r.getInt32(),r.getInt32(),r.getInt32()])},u.gcm.prototype.encrypt=function(e,t,r){var n=e.length();if(0===n)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize){for(var i=0;i0&&(o=this.blockSize-o),this._partialOutput.clear();for(var i=0;i0&&this._partialOutput.getBytes(this._partialBytes),o>0&&!r)return e.read-=this.blockSize,t.putBytes(this._partialOutput.getBytes(o-this._partialBytes)),this._partialBytes=o,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}this._s=this.ghash(this._hashSubkey,this._s,this._outBlock),a(this._inBlock)},u.gcm.prototype.decrypt=function(e,t,r){var n=e.length();if(n0))return!0;this.cipher.encrypt(this._inBlock,this._outBlock),a(this._inBlock),this._hashBlock[0]=e.getInt32(),this._hashBlock[1]=e.getInt32(),this._hashBlock[2]=e.getInt32(),this._hashBlock[3]=e.getInt32(),this._s=this.ghash(this._hashSubkey,this._s,this._hashBlock);for(var i=0;i0;--n)t[n]=e[n]>>>1|(1&e[n-1])<<31;t[0]=e[0]>>>1,r&&(t[0]^=this._R)},u.gcm.prototype.tableMultiply=function(e){for(var t=[0,0,0,0],r=0;r<32;++r){var n=r/8|0,a=e[n]>>>4*(7-r%8)&15,i=this._m[r][a];t[0]^=i[0],t[1]^=i[1],t[2]^=i[2],t[3]^=i[3]}return t},u.gcm.prototype.ghash=function(e,t,r){return t[0]^=r[0],t[1]^=r[1],t[2]^=r[2],t[3]^=r[3],this.tableMultiply(t)},u.gcm.prototype.generateHashTable=function(e,t){for(var r=8/t,n=4*r,a=16*r,i=new Array(a),o=0;o>>1,a=new Array(r);a[n]=e.slice(0);for(var i=n>>>1;i>0;)this.pow(a[2*i],a[i]=[]),i>>=1;for(i=2;i=0;s--)N>>=8,N+=I.at(s)+k.at(s),k.setAt(s,255&N);B.putBuffer(k)}C=B,l.putBuffer(T)}return l.truncate(l.length()-a),l},f.pbe.getCipher=function(e,t,r){switch(e){case f.oids.pkcs5PBES2:return f.pbe.getCipherForPBES2(e,t,r);case f.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:case f.oids["pbewithSHAAnd40BitRC2-CBC"]:return f.pbe.getCipherForPKCS12PBE(e,t,r);default:var n=new Error("Cannot read encrypted PBE data block. Unsupported OID.");throw n.oid=e,n.supportedOids=["pkcs5PBES2","pbeWithSHAAnd3-KeyTripleDES-CBC","pbewithSHAAnd40BitRC2-CBC"],n}},f.pbe.getCipherForPBES2=function(e,t,r){var n={},i=[];if(!c.validate(t,h,n,i)){var o=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw o.errors=i,o}if((e=c.derToOid(n.kdfOid))!==f.oids.pkcs5PBKDF2){var o=new Error("Cannot read encrypted private key. Unsupported key derivation function OID.");throw o.oid=e,o.supportedOids=["pkcs5PBKDF2"],o}if((e=c.derToOid(n.encOid))!==f.oids["aes128-CBC"]&&e!==f.oids["aes192-CBC"]&&e!==f.oids["aes256-CBC"]&&e!==f.oids["des-EDE3-CBC"]&&e!==f.oids.desCBC){var o=new Error("Cannot read encrypted private key. Unsupported encryption scheme OID.");throw o.oid=e,o.supportedOids=["aes128-CBC","aes192-CBC","aes256-CBC","des-EDE3-CBC","desCBC"],o}var s=n.kdfSalt,l=u.util.createBuffer(n.kdfIterationCount);l=l.getInt(l.length()<<3);var d,p;switch(f.oids[e]){case"aes128-CBC":d=16,p=u.aes.createDecryptionCipher;break;case"aes192-CBC":d=24,p=u.aes.createDecryptionCipher;break;case"aes256-CBC":d=32,p=u.aes.createDecryptionCipher;break;case"des-EDE3-CBC":d=24,p=u.des.createDecryptionCipher;break;case"desCBC":d=8,p=u.des.createDecryptionCipher}var g=a(n.prfOid),v=u.pkcs5.pbkdf2(r,s,l,d,g),y=n.encIv,m=p(v);return m.start(y),m},f.pbe.getCipherForPKCS12PBE=function(e,t,r){var n={},i=[];if(!c.validate(t,p,n,i)){var o=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw o.errors=i,o}var s=u.util.createBuffer(n.salt),l=u.util.createBuffer(n.iterations);l=l.getInt(l.length()<<3);var d,h,g;switch(e){case f.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:d=24,h=8,g=u.des.startDecrypting;break;case f.oids["pbewithSHAAnd40BitRC2-CBC"]:d=5,h=8,g=function(e,t){var r=u.rc2.createDecryptionCipher(e,40);return r.start(t,null),r};break;default:var o=new Error("Cannot read PKCS #12 PBE data block. Unsupported OID.");throw o.oid=e,o}var v=a(n.prfOid),y=f.pbe.generatePkcs12Key(r,s,1,l,d,v);return v.start(),g(y,f.pbe.generatePkcs12Key(r,s,2,l,h,v))},f.pbe.opensslDeriveBytes=function(e,t,r,a){if(void 0===a||null===a){if(!("md5"in u.md))throw new Error('"md5" hash algorithm unavailable.');a=u.md.md5.create()}null===t&&(t="");for(var i=[n(a,e+t)],o=16,s=1;o>24&255,o>>16&255,o>>8&255,255&o);r.start(),r.update(e+u),n+=r.digest().getBytes()}return n.substring(0,t)}var a=r(0);r(1),r(2),r(9);var i=e.exports=a.pkcs1=a.pkcs1||{};i.encode_rsa_oaep=function(e,t,r){var i,o,u,s;"string"==typeof r?(i=r,o=arguments[3]||void 0,u=arguments[4]||void 0):r&&(i=r.label||void 0,o=r.seed||void 0,u=r.md||void 0,r.mgf1&&r.mgf1.md&&(s=r.mgf1.md)),u?u.start():u=a.md.sha1.create(),s||(s=u);var c=Math.ceil(e.n.bitLength()/8),f=c-2*u.digestLength-2;if(t.length>f){var l=new Error("RSAES-OAEP input message length is too long.");throw l.length=t.length,l.maxLength=f,l}i||(i=""),u.update(i,"raw");for(var d=u.digest(),h="",p=f-t.length,g=0;g=0&&a.push(u):a.push(u))}return a}function a(e){if(e.composed||e.constructed){for(var t=c.util.createBuffer(),r=0;r0&&(a=f.create(f.Class.UNIVERSAL,f.Type.SET,!0,s));var h=[],p=[];null!==t&&(p=c.util.isArray(t)?t:[t]);for(var g=[],v=0;v0){var C=f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,g),S=f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,[f.create(f.Class.UNIVERSAL,f.Type.OID,!1,f.oidToDer(l.oids.data).getBytes()),f.create(f.Class.CONTEXT_SPECIFIC,0,!0,[f.create(f.Class.UNIVERSAL,f.Type.OCTETSTRING,!1,f.toDer(C).getBytes())])]);h.push(S)}var E=null;if(null!==e){var T=l.wrapRsaPrivateKey(l.privateKeyToAsn1(e));E=null===r?f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,[f.create(f.Class.UNIVERSAL,f.Type.OID,!1,f.oidToDer(l.oids.keyBag).getBytes()),f.create(f.Class.CONTEXT_SPECIFIC,0,!0,[T]),a]):f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,[f.create(f.Class.UNIVERSAL,f.Type.OID,!1,f.oidToDer(l.oids.pkcs8ShroudedKeyBag).getBytes()),f.create(f.Class.CONTEXT_SPECIFIC,0,!0,[l.encryptPrivateKeyInfo(T,r,n)]),a]);var w=f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,[E]),I=f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,[f.create(f.Class.UNIVERSAL,f.Type.OID,!1,f.oidToDer(l.oids.data).getBytes()),f.create(f.Class.CONTEXT_SPECIFIC,0,!0,[f.create(f.Class.UNIVERSAL,f.Type.OCTETSTRING,!1,f.toDer(w).getBytes())])]);h.push(I)}var A,B=f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,h);if(n.useMac){var u=c.md.sha1.create(),k=new c.util.ByteBuffer(c.random.getBytes(n.saltSize)),N=n.count,e=d.generateKey(r,k,3,N,20),R=c.hmac.create();R.start(u,e),R.update(f.toDer(B).getBytes());var $=R.getMac();A=f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,[f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,[f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,[f.create(f.Class.UNIVERSAL,f.Type.OID,!1,f.oidToDer(l.oids.sha1).getBytes()),f.create(f.Class.UNIVERSAL,f.Type.NULL,!1,"")]),f.create(f.Class.UNIVERSAL,f.Type.OCTETSTRING,!1,$.getBytes())]),f.create(f.Class.UNIVERSAL,f.Type.OCTETSTRING,!1,k.getBytes()),f.create(f.Class.UNIVERSAL,f.Type.INTEGER,!1,f.integerToDer(N).getBytes())])}return f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,[f.create(f.Class.UNIVERSAL,f.Type.INTEGER,!1,f.integerToDer(3).getBytes()),f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,[f.create(f.Class.UNIVERSAL,f.Type.OID,!1,f.oidToDer(l.oids.data).getBytes()),f.create(f.Class.CONTEXT_SPECIFIC,0,!0,[f.create(f.Class.UNIVERSAL,f.Type.OCTETSTRING,!1,f.toDer(B).getBytes())])]),A])},d.generateKey=c.pbe.generatePkcs12Key},function(e,t,r){var n=r(0);r(3),r(1);var a=n.asn1,i=e.exports=n.pkcs7asn1=n.pkcs7asn1||{};n.pkcs7=n.pkcs7||{},n.pkcs7.asn1=i;var o={name:"ContentInfo",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"ContentInfo.ContentType",tagClass:a.Class.UNIVERSAL,type:a.Type.OID,constructed:!1,capture:"contentType"},{name:"ContentInfo.content",tagClass:a.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,captureAsn1:"content"}]};i.contentInfoValidator=o;var u={name:"EncryptedContentInfo",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"EncryptedContentInfo.contentType",tagClass:a.Class.UNIVERSAL,type:a.Type.OID,constructed:!1,capture:"contentType"},{name:"EncryptedContentInfo.contentEncryptionAlgorithm",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"EncryptedContentInfo.contentEncryptionAlgorithm.algorithm",tagClass:a.Class.UNIVERSAL,type:a.Type.OID,constructed:!1,capture:"encAlgorithm"},{name:"EncryptedContentInfo.contentEncryptionAlgorithm.parameter",tagClass:a.Class.UNIVERSAL,captureAsn1:"encParameter"}]},{name:"EncryptedContentInfo.encryptedContent",tagClass:a.Class.CONTEXT_SPECIFIC,type:0,capture:"encryptedContent",captureAsn1:"encryptedContentAsn1"}]};i.envelopedDataValidator={name:"EnvelopedData",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"EnvelopedData.Version",tagClass:a.Class.UNIVERSAL,type:a.Type.INTEGER,constructed:!1,capture:"version"},{name:"EnvelopedData.RecipientInfos",tagClass:a.Class.UNIVERSAL,type:a.Type.SET,constructed:!0,captureAsn1:"recipientInfos"}].concat(u)},i.encryptedDataValidator={name:"EncryptedData",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"EncryptedData.Version",tagClass:a.Class.UNIVERSAL,type:a.Type.INTEGER,constructed:!1,capture:"version"}].concat(u)};var s={name:"SignerInfo",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"SignerInfo.version",tagClass:a.Class.UNIVERSAL,type:a.Type.INTEGER,constructed:!1},{name:"SignerInfo.issuerAndSerialNumber",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"SignerInfo.issuerAndSerialNumber.issuer",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,captureAsn1:"issuer"},{name:"SignerInfo.issuerAndSerialNumber.serialNumber",tagClass:a.Class.UNIVERSAL,type:a.Type.INTEGER,constructed:!1,capture:"serial"}]},{name:"SignerInfo.digestAlgorithm",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"SignerInfo.digestAlgorithm.algorithm",tagClass:a.Class.UNIVERSAL,type:a.Type.OID,constructed:!1,capture:"digestAlgorithm"},{name:"SignerInfo.digestAlgorithm.parameter",tagClass:a.Class.UNIVERSAL,constructed:!1,captureAsn1:"digestParameter",optional:!0}]},{name:"SignerInfo.authenticatedAttributes",tagClass:a.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,capture:"authenticatedAttributes"},{name:"SignerInfo.digestEncryptionAlgorithm",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,capture:"signatureAlgorithm"},{name:"SignerInfo.encryptedDigest",tagClass:a.Class.UNIVERSAL,type:a.Type.OCTETSTRING,constructed:!1,capture:"signature"},{name:"SignerInfo.unauthenticatedAttributes",tagClass:a.Class.CONTEXT_SPECIFIC,type:1,constructed:!0,optional:!0,capture:"unauthenticatedAttributes"}]};i.signedDataValidator={name:"SignedData",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"SignedData.Version",tagClass:a.Class.UNIVERSAL,type:a.Type.INTEGER,constructed:!1,capture:"version"},{name:"SignedData.DigestAlgorithms",tagClass:a.Class.UNIVERSAL,type:a.Type.SET,constructed:!0,captureAsn1:"digestAlgorithms"},o,{name:"SignedData.Certificates",tagClass:a.Class.CONTEXT_SPECIFIC,type:0,optional:!0,captureAsn1:"certificates"},{name:"SignedData.CertificateRevocationLists",tagClass:a.Class.CONTEXT_SPECIFIC,type:1,optional:!0,captureAsn1:"crls"},{name:"SignedData.SignerInfos",tagClass:a.Class.UNIVERSAL,type:a.Type.SET,capture:"signerInfos",optional:!0,value:[s]}]},i.recipientInfoValidator={name:"RecipientInfo",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"RecipientInfo.version",tagClass:a.Class.UNIVERSAL,type:a.Type.INTEGER,constructed:!1,capture:"version"},{name:"RecipientInfo.issuerAndSerial",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"RecipientInfo.issuerAndSerial.issuer",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,captureAsn1:"issuer"},{name:"RecipientInfo.issuerAndSerial.serialNumber",tagClass:a.Class.UNIVERSAL,type:a.Type.INTEGER,constructed:!1,capture:"serial"}]},{name:"RecipientInfo.keyEncryptionAlgorithm",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"RecipientInfo.keyEncryptionAlgorithm.algorithm",tagClass:a.Class.UNIVERSAL,type:a.Type.OID,constructed:!1,capture:"encAlgorithm"},{name:"RecipientInfo.keyEncryptionAlgorithm.parameter",tagClass:a.Class.UNIVERSAL,constructed:!1,captureAsn1:"encParameter"}]},{name:"RecipientInfo.encryptedKey",tagClass:a.Class.UNIVERSAL,type:a.Type.OCTETSTRING,constructed:!1,capture:"encKey"}]}},function(e,t,r){var n=r(0);r(3),r(6),r(27),r(7),r(17),r(29),r(18),r(13),r(1),r(19);var a=n.asn1,i=e.exports=n.pki=n.pki||{};i.pemToDer=function(e){var t=n.pem.decode(e)[0];if(t.procType&&"ENCRYPTED"===t.procType.type)throw new Error("Could not convert PEM to DER; PEM is encrypted.");return n.util.createBuffer(t.body)},i.privateKeyFromPem=function(e){var t=n.pem.decode(e)[0];if("PRIVATE KEY"!==t.type&&"RSA PRIVATE KEY"!==t.type){var r=new Error('Could not convert private key from PEM; PEM header type is not "PRIVATE KEY" or "RSA PRIVATE KEY".');throw r.headerType=t.type,r}if(t.procType&&"ENCRYPTED"===t.procType.type)throw new Error("Could not convert private key from PEM; PEM is encrypted.");var o=a.fromDer(t.body);return i.privateKeyFromAsn1(o)},i.privateKeyToPem=function(e,t){var r={type:"RSA PRIVATE KEY",body:a.toDer(i.privateKeyToAsn1(e)).getBytes()};return n.pem.encode(r,{maxline:t})},i.privateKeyInfoToPem=function(e,t){var r={type:"PRIVATE KEY",body:a.toDer(e).getBytes()};return n.pem.encode(r,{maxline:t})}},function(e,t,r){var n=r(0);r(1),r(12),r(2),function(){function t(e,t,n,a){return"workers"in n?i(e,t,n,a):r(e,t,n,a)}function r(e,t,r,n){var i=o(e,t),s=u(i.bitLength());"millerRabinTests"in r&&(s=r.millerRabinTests);var c=10;"maxBlockTime"in r&&(c=r.maxBlockTime),a(i,e,t,0,s,c,n)}function a(e,t,r,i,u,s,c){var l=+new Date;do{if(e.bitLength()>t&&(e=o(t,r)),e.isProbablePrime(u))return c(null,e);e.dAddOffset(f[i++%8],0)}while(s<0||+new Date-le&&(s=o(e,t));var h=s.toString(16);r.target.postMessage({hex:h,workLoad:l}),s.dAddOffset(d,0)}}f=Math.max(1,f);for(var n=[],a=0;a=32)return i(),e();var t=32-u.pools[0].messageLength<<5;u.seedFile(t,function(t,r){if(t)return e(t);u.collect(r),i(),e()})}function r(){if(u.pools[0].messageLength>=32)return i();var e=32-u.pools[0].messageLength<<5;u.collect(u.seedFileSync(e)),i()}function i(){u.reseeds=4294967295===u.reseeds?0:u.reseeds+1;var e=u.plugin.md.create();e.update(u.keyBytes);for(var t=1,r=0;r<32;++r)u.reseeds%t==0&&(e.update(u.pools[r].digest().getBytes()),u.pools[r].start()),t<<=1;u.keyBytes=e.digest().getBytes(),e.start(),e.update(u.keyBytes);var n=e.digest().getBytes();u.key=u.plugin.formatKey(u.keyBytes),u.seed=u.plugin.formatSeed(n),u.generated=0}function o(e){var t=null,r=n.util.globalScope,a=r.crypto||r.msCrypto;a&&a.getRandomValues&&(t=function(e){return a.getRandomValues(e)});var i=n.util.createBuffer();if(t)for(;i.length()>16),f+=(32767&c)<<16,f+=c>>15,f=(2147483647&f)+(f>>31),d=4294967295&f;for(var s=0;s<3;++s)l=d>>>(s<<3),l^=Math.floor(256*Math.random()),i.putByte(String.fromCharCode(255&l))}return i.getBytes(e)}for(var u={plugin:e,key:null,seed:null,time:null,reseeds:0,generated:0,keyBytes:""},s=e.md,c=new Array(32),f=0;f<32;++f)c[f]=s.create();return u.pools=c,u.pool=0,u.generate=function(e,r){function a(l){if(l)return r(l);if(f.length()>=e)return r(null,f.getBytes(e));if(u.generated>1048575&&(u.key=null),null===u.key)return n.util.nextTick(function(){t(a)});var d=i(u.key,u.seed);u.generated+=d.length,f.putBytes(d),u.key=s(i(u.key,o(u.seed))),u.seed=c(i(u.key,u.seed)),n.util.setImmediate(a)}if(!r)return u.generateSync(e);var i=u.plugin.cipher,o=u.plugin.increment,s=u.plugin.formatKey,c=u.plugin.formatSeed,f=n.util.createBuffer();u.key=null,a()},u.generateSync=function(e){var t=u.plugin.cipher,a=u.plugin.increment,i=u.plugin.formatKey,o=u.plugin.formatSeed;u.key=null;for(var s=n.util.createBuffer();s.length()1048575&&(u.key=null),null===u.key&&r();var c=t(u.key,u.seed);u.generated+=c.length,s.putBytes(c),u.key=i(t(u.key,a(u.seed))),u.seed=o(t(u.key,u.seed))}return s.getBytes(e)},a?(u.seedFile=function(e,t){a.randomBytes(e,function(e,r){if(e)return t(e);t(null,r.toString())})},u.seedFileSync=function(e){return a.randomBytes(e).toString()}):(u.seedFile=function(e,t){try{t(null,o(e))}catch(e){t(e)}},u.seedFileSync=o),u.collect=function(e){for(var t=e.length,r=0;r>n&255);u.collect(r)},u.registerWorker=function(e){if(e===self)u.seedFile=function(e,t){function r(e){var n=e.data;n.forge&&n.forge.prng&&(self.removeEventListener("message",r),t(n.forge.prng.err,n.forge.prng.bytes))}self.addEventListener("message",r),self.postMessage({forge:{prng:{needed:e}}})};else{var t=function(t){var r=t.data;r.forge&&r.forge.prng&&u.seedFile(r.forge.prng.needed,function(t,r){e.postMessage({forge:{prng:{err:t,bytes:r}}})})};e.addEventListener("message",t)}},u}}).call(t,r(20))},function(e,t,r){var n=r(0);r(1);var a=[217,120,249,196,25,221,181,237,40,233,253,121,74,160,216,157,198,126,55,131,43,118,83,142,98,76,100,136,68,139,251,162,23,154,89,245,135,179,79,19,97,69,109,141,9,129,125,50,189,143,64,235,134,183,123,11,240,149,33,34,92,107,78,130,84,214,101,147,206,96,178,28,115,86,192,20,167,140,241,220,18,117,202,31,59,190,228,209,66,61,212,48,163,60,182,38,111,191,14,218,70,105,7,87,39,242,29,155,188,148,67,3,248,17,199,246,144,239,62,231,6,195,213,47,200,102,30,215,8,232,234,222,128,82,238,247,132,170,114,172,53,77,106,42,150,26,210,113,90,21,73,116,75,159,208,94,4,24,164,236,194,224,65,110,15,81,203,204,36,145,175,80,161,244,112,57,153,124,58,133,35,184,180,122,252,2,54,91,37,85,151,49,45,93,250,152,227,138,146,174,5,223,41,16,103,108,186,201,211,0,230,207,225,158,168,44,99,22,1,63,88,226,137,169,13,56,52,27,171,51,255,176,187,72,12,95,185,177,205,46,197,243,219,71,229,165,156,119,10,166,32,104,254,127,193,173],i=[1,2,3,5],o=function(e,t){return e<>16-t},u=function(e,t){return(65535&e)>>t|e<<16-t&65535};e.exports=n.rc2=n.rc2||{},n.rc2.expandKey=function(e,t){"string"==typeof e&&(e=n.util.createBuffer(e)),t=t||128;var r,i=e,o=e.length(),u=t,s=Math.ceil(u/8),c=255>>(7&u);for(r=o;r<128;r++)i.putByte(a[i.at(r-1)+i.at(r-o)&255]);for(i.setAt(128-s,a[i.at(128-s)&c]),r=127-s;r>=0;r--)i.setAt(r,a[i.at(r+1)^i.at(r+s)]);return i};var s=function(e,t,r){var a,s,c,f,l=!1,d=null,h=null,p=null,g=[];for(e=n.rc2.expandKey(e,t),c=0;c<64;c++)g.push(e.getInt16Le());r?(a=function(e){for(c=0;c<4;c++)e[c]+=g[f]+(e[(c+3)%4]&e[(c+2)%4])+(~e[(c+3)%4]&e[(c+1)%4]),e[c]=o(e[c],i[c]),f++},s=function(e){for(c=0;c<4;c++)e[c]+=g[63&e[(c+3)%4]]}):(a=function(e){for(c=3;c>=0;c--)e[c]=u(e[c],i[c]),e[c]-=g[f]+(e[(c+3)%4]&e[(c+2)%4])+(~e[(c+3)%4]&e[(c+1)%4]),f--},s=function(e){for(c=3;c>=0;c--)e[c]-=g[63&e[(c+3)%4]]});var v=function(e){var t=[];for(c=0;c<4;c++){var n=d.getInt16Le();null!==p&&(r?n^=p.getInt16Le():p.putInt16Le(n)),t.push(65535&n)}f=r?0:63;for(var a=0;a=8;)v([[5,a],[1,s],[6,a],[1,s],[5,a]])},finish:function(e){var t=!0;if(r)if(e)t=e(8,d,!r);else{var n=8===d.length()?8:8-d.length();d.fillWithByte(n,n)}if(t&&(l=!0,y.update()),!r&&(t=0===d.length()))if(e)t=e(8,h,!r);else{var a=h.length(),i=h.at(a-1);i>a?t=!1:h.truncate(i)}return t}}};n.rc2.startEncrypting=function(e,t,r){var a=n.rc2.createEncryptionCipher(e,128);return a.start(t,r),a},n.rc2.createEncryptionCipher=function(e,t){return s(e,t,!0)},n.rc2.startDecrypting=function(e,t,r){var a=n.rc2.createDecryptionCipher(e,128);return a.start(t,r),a},n.rc2.createDecryptionCipher=function(e,t){return s(e,t,!1)}},function(e,t,r){function n(){u=String.fromCharCode(128),u+=i.util.fillString(String.fromCharCode(0),64),c=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],s=!0}function a(e,t,r){for(var n,a,i,o,u,s,f,l,d,h,p,g,v,y,m,b=r.length();b>=64;){for(f=0;f<16;++f)t[f]=r.getInt32();for(;f<64;++f)n=t[f-2],n=(n>>>17|n<<15)^(n>>>19|n<<13)^n>>>10,a=t[f-15],a=(a>>>7|a<<25)^(a>>>18|a<<14)^a>>>3,t[f]=n+t[f-7]+a+t[f-16]|0;for(l=e.h0,d=e.h1,h=e.h2,p=e.h3,g=e.h4,v=e.h5,y=e.h6,m=e.h7,f=0;f<64;++f)o=(g>>>6|g<<26)^(g>>>11|g<<21)^(g>>>25|g<<7),u=y^g&(v^y),i=(l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10),s=l&d|h&(l^d),n=m+o+u+c[f]+t[f],a=i+s,m=y,y=v,v=g,g=p+n>>>0,p=h,h=d,d=l,l=n+a>>>0;e.h0=e.h0+l|0,e.h1=e.h1+d|0,e.h2=e.h2+h|0,e.h3=e.h3+p|0,e.h4=e.h4+g|0,e.h5=e.h5+v|0,e.h6=e.h6+y|0,e.h7=e.h7+m|0,b-=64}}var i=r(0);r(4),r(1);var o=e.exports=i.sha256=i.sha256||{};i.md.sha256=i.md.algorithms.sha256=o,o.create=function(){s||n();var e=null,t=i.util.createBuffer(),r=new Array(64),o={algorithm:"sha256",blockLength:64,digestLength:32,messageLength:0,fullMessageLength:null,messageLengthSize:8};return o.start=function(){o.messageLength=0,o.fullMessageLength=o.messageLength64=[];for(var r=o.messageLengthSize/4,n=0;n>>0,s>>>0];for(var c=o.fullMessageLength.length-1;c>=0;--c)o.fullMessageLength[c]+=s[1],s[1]=s[0]+(o.fullMessageLength[c]/4294967296>>>0),o.fullMessageLength[c]=o.fullMessageLength[c]>>>0,s[0]=s[1]/4294967296>>>0;return t.putBytes(n),a(e,r,t),(t.read>2048||0===t.length())&&t.compact(),o},o.digest=function(){var n=i.util.createBuffer();n.putBytes(t.bytes());var s=o.fullMessageLength[o.fullMessageLength.length-1]+o.messageLengthSize,c=s&o.blockLength-1;n.putBytes(u.substr(0,o.blockLength-c));for(var f,l,d=8*o.fullMessageLength[0],h=0;h>>0,d+=l,n.putInt32(d>>>0),d=f>>>0;n.putInt32(d);var p={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3,h4:e.h4,h5:e.h5,h6:e.h6,h7:e.h7};a(p,r,n);var g=i.util.createBuffer();return g.putInt32(p.h0),g.putInt32(p.h1),g.putInt32(p.h2),g.putInt32(p.h3),g.putInt32(p.h4),g.putInt32(p.h5),g.putInt32(p.h6),g.putInt32(p.h7),g},o};var u=null,s=!1,c=null},function(e,t,r){function n(){s=String.fromCharCode(128),s+=i.util.fillString(String.fromCharCode(0),128),f=[[1116352408,3609767458],[1899447441,602891725],[3049323471,3964484399],[3921009573,2173295548],[961987163,4081628472],[1508970993,3053834265],[2453635748,2937671579],[2870763221,3664609560],[3624381080,2734883394],[310598401,1164996542],[607225278,1323610764],[1426881987,3590304994],[1925078388,4068182383],[2162078206,991336113],[2614888103,633803317],[3248222580,3479774868],[3835390401,2666613458],[4022224774,944711139],[264347078,2341262773],[604807628,2007800933],[770255983,1495990901],[1249150122,1856431235],[1555081692,3175218132],[1996064986,2198950837],[2554220882,3999719339],[2821834349,766784016],[2952996808,2566594879],[3210313671,3203337956],[3336571891,1034457026],[3584528711,2466948901],[113926993,3758326383],[338241895,168717936],[666307205,1188179964],[773529912,1546045734],[1294757372,1522805485],[1396182291,2643833823],[1695183700,2343527390],[1986661051,1014477480],[2177026350,1206759142],[2456956037,344077627],[2730485921,1290863460],[2820302411,3158454273],[3259730800,3505952657],[3345764771,106217008],[3516065817,3606008344],[3600352804,1432725776],[4094571909,1467031594],[275423344,851169720],[430227734,3100823752],[506948616,1363258195],[659060556,3750685593],[883997877,3785050280],[958139571,3318307427],[1322822218,3812723403],[1537002063,2003034995],[1747873779,3602036899],[1955562222,1575990012],[2024104815,1125592928],[2227730452,2716904306],[2361852424,442776044],[2428436474,593698344],[2756734187,3733110249],[3204031479,2999351573],[3329325298,3815920427],[3391569614,3928383900],[3515267271,566280711],[3940187606,3454069534],[4118630271,4000239992],[116418474,1914138554],[174292421,2731055270],[289380356,3203993006],[460393269,320620315],[685471733,587496836],[852142971,1086792851],[1017036298,365543100],[1126000580,2618297676],[1288033470,3409855158],[1501505948,4234509866],[1607167915,987167468],[1816402316,1246189591]],l={},l["SHA-512"]=[[1779033703,4089235720],[3144134277,2227873595],[1013904242,4271175723],[2773480762,1595750129],[1359893119,2917565137],[2600822924,725511199],[528734635,4215389547],[1541459225,327033209]],l["SHA-384"]=[[3418070365,3238371032],[1654270250,914150663],[2438529370,812702999],[355462360,4144912697],[1731405415,4290775857],[2394180231,1750603025],[3675008525,1694076839],[1203062813,3204075428]],l["SHA-512/256"]=[[573645204,4230739756],[2673172387,3360449730],[596883563,1867755857],[2520282905,1497426621],[2519219938,2827943907],[3193839141,1401305490],[721525244,746961066],[246885852,2177182882]],l["SHA-512/224"]=[[2352822216,424955298],[1944164710,2312950998],[502970286,855612546],[1738396948,1479516111],[258812777,2077511080],[2011393907,79989058],[1067287976,1780299464],[286451373,2446758561]],c=!0}function a(e,t,r){for(var n,a,i,o,u,s,c,l,d,h,p,g,v,y,m,b,C,S,E,T,w,I,A,B,k,N,R,$,x,_,L,P,D,U,O,M=r.length();M>=128;){for(x=0;x<16;++x)t[x][0]=r.getInt32()>>>0,t[x][1]=r.getInt32()>>>0;for(;x<80;++x)P=t[x-2],_=P[0],L=P[1],n=((_>>>19|L<<13)^(L>>>29|_<<3)^_>>>6)>>>0,a=((_<<13|L>>>19)^(L<<3|_>>>29)^(_<<26|L>>>6))>>>0,U=t[x-15],_=U[0],L=U[1],i=((_>>>1|L<<31)^(_>>>8|L<<24)^_>>>7)>>>0,o=((_<<31|L>>>1)^(_<<24|L>>>8)^(_<<25|L>>>7))>>>0,D=t[x-7],O=t[x-16],L=a+D[1]+o+O[1],t[x][0]=n+D[0]+i+O[0]+(L/4294967296>>>0)>>>0,t[x][1]=L>>>0;for(v=e[0][0],y=e[0][1],m=e[1][0],b=e[1][1],C=e[2][0],S=e[2][1],E=e[3][0],T=e[3][1],w=e[4][0],I=e[4][1],A=e[5][0],B=e[5][1],k=e[6][0],N=e[6][1],R=e[7][0],$=e[7][1],x=0;x<80;++x)c=((w>>>14|I<<18)^(w>>>18|I<<14)^(I>>>9|w<<23))>>>0,l=((w<<18|I>>>14)^(w<<14|I>>>18)^(I<<23|w>>>9))>>>0,d=(k^w&(A^k))>>>0,h=(N^I&(B^N))>>>0,u=((v>>>28|y<<4)^(y>>>2|v<<30)^(y>>>7|v<<25))>>>0,s=((v<<4|y>>>28)^(y<<30|v>>>2)^(y<<25|v>>>7))>>>0,p=(v&m|C&(v^m))>>>0,g=(y&b|S&(y^b))>>>0,L=$+l+h+f[x][1]+t[x][1],n=R+c+d+f[x][0]+t[x][0]+(L/4294967296>>>0)>>>0,a=L>>>0,L=s+g,i=u+p+(L/4294967296>>>0)>>>0,o=L>>>0,R=k,$=N,k=A,N=B,A=w,B=I,L=T+a,w=E+n+(L/4294967296>>>0)>>>0,I=L>>>0,E=C,T=S,C=m,S=b,m=v,b=y,L=a+o,v=n+i+(L/4294967296>>>0)>>>0,y=L>>>0;L=e[0][1]+y,e[0][0]=e[0][0]+v+(L/4294967296>>>0)>>>0,e[0][1]=L>>>0,L=e[1][1]+b,e[1][0]=e[1][0]+m+(L/4294967296>>>0)>>>0,e[1][1]=L>>>0,L=e[2][1]+S,e[2][0]=e[2][0]+C+(L/4294967296>>>0)>>>0,e[2][1]=L>>>0,L=e[3][1]+T,e[3][0]=e[3][0]+E+(L/4294967296>>>0)>>>0,e[3][1]=L>>>0,L=e[4][1]+I,e[4][0]=e[4][0]+w+(L/4294967296>>>0)>>>0,e[4][1]=L>>>0,L=e[5][1]+B,e[5][0]=e[5][0]+A+(L/4294967296>>>0)>>>0,e[5][1]=L>>>0,L=e[6][1]+N,e[6][0]=e[6][0]+k+(L/4294967296>>>0)>>>0,e[6][1]=L>>>0,L=e[7][1]+$,e[7][0]=e[7][0]+R+(L/4294967296>>>0)>>>0,e[7][1]=L>>>0,M-=128}}var i=r(0);r(4),r(1);var o=e.exports=i.sha512=i.sha512||{};i.md.sha512=i.md.algorithms.sha512=o;var u=i.sha384=i.sha512.sha384=i.sha512.sha384||{};u.create=function(){return o.create("SHA-384")},i.md.sha384=i.md.algorithms.sha384=u,i.sha512.sha256=i.sha512.sha256||{create:function(){return o.create("SHA-512/256")}},i.md["sha512/256"]=i.md.algorithms["sha512/256"]=i.sha512.sha256,i.sha512.sha224=i.sha512.sha224||{create:function(){return o.create("SHA-512/224")}},i.md["sha512/224"]=i.md.algorithms["sha512/224"]=i.sha512.sha224,o.create=function(e){if(c||n(),void 0===e&&(e="SHA-512"),!(e in l))throw new Error("Invalid SHA-512 algorithm: "+e);for(var t=l[e],r=null,o=i.util.createBuffer(),u=new Array(80),f=0;f<80;++f)u[f]=new Array(2);var d=64;switch(e){case"SHA-384":d=48;break;case"SHA-512/256":d=32;break;case"SHA-512/224":d=28}var h={algorithm:e.replace("-","").toLowerCase(),blockLength:128,digestLength:d,messageLength:0,fullMessageLength:null,messageLengthSize:16};return h.start=function(){h.messageLength=0,h.fullMessageLength=h.messageLength128=[];for(var e=h.messageLengthSize/4,n=0;n>>0,n>>>0];for(var s=h.fullMessageLength.length-1;s>=0;--s)h.fullMessageLength[s]+=n[1],n[1]=n[0]+(h.fullMessageLength[s]/4294967296>>>0),h.fullMessageLength[s]=h.fullMessageLength[s]>>>0,n[0]=n[1]/4294967296>>>0;return o.putBytes(e),a(r,u,o),(o.read>2048||0===o.length())&&o.compact(),h},h.digest=function(){var t=i.util.createBuffer();t.putBytes(o.bytes());var n=h.fullMessageLength[h.fullMessageLength.length-1]+h.messageLengthSize,c=n&h.blockLength-1;t.putBytes(s.substr(0,h.blockLength-c));for(var f,l,d=8*h.fullMessageLength[0],p=0;p>>0,d+=l,t.putInt32(d>>>0),d=f>>>0;t.putInt32(d);for(var g=new Array(r.length),p=0;p>1,u=o+(1&e.length),s=e.substr(0,u),c=e.substr(o,u),f=n.util.createBuffer(),l=n.hmac.create();r=t+r;var d=Math.ceil(a/16),h=Math.ceil(a/20);l.start("MD5",s);var p=n.util.createBuffer();f.putBytes(r);for(var g=0;g0&&(f.queue(e,f.createAlert(e,{level:f.Alert.Level.warning,description:f.Alert.Description.no_renegotiation})),f.flush(e)),e.process()},f.parseHelloMessage=function(e,t,r){var a=null,i=e.entity===f.ConnectionEnd.client;if(r<38)e.error(e,{message:i?"Invalid ServerHello message. Message too short.":"Invalid ClientHello message. Message too short.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.illegal_parameter}});else{var o=t.fragment,u=o.length();if(a={version:{major:o.getByte(),minor:o.getByte()},random:n.util.createBuffer(o.getBytes(32)),session_id:s(o,1),extensions:[]},i?(a.cipher_suite=o.getBytes(2),a.compression_method=o.getByte()):(a.cipher_suites=s(o,2),a.compression_methods=s(o,1)),(u=r-(u-o.length()))>0){for(var c=s(o,2);c.length()>0;)a.extensions.push({type:[c.getByte(),c.getByte()],data:s(c,2)});if(!i)for(var l=0;l0;){var p=h.getByte();if(0!==p)break;e.session.extensions.server_name.serverNameList.push(s(h,2).getBytes())}}}if(e.session.version&&(a.version.major!==e.session.version.major||a.version.minor!==e.session.version.minor))return e.error(e,{message:"TLS version change is disallowed during renegotiation.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.protocol_version}});if(i)e.session.cipherSuite=f.getCipherSuite(a.cipher_suite);else for(var g=n.util.createBuffer(a.cipher_suites.bytes());g.length()>0&&(e.session.cipherSuite=f.getCipherSuite(g.getBytes(2)),null===e.session.cipherSuite););if(null===e.session.cipherSuite)return e.error(e,{message:"No cipher suites in common.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.handshake_failure},cipherSuite:n.util.bytesToHex(a.cipher_suite)});e.session.compressionMethod=i?a.compression_method:f.CompressionMethod.none}return a},f.createSecurityParameters=function(e,t){var r=e.entity===f.ConnectionEnd.client,n=t.random.bytes(),a=r?e.session.sp.client_random:n,i=r?n:f.createRandom().getBytes();e.session.sp={entity:e.entity,prf_algorithm:f.PRFAlgorithm.tls_prf_sha256,bulk_cipher_algorithm:null,cipher_type:null,enc_key_length:null,block_length:null,fixed_iv_length:null,record_iv_length:null,mac_algorithm:null,mac_length:null,mac_key_length:null,compression_algorithm:e.session.compressionMethod,pre_master_secret:null,master_secret:null,client_random:a,server_random:i}},f.handleServerHello=function(e,t,r){var n=f.parseHelloMessage(e,t,r);if(!e.fail){if(!(n.version.minor<=e.version.minor))return e.error(e,{message:"Incompatible TLS version.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.protocol_version}});e.version.minor=n.version.minor,e.session.version=e.version;var a=n.session_id.bytes();a.length>0&&a===e.session.id?(e.expect=g,e.session.resuming=!0,e.session.sp.server_random=n.random.bytes()):(e.expect=l,e.session.resuming=!1,f.createSecurityParameters(e,n)),e.session.id=a,e.process()}},f.handleClientHello=function(e,t,r){var a=f.parseHelloMessage(e,t,r);if(!e.fail){var i=a.session_id.bytes(),o=null;if(e.sessionCache&&(o=e.sessionCache.getSession(i),null===o?i="":(o.version.major!==a.version.major||o.version.minor>a.version.minor)&&(o=null,i="")),0===i.length&&(i=n.random.getBytes(32)),e.session.id=i,e.session.clientHelloVersion=a.version,e.session.sp={},o)e.version=e.session.version=o.version,e.session.sp=o.sp;else{for(var u,s=1;s0;)a=s(u.certificate_list,3),i=n.asn1.fromDer(a),a=n.pki.certificateFromAsn1(i,!0),c.push(a)}catch(t){return e.error(e,{message:"Could not parse certificate list.",cause:t,send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.bad_certificate}})}var l=e.entity===f.ConnectionEnd.client;!l&&!0!==e.verifyClient||0!==c.length?0===c.length?e.expect=l?d:C:(l?e.session.serverCertificate=c[0]:e.session.clientCertificate=c[0],f.verifyCertificateChain(e,c)&&(e.expect=l?d:C)):e.error(e,{message:l?"No server certificate provided.":"No client certificate provided.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.illegal_parameter}}),e.process()},f.handleServerKeyExchange=function(e,t,r){if(r>0)return e.error(e,{message:"Invalid key parameters. Only RSA is supported.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.unsupported_certificate}});e.expect=h,e.process()},f.handleClientKeyExchange=function(e,t,r){if(r<48)return e.error(e,{message:"Invalid key parameters. Only RSA is supported.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.unsupported_certificate}});var a=t.fragment,i={enc_pre_master_secret:s(a,2).getBytes()},o=null;if(e.getPrivateKey)try{o=e.getPrivateKey(e,e.session.serverCertificate),o=n.pki.privateKeyFromPem(o)}catch(t){e.error(e,{message:"Could not get private key.",cause:t,send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.internal_error}})}if(null===o)return e.error(e,{message:"No private key set.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.internal_error}});try{var u=e.session.sp;u.pre_master_secret=o.decrypt(i.enc_pre_master_secret);var c=e.session.clientHelloVersion;if(c.major!==u.pre_master_secret.charCodeAt(0)||c.minor!==u.pre_master_secret.charCodeAt(1))throw new Error("TLS version rollback attack detected.")}catch(e){u.pre_master_secret=n.random.getBytes(48)}e.expect=E,null!==e.session.clientCertificate&&(e.expect=S),e.process()},f.handleCertificateRequest=function(e,t,r){if(r<3)return e.error(e,{message:"Invalid CertificateRequest. Message too short.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.illegal_parameter}});var n=t.fragment,a={certificate_types:s(n,1),certificate_authorities:s(n,2)};e.session.certificateRequest=a,e.expect=p,e.process()},f.handleCertificateVerify=function(e,t,r){if(r<2)return e.error(e,{message:"Invalid CertificateVerify. Message too short.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.illegal_parameter}});var a=t.fragment;a.read-=4;var i=a.bytes();a.read+=4;var o={signature:s(a,2).getBytes()},u=n.util.createBuffer();u.putBuffer(e.session.md5.digest()),u.putBuffer(e.session.sha1.digest()),u=u.getBytes();try{if(!e.session.clientCertificate.publicKey.verify(u,o.signature,"NONE"))throw new Error("CertificateVerify signature does not match.");e.session.md5.update(i),e.session.sha1.update(i)}catch(t){return e.error(e,{message:"Bad signature in CertificateVerify.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.handshake_failure}})}e.expect=E,e.process()},f.handleServerHelloDone=function(e,t,r){if(r>0)return e.error(e,{message:"Invalid ServerHelloDone message. Invalid length.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.record_overflow}});if(null===e.serverCertificate){var a={message:"No server certificate provided. Not enough security.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.insufficient_security}},i=e.verify(e,a.alert.description,0,[]);if(!0!==i)return(i||0===i)&&("object"!=typeof i||n.util.isArray(i)?"number"==typeof i&&(a.alert.description=i):(i.message&&(a.message=i.message),i.alert&&(a.alert.description=i.alert))),e.error(e,a)}null!==e.session.certificateRequest&&(t=f.createRecord(e,{type:f.ContentType.handshake,data:f.createCertificate(e)}),f.queue(e,t)),t=f.createRecord(e,{type:f.ContentType.handshake,data:f.createClientKeyExchange(e)}),f.queue(e,t),e.expect=m;var o=function(e,t){null!==e.session.certificateRequest&&null!==e.session.clientCertificate&&f.queue(e,f.createRecord(e,{type:f.ContentType.handshake,data:f.createCertificateVerify(e,t)})),f.queue(e,f.createRecord(e,{type:f.ContentType.change_cipher_spec,data:f.createChangeCipherSpec()})),e.state.pending=f.createConnectionState(e),e.state.current.write=e.state.pending.write,f.queue(e,f.createRecord(e,{type:f.ContentType.handshake,data:f.createFinished(e)})),e.expect=g,f.flush(e),e.process()};if(null===e.session.certificateRequest||null===e.session.clientCertificate)return o(e,null);f.getClientSignature(e,o)},f.handleChangeCipherSpec=function(e,t){if(1!==t.fragment.getByte())return e.error(e,{message:"Invalid ChangeCipherSpec message received.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.illegal_parameter}});var r=e.entity===f.ConnectionEnd.client;(e.session.resuming&&r||!e.session.resuming&&!r)&&(e.state.pending=f.createConnectionState(e)),e.state.current.read=e.state.pending.read,(!e.session.resuming&&r||e.session.resuming&&!r)&&(e.state.pending=null),e.expect=r?v:T,e.process()},f.handleFinished=function(e,t,r){var i=t.fragment;i.read-=4;var o=i.bytes();i.read+=4;var u=t.fragment.getBytes();i=n.util.createBuffer(),i.putBuffer(e.session.md5.digest()),i.putBuffer(e.session.sha1.digest());var s=e.entity===f.ConnectionEnd.client,c=s?"server finished":"client finished",l=e.session.sp;if(i=a(l.master_secret,c,i.getBytes(),12),i.getBytes()!==u)return e.error(e,{message:"Invalid verify_data in Finished message.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.decrypt_error}});e.session.md5.update(o),e.session.sha1.update(o),(e.session.resuming&&s||!e.session.resuming&&!s)&&(f.queue(e,f.createRecord(e,{type:f.ContentType.change_cipher_spec,data:f.createChangeCipherSpec()})),e.state.current.write=e.state.pending.write,e.state.pending=null,f.queue(e,f.createRecord(e,{type:f.ContentType.handshake,data:f.createFinished(e)}))),e.expect=s?y:w,e.handshaking=!1,++e.handshakes,e.peerCertificate=s?e.session.serverCertificate:e.session.clientCertificate,f.flush(e),e.isConnected=!0,e.connected(e),e.process()},f.handleAlert=function(e,t){var r,n=t.fragment,a={level:n.getByte(),description:n.getByte()};switch(a.description){case f.Alert.Description.close_notify:r="Connection closed.";break;case f.Alert.Description.unexpected_message:r="Unexpected message.";break;case f.Alert.Description.bad_record_mac:r="Bad record MAC.";break;case f.Alert.Description.decryption_failed:r="Decryption failed.";break;case f.Alert.Description.record_overflow:r="Record overflow.";break;case f.Alert.Description.decompression_failure:r="Decompression failed.";break;case f.Alert.Description.handshake_failure:r="Handshake failure.";break;case f.Alert.Description.bad_certificate:r="Bad certificate.";break;case f.Alert.Description.unsupported_certificate:r="Unsupported certificate.";break;case f.Alert.Description.certificate_revoked:r="Certificate revoked.";break;case f.Alert.Description.certificate_expired:r="Certificate expired.";break;case f.Alert.Description.certificate_unknown:r="Certificate unknown.";break;case f.Alert.Description.illegal_parameter:r="Illegal parameter.";break;case f.Alert.Description.unknown_ca:r="Unknown certificate authority.";break;case f.Alert.Description.access_denied:r="Access denied.";break;case f.Alert.Description.decode_error:r="Decode error.";break;case f.Alert.Description.decrypt_error:r="Decrypt error.";break;case f.Alert.Description.export_restriction:r="Export restriction.";break;case f.Alert.Description.protocol_version:r="Unsupported protocol version.";break;case f.Alert.Description.insufficient_security:r="Insufficient security.";break;case f.Alert.Description.internal_error:r="Internal error.";break;case f.Alert.Description.user_canceled:r="User canceled.";break;case f.Alert.Description.no_renegotiation:r="Renegotiation not supported.";break;default:r="Unknown error."}if(a.description===f.Alert.Description.close_notify)return e.close();e.error(e,{message:r,send:!1,origin:e.entity===f.ConnectionEnd.client?"server":"client",alert:a}),e.process()},f.handleHandshake=function(e,t){var r=t.fragment,a=r.getByte(),i=r.getInt24();if(i>r.length())return e.fragmented=t,t.fragment=n.util.createBuffer(),r.read-=4,e.process();e.fragmented=null,r.read-=4;var o=r.bytes(i+4);r.read+=4,a in M[e.entity][e.expect]?(e.entity!==f.ConnectionEnd.server||e.open||e.fail||(e.handshaking=!0,e.session={version:null,extensions:{server_name:{serverNameList:[]}},cipherSuite:null,compressionMethod:null,serverCertificate:null,clientCertificate:null,md5:n.md.md5.create(),sha1:n.md.sha1.create()}),a!==f.HandshakeType.hello_request&&a!==f.HandshakeType.certificate_verify&&a!==f.HandshakeType.finished&&(e.session.md5.update(o),e.session.sha1.update(o)),M[e.entity][e.expect][a](e,t,i)):f.handleUnexpected(e,t)},f.handleApplicationData=function(e,t){e.data.putBuffer(t.fragment),e.dataReady(e),e.process()},f.handleHeartbeat=function(e,t){var r=t.fragment,a=r.getByte(),i=r.getInt16(),o=r.getBytes(i);if(a===f.HeartbeatMessageType.heartbeat_request){if(e.handshaking||i>o.length)return e.process();f.queue(e,f.createRecord(e,{type:f.ContentType.heartbeat,data:f.createHeartbeat(f.HeartbeatMessageType.heartbeat_response,o)})),f.flush(e)}else if(a===f.HeartbeatMessageType.heartbeat_response){if(o!==e.expectedHeartbeatPayload)return e.process();e.heartbeatReceived&&e.heartbeatReceived(e,n.util.createBuffer(o))}e.process()};var l=1,d=2,h=3,p=4,g=5,v=6,y=7,m=8,b=1,C=2,S=3,E=4,T=5,w=6,I=f.handleUnexpected,A=f.handleChangeCipherSpec,B=f.handleAlert,k=f.handleHandshake,N=f.handleApplicationData,R=f.handleHeartbeat,$=[];$[f.ConnectionEnd.client]=[[I,B,k,I,R],[I,B,k,I,R],[I,B,k,I,R],[I,B,k,I,R],[I,B,k,I,R],[A,B,I,I,R],[I,B,k,I,R],[I,B,k,N,R],[I,B,k,I,R]],$[f.ConnectionEnd.server]=[[I,B,k,I,R],[I,B,k,I,R],[I,B,k,I,R],[I,B,k,I,R],[A,B,I,I,R],[I,B,k,I,R],[I,B,k,N,R],[I,B,k,I,R]];var x=f.handleHelloRequest,_=f.handleServerHello,L=f.handleCertificate,P=f.handleServerKeyExchange,D=f.handleCertificateRequest,U=f.handleServerHelloDone,O=f.handleFinished,M=[];M[f.ConnectionEnd.client]=[[I,I,_,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I],[x,I,I,I,I,I,I,I,I,I,I,L,P,D,U,I,I,I,I,I,I],[x,I,I,I,I,I,I,I,I,I,I,I,P,D,U,I,I,I,I,I,I],[x,I,I,I,I,I,I,I,I,I,I,I,I,D,U,I,I,I,I,I,I],[x,I,I,I,I,I,I,I,I,I,I,I,I,I,U,I,I,I,I,I,I],[x,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I],[x,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,O],[x,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I],[x,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I]];var F=f.handleClientHello,V=f.handleClientKeyExchange,K=f.handleCertificateVerify;M[f.ConnectionEnd.server]=[[I,F,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I],[I,I,I,I,I,I,I,I,I,I,I,L,I,I,I,I,I,I,I,I,I],[I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,V,I,I,I,I],[I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,K,I,I,I,I,I],[I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I],[I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,O],[I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I],[I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I]],f.generateKeys=function(e,t){var r=a,n=t.client_random+t.server_random;e.session.resuming||(t.master_secret=r(t.pre_master_secret,"master secret",n,48).bytes(),t.pre_master_secret=null),n=t.server_random+t.client_random;var i=2*t.mac_key_length+2*t.enc_key_length,o=e.version.major===f.Versions.TLS_1_0.major&&e.version.minor===f.Versions.TLS_1_0.minor;o&&(i+=2*t.fixed_iv_length);var u=r(t.master_secret,"key expansion",n,i),s={client_write_MAC_key:u.getBytes(t.mac_key_length),server_write_MAC_key:u.getBytes(t.mac_key_length),client_write_key:u.getBytes(t.enc_key_length),server_write_key:u.getBytes(t.enc_key_length)};return o&&(s.client_write_IV=u.getBytes(t.fixed_iv_length),s.server_write_IV=u.getBytes(t.fixed_iv_length)),s},f.createConnectionState=function(e){var t=e.entity===f.ConnectionEnd.client,r=function(){var e={sequenceNumber:[0,0],macKey:null,macLength:0,macFunction:null,cipherState:null,cipherFunction:function(e){return!0},compressionState:null,compressFunction:function(e){return!0},updateSequenceNumber:function(){4294967295===e.sequenceNumber[1]?(e.sequenceNumber[1]=0,++e.sequenceNumber[0]):++e.sequenceNumber[1]}};return e},n={read:r(),write:r()};if(n.read.update=function(e,t){return n.read.cipherFunction(t,n.read)?n.read.compressFunction(e,t,n.read)||e.error(e,{message:"Could not decompress record.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.decompression_failure}}):e.error(e,{message:"Could not decrypt record or bad MAC.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.bad_record_mac}}),!e.fail},n.write.update=function(e,t){return n.write.compressFunction(e,t,n.write)?n.write.cipherFunction(t,n.write)||e.error(e,{message:"Could not encrypt record.",send:!1,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.internal_error}}):e.error(e,{message:"Could not compress record.",send:!1,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.internal_error}}),!e.fail},e.session){var a=e.session.sp;switch(e.session.cipherSuite.initSecurityParameters(a),a.keys=f.generateKeys(e,a),n.read.macKey=t?a.keys.server_write_MAC_key:a.keys.client_write_MAC_key,n.write.macKey=t?a.keys.client_write_MAC_key:a.keys.server_write_MAC_key,e.session.cipherSuite.initConnectionState(n,e,a),a.compression_algorithm){case f.CompressionMethod.none:break;case f.CompressionMethod.deflate:n.read.compressFunction=u,n.write.compressFunction=o;break;default:throw new Error("Unsupported compression algorithm.")}}return n},f.createRandom=function(){var e=new Date,t=+e+6e4*e.getTimezoneOffset(),r=n.util.createBuffer();return r.putInt32(t),r.putBytes(n.random.getBytes(28)),r},f.createRecord=function(e,t){return t.data?{type:t.type,version:{major:e.version.major,minor:e.version.minor},length:t.data.length(),fragment:t.data}:null},f.createAlert=function(e,t){var r=n.util.createBuffer();return r.putByte(t.level),r.putByte(t.description),f.createRecord(e,{type:f.ContentType.alert,data:r})},f.createClientHello=function(e){e.session.clientHelloVersion={major:e.version.major,minor:e.version.minor};for(var t=n.util.createBuffer(),r=0;r0&&(p+=2);var g=e.session.id,v=g.length+1+2+4+28+2+i+1+u+p,y=n.util.createBuffer();return y.putByte(f.HandshakeType.client_hello),y.putInt24(v),y.putByte(e.version.major),y.putByte(e.version.minor),y.putBytes(e.session.sp.client_random),c(y,1,n.util.createBuffer(g)),c(y,2,t),c(y,1,o),p>0&&c(y,2,s),y},f.createServerHello=function(e){var t=e.session.id,r=t.length+1+2+4+28+2+1,a=n.util.createBuffer();return a.putByte(f.HandshakeType.server_hello),a.putInt24(r),a.putByte(e.version.major),a.putByte(e.version.minor),a.putBytes(e.session.sp.server_random),c(a,1,n.util.createBuffer(t)),a.putByte(e.session.cipherSuite.id[0]),a.putByte(e.session.cipherSuite.id[1]),a.putByte(e.session.compressionMethod),a},f.createCertificate=function(e){var t=e.entity===f.ConnectionEnd.client,r=null;if(e.getCertificate){var a;a=t?e.session.certificateRequest:e.session.extensions.server_name.serverNameList,r=e.getCertificate(e,a)}var i=n.util.createBuffer();if(null!==r)try{n.util.isArray(r)||(r=[r]);for(var o=null,u=0;uf.MaxFragment;)a.push(f.createRecord(e,{type:t.type,data:n.util.createBuffer(i.slice(0,f.MaxFragment))})),i=i.slice(f.MaxFragment);i.length>0&&a.push(f.createRecord(e,{type:t.type,data:n.util.createBuffer(i)}))}for(var o=0;o0&&(a=r.order[0]),null!==a&&a in r.cache){t=r.cache[a],delete r.cache[a];for(var i in r.order)if(r.order[i]===a){r.order.splice(i,1);break}}return t},r.setSession=function(e,t){if(r.order.length===r.capacity){var a=r.order.shift();delete r.cache[a]}var a=n.util.bytesToHex(e);r.order.push(a),r.cache[a]=t}}return r},f.createConnection=function(e){var t=null;t=e.caStore?n.util.isArray(e.caStore)?n.pki.createCaStore(e.caStore):e.caStore:n.pki.createCaStore();var r=e.cipherSuites||null;if(null===r){r=[];for(var a in f.CipherSuites)r.push(f.CipherSuites[a])}var i=e.server?f.ConnectionEnd.server:f.ConnectionEnd.client,o=e.sessionCache?f.createSessionCache(e.sessionCache):null,u={version:{major:f.Version.major,minor:f.Version.minor},entity:i,sessionId:e.sessionId,caStore:t,sessionCache:o,cipherSuites:r,connected:e.connected,virtualHost:e.virtualHost||null,verifyClient:e.verifyClient||!1,verify:e.verify||function(e,t,r,n){return t},verifyOptions:e.verifyOptions||{},getCertificate:e.getCertificate||null,getPrivateKey:e.getPrivateKey||null,getSignature:e.getSignature||null,input:n.util.createBuffer(),tlsData:n.util.createBuffer(),data:n.util.createBuffer(),tlsDataReady:e.tlsDataReady,dataReady:e.dataReady,heartbeatReceived:e.heartbeatReceived,closed:e.closed,error:function(t,r){r.origin=r.origin||(t.entity===f.ConnectionEnd.client?"client":"server"),r.send&&(f.queue(t,f.createAlert(t,r.alert)),f.flush(t));var n=!1!==r.fatal;n&&(t.fail=!0),e.error(t,r),n&&t.close(!1)},deflate:e.deflate||null,inflate:e.inflate||null};u.reset=function(e){u.version={major:f.Version.major,minor:f.Version.minor},u.record=null,u.session=null,u.peerCertificate=null,u.state={pending:null,current:null},u.expect=(u.entity,f.ConnectionEnd.client,0),u.fragmented=null,u.records=[],u.open=!1,u.handshakes=0,u.handshaking=!1,u.isConnected=!1,u.fail=!(e||void 0===e),u.input.clear(),u.tlsData.clear(),u.data.clear(),u.state.current=f.createConnectionState(u)},u.reset();var s=function(e,t){var r=t.type-f.ContentType.change_cipher_spec,n=$[e.entity][e.expect];r in n?n[r](e,t):f.handleUnexpected(e,t)},c=function(e){var t=0,r=e.input,a=r.length();if(a<5)t=5-a;else{e.record={type:r.getByte(),version:{major:r.getByte(),minor:r.getByte()},length:r.getInt16(),fragment:n.util.createBuffer(),ready:!1};var i=e.record.version.major===e.version.major;i&&e.session&&e.session.version&&(i=e.record.version.minor===e.version.minor),i||e.error(e,{message:"Incompatible TLS version.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.protocol_version}})}return t},l=function(e){var t=0,r=e.input,n=r.length();if(n0&&(u.sessionCache&&(t=u.sessionCache.getSession(e)),null===t&&(e="")),0===e.length&&u.sessionCache&&null!==(t=u.sessionCache.getSession())&&(e=t.id),u.session={id:e,version:null,cipherSuite:null,compressionMethod:null,serverCertificate:null,certificateRequest:null,clientCertificate:null,sp:{},md5:n.md.md5.create(),sha1:n.md.sha1.create()},t&&(u.version=t.version,u.session.sp=t.sp),u.session.sp.client_random=f.createRandom().getBytes(),u.open=!0,f.queue(u,f.createRecord(u,{type:f.ContentType.handshake,data:f.createClientHello(u)})),f.flush(u)}},u.process=function(e){var t=0;return e&&u.input.putBytes(e),u.fail||(null!==u.record&&u.record.ready&&u.record.fragment.isEmpty()&&(u.record=null),null===u.record&&(t=c(u)),u.fail||null===u.record||u.record.ready||(t=l(u)),!u.fail&&null!==u.record&&u.record.ready&&s(u,u.record)),t},u.prepare=function(e){return f.queue(u,f.createRecord(u,{type:f.ContentType.application_data,data:n.util.createBuffer(e)})),f.flush(u)},u.prepareHeartbeatRequest=function(e,t){return e instanceof n.util.ByteBuffer&&(e=e.bytes()),void 0===t&&(t=e.length),u.expectedHeartbeatPayload=e,f.queue(u,f.createRecord(u,{type:f.ContentType.heartbeat,data:f.createHeartbeat(f.HeartbeatMessageType.heartbeat_request,e,t)})),f.flush(u)},u.close=function(e){if(!u.fail&&u.sessionCache&&u.session){var t={id:u.session.id,version:u.session.version,sp:u.session.sp};t.sp.keys=null,u.sessionCache.setSession(t.id,t)}u.open&&(u.open=!1,u.input.clear(),(u.isConnected||u.handshaking)&&(u.isConnected=u.handshaking=!1,f.queue(u,f.createAlert(u,{level:f.Alert.Level.warning,description:f.Alert.Description.close_notify})),f.flush(u)),u.closed(u)),u.reset(e)},u},e.exports=n.tls=n.tls||{};for(var q in f)"function"!=typeof f[q]&&(n.tls[q]=f[q]);n.tls.prf_tls1=a,n.tls.hmac_sha1=i,n.tls.createSessionCache=f.createSessionCache,n.tls.createConnection=f.createConnection},function(e,t,r){"use strict";var n=function(){var e={};return e.isAvailable=function(){return"function"==typeof Notification},e.requestPermission=function(e){var t=Notification.permission;"default"!=t?e(t):Notification.requestPermission(e)},e.notify=function(t,r,n){e.isAvailable()&&e.requestPermission(function(e){if("granted"==e){var a={};r&&(a.body=r),n&&(a.icon=n);var i=new Notification(t,a);setTimeout(function(){i.close.bind(i)()},4e3)}})},e}();e.exports=n},function(e,t,r){"use strict";var n=function(){var e,t,r,n={};n.startWatching=function(e,n){t=e,r=n,setInterval(a,100)};var a=function(){r.version.getNetwork(function(r,n){r?console.log("error with web3.version.getNetwork: ",r):n!=e&&(t.send(parseInt(n)),e=n)})};return n}();e.exports=n},function(e,t,r){"use strict";function n(e,t){for(;e.length");if("boolean"==typeof t)return T(e,t?"True":"False");if("number"==typeof t)return w(e,t+"");if(t instanceof String)return A(e,"'"+E(t,!0)+"'");if("string"==typeof t)return I(e,'"'+E(t,!1)+'"');if("object"==typeof t&&"$"in t){var r=t.$;if("number"==typeof r)return k(e,"");if("#"===r[0]){var n=[];for(var a in t)"$"!==a&&n.push(S(e,t[a]));return"("+n.join(",")+")"}if("Set_elm_builtin"===r)return T(e,"Set")+B(e,".fromList")+" "+S(e,ka(t));if("RBNode_elm_builtin"===r||"RBEmpty_elm_builtin"===r)return T(e,"Dict")+B(e,".fromList")+" "+S(e,Aa(t));if("Array_elm_builtin"===r)return T(e,"Array")+B(e,".fromList")+" "+S(e,Ta(t));if("::"===r||"[]"===r){var n="[";for(t.b&&(n+=S(e,t.a),t=t.b);t.b;t=t.b)n+=","+S(e,t.a);return n+"]"}var n="";for(var i in t)if("$"!==i){var o=S(e,t[i]),u=o[0],s="{"===u||"("===u||"["===u||"<"===u||'"'===u||o.indexOf(" ")<0;n+=" "+(s?o:"("+o+")")}return T(e,r)+n}if("function"==typeof DataView&&t instanceof DataView)return I(e,"<"+t.byteLength+" bytes>");if("function"==typeof File&&t instanceof File)return k(e,"<"+t.name+">");if("object"==typeof t){var n=[];for(var c in t){var f="_"===c[0]?c.slice(1):c;n.push(B(e,f)+" = "+S(e,t[c]))}return 0===n.length?"{}":"{ "+n.join(", ")+" }"}return k(e,"")}function E(e,t){var r=e.replace(/\\/g,"\\\\").replace(/\n/g,"\\n").replace(/\t/g,"\\t").replace(/\r/g,"\\r").replace(/\v/g,"\\v").replace(/\0/g,"\\0");return t?r.replace(/\'/g,"\\'"):r.replace(/\"/g,'\\"')}function T(e,t){return e?""+t+"":t}function w(e,t){return e?""+t+"":t}function I(e,t){return e?""+t+"":t}function A(e,t){return e?""+t+"":t}function B(e,t){return e?""+t+"":t}function k(e,t){return e?""+t+"":t}function N(e,t,r,n,a){switch(e){case 0:throw new Error('What node should I take over? In JavaScript I need something like:\n\n Elm.Main.init({\n node: document.getElementById("elm-node")\n })\n\nYou need to do this with any Browser.sandbox or Browser.element program.');case 1:throw new Error("Browser.application programs cannot handle URLs like this:\n\n "+document.location.href+"\n\nWhat is the root? The root of your file system? Try looking at this program with `elm reactor` or some other server.");case 2:var i=t;throw new Error("Problem with the flags given to your Elm program on initialization.\n\n"+i);case 3:var o=t;throw new Error("There can only be one port named `"+o+"`, but your program has multiple.");case 4:var o=t,u=r;throw new Error("Trying to send an unexpected type of value through port `"+o+"`:\n"+u);case 5:throw new Error('Trying to use `(==)` on functions.\nThere is no way to know if functions are "the same" in the Elm sense.\nRead more about this at https://package.elm-lang.org/packages/elm/core/latest/Basics#== which describes why it is this way and what the better version will look like.');case 6:var s=t;throw new Error("Your page is loading multiple Elm scripts with a module named "+s+". Maybe a duplicate script is getting loaded accidentally? If not, rename one of them so I know which is which!");case 8:var s=t,c=r,f=n;throw new Error("TODO in module `"+s+"` "+R(c)+"\n\n"+f);case 9:var s=t,c=r,l=n,f=a;throw new Error("TODO in module `"+s+"` from the `case` expression "+R(c)+"\n\nIt received the following value:\n\n "+C(l).replace("\n","\n ")+"\n\nBut the branch that handles it says:\n\n "+f.replace("\n","\n "));case 10:throw new Error("Bug in https://github.com/elm/virtual-dom/issues");case 11:throw new Error("Cannot perform mod 0. Division by zero error.")}}function R(e){return e.start.line===e.end.line?"on line "+e.start.line:"on lines "+e.start.line+" through "+e.end.line}function $(e,t){for(var r,n=[],a=x(e,t,0,n);a&&(r=n.pop());a=x(r.a,r.b,0,n));return a}function x(e,t,r,n){if(r>100)return n.push(L(e,t)),!0;if(e===t)return!0;if("object"!=typeof e||null===e||null===t)return"function"==typeof e&&N(5),!1;"Set_elm_builtin"===e.$&&(e=ka(e),t=ka(t)),"RBNode_elm_builtin"!==e.$&&"RBEmpty_elm_builtin"!==e.$||(e=Aa(e),t=Aa(t));for(var a in e)if(!x(e[a],t[a],r+1,n))return!1;return!0}function _(e,t,r){if("object"!=typeof e)return e===t?0:e=t.length)return ge("a LONGER array. Need index "+a+" but only see "+t.length+" entries",t);var n=le(e.b,t[a]);return Ma(n)?n:li(f(gi,a,n.a));case 8:if("object"!=typeof t||null===t||he(t))return ge("an OBJECT",t);var i=mr;for(var o in t)if(t.hasOwnProperty(o)){var n=le(e.b,t[o]);if(!Ma(n))return li(f(pi,o,n.a));i=M(L(o,n.a),i)}return di(xa(i));case 9:for(var u=e.f,s=e.g,c=0;c=0&&a.splice(t,1)}var a=[],i=gn[e].r,o=_e(0);return gn[e].b=o,gn[e].c=n(function(e,t,r){for(;t.b;t=t.b)for(var n=a,u=be(i(t.a)),s=0;s0&&vt(r,1,n,f));case 4:for(var l=e.j,d=t.j,h=!1,p=e.k;4===p.$;)h=!0,"object"!=typeof l?l=[l,p.j]:l.push(p.j),p=p.k;for(var g=t.k;4===g.$;)h=!0,"object"!=typeof d?d=[d,g.j]:d.push(g.j),g=g.k;return h&&l.length!==d.length?void vt(r,0,n,t):((h?mt(l,d):l===d)||vt(r,2,n,d),void yt(p,g,r,n+1));case 0:return void(e.a!==t.a&&vt(r,3,n,t.a));case 1:return void bt(e,t,r,n,St);case 2:return void bt(e,t,r,n,Et);case 3:if(e.h!==t.h)return void vt(r,0,n,t);var v=Ct(e.d,t.d);v&&vt(r,4,n,v);var y=t.i(e.g,t.g);return void(y&&vt(r,5,n,y))}}}function mt(e,t){for(var r=0;ru?vt(r,6,n,{v:u,i:o-u}):o0||o.length>0||k)&&vt(r,8,n,{w:a,x:o,y:k})}function Tt(e,t,r,n,a,i){var o=e[r];if(!o)return o={c:0,z:n,r:a,s:void 0},i.push({r:a,A:o}),void(e[r]=o);if(1===o.c){i.push({r:a,A:o}),o.c=2;var u=[];return yt(o.z,n,u,o.r),o.r=a,void(o.s.s={w:u,A:o})}Tt(e,t,r+Pn,n,a,i)}function wt(e,t,r,n,a){var i=e[r];if(!i){var o=vt(t,9,a,void 0);return void(e[r]={c:1,z:n,r:a,s:o})}if(0===i.c){i.c=2;var u=[];return yt(n,i.z,u,a),void vt(t,9,a,{w:u,A:i})}wt(e,t,r+Pn,n,a)}function It(e,t,r,n){At(e,t,r,0,0,t.b,n)}function At(e,t,r,n,a,i,o){for(var u=r[n],s=u.r;s===a;){var c=u.$;if(1===c)It(e,t.k,u.s,o);else if(8===c){u.t=e,u.u=o;var f=u.s.w;f.length>0&&At(e,t,f,0,a,i,o)}else if(9===c){u.t=e,u.u=o;var l=u.s;if(l){l.A.s=e;var f=l.w;f.length>0&&At(e,t,f,0,a,i,o)}}else u.t=e,u.u=o;if(n++,!(u=r[n])||(s=u.r)>i)return n}var d=t.$;if(4===d){for(var h=t.k;4===h.$;)h=h.k;return At(e,h,r,n,a+1,i,e.elm_event_node_ref)}for(var p=t.e,g=e.childNodes,v=0;vi))return n;a=m}return n}function Bt(e,t,r,n){return 0===r.length?e:(It(e,t,r,n),kt(e,r))}function kt(e,t){for(var r=0;r0){var o=a.substring(0,i),u=a.substring(i+2);t=l(Uh,o,function(e){return ci(Oh(e)?u+", "+e.a:u)},t)}}return t}function Kt(e,t,r){t.upload.addEventListener("progress",function(n){t.c||Be(f(Fh,e,L(r,Gh({sent:n.loaded,size:n.total}))))}),t.addEventListener("progress",function(n){t.c||Be(f(Fh,e,L(r,qh({received:n.loaded,size:n.lengthComputable?ci(n.total):fi}))))})}function Ht(e,t){function r(){n=1===n?0:(aa(r),t(e),1)}t(e);var n=0;return function(a,i){e=a,i?(t(e),2===n&&(n=1)):(0===n&&aa(r),n=2)}}function jt(e){var t=e.onUrlChange,n=e.onUrlRequest,a=function(){a.a(t(qt()))};return na({setup:function(e){return a.a=e,sa.addEventListener("popstate",a),sa.navigator.userAgent.indexOf("Trident")<0||sa.addEventListener("hashchange",a),r(function(t,r){if(!r.ctrlKey&&!r.metaKey&&!r.shiftKey&&r.button<1&&!t.target&&!t.hasAttribute("download")){r.preventDefault();var a=t.href,i=qt(),o=Eg(a).a;e(n(o&&i.protocol===o.protocol&&i.host===o.host&&i.port_.a===o.port_.a?fg(o):cg(a)))}})},init:function(t){return l(e.init,t,qt(),a)},view:e.view,update:e.update,subscriptions:e.subscriptions})}function qt(){return Eg(Sn.location.href).a||N(1)}function Gt(e,t){return Ie(function(r){aa(function(){var n=document.getElementById(e);r(n?Te(t(n)):we(lg(e)))})})}function zt(e){return Ie(function(t){aa(function(){t(Te(e()))})})}function Yt(){return{scene:Wt(),viewport:{x:sa.pageXOffset,y:sa.pageYOffset,width:ua.documentElement.clientWidth,height:ua.documentElement.clientHeight}}}function Wt(){var e=ua.body,t=ua.documentElement;return{width:Math.max(e.scrollWidth,e.offsetWidth,t.scrollWidth,t.offsetWidth,t.clientWidth),height:Math.max(e.scrollHeight,e.offsetHeight,t.scrollHeight,t.offsetHeight,t.clientHeight)}}function Jt(e){return Gt(e,function(e){var t=e.getBoundingClientRect(),r=sa.pageXOffset,n=sa.pageYOffset;return{scene:Wt(),viewport:{x:r,y:n,width:ua.documentElement.clientWidth,height:ua.documentElement.clientHeight},element:{x:r+t.left,y:n+t.top,width:t.width,height:t.height}}})}function Qt(e){return f(hg,dg,Ie(function(t){try{sa.location=e}catch(e){Sn.location.reload(!1)}}))}function Xt(e){try{return ci(decodeURIComponent(e))}catch(e){return fi}}function Zt(){return f(yo,Pa(Vs),f(yo,Es,Fs))}console.warn("Compiled in DEV mode. Follow the advice at https://elm-lang.org/0.19.0/optimize for better performance and smaller assets.");var er,tr,rr=[],nr=n(function(e,t,r){for(var n=new Array(e),a=0;a=0;n--)t=f(e,r[n],t);return t}),fr=(r(function(e,t){for(var r=t.length,n=new Array(r),a=0;ar.length&&(a=r.length);for(var i=n+a,o=new Array(i),u=0;u0}),r(function(e,t){return _(e,t)>=0}),r(function(e,t){var r=_(e,t);return r<0?Ca:r?wa:ba})),vr={$:"#0"},yr=r(O),mr={$:"[]"},br=r(M),Cr=n(function(e,t,r){for(var n=[];t.b&&r.b;t=t.b,r=r.b)n.push(f(e,t.a,r.a));return F(n)}),Sr=(a(function(e,t,r,n){for(var a=[];t.b&&r.b&&n.b;t=t.b,r=r.b,n=n.b)a.push(l(e,t.a,r.a,n.a));return F(a)}),i(function(e,t,r,n,a){for(var i=[];t.b&&r.b&&n.b&&a.b;t=t.b,r=r.b,n=n.b,a=a.b)i.push(d(e,t.a,r.a,n.a,a.a));return F(i)}),o(function(e,t,r,n,a,i){for(var o=[];t.b&&r.b&&n.b&&a.b&&i.b;t=t.b,r=r.b,n=n.b,a=a.b,i=i.b)o.push(h(e,t.a,r.a,n.a,a.a,i.a));return F(o)}),r(function(e,t){return F(V(t).sort(function(t,r){return _(e(t),e(r))}))})),Er=r(function(e,t){return F(V(t).sort(function(t,r){var n=f(e,t,r);return n===ba?0:n===Ca?-1:1}))}),Tr=r(function(e,t){return e+t}),wr=r(function(e,t){return e-t}),Ir=r(function(e,t){return e*t}),Ar=(r(function(e,t){return e/t}),r(function(e,t){return e/t|0}),r(Math.pow)),Br=(r(function(e,t){return t%e}),r(function(e,t){var r=t%e;return 0===e?N(11):r>0&&e<0||r<0&&e>0?r+e:r})),kr=Math.PI,Nr=(Math.E,Math.cos),Rr=Math.sin,$r=(Math.tan,Math.acos,Math.asin,Math.atan,r(Math.atan2),Math.ceil),xr=Math.floor,_r=Math.round,Lr=(Math.sqrt,Math.log),Pr=(isNaN,r(function(e,t){return e&&t}),r(function(e,t){return e||t}),r(function(e,t){return e!==t}),r(function(e,t){return e+t})),Dr=r(function(e,t){return e+t}),Ur=(r(function(e,t){for(var r=t.length,n=new Array(r),a=0;a-1}),jr=r(function(e,t){return 0===t.indexOf(e)}),qr=r(function(e,t){return t.length>=e.length&&t.lastIndexOf(e)===t.length-e.length}),Gr=r(function(e,t){var r=e.length;if(r<1)return mr;for(var n=0,a=[];(n=t.indexOf(e,n))>-1;)a.push(n),n+=r;return F(a)}),zr=oe(function(e){return"number"!=typeof e?ge("an INT",e):-2147483647>e}),r(function(e,t){return t>>>e}),r(function(e,t){return Ie(function(r){r(Te(1===new Uint8Array(new Uint32Array([1]))[0]?e:t))})}),n(function(e,t,r){return e.setInt8(t,r),t+1})),Mn=a(function(e,t,r,n){return e.setInt16(t,r,n),t+2}),Fn=a(function(e,t,r,n){return e.setInt32(t,r,n),t+4}),Vn=n(function(e,t,r){return e.setUint8(t,r),t+1}),Kn=a(function(e,t,r,n){return e.setUint16(t,r,n),t+2}),Hn=a(function(e,t,r,n){return e.setUint32(t,r,n),t+4}),jn=a(function(e,t,r,n){return e.setFloat32(t,r,n),t+4}),qn=a(function(e,t,r,n){return e.setFloat64(t,r,n),t+8}),Gn=n(function(e,t,r){for(var n=0,a=r.byteLength,i=a-4;n<=i;n+=4)e.setUint32(t+n,r.getUint32(n));for(;n>>6&31)<<8|63&a),2):a<55296||56319>>12&15)<<8|a>>>6&63),e.setUint8(t+2,128|63&a),3):(a=1024*(a-55296)+r.charCodeAt(++n)-56320+65536,e.setUint32(t,4034953344|(a>>>18&7)<<24|(a>>>12&63)<<16|(a>>>6&63)<<8|63&a),4)}return t}),Yn=r(function(e,t){try{return ci(f(e,t,0).b)}catch(e){return fi}}),Wn=(r(function(e,t){return L(t+1,e.getInt8(t))}),n(function(e,t,r){return L(r+2,t.getInt16(r,e))}),n(function(e,t,r){return L(r+4,t.getInt32(r,e))}),r(function(e,t){return L(t+1,e.getUint8(t))})),Jn=(n(function(e,t,r){return L(r+2,t.getUint16(r,e))}),n(function(e,t,r){return L(r+4,t.getUint32(r,e))}),n(function(e,t,r){return L(r+4,t.getFloat32(r,e))}),n(function(e,t,r){return L(r+8,t.getFloat64(r,e))}),n(function(e,t,r){return L(r+e,new DataView(t.buffer,t.byteOffset+r,e))})),Qn=(n(function(e,t,r){for(var n="",a=r+e;r0;){var l=n[c];f[--c]=l?ci(l):fi}a.push(d(gd,n[0],n.index,i,F(f))),s=t.lastIndex}return t.lastIndex=u,F(a)}),a(function(e,t,r,n){function a(t){if(i++>=e)return t;for(var n=arguments.length-3,a=new Array(n);n>0;){var o=arguments[n];a[--n]=o?ci(o):fi}return r(d(gd,t,arguments[arguments.length-2],i,F(a)))}var i=0;return n.replace(t,a)}),n(function(e,t,r){for(var n=r,a=[],i=t.lastIndex,o=t.lastIndex;e--;){var u=t.exec(n);if(!u)break;a.push(n.slice(i,u.index)),i=t.lastIndex}return a.push(n.slice(i)),t.lastIndex=o,F(a)}),n(function(e,t,r){return Ie(function(n){function a(e){n(t(r.expect.a(e)))}var i=new XMLHttpRequest;i.addEventListener("error",function(){a(jh)}),i.addEventListener("timeout",function(){a(zh)}),i.addEventListener("load",function(){a(Mt(r.expect.b,i))}),Oh(r.tracker)&&Kt(e,i,r.tracker.a);try{i.open(r.method,r.url,!0)}catch(e){return a(Kh(r.url))}return Ot(i,r),r.body.a&&i.setRequestHeader("Content-Type",r.body.a),i.send(r.body.b),function(){i.c=!0,i.abort()}})})),ta=n(function(e,t,r){return{$:0,d:e,b:t,a:r}}),ra=(r(function(e,t){return{$:0,d:t.d,b:t.b,a:function(r){return e(t.a(r))}}}),r(function(e,t){return{$:0,a:e,b:t}})),na=(r(function(e,t){return new Blob([t],{type:e})}),a(function(e,t,r,n){return Le(t,n,e.init,e.update,e.subscriptions,function(t,r){var a=e.view,i=n&&n.node?n.node:N(0),o=_t(i);return Ht(r,function(e){var r=a(e),n=gt(o,r);i=Bt(i,o,n,t),o=r})})}),a(function(e,t,r,n){return Le(t,n,e.init,e.update,e.subscriptions,function(t,r){var n=e.setup&&e.setup(t),a=e.view,i=Sn.title,o=Sn.body,u=_t(o);return Ht(r,function(e){er=n;var r=a(e),s=Tn("body")(mr)(r.body),c=gt(u,s);o=Bt(o,u,c,t),u=s,er=0,i!==r.title&&(Sn.title=i=r.title)})})})),aa=("undefined"!=typeof cancelAnimationFrame&&cancelAnimationFrame,"undefined"!=typeof requestAnimationFrame?requestAnimationFrame:function(e){return setTimeout(e,1e3/60)}),ia=(r(function(e,t){return f(hg,dg,Ie(function(){t&&history.go(t),e()}))}),r(function(e,t){return f(hg,dg,Ie(function(){history.pushState({},"",t),e()}))})),oa=(r(function(e,t){return f(hg,dg,Ie(function(){history.replaceState({},"",t),e()}))}),{addEventListener:function(){},removeEventListener:function(){}}),ua="undefined"!=typeof document?document:oa,sa="undefined"!=typeof window?window:oa,ca=(n(function(e,t,r){return ke(Ie(function(n){function a(e){Be(r(e))}return e.addEventListener(t,a,tr&&{passive:!0}),function(){e.removeEventListener(t,a)}}))}),r(function(e,t){var r=le(e,t);return Ma(r)?ci(r.a):fi}),r(function(e,t){return Gt(t,function(t){return t[e](),vr})}),r(function(e,t){return zt(function(){return sa.scroll(e,t),vr})})),fa=(n(function(e,t,r){return Gt(e,function(e){return e.scrollLeft=t,e.scrollTop=r,vr})}),r(function(e,t){return Ie(function(r){var n=setInterval(function(){Be(t)},e);return function(){clearInterval(n)}})})),la=n(function(e,t,r){return{$:"BrowserNotification",a:e,b:t,c:r}}),da=function(e){return{$:"GTag",a:e}},ha=function(e){return{$:"GotoRoute",a:e}},pa={$:"RequestBrowserNotificationPermission"},ga=function(e){return{$:"UserNotice",a:e}},va={$:"Web3Connect"},ya=a(function(e,t,r,n){return{align:r,label:n,mainParagraphs:t,noticeType:e}}),ma=r(function(e,t){return t(e)}),ba={$:"EQ"},Ca={$:"LT"},Sa=cr,Ea=n(function(e,t,n){var a=n.c,i=n.d,o=r(function(t,r){if("SubTree"===t.$){var n=t.a;return l(Sa,o,r,n)}var a=t.a;return l(Sa,e,r,a)});return l(Sa,o,l(Sa,e,t,i),a)}),Ta=function(e){return l(Ea,Na,mr,e)},wa={$:"GT"},Ia=n(function(e,t,r){for(;;){if("RBEmpty_elm_builtin"===r.$)return t;var n=r.b,a=r.c,i=r.d,o=r.e,u=e,s=l(e,n,a,l(Ia,e,t,o)),c=i;e=u,t=s,r=c}}),Aa=function(e){return l(Ia,n(function(e,t,r){return f(Na,L(e,t),r)}),mr,e)},Ba=function(e){return l(Ia,n(function(e,t,r){return f(Na,e,r)}),mr,e)},ka=function(e){var t=e.a;return Ba(t)},Na=br,Ra=Tr,$a=n(function(e,t,r){for(;;){if(!r.b)return t;var n=r.a,a=r.b,i=e,o=f(e,n,t),u=a;e=i,t=o,r=u}}),xa=function(e){return l($a,Na,mr,e)},_a=a(function(e,t,r,n){if(n.b){var a=n.a,i=n.b;if(i.b){var o=i.a,u=i.b;if(u.b){var s=u.a,c=u.b;if(c.b){var h=c.a,p=c.b;return f(e,a,f(e,o,f(e,s,f(e,h,r>500?l($a,e,t,xa(p)):d(_a,e,t,r+1,p)))))}return f(e,a,f(e,o,f(e,s,t)))}return f(e,a,f(e,o,t))}return f(e,a,t)}return t}),La=n(function(e,t,r){return d(_a,e,t,0,r)}),Pa=r(function(e,t){return l(La,r(function(t,r){return f(Na,e(t),r)}),mr,t)}),Da=r(function(e,t){return e(t)}),Ua=n(function(e,t,r){return e(t(r))}),Oa=function(e){return e},Ma=function(e){return"Ok"===e.$},Fa=a(function(e,t,r,n){return{$:"Array_elm_builtin",a:e,b:t,c:r,d:n}}),Va=$r,Ka=r(function(e,t){return Lr(t)/Lr(e)}),Ha=K,ja=Va(f(Ka,2,32)),qa=rr,Ga=d(Fa,0,ja,qa,qa),za=function(e){return{$:"Leaf",a:e}},Ya=function(e){return{$:"SubTree",a:e}},Wa=ar,Ja=r(function(e,t){for(;;){var r=f(Wa,32,e),n=r.a,a=r.b,i=f(Na,Ya(n),t);if(!a.b)return xa(i);var o=a,u=i;e=o,t=u}}),Qa=hr,Xa=function(e){return e.a},Za=r(function(e,t){for(;;){var r=Va(t/32);if(1===r)return f(Wa,32,e).a;var n=f(Ja,e,mr),a=r;e=n,t=a}}),ei=xr,ti=r(function(e,t){return _(e,t)>0?e:t}),ri=Ir,ni=wr,ai=m,ii=r(function(e,t){if(t.nodeListSize){var r=32*t.nodeListSize,n=ei(f(Ka,32,r-1)),a=e?xa(t.nodeList):t.nodeList,i=f(Za,a,t.nodeListSize);return d(Fa,ai(t.tail)+r,f(ti,5,n*ja),i,t.tail)}return d(Fa,ai(t.tail),ja,qa,t.tail)}),oi=nr,ui=i(function(e,t,r,n,a){for(;;){if(t<0)return f(ii,!1,{nodeList:n,nodeListSize:r/32|0,tail:a});var i=za(l(oi,32,t,e)),o=e,u=t-32,s=r,c=f(Na,i,n),d=a;e=o,t=u,r=s,n=c,a=d}}),si=r(function(e,t){if(e<=0)return Ga;var r=e%32,n=l(oi,r,e-r,t);return h(ui,t,e-r-32,e,mr,n)}),ci=function(e){return{$:"Just",a:e}},fi={$:"Nothing"},li=function(e){return{$:"Err",a:e}},di=function(e){return{$:"Ok",a:e}},hi=r(function(e,t){return{$:"Failure",a:e,b:t}}),pi=r(function(e,t){return{$:"Field",a:e,b:t}}),gi=r(function(e,t){return{$:"Index",a:e,b:t}}),vi=function(e){return{$:"OneOf",a:e}},yi=yr,mi=j,bi=function(e){var t=mi(e);return 97<=t&&t<=122},Ci=function(e){var t=mi(e);return t<=90&&65<=t},Si=function(e){return bi(e)||Ci(e)},Ei=function(e){var t=mi(e);return t<=57&&48<=t},Ti=function(e){return bi(e)||Ci(e)||Ei(e)},wi=function(e){return l($a,r(function(e,t){return t+1}),0,e)},Ii=Cr,Ai=n(function(e,t,r){for(;;){if(!(_(e,t)<1))return r;var n=e,a=t-1,i=f(Na,t,r);e=n,t=a,r=i}}),Bi=r(function(e,t){return l(Ai,e,t,mr)}),ki=r(function(e,t){return l(Ii,e,f(Bi,0,wi(t)-1),t)}),Ni=Kr,Ri=Z,$i=r(function(e,t){return f(Fr,e,V(t))}),xi=z,_i=r(function(e,t){return F(f(Mr,e,t))}),Li=function(e){return f($i,"\n ",f(_i,"\n",e))},Pi=on,Di=r(function(e,t){return"\n\n("+Ri(e+1)+") "+Li(Ui(t))}),Ui=function(e){return f(Oi,e,mr)},Oi=r(function(e,t){e:for(;;)switch(e.$){case"Field":var r=e.a,n=e.b,a=function(){var e=xi(r);if("Nothing"===e.$)return!1;var t=e.a,n=t.a,a=t.b;return Si(n)&&f(Ni,Ti,a)}(),i=a?"."+r:"['"+r+"']",o=n,u=f(Na,i,t);e=o,t=u;continue e;case"Index":var s=e.a,n=e.b,c="["+Ri(s)+"]",o=n,u=f(Na,c,t);e=o,t=u;continue e;case"OneOf":var l=e.a;if(l.b){if(l.b.b){var d=function(){return t.b?"The Json.Decode.oneOf at json"+f($i,"",xa(t)):"Json.Decode.oneOf"}(),h=d+" failed in the following "+Ri(wi(l))+" ways:";return f($i,"\n\n",f(Na,h,f(ki,Di,l)))}var n=l.a,o=n,u=t;e=o,t=u;continue e}return"Ran into a Json.Decode.oneOf with no possibilities"+function(){return t.b?" at json"+f($i,"",xa(t)):"!"}();default:var p=e.a,g=e.b,h=function(){return t.b?"Problem with the value at json"+f($i,"",xa(t))+":\n\n ":"Problem with the given value:\n\n"}();return h+(Li(f(Pi,4,g))+"\n\n")+p}}),Mi=en,Fi=tn,Vi=ae,Ki=function(e){switch(e.$){case"Normal":return 0;case"MayStopPropagation":return 1;case"MayPreventDefault":return 2;default:return 3}},Hi=An,ji={$:"Empty"},qi=function(e){return{$:"Styled",a:e}},Gi=function(e){return{$:"Text",a:e}},zi=function(e){return{$:"Unstyled",a:e}},Yi=r(function(e,t){switch(t.$){case"Styled":var n=t.a;return qi({html:r(function(t,r){return f(Hi,e,f(n.html,t,r))}),styles:n.styles});case"Unstyled":var a=t.a;return zi(f(Ua,Hi(e),a));case"Text":var i=t.a;return Gi(i);default:return ji}}),Wi=Yi,Ji=r(function(e,t){return d(ya,t.noticeType,f(Pa,Pa(Wi(e)),t.mainParagraphs),t.align,t.label)}),Qi=r(function(e,t){switch(t.$){case"UserNotice":var r=t.a;return ga(f(Ji,e,r));case"Web3Connect":return va;case"GotoRoute":var n=t.a;return ha(n);case"GTag":var a=t.a;return da(a);case"BrowserNotification":var i=t.a,o=t.b,u=t.c;return l(la,i,o,u);default:return pa}}),Xi=r(function(e,t){return f(Pa,Qi(e),t)}),Zi=function(e){return{$:"Native",a:e}},eo={$:"XDai"},to={$:"EthDai"},ro={$:"KovanDai"},no=function(e){return{$:"Token",a:e}},ao=function(e){e:for(;;)switch(e.$){case"Mainnet":return ci(no(to));case"Kovan":return ci(no(ro));case"Private":if(100===e.a)return ci(Zi(eo));break e;default:break e}return fi},io={$:"ETCMain"},oo={$:"ETCTest"},uo={$:"Expanse"},so={$:"Kovan"},co={$:"Mainnet"},fo=function(e){return{$:"Private",a:e}},lo={$:"Rinkeby"},ho={$:"Ropsten"},po={$:"RskMain"},go={$:"RskTest"},vo=function(e){switch(e){case 1:return co;case 2:return uo;case 3:return ho;case 4:return lo;case 30:return po;case 31:return go;case 42:return so;case 41:return io;case 62:return oo;default:return fo(e)}},yo=n(function(e,t,r){return t(e(r))}),mo=f(yo,vo,ao),bo=n(function(e,t,r){return{factoryType:e,httpProvider:t,wsProvider:r}}),Co=function(e){if("Token"===e.$){if("EthDai"===e.a.$){e.a;return l(bo,e,"https://mainnet.infura.io/v3/e3eef0e2435349bf9164e6f465bd7cf9","wss://mainnet.infura.io/ws")}e.a;return l(bo,e,"https://kovan.infura.io/v3/e3eef0e2435349bf9164e6f465bd7cf9","wss://kovan.infura.io/ws")}switch(e.a.$){case"Eth":e.a;return l(bo,e,"https://mainnet.infura.io/v3/e3eef0e2435349bf9164e6f465bd7cf9","wss://mainnet.infura.io/ws");case"Kovan":e.a;return l(bo,e,"https://kovan.infura.io/v3/e3eef0e2435349bf9164e6f465bd7cf9","wss://kovan.infura.io/ws");default:e.a;return l(bo,e,"https://dai.poa.network","")}},So=r(function(e,t){return t.b?l(La,Na,t,e):e}),Eo=r(function(e,t){return U(t,{userNotices:f(So,t.userNotices,F([e]))})}),To=r(function(e,t){return l($a,Eo,t,e)}),wo={$:"Open"},Io=Me,Ao=Io(mr),Bo=a(function(e,t,r,n){return L({agentAddress:t,agentRole:r,userInfo:n,viewPhase:wo,web3Context:e},Ao)}),ko=a(function(e,t,r,n){return{appCmds:n,chainCmd:r,cmd:t,model:e}}),No={$:"None"},Ro=No,$o=function(e){return d(ko,e,Ao,Ro,mr)},xo=function(e){return{$:"AbiDecoder",a:e}},_o=r(function(e,t){return{$:"Tape",a:e,b:t}}),Lo=Y,Po=Vr,Do=r(function(e,t){return e<1?t:l(Po,e,Lo(t),t)}),Uo=Do(64),Oo=n(function(e,t,r){return L(f(_o,e,Uo(t)),r)}),Mo=r(function(e,t){return e<1?"":l(Po,0,e,t)}),Fo=Mo(64),Vo=r(function(e,t){if("Ok"===t.$){var r=t.a;return di(e(r))}var n=t.a;return li(n)}),Ko=function(e){return-e},Ho=r(function(e,t){return e<1?"":l(Po,-e,Lo(t),t)}),jo=function(){var e=function(e){if(!f(Ni,Qa(D("0")),f(Mo,63,e)))return li("Boolean decode error. "+e+" is not 1 or 0.");switch(f(Ho,1,e)){case"0":return di(!1);case"1":return di(!0);default:return li("Boolean decode error. "+e+" is not 1 or 0.")}};return xo(function(t){var r=t.a,n=t.b;return f(Vo,f(Oo,r,n),e(Fo(n)))})}(),qo=jr,Go=function(e){return f(qo,"0x",e)||f(qo,"0X",e)?f(Do,2,e):e},zo=function(e){return e.b},Yo=r(function(e,t){var r=e.a;return f(Vo,zo,r(function(e){return f(_o,e,e)}(Go(t))))}),Wo=Zr,Jo=ie,Qo=Jr,Xo=function(e){return f(Wo,function(t){var r=e(t);if("Ok"===r.$){var n=r.a;return Vi(n)}var a=r.a;return Jo(a)},Qo)},Zo=f(yo,Yo,Xo),eu=function(e){return{$:"Magnitude",a:e}},tu=function(e){return{$:"Pos",a:e}},ru=r(function(e,t){return{$:"BigIntNotNormalised",a:e,b:t}}),nu=function(e){return{$:"MagnitudeNotNormalised",a:e}},au=function(e){e:for(;;){if(e.b){if(e.b.b){var t=e.b,r=t;e=r;continue e}var n=e.a;return ci(n)}return fi}},iu=function(e){var t=au(e);return"Nothing"!==t.$&&t.a<0},ou=function(e){return{$:"Neg",a:e}},uu={$:"Zer"},su=function(e){return!e.b},cu=r(function(e,t){var r=t.a;if(su(r))return uu;switch(e.$){case"Zero":return uu;case"Positive":return tu(t);default:return ou(t)}}),fu=r(function(e,t){return f(ru,e,nu(t))}),lu=function(e){return f(La,r(function(t,r){return e(t)&&su(r)?mr:f(Na,t,r)}),mr)}(Qa(0)),du=Ar,hu=-1+f(du,10,7),pu=hu+1,gu=r(function(e,t){var r=t.a,n=t.b;return L(e(r),n)}),vu=function(e){return e<0?f(gu,Ra(-1),vu(e+pu)):L(e/pu|0,e%pu)},yu=r(function(e,t){for(;;){if(t.b){var r=t.a,n=t.b,a=vu(r+e),i=a.a,o=a.b;return f(Na,o,f(yu,i,n))}{if(!(_(e,pu)>0))return F([e]);var u=F([e]);e=0,t=u}}}),mu=function(e){var t=e.a;return eu(lu(f(yu,0,t)))},bu=Pa(Ko),Cu={$:"Negative"},Su={$:"Positive"},Eu={$:"Zero"},Tu=function(e){switch(e.$){case"Positive":return Cu;case"Negative":return Su;default:return Eu}},wu=function(e){for(;;){var t=e.a,r=e.b,n=mu(r),a=n.a;if(!iu(a))return f(cu,t,eu(a));e=f(fu,Tu(t),bu(a))}},Iu=gr,Au=function(e){switch(f(Iu,e,0).$){case"LT":return Cu;case"GT":return Su;default:return Eu}},Bu=function(e){return e<0?-e:e},ku=function(e){return wu(f(ru,Au(e),nu(F([Bu(e)]))))},Nu=function(e){e:for(;;)switch(e.$){case"Zer":return 0;case"Pos":if(e.a.a.b){if(e.a.a.b.b){if(e.a.a.b.b.b)break e;var t=e.a.a,r=t.a,n=t.b,a=n.a;return a*f(du,10,7)+r}var i=e.a.a,r=i.a;return r}break e;default:break e}return 42},Ru=function(e){switch(e.$){case"Zer":return uu;case"Neg":var t=e.a;return tu(t);default:return e}},$u=function(e){return{$:"MagnitudePair",a:e}},xu=r(function(e,t){var r=L(e,t);if(r.a.b){if(r.b.b){var n=r.a,a=n.a,i=n.b,o=r.b,u=o.a,s=o.b;return f(Na,L(a,u),f(xu,i,s))}var c=r.a,a=c.a,i=c.b;return f(Na,L(a,0),f(xu,i,mr))}if(r.b.b){var l=r.b,u=l.a,s=l.b;return f(Na,L(0,u),f(xu,mr,s))}return mr}),_u=r(function(e,t){var r=e.a,n=t.a;return $u(f(xu,r,n))}),Lu=function(e){switch(e.$){case"Zer":return f(fu,Eu,mr);case"Neg":var t=e.a.a;return f(fu,Su,bu(t));default:var t=e.a.a;return f(fu,Su,t)}},Pu=r(function(e,t){var r=Lu(t),n=r.b,a=Lu(e),i=a.b,o=f(_u,i,n),u=o.a,s=f(Pa,function(e){return e.a+e.b},u);return wu(f(ru,Su,nu(s)))}),Du=a(function(e,t,r,n){e:for(;;){var a=L(r,n);if(a.a.b){if(a.b.b){var i=a.a,o=i.a,u=i.b,s=a.b,c=s.a,l=s.b;if($(o,c)){var d=e,h=t,p=u,g=l;e=d,t=h,r=p,n=g;continue e}var d=o,h=c,p=u,g=l;e=d,t=h,r=p,n=g;continue e}return wa}return a.b.b?Ca:f(Iu,e,t)}}),Uu=function(e){switch(e.$){case"LT":return wa;case"EQ":return ba;default:return Ca}},Ou=r(function(e,t){var r=L(e,t);switch(r.a.$){case"Pos":if("Pos"===r.b.$){var n=r.a.a.a,a=r.b.a.a;return d(Du,0,0,n,a)}return wa;case"Neg":if("Neg"===r.b.$){var n=r.a.a.a,a=r.b.a.a;return Uu(d(Du,0,0,n,a))}return Ca;default:switch(r.b.$){case"Pos":r.a;return Ca;case"Zer":r.a,r.b;return ba;default:r.a;return wa}}}),Mu=r(function(e,t){return $(f(Ou,e,t),wa)}),Fu=H,Vu=r(function(e,t){return!f(Mu,e,t)}),Ku=function(e){switch(e.$){case"Zer":return eu(mr);case"Pos":default:var t=e.a;return t}},Hu=r(function(e,t){var r=e.a;return mu(nu(f(Pa,ri(t),r)))}),ju=r(function(e,t){var r=e.a,n=t.a;if(r.b){if(r.b.b){var a=r.a,i=r.b,o=f(Hu,eu(n),a),u=f(ju,eu(i),eu(n)),s=u.a,c=f(Pu,f(cu,Su,o),f(cu,Su,eu(f(Na,0,s))));return Ku(c)}var a=r.a;return f(Hu,eu(n),a)}return eu(mr)}),qu=function(e){switch(e.$){case"Zer":return Eu;case"Pos":return Su;default:return Cu}},Gu=r(function(e,t){return $(e,Eu)||$(t,Eu)?Eu:$(e,t)?Su:Cu}),zu=r(function(e,t){return f(cu,f(Gu,qu(e),qu(t)),f(ju,Ku(e),Ku(t)))}),Yu=function(e){switch(e.$){case"Zer":return uu;case"Pos":var t=e.a;return ou(t);default:var t=e.a;return tu(t)}},Wu=r(function(e,t){return f(Pu,e,Yu(t))}),Ju=ku(0),Qu=a(function(e,t,r,n){if(e){var a=ku(e),i=f(zu,f(zu,a,n),t),o=f(Vu,i,r)?L(f(zu,a,t),f(Wu,r,i)):L(Ju,r),u=o.a,s=o.b,c=d(Qu,e/2|0,t,s,n),l=c.a,h=c.b;return L(f(Pu,u,l),h)}return L(Ju,r)}),Xu=Va(f(Ka,2,hu)),Zu=n(function(e,t,r){return d(Qu,f(du,2,Xu),e,t,r)}),es=ku(1),ts=r(function(e,t){return e}),rs=n(function(e,t,r){return l($a,ts(e),t,f(Bi,1,r))}),ns=function(e){return l(rs,zu(ku(pu)),es,e)},as=n(function(e,t,r){if(e){var n=l(Zu,ns(e),t,r),a=n.a,i=n.b,o=l(as,e-1,i,r),u=o.a,s=o.b;return L(f(Pu,a,u),s)}return l(Zu,ns(e),t,r)}),is=function(e){switch(e.$){case"Zer":return mr;case"Pos":default:var t=e.a.a;return t}},os=r(function(e,t){if($(t,Ju))return fi;var r=wi(is(e))-wi(is(t))+1,n=l(as,f(ti,0,r),Ru(e),Ru(t)),a=n.a,i=n.b;return ci(L(f(cu,f(Gu,qu(e),qu(t)),Ku(a)),f(cu,qu(e),Ku(i))))}),us=f(zu,ku(2),ku(2147483648)),ss=Pr,cs=function(e){return f(ss,e,"")},fs=Dn,ls=n(function(e,t,r){return e<=0?r:l(ls,e>>1,O(t,t),1&e?O(r,t):r)}),ds=r(function(e,t){return l(ls,e,t,"")}),hs=n(function(e,t,r){return O(f(ds,e-Lo(r),cs(t)),r)}),ps=re,gs=Br,vs=function(e){e:for(;;)switch(e){case 0:return D("0");case 1:return D("1");case 2:return D("2");case 3:return D("3");case 4:return D("4");case 5:return D("5");case 6:return D("6");case 7:return D("7");case 8:return D("8");case 9:return D("9");case 10:return D("a");case 11:return D("b");case 12:return D("c");case 13:return D("d");case 14:return D("e");case 15:return D("f");default:var t=e;e=t;continue e}},ys=r(function(e,t){for(;;){if(t<16)return f(Na,vs(t),e);var r=f(Na,vs(f(gs,16,t)),e),n=t/16|0;e=r,t=n}}),ms=function(e){return ps(e<0?f(Na,D("-"),f(ys,mr,-e)):f(ys,mr,e))},bs=function(e){var t=f(os,e,us);if("Nothing"===t.$)return"Failure converting BigInt to hex string. Should be impossible. Open up issue on the elm-bigint repo.";var r=t.a,n=r.a,a=r.b,i=ms(Nu(a));return $(n,ku(0))?i:O(bs(n),l(hs,8,D("0"),i))},Cs=function(e){switch(e.$){case"Zer":return"0";case"Pos":var t=e.a;return $(t,eu(mr))?"0":bs(tu(t));default:var t=e.a;return"-"+Cs(f(zu,ku(-1),e))}},Ss=function(e){return l(hs,64,D("0"),e)},Es=function(e){var t=r(function(e,t){var r=e.a,n=e.b,a=t.a,i=t.b,o=t.c;if("Just"===r.$){var u=r.a,s=Ss(ms(a)),c=function(e){return O(e,n)}(Ss(ms(u)));return P(a+32+(Lo(n)/2|0),O(i,s),O(o,c))}return P(a,O(i,n),o)});return function(e){return O(e.b,e.c)}(l($a,t,P(32*wi(e),"",""),e))},Ts=Ur,ws=n(function(e,t,r){return t<128?f(e,t,r):t<2048?f(e,128|63&t,f(e,192|t>>>6,r)):t<65536?f(e,128|63&t,f(e,128|63&t>>>6,f(e,224|t>>>12,r))):f(e,128|63&t,f(e,128|63&t>>>6,f(e,128|63&t>>>12,f(e,240|t>>>18,r))))}),Is=n(function(e,t,n){return l(Ts,r(function(t,r){return l(ws,e,mi(t),r)}),t,n)}),As=function(e){return xa(l(Is,Na,mr,e))},Bs=function(e){return f($i,"",f(Pa,f(yo,ms,f(hs,2,D("0"))),As(e)))},ks=function(e){return 64-f(gs,64,e)},Ns=function(e){return O(e,f(ds,ks(Lo(e)),"0"))},Rs=function(e){return L(ci(Lo(e)/2|0),Ns(e))},$s=function(e){return L(fi,Ss(e))},xs=function(e){switch(e){case"0000":return D("0");case"0001":return D("1");case"0010":return D("2");case"0011":return D("3");case"0100":return D("4");case"0101":return D("5");case"0110":return D("6");case"0111":return D("7");case"1000":return D("8");case"1001":return D("9");case"1010":return D("a");case"1011":return D("b");case"1100":return D("c");case"1101":return D("d");case"1110":return D("e");case"1111":return D("f");default:return D("!")}},_s=function(e){switch(e.valueOf()){case"0":return"0000";case"1":return"0001";case"2":return"0010";case"3":return"0011";case"4":return"0100";case"5":return"0101";case"6":return"0110";case"7":return"0111";case"8":return"1000";case"9":return"1001";case"a":return"1010";case"b":return"1011";case"c":return"1100";case"d":return"1101";case"e":return"1110";case"f":return"1111";default:return"error converting hex to binary"}},Ls=Or,Ps=function(e){var t=r(function(e,t){var r=t.a,n=t.b,a=L(e,n);e:for(;;)if(a.b)switch(a.a.valueOf()){case"0":return L(f(ss,D("1"),r),!0);case"1":return L(f(ss,D("0"),r),!0);default:break e}else switch(a.a.valueOf()){case"0":return L(f(ss,D("0"),r),!1);case"1":return L(f(ss,D("1"),r),!0);default:break e}return L(r,!0)});return l(Ls,t,L("",!1),e).a},Ds=function(e){return l(Ls,Na,mr,e)},Us=n(function(e,t,r){for(;;){if(""===t)return xa(r);var n=e,a=f(Do,e,t),i=f(Na,l(Po,0,e,t),r);e=n,t=a,r=i}}),Os=r(function(e,t){return e&&""!==t?l(Us,e,t,mr):F([t])}),Ms=function(e){var t=function(){var t=Ds(Cs(e));if(t.b&&"-"===t.a.valueOf()){var r=t.b;return L(r,f(yo,Ps,f(hs,256,D("1"))))}var r=t;return L(r,f(hs,256,D("0")))}(),r=t.a,n=t.b;return ps(f(Pa,xs,f(Os,4,n(f($i,"",f(Pa,_s,r))))))},Fs=function(e){return{$:"Hex",a:e}},Vs=function(e){switch(e.$){case"AddressE":var t=e.a.a;return $s(t);case"UintE":var r=e.a;return $s(Cs(r));case"IntE":var n=e.a;return $s(Ms(n));case"BoolE":return $s(e.a?"1":"0");case"DBytesE":var a=e.a.a;return Rs(a);case"BytesE":var a=e.a.a;return $s(Go(a));case"StringE":var i=e.a;return Rs(Bs(i));case"ListE":var o=e.a;return function(e){var t=e.a;return Rs(t)}(Zt()(o));default:var i=e.a;return $s(Go(i))}};try{var Ks=Zt();Zt=function(){return Ks}}catch(e){throw"Some top-level definitions from `Abi.Encode` are causing infinite recursion:\n\n ┌─────┐\n │ abiEncodeList\n │ ↓\n │ lowLevelEncode\n └─────┘\n\nThese errors are very tricky, so read https://elm-lang.org/0.19.0/halting-problem to learn how to fix it!"}var Hs=Dr,js=function(e){return 1===Lo(e)?f(Hs,"0",e):e},qs=n(function(e,t,r){for(;;){if(e<=0)return r;{if(!t.b)return r;var n=t.a,a=t.b,i=e-1,o=a,u=f(Na,n,r);e=i,t=o,r=u}}}),Gs=r(function(e,t){return xa(l(qs,e,t,mr))}),zs=n(function(e,t,r){if(t<=0)return mr;var n=L(t,r);e:for(;;){t:for(;;){if(!n.b.b)return r;if(!n.b.b.b){if(1===n.a)break e;break t}switch(n.a){case 1:break e;case 2:var a=n.b,i=a.a,o=a.b,u=o.a;return F([i,u]);case 3:if(n.b.b.b.b){var s=n.b,i=s.a,c=s.b,u=c.a,d=c.b,h=d.a;return F([i,u,h])}break t;default:if(n.b.b.b.b&&n.b.b.b.b.b){var p=n.b,i=p.a,g=p.b,u=g.a,v=g.b,h=v.a,y=v.b,m=y.a,b=y.b;return e>1e3?f(Na,i,f(Na,u,f(Na,h,f(Na,m,f(Gs,t-4,b))))):f(Na,i,f(Na,u,f(Na,h,f(Na,m,l(zs,e+1,t-4,b)))))}break t}}return r}var C=n.b,i=C.a;return F([i])}),Ys=r(function(e,t){return l(zs,0,e,t)}),Ws=function(e){return{$:"KC",a:e}}({capacity:512,delSuffix:1,outputLen:32,rate:1088}),Js=function(e){switch(e.$){case"I8":return 1;case"I16":return 2;case"I32":return 4;case"U8":return 1;case"U16":return 2;case"U32":case"F32":return 4;case"F64":return 8;case"Seq":case"Utf8":var t=e.a;return t;default:return Dt(e.a)}},Qs={$:"LE"},Xs=n(function(e,t,r){switch(e.$){case"I8":var n=e.a;return l(On,t,r,n);case"I16":var a=e.a,n=e.b;return d(Mn,t,r,n,$(a,Qs));case"I32":var a=e.a,n=e.b;return d(Fn,t,r,n,$(a,Qs));case"U8":var n=e.a;return l(Vn,t,r,n);case"U16":var a=e.a,n=e.b;return d(Kn,t,r,n,$(a,Qs));case"U32":var a=e.a,n=e.b;return d(Hn,t,r,n,$(a,Qs));case"F32":var a=e.a,n=e.b;return d(jn,t,r,n,$(a,Qs));case"F64":var a=e.a,n=e.b;return d(qn,t,r,n,$(a,Qs));case"Seq":var i=e.b;return l(Zs,i,t,r);case"Utf8":var o=e.b;return l(zn,t,r,o);default:var i=e.a;return l(Gn,t,r,i)}}),Zs=n(function(e,t,r){for(;;){if(!e.b)return r;var n=e.a,a=e.b,i=a,o=t,u=l(Xs,n,t,r);e=i,t=o,r=u}}),ec=Ut,tc=r(function(e,t){return{$:"Seq",a:e,b:t}}),rc=r(function(e,t){for(;;){if(!t.b)return e;var r=t.a,n=t.b,a=e+Js(r),i=n;e=a,t=i}}),nc=function(e){return f(tc,f(rc,0,e),e)},ac=function(e){return{$:"U8",a:e}},ic=ac,oc=r(function(e,t){return _(e,t)<0?e:t}),uc=pr,sc=function(e){return{$:"Bytes",a:e}},cc=sc,fc=function(e){return ec(nc(f(Pa,cc,xa(e))))},lc=Dt,dc=r(function(e,t){var r=e.a;return f(Yn,r,t)}),hc=function(e){return{$:"Decoder",a:e}},pc=a(function(e,t,r,n){for(;;){var a=t(e),i=a.a,o=f(i,r,n),u=o.a,s=o.b;if("Loop"!==s.$){return L(u,s.a)}var c=s.a,l=c,d=t,h=r,p=u;e=l,t=d,r=h,n=p}}),gc=r(function(e,t){return hc(f(pc,e,t))}),vc=hc(Wn),yc=r(function(e,t){if("Just"===t.$){return t.a}return e}),mc=function(e){return{$:"Done",a:e}},bc=function(e){return{$:"Loop",a:e}},Cc=r(function(e,t){var n=t.a;return hc(r(function(t,r){var a=f(n,t,r),i=a.a,o=a.b;return L(i,e(o))}))}),Sc=function(e){return hc(r(function(t,r){return L(r,e)}))},Ec=r(function(e,t){var r=t.a,n=t.b;return r<=0?Sc(mc(xa(n))):f(Cc,function(e){return bc(L(r-1,f(Na,e,n)))},e)}),Tc=function(e){return f(yc,mr,f(dc,f(gc,L(lc(e),mr),Ec(vc)),e))},wc=n(function(e,t,r){var n=t.a,a=t.b,i=r.a,o=r.b;return L(f(e,n,i),f(e,a,o))}),Ic=r(function(e,t){return l(wc,fs,e,t)}),Ac=f(Bi,0,4),Bc=r(function(e,t){var r=t.d0,n=t.d1,a=t.d2,i=t.d3,o=t.d4;switch(e){case 0:return r;case 1:return n;case 2:return a;case 3:return i;default:return o}}),kc=Pt,Nc=r(function(e,t){var r=t.a,n=t.b;return L(e(r),e(n))}),Rc=function(e){return f(Nc,f(yo,kc,fs(4294967295)),e)},$c=r(function(e,t){return 5*t+e}),xc=4294967295>>>32-ja,_c=ir,Lc=n(function(e,t,r){for(;;){var n=xc&t>>>e,a=f(_c,n,r);if("SubTree"!==a.$){var i=a.a;return f(_c,xc&t,i)}var o=a.a,u=e-ja,s=t,c=o;e=u,t=s,r=c}}),Pc=function(e){return e>>>5<<5},Dc=r(function(e,t){var r=t.a,n=t.b,a=t.c,i=t.d;return e<0||_(e,r)>-1?fi:ci(_(e,Pc(r))>-1?f(_c,xc&e,i):l(Lc,n,e,a))}),Uc=r(function(e,t){var r=f(Dc,e,t);if("Just"===r.$){return r.a}return L(0,0)}),Oc=n(function(e,t,r){var n=f($c,e,t);return f(Uc,n,r)}),Mc=or,Fc=a(function(e,t,r,n){var a=xc&t>>>e,i=f(_c,a,n);if("SubTree"===i.$){var o=i.a,u=d(Fc,e-ja,t,r,o);return l(Mc,a,Ya(u),n)}var s=i.a,c=l(Mc,xc&t,r,s);return l(Mc,a,za(c),n)}),Vc=n(function(e,t,r){var n=r.a,a=r.b,i=r.c,o=r.d;return e<0||_(e,n)>-1?r:_(e,Pc(n))>-1?d(Fa,n,a,i,l(Mc,xc&e,t,o)):d(Fa,n,a,d(Fc,a,e,t,i),o)}),Kc=n(function(e,t,r){return l(Vc,e,t,r)}),Hc=a(function(e,t,r,n){var a=f($c,e,t);return l(Kc,a,r,n)}),jc=Un,qc=r(function(e,t){return l(wc,jc,e,t)}),Gc=function(e){var t=l(La,r(function(t,n){var a={d0:l(Oc,0,t,e.state),d1:l(Oc,1,t,e.state),d2:l(Oc,2,t,e.state),d3:l(Oc,3,t,e.state),d4:l(Oc,4,t,e.state)},i=r(function(e,r){return d(Hc,e,t,f(qc,f(Bc,e,a),f(Ic,Rc(f(Bc,f(gs,5,e+1),a)),f(Bc,f(gs,5,e+2),a))),r)});return f(i,4,f(i,3,f(i,2,f(i,1,f(i,0,n)))))}),e.state,Ac);return U(e,{state:t})},zc=L(0,0),Yc=function(e){return{current:zc,lfsrstate:1,state:e,x:1,y:0}},Wc=function(e){var t=1&e;return 128&e?L(t,e<<1^113):L(t,e<<1)},Jc=L(1,0),Qc=r(function(e,t){var r=t.a,n=t.b;return e?L(n,r):L(r,n)}),Xc=r(function(e,t){if(e){var n=f(Qc,1,t);return l(wc,r(function(t,r){return 4294967295&(t<>>32-e)}),t,n)}return t}),Zc=r(function(e,t){var r=f(gs,32,e/32|0),n=f(Qc,r,t),a=f(gs,32,e);return f(Xc,a,n)}),ef=n(function(e,t,r){var n=f(Dc,e,r);if("Nothing"===n.$)return r;var a=n.a;return l(Vc,e,t(a),r)}),tf=n(function(e,t,r){return l(ef,e,qc(t),r)}),rf=a(function(e,t,r,n){var a=f($c,e,t);return l(tf,a,r,n)}),nf=function(e){return l($a,r(function(e,t){var r=(1<>r}),df=n(function(e,t,r){return t?L(0,r<0))return t;var a=f(oc,n,r),i=f(Pa,function(e){return f(lf,e,g)},f(Bi,0,a)),o=ff(e),u=O(t,i),s=n-a;e=o,t=u,n=s}});return f(Ys,i.outputLen,l(v,g,mr,i.outputLen))},vf=function(e){return{$:"KS",a:e}},yf=function(e){var t=e.a;return vf({config:t,inputLength:0,partial:mr,state:f(si,25,ts(zc))})},mf=function(e){return hc(Jn(e))},bf=ec(nc(mr)),Cf=r(function(e,t){var n=t.a;return hc(r(function(t,r){var a=f(n,t,r),i=a.a,o=a.b;return f(e(o).a,t,i)}))}),Sf=r(function(e,t){return f(Cf,function(e){return mf(t)},mf(e))}),Ef=r(function(e,t){return f(yc,bf,f(dc,f(Sf,e,lc(t)-e),t))}),Tf=r(function(e,t){for(;;){var n=t.a,a=n.config.rate/8|0,i=lc(e)?f(Na,e,n.partial):n.partial;if(!(_(l($a,r(function(e,t){return t+lc(e)}),0,i),a)>-1))return vf(U(n,{inputLength:lc(e)+n.inputLength,partial:i}));var o=fc(i),u=f(yc,bf,f(dc,mf(a),o)),s=Tc(u),c=f(pf,s,n.state),d=ff(c),h=f(Ef,a,o),p=bf,g=vf(U(n,{inputLength:lc(e)+n.inputLength,partial:F([h]),state:d}));e=p,t=g}}),wf=r(function(e,t){return gf(f(Tf,ec(nc(f(Pa,ic,t))),yf(e)))}),If=wf(Ws),Af=function(e){return Fs(f($i,"",f(Pa,f(yo,ms,js),f(Ys,4,If(f(Pa,mi,Ds(e)))))))},Bf=function(e){return f(qo,"0x",e)||f(qo,"0X",e)?e:"0x"+e},kf=function(e){var t=e.a;return Bf(t)},Nf=r(function(e,t){var r=Es(f(Pa,Vs,t)),n=function(e){return O(e,r)}(Go(kf(Af(e))));return Fs(n)}),Rf=function(e){return{data:ci(f(Nf,"poke()",mr)),decoder:Zo(jo),from:fi,gas:fi,gasPrice:fi,nonce:fi,to:ci(e),value:fi}},$f=r(function(e,t){return{$:"CustomSend",a:e,b:t}}),xf=r(function(e,t){return f($f,e,t)}),_f=r(function(e,t){return{$:"AgentHistory",a:e,b:t}}),Lf=function(e){return{$:"Trade",a:e}},Pf=function(e){return{data:e.data,from:e.from,gas:e.gas,gasPrice:e.gasPrice,nonce:e.nonce,to:e.to,value:e.value}},Df=r(function(e,t){switch(e.$){case"ViewUserRoleChanged":var r=e.a;return d(ko,t,Ao,Ro,F([ha(f(_f,t.agentAddress,r))]));case"ViewPhaseChanged":var n=e.a;return d(ko,U(t,{viewPhase:n}),Ao,Ro,mr);case"Poke":var a=e.a,i=Pf(Rf(a)),o={onBroadcast:fi,onMined:fi,onSign:fi},u=f(xf,o,i);return d(ko,t,Ao,u,mr);case"TradeClicked":var s=e.a;return d(ko,t,Ao,Ro,F([ha(Lf(s))]));default:return $o(t)}}),Uf=a(function(e,t,r,n){return{category:t,event:e,label:r,value:n}}),Of={$:"Seller"},Mf=function(e){return{$:"Posix",a:e}},Ff=Mf,Vf={autoabortInterval:Ff(0),autorecallInterval:Ff(0),autoreleaseInterval:Ff(0),daiAmount:"",fiatAmount:"",fiatType:"USD",paymentMethod:"",userRole:Of},Kf=function(e){return{$:"TokenValue",a:e}},Hf=function(e){return e.a},jf=r(function(e,t){if("Just"===t.$){var r=t.a;return ci(e(r))}return fi}),qf=r(function(e,t){return f(yc,Ju,f(jf,Xa,f(os,e,t)))}),Gf=r(function(e,t){return Kf(f(qf,Hf(e),ku(t)))}),zf=function(e){return f(Gf,e,12)},Yf=function(e){return f(Gf,e,3)},Wf=Kf(ku(0)),Jf=r(function(e,t){var r=Wf;return{abortPunishment:zf(t.tradeAmount),autoabortInterval:t.autoabortInterval,autorecallInterval:t.autorecallInterval,autoreleaseInterval:t.autoreleaseInterval,buyerDeposit:Yf(t.tradeAmount),initiatorAddress:e.address,initiatorCommPubkey:e.commPubkey,initiatorRole:t.initiatorRole,paymentMethods:t.paymentMethods,pokeReward:r,price:t.price,tradeAmount:t.tradeAmount}}),Qf=function(e){if("Token"===e.$){if("EthDai"===e.a.$){e.a;return"Dai"}e.a;return"Dai"}switch(e.a.$){case"Eth":e.a;return"ETH";case"Kovan":e.a;return"ETH";default:e.a;return"xDai"}},Xf=function(e){if(e.b){var t=e.a;e.b;return ci(t)}return fi},Zf=Gr,el=function(e){var t=Xf(f(Zf,".",e));if("Nothing"===t.$)return L(e,0);var r=t.a,n=Lo(e)-1-r;return L(O(f(Mo,r,e),f(Do,r+1,e)),n)},tl=r(function(e,t){e:for(;;){if(t.b){var r=t.a,n=t.b;if(e(r)){var a=e,i=n;e=a,t=i;continue e}return t}return mr}}),rl=function(e){var t=e.a,r=f(tl,Qa(0),t);return eu(r.b?t:mr)},nl=ee,al=r(function(e,t){for(;;){if(e<=0)return t;{if(!t.b)return t;var r=(t.a,t.b),n=e-1,a=r;e=n,t=a}}}),il=n(function(e,t,r){var n=f(al,t,r),a=wi(r)>0;return e>0&&t>0&&a?f(Na,f(Ys,e,r),l(il,e,t,n)):mr}),ol=r(function(e,t){return l(il,e,e,t)}),ul=function(e){var t=r(function(t,r){var n=e(t);if("Nothing"===n.$)return fi;var a=n.a;return f(jf,Na(a),r)});return f(La,t,ci(mr))}(Oa),sl=function(e){return f(jf,f(Ua,rl,eu),ul(f(Pa,f(yo,xa,f(yo,ps,nl)),f(ol,7,xa(e)))))},cl=X,fl=function(e){var t=Ds(cl(e));if(!t.b)return fi;switch(t.a.valueOf()){case"-":if(t.b.b){var r=t.b;return f(jf,cu(Cu),sl(r))}return fi;case"+":if(t.b.b){var r=t.b;return f(jf,cu(Su),sl(r))}return fi;default:var r=t;return f(jf,cu(Su),sl(r))}},ll=function(e){var t=function(e){return!f(gs,2,e)};switch(e.$){case"Zer":return!0;case"Pos":default:var r=e.a.a;return t(f(yc,0,Xf(r)))}},dl=function(e){return f(zu,e,e)},hl=ku(2),pl=n(function(e,t,r){e:for(;;)switch(r.$){case"Zer":return es;case"Neg":return uu;default:if($(r,es))return f(zu,e,t);if(ll(r)){var n=e,a=dl(t),i=f(qf,r,hl);e=n,t=a,r=i;continue e}var n=f(zu,t,e),a=dl(t),i=f(qf,f(Wu,r,es),hl);e=n,t=a,r=i;continue e}}),gl=r(function(e,t){return l(pl,es,e,t)}),vl=function(e){if(""===e)return fi;var t=el(e),r=t.a,n=t.b,a=fl(r),i=18-n;if(i<0)return fi;if("Nothing"===a.$)return fi;var o=a.a,u=f(zu,o,f(gl,ku(10),ku(i)));return ci(u)},yl=function(e){return f(jf,Kf,vl(e))},ml=qr,bl=function(e){for(;;){if(f(ml,".",e))return l(Po,0,-1,e);{if(!f(ml,"0",e))return""===e?"0":e;e=l(Po,0,-1,e)}}},Cl=f(Ua,f(hs,7,D("0")),Ri),Sl=function(e){return f($i,"",e)},El=function(e){var t=e.a,r=xa(t);if(r.b){var n=r.a,a=r.b;return Sl(f(Na,Ri(n),f(Pa,Cl,a)))}return"0"},Tl=function(e){switch(e.$){case"Zer":return"0";case"Pos":var t=e.a;return El(t);default:var t=e.a;return"-"+El(t)}},wl=r(function(e,t){return e<1?t:l(Po,0,-e,t)}),Il=function(e){var t=l(hs,18,D("0"),Tl(e)),r=f(wl,18,t)+"."+f(Ho,18,t);return function(e){return""===e?"0":e}(bl(r))},Al=r(function(e,t){var r=Il(t),n=Xf(f(Zf,".",r));if("Nothing"===n.$)return r;var a=n.a;return e?f(Mo,a+1+e,r):f(Mo,a,r)}),Bl=r(function(e,t){if("Nothing"===e.$)return Il(Hf(t));var r=e.a;return f(Al,r,Hf(t))}),kl=dr,Nl=te,Rl=function(e){var t=Nl(f(Bl,fi,e));if("Just"===t.$){return t.a}f(kl,"Error converting tokenValue to float: string -> float failed",e);return 0},$l=r(function(e,t){if(""===t)return li("You must specify a trade amount.");var r=yl(t);if("Nothing"===r.$)return li("I don't understand this number.");var n=r.a;return Rl(n)<1?li("Trade amount must be a least 1 "+Qf(e)+"."):di(n)}),xl=function(e){if(""===e)return li("You must specify a fiat price.");var t=fl(e);if("Nothing"===t.$){var r=Nl(e);return li("Just"===r.$?"Fractional fiat amounts (i.e. $1.20) are not supported. Use a whole number.":"I don't understand this number.")}var n=t.a;return di(n)},_l=r(function(e,t){if("Just"===t.$){var r=t.a;return di(r)}return li(e)}),Ll=function(e){return""===e},Pl=function(e){return Ll(e)?fi:ci(e)},Dl=function(e){return f(_l,"You must specify a fiat type.",Pl(e))},Ul=function(e){return""===e?li("Must specify a payment method."):di(e)},Ol=u(function(e,t,r,n,a,i,o){return{autoabortInterval:i,autorecallInterval:a,autoreleaseInterval:o,daiAmount:e,fiatAmount:t,fiatType:r,paymentMethod:n}}),Ml=g(Ol,fi,fi,fi,fi,fi,fi,fi),Fl=function(e){var t=e.a,r=e.b,n=e.c,a=P(t,r,n);if("Ok"===a.a.$){if("Ok"===a.b.$){if("Ok"===a.c.$){var i=a.a.a,o=a.b.a,u=a.c.a;return di(P(i,o,u))}var s=a.c.a;return li(s)}var c=a.b.a;return li(c)}var f=a.a.a;return li(f)},Vl=a(function(e,t,r,n){var a=n.a,i=n.b,o=n.c;return P(e(a),t(i),r(o))}),Kl={$:"Custom"},Hl=r(function(e,t){return{info:t,type_:e}}),jl=o(function(e,t,r,n,a,i){if("Err"===t.$){var o=t.a;return li(o)}var u=t.a;if("Err"===r.$){var o=r.a;return li(o)}var s=r.a;if("Err"===n.$){var o=n.a;return li(o)}var c=n.a;if("Err"===a.$){var o=a.a;return li(o)}var f=a.a;if("Err"===i.$){var o=i.a;return li(o)}var l=i.a;return di(h(e,u,s,c,f,l))}),ql=r(function(e,t){if("Ok"===t.$){var r=t.a;return di(r)}var n=t.a;return li(e(n))}),Gl=function(e){return e.a},zl=r(function(e,t){return p(jl,i(function(e,r,n,a,i){var o=i.a;return{autoabortInterval:i.b,autorecallInterval:o,autoreleaseInterval:i.c,initiatorRole:t.userRole,paymentMethods:F([f(Hl,Kl,a)]),price:{amount:r,fiatType:n},tradeAmount:e}}),f(ql,function(e){return U(Ml,{daiAmount:ci(e)})},f($l,e,t.daiAmount)),f(ql,function(e){return U(Ml,{fiatAmount:ci(e)})},xl(t.fiatAmount)),f(ql,function(e){return U(Ml,{fiatType:ci(e)})},Dl(t.fiatType)),f(ql,function(e){return U(Ml,{paymentMethod:ci(e)})},Ul(t.paymentMethod)),Fl(d(Vl,function(e){return Gl(e)>0?di(e):li(U(Ml,{autorecallInterval:ci("Must specify a non-zero time for this window")}))},function(e){return Gl(e)>0?di(e):li(U(Ml,{autoabortInterval:ci("Must specify a non-zero time for this window")}))},function(e){return Gl(e)>0?di(e):li(U(Ml,{autoreleaseInterval:ci("Must specify a non-zero time for this window")}))},P(t.autorecallInterval,t.autoabortInterval,t.autoreleaseInterval))))}),Yl=n(function(e,t,r){if("Nothing"===t.$)return fi;var n=t.a;if("Nothing"===r.$)return fi;var a=r.a;return ci(f(e,n,a))}),Wl=function(e){if("Ok"===e.$){var t=e.a;return ci(t)}return fi},Jl=function(e){var t=f(zl,e.web3Context.factoryType,e.inputs),r=function(){return $(e.errors,Ml)?Ml:"Ok"===t.$?Ml:t.a}();return U(e,{createParameters:l(Yl,Jf,e.userInfo,Wl(t)),errors:r})},Ql=r(function(e,t){return Jl(U(t,{inputs:e}))}),Xl=a(function(e,t,r,n){return{appCmds:n,chainCmd:r,cmd:t,model:e}}),Zl=r(function(e,t){return d(Xl,f(Ql,Vf,{allowance:fi,createParameters:fi,depositAmount:fi,errors:Ml,inputs:Vf,showFiatTypeDropdown:!1,txChainStatus:fi,userInfo:t,web3Context:e}),Ao,Ro,mr)}),ed=a(function(e,t,r,n){return da(d(Uf,e,t,r,n))}),td=function(e){return{$:"Address",a:e}},rd=f(yo,Go,f(yo,cl,td)),nd=function(e){if("Token"===e.$){if("EthDai"===e.a.$){e.a;return rd("0x5677CFbA35a0Db0469d3d56020d556B942E9ce90")}e.a;return rd("0xbC69Aff9d93C5EA4a841166C46C68518D02aF818")}switch(e.a.$){case"Eth":e.a;return rd("0xD3b1e8F2bDe0a2DdfC9F6e2EB6e2589e5Ba955b6");case"Kovan":e.a;return rd("0xA30773FD520cdf845E1a00441aB09cE39B31F676");default:e.a;return rd("0x7E370099a7a789dC28810a72381bcd7Be834Ad74")}},ad=function(e){return rd("EthDai"===e.$?"0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359":"0xC4375B7De8af5a38a93548eb8453a498222C4fF2")},id=function(e){return{$:"AddressE",a:e}},od=id,ud=function(e){return{$:"UintE",a:e}},sd=ud,cd=n(function(e,t,r){return{data:ci(f(Nf,"approve(address,uint256)",F([od(t),sd(r)]))),decoder:Zo(jo),from:fi,gas:fi,gasPrice:fi,nonce:fi,to:ci(e),value:fi}}),fd=function(e){return f(Gf,e,200)},ld=r(function(e,t){return Kf(f(Pu,Hf(e),Hf(t)))}),dd=function(e){var t=f(Gf,e.tradeAmount,200);return f(ld,e.pokeReward,f(ld,fd(e.tradeAmount),f(ld,t,function(){return"Buyer"===e.initiatorRole.$?Yf(e.tradeAmount):e.tradeAmount}())))},hd=Fi(ma),pd=n(function(e,t,r){return{id:e,initiator:r,tradeAddress:t}}),gd=a(function(e,t,r,n){return{index:t,match:e,number:r,submatches:n}}),vd=Zn,yd=Xn,md=function(e){return f(yd,{caseInsensitive:!1,multiline:!1},e)},bd=Qn,Cd=vd(f(yc,bd,md("^((0[Xx]){1})?[0-9A-Fa-f]{40}$"))),Sd=r(function(e,t){for(;;){if(!t.b)return!1;var r=t.a,n=t.b;if(e(r))return!0;var a=e,i=n;e=a,t=i}}),Ed=r(function(e,t){return!f(Sd,f(Ua,Fu,e),t)}),Td=Ed(Oa),wd=G,Id=r(function(e,t){if("Ok"===t.$){return t.a}return e}),Ad=n(function(e,t,r){if("Err"===t.$){var n=t.a;return li(n)}var a=t.a;if("Err"===r.$){var n=r.a;return li(n)}var i=r.a;return di(f(e,a,i))}),Bd=f(La,Ad(Na),di(mr)),kd=function(e){if(e.b){var t=(e.a,e.b);return ci(t)}return fi},Nd=n(function(e,t,r){e:for(;;){if(!t.b)return di(r);var n=t.a,a=t.b;switch(n.valueOf()){case"0":var i=e-1,o=a,u=r;e=i,t=o,r=u;continue e;case"1":var i=e-1,o=a,u=r+f(du,16,e);e=i,t=o,r=u;continue e;case"2":var i=e-1,o=a,u=r+2*f(du,16,e);e=i,t=o,r=u;continue e;case"3":var i=e-1,o=a,u=r+3*f(du,16,e);e=i,t=o,r=u;continue e;case"4":var i=e-1,o=a,u=r+4*f(du,16,e);e=i,t=o,r=u;continue e;case"5":var i=e-1,o=a,u=r+5*f(du,16,e);e=i,t=o,r=u;continue e;case"6":var i=e-1,o=a,u=r+6*f(du,16,e);e=i,t=o,r=u;continue e;case"7":var i=e-1,o=a,u=r+7*f(du,16,e);e=i,t=o,r=u;continue e;case"8":var i=e-1,o=a,u=r+8*f(du,16,e);e=i,t=o,r=u;continue e;case"9":var i=e-1,o=a,u=r+9*f(du,16,e);e=i,t=o,r=u;continue e;case"a":var i=e-1,o=a,u=r+10*f(du,16,e);e=i,t=o,r=u;continue e;case"b":var i=e-1,o=a,u=r+11*f(du,16,e);e=i,t=o,r=u;continue e;case"c":var i=e-1,o=a,u=r+12*f(du,16,e);e=i,t=o,r=u;continue e;case"d":var i=e-1,o=a,u=r+13*f(du,16,e);e=i,t=o,r=u;continue e;case"e":var i=e-1,o=a,u=r+14*f(du,16,e);e=i,t=o,r=u;continue e;case"f":var i=e-1,o=a,u=r+15*f(du,16,e);e=i,t=o,r=u;continue e;default:var s=n;return li(cs(s)+" is not a valid hexadecimal character.")}}}),Rd=function(e){if(Ll(e))return li("Empty strings are not valid hexadecimal strings.");var t=function(){if(f(qo,"-",e)){var t=f(yc,mr,kd(Ds(e)));return f(Vo,Ko,l(Nd,wi(t)-1,t,0))}return l(Nd,Lo(e)-1,Ds(e),0)}();return f(ql,function(t){return f($i," ",F(['"'+e+'"',"is not a valid hexadecimal string because",t]))},t)},$d=function(e){var t=Ds(e);return function(e){return L(t,e)}(f(Id,mr,Bd(f(Pa,Rd,f(_i,"",f($i,"",f(Pa,f(yo,ms,js),f(Ys,20,If(f(Pa,f(yo,wd,mi),t))))))))))},xd=function(e){var t=r(function(e,t){return!(t>=8&&bi(e)||t<8&&Ci(e))}),n=$d(Go(e)),a=n.a,i=n.b,o=l(Ii,t,a,i);return!!Cd(e)&&Td(o)},_d=vd(f(yc,bd,md("^((0[Xx]){1})?[0-9a-f]{40}$"))),Ld=vd(f(yc,bd,md("^((0[Xx]){1})?[0-9A-F]{40}$"))),Pd=function(e){return'"'+e+'"'},Dd=function(e){var t=Go(e),r=f(Mo,24,t),n=f(Ho,40,e);return 64===Lo(t)&&f(Ni,Qa(D("0")),r)?Ld(n)||_d(n)?di(td(n)):xd(n)?di(td(n)):li("Given address "+Pd(e)+" failed the EIP-55 checksum test."):40!==Lo(t)?li("Given address "+Pd(e)+" is not the correct length."):Cd(t)?Ld(t)||_d(t)?di(td(t)):xd(t)?di(td(t)):li("Given address "+Pd(e)+" failed the EIP-55 checksum test."):li("Given address "+Pd(e)+" contains invalid hex characters.")},Ud=xo(function(e){var t=e.a,r=e.b;return f(Vo,f(Oo,t,r),Dd(Fo(r)))}),Od=r(function(e,t){var r=t.a;return xo(function(t){var n=t.a,a=t.b;return r(f(_o,n,f(Do,64*e,a)))})}),Md=Qr,Fd=r(function(e,t){return f(Md,"data",Zo(f(Od,e,t)))}),Vd=Xr,Kd=r(function(e,t){return f(Md,"topics",f(Vd,e,Zo(t)))}),Hd=function(e){return f(jf,f(yo,xa,f($a,r(function(e,t){return f(Pu,ku(e),f(zu,t,us))}),Ju)),ul(f(Pa,f(yo,xa,f(yo,ps,f(yo,Rd,Wl))),f(ol,8,xa(e)))))},jd=function(e){var t=Ds(cl(e));e:for(;;){if(!t.b)return fi;switch(t.a.valueOf()){case"-":if(t.b.b){if("0"===t.b.a.valueOf()&&t.b.b.b&&"x"===t.b.b.a.valueOf()){if(t.b.b.b.b){var r=t.b,n=r.b,a=n.b;return f(jf,zu(ku(-1)),Hd(a))}var i=t.b;i.b;return fi}var a=t.b;return f(jf,zu(ku(-1)),Hd(a))}return fi;case"+":if(t.b.b){var a=t.b;return Hd(a)}return fi;case"0":if(t.b.b&&"x"===t.b.a.valueOf()){if(t.b.b.b){var o=t.b,a=o.b;return Hd(a)}t.b;return fi}break e;default:break e}}var a=t;return Hd(a)},qd=xo(function(e){var t=e.a,r=e.b;return f(Vo,f(Oo,t,r),f(_l,"Error Decoding Uint into BigInt",jd(Bf(Fo(r)))))}),Gd=f(hd,f(Kd,1,Ud),f(hd,f(Fd,1,Ud),f(hd,f(Fd,0,qd),Vi(pd)))),zd=me,Yd=f(yo,kf,zd),Wd=an,Jd=r(function(e,t){return me(l($a,Ee(e),Ce(),t))}),Qd=function(e){return me(l($a,r(function(e,t){var r=e.a,n=e.b;return l(un,r,n,t)}),Se(),e))},Xd=r(function(e,t){return{address:t.address,blockHash:t.blockHash,blockNumber:t.blockNumber,data:t.data,logIndex:t.logIndex,removed:t.removed,returnData:f(Wd,e,Qd(F([L("data",zd(t.data)),L("topics",f(Jd,Yd,t.topics))]))),topics:t.topics,transactionHash:t.transactionHash,transactionIndex:t.transactionIndex}}),Zd=function(e){var t=e.a;return Bf(t)},eh=r(function(e,t){return l(La,r(function(t,r){return e(t)?f(Na,t,r):r}),mr,t)}),th=r(function(e,t){if("Ok"===t.$){return e(t.a)}var r=t.a;return li(r)}),rh=r(function(e,t){return f(Vo,function(e){return e.id},f(th,function(e){return f(ql,Ui,f(Xd,Gd,e).returnData)},f(_l,"No log found from that factoryAddress in that txReceipt",Xf(f(eh,function(t){return $(f(yo,Zd,cl)(t.address),f(yo,Zd,cl)(nd(e)))},t.logs)))))}),nh=n(function(e,t,r){return{data:ci(f(Nf,"allowance(address,address)",F([od(t),od(r)]))),decoder:Zo(qd),from:fi,gas:fi,gasPrice:fi,nonce:fi,to:ci(e),value:fi}}),ah=function(e){switch(e.$){case"BlockNum":var t=e.a;return zd(Bf(ms(t)));case"EarliestBlock":return zd("earliest");case"LatestBlock":return zd("latest");default:return zd("pending")}},ih=f(yo,Zd,zd),oh=f(yo,Cs,f(yo,Bf,zd)),uh=f(yo,ms,f(yo,Bf,zd)),sh=sn,ch=function(e){return Qd(f(Pa,function(e){var t=e.a,r=e.b;return L(t,f(yc,sh,r))},f(eh,function(e){e.a;return!$(e.b,fi)},e)))},fh=function(e){var t=e.to,r=e.from,n=e.gas,a=e.gasPrice,i=e.value,o=e.data;return ch(F([L("to",f(jf,ih,t)),L("from",f(jf,ih,r)),L("gas",f(jf,uh,n)),L("gasPrice",f(jf,oh,a)),L("value",f(jf,oh,i)),L("data",f(jf,Yd,o))]))},lh=function(e){return{$:"BadBody",a:e}},dh=function(e){return{$:"BadStatus",a:e}},hh=function(e){return{$:"BadUrl",a:e}},ph={$:"NetworkError"},gh={$:"Timeout"},vh=nn,yh=r(function(e,t){switch(t.$){case"BadUrl_":var r=t.a;return li(hh(r));case"Timeout_":return li(gh);case"NetworkError_":return li(ph);case"BadStatus_":var n=t.a,a=t.b;return li(dh(n.statusCode));default:var n=t.a,a=t.b,i=f(vh,f(Md,"result",e),a);if("Ok"===i.$){var o=i.a;return di(o)}var u=i.a;return li(lh(Ui(u)))}}),mh=me,bh=n(function(e,t,r){return Qd(F([L("id",mh(e)),L("jsonrpc",zd("2.0")),L("method",zd(t)),L("params",f(Jd,Oa,r))]))}),Ch={$:"RBEmpty_elm_builtin"},Sh=Ch,Eh=r(function(e,t){e:for(;;){if("RBEmpty_elm_builtin"===t.$)return fi;var r=t.b,n=t.c,a=t.d,i=t.e,o=f(Iu,e,r);switch(o.$){case"LT":var u=e,s=a;e=u,t=s;continue e;case"EQ":return ci(n);default:var u=e,s=i;e=u,t=s;continue e}}}),Th={$:"Black"},wh=i(function(e,t,r,n,a){return{$:"RBNode_elm_builtin",a:e,b:t,c:r,d:n,e:a}}),Ih={$:"Red"},Ah=i(function(e,t,r,n,a){if("RBNode_elm_builtin"===a.$&&"Red"===a.a.$){var i=(a.a,a.b),o=a.c,u=a.d,s=a.e;if("RBNode_elm_builtin"===n.$&&"Red"===n.a.$){var c=(n.a,n.b),f=n.c,l=n.d,d=n.e;return h(wh,Ih,t,r,h(wh,Th,c,f,l,d),h(wh,Th,i,o,u,s))}return h(wh,e,i,o,h(wh,Ih,t,r,n,u),s)}if("RBNode_elm_builtin"===n.$&&"Red"===n.a.$&&"RBNode_elm_builtin"===n.d.$&&"Red"===n.d.a.$){var c=(n.a,n.b),f=n.c,p=n.d,g=(p.a,p.b),v=p.c,y=p.d,m=p.e,d=n.e;return h(wh,Ih,c,f,h(wh,Th,g,v,y,m),h(wh,Th,t,r,d,a))}return h(wh,e,t,r,n,a)}),Bh=n(function(e,t,r){if("RBEmpty_elm_builtin"===r.$)return h(wh,Ih,e,t,Ch,Ch);var n=r.a,a=r.b,i=r.c,o=r.d,u=r.e;switch(f(Iu,e,a).$){case"LT":return h(Ah,n,a,i,l(Bh,e,t,o),u);case"EQ":return h(wh,n,a,t,o,u);default:return h(Ah,n,a,i,o,l(Bh,e,t,u))}}),kh=n(function(e,t,r){var n=l(Bh,e,t,r);if("RBNode_elm_builtin"===n.$&&"Red"===n.a.$){var a=(n.a,n.b),i=n.c,o=n.d,u=n.e;return h(wh,Th,a,i,o,u)}return n}),Nh=function(e){for(;;){if("RBNode_elm_builtin"!==e.$||"RBNode_elm_builtin"!==e.d.$)return e;e=e.d}},Rh=function(e){if("RBNode_elm_builtin"===e.$&&"RBNode_elm_builtin"===e.d.$&&"RBNode_elm_builtin"===e.e.$){if("RBNode_elm_builtin"===e.e.d.$&&"Red"===e.e.d.a.$){var t=e.a,r=e.b,n=e.c,a=e.d,i=(a.a,a.b),o=a.c,u=a.d,s=a.e,c=e.e,f=(c.a,c.b),l=c.c,d=c.d,p=(d.a,d.b),g=d.c,v=d.d,y=d.e,m=c.e;return h(wh,Ih,p,g,h(wh,Th,r,n,h(wh,Ih,i,o,u,s),v),h(wh,Th,f,l,y,m))}var t=e.a,r=e.b,n=e.c,b=e.d,i=(b.a,b.b),o=b.c,u=b.d,s=b.e,C=e.e,f=(C.a,C.b),l=C.c,d=C.d,m=C.e;return t.$,h(wh,Th,r,n,h(wh,Ih,i,o,u,s),h(wh,Ih,f,l,d,m))}return e},$h=function(e){if("RBNode_elm_builtin"===e.$&&"RBNode_elm_builtin"===e.d.$&&"RBNode_elm_builtin"===e.e.$){if("RBNode_elm_builtin"===e.d.d.$&&"Red"===e.d.d.a.$){var t=e.a,r=e.b,n=e.c,a=e.d,i=(a.a,a.b),o=a.c,u=a.d,s=(u.a,u.b),c=u.c,f=u.d,l=u.e,d=a.e,p=e.e,g=(p.a,p.b),v=p.c,y=p.d,m=p.e;return h(wh,Ih,i,o,h(wh,Th,s,c,f,l),h(wh,Th,r,n,d,h(wh,Ih,g,v,y,m)))}var t=e.a,r=e.b,n=e.c,b=e.d,i=(b.a,b.b),o=b.c,C=b.d,d=b.e,S=e.e,g=(S.a,S.b),v=S.c,y=S.d,m=S.e;return t.$,h(wh,Th,r,n,h(wh,Ih,i,o,C,d),h(wh,Ih,g,v,y,m))}return e},xh=u(function(e,t,r,n,a,i,o){if("RBNode_elm_builtin"===i.$&&"Red"===i.a.$){var u=(i.a,i.b),s=i.c,c=i.d,f=i.e;return h(wh,r,u,s,c,h(wh,Ih,n,a,f,o))}e:for(;;){if("RBNode_elm_builtin"===o.$&&"Black"===o.a.$){if("RBNode_elm_builtin"===o.d.$){if("Black"===o.d.a.$){var l=(o.a,o.d);l.a;return $h(t)}break e}o.a,o.d;return $h(t)}break e}return t}),_h=function(e){if("RBNode_elm_builtin"===e.$&&"RBNode_elm_builtin"===e.d.$){var t=e.a,r=e.b,n=e.c,a=e.d,i=a.a,o=a.d,u=e.e;if("Black"===i.$){if("RBNode_elm_builtin"===o.$&&"Red"===o.a.$){o.a;return h(wh,t,r,n,_h(a),u)}var s=Rh(e);if("RBNode_elm_builtin"===s.$){var c=s.a,f=s.b,l=s.c,d=s.d,p=s.e;return h(Ah,c,f,l,_h(d),p)}return Ch}return h(wh,t,r,n,_h(a),u)}return Ch},Lh=r(function(e,t){if("RBEmpty_elm_builtin"===t.$)return Ch;var r=t.a,n=t.b,a=t.c,i=t.d,o=t.e;if(_(e,n)<0){if("RBNode_elm_builtin"===i.$&&"Black"===i.a.$){var u=(i.a,i.d);if("RBNode_elm_builtin"===u.$&&"Red"===u.a.$){u.a;return h(wh,r,n,a,f(Lh,e,i),o)}var s=Rh(t);if("RBNode_elm_builtin"===s.$){var c=s.a,l=s.b,d=s.c,p=s.d,v=s.e;return h(Ah,c,l,d,f(Lh,e,p),v)}return Ch}return h(wh,r,n,a,f(Lh,e,i),o)}return f(Ph,e,g(xh,e,t,r,n,a,i,o))}),Ph=r(function(e,t){if("RBNode_elm_builtin"===t.$){var r=t.a,n=t.b,a=t.c,i=t.d,o=t.e;if($(e,n)){var u=Nh(o);if("RBNode_elm_builtin"===u.$){var s=u.b,c=u.c;return h(Ah,r,s,c,i,_h(o))}return Ch}return h(Ah,r,n,a,i,f(Lh,e,o))}return Ch}),Dh=r(function(e,t){var r=f(Lh,e,t);if("RBNode_elm_builtin"===r.$&&"Red"===r.a.$){var n=(r.a,r.b),a=r.c,i=r.d,o=r.e;return h(wh,Th,n,a,i,o)}return r}),Uh=n(function(e,t,r){var n=t(f(Eh,e,r));if("Just"===n.$){var a=n.a;return l(kh,e,a,r)}return f(Dh,e,r)}),Oh=function(e){return"Just"===e.$},Mh=vn,Fh=yn,Vh=r(function(e,t){return{$:"BadStatus_",a:e,b:t}}),Kh=function(e){return{$:"BadUrl_",a:e}},Hh=r(function(e,t){return{$:"GoodStatus_",a:e,b:t}}),jh={$:"NetworkError_"},qh=function(e){return{$:"Receiving",a:e}},Gh=function(e){return{$:"Sending",a:e}},zh={$:"Timeout_"},Yh=function(e){return f(ra,"application/json",f(Pi,0,e))},Wh=n(function(e,t,r){return Yh(l(bh,e,t,r))}),Jh=f(ta,"",Oa),Qh=we,Xh=Te,Zh=function(e){if("Ok"===e.$){var t=e.a;return Xh(t)}var r=e.a;return Qh(r)},ep=function(e){return l(ea,vr,Zh,{allowCookiesFromOtherDomains:!1,body:e.body,expect:e.resolver,headers:e.headers,method:e.method,timeout:e.timeout,tracker:fi,url:e.url})},tp=function(e){var t=e.url,r=e.method,n=e.params,a=e.decoder;return ep({body:l(Wh,1,r,n),headers:mr,method:"POST",resolver:Jh(yh(a)),timeout:fi,url:t})},rp=n(function(e,t,r){return tp({decoder:t.decoder,method:"eth_call",params:F([fh(t),ah(r)]),url:e})}),np={$:"LatestBlock"},ap=r(function(e,t){return l(rp,e,t,np)}),ip=function(e){return{$:"Perform",a:e}},op=cn,up=Xh(vr),sp=r(function(e,t){return f(op,function(t){return Xh(e(t))},t)}),cp=n(function(e,t,r){return f(op,function(t){return f(op,function(r){return Xh(f(e,t,r))},r)},t)}),fp=function(e){return l(La,cp(Na),Xh(mr),e)},lp=r(function(e,t){var r=t.a;return ke(f(op,Mh(e),r))}),dp=n(function(e,t,r){return f(sp,function(e){return vr},fp(f(Pa,lp(e),t)))}),hp=n(function(e,t,r){return Xh(vr)}),pp=r(function(e,t){var r=t.a;return ip(f(sp,e,r))});gn.Task=De(up,dp,hp,pp);var gp=Oe("Task"),vp=fn,yp=r(function(e,t){return gp(ip(f(vp,f(Ua,f(Ua,Xh,e),li),f(op,f(Ua,f(Ua,Xh,e),di),t))))}),mp=i(function(e,t,r,n,a){return f(yp,a,f(ap,e.httpProvider,l(nh,ad(t),r,n)))}),bp=function(e){if("Token"===e.$){if("EthDai"===e.a.$){e.a;return rd("0x61F399ED1D5AEC3Bc9d4B026352d5764181d6b35")}e.a;return rd("0xF59ed429f9753B0498436DE1a3559AEC7a0c2a21")}switch(e.a.$){case"Eth":e.a;return rd("0x61F399ED1D5AEC3Bc9d4B026352d5764181d6b35");case"Kovan":e.a;return rd("0xF59ed429f9753B0498436DE1a3559AEC7a0c2a21");default:e.a;return rd("0x092110996699c3E06e998d89F0f4586026e44F0F")}},Cp=function(e){return{$:"BoolE",a:e}},Sp=Cp,Ep=function(e){return{$:"StringE",a:e}},Tp=Ep,wp=function(e){return function(t){return function(r){return function(n){return function(a){return function(i){return function(o){return function(u){return function(s){return function(c){return function(l){return function(d){return function(h){return function(p){return{data:ci(f(Nf,"createOpenTrade(address[2],bool,uint256[8],string,string)",F([od(t),od(r),Sp(n),sd(a),sd(i),sd(o),sd(u),sd(s),sd(c),sd(l),sd(d),Tp(h),Tp(p)]))),decoder:Zo(Ud),from:fi,gas:fi,gasPrice:fi,nonce:fi,to:ci(e),value:fi}}}}}}}}}}}}}}},Ip=function(e){return function(t){return function(r){return function(n){return function(a){return function(i){return function(o){return function(u){return function(s){return function(c){return function(l){return function(d){return function(h){return function(p){return{data:ci(f(Nf,"createOpenTrade(address[2],bool,uint256[8],string,string)",F([od(t),od(r),Sp(n),sd(a),sd(i),sd(o),sd(u),sd(s),sd(c),sd(l),sd(d),Tp(h),Tp(p)]))),decoder:Zo(Ud),from:fi,gas:fi,gasPrice:fi,nonce:fi,to:ci(e),value:fi}}}}}}}}}}}}}}},Ap=r(function(e,t){return{paymentMethods:t,price:e}}),Bp=function(e){return zd(Tl(e))},kp=function(e){return f(Jd,Oa,F([zd(e.fiatType),Bp(e.amount)]))},Np=function(e){switch(e.$){case"Cash":return"cash";case"Bank":return"bank";default:return"custom"}},Rp=function(e){return Qd(F([L("type",zd(Np(e.type_))),L("info",zd(e.info))]))},$p=function(e){var t=kp(e.price),r=f(Jd,Rp,e.paymentMethods);return f(Pi,0,Qd(F([L("paymentmethods",r),L("price",t)])))},xp=r(function(e,t){return U(t,{value:ci(e)})}),_p=function(e){return ku(Gl(e))},Lp=function(e){return f(qf,_p(e),ku(1e3))},Pp=r(function(e,t){var r=function(){return"Token"===e.$?wp:Ip}();return function(){return"Native"===e.$?xp(Hf(dd(t))):Oa}()(r(nd(e))(t.initiatorAddress)(bp(e))($(t.initiatorRole,Of))(Hf(t.tradeAmount))(Hf(Yf(t.tradeAmount)))(Hf(zf(t.tradeAmount)))(Hf(t.pokeReward))(Lp(t.autorecallInterval))(Lp(t.autoabortInterval))(Lp(t.autoreleaseInterval))(Hf(fd(t.tradeAmount)))($p(f(Ap,t.price,t.paymentMethods)))(t.initiatorCommPubkey))}),Dp=function(e){return{$:"CreateMined",a:e}},Up={$:"CreateNeedsSig"},Op=function(e){return{$:"CreateSigned",a:e}},Mp=r(function(e,t){var r=Pf(f(Pp,e,t)),n={onBroadcast:fi,onMined:ci(L(Dp,fi)),onSign:ci(Op)};return L(ci(Up),f(xf,n,r))}),Fp=function(e){return{$:"AllowanceFetched",a:e}},Vp=r(function(e,t){return{$:"ApproveMining",a:e,b:t}}),Kp={$:"ApproveNeedsSig"},Hp=r(function(e,t){return{$:"ApproveSigned",a:e,b:t}}),jp=function(e){return{$:"Confirm",a:e}},qp=function(e){return{$:"CreateMining",a:e}},Gp={$:"NoOp"},zp=function(e){return{appCmds:mr,chainCmd:Ro,cmd:Ao,model:e}},Yp=function(e){return nl(Tl(e))},Wp={$:"BottomRight"},Jp={$:"ShouldBeImpossible"},Qp=function(e){return Gi(e)},Xp=r(function(e,t){f(kl,e,t);return{align:Wp,label:"unexpectedError",mainParagraphs:F([F([Qp(e)])]),noticeType:Jp}}),Zp={$:"Error"},eg=r(function(e,t){f(kl,e+" fetch error",t);return{align:Wp,label:"web3FetchError",mainParagraphs:F([F([Qp('Failed to fetch "'+e+'". See console output for more info.')])]),noticeType:Zp}}),tg=r(function(e,t){return{align:Wp,label:"web3MiningError",mainParagraphs:F([F([Qp('Error mining "'+e+'" transaction: '+t)])]),noticeType:Zp}}),rg={$:"Caution"},ng=r(function(e,t){return{align:Wp,label:"web3SigError",mainParagraphs:F([F([Qp('Error signing "'+e+'" transaction: '+t)])]),noticeType:rg}}),ag=r(function(e,t){if("Just"===t.$){return e(t.a)}return fi}),ig=r(function(e,t){return 1-e(1-t)}),og=function(e){return f(du,e,5)},ug=ig(og),sg={easing:ug,offset:12,speed:200},cg=function(e){return{$:"External",a:e}},fg=function(e){return{$:"Internal",a:e}},lg=function(e){return{$:"NotFound",a:e}},dg=function(e){for(;;){e=e.a}},hg=r(function(e,t){return gp(ip(f(sp,e,t)))}),pg={$:"Http"},gg={$:"Https"},vg=Hr,yg=o(function(e,t,r,n,a,i){return{fragment:i,host:t,path:n,port_:r,protocol:e,query:a}}),mg=i(function(e,t,r,n,a){if(Ll(a)||f(vg,"@",a))return fi;var i=f(Zf,":",a);if(i.b){if(i.b.b)return fi;var o=i.a,u=nl(f(Do,o+1,a));if("Nothing"===u.$)return fi;var s=u;return ci(p(yg,e,f(Mo,o,a),s,t,r,n))}return ci(p(yg,e,a,fi,t,r,n))}),bg=a(function(e,t,r,n){if(Ll(n))return fi;var a=f(Zf,"/",n);if(a.b){var i=a.a;return h(mg,e,f(Do,i,n),t,r,f(Mo,i,n))}return h(mg,e,"/",t,r,n)}),Cg=n(function(e,t,r){if(Ll(r))return fi;var n=f(Zf,"?",r);if(n.b){var a=n.a;return d(bg,e,ci(f(Do,a+1,r)),t,f(Mo,a,r))}return d(bg,e,fi,t,r)}),Sg=r(function(e,t){if(Ll(t))return fi;var r=f(Zf,"#",t);if(r.b){var n=r.a;return l(Cg,e,ci(f(Do,n+1,t)),f(Mo,n,t))}return l(Cg,e,fi,t)}),Eg=function(e){return f(qo,"http://",e)?f(Sg,pg,f(Do,7,e)):f(qo,"https://",e)?f(Sg,gg,f(Do,8,e)):fi},Tg=Jt,wg=zt(Yt),Ig=ca,Ag=r(function(e,t){return L(e,t)}),Bg=_r,kg=a(function(e,t,r,n){var a=_(r,n)>0?ni:Ra,i=Bu(r-n),o=f(ti,1,Bg(i)/e|0),u=o,s=f(Pa,function(e){return t(e/u)},f(Bi,0,o));return e<=0||$(r,n)?mr:f(Pa,function(e){return f(a,r,e*i)},s)}),Ng=r(function(e,t){var n=r(function(t,r){return fp(f(Pa,Ig(0),d(kg,e.speed,e.easing,t,r-e.offset)))});return f(op,function(e){var t=e.a.viewport,r=e.b.element;return f(n,t.y,r.y)},l(cp,Ag,wg,Tg(t)))}),Rg=r(function(e,t){switch(e.$){case"Refresh":var r=(e.a,L(t.userInfo,t.web3Context.factoryType));if("Just"===r.a.$&&"Token"===r.b.$){var n=r.a.a,a=r.b.a,i=h(mp,t.web3Context,a,n.address,nd(t.web3Context.factoryType),Fp);return d(Xl,t,i,Ro,mr)}return zp(t);case"ChangeRole":var o=e.a,u=t.inputs;return d(Xl,U(t,{inputs:U(u,{userRole:o})}),Ao,Ro,F([function(){return"Buyer"===o.$?d(ed,"create offer type changed","input","sell dai",0):d(ed,"create offer type changed","input","buy dai",0)}()]));case"TradeAmountChanged":var s=e.a,u=t.inputs;return zp(f(Ql,U(u,{daiAmount:s}),t));case"FiatAmountChanged":var s=e.a,u=t.inputs;return zp(f(Ql,U(u,{fiatAmount:s}),t));case"FiatTypeChanged":var c=e.a,u=t.inputs;return zp(f(Ql,U(u,{fiatType:c}),t));case"FiatTypeLostFocus":return zp(U(t,{showFiatTypeDropdown:!1}));case"ChangePaymentMethodText":var p=e.a,u=t.inputs;return zp(f(Ql,U(u,{paymentMethod:p}),t));case"AutorecallIntervalChanged":var g=e.a,u=t.inputs;return zp(f(Ql,U(u,{autorecallInterval:g}),t));case"AutoabortIntervalChanged":var g=e.a,u=t.inputs;return zp(f(Ql,U(u,{autoabortInterval:g}),t));case"AutoreleaseIntervalChanged":var g=e.a,u=t.inputs;return zp(f(Ql,U(u,{autoreleaseInterval:g}),t));case"ShowCurrencyDropdown":var v=e.a,u=t.inputs;return d(Xl,(v?Ql(U(u,{fiatType:""})):Oa)(U(t,{showFiatTypeDropdown:v})),Ao,Ro,v?F([d(ed,"currency-selector-clicked","input","",0)]):mr);case"CreateClicked":var n=e.a,y=f(zl,t.web3Context.factoryType,t.inputs);if("Ok"===y.$){var m=y.a,b=f(Jf,n,m);return zp(U(t,{depositAmount:ci(Hf(dd(b))),txChainStatus:ci(jp(b))}))}var C=y.a;return d(Xl,U(t,{errors:C}),f(yp,ts(Gp),function(){return f(Ng,U(sg,{offset:60}),"inputError")}()),Ro,mr);case"AbortCreate":return d(Xl,U(t,{txChainStatus:fi}),Ao,Ro,F([d(ed,"abort","abort","create",0)]));case"ConfirmCreate":var b=e.a,S=e.b,E=function(){var e=t.web3Context.factoryType;if("Native"===e.$)return f(Mp,t.web3Context.factoryType,b);var r=e.a,n=function(){var e=Pf(l(cd,ad(r),nd(t.web3Context.factoryType),S)),n={onBroadcast:fi,onMined:fi,onSign:ci(Hp(b))};return f(xf,n,e)}(),a=t.allowance;if("Just"===a.$){var i=a.a;return $(f(Ou,i,S),Ca)?L(ci(Kp),n):f(Mp,t.web3Context.factoryType,b)}return L(ci(Kp),n)}(),T=E.a,w=E.b;return d(Xl,U(t,{txChainStatus:T}),Ao,w,mr);case"ApproveSigned":var b=e.a,I=e.b;if("Ok"===I.$){var A=I.a;return zp(U(t,{txChainStatus:ci(f(Vp,b,A))}))}var B=I.a;return d(Xl,U(t,{txChainStatus:fi}),Ao,Ro,F([ga(f(ng,"appove",B))]));case"AllowanceFetched":var k=e.a;if("Ok"===k.$){var N=k.a,R=U(t,{allowance:ci(N)}),x=L(R.txChainStatus,R.depositAmount);if("Just"===x.a.$&&"ApproveMining"===x.a.a.$&&"Just"===x.b.$){var _=x.a.a,b=_.a,P=x.b.a;if($(f(Ou,N,P),Ca))return zp(R);var D=f(Mp,R.web3Context.factoryType,b),T=D.a,w=D.b;return d(Xl,U(R,{txChainStatus:T}),Ao,w,mr)}return zp(R)}var O=k.a;return d(Xl,t,Ao,Ro,F([ga(f(eg,"allowance",O))]));case"CreateSigned":var I=e.a;if("Ok"===I.$){var A=I.a;return zp(U(t,{txChainStatus:ci(qp(A))}))}var B=I.a;return d(Xl,U(t,{txChainStatus:fi}),Ao,Ro,F([ga(f(ng,"create",B))]));case"CreateMined":if("Err"===e.a.$){var B=e.a.a;return d(Xl,t,Ao,Ro,F([ga(f(tg,"create",B))]))}var M=e.a.a,V=f(ag,Yp,Wl(f(rh,t.web3Context.factoryType,M)));if("Just"===V.$){var K=V.a;return d(Xl,t,Ao,Ro,F([ha(Lf(K))]))}return d(Xl,t,Ao,Ro,F([ga(f(Xp,'Error getting the ID of the created offer. Check the "My Trades" page for your open offer.',M))]));case"Web3Connect":return d(Xl,t,Ao,Ro,F([va]));case"NoOp":return zp(t);default:var H=e.a;return d(Xl,t,Ao,Ro,F([H]))}}),$g=function(e){return ch(F([L("to",f(jf,ih,e.to)),L("from",f(jf,ih,e.from)),L("gas",f(jf,uh,e.gas)),L("gasPrice",f(jf,oh,e.gasPrice)),L("value",f(jf,oh,e.value)),L("data",f(jf,Yd,e.data)),L("nonce",f(jf,uh,e.nonce))]))},xg=function(e){return{$:"TxSentry",a:e}},_g=r(function(e,t){return Qd(F([L("ref",mh(e)),L("txParams",t)]))}),Lg=function(e){return{$:"Signing",a:e}},Pg=r(function(e,t){var r=t.onSign;return{onBroadcastTagger:t.onBroadcast,onMinedTagger:t.onMined,onSignedTagger:r,params:e,status:Lg(e)}}),Dg=mn,Ug=n(function(e,t,r){var n=e.a,a=$g(r),i=l(kh,n.ref,f(Pg,r,t),n.txs);return L(xg(U(n,{ref:n.ref+1,txs:i})),f(Dg,n.tagger,n.outPort(f(_g,n.ref,a))))}),Og=Ug,Mg=r(function(e,t){if("None"===t.$)return L(e,Ao);var r=t.a,n=t.b;return l(Og,e,r,n)}),Fg=n(function(e,t,r){return{onBroadcast:t,onMined:r,onSign:e}}),Vg=r(function(e,t){if("None"===t.$)return No;var r=t.a,n=t.b,a=l(Fg,f(jf,Ua(e),r.onSign),f(jf,Ua(e),r.onBroadcast),f(jf,function(t){var r=t.a,n=t.b;return L(f(yo,r,e),f(jf,function(t){return{confirmations:t.confirmations,toMsg:f(yo,t.toMsg,e)}},n))},r.onMined));return f($f,a,n)}),Kg=function(e){if("Token"===e.$){if("EthDai"===e.a.$){e.a;return co}e.a;return so}switch(e.a.$){case"Eth":e.a;return co;case"Kovan":e.a;return so;default:e.a;return fo(100)}},Hg=r(function(e,t){return f(Iu,Gl(e),Gl(t))}),jg=r(function(e,t){return $(t.state.phase,wo)&&$(f(Hg,t.derived.phaseEndTime,e),wa)}),qg=function(e){if(""===e)return di(fi);var t=yl(e);if("Nothing"===t.$)return li("I can't interpret this number");var r=t.a;return di(ci(r))},Gg=function(e){if(""===e)return di(fi);var t=fl(e);if("Nothing"===t.$)return li("I don't understand this number.");var r=t.a;return di(ci(r))},zg=a(function(e,t,r,n){return{maxDai:t,maxFiat:n,minDai:e,minFiat:r}}),Yg=d(zg,fi,fi,fi,fi),Wg=i(function(e,t,r,n,a){if("Err"===t.$){var i=t.a;return li(i)}var o=t.a;if("Err"===r.$){var i=r.a;return li(i)}var u=r.a;if("Err"===n.$){var i=n.a;return li(i)}var s=n.a;if("Err"===a.$){var i=a.a;return li(i)}var c=a.a;return di(d(e,o,u,s,c))}),Jg=function(e){return h(Wg,a(function(t,r,n,a){return{dai:{max:r,min:t},fiat:f(jf,function(e){return{max:a,min:n,type_:e}},Pl(e.fiatType)),paymentMethodTerms:e.paymentMethodTerms}}),f(ql,function(e){return U(Yg,{minDai:ci(e)})},qg(e.minDai)),f(ql,function(e){return U(Yg,{maxDai:ci(e)})},qg(e.maxDai)),f(ql,function(e){return U(Yg,{minFiat:ci(e)})},Gg(e.minFiat)),f(ql,function(e){return U(Yg,{maxFiat:ci(e)})},Gg(e.maxFiat)))},Qg=r(function(e,t){var r=function(t){return f(Ed,function(e){return f(vg,cl(e),cl(t))},e)};return f(Sd,function(e){return r(e.info)},t)}),Xg=r(function(e,t){return U(t,{paymentMethod:e})}),Zg=r(function(e,t){return U(t,{paymentMethodTerms:e})}),ev=r(function(e,t){return f(Ou,Hf(e),Hf(t))}),tv=function(e){if(""===e.inputs.paymentMethod)return e;var t=e.inputs.paymentMethod,r=f(So,e.inputs.paymentMethodTerms,F([t]));return rv(U(e,{inputs:f(Zg,r,f(Xg,"",e.inputs))}))},rv=function(e){var t=tv(e),n=Jg(t.inputs);if("Err"===n.$){return U(e,{errors:n.a})}var a=n.a,i=r(function(e,t){var r=a.paymentMethodTerms;if(r.b){return f(Qg,r,t.terms.paymentMethods)}return!0}),o=function(e){var t=a.fiat;if("Nothing"===t.$)return!0;var r=t.a;return $(e.terms.price.fiatType,r.type_)&&function(){var t=r.min;if("Nothing"===t.$)return!0;var n=t.a;return!$(f(Ou,e.terms.price.amount,n),Ca)}()&&function(){var t=r.max;if("Nothing"===t.$)return!0;var n=t.a;return!$(f(Ou,e.terms.price.amount,n),wa)}()},u=function(e){return function(){var t=a.dai.min;if("Nothing"===t.$)return!0;var r=t.a;return!$(f(ev,e.parameters.tradeAmount,r),Ca)}()&&function(){var t=a.dai.max;if("Nothing"===t.$)return!0;var r=t.a;return!$(f(ev,e.parameters.tradeAmount,r),wa)}()},s=r(function(e,r){return f(jg,e,r)&&!$(r.parameters.initiatorRole,t.browsingRole)&&f(i,e,r)&&u(r)&&o(r)});return U(t,{filterFunc:s})},nv={fiatType:"",maxDai:"",maxFiat:"",minDai:"",minFiat:"",paymentMethod:"",paymentMethodTerms:mr},av=r(function(e,t){return f(Iu,e.creationInfo.blocknum,t.creationInfo.blocknum)}),iv=n(function(e,t,r){return L(rv({browsingRole:t,errors:Yg,filterFunc:jg,inputs:nv,showCurrencyDropdown:!1,sortFunc:av,userInfo:r,web3Context:e}),Ao)}),ov=r(function(e,t){return f(Ou,e.amount,t.amount)}),uv=r(function(e,t){var r=f(eh,uc(e),t.inputs.paymentMethodTerms);return rv(U(t,{inputs:f(Zg,r,t.inputs)}))}),sv=function(e){return U(e,{filterFunc:jg,inputs:nv,sortFunc:av})},cv={$:"Ascending"},fv=n(function(e,t,r){return{appCmds:r,cmd:t,model:e}}),lv=function(e){return l(fv,e,Ao,mr)},dv=r(function(e,t){return U(t,{fiatType:e})}),hv=r(function(e,t){return U(t,{maxDai:e})}),pv=r(function(e,t){return U(t,{maxFiat:e})}),gv=r(function(e,t){return U(t,{minDai:e})}),vv=r(function(e,t){return U(t,{minFiat:e})}),yv=n(function(e,t,r){return f(e,r,t)}),mv=r(function(e,t){switch(e.$){case"MinDaiChanged":var n=e.a;return l(fv,U(t,{inputs:f(gv,n,t.inputs)}),Ao,mr);case"MaxDaiChanged":var n=e.a;return l(fv,U(t,{inputs:f(hv,n,t.inputs)}),Ao,mr);case"MinFiatChanged":var n=e.a;return l(fv,U(t,{inputs:f(vv,n,t.inputs)}),Ao,mr);case"MaxFiatChanged":var n=e.a;return l(fv,U(t,{inputs:f(pv,n,t.inputs)}),Ao,mr);case"FiatTypeInputChanged":var n=e.a;return l(fv,U(t,{inputs:f(dv,n,t.inputs)}),Ao,mr);case"ShowCurrencyDropdown":var a=e.a;t.inputs;return l(fv,U(t,{inputs:(a?dv(""):Oa)(t.inputs),showCurrencyDropdown:a}),Ao,mr);case"FiatTypeLostFocus":return l(fv,U(t,{showCurrencyDropdown:!1}),Ao,mr);case"PaymentMethodInputChanged":var n=e.a;return l(fv,U(t,{inputs:f(Xg,n,t.inputs)}),Ao,mr);case"AddSearchTerm":return l(fv,tv(t),Ao,mr);case"RemoveTerm":var i=e.a;return l(fv,f(uv,i,t),Ao,mr);case"ApplyInputs":return l(fv,rv(t),Ao,mr);case"ResetSearch":return l(fv,sv(t),Ao,mr);case"TradeClicked":var o=e.a;return l(fv,t,Ao,F([ha(Lf(o))]));case"SortBy":var u=e.a,s=e.b,c=($(s,cv)?yv:Oa)(r(function(e,t){switch(u.$){case"Expiring":return f(Hg,e.derived.phaseEndTime,t.derived.phaseEndTime);case"TradeAmount":return f(ev,e.parameters.tradeAmount,t.parameters.tradeAmount);case"Fiat":return f(ov,e.terms.price,t.terms.price);case"Margin":return f(yc,ba,l(Yl,r(function(e,t){return f(Iu,e,t)}),e.derived.margin,t.derived.margin));case"PaymentMethods":return f(av,e,t);case"AutoabortWindow":return f(Hg,e.parameters.autoabortInterval,t.parameters.autoabortInterval);default:return f(Hg,e.parameters.autoreleaseInterval,t.parameters.autoreleaseInterval)}}));return l(fv,U(t,{sortFunc:c}),Ao,mr);case"NoOp":return lv(t);default:var d=e.a;return l(fv,t,Ao,F([d]))}}),bv=a(function(e,t,r,n){return e(Qd(F([L("title",zd(t)),L("body",function(){if("Nothing"===r.$)return sh;var e=r.a;return zd(e)}()),L("image",function(){if("Nothing"===n.$)return sh;var e=n.a;return zd(e)}())])))}),Cv=n(function(e,t,r){var n=e.factoryType;if("Token"===n.$){var a=n.a;return h(mp,e,a,t.address,nd(e.factoryType),r)}return Ao}),Sv=function(e){return{$:"AllowanceFetched",a:e}},Ev=function(e){return{$:"Menu",a:e}},Tv={$:"NoneStarted"},wv=a(function(e,t,r,n){return{appCmds:n,chainCmd:r,cmd:t,model:e}}),Iv=r(function(e,t){var r={state:Ev(Tv),textInput:"",tokenAllowance:fi,userInfo:t,web3Context:e},n=function(){if("Just"===t.$){var e=t.a;return l(Cv,r.web3Context,e,Sv)}return Ao}();return d(wv,r,n,Ro,mr)}),Av=function(e){return{$:"ApproveSigned",a:e}},Bv=r(function(e,t){var r=Pf(l(cd,ad(e),nd(no(e)),Hf(t))),n={onBroadcast:fi,onMined:fi,onSign:ci(Av)};return f(xf,n,r)}),kv=function(e){return{$:"OpenMined",a:e}},Nv=function(e){return{$:"OpenSigned",a:e}},Rv=r(function(e,t){var r=Pf(f(Pp,e,t)),n={onBroadcast:fi,onMined:ci(L(kv,fi)),onSign:ci(Nv)};return f(xf,n,r)}),$v=function(e){return{$:"ApproveMining",a:e}},xv=function(e){return{$:"ApproveNeedsSig",a:e}},_v={$:"OpenMining"},Lv={$:"OpenNeedsSig"},Pv={$:"ReadyToOpen"},Dv=r(function(e,t){return{$:"Spec",a:e,b:t}}),Uv=function(e){return{$:"StartPrompt",a:e}},Ov=r(function(e,t){return Kf(f(zu,Hf(e),ku(t)))}),Mv=function(e){var t=function(){return"Buyer"===e.initiatorRole.$?3:1}();return f(Gf,f(Ov,e.daiAmountIn,100*t),100+t)},Fv=n(function(e,t,r){var n=t.intervals,a=n.a,i=n.b,o=n.c;return f(Jf,e,{autoabortInterval:i,autorecallInterval:a,autoreleaseInterval:o,initiatorRole:t.initiatorRole,paymentMethods:F([f(Hl,Kl,r)]),price:t.fiatValue,tradeAmount:Mv(t)})}),Vv=function(e){return{appCmds:mr,chainCmd:Ro,cmd:Ao,model:e}},Kv=function(e){return Kf(e)},Hv=r(function(e,t){switch(e.$){case"Refresh":var r=(e.a,L(t.userInfo,t.web3Context.factoryType));if("Just"===r.a.$&&"Token"===r.b.$){var n=r.a.a,a=r.b.a,i=h(mp,t.web3Context,a,n.address,nd(t.web3Context.factoryType),Sv);return d(wv,t,i,Ro,mr)}return Vv(t);case"StartClicked":var o=e.a;if("Token"===t.web3Context.factoryType.$){var u=function(){var e=t.tokenAllowance;if("Just"===e.$){var r=e.a;return $(f(ev,r,o.daiAmountIn),Ca)?Ev(Uv(o)):f(Dv,o,Pv)}return Ev(Uv(o))}();return Vv(U(t,{state:u}))}return Vv(U(t,{state:f(Dv,o,Pv)}));case"ApproveClicked":var o=e.a,s=t.web3Context.factoryType;if("Token"===s.$){var a=s.a,c=f(Bv,a,o.daiAmountIn);return d(wv,U(t,{state:Ev(xv(o))}),Ao,c,mr)}return d(wv,t,Ao,Ro,F([ga(f(Xp,"Approve Clicked msg received, but factoryType is not a token factory!",o))]));case"ApproveSigned":var p=e.a,g=L(p,t.state);if("Ok"===g.a.$){if("Menu"===g.b.$&&"ApproveNeedsSig"===g.b.a.$){var v=g.a.a,o=g.b.a.a;return Vv(U(t,{state:f(Dv,o,$v(v))}))}return d(wv,t,Ao,Ro,F([ga(f(Xp,"Approve signed, but factoryType is not a token factory!",p))]))}var y=g.a.a;return d(wv,t,Ao,Ro,F([ga(f(ng,"ERC20 approve",y))]));case"AllowanceFetched":var m=e.a,b=L(m,t.state);if("Ok"===b.a.$){if("Spec"===b.b.$&&"ApproveMining"===b.b.b.$){var C=b.a.a,S=b.b,o=S.a;return Vv($(f(Ou,C,Hf(o.daiAmountIn)),Ca)?U(t,{tokenAllowance:ci(Kv(C))}):U(t,{state:f(Dv,o,Pv),tokenAllowance:ci(Kv(C))}))}return Vv(t)}var E=b.a.a;return d(wv,t,Ao,Ro,F([ga(f(eg,"token allowance",E))]));case"OpenClicked":var n=e.a,T=e.b,w=l(Fv,n,T,t.textInput),c=f(Rv,t.web3Context.factoryType,w);return d(wv,U(t,{state:f(Dv,T,Lv)}),Ao,c,mr);case"OpenSigned":var p=e.a,I=L(p,t.state);if("Ok"===I.a.$){if("Spec"===I.b.$){var v=I.a.a,A=I.b,w=A.a;return Vv(U(t,{state:f(Dv,w,_v)}))}return d(wv,t,Ao,Ro,F([ga(f(Xp,"Open signed, but factoryType is not a token factory!",p))]))}var y=I.a.a;return d(wv,t,Ao,Ro,F([ga(f(ng,"Open trade",y))]));case"OpenMined":var B=e.a;if("Ok"===B.$){var k=B.a,N=f(ag,Yp,Wl(f(rh,t.web3Context.factoryType,k)));if("Just"===N.$){var R=N.a;return d(wv,t,Ao,Ro,F([ha(Lf(R))]))}return d(wv,t,Ao,Ro,F([ga(f(Xp,'Error getting the ID of the created offer. Check the "My Trades" page for your open offer.',k))]))}var y=B.a;return d(wv,t,Ao,Ro,F([ga(f(tg,"Open trade",y))]));case"TextInputChanged":var x=e.a;return Vv(U(t,{textInput:x}));case"ChangeState":var u=e.a;return Vv(U(t,{state:u}));case"AbortCreate":return Vv(U(t,{state:Ev(Tv)}));case"NoOp":return Vv(t);default:return d(wv,t,Ao,Ro,F([va]))}}),jv=function(e){return"Buyer"===e.$?"buyer":"seller"},qv=function(e){return e.a+"="+e.b},Gv=function(e){return e.b?"?"+f($i,"&",f(Pa,qv,e)):""},zv=r(function(e,t){return"/"+(f($i,"/",e)+Gv(t))}),Yv=function(e){switch(e.$){case"Home":return f(zv,F(["DAIHard"]),mr);case"QuickCreate":return f(zv,F(["DAIHard","quickcreate"]),mr);case"Create":return f(zv,F(["DAIHard","create"]),mr);case"Trade":var t=e.a;return f(zv,F(["DAIHard","trade",Ri(t)]),mr);case"Marketplace":var r=e.a;return f(zv,F(["DAIHard","marketplace",jv(r)]),mr);case"AgentHistory":var n=e.a,r=e.b;return f(zv,F(["DAIHard","history",Zd(n),function(){return"Buyer"===r.$?"buyer":"seller"}()]),mr);default:return f(zv,mr,mr)}},Wv={$:"NotFound"},Jv={$:"Create"},Qv={$:"Home"},Xv=function(e){return{$:"Marketplace",a:e}},Zv={$:"QuickCreate"},ey=function(e){return{$:"Parser",a:e}},ty=i(function(e,t,r,n,a){return{frag:n,params:r,unvisited:t,value:a,visited:e}}),ry=r(function(e,t){return ey(function(e){var r=e.visited,n=e.unvisited,a=e.params,i=e.frag,o=e.value;if(n.b){var u=n.a,s=n.b,c=t(u);if("Just"===c.$){var l=c.a;return F([h(ty,f(Na,u,r),s,a,i,o(l))])}return mr}return mr})}),ny=f(ry,"ADDRESS",f(yo,Dd,Wl)),ay={$:"Buyer"},iy=f(ry,"BUYERORSELLER",function(e){switch(e){case"buyer":return ci(ay);case"seller":return ci(Of);default:return fi}}),oy=f(ry,"NUMBER",nl),uy=r(function(e,t){var r=t.visited,n=t.unvisited,a=t.params,i=t.frag,o=t.value;return h(ty,r,n,a,i,e(o))}),sy=r(function(e,t){var r=t.a;return ey(function(t){var n=t.visited,a=t.unvisited,i=t.params,o=t.frag,u=t.value;return f(Pa,uy(u),r(h(ty,n,a,i,o,e)))})}),cy=function(e){return l(La,So,mr,e)},fy=r(function(e,t){return cy(f(Pa,e,t))}),ly=function(e){return ey(function(t){var r=t.visited,n=t.unvisited,a=t.params,i=t.frag,o=t.value;if(n.b){var u=n.a,s=n.b;return $(u,e)?F([h(ty,f(Na,u,r),s,a,i,o)]):mr}return mr})},dy=r(function(e,t){var r=e.a,n=t.a;return ey(function(e){return f(fy,n,r(e))})}),hy=ey(function(e){return F([e])}),py=f(dy,ly("DAIHard"),function(e){return ey(function(t){return f(fy,function(e){return(0,e.a)(t)},e)})}(F([f(sy,Qv,hy),f(sy,Zv,ly("quickcreate")),f(sy,Jv,ly("create")),f(sy,Lf,f(dy,ly("trade"),oy)),f(sy,Xv,f(dy,ly("marketplace"),iy)),f(sy,_f,f(dy,ly("history"),f(dy,ny,iy))),f(sy,function(e){return f(_f,e,Of)},f(dy,ly("history"),ny))]))),gy=function(e){e:for(;;){if(e.b){var t=e.a,r=e.b,n=t.unvisited;if(n.b){if(""!==n.a||n.b.b){var a=r;e=a;continue e}return ci(t.value)}return ci(t.value)}return fi}},vy=function(e){if(e.b){if(""!==e.a||e.b.b){var t=e.a,r=e.b;return f(Na,t,vy(r))}return mr}return mr},yy=function(e){var t=f(_i,"/",e);if(t.b&&""===t.a){var r=t.b;return vy(r)}var r=t;return vy(r)},my=Xt,by=r(function(e,t){if("Nothing"===t.$)return ci(F([e]));var r=t.a;return ci(f(Na,e,r))}),Cy=r(function(e,t){var r=f(_i,"=",e);if(r.b&&r.b.b&&!r.b.b.b){var n=r.a,a=r.b,i=a.a,o=my(n);if("Nothing"===o.$)return t;var u=o.a,s=my(i);if("Nothing"===s.$)return t;var c=s.a;return l(Uh,u,by(c),t)}return t}),Sy=function(e){if("Nothing"===e.$)return Sh;var t=e.a;return l(La,Cy,Sh,f(_i,"&",t))},Ey=r(function(e,t){var r=e.a;return gy(r(h(ty,mr,yy(t.path),Sy(t.query),t.fragment,Oa)))}),Ty=function(e){return f(yc,Wv,f(Ey,py,e))},wy=ia,Iy=r(function(e,t){return f(wy,e,Yv(t))}),Ay=qe("connectToWeb3",function(e){return sh}),By=function(e){return Qd(F([L("event",zd(e.event)),L("category",zd(e.category)),L("label",zd(e.label)),L("value",mh(e.value))]))},ky=r(function(e,t){return Qd(F([L("address",zd(Zd(e))),L("signSeedMsg",zd(t))]))}),Ny=qe("gTagOut",Oa),Ry=qe("genPrivkey",Oa),$y=qe("notifyPort",Oa),xy=qe("requestNotifyPermissionPort",function(e){return sh}),_y=r(function(e,t){return U(t,{userInfo:e})}),Ly=r(function(e,t){return L(f(Ql,t.inputs,U(t,{userInfo:e})),function(){var r=L(e,t.web3Context.factoryType);if("Just"===r.a.$&&"Token"===r.b.$){var n=r.a.a,a=r.b.a;return h(mp,t.web3Context,a,n.address,nd(t.web3Context.factoryType),Fp)}return Ao}())}),Py=r(function(e,t){return U(t,{userInfo:e})}),Dy=r(function(e,t){return L(U(t,{userInfo:e}),function(){if("Just"===e.$){var r=e.a;return l(Cv,t.web3Context,r,Sv)}return Ao}())}),Uy=function(e){return{$:"AllowanceFetched",a:e}},Oy=r(function(e,t){return L(U(t,{userInfo:e}),function(){var r=P(e,t.trade,t.web3Context.factoryType);if("Just"===r.a.$&&"LoadedTrade"===r.b.$&&"Token"===r.c.$){var n=r.a.a,a=r.b.a,i=r.c.a;return h(mp,t.web3Context,i,n.address,a.creationInfo.address,Uy)}return Ao}())}),My=function(e){return{$:"AgentHistoryModel",a:e}},Fy=function(e){return{$:"CreateModel",a:e}},Vy=function(e){return{$:"CreateMsg",a:e}},Ky=function(e){return{$:"MarketplaceModel",a:e}},Hy=function(e){return{$:"QuickCreateModel",a:e}},jy=function(e){return{$:"QuickCreateMsg",a:e}},qy=function(e){return{$:"TradeModel",a:e}},Gy=function(e){return{$:"TradeMsg",a:e}},zy=r(function(e,t){switch(t.$){case"BetaLandingPage":return L(t,Ao);case"CreateModel":var r=t.a,n=f(Ly,e,r),a=n.a,i=n.b;return L(Fy(a),f(Dg,Vy,i));case"QuickCreateModel":var o=t.a,u=f(Dy,e,o),s=u.a,c=u.b;return L(Hy(s),f(Dg,jy,c));case"TradeModel":var l=t.a,d=f(Oy,e,l),h=d.a,p=d.b;return L(qy(h),f(Dg,Gy,p));case"MarketplaceModel":var g=t.a;return L(Ky(f(Py,e,g)),Ao);default:var v=t.a;return L(My(f(_y,e,v)),Ao)}}),Yy=r(function(e,t){return U(t,{web3Context:e})}),Wy=r(function(e,t){return U(t,{web3Context:e})}),Jy=r(function(e,t){return U(t,{web3Context:e})}),Qy=r(function(e,t){return U(t,{web3Context:e})}),Xy=r(function(e,t){switch(t.$){case"BetaLandingPage":return P(t,Ao,fi);case"CreateModel":var r=t.a;return P(Fy(f(Wy,e,r)),Ao,fi);case"QuickCreateModel":var n=t.a;return P(Hy(f(Qy,e,n)),Ao,fi);case"TradeModel":t.a;return P(t,Ao,ci(Xv(ay)));case"MarketplaceModel":var a=t.a;return P(Ky(f(Jy,e,a)),Ao,fi);default:var i=t.a;return P(My(f(Yy,e,i)),Ao,fi)}}),Zy=o(function(e,t,r,n,a,i){return{creationInfo:t,id:e,parameters:r,phaseStartInfo:i,state:n,terms:a}}),em=function(e){return{$:"PartiallyLoadedTrade",a:e}},tm=function(e){return em(p(Zy,e,fi,fi,fi,fi,fi))},rm=r(function(e,t){return{initiatorPubkey:e,responderPubkey:t}}),nm=function(e){return{$:"PartiallyLoadedCommInfo",a:e}},am=nm(f(rm,fi,fi)),im=function(e){return{$:"CurrentBlockFetched",a:e}},om=Xo(f(yo,Go,Rd)),um=function(e){return tp({decoder:om,method:"eth_blockNumber",params:mr,url:e})},sm=function(e){return f(yp,im,um(e.httpProvider))},cm=r(function(e,t){return{address_:e,blocknum:t}}),fm=function(e){return xo(function(t){return di(L(t,e))})},lm=r(function(e,t){return L(t.a,e(t.b))}),dm=n(function(e,t,r){var n=t.a,a=r.a;return xo(function(t){return f(th,function(t){var r=t.a,n=t.b;return f(Vo,lm(e(n)),a(r))},n(t))})}),hm=r(function(e,t){return l(dm,r(function(e,t){return e(t)}),t,e)}),pm=Zo(f(hm,qd,f(hm,Ud,fm(cm)))),gm=r(function(e,t){return{data:ci(f(Nf,"createdTrades(uint256)",F([sd(t)]))),decoder:pm,from:fi,gas:fi,gasPrice:fi,nonce:fi,to:ci(e),value:fi}}),vm=n(function(e,t,r){return f(yp,r,f(ap,e.httpProvider,f(gm,nd(e.factoryType),t)))}),ym=function(e){return{$:"CreationInfoFetched",a:e}},mm=r(function(e,t){return l(vm,e,ku(t),ym)}),bm=function(e){return{$:"EventSentryMsg",a:e}},Cm=a(function(e,t,r,n){return{appCmds:n,chainCmd:r,cmd:t,model:e}}),Sm=function(e){return{$:"BlockNumber",a:e}},Em=function(e){return{$:"EventSentry",a:e}},Tm=function(e){return{$:"Set_elm_builtin",a:e}},wm=Tm(Sh),Im=r(function(e,t){return L(Em({blockNumber:fi,errors:mr,nodePath:t,pending:wm,ref:1,requests:Sh,tagger:e,watching:wm}),f(yp,f(yo,Sm,e),um(t)))}),Am=n(function(e,t,r){var n=f(mm,e,r),a=f(Im,bm,e.httpProvider),i=a.a,o=a.b;return d(Cm,{allowance:fi,blocknumOnInit:fi,chatHistoryModel:fi,eventSentry:i,eventsWaitingForChatHistory:mr,expandedPhase:wo,secureCommInfo:am,showChatHistory:!1,showStatsModal:!1,trade:tm(r),txChainStatus:fi,userInfo:t,web3Context:e},Io(F([n,o,sm(e)])),Ro,F([pa]))}),Bm=function(e){return{data:ci(f(Nf,"abort()",mr)),decoder:Vi(vr),from:fi,gas:fi,gasPrice:fi,nonce:fi,to:ci(e),value:fi}},km=function(e){return{data:ci(f(Nf,"burn()",mr)),decoder:Vi(vr),from:fi,gas:fi,gasPrice:fi,nonce:fi,to:ci(e),value:fi}},Nm=function(e){return{data:ci(f(Nf,"claim()",mr)),decoder:Vi(vr),from:fi,gas:fi,gasPrice:fi,nonce:fi,to:ci(e),value:fi}},Rm=r(function(e,t){return{data:ci(f(Nf,"initiatorStatement(string)",F([Tp(t)]))),decoder:Vi(vr),from:fi,gas:fi,gasPrice:fi,nonce:fi,to:ci(e),value:fi}}),$m=function(e){return{data:ci(f(Nf,"recall()",mr)),decoder:Vi(vr),from:fi,gas:fi,gasPrice:fi,nonce:fi,to:ci(e),value:fi}},xm=function(e){return{data:ci(f(Nf,"release()",mr)),decoder:Vi(vr),from:fi,gas:fi,gasPrice:fi,nonce:fi,to:ci(e),value:fi}},_m=r(function(e,t){return{data:ci(f(Nf,"responderStatement(string)",F([Tp(t)]))),decoder:Vi(vr),from:fi,gas:fi,gasPrice:fi,nonce:fi,to:ci(e),value:fi}}),Lm=r(function(e,t){return{amount:t,fiatType:e}}),Pm=f(Wo,function(e){var t=fl(e);if("Just"===t.$){var r=t.a;return Vi(r)}return Jo("Can't convert that to a BigInt")},Qo),Dm=l(Fi,Lm,f(Vd,0,Qo),f(Vd,1,Pm)),Um={$:"Bank"},Om={$:"Cash"},Mm=function(e){switch(e){case"cash":return ci(Om);case"bank":return ci(Um);case"custom":return ci(Kl);default:return fi}},Fm=f(Wo,function(e){var t=Mm(e);if("Just"===t.$){var r=t.a;return Vi(r)}return Jo("")},Qo),Vm=l(Fi,Hl,f(Md,"type",Fm),f(Md,"info",Qo)),Km=ue,Hm=function(e){var t=l(Fi,Ap,f(Md,"price",Dm),f(Md,"paymentmethods",Km(Vm)));return f(vh,t,e)},jm=r(function(e,t){return{commPubkey:t,responder:e}}),qm=r(function(e,t){var n=r(function(t,r){return l(Po,t,t+2*r,e)}),a=f(yo,Rd,Vo(ri(2)));return f(th,function(t){return f(Vo,function(e){return f(n,t+64,e)},Rd(l(Po,t,t+64,e)))},a(t))}),Gm=n(function(e,t,r){var n=r.a,a=r.b,i=r.c,o=function(e){return 63&e|n<<6};return a?1===a?P(0,0,f(e,o(t),i)):P(o(t),a-1,i):128&t?192==(224&t)?P(31&t,1,i):224==(240&t)?P(15&t,2,i):P(7&t,3,i):P(0,0,f(e,t,i))}),zm=n(function(e,t,r){var n=l($a,Gm(e),P(0,0,t),r);if(n.b)return li("invalid UTF-8 sequence");var a=n.c;return di(a)}),Ym=q,Wm=function(e){return cs(Ym(e))},Jm=function(e){return l(zm,r(function(e,t){return O(t,Wm(e))}),"",e)},Qm=xo(function(e){var t=e.a,r=e.b;return f(Vo,f(Oo,t,r),f(th,Jm,f(th,f(yo,Pa(Rd),Bd),f(Vo,eh(f(yo,Ll,Fu)),f(Vo,Os(2),f(qm,t,Fo(r)))))))}),Xm=f(hd,f(Fd,1,Qm),f(hd,f(Fd,0,Ud),Vi(jm))),Zm=r(function(e,t){return{commPubkey:t,terms:e}}),eb=f(hd,f(Fd,1,Qm),f(hd,f(Fd,0,Qm),Vi(Zm))),tb=function(e){return{statement:e}},rb=f(hd,f(Fd,0,Qm),Vi(tb)),nb=function(e){return{statement:e}},ab=f(hd,f(Fd,0,Qm),Vi(nb)),ib={$:"AbortedEvent"},ob={$:"BurnedEvent"},ub={$:"ClaimedEvent"},sb=function(e){return{$:"CommittedEvent",a:e}},cb=function(e){return{$:"InitiatedEvent",a:e}},fb=function(e){return{$:"InitiatorStatementLogEvent",a:e}},lb={$:"PokeEvent"},db={$:"RecalledEvent"},hb={$:"ReleasedEvent"},pb=function(e){return{$:"ResponderStatementLogEvent",a:e}},gb=vd(f(yc,bd,md("^((0[Xx]){1})?[0-9a-fA-F]+$"))),vb=function(e){return gb(e)?di(Fs(Go(e))):li("Something in here is not very hexy: "+Pd(e))},yb=Xo(vb),mb=f(Md,"topics",f(Vd,0,yb)),bb=function(e){return Fs(f($i,"",f(Pa,f(yo,ms,js),If(f(Pa,mi,Ds(e))))))},Cb=f(Wo,function(e){return $(e,bb("Initiated(string,string)"))?f(Mi,cb,eb):$(e,bb("Committed(address,string)"))?f(Mi,sb,Xm):$(e,bb("Recalled()"))?Vi(db):$(e,bb("Claimed()"))?Vi(ub):$(e,bb("Aborted()"))?Vi(ib):$(e,bb("Released()"))?Vi(hb):$(e,bb("Burned()"))?Vi(ob):$(e,bb("InitiatorStatementLog(string)"))?f(Mi,fb,rb):$(e,bb("ResponderStatementLog(string)"))?f(Mi,pb,ab):$(e,bb("Poke()"))?Vi(lb):Jo("Unrecognized topic hash")},mb),Sb={$:"Initiator"},Eb={$:"Responder"},Tb=r(function(e,t){return $(t,e.parameters.initiatorAddress)?ci(Sb):f(ag,function(e){return $(t,e)?ci(Eb):fi},e.state.responder)}),wb=function(e){return"Buyer"===e.initiatorRole.$?e.tradeAmount:e.buyerDeposit},Ib=function(e){return $(e.buyerDeposit,Yf(e.tradeAmount))&&$(e.abortPunishment,zf(e.tradeAmount))},Ab={$:"Invalid"},Bb=u(function(e,t,r,n,a,i,o){return{creationInfo:t,derived:o,id:e,parameters:r,phaseStartInfo:i,state:n,terms:a}}),kb=function(e){return{$:"LoadedTrade",a:e}},Nb=r(function(e,t){return Ff(Gl(t)+Gl(e))}),Rb=function(e){var t=Nl(Tl(e.amount));if("Just"===t.$){return t.a}f(kl,"Error converting FiatValue to float--string -> float failed!",e);return 0},$b=r(function(e,t){return(t-e)/e}),xb=r(function(e,t){var r=Rb(t),n=Rl(e);return"USD"===t.fiatType?ci(f($b,n,r)):fi}),_b=n(function(e,t,r){var n=function(){switch(t.phase.$){case"Open":return e.autorecallInterval;case"Committed":return e.autoabortInterval;case"Judgment":return e.autoreleaseInterval;default:return Ff(0)}}();return{margin:f(xb,e.tradeAmount,r.price),phaseEndTime:f(Nb,t.phaseStartTime,n)}}),Lb=function(e){var t=P(L(e.creationInfo,e.parameters),L(e.state,e.terms),e.phaseStartInfo);if("Just"===t.a.a.$&&"Just"===t.a.b.$&&"Just"===t.b.a.$&&"Just"===t.b.b.$&&"Just"===t.c.$){var r=t.a,n=r.a.a,a=r.b.a,i=t.b,o=i.a.a,u=i.b.a,s=t.c.a;return kb(g(Bb,e.id,n,a,o,u,s,l(_b,a,o,u)))}return em(e)},Pb=r(function(e,t){switch(t.$){case"PartiallyLoadedTrade":var r=t.a;return Lb(U(r,{creationInfo:ci(e)}));case"LoadedTrade":f(kl,"Trying to update creation info on a trade that's already fully loaded!","");return t;default:return Ab}}),Db=r(function(e,t){switch(t.$){case"PartiallyLoadedTrade":var r=t.a;return Lb(U(r,{parameters:ci(e)}));case"LoadedTrade":t.a,f(kl,"Trying to update parameters on a trade that's already fully loaded!","");return t;default:return Ab}}),Ub=r(function(e,t){switch(t.$){case"PartiallyLoadedTrade":var r=t.a;return Lb(U(r,{phaseStartInfo:ci(e)}));case"LoadedTrade":t.a,f(kl,"Trying to update phaseStartInfo on a trade that's already fully loaded!","");return t;default:return Ab}}),Ob=r(function(e,t){switch(t.$){case"PartiallyLoadedTrade":var r=t.a;return Lb(U(r,{state:ci(e)}));case"LoadedTrade":var n=t.a;return kb(U(n,{state:e}));default:return Ab}}),Mb=r(function(e,t){switch(t.$){case"PartiallyLoadedTrade":var r=t.a;return Lb(U(r,{terms:ci(e)}));case"LoadedTrade":t.a,f(kl,"Trying to update terms on a trade that's already fully loaded!","");return t;default:return Ab}}),Fb=c(function(e,t,r,n,a,i,o,u,s){return{abortPunishment:a,autoabortInterval:o,autorecallInterval:i,autoreleaseInterval:u,beneficiaryDeposit:n,initiatedByCustodian:t,initiator:e,pokeReward:s,tradeAmount:r}}),Vb=Zo(f(hm,qd,f(hm,qd,f(hm,qd,f(hm,qd,f(hm,qd,f(hm,qd,f(hm,qd,f(hm,jo,f(hm,Ud,fm(Fb))))))))))),Kb=function(e){return{data:ci(f(Nf,"getParameters()",mr)),decoder:Vb,from:fi,gas:fi,gasPrice:fi,nonce:fi,to:ci(e),value:fi}},Hb=function(e){return f(jf,function(e){return Ff(1e3*e)},nl(Tl(e)))},jb=a(function(e,t,r,n){if("Err"===t.$){var a=t.a;return li(a)}var i=t.a;if("Err"===r.$){var a=r.a;return li(a)}var o=r.a;if("Err"===n.$){var a=n.a;return li(a)}var u=n.a;return di(l(e,i,o,u))}),qb=function(e){var t=f(_l,"error converting BigInt to Time.Posix",Hb(e.autoabortInterval)),r=f(_l,"error converting BigInt to Time.Posix",Hb(e.autoreleaseInterval)),a=f(_l,"error converting BigInt to Time.Posix",Hb(e.autorecallInterval));return d(jb,n(function(t,r,n){return{abortPunishment:Kv(e.abortPunishment),autoabortInterval:r,autorecallInterval:t,autoreleaseInterval:n,buyerDeposit:Kv(e.beneficiaryDeposit),initiatorAddress:e.initiator,initiatorRole:e.initiatedByCustodian?Of:ay,pokeReward:Kv(e.pokeReward),tradeAmount:Kv(e.tradeAmount)}}),a,t,r)},Gb=n(function(e,t,r){return f(yp,r,f(sp,qb,f(ap,e.httpProvider,Kb(t))))}),zb=function(e){return function(t){return function(r){return function(n){return function(a){return function(i){return function(o){return function(u){return function(s){return function(c){return{v0:e,v1:t,v2:r,v3:n,v4:a,v5:i,v6:o,v7:u,v8:s,v9:c}}}}}}}}}}},Yb=Zo(f(hm,qd,f(hm,qd,f(hm,qd,f(hm,qd,f(hm,qd,f(hm,qd,f(hm,qd,f(hm,qd,f(hm,qd,f(hm,qd,fm(zb)))))))))))),Wb=function(e){return{data:ci(f(Nf,"getPhaseStartInfo()",mr)),decoder:Yb,from:fi,gas:fi,gasPrice:fi,nonce:fi,to:ci(e),value:fi}},Jb=i(function(e,t,r,n,a){if("Nothing"===t.$)return fi;var i=t.a;if("Nothing"===r.$)return fi;var o=r.a;if("Nothing"===n.$)return fi;var u=n.a;if("Nothing"===a.$)return fi;var s=a.a;return ci(d(e,i,o,u,s))}),Qb=function(e){return h(Jb,a(function(t,r,n,a){return{claimedBlock:e.v3,claimedTime:n,closedBlock:e.v4,closedTime:a,committedBlock:e.v2,committedTime:r,openedBlock:e.v1,openedTime:t}}),Hb(e.v6),Hb(e.v7),Hb(e.v8),Hb(e.v9))},Xb=n(function(e,t,r){return f(yp,r,f(sp,Qb,f(ap,e.httpProvider,Wb(t))))}),Zb=i(function(e,t,r,n,a){return{balance:e,closedReason:a,phase:t,phaseStartTimestamp:r,responder:n}}),eC=Zo(f(hm,qd,f(hm,Ud,f(hm,qd,f(hm,qd,f(hm,qd,fm(Zb))))))),tC=function(e){return{data:ci(f(Nf,"getState()",mr)),decoder:eC,from:fi,gas:fi,gasPrice:fi,nonce:fi,to:ci(e),value:fi}},rC={$:"Aborted"},nC={$:"Burned"},aC={$:"NotClosed"},iC={$:"Recalled"},oC={$:"Released"},uC=function(e){switch(f(yc,99,nl(Tl(e)))){case 0:return ci(aC);case 1:return ci(iC);case 2:return ci(rC);case 3:return ci(oC);case 4:return ci(nC);default:return fi}},sC={$:"Closed"},cC={$:"Committed"},fC={$:"Judgment"},lC=function(e){switch(f(yc,99,nl(Tl(e)))){case 1:return ci(wo);case 2:return ci(cC);case 3:return ci(fC);case 4:return ci(sC);default:return fi}},dC=function(e){return $(e,rd("0x0000000000000000000000000000000000000000"))?fi:ci(e)},hC=a(function(e,t,r,n){if("Nothing"===t.$)return fi;var a=t.a;if("Nothing"===r.$)return fi;var i=r.a;if("Nothing"===n.$)return fi;var o=n.a;return ci(l(e,a,i,o))}),pC=function(e){var t=Hb(e.phaseStartTimestamp),r=lC(e.phase),a=uC(e.closedReason);return d(hC,n(function(t,r,n){return{balance:Kv(e.balance),closedReason:n,phase:t,phaseStartTime:r,responder:dC(e.responder)}}),r,t,a)},gC=n(function(e,t,r){return f(yp,r,f(sp,pC,f(ap,e.httpProvider,tC(t))))}),vC=i(function(e,t,r,n,a){return Io(F([l(Gb,e,t,r),l(gC,e,t,n),l(Xb,e,t,a)]))}),yC=function(e){var t=Yp(e);if("Just"===t.$){return t.a}f(kl,"Warning! BigInt to Int conversion failed!",Tl(e));return 0},mC=a(function(e,t,r,n){return{encapsulatedKey:e,iv:t,message:n,tag:r}}),bC=n(function(e,t,r){for(;;){var n=f(Wa,32,e),a=n.a,i=n.b;if(_(ai(a),32)<0)return f(ii,!0,{nodeList:t,nodeListSize:r,tail:a});var o=i,u=f(Na,za(a),t),s=r+1;e=o,t=u,r=s}}),CC=function(e){return e.b?l(bC,e,mr,0):Ga},SC=rn,EC=function(e){var t=h(SC,mC,f(Md,"encapsulation",Qo),f(Md,"iv",Qo),f(Md,"tag",Qo),f(Md,"encrypted",Qo)),r=Km(t),n=f(Wd,r,e);if("Err"===n.$){var a=n.a;return li(Ui(a))}var i=n.a;return function(e){var t=L(f(Dc,0,e),f(Dc,1,e));if("Just"===t.a.$&&"Just"===t.b.$){var r=t.a.a,n=t.b.a;return di(L(r,n))}return li("Decoded list has less than 2 items.")}(CC(i))},TC=function(e){var t=function(e){var t=Lo(e);return t>1114111?li("string is too long"):di(f(ss,Ym(t),e))};return f(Vo,$i(""),Bd(f(Pa,t,e)))},wC=function(e){var t=e.a,r=e.b;return TC(F([t.encapsulatedKey,t.iv,t.tag,t.message,r.encapsulatedKey,r.iv,r.tag,r.message]))},IC=r(function(e,t){return Qd(F([L("message",zd(e)),L("pubkeyHexStrings",f(Jd,zd,F([t.initiatorPubkey,t.responderPubkey])))]))}),AC=function(e){return{$:"LoadedCommInfo",a:e}},BC=r(function(e,t){return{initiatorPubkey:e,responderPubkey:t}}),kC=function(e){var t=L(e.initiatorPubkey,e.responderPubkey);if("Just"===t.a.$&&"Just"===t.b.$){var r=t.a.a,n=t.b.a;return AC(f(BC,r,n))}return nm(e)},NC=r(function(e,t){if("PartiallyLoadedCommInfo"===t.$){var r=t.a;return kC(U(r,{initiatorPubkey:ci(e)}))}var n=t.a;return AC(U(n,{initiatorPubkey:e}))}),RC=r(function(e,t){if("PartiallyLoadedCommInfo"===t.$){var r=t.a;return kC(U(r,{responderPubkey:ci(e)}))}var n=t.a;return AC(U(n,{responderPubkey:e}))}),$C=r(function(e,t){var r=L(t,e);if("Initiator"===r.a.$){if("Buyer"===r.b.$){r.a,r.b;return ay}r.a,r.b;return Of}if("Buyer"===r.b.$){r.a,r.b;return Of}r.a,r.b;return ay}),xC=r(function(e,t){for(;;){if(!e.b)return t;var r=e.a,n=e.b,a=mi(r),i=f(al,a,n),o=ps(f(Ys,a,n)),u=O(t,F([o])),s=i,c=u;e=s,t=c}}),_C=function(e){var t=CC(f(xC,Ds(e),mr));return l(Yl,Ag,h(Jb,mC,f(Dc,0,t),f(Dc,1,t),f(Dc,2,t),f(Dc,3,t)),h(Jb,mC,f(Dc,4,t),f(Dc,5,t),f(Dc,6,t),f(Dc,7,t)))},LC=r(function(e,t){if("Statement"===t.$){t.a;return l(la,"New Message from Trade",fi,fi)}var r=t.a,n=function(){switch(r.$){case"Initiated":return"Trade Opened.";case"Committed":return e?"Someone has committed to the Trade!":"You are now committed to the Trade!";case"Recalled":return"Trade recalled.";case"Claimed":return"Payment has been confirmed by the Buyer.";case"Aborted":return"Trade aborted by Buyer.";case"Released":return"Trade released by Seller.";default:return"Trade burned by Seller."}}();return l(la,n,fi,fi)}),PC={$:"Aborted"},DC={$:"Burned"},UC={$:"Claimed"},OC=function(e){return{$:"Committed",a:e}},MC=function(e){return{$:"Encrypted",a:e}},FC={$:"FailedDecode"},VC={$:"Initiated"},KC={$:"Recalled"},HC={$:"Released"},jC=function(e){return{$:"StateChange",a:e}},qC=function(e){return{$:"Statement",a:e}},GC=lr,zC=fr,YC=r(function(e,t){var r=ai(e),n=32-ai(t.tail)-r,a=l(GC,32,t.tail,e);return n<0?{nodeList:f(Na,za(a),t.nodeList),nodeListSize:t.nodeListSize+1,tail:l(zC,n,r,e)}:n?{nodeList:t.nodeList,nodeListSize:t.nodeListSize,tail:a}:{nodeList:f(Na,za(a),t.nodeList),nodeListSize:t.nodeListSize+1,tail:qa}}),WC=ur,JC=y,QC=a(function(e,t,r,n){var a=xc&t>>>e;if(_(a,ai(n))>-1){if(5===e)return f(WC,za(r),n);var i=Ya(d(QC,e-ja,t,r,qa));return f(WC,i,n)}var o=f(_c,a,n);if("SubTree"===o.$){var u=o.a,i=Ya(d(QC,e-ja,t,r,u));return l(Mc,a,i,n)}var i=Ya(d(QC,e-ja,t,r,JC(o)));return l(Mc,a,i,n)}),XC=r(function(e,t){var r=t.a,n=t.b,a=t.c,i=t.d,o=ai(i),u=ai(e),s=r+(u-o);if($(u,32)){if(_(s>>>ja,1<0){var c=n+ja,f=d(QC,c,r,e,JC(Ya(a)));return d(Fa,s,c,f,qa)}return d(Fa,s,n,d(QC,n,r,e,a),qa)}return d(Fa,s,n,a,e)}),ZC=r(function(e,t){var r=(t.a,t.c,t.d),n=ai(e),a=32-ai(r)-n,i=l(GC,32,r,e),o=f(XC,i,t);if(a<0){var u=l(zC,a,n,e);return f(XC,u,o)}return o}),eS=sr,tS=function(e){var t=e.a,n=e.c,a=e.d,i=r(function(e,t){if("SubTree"===e.$){var r=e.a;return l(eS,i,t,r)}return f(Na,e,t)});return{nodeList:l(eS,i,mr,n),nodeListSize:t/32|0,tail:a}},rS=r(function(e,t){var n=(e.d,t.a),a=t.c,i=t.d;if(_(n,128)<1){var o=r(function(e,t){if("SubTree"===e.$){var r=e.a;return l(eS,o,t,r)}var n=e.a;return f(ZC,n,t)});return f(ZC,i,l(eS,o,e,a))}var o=r(function(e,t){if("SubTree"===e.$){var r=e.a;return l(eS,o,t,r)}var n=e.a;return f(YC,n,t)});return f(ii,!0,f(YC,i,l(eS,o,tS(e),a)))}),nS=r(function(e,t){if("Nothing"===e.$)return t;var r=e.a;return f(Na,r,t)}),aS=f(La,nS,mr),iS=n(function(e,t,r){var n=$C(r.initiatorRole),a=function(){switch(t.$){case"InitiatedEvent":return ci(jC(VC));case"CommittedEvent":var r=t.a;return ci(jC(OC(r.responder)));case"RecalledEvent":return ci(jC(KC));case"ClaimedEvent":return ci(jC(UC));case"AbortedEvent":return ci(jC(PC));case"ReleasedEvent":return ci(jC(HC));case"BurnedEvent":return ci(jC(DC));case"InitiatorStatementLogEvent":var r=t.a;return ci(qC({blocknum:e,message:function(){var e=_C(r.statement);if("Just"===e.$){var t=e.a;return MC(t)}return FC}(),who:n(Sb)}));case"ResponderStatementLogEvent":var r=t.a;return ci(qC({blocknum:e,message:function(){var e=_C(r.statement);if("Just"===e.$){var t=e.a;return MC(t)}return FC}(),who:n(Eb)}));default:return fi}}(),i=f(jf,function(t){return{blocknum:e,eventInfo:t,time:fi}},a),o=f(rS,r.history,CC(aS(F([i])))),u=_(e,r.lastNotificationBlocknum)>0?L(f(jf,LC($(r.userRole,r.initiatorRole)),a),e):L(fi,r.lastNotificationBlocknum),s=u.a;return P(U(r,{history:o,lastNotificationBlocknum:u.b}),function(){return"Just"===a.$&&"Statement"===a.a.$}(),aS(F([s])))}),oS=zr,uS=function(e){var t=l(Fi,Ag,f(Md,"id",oS),f(Md,"message",Qo));return f(ql,Ui,f(Wd,t,e))},sS=function(e){return{$:"Decrypted",a:e}},cS=a(function(e,t,r,n){return{appCmds:n,maybeMessageSubmit:r,model:e,shouldCallDecrypt:t}}),fS=r(function(e,t){switch(e.$){case"NewEvent":var r=e.a,n=r.a,a=r.b,i=l(iS,n,a,t),o=i.a,u=i.b,s=i.c;return d(cS,o,u,fi,s);case"MessageInputChanged":var c=e.a;return d(cS,U(t,{messageInput:c}),!1,fi,mr);case"MessageSubmit":return d(cS,U(t,{messageInput:""}),!1,ci(t.messageInput),mr);default:var h=e.a,p=uS(h);if("Ok"===p.$){var g=p.a,v=g.a,y=g.b,m=f(Dc,v,t.history);if("Just"===m.$){var b=m.a,C=b.eventInfo;if("Statement"===C.$){var S=C.a,E=U(S,{message:sS(y)}),T=U(b,{eventInfo:qC(E)}),w=l(Vc,v,T,t.history);return d(cS,U(t,{history:w}),!1,fi,mr)}return d(cS,t,!1,fi,F([ga(f(Xp,"got a decryption result, but for an event that is not a message!",b))]))}return d(cS,t,!1,fi,F([ga(f(Xp,"got a decryption result, but for an id out of bounds!",L(v,t.history)))]))}var I=p.a;return d(cS,t,!1,fi,F([ga(f(Xp,"Error decoding decryption result",I))]))}}),lS=r(function(e,t){return{$:"ActionMined",a:e,b:t}}),dS=r(function(e,t){return{$:"ActionSigned",a:e,b:t}}),hS=function(e){return{onBroadcast:fi,onMined:ci(L(lS(e),fi)),onSign:ci(dS(e))}},pS=qe("encryptToPubkeys",Oa),gS=n(function(e,t,r){return{data:ci(f(Nf,"commit(address,string)",F([od(t),Tp(r)]))),decoder:Vi(vr),from:fi,gas:fi,gasPrice:fi,nonce:fi,to:ci(e),value:fi}}),vS=n(function(e,t,r){return{data:ci(f(Nf,"commit(address,string)",F([od(t),Tp(r)]))),decoder:Vi(vr),from:fi,gas:fi,gasPrice:fi,nonce:fi,to:ci(e),value:fi}}),yS=function(e){return{$:"CommitMined",a:e}},mS={$:"CommitNeedsSig"},bS=function(e){return{$:"CommitSigned",a:e}},CS=a(function(e,t,r,n){var a=function(){return"Token"===e.factoryType.$?vS:gS}(),i=Pf(function(){return"Token"===e.factoryType.$?Oa:xp(Hf(wb(t.parameters)))}()(l(a,t.creationInfo.address,r,n)));return L(ci(mS),f(xf,{onBroadcast:fi,onMined:ci(L(yS,fi)),onSign:ci(bS)},i))}),SS=r(function(e,t){return Qd(F([L("id",mh(e)),L("encapsulation",zd(t.encapsulatedKey)),L("iv",zd(t.iv)),L("tag",zd(t.tag)),L("encrypted",zd(t.message))]))}),ES=qe("decryptMessage",Oa),TS=function(e){var t=e.a,n=r(function(e,t){var r=t.a,n=t.b;return L(r-1,f(Na,L(r,e),n))});return l(Ea,n,L(t-1,mr),e).b},wS=r(function(e,t){return Io(f(Pa,function(e){var r=e.a,n=e.b,a=n.eventInfo;if("Statement"===a.$){var i=a.a,o=i.message;if("Encrypted"===o.$){var u=o.a,s=function(){return"Initiator"===t.$?u.a:u.b}();return ES(f(SS,r,s))}return Ao}return Ao},TS(e.history)))}),IS=function(e){if("Just"===e.$){return e.a}return fi},AS=function(e){var t=IS(l(Yl,Tb,function(){var t=e.trade;if("LoadedTrade"===t.$){var r=t.a;return ci(r)}return fi}(),f(jf,function(e){return e.address},e.userInfo))),r=L(e.chatHistoryModel,t);if("Just"===r.a.$&&"Just"===r.b.$){var n=r.a.a,a=r.b.a;return f(wS,n,a)}return Ao},BS=r(function(e,t){return f(jf,function(t){var r=L(t,e.parameters.initiatorRole);if("Initiator"===r.a.$){if("Seller"===r.b.$){r.a,r.b;return Of}r.a,r.b;return ay}if("Seller"===r.b.$){r.a,r.b;return ay}r.a,r.b;return Of},f(Tb,e,t))}),kS=r(function(e,t){return f(r(function(e,t){for(;;){var r=t.a,n=t.b,a=t.c;if(!e.b)return P(r,n,a);var i=e.a,o=i.a,u=i.b,s=e.b,c=l(iS,o,u,r),d=c.a,h=c.b,p=c.c,g=s,v=P(d,n||h,f(So,a,p));e=g,t=v}}),e,P(t,!1,mr))}),NS=u(function(e,t,r,n,a,i,o){return{history:a,initiatorRole:n,lastNotificationBlocknum:i,messageInput:o,userInfo:t,userRole:r,web3Context:e}}),RS=o(function(e,t,r,n,a,i){return f(kS,a,g(NS,e,t,r,n,Ga,i,""))}),$S=function(e){return{$:"ChatHistoryMsg",a:e}},xS=i(function(e,t,r,n,a){var i=P(t,r,n);if("LoadedTrade"===i.a.$&&"Just"===i.b.$&&"Just"===i.c.$){var o=i.a.a,u=i.b.a,s=i.c.a,c=f(BS,o,u.address);if("Just"===c.$){var l=c.a;return function(e){var t=e.a,r=e.b,n=e.c;return P(ci(t),r,f(Pa,Qi($S),n))}(p(RS,e,u,l,o.parameters.initiatorRole,a,s))}return P(fi,!1,mr)}return P(fi,!1,mr)}),_S={$:"Abort"},LS=r(function(e,t){return{$:"ActionMining",a:e,b:t}}),PS=function(e){return{$:"ActionNeedsSig",a:e}},DS=function(e){return{$:"ApproveMining",a:e}},US={$:"ApproveNeedsSig"},OS=function(e){return{$:"ApproveSigned",a:e}},MS={$:"Burn"},FS={$:"Claim"},VS=function(e){return{$:"CommitMining",a:e}},KS=function(e){return{$:"ConfirmingAction",a:e}},HS=n(function(e,t,r){return{$:"ConfirmingCommit",a:e,b:t,c:r}}),jS=function(e){return{$:"EventLogFetched",a:e}},qS=function(e){return{$:"ParametersFetched",a:e}},GS=function(e){return{$:"PhaseInfoFetched",a:e}},zS={$:"Poke"},YS={$:"Recall"},WS={$:"Release"},JS=function(e){return{$:"StartContractAction",a:e}},QS=function(e){return{$:"StateFetched",a:e}},XS=function(e){switch(e.$){case"Poke":return"poke";case"Recall":return"recall";case"Claim":return"claim";case"Abort":return"abort";case"Release":return"release";default:return"burn"}},ZS=function(e){return d(Cm,e,Ao,Ro,mr)},eE={align:Wp,label:"cantFindTradeWillRetry",mainParagraphs:F([F([Qp("Can't find a trade by that ID. I'll try again in half a second.")])]),noticeType:Zp},tE=r(function(e,t){if("Err"===t.$){var r=t.a;return f(eg,e,r)}if("Nothing"===t.a.$){t.a;return f(Xp,"Couldn't decode the fetched \""+e+'" result.',fi)}return f(Xp,"fromBadFetchResultMaybe being called with an 'OK (Just a)' value",t)}),rE={align:Wp,label:"tradeParametersNotDefault",mainParagraphs:F([F([Qp("Sorry, I'm not yet able to deal with this kind of trade. This must have been created by some other DAIHard interface.")])]),noticeType:Zp},nE=r(function(e,t){return{$:"GetLogs",a:e,b:t}}),aE=n(function(e,t,r){return l(Uh,e,jf(function(e){return U(e,{logCount:wi(t)+e.logCount})}),r)}),iE=r(function(e,t){var r=t.a;return Tm(f(Dh,e,r))}),oE=n(function(e,t,r){var n=e.a,a=f(Eh,t,n.requests);if("Nothing"===a.$)return L(Em(n),Ao);var i=a.a,o=L(i.watchOnce,Xf(r));if("Nothing"===o.b.$){o.b;return L(Em(U(n,{requests:l(aE,t,r,n.requests)})),Ao)}if(o.a){var u=o.b.a;return L(Em(U(n,{requests:l(aE,t,r,n.requests),watching:f(iE,t,n.watching)})),f(hg,i.tagger,Xh(u)))}return L(Em(U(n,{requests:l(aE,t,r,n.requests)})),Io(f(Pa,function(e){return f(hg,i.tagger,Xh(e))},r)))}),uE=_e,sE=r(function(e,t){return f(yp,f(yo,Sm,t),f(op,function(t){return um(e)},uE(2e3)))}),cE=se,fE=fe,lE=Wr,dE=n(function(e,t,r){var n=function(e){return fE(F([e,cE(r)]))};return f(Wo,function(a){var i=f(Wd,e,a);if("Ok"===i.$){var o=i.a,u=f(Wd,n(t),o);if("Ok"===u.$){var s=u.a;return Vi(s)}var c=u.a;return Jo(Ui(c))}return Vi(r)},lE)}),hE=a(function(e,t,r,n){return f(hd,l(dE,f(Md,e,lE),t,r),n)}),pE=n(function(e,t,r){return f(hd,f(Md,e,t),r)}),gE=Xo(Dd),vE=vd(f(yc,bd,md("^((0[Xx]){1})?[0-9a-fA-F]{64}$"))),yE=function(e){return{$:"BlockHash",a:e}},mE=function(e){return vE(e)?di(yE(Go(e))):li("Given blockHash "+Pd(e)+" is not valid.")},bE=Xo(mE),CE=function(e){return{$:"TxHash",a:e}},SE=function(e){return vE(e)?di(CE(Go(e))):li("Given txHash "+Pd(e)+" is not valid.")},EE=Xo(SE),TE=c(function(e,t,r,n,a,i,o,u,s){return{address:e,blockHash:u,blockNumber:s,data:t,logIndex:a,removed:n,topics:r,transactionHash:o,transactionIndex:i}}),wE=Yr,IE=l(pE,"blockNumber",om,l(pE,"blockHash",bE,l(pE,"transactionHash",EE,l(pE,"transactionIndex",om,l(pE,"logIndex",om,d(hE,"removed",wE,!1,l(pE,"topics",Km(yb),l(pE,"data",Qo,l(pE,"address",gE,Vi(TE)))))))))),AE=function(e){return f(Jd,function(e){if("Just"===e.$){var t=e.a;return zd(kf(t))}return sh},e)},BE=function(e){return Qd(F([L("fromBlock",ah(e.fromBlock)),L("toBlock",ah(e.toBlock)),L("address",ih(e.address)),L("topics",AE(e.topics))]))},kE=r(function(e,t){return tp({decoder:Km(IE),method:"eth_getLogs",params:F([BE(t)]),url:e})}),NE=function(e){return{$:"BlockNum",a:e}},RE=n(function(e,t,r){var n=r.a,a=r.b;return"BlockNum"===t.toBlock.$?f(op,function(r){return f(sp,yi(r),f(kE,e,U(t,{fromBlock:NE(n),toBlock:NE(a)})))},f(kE,e,t)):f(kE,e,t)}),$E=n(function(e,t,r){var n=r.a,a=r.b;return f(kE,e,U(t,{fromBlock:NE(n),toBlock:NE(a)}))}),xE=n(function(e,t,r){for(;;){if("RBEmpty_elm_builtin"===r.$)return t;var n=r.b,a=r.c,i=r.d,o=r.e,u=e,s=l(e,n,a,l(xE,e,t,i)),c=o;e=u,t=s,r=c}}),_E=r(function(e,t){return l(xE,kh,t,e)}),LE=r(function(e,t){var r=e.a,n=t.a;return Tm(f(_E,r,n))}),PE=r(function(e,t){var r=t.a;if("BlockNumber"===e.$){if("Ok"===e.a.$){var a=e.a.a,i=n(function(e,t,n){return Io(f(Pa,function(t){return f(yp,f(yo,nE(t.ref),r.tagger),l(n,r.nodePath,t.logFilter,e))},aS(f(Pa,function(e){return f(Eh,e,r.requests)},ka(t)))))}),o=r.blockNumber;if("Just"===o.$){var u=o.a;return a-u?L(Em(U(r,{blockNumber:ci(a)})),Io(F([f(sE,r.nodePath,r.tagger),l(i,L(u+1,a),r.watching,$E)]))):L(t,f(sE,r.nodePath,r.tagger))}return L(Em(U(r,{blockNumber:ci(a),pending:wm,watching:f(LE,r.watching,r.pending)})),Io(F([f(sE,r.nodePath,r.tagger),l(i,L(a,a),r.pending,RE),l(i,L(a,a),r.watching,$E)])))}var s=e.a.a;return L(Em(U(r,{errors:f(Na,s,r.errors)})),f(sE,r.nodePath,r.tagger))}if("Ok"===e.b.$){var c=e.a,d=e.b.a;return l(oE,t,c,d)}var s=e.b.a;return L(Em(U(r,{errors:f(Na,s,r.errors)})),Ao)}),DE=r(function(e,t){var r=t.a;return Tm(l(kh,e,vr,r))}),UE=a(function(e,t,r,n){var a=r.a,i={logCount:0,logFilter:n,ref:a.ref,tagger:t,watchOnce:e},o=U(a,{ref:a.ref+1,requests:l(kh,a.ref,i,a.requests)}),u=a.blockNumber;if("Just"===u.$){var s=u.a;return function(e){return P(Em(U(o,{watching:f(DE,a.ref,o.watching)})),f(yp,f(yo,nE(a.ref),a.tagger),e),a.ref)}(l(RE,a.nodePath,n,L(s,s)))}return P(Em(U(o,{pending:f(DE,a.ref,o.pending)})),Ao,a.ref)}),OE=UE(!1),ME=function(e){return F([e])},FE=r(function(e,t){e:for(;;)switch(e.$){case"Refresh":var r=(e.a,function(){var e=t.trade;if("PartiallyLoadedTrade"===e.$){var r=e.a;return"Nothing"===r.creationInfo.$?f(mm,t.web3Context,r.id):Ao}return Ao}()),n=function(){var e=P(t.userInfo,t.trade,t.web3Context.factoryType);if("Just"===e.a.$&&"LoadedTrade"===e.b.$&&"Token"===e.c.$){var r=e.a.a,n=e.b.a,a=e.c.a;return h(mp,t.web3Context,a,r.address,n.creationInfo.address,Uy)}return Ao}(),a=function(){return"Nothing"===t.chatHistoryModel.$?h(xS,t.web3Context,t.trade,t.userInfo,t.blocknumOnInit,t.eventsWaitingForChatHistory):P(t.chatHistoryModel,!1,mr)}(),i=a.a,o=a.b,u=a.c,s=U(t,{chatHistoryModel:i}),c=o?AS(t):Ao,p=t.trade;if("LoadedTrade"===p.$){var g=p.a;return d(Cm,s,Io(F([l(gC,t.web3Context,g.creationInfo.address,QS),c,r,n])),Ro,u)}return ZS(s);case"CurrentBlockFetched":var v=e.a;if("Ok"===v.$){var y=v.a;return ZS(U(t,{blocknumOnInit:ci(y)}))}var m=v.a;return d(Cm,t,Ao,Ro,F([ga(f(eg,"blocknum",m))]));case"AllowanceFetched":var v=e.a;if("Ok"===v.$){var b=v.a,s=U(t,{allowance:ci(b)}),C=P(s.txChainStatus,s.trade,s.userInfo);if("Just"===C.a.$&&"ApproveMining"===C.a.a.$&&"LoadedTrade"===C.b.$&&"Just"===C.c.$){var S=C.b.a,E=C.c.a;if($(f(Ou,b,Hf(wb(S.parameters))),Ca))return ZS(s);var T=d(CS,t.web3Context,S,E.address,E.commPubkey),w=T.a,I=T.b;return d(Cm,U(s,{txChainStatus:w}),Ao,I,mr)}return ZS(s)}var m=v.a;return d(Cm,t,Ao,Ro,F([ga(f(eg,"allowance",m))]));case"CreationInfoFetched":var v=e.a;if("Ok"===v.$){var A=v.a,B={address:A.address_,blocknum:yC(A.blocknum)},k=l(OE,jS,t.eventSentry,{address:B.address,fromBlock:NE(B.blocknum),toBlock:np,topics:mr}),N=k.a,R=k.b,s=U(t,{eventSentry:N,trade:f(Pb,B,t.trade)}),x=Io(F([R,h(vC,s.web3Context,B.address,qS,QS,GS)]));return d(Cm,s,x,Ro,mr)}if("BadBody"===v.a.$){v.a.a;return d(Cm,t,Ao,Ro,F([ga(eE)]))}var m=v.a;return d(Cm,t,Ao,Ro,F([ga(f(eg,"trade state",m))]));case"StateFetched":var v=e.a;if("Ok"===v.$&&"Just"===v.a.$){var _=v.a.a,D=function(){var e=t.trade;switch(e.$){case"PartiallyLoadedTrade":return!0;case"LoadedTrade":return!$(e.a.state.phase,_.phase);default:return!1}}(),s=U(t,{expandedPhase:D?_.phase:t.expandedPhase,trade:f(Ob,_,t.trade)});return d(Cm,s,AS(s),Ro,mr)}return d(Cm,t,Ao,Ro,F([ga(f(tE,"trade state",v))]));case"ParametersFetched":var v=e.a;if("Ok"===v.$){if("Ok"===v.a.$){var M=v.a.a;if(Ib(M)){var s=U(t,{trade:f(Db,M,t.trade)});return d(Cm,s,AS(s),Ro,mr)}return d(Cm,t,Ao,Ro,F([ga(rE)]))}var V=v.a.a;return d(Cm,t,Ao,Ro,F([ga(f(Xp,"Error decoding fetched trade parameters",V))]))}var K=v.a;return d(Cm,t,Ao,Ro,F([ga(f(eg,"trade parameters",K))]));case"PhaseInfoFetched":var v=e.a;if("Ok"===v.$&&"Just"===v.a.$){var H=v.a.a,s=U(t,{trade:f(Ub,H,t.trade)});return d(Cm,s,AS(s),Ro,mr)}return d(Cm,t,Ao,Ro,F([ga(f(tE,"trade state",v))]));case"EventLogFetched":var j=e.a,q=f(Xd,Cb,j),G=q.returnData;if("Err"===G.$){var z=G.a;return d(Cm,t,Ao,Ro,F([ga(f(Xp,"Error decoding contract event",z))]))}var Y=G.a,W=function(){switch(Y.$){case"InitiatedEvent":var e=Y.a;return f(NC,e.commPubkey,t.secureCommInfo);case"CommittedEvent":var e=Y.a;return f(RC,e.commPubkey,t.secureCommInfo);default:return t.secureCommInfo}}(),J=function(){if("InitiatedEvent"===Y.$){var e=Y.a,r=Hm(e.terms);if("Ok"===r.$){var n=r.a;return L(f(Mb,n,t.trade),fi)}var a=r.a;return L(t.trade,ci(f(Xp,"Couldn't decode payment methods!",a)))}return L(t.trade,fi)}(),Q=J.a,X=J.b,Z=function(){var e=t.chatHistoryModel;if("Just"===e.$){var r=e.a;return function(e){var t=e.a,r=e.b,n=e.c;return P(ci(t),r,f(Pa,Qi($S),n))}(l(iS,q.blockNumber,Y,r))}return h(xS,t.web3Context,Q,t.userInfo,t.blocknumOnInit,t.eventsWaitingForChatHistory)}(),i=Z.a,o=Z.b,u=Z.c,ee=function(){return"Nothing"===i.$?f(So,t.eventsWaitingForChatHistory,F([L(q.blockNumber,Y)])):mr}(),s=U(t,{chatHistoryModel:i,eventsWaitingForChatHistory:ee,secureCommInfo:W,trade:Q}),x=o?AS(s):Ao;return d(Cm,s,x,Ro,f(So,f(Pa,ga,aS(F([X]))),u));case"ExpandPhase":var te=e.a;return ZS(U(t,{expandedPhase:te}));case"ToggleChat":var re=!t.showChatHistory;return ZS(U(t,{showChatHistory:re}));case"ToggleStatsModal":var ne=!t.showStatsModal;return ZS(U(t,{showStatsModal:ne}));case"ViewUserHistory":var ae=e.a,ie=t.trade;if("LoadedTrade"===ie.$){var S=ie.a;return d(Cm,t,Ao,Ro,F([ha(f(_f,S.parameters.initiatorAddress,ae))]))}return d(Cm,t,Ao,Ro,F([ga(f(Xp,"Trying to view a user's history for a not-yet-loaded Trade",t.trade))]));case"CommitClicked":var S=e.a,E=e.b,oe=e.c;return ZS(U(t,{txChainStatus:ci(l(HS,S,E,oe))}));case"AbortAction":return ZS(U(t,{txChainStatus:fi}));case"ConfirmCommit":var S=e.a,E=e.b,oe=e.c,ue=function(){var e=t.web3Context.factoryType;if("Native"===e.$)return d(CS,t.web3Context,S,E.address,E.commPubkey);var r=e.a,n=function(){var e=Pf(l(cd,ad(r),S.creationInfo.address,oe)),t={onBroadcast:fi,onMined:fi,onSign:ci(OS)};return f(xf,t,e)}(),a=t.allowance;if("Just"===a.$){var i=a.a;return $(f(Ou,i,Hf(wb(S.parameters))),Ca)?L(ci(US),n):d(CS,t.web3Context,S,E.address,E.commPubkey)}return L(ci(US),n)}(),w=ue.a,I=ue.b;return d(Cm,U(t,{txChainStatus:w}),Ao,I,mr);case"ContractActionClicked":var se=e.a;if($(se,zS)||$(se,YS)){var ce=JS(se),fe=t;e=ce,t=fe;continue e}return ZS(U(t,{txChainStatus:ci(KS(se))}));case"StartContractAction":var le=e.a,de=function(){var e=t.trade;if("LoadedTrade"!==e.$){var r=e;return P(t.txChainStatus,Ro,F([ga(f(Xp,"Trying to handle StartContractAction msg for a not-yet-loaded Trade",r))]))}var n=e.a;switch(le.$){case"Recall":var a=Pf($m(n.creationInfo.address));return P(ci(PS(YS)),f(xf,hS(YS),a),mr);case"Claim":var a=Pf(Nm(n.creationInfo.address));return P(ci(PS(FS)),f(xf,hS(FS),a),mr);case"Abort":var a=Pf(Bm(n.creationInfo.address));return P(ci(PS(_S)),f(xf,hS(_S),a),mr);case"Release":var a=Pf(xm(n.creationInfo.address));return P(ci(PS(WS)),f(xf,hS(WS),a),mr);case"Burn":var a=Pf(km(n.creationInfo.address));return P(ci(PS(MS)),f(xf,hS(MS),a),mr);default:var a=Pf(Rf(n.creationInfo.address));return P(ci(PS(zS)),f(xf,hS(zS),a),mr)}}(),w=de.a,I=de.b,u=de.c;return d(Cm,U(t,{txChainStatus:w}),Ao,I,u);case"ApproveSigned":var he=e.a;if("Ok"===he.$){var pe=he.a;return ZS(U(t,{txChainStatus:ci(DS(pe))}))}var V=he.a;return d(Cm,U(t,{txChainStatus:fi}),Ao,Ro,F([ga(f(ng,"approve",V))]));case"CommitSigned":var he=e.a;if("Ok"===he.$){var pe=he.a;return ZS(U(t,{txChainStatus:ci(VS(pe))}))}var V=he.a;return d(Cm,U(t,{txChainStatus:fi}),Ao,Ro,F([ga(f(ng,"commit",V))]));case"CommitMined":return ZS(U(t,{txChainStatus:fi}));case"ActionSigned":var se=e.a,he=e.b;if("Ok"===he.$){var pe=he.a;return ZS(U(t,{txChainStatus:ci(f(LS,se,pe))}))}var V=he.a;return d(Cm,U(t,{txChainStatus:fi}),Ao,Ro,F([ga(f(ng,XS(se),V))]));case"ActionMined":var se=e.a;return ZS(U(t,{txChainStatus:fi}));case"EventSentryMsg":var ge=e.a,ve=f(PE,ge,t.eventSentry),ye=ve.a,x=ve.b;return d(Cm,U(t,{eventSentry:ye}),x,Ro,mr);case"ChatHistoryMsg":var me=e.a,be=t.chatHistoryModel;if("Just"===be.$){var Ce=be.a,Se=f(fS,me,Ce),Ee=U(t,{chatHistoryModel:ci(Se.model)}),c=Se.shouldCallDecrypt?AS(t):Ao,Te=function(){var e=Se.maybeMessageSubmit;if("Just"===e.$){var r=e.a,n=t.secureCommInfo;if("LoadedCommInfo"===n.$){var a=n.a;return L(pS(f(IC,r,a)),fi)}return L(Ao,ci(f(Xp,"Trying to encrypt, but commInfo is not loaded",n)))}return L(Ao,fi)}(),we=Te.a,Ie=Te.b;return d(Cm,Ee,Io(F([c,we])),Ro,O(f(Xi,$S,Se.appCmds),f(yc,mr,f(jf,ME,f(jf,ga,Ie)))))}return d(Cm,t,Ao,Ro,F([ga(f(Xp,"Got a chat history message, but there is no chat history model!",me))]));case"EncryptionFinished":var Ae=e.a,Be=f(th,wC,EC(Ae)),ke=P(t.userInfo,t.trade,Be);if("Ok"===ke.c.$){if("Just"===ke.a.$&&"LoadedTrade"===ke.b.$){var E=ke.a.a,g=ke.b.a,Ne=ke.c.a,Re=f(Tb,g,E.address);if("Nothing"===Re.$)return d(Cm,t,Ao,Ro,F([ga(f(Xp,"Trying to encrypt, but the user is not involved in this trade.",fi))]));var $e=Re.a,xe=function(){return Pf("Initiator"===$e.$?f(Rm,g.creationInfo.address,Ne):f(_m,g.creationInfo.address,Ne))}();return d(Cm,t,Ao,f(xf,{onBroadcast:fi,onMined:fi,onSign:fi},xe),mr)}var _e=ke.a,Le=ke.b;return d(Cm,t,Ao,Ro,F([ga(f(Xp,"Encryption successful, but the user or trade is no longer valid.",L(_e,Le)))]))}var Pe=ke.c.a;return d(Cm,t,Ao,Ro,F([ga(f(Xp,"Error translating JS encryption result into Elm.",Pe))]));case"MessageSubmitMined":if("Ok"===e.a.$){e.a.a;return ZS(t)}var V=e.a.a;return d(Cm,t,Ao,Ro,F([ga(f(tg,"message",V))]));default:return d(Cm,t,Ao,Ro,F([va]))}}),VE=function(e){if("Token"===e.$){if("EthDai"===e.a.$){e.a;return"Ethereum Dai"}e.a;return"Kovan Dai"}switch(e.a.$){case"Eth":e.a;return"Ethereum Eth";case"Kovan":e.a;return"Kovan Eth";default:e.a;return"xDai"}},KE=function(e){return{$:"EventSentryMsg",a:e}},HE=n(function(e,t,r){return{invalid:r,loaded:t,total:e}}),jE=function(e){var t=f(Im,KE,e.httpProvider),r=t.a,n=t.b;return P({dataFetchStatus:l(HE,fi,0,0),eventSentry:r,trades:Ga,web3Context:e},n,F([d(ed,"tradeCache init","processing",VE(e.factoryType),0)]))},qE=function(e){return{data:ci(f(Nf,"numTrades()",mr)),decoder:Zo(qd),from:fi,gas:fi,gasPrice:fi,nonce:fi,to:ci(e),value:fi}},GE=r(function(e,t){return f(yp,t,f(ap,e.httpProvider,qE(nd(e.factoryType))))}),zE=function(e){return{$:"InitialNumTradesFetched",a:e}},YE=function(e){return f(GE,e.web3Context,zE)},WE=function(e){var t=jE(e),r=t.a,n=t.b,a=t.c;return P(r,Io(F([n,YE(r)])),a)},JE=r(function(e,t){return{address:e,blocknum:t}}),QE=n(function(e,t,r){return function(e){return L(e.a,e.b)}(d(UE,!0,e,t,r))}),XE=n(function(e,t,r){var n=function(e){return r(f(Xd,eb,e).returnData)},a={address:t.address,fromBlock:NE(t.blocknum),toBlock:NE(t.blocknum),topics:F([ci(bb("Initiated(string,string)"))])};return l(QE,n,e,a)}),ZE=n(function(e,t,r){var n=e(t);if("Just"===n.$){var a=n.a;return f(Na,a,r)}return r}),eT=r(function(e,t){return l(La,ZE(e),mr,t)}),tT=function(e){return f(eT,function(e){if("LoadedTrade"===e.$){var t=e.a;return ci(t)}return fi},Ta(e.trades))},rT=function(e){return f($a,r(function(t,r){return e(t)?r+1:r}),0)},nT=function(e){return f(rT,Qa(Ab),Ta(e.trades))},aT=function(e){return U(e,{dataFetchStatus:U(e.dataFetchStatus,{invalid:nT(e),loaded:wi(tT(e))})})},iT=n(function(e,t,r){return{appCmds:r,cmd:t,tradeCache:e}}),oT=r(function(e,t){var r=f(Dc,e,t.trades);if("Just"===r.$){var n=(r.a,l(Vc,e,Ab,t.trades));return l(iT,aT(U(t,{trades:n})),Ao,mr)}return l(iT,t,Ao,F([ga(f(Xp,"markTradeInvalid ran into an out-of-range error",L(e,t.trades)))]))}),uT=n(function(e,t,r){var n=f(Dc,e,r.trades);if("Just"===n.$){var a=n.a,i=f(Pb,t,a),o=l(Vc,e,i,r.trades);return L(aT(U(r,{trades:o})),mr)}return L(r,F([f(Xp,"updateTradeAddress ran into an out-of-range error",L(e,r.trades))]))}),sT=n(function(e,t,r){var n=f(Dc,e,r.trades);if("Just"===n.$){var a=n.a,i=f(Db,t,a),o=l(Vc,e,i,r.trades);return l(iT,aT(U(r,{trades:o})),Ao,mr)}return l(iT,r,Ao,F([ga(f(Xp,"updateTradeParameters ran into an out-of-range error",L(e,r.trades)))]))}),cT=n(function(e,t,r){var n=f(Dc,e,r.trades);if("Just"===n.$){var a=n.a,i=f(Ub,t,a),o=l(Vc,e,i,r.trades);return l(iT,aT(U(r,{trades:o})),Ao,mr)}return l(iT,r,Ao,F([ga(f(Xp,"updateTradePhaseTimeInfo ran into an out-of-range error",L(e,r.trades)))]))}),fT=n(function(e,t,r){var n=f(Dc,e,r.trades);if("Just"===n.$){var a=n.a,i=f(Ob,t,a),o=l(Vc,e,i,r.trades);return l(iT,aT(U(r,{trades:o})),Ao,mr)}return l(iT,r,Ao,F([ga(f(Xp,"updateTradeState ran into an out-of-range error",L(e,r.trades)))]))}),lT=n(function(e,t,r){var n=f(Dc,e,r.trades);if("Just"===n.$){var a=n.a,i=f(Mb,t,a),o=l(Vc,e,i,r.trades);return l(iT,aT(U(r,{trades:o})),Ao,mr)}return l(iT,r,Ao,F([ga(f(Xp,"updateTTPaymentMethods ran into an out-of-range error",L(e,r.trades)))]))}),dT=r(function(e,t){return{$:"CreationInfoFetched",a:e,b:t}}),hT=r(function(e,t){return{$:"InitiatedEventDataFetched",a:e,b:t}}),pT=function(e){return{$:"NumTradesFetchedAgain",a:e}},gT=r(function(e,t){return{$:"ParametersFetched",a:e,b:t}}),vT=r(function(e,t){return{$:"PhaseStartInfoFetched",a:e,b:t}}),yT=r(function(e,t){return{$:"StateFetched",a:e,b:t}}),mT=function(e){return l(iT,e,Ao,mr)},bT=r(function(e,t){switch(e.$){case"InitialNumTradesFetched":var r=e.a;if("Ok"===r.$){var n=r.a,a=yC(n),i=CC(f(Pa,tm,f(Bi,0,a-1))),o=Io(f(Pa,function(e){return l(vm,t.web3Context,ku(e),dT(e))},f(Bi,0,a-1)));return l(iT,U(t,{dataFetchStatus:l(HE,ci(a),0,0),trades:i}),o,mr)}var u=r.a;return l(iT,t,Ao,F([ga(f(eg,"Factory numTrades",u))]));case"CheckForNewTrades":return l(iT,t,f(GE,t.web3Context,pT),mr);case"NumTradesFetchedAgain":var r=e.a,s=L(r,t.dataFetchStatus.total);if("Ok"===s.a.$){if("Just"===s.b.$){var n=s.a.a,c=s.b.a,d=yC(n);if(_(c,d)<0){var p=t.dataFetchStatus,o=Io(f(Pa,function(e){return l(vm,t.web3Context,ku(e),dT(e))},f(Bi,c,d-1))),g=CC(f(Pa,tm,f(Bi,c,d-1)));return l(iT,U(t,{dataFetchStatus:U(p,{total:ci(d)}),trades:f(rS,t.trades,g)}),o,mr)}return mT(t)}s.b;return l(iT,t,Ao,F([ga(f(Xp,"Trying to fetch additional trades, but there is an unexpected Nothing in the existing numTrades.",""))]))}var u=s.a.a;return l(iT,t,Ao,F([ga(f(eg,"Factory numTrades",u))]));case"CreationInfoFetched":var v=e.a,r=e.b;if("Ok"===r.$){var y=r.a,m=f(JE,y.address_,yC(y.blocknum)),b=l(XE,t.eventSentry,m,hT(v)),C=b.a,S=b.b,E=Io(F([h(vC,t.web3Context,m.address,gT(v),yT(v),vT(v)),S])),T=l(uT,v,m,t),w=T.a,I=T.b;return l(iT,aT(U(w,{eventSentry:C})),E,f(Pa,ga,I))}var u=r.a;return l(iT,t,Ao,F([ga(f(eg,"creationInfo",u))]));case"ParametersFetched":var v=e.a,r=e.b;if("Err"===r.$){var A=r.a;return l(iT,t,Ao,F([ga(f(eg,"parameters",A))]))}if("Ok"===r.a.$){var B=r.a.a;return l(sT,v,B,t)}var k=r.a.a;return l(iT,t,Ao,F([ga(f(Xp,"Can't decode fetched trade parameters",k))]));case"StateFetched":var v=e.a,r=e.b;if("Ok"===r.$&&"Just"===r.a.$){var N=r.a.a;return l(fT,v,N,t)}return l(iT,t,Ao,F([ga(f(tE,"state",r))]));case"PhaseStartInfoFetched":var v=e.a,r=e.b;if("Ok"===r.$&&"Just"===r.a.$){var R=r.a.a;return l(cT,v,R,t)}return l(iT,t,Ao,F([ga(f(tE,"phaseStartInfo",r))]));case"InitiatedEventDataFetched":var v=e.a,r=e.b;if("Ok"===r.$){var $=r.a,x=Hm($.terms);if("Ok"===x.$){var P=x.a;return l(lT,v,P,t)}var D=x.a;return f(oT,v,t)}var D=r.a;return l(iT,t,Ao,F([ga(f(Xp,"Error decoding initiated event",D))]));default:var O=e.a,M=f(PE,O,t.eventSentry),V=M.a,E=M.b;return l(iT,U(t,{eventSentry:V}),E,mr)}}),CT=function(e){return{$:"AgentHistoryMsg",a:e}},ST=function(e){return{$:"AppCmd",a:e}},ET={$:"BetaLandingPage"},TT={$:"ConnectToWeb3"},wT=function(e){return{$:"MarketplaceMsg",a:e}},IT=function(e){return{$:"TradeCacheMsg",a:e}},AT=r(function(e,t){return f(Nn,e,zd(t))}),BT=function(e){return f(AT,"href",rt(e))},kT=Rn("rel"),NT=AT("target"),RT=function(e){return{$:"Height",a:e}},$T=RT,xT={$:"Content"},_T=xT,LT=function(e){return{$:"Width",a:e}},PT=LT,DT=function(e){return{$:"Attr",a:e}},UT=function(e){return{$:"NodeName",a:e}},OT=function(e){return{$:"Unkeyed",a:e}},MT={$:"AsEl"},FT=MT,VT=r(function(e,t){return{$:"Field",a:e,b:t}}),KT=f(VT,0,0),HT={$:"NoNearbyChildren"},jT={above:"a",active:"atv",alignBottom:"ab",alignCenterX:"cx",alignCenterY:"cy",alignContainerBottom:"acb",alignContainerCenterX:"accx",alignContainerCenterY:"accy",alignContainerRight:"acr",alignLeft:"al",alignRight:"ar",alignTop:"at",alignedHorizontally:"ah",alignedVertically:"av",any:"s",behind:"bh",below:"b",bold:"w7",borderDashed:"bd",borderDotted:"bdt",borderNone:"bn",borderSolid:"bs",capturePointerEvents:"cpe",clip:"cp",clipX:"cpx",clipY:"cpy",column:"c",container:"ctr",contentBottom:"cb",contentCenterX:"ccx",contentCenterY:"ccy",contentLeft:"cl",contentRight:"cr",contentTop:"ct",cursorPointer:"cptr",cursorText:"ctxt",focus:"fcs",fullSize:"fs",grid:"g",hasBehind:"hbh",heightContent:"hc",heightFill:"hf",heightFillPortion:"hfp",hover:"hv",imageContainer:"ic",inFront:"fr",inputMultiline:"iml",inputText:"it",italic:"i",nearby:"nb",noTextSelection:"notxt",onLeft:"ol",onRight:"or",opaque:"oq",overflowHidden:"oh",page:"pg",paragraph:"p",passPointerEvents:"ppe",root:"ui",row:"r",scrollbars:"sb",scrollbarsX:"sbx",scrollbarsY:"sby",seButton:"sbt",single:"e",sizeByCapital:"cap",spaceEvenly:"sev",strike:"sk",text:"t",textCenter:"tc",textExtraBold:"w8",textExtraLight:"w2",textHeavy:"w9",textJustify:"tj",textJustifyAll:"tja",textLeft:"tl",textLight:"w3",textMedium:"w5",textNormalWeight:"w4",textRight:"tr",textSemiBold:"w6",textThin:"w1",textUnitalicized:"tun",transition:"ts",transparent:"clr",underline:"u",widthContent:"wc",widthExact:"we",widthFill:"wf",widthFillPortion:"wfp",wrapped:"wrp"},qT=jT.any+" "+jT.column,GT=jT.any+" "+jT.grid,zT=jT.any+" "+jT.page,YT=jT.any+" "+jT.paragraph,WT=jT.any+" "+jT.row,JT=jT.any+" "+jT.single,QT=function(e){switch(e.$){case"AsRow":return WT;case"AsColumn":return qT;case"AsEl":return JT;case"AsGrid":return GT;case"AsParagraph":return YT;default:return zT}},XT=function(e){return{$:"Keyed",a:e}},ZT={$:"NoStyleSheet"},ew=r(function(e,t){switch(t.$){case"NoNearbyChildren":return e;case"ChildrenBehind":var r=t.a;return O(r,e);case"ChildrenInFront":var n=t.a;return O(e,n);default:var r=t.a,n=t.b;return O(r,O(e,n))}}),tw=n(function(e,t,r){switch(r.$){case"NoNearbyChildren":return t;case"ChildrenBehind":var n=r.a;return O(f(Pa,function(t){return L(e,t)},n),t);case"ChildrenInFront":var a=r.a;return O(t,f(Pa,function(t){return L(e,t)},a));default:var n=r.a,a=r.b;return O(f(Pa,function(t){return L(e,t)},n),O(t,f(Pa,function(t){return L(e,t)},a)))}}),rw={$:"AsParagraph"},nw=rw,aw=Tn("div"),iw=Tn("p"),ow=Tn("s"),uw=Tn("u"),sw=AT("className"),cw=function(e){return In(Ze(e))},fw=function(e){return Tn(Ze(e))},lw=function(e){return{$:"Flag",a:e}},dw=function(e){return{$:"Second",a:e}},hw=function(e){return e>31?dw(1< .ctr > ."+jT.any+" {\n border: 4px dashed rgb(0, 151, 167) !important;\n}\n\n",pI="@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {"+Pw(jT.any)+Pw(jT.row)+" > "+Pw(jT.any)+" { flex-basis: auto !important; } "+Pw(jT.any)+Pw(jT.row)+" > "+Pw(jT.any)+Pw(jT.container)+" { flex-basis: auto !important; }}\n\n/* General Input Reset */\ninput[type=range] {\n -webkit-appearance: none; /* Hides the slider so that custom slider can be made */\n /* width: 100%; Specific width is required for Firefox. */\n background: transparent; /* Otherwise white in Chrome */\n position:absolute;\n left:0;\n top:0;\n z-index:10;\n width: 100%;\n outline: dashed 1px;\n height: 100%;\n opacity: 0;\n}\n\n/* Hide all syling for track */\ninput[type=range]::-moz-range-track {\n background: transparent;\n cursor: pointer;\n}\ninput[type=range]::-ms-track {\n background: transparent;\n cursor: pointer;\n}\ninput[type=range]::-webkit-slider-runnable-track {\n background: transparent;\n cursor: pointer;\n}\n\n/* Thumbs */\ninput[type=range]::-webkit-slider-thumb {\n -webkit-appearance: none;\n opacity: 0.5;\n width: 80px;\n height: 80px;\n background-color: black;\n border:none;\n border-radius: 5px;\n}\ninput[type=range]::-moz-range-thumb {\n opacity: 0.5;\n width: 80px;\n height: 80px;\n background-color: black;\n border:none;\n border-radius: 5px;\n}\ninput[type=range]::-ms-thumb {\n opacity: 0.5;\n width: 80px;\n height: 80px;\n background-color: black;\n border:none;\n border-radius: 5px;\n}\ninput[type=range][orient=vertical]{\n writing-mode: bt-lr; /* IE */\n -webkit-appearance: slider-vertical; /* WebKit */\n}\n"+hI,gI=function(e){return{$:"Intermediate",a:e}},vI=r(function(e,t){return gI({closing:t,others:mr,props:mr,selector:e})}),yI=r(function(e,t){var n=e.a,a=r(function(e,t){switch(e.$){case"Prop":var r=e.a,a=e.b;return U(t,{props:f(Na,L(r,a),t.props)});case"Supports":var i=e.a,o=i.a,u=i.b,s=e.b;return U(t,{others:f(Na,gI({closing:"\n}",others:mr,props:s,selector:"@supports ("+o+":"+u+") {"+n.selector}),t.others)});case"Adjacent":var c=e.a,l=e.b;return U(t,{others:f(Na,f(yI,f(vI,n.selector+" + "+c,""),l),t.others)});case"Child":var d=e.a,h=e.b;return U(t,{others:f(Na,f(yI,f(vI,n.selector+" > "+d,""),h),t.others)});case"Descriptor":var p=e.a,g=e.b;return U(t,{others:f(Na,f(yI,f(vI,O(n.selector,p),""),g),t.others)});default:var v=e.a;return U(t,{others:f(Na,f(yI,f(vI,n.selector,""),v),t.others)})}});return gI(l(La,a,n,t))}),mI=O(pI,function(e){var t=function(e){return Sl(f(Pa,function(e){return e.a+":"+e.b+";"},e))},n=function(e){return e.props.b?e.selector+"{"+t(e.props)+e.closing+"}":""},a=function(e){var t=e.a;return O(n(t),Sl(f(Pa,a,t.others)))};return Sl(f(Pa,a,l(La,r(function(e,t){var r=e.a,n=e.b;return f(Na,f(yI,f(vI,r,""),n),t)}),mr,e)))}(O(fI,dI))),bI=l(fw,"style",mr,F([Uw(mI)])),CI=function(e){switch(e.$){case"Serif":return"serif";case"SansSerif":return"sans-serif";case"Monospace":return"monospace";case"Typeface":var t=e.a;return'"'+t+'"';case"ImportFont":var t=e.a;e.b;return'"'+t+'"';default:var t=e.a.name;return'"'+t+'"'}},SI=function(e){switch(e.$){case"VariantActive":var t=e.a;return"smcp"===t;case"VariantOff":var t=e.a;return!1;default:var t=e.a,r=e.b;return"smcp"===t&&1===r}},EI=function(e){if("FontWith"===e.$){var t=e.a;return f(Sd,SI,t.variants)}return!1},TI=n(function(e,t,r){var n=t.a,a=t.b;return e?r+"\n "+n+": "+a+" !important;":r+"\n "+n+": "+a+";"}),wI=r(function(e,t){return e+" {"+f($i,"",f(Pa,function(e){return e.a+": "+e.b+";"},t))+"}"}),II=n(function(e,t,r){var n=r.a,a=r.b;return F([f(wI,"."+e+"."+t+", ."+e+" ."+t,n),f(wI,"."+e+"."+t+"> ."+jT.text+", ."+e+" ."+t+" > ."+jT.text,a)])}),AI=n(function(e,t,r){var n=t.a,a=t.b,i=$(e,r)?e:r+" ."+e;return f($i," ",O(l(II,i,jT.sizeByCapital,a),l(II,i,jT.fullSize,n)))}),BI=r(function(e,t){var r=$(e,t)?e:t+" ."+e;return f($i," ",F([f(wI,"."+r+"."+jT.sizeByCapital+", ."+r+" ."+jT.sizeByCapital,F([L("line-height","1")])),f(wI,"."+r+"."+jT.sizeByCapital+"> ."+jT.text+", ."+r+" ."+jT.sizeByCapital+" > ."+jT.text,F([L("vertical-align","0"),L("line-height","1")]))]))}),kI=function(e){if(e.b){var t=e.a,r=e.b;return ci(l($a,ti,t,r))}return fi},NI=function(e){if(e.b){var t=e.a,r=e.b;return ci(l($a,oc,t,r))}return fi},RI=n(function(e,t,r){return{height:t/e,size:e,vertical:r}}),$I=function(e){var t=F([e.capital,e.baseline,e.descender,e.lowercase]),r=f(yc,e.descender,NI(t)),n=f(yc,e.baseline,NI(f(eh,function(e){return!$(e,r)},t))),a=f(yc,e.capital,kI(t)),i=1/(a-n),o=1-a,u=1/(a-r),s=1-a;return{capital:l(RI,i,a-n,o),full:l(RI,u,a-r,s)}},xI=function(e){return L(F([L("display","block")]),F([L("display","inline-block"),L("line-height",xw(e.height)),L("vertical-align",xw(e.vertical)+"em"),L("font-size",xw(e.size)+"em")]))},_I=function(e){return l($a,r(function(e,t){if("Nothing"===t.$){if("FontWith"===e.$){var r=e.a,n=r.adjustment;if("Nothing"===n.$)return t;var a=n.a;return ci(L(xI(function(e){return e.full}($I(a))),xI(function(e){return e.capital}($I(a)))))}return t}return t}),fi,e)},LI=function(e){var t=function(e){if("ImportFont"===e.$){var t=e.b;return ci("@import url('"+t+"');")}return fi},r=function(e){var r=(e.a,e.b);return f($i,"\n",f(eT,t,r))},n=f(Pa,Xa,e),a=function(e){var t=e.a,r=e.b,a=_I(r);if("Nothing"===a.$)return f($i,"",f(Pa,BI(t),n));var i=a.a;return f($i,"",f(Pa,f(AI,t,i),n))};return O(f($i,"\n",f(Pa,r,e)),f($i,"\n",f(Pa,a,e)))},PI=function(e){switch(e.$){case"VariantActive":var t=e.a;return'"'+t+'"';case"VariantOff":var t=e.a;return'"'+t+'" 0';default:var t=e.a,r=e.b;return'"'+t+'" '+Ri(r)}},DI=function(e){if("FontWith"===e.$){var t=e.a;return ci(f($i,", ",f(Pa,PI,t.variants)))}return fi},UI=function(e){if("FontFamily"===e.$){var t=e.a,r=e.b;return ci(L(t,r))}return fi},OI=function(e){switch(e.$){case"Untransformed":return fi;case"Moved":var t=e.a,r=t.a,n=t.b,a=t.c;return ci("translate3d("+xw(r)+"px, "+xw(n)+"px, "+xw(a)+"px)");default:var i=e.a,o=i.a,u=i.b,s=i.c,c=e.b,f=c.a,l=c.b,d=c.c,h=e.c,p=h.a,g=h.b,v=h.c,y=e.d,m="translate3d("+xw(o)+"px, "+xw(u)+"px, "+xw(s)+"px)",b="scale3d("+xw(f)+", "+xw(l)+", "+xw(d)+")",C="rotate3d("+xw(p)+", "+xw(g)+", "+xw(v)+", "+xw(y)+"rad)";return ci(m+" "+b+" "+C)}},MI=r(function(e,t){var a=n(function(t,r,n){if("Nothing"===t.$)return r+"{"+l($a,TI(!1),"",n)+"\n}";switch(t.a.$){case"Hover":switch(e.hover.$){case"NoHover":return"";case"ForceHover":return r+"-hv {"+l($a,TI(!0),"",n)+"\n}";default:return r+"-hv:hover {"+l($a,TI(!1),"",n)+"\n}"}case"Focus":var a=l($a,TI(!1),"",n);return f($i,"\n",F([r+"-fs:focus {"+a+"\n}","."+jT.any+":focus ~ "+r+"-fs:not(.focus) {"+a+"\n}","."+jT.any+":focus "+r+"-fs {"+a+"\n}",".focusable-parent:focus ~ ."+jT.any+" "+r+"-fs {"+a+"\n}"]));default:return r+"-act:active {"+l($a,TI(!1),"",n)+"\n}"}}),i=r(function(e,t){switch(e.$){case"Style":var r=e.a,o=e.b;return l(a,t,r,o);case"Shadows":var u=e.a,s=e.b;return l(a,t,"."+u,F([f(Rw,"box-shadow",s)]));case"Transparency":var u=e.a,c=e.b,d=f(ti,0,f(oc,1,1-c));return l(a,t,"."+u,F([f(Rw,"opacity",xw(d))]));case"FontSize":var h=e.a;return l(a,t,".font-size-"+Ri(h),F([f(Rw,"font-size",Ri(h)+"px")]));case"FontFamily":var u=e.a,p=e.b,g=f($i,", ",f(eT,DI,p)),v=F([f(Rw,"font-family",f($i,", ",f(Pa,CI,p))),f(Rw,"font-feature-settings",g),f(Rw,"font-variant",f(Sd,EI,p)?"small-caps":"normal")]);return f($i," ",F([l(a,t,"."+u,v)]));case"Single":var y=e.a,s=e.b,m=e.c;return l(a,t,"."+y,F([f(Rw,s,m)]));case"Colored":var y=e.a,s=e.b,b=e.c;return l(a,t,"."+y,F([f(Rw,s,_w(b))]));case"SpacingStyle":var C=e.a,S=e.b,E=e.c,T=Ri(E)+"px",w=Ri(S)+"px",I="."+jT.row,A="."+(jT.wrapped+I),B="."+jT.alignRight,k="."+jT.paragraph,N="."+jT.page,R="."+jT.alignLeft,$=xw(E/2)+"px",x=xw(S/2)+"px",_="."+jT.column,y="."+C,P="."+jT.any;return Sl(F([l(a,t,y+(I+" > ")+P+" + "+P,F([f(Rw,"margin-left",w)])),l(a,t,y+(A+" > ")+P,F([f(Rw,"margin",$+" "+x)])),l(a,t,y+(_+" > ")+P+" + "+P,F([f(Rw,"margin-top",T)])),l(a,t,y+(N+" > ")+P+" + "+P,F([f(Rw,"margin-top",T)])),l(a,t,y+(N+" > ")+R,F([f(Rw,"margin-right",w)])),l(a,t,y+(N+" > ")+B,F([f(Rw,"margin-left",w)])),l(a,t,O(y,k),F([f(Rw,"line-height","calc(1em + "+Ri(E)+"px)")])),l(a,t,"textarea"+y,F([f(Rw,"line-height","calc(1em + "+Ri(E)+"px)")])),l(a,t,y+(k+" > ")+R,F([f(Rw,"margin-right",w)])),l(a,t,y+(k+" > ")+B,F([f(Rw,"margin-left",w)])),l(a,t,y+(k+"::after"),F([f(Rw,"content","''"),f(Rw,"display","block"),f(Rw,"height","0"),f(Rw,"width","0"),f(Rw,"margin-top",Ri(-1*(E/2|0))+"px")])),l(a,t,y+(k+"::before"),F([f(Rw,"content","''"),f(Rw,"display","block"),f(Rw,"height","0"),f(Rw,"width","0"),f(Rw,"margin-bottom",Ri(-1*(E/2|0))+"px")]))]));case"PaddingStyle":var C=e.a,D=e.b,B=e.c,U=e.d,R=e.e,y="."+C;return l(a,t,y,F([f(Rw,"padding",Ri(D)+"px "+Ri(B)+"px "+Ri(U)+"px "+Ri(R)+"px")]));case"BorderWidth":var C=e.a,D=e.b,B=e.c,U=e.d,R=e.e,y="."+C;return l(a,t,y,F([f(Rw,"border-width",Ri(D)+"px "+Ri(B)+"px "+Ri(U)+"px "+Ri(R)+"px")]));case"GridTemplateStyle":var M=e.a,V=n(function(e,t,r){e:for(;;)switch(r.$){case"Px":var n=r.a;return Ri(n)+"px";case"Content":var a=L(e,t);if("Nothing"===a.a.$){if("Nothing"===a.b.$){a.a,a.b;return"max-content"}var i=(a.a,a.b.a);return"minmax(max-content, "+Ri(i)+"px)"}if("Nothing"===a.b.$){var o=a.a.a;a.b;return"minmax("+Ri(o)+"px, max-content)"}var o=a.a.a,i=a.b.a;return"minmax("+Ri(o)+"px, "+Ri(i)+"px)";case"Fill":var u=r.a,s=L(e,t);if("Nothing"===s.a.$){if("Nothing"===s.b.$){s.a,s.b;return Ri(u)+"fr"}var i=(s.a,s.b.a);return"minmax(max-content, "+Ri(i)+"px)"}if("Nothing"===s.b.$){var o=s.a.a;s.b;return"minmax("+Ri(o)+"px, "+Ri(u)+"frfr)"}var o=s.a.a,i=s.b.a;return"minmax("+Ri(o)+"px, "+Ri(i)+"px)";case"Min":var c=r.a,f=r.b,l=ci(c),d=t,h=f;e=l,t=d,r=h;continue e;default:var c=r.a,f=r.b,l=e,d=ci(c),h=f;e=l,t=d,r=h;continue e}}),K=function(e){return l(V,fi,fi,e)},H=(K(M.spacing.a),K(M.spacing.b)),j=function(e){return"grid-template-rows: "+e+";"}(f($i," ",f(Pa,K,M.rows))),q=function(e){return"-ms-grid-rows: "+e+";"}(f($i,H,f(Pa,K,M.columns))),G=function(e){return"-ms-grid-columns: "+e+";"}(f($i,H,f(Pa,K,M.columns))),z="grid-row-gap:"+K(M.spacing.b)+";",Y="grid-column-gap:"+K(M.spacing.a)+";",W=function(e){return"grid-template-columns: "+e+";"}(f($i," ",f(Pa,K,M.columns))),y=".grid-rows-"+f($i,"-",f(Pa,Iw,M.rows))+"-cols-"+f($i,"-",f(Pa,Iw,M.columns))+"-space-x-"+Iw(M.spacing.a)+"-space-y-"+Iw(M.spacing.b),J=y+"{"+W+j+Y+z+"}",Q="@supports (display:grid) {"+J+"}",X=y+"{"+G+q+"}";return O(X,Q);case"GridPosition":var Z=e.a,ee=f($i," ",F(["-ms-grid-row: "+Ri(Z.row)+";","-ms-grid-row-span: "+Ri(Z.height)+";","-ms-grid-column: "+Ri(Z.col)+";","-ms-grid-column-span: "+Ri(Z.width)+";"])),te=f($i," ",F(["grid-row: "+Ri(Z.row)+" / "+Ri(Z.row+Z.height)+";","grid-column: "+Ri(Z.col)+" / "+Ri(Z.col+Z.width)+";"])),y=".grid-pos-"+Ri(Z.row)+"-"+Ri(Z.col)+"-"+Ri(Z.width)+"-"+Ri(Z.height),J=y+"{"+te+"}",Q="@supports (display:grid) {"+J+"}",X=y+"{"+ee+"}";return O(X,Q);case"PseudoSelector":var y=e.a,re=e.b;return f($i," ",f(Pa,function(e){return f(i,e,ci(y))},re));default:var ne=e.a,m=OI(ne),y=Bw(ne),ae=L(y,m);if("Just"===ae.a.$&&"Just"===ae.b.$){var C=ae.a.a,ie=ae.b.a;return l(a,t,"."+C,F([f(Rw,"transform",ie)]))}return""}}),o=r(function(e,t){return{rules:O(t.rules,f(i,e,fi)),topLevel:function(){var r=UI(e);if("Nothing"===r.$)return t.topLevel;var n=r.a;return f(Na,n,t.topLevel)}()}}),u=l($a,o,{rules:"",topLevel:mr},t),s=u.topLevel,c=u.rules;return O(LI(s),c)}),FI=r(function(e,t){return l(fw,"style",mr,F([Uw(f(MI,e,t))]))}),VI=a(function(e,t,r,n){return e?f(Na,L("static-stylesheet",bI),f(Na,L("dynamic-stylesheet",f(FI,t,l($a,Nw,L(wm,F([Dw(t.focus)])),r).b)),n)):f(Na,L("dynamic-stylesheet",f(FI,t,l($a,Nw,L(wm,F([Dw(t.focus)])),r).b)),n)}),KI=a(function(e,t,r,n){return e?f(Na,bI,f(Na,f(FI,t,l($a,Nw,L(wm,F([Dw(t.focus)])),r).b),n)):f(Na,f(FI,t,l($a,Nw,L(wm,F([Dw(t.focus)])),r).b),n)}),HI=o(function(e,t,n,a,i,o){var u=r(function(e,t){if("Keyed"===a.$){var r=a.a;return l(cw,e,t,function(){switch(i.$){case"NoStyleSheet":return r;case"OnlyDynamic":var e=i.a,t=i.b;return d(VI,!1,e,t,r);default:var e=i.a,t=i.b;return d(VI,!0,e,t,r)}}())}var n=a.a;return f(function(){switch(e){case"div":return aw;case"p":return iw;default:return fw(e)}}(),t,function(){switch(i.$){case"NoStyleSheet":return n;case"OnlyDynamic":var e=i.a,t=i.b;return d(KI,!1,e,t,n);default:var e=i.a,t=i.b;return d(KI,!0,e,t,n)}}())}),s=function(){switch(t.$){case"Generic":return f(u,"div",n);case"NodeName":var e=t.a;return f(u,e,n);default:var e=t.a,r=t.b;return l(fw,e,n,F([f(u,r,F([sw(jT.any+" "+jT.single)]))]))}}();switch(o.$){case"AsRow":return f(Cw,Ew,e)&&!f(Cw,Sw,e)?s:f(Cw,gw,e)?f(uw,F([sw(f($i," ",F([jT.any,jT.single,jT.container,jT.contentCenterY,jT.alignContainerRight])))]),F([s])):f(Cw,vw,e)?f(ow,F([sw(f($i," ",F([jT.any,jT.single,jT.container,jT.contentCenterY,jT.alignContainerCenterX])))]),F([s])):s;case"AsColumn":return f(Cw,bw,e)&&!f(Cw,mw,e)?s:f(Cw,yw,e)?f(ow,F([sw(f($i," ",F([jT.any,jT.single,jT.container,jT.alignContainerCenterY])))]),F([s])):f(Cw,pw,e)?f(uw,F([sw(f($i," ",F([jT.any,jT.single,jT.container,jT.alignContainerBottom])))]),F([s])):s;default:return s}}),jI=Uw,qI=function(e){return f(aw,F([sw(f($i," ",F([jT.any,jT.text,jT.widthContent,jT.heightContent])))]),F([jI(e)]))},GI=function(e){return l(fw,"div",F([sw(f($i," ",F([jT.any,jT.text,jT.widthFill,jT.heightFill])))]),F([Uw(e)]))},zI=n(function(e,t,n){var a=r(function(t,r){var n=t.a,a=t.b,i=r.a,o=r.b;switch(a.$){case"Unstyled":var u=a.a;return $(e,nw),L(f(Na,L(n,u(e)),i),o);case"Styled":var s=a.a;return $(e,nw),L(f(Na,L(n,f(s.html,ZT,e)),i),su(o)?s.styles:O(s.styles,o));case"Text":var c=a.a;return L(f(Na,L(n,$(e,FT)?GI(c):qI(c)),i),o);default:return L(i,o)}}),i=r(function(t,r){var n=r.a,a=r.b;switch(t.$){case"Unstyled":var i=t.a;return $(e,nw),L(f(Na,i(e),n),a);case"Styled":var o=t.a;return $(e,nw),L(f(Na,f(o.html,ZT,e),n),su(a)?o.styles:O(o.styles,a));case"Text":var u=t.a;return L(f(Na,$(e,FT)?GI(u):qI(u),n),a);default:return L(n,a)}});if("Keyed"===t.$){var o=t.a,u=l(La,a,L(mr,mr),o),s=u.a,c=u.b,p=su(c)?n.styles:O(n.styles,c);if(p.b){var g=p;return qi({html:d(HI,n.has,n.node,n.attributes,XT(l(tw,"nearby-element-pls",s,n.children))),styles:g})}return zi(h(HI,n.has,n.node,n.attributes,XT(l(tw,"nearby-element-pls",s,n.children)),ZT))}var v=t.a,y=l(La,i,L(mr,mr),v),m=y.a,c=y.b,p=su(c)?n.styles:O(n.styles,c);if(p.b){var g=p;return qi({html:d(HI,n.has,n.node,n.attributes,OT(f(ew,m,n.children))),styles:g})}return zi(h(HI,n.has,n.node,n.attributes,OT(f(ew,m,n.children)),ZT))}),YI=r(function(e,t){return f(Rn,et(e),nt(t))}),WI=r(function(e,t){var r=t.a,n=t.b;if("Flag"===e.$){var a=e.a;return f(VT,a|r,n)}var i=e.a;return f(VT,r,i|n)}),JI=hw(7),QI=hw(36),XI=r(function(e,t){var r=e.a,n=e.b,a=t.a,i=t.b;return f(VT,r|a,n|i)}),ZI=hw(6),eA=hw(38),tA=hw(30),rA=hw(29),nA=r(function(e,t){return{$:"Embedded",a:e,b:t}}),aA=n(function(e,t,r){return{$:"Single",a:e,b:t,c:r}}),iA=function(e){return{$:"Transform",a:e}},oA=function(e){return{$:"ChildrenBehind",a:e}},uA=r(function(e,t){return{$:"ChildrenBehindAndInFront",a:e,b:t}}),sA=function(e){return{$:"ChildrenInFront",a:e}},cA=r(function(e,t){return f(aw,F([sw(function(){switch(e.$){case"Above":return f($i," ",F([jT.nearby,jT.single,jT.above]));case"Below":return f($i," ",F([jT.nearby,jT.single,jT.below]));case"OnRight":return f($i," ",F([jT.nearby,jT.single,jT.onRight]));case"OnLeft":return f($i," ",F([jT.nearby,jT.single,jT.onLeft]));case"InFront":return f($i," ",F([jT.nearby,jT.single,jT.inFront]));default:return f($i," ",F([jT.nearby,jT.single,jT.behind]))}}())]),F([function(){switch(t.$){case"Empty":return Uw("");case"Text":var e=t.a;return qI(e);case"Unstyled":return(0,t.a)(FT);default:return f(t.a.html,ZT,FT)}}()]))}),fA=n(function(e,t,r){var n=f(cA,e,t);switch(r.$){case"NoNearbyChildren":return"Behind"===e.$?oA(F([n])):sA(F([n]));case"ChildrenBehind":var a=r.a;return"Behind"===e.$?oA(f(Na,n,a)):f(uA,a,F([n]));case"ChildrenInFront":var i=r.a;return"Behind"===e.$?f(uA,F([n]),i):sA(f(Na,n,i));default:var a=r.a,i=r.b;return"Behind"===e.$?f(uA,f(Na,n,a),i):f(uA,a,f(Na,n,i))}}),lA=r(function(e,t){switch(t.$){case"Generic":return UT(e);case"NodeName":var r=t.a;return f(nA,r,e);default:var n=t.a,a=t.b;return f(nA,n,a)}}),dA=function(e){switch(e.$){case"Left":return jT.alignedHorizontally+" "+jT.alignLeft;case"Right":return jT.alignedHorizontally+" "+jT.alignRight;default:return jT.alignedHorizontally+" "+jT.alignCenterX}},hA=function(e){switch(e.$){case"Top":return jT.alignedVertically+" "+jT.alignTop;case"Bottom":return jT.alignedVertically+" "+jT.alignBottom;default:return jT.alignedVertically+" "+jT.alignCenterY}},pA=a(function(e,t,r,n){return{$:"FullTransform",a:e,b:t,c:r,d:n}}),gA=function(e){return{$:"Moved",a:e}},vA=r(function(e,t){switch(e.$){case"Untransformed":switch(t.$){case"MoveX":var r=t.a;return gA(P(r,0,0));case"MoveY":var n=t.a;return gA(P(0,n,0));case"MoveZ":var a=t.a;return gA(P(0,0,a));case"MoveXYZ":var i=t.a;return gA(i);case"Rotate":var i=t.a,o=t.b;return d(pA,P(0,0,0),P(1,1,1),i,o);default:var i=t.a;return d(pA,P(0,0,0),i,P(0,0,1),0)}case"Moved":var u=e.a,r=u.a,n=u.b,a=u.c;switch(t.$){case"MoveX":var s=t.a;return gA(P(s,n,a));case"MoveY":var c=t.a;return gA(P(r,c,a));case"MoveZ":var f=t.a;return gA(P(r,n,f));case"MoveXYZ":var i=t.a;return gA(i);case"Rotate":var i=t.a,o=t.b;return d(pA,u,P(1,1,1),i,o);default:var l=t.a;return d(pA,u,l,P(0,0,1),0)}default:var u=e.a,r=u.a,n=u.b,a=u.c,h=e.b,p=e.c,o=e.d;switch(t.$){case"MoveX":var s=t.a;return d(pA,P(s,n,a),h,p,o);case"MoveY":var c=t.a;return d(pA,P(r,c,a),h,p,o);case"MoveZ":var f=t.a;return d(pA,P(r,n,f),h,p,o);case"MoveXYZ":var g=t.a;return d(pA,g,h,p,o);case"Rotate":var v=t.a,y=t.b;return d(pA,u,h,v,y);default:var m=t.a;return d(pA,u,m,p,o)}}}),yA=function(e){switch(e.$){case"Px":var t=e.a,r=Ri(t),n="height-px-"+r;return P(KT,n,F([l(aA,n,"height",r+"px")]));case"Content":return P(f(WI,QI,KT),jT.heightContent,mr);case"Fill":var a=e.a;return 1===a?P(f(WI,bw,KT),jT.heightFill,mr):P(f(WI,bw,KT),jT.heightFillPortion+" height-fill-"+Ri(a),F([l(aA,jT.any+"."+jT.row+" > "+Pw("height-fill-"+Ri(a)),"flex-grow",Ri(1e5*a))]));case"Min":var i=e.a,o=e.b,u="min-height-"+Ri(i),s=l(aA,u,"min-height",Ri(i)+"px"),c=yA(o),d=c.a,h=c.b,p=c.c;return P(f(WI,mw,d),u+" "+h,f(Na,s,p));default:var g=e.a,o=e.b,u="max-height-"+Ri(g),s=l(aA,u,"max-height",Ri(g)+"px"),v=yA(o),d=v.a,h=v.b,p=v.c;return P(f(WI,mw,d),u+" "+h,f(Na,s,p))}},mA=function(e){switch(e.$){case"Px":var t=e.a;return P(KT,jT.widthExact+" width-px-"+Ri(t),F([l(aA,"width-px-"+Ri(t),"width",Ri(t)+"px")]));case"Content":return P(f(WI,eA,KT),jT.widthContent,mr);case"Fill":var r=e.a;return 1===r?P(f(WI,Ew,KT),jT.widthFill,mr):P(f(WI,Ew,KT),jT.widthFillPortion+" width-fill-"+Ri(r),F([l(aA,jT.any+"."+jT.row+" > "+Pw("width-fill-"+Ri(r)),"flex-grow",Ri(1e5*r))]));case"Min":var n=e.a,a=e.b,i="min-width-"+Ri(n),o=l(aA,i,"min-width",Ri(n)+"px"),u=mA(a),s=u.a,c=u.b,d=u.c;return P(f(WI,Sw,s),i+" "+c,f(Na,o,d));default:var h=e.a,a=e.b,i="max-width-"+Ri(h),o=l(aA,i,"max-width",Ri(h)+"px"),p=mA(a),s=p.a,c=p.b,d=p.c;return P(f(WI,Sw,s),i+" "+c,f(Na,o,d))}},bA=hw(27),CA=r(function(e,t){if($(e,bA)){if("Single"!==t.$)return!1;switch(t.c){case"0px":case"1px":case"2px":case"3px":case"4px":case"5px":case"6px":return!0;default:return!1}}else switch(t.$){case"FontSize":var r=t.a;return r>=8&&r<=32;case"PaddingStyle":var n=(t.a,t.b),a=t.c,i=t.d,o=t.e;return $(n,i)&&$(n,a)&&$(n,o)&&n>=0&&n<=24;default:return!1}}),SA=s(function(e,t,r,n,a,i,o,u){e:for(;;){if(!u.b){var s=Bw(n);if("Nothing"===s.$)return{attributes:f(Na,sw(e),i),children:o,has:r,node:t,styles:a};var c=s.a;return{attributes:f(Na,sw(e+" "+c),i),children:o,has:r,node:t,styles:f(Na,iA(n),a)}}var d=u.a,h=u.b;switch(d.$){case"NoAttribute":var p=e,g=t,v=r,y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e;case"Class":var E=d.a,T=d.b;if(f(Cw,E,r)){var p=e,g=t,v=r,y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e}var p=T+" "+e,g=t,v=f(WI,E,r),y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e;case"Attr":var w=d.a,p=e,g=t,v=r,y=n,m=a,b=f(Na,w,i),C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e;case"StyleClass":var E=d.a,I=d.b;if(f(Cw,E,r)){var p=e,g=t,v=r,y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e}if(f(CA,E,I)){var p=kw(I)+" "+e,g=t,v=f(WI,E,r),y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e}var p=kw(I)+" "+e,g=t,v=f(WI,E,r),y=n,m=f(Na,I,a),b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e;case"TransformComponent":var E=d.a,A=d.b,p=e,g=t,v=f(WI,E,r),y=f(vA,n,A),m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e;case"Width":var B=d.a;if(f(Cw,ZI,r)){var p=e,g=t,v=r,y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e}switch(B.$){case"Px":var k=B.a,p=jT.widthExact+" width-px-"+Ri(k)+" "+e,g=t,v=f(WI,ZI,r),y=n,m=f(Na,l(aA,"width-px-"+Ri(k),"width",Ri(k)+"px"),a),b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e;case"Content":var p=e+" "+jT.widthContent,g=t,v=f(WI,eA,f(WI,ZI,r)),y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e;case"Fill":var N=B.a;if(1===N){var p=e+" "+jT.widthFill,g=t,v=f(WI,Ew,f(WI,ZI,r)),y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e}var p=e+" "+jT.widthFillPortion+" width-fill-"+Ri(N),g=t,v=f(WI,Ew,f(WI,ZI,r)),y=n,m=f(Na,l(aA,jT.any+"."+jT.row+" > "+Pw("width-fill-"+Ri(N)),"flex-grow",Ri(1e5*N)),a),b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e;default:var R=mA(B),$=R.a,x=R.b,_=R.c,p=e+" "+x,g=t,v=f(XI,$,r),y=n,m=O(_,a),b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e}case"Height":var L=d.a;if(f(Cw,JI,r)){var p=e,g=t,v=r,y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e}switch(L.$){case"Px":var k=L.a,P=Ri(k)+"px",D="height-px-"+P,p=D+" "+e,g=t,v=f(WI,JI,r),y=n,m=f(Na,l(aA,D,"height ",P),a),b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e;case"Content":var p=jT.heightContent+" "+e,g=t,v=f(WI,QI,f(WI,JI,r)),y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e;case"Fill":var N=L.a;if(1===N){var p=jT.heightFill+" "+e,g=t,v=f(WI,bw,f(WI,JI,r)),y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e}var p=e+" "+jT.heightFillPortion+" height-fill-"+Ri(N),g=t,v=f(WI,bw,f(WI,JI,r)),y=n,m=f(Na,l(aA,jT.any+"."+jT.column+" > "+Pw("height-fill-"+Ri(N)),"flex-grow",Ri(1e5*N)),a),b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e;default:var U=yA(L),$=U.a,x=U.b,_=U.c,p=e+" "+x,g=t,v=f(XI,$,r),y=n,m=O(_,a),b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e}case"Describe":var M=d.a;switch(M.$){case"Main":var p=e,g=f(lA,"main",t),v=r,y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e;case"Navigation":var p=e,g=f(lA,"nav",t),v=r,y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e;case"ContentInfo":var p=e,g=f(lA,"footer",t),v=r,y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e;case"Complementary":var p=e,g=f(lA,"aside",t),v=r,y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e;case"Heading":var F=M.a;if(F<=1){var p=e,g=f(lA,"h1",t),v=r,y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e}if(F<7){var p=e,g=f(lA,"h"+Ri(F),t),v=r,y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e}var p=e,g=f(lA,"h6",t),v=r,y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e;case"Paragraph":var V=function(){switch(t.$){case"Generic":return UT("p");case"NodeName":var e=t.a;return UT(e);default:var r=t.a,n=t.b;return f(nA,r,n)}}(),p=e,g=V,v=r,y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e;case"Button":var p=e,g=t,v=r,y=n,m=a,b=f(Na,f(YI,"role","button"),i),C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e;case"Label":var K=M.a,p=e,g=t,v=r,y=n,m=a,b=f(Na,f(YI,"aria-label",K),i),C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e;case"LivePolite":var p=e,g=t,v=r,y=n,m=a,b=f(Na,f(YI,"aria-live","polite"),i),C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e;default:var p=e,g=t,v=r,y=n,m=a,b=f(Na,f(YI,"aria-live","assertive"),i),C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e}case"Nearby":var H=d.a,j=d.b,_=function(){switch(j.$){case"Empty":return a;case"Text":j.a;return a;case"Unstyled":j.a;return a;default:var e=j.a;return O(a,e.styles)}}(),p=e,g=t,v=r,y=n,m=_,b=i,C=l(fA,H,j,o),S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e;case"AlignX":var q=d.a;if(f(Cw,tA,r)){var p=e,g=t,v=r,y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e}var p=dA(q)+" "+e,g=t,v=function(e){switch(q.$){case"CenterX":return f(WI,vw,e);case"Right":return f(WI,gw,e);default:return e}}(f(WI,tA,r)),y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e;default:var G=d.a;if(f(Cw,rA,r)){var p=e,g=t,v=r,y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e}var p=hA(G)+" "+e,g=t,v=function(e){switch(G.$){case"CenterY":return f(WI,yw,e);case"Bottom":return f(WI,pw,e);default:return e}}(f(WI,rA,r)),y=n,m=a,b=i,C=o,S=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=S;continue e}}}),EA={$:"Untransformed"},TA=EA,wA=a(function(e,t,r,n){return l(zI,e,n,v(SA,QT(e),t,KT,TA,mr,mr,HT,xa(r)))}),IA=function(e){return DT(sw(e))},AA=r(function(e,t){var r=t.url,n=t.label;return d(wA,FT,UT("a"),f(Na,DT(BT(r)),f(Na,DT(kT("noopener noreferrer")),f(Na,DT(NT("_blank")),f(Na,PT(_T),f(Na,$T(_T),f(Na,IA(jT.contentCenterX+" "+jT.contentCenterY),e)))))),OT(F([n])))}),BA=a(function(e,t,r,n){return{$:"Rgba",a:e,b:t,c:r,d:n}}),kA=n(function(e,t,r){return d(BA,e,t,r,1)}),NA=hw(14),RA=n(function(e,t,r){return{$:"Colored",a:e,b:t,c:r}}),$A=r(function(e,t){return{$:"StyleClass",a:e,b:t}}),xA=function(e){var t=e.a,r=e.b,n=e.c,a=e.d;return Aw(t)+"-"+Aw(r)+"-"+Aw(n)+"-"+Aw(a)},_A=function(e){return f($A,NA,l(RA,"fc-"+xA(e),"color",e))},LA={align:Wp,label:"cantConnectNoWeb3",mainParagraphs:F([F([Qp("You need a web3 provider (such as "),f(AA,F([_A(l(kA,0,0,1))]),{label:Qp("Metamask"),url:"https://metamask.io/"}),Qp(") to Connect.")]),F([Qp("Until you connect, DAIHard will operate in read-only mode.")])]),noticeType:rg},PA={align:Wp,label:"invalidUrl",mainParagraphs:F([F([Qp("I don't understand that URL...")]),F([Qp("I'll just set you down here. Maybe check the URL and try again?")])]),noticeType:Zp},DA={align:Wp,label:"wrongWeb3Network",mainParagraphs:F([F([Qp("Make sure your wallet is set to a compatible network.")]),F([Qp(" At the moment DAIHard works on: xDai, the Kovan Ethereum Test Net, or Ethereum Main Net.")])]),noticeType:Zp},UA=Xo(f(yo,Bf,f(yo,jd,_l("Error decoding hex to BigInt")))),OA=function(){return Xo(function(e){switch(e){case"0x0":return di(!1);case"0x1":return di(!0);default:return li("Error decoding "+e+"as bool.")}})}(),MA=function(e){return function(t){return function(r){return function(n){return function(a){return function(i){return function(o){return function(u){return function(s){return function(c){return function(f){return{blockHash:r,blockNumber:n,contractAddress:o,cumulativeGasUsed:i,gasUsed:a,hash:e,index:t,logs:u,logsBloom:s,root:c,status:f}}}}}}}}}}}},FA=function(e){return fE(F([f(Mi,ci,e),Vi(fi)]))},VA=f(hd,FA(f(Md,"status",OA)),f(hd,FA(f(Md,"root",Qo)),l(pE,"logsBloom",Qo,l(pE,"logs",Km(IE),f(hd,FA(f(Md,"contractAddress",gE)),l(pE,"cumulativeGasUsed",UA,l(pE,"gasUsed",UA,l(pE,"blockNumber",om,l(pE,"blockHash",bE,l(pE,"transactionIndex",om,l(pE,"transactionHash",EE,Vi(MA)))))))))))),KA=function(e){var t=e.a;return Bf(t)},HA=f(yo,KA,zd),jA=r(function(e,t){return tp({decoder:VA,method:"eth_getTransactionReceipt",params:F([HA(t)]),url:e})}),qA=n(function(e,t,r){return{$:"TrackTx",a:e,b:t,c:r}}),GA=r(function(e,t){return{$:"TxMined",a:e,b:t}}),zA=r(function(e,t){return{$:"TxSent",a:e,b:t}}),YA=r(function(e,t){return f(jf,function(e){return e.toMsg},f(ag,function(e){return e.b},f(ag,function(e){return e.onMinedTagger},f(Eh,t,e))))}),WA=function(e){return function(t){return function(r){return function(n){return function(a){return function(i){return function(o){return function(u){return function(s){return function(c){return function(f){return{blockHash:r,blockNumber:n,from:i,gas:c,gasPrice:s,hash:e,input:f,nonce:t,to:o,transactionIndex:a,value:u}}}}}}}}}}}},JA=function(e){return fE(F([cE(fi),f(Mi,ci,e)]))},QA=l(pE,"input",Qo,l(pE,"gas",om,l(pE,"gasPrice",UA,l(pE,"value",UA,l(pE,"to",JA(gE),l(pE,"from",gE,l(pE,"transactionIndex",om,l(pE,"blockNumber",JA(om),l(pE,"blockHash",function(e){return f(Wo,function(t){return"0x"===t||"0x0"===t?Vi(fi):f(Ni,function(e){return $(e,D("0"))},Go(t))?Vi(fi):f(Mi,ci,e)},Qo)}(bE),l(pE,"nonce",om,l(pE,"hash",EE,Vi(WA)))))))))))),XA=r(function(e,t){return tp({decoder:QA,method:"eth_getTransactionByHash",params:F([HA(t)]),url:e})}),ZA=r(function(e,t){return{attempts:e,sleep:t}}),eB=r(function(e,t){var r=e.attempts,n=e.sleep,a=r-1;return f(vp,function(e){return a>0?f(op,function(e){return f(eB,f(ZA,a,n),t)},uE(1e3*n)):Qh(e)},t)}),tB=r(function(e,t){return f(op,function(r){return f(eB,{attempts:30,sleep:1},f(XA,e,t))},uE(250))}),rB=r(function(e,t){return f(eB,{attempts:60,sleep:5},f(jA,e,t))}),nB=function(e){return{$:"Mined",a:e}},aB=function(e){return jf(function(t){return U(t,{status:nB(e)})})},iB=function(e){return{$:"Sent",a:e}},oB=function(e){return jf(function(t){return U(t,{status:iB(e)})})},uB=function(e){return{$:"Signed",a:e}},sB=function(e){return jf(function(t){return U(t,{status:uB(e)})})},cB=function(e){return"Nothing"!==e.$},fB=r(function(e,t){var r=t.a;switch(e.$){case"NoOp":return L(xg(r),Ao);case"TxSigned":var n=e.a,a=e.b,i=f(Eh,n,r.txs);if("Just"===i.$){var o=i.a,u=function(){var e=o.onSignedTagger;if("Just"===e.$){var t=e.a;return f(hg,t,Xh(a))}return Ao}(),s=function(e){var t=P(o.onSignedTagger,o.onBroadcastTagger,o.onMinedTagger);if("Just"===t.a.$)return Ao;if("Just"===t.b.$){var r=t.b.a;return f(hg,r,Xh(li(e)))}if("Just"===t.c.$){var n=t.c.a,a=n.a;return f(hg,a,Xh(li(e)))}t.a,t.b,t.c;return Ao};if("Ok"===a.$){var c=a.a,d=cB(o.onBroadcastTagger)||cB(o.onMinedTagger)?f(Dg,r.tagger,f(yp,zA(n),f(tB,r.nodePath,c))):Ao;return L(xg(U(r,{txs:l(Uh,n,sB(c),r.txs)})),Io(F([u,d])))}var h=a.a;return L(xg(r),Io(F([u,s(h)])))}return L(xg(r),Ao);case"TxSent":var n=e.a,p=e.b,g=f(Eh,n,r.txs);if("Just"===g.$){var o=g.a;if("Ok"===p.$){var v=p.a,y=function(){return"Just"===o.onMinedTagger.$?f(Dg,r.tagger,f(yp,GA(n),f(rB,r.nodePath,v.hash))):Ao}(),d=function(){var e=o.onBroadcastTagger;if("Just"===e.$){var t=e.a;return f(hg,t,Xh(di(v)))}return Ao}();return L(xg(U(r,{txs:l(Uh,n,oB(v),r.txs)})),Io(F([d,y])))}var h=p.a,s=function(){var e=L(o.onBroadcastTagger,o.onMinedTagger);if("Just"===e.a.$){var t=e.a.a;return f(hg,t,Xh(li("Error with TxSent stuff")))}if("Just"===e.b.$){var r=e.b.a,n=r.a;return f(hg,n,Xh(li("Error with TxSent stuff")))}e.a,e.b;return Ao}();return L(xg(r),s)}return L(xg(r),Ao);case"TxMined":var n=e.a,m=e.b,b=f(Eh,n,r.txs);if("Just"===b.$){var o=b.a;if("Ok"===m.$){var C=m.a,S=function(){var e=o.onMinedTagger;if("Just"===e.$){if("Nothing"===e.a.b.$){var t=e.a,a=t.a;t.b;return f(hg,a,Xh(di(C)))}var i=e.a,a=i.a,u=i.b.a,s={currentDepth:1,doneWatching:!1,lastCheckedBlock:C.blockNumber,minedInBlock:C.blockNumber,reOrg:!1,stopWatchingAtBlock:C.blockNumber+(u.confirmations-1),txHash:C.hash};return Io(F([f(Dg,r.tagger,f(yp,f(qA,n,s),um(r.nodePath))),f(hg,a,Xh(di(C))),f(hg,u.toMsg,Xh(s))]))}return Ao}();return L(xg(U(r,{txs:l(Uh,n,aB(C),r.txs)})),S)}var h=m.a,E=function(){var e=o.onMinedTagger;if("Just"===e.$){var t=e.a,r=t.a;return f(hg,r,Xh(li("TxReceipt decoding failure")))}return Ao}();return L(xg(r),E)}return L(xg(r),Ao);case"TrackTx":if("Ok"===e.c.$){var n=e.a,T=e.b,w=e.c.a,I=U(T,{currentDepth:w-T.minedInBlock+1,lastCheckedBlock:w});if($(w,T.stopWatchingAtBlock)){var A=f(YA,r.txs,n);if("Just"===A.$){var B=A.a;return L(xg(r),f(hg,B,f(vp,function(e){return Xh(U(I,{doneWatching:!0,reOrg:!0}))},f(op,function(e){return Xh(U(I,{doneWatching:!0}))},f(jA,r.nodePath,T.txHash)))))}return L(xg(r),Ao)}if($(w,T.lastCheckedBlock))return L(xg(r),f(Dg,r.tagger,f(yp,f(qA,n,T),f(op,function(e){return um(r.nodePath)},uE(2e3)))));var k=f(YA,r.txs,n);if("Just"===k.$){var B=k.a;return L(xg(r),Io(F([f(Dg,r.tagger,f(yp,f(qA,n,I),f(op,function(e){return um(r.nodePath)},uE(2e3)))),f(hg,B,Xh(I))])))}return L(xg(r),Ao)}var n=e.a,h=e.c.a;return L(xg(r),Ao);default:var h=e.a;return L(xg(r),Ao)}}),lB=Qt,dB=r(function(e,t){if("Nothing"===e.$)return t;var r=e.a;return t+":"+Ri(r)}),hB=n(function(e,t,r){return"Nothing"===t.$?r:O(r,O(e,t.a))}),pB=function(e){var t=function(){return"Http"===e.protocol.$?"http://":"https://"}();return l(hB,"#",e.fragment,l(hB,"?",e.query,O(f(dB,e.port_,O(t,e.host)),e.path)))},gB=r(function(e,t){if(e<0)return t;var r=kd(f(al,e,t)),n=f(Ys,e,t);if("Nothing"===r.$)return t;var a=r.a;return f(So,n,a)}),vB=r(function(e,t){Yv(t);switch(t.$){case"Home":return L(U(e,{submodel:ET}),Ao);case"Create":var r=f(Zl,e.web3Context,e.userInfo),n=f(Mg,e.txSentry,f(Vg,Vy,r.chainCmd)),a=n.a,i=n.b;return f(mB,f(Xi,Vy,r.appCmds),L(U(e,{submodel:Fy(r.model),txSentry:a}),Io(F([f(Dg,Vy,r.cmd),i]))));case"QuickCreate":var r=f(Iv,e.web3Context,e.userInfo),o=f(Mg,e.txSentry,f(Vg,jy,r.chainCmd)),a=o.a,i=o.b;return f(mB,f(Xi,jy,r.appCmds),L(U(e,{submodel:Hy(r.model),txSentry:a}),Io(F([f(Dg,jy,r.cmd),i]))));case"Trade":var u=t.a,r=l(Am,e.web3Context,e.userInfo,u),s=f(Mg,e.txSentry,f(Vg,Gy,r.chainCmd)),a=s.a,i=s.b;return f(mB,f(Xi,Gy,r.appCmds),L(U(e,{submodel:qy(r.model),txSentry:a}),Io(F([f(Dg,Gy,r.cmd),i]))));case"Marketplace":var c=t.a,h=l(iv,e.web3Context,c,e.userInfo),p=h.a,g=h.b;return L(U(e,{submodel:Ky(p)}),Io(F([f(Dg,wT,g)])));case"AgentHistory":var v=t.a,y=t.b,m=d(Bo,e.web3Context,v,y,e.userInfo),b=m.a,C=m.b;return L(U(e,{submodel:My(b)}),Io(F([f(Dg,CT,C)])));default:return L(f(Eo,PA,e),Ao)}}),yB=r(function(e,t){var r=t.a,n=t.b,a=f(bB,ST(e),r),i=a.a,o=a.b;return L(i,Io(F([n,o])))}),mB=r(function(e,t){var r=t.a,n=t.b;return l($a,yB,L(r,n),e)}),bB=r(function(e,t){switch(e.$){case"AppCmd":var r=e.a;switch(r.$){case"Web3Connect":return f(bB,TT,t);case"GotoRoute":var n=r.a;return L(t,f(Iy,t.key,n));case"GTag":var a=r.a;return L(t,Ny(By(a)));case"UserNotice":var i=r.a;return L(f(Eo,i,t),Ny(By(d(Uf,"user notice","user notice",i.label,0))));case"BrowserNotification":var o=r.a,u=r.b,s=r.c;return L(t,d(bv,$y,o,u,s));default:return L(t,xy(vr))}case"DismissNotice":var c=e.a;return L(U(t,{userNotices:f(gB,c,t.userNotices)}),Ao);case"LinkClicked":var h=e.a,p=function(){if("Internal"===h.$){var e=h.a;return f(wy,t.key,pB(e))}var r=h.a;return lB(r)}();return L(t,p);case"UrlChanged":var g=e.a;return f(CB,g,t);case"GotoRoute":var v=e.a;return L(t,Io(F([Ny(By(d(Uf,"GotoRoute","navigation",Yv(v),0))),f(Iy,t.key,v)])));case"Tick":var y=e.a;return L(U(t,{time:y}),Ao);case"NetworkUpdate":var m=e.a,b=f(Vo,vo,f(Wd,oS,m)),C=f(ag,ao,Wl(b)),S=L(b,C);if("Ok"===S.a.$){if("Just"===S.b.$){var E=S.a.a,T=S.b.a;if($(E,Kg(t.web3Context.factoryType)))return L(t,Ao);var w=Co(T),I=f(Xy,w,t.submodel),A=I.a,B=I.b,k=I.c,N=WE(w),R=N.a,x=N.b,_=N.c;return f(mB,f(Xi,IT,_),L(U(t,{submodel:A,tradeCache:R,web3Context:w}),Io(F([f(Dg,IT,x),function(){if("Just"===k.$){var e=k.a;return f(Iy,t.key,e)}return B}()]))))}S.b;return L(f(Eo,DA,t),Ao)}var P=S.a.a;return L(l(Da,Eo,f(Xp,"Can't decode networkID from Javascript",P),t),Ao);case"ConnectToWeb3":return"NoWeb3"===t.initialWeb3State.$?L(f(Eo,LA,t),Ao):L(t,Ay(vr));case"WalletStatus":var D=e.a,O=function(){var e=D.account;if("Nothing"===e.$)return Ao;var t=e.a;return Ry(f(ky,t,"Deriving keypair for encrypted communication on the DAIHard exchange. ONLY SIGN THIS on https://burnable-tech.github.io/DAIHard/. If you sign this elsewhere, you risk revealing any of your encrypted communication on DAIHard to an attacker."))}();return L(U(t,{userAddress:D.account}),O);case"UserPubkeySet":var M=e.a,V=f(Wd,Qo,M);if("Ok"===V.$){var K=V.a,H=t.userAddress;if("Just"===H.$){var j=H.a,q=ci({address:j,commPubkey:K}),G=f(zy,q,t.submodel),A=G.a,p=G.b;return L(U(t,{submodel:A,userInfo:q}),p)}return L(f(Eo,f(Xp,"User pubkey set, but I can no longer find the user address!",fi),t),Ao)}var z=V.a;return L(l(Da,Eo,f(Xp,"error decoding commPubkey from JS",z),t),Ao);case"CreateMsg":var Y=e.a,W=t.submodel;if("CreateModel"===W.$){var J=W.a,Q=f(Rg,Y,J),X=f(Mg,t.txSentry,f(Vg,Vy,Q.chainCmd)),Z=X.a,ee=X.b;return f(mB,f(Xi,Vy,Q.appCmds),L(U(t,{submodel:Fy(Q.model),txSentry:Z}),Io(F([f(Dg,Vy,Q.cmd),ee]))))}return L(t,Ao);case"QuickCreateMsg":var te=e.a,re=t.submodel;if("QuickCreateModel"===re.$){var ne=re.a,Q=f(Hv,te,ne),ae=f(Mg,t.txSentry,f(Vg,jy,Q.chainCmd)),Z=ae.a,ee=ae.b;return f(mB,f(Xi,jy,Q.appCmds),L(U(t,{submodel:Hy(Q.model),txSentry:Z}),Io(F([f(Dg,jy,Q.cmd),ee]))))}return L(t,Ao);case"TradeMsg":var ie=e.a,oe=t.submodel;if("TradeModel"===oe.$){var ue=oe.a,Q=f(FE,ie,ue),se=f(Mg,t.txSentry,f(Vg,Gy,Q.chainCmd)),Z=se.a,ee=se.b;return f(mB,f(Xi,Gy,Q.appCmds),L(U(t,{submodel:qy(Q.model),txSentry:Z}),Io(F([f(Dg,Gy,Q.cmd),ee]))))}return L(t,Ao);case"MarketplaceMsg":var ce=e.a,fe=t.submodel;if("MarketplaceModel"===fe.$){var le=fe.a,Q=f(mv,ce,le);return f(mB,f(Xi,wT,Q.appCmds),L(U(t,{submodel:Ky(Q.model)}),f(Dg,wT,Q.cmd)))}return L(t,Ao);case"AgentHistoryMsg":var de=e.a,he=t.submodel;if("AgentHistoryModel"===he.$){var pe=he.a,Q=f(Df,de,pe),ge=f(Mg,t.txSentry,f(Vg,CT,Q.chainCmd)),Z=ge.a,ee=ge.b;return f(mB,f(Xi,CT,Q.appCmds),L(U(t,{submodel:My(Q.model),txSentry:Z}),Io(F([f(Dg,CT,Q.cmd),ee]))))}return L(t,Ao);case"TxSentryMsg":var ve=e.a,ye=f(fB,ve,t.txSentry),A=ye.a,me=ye.b;return L(U(t,{txSentry:A}),me);case"TradeCacheMsg":var be=e.a,Q=f(bT,be,t.tradeCache);return L(U(t,{tradeCache:Q.tradeCache}),f(Dg,IT,Q.cmd));case"NoOp":return L(t,Ao);default:var z=e.a;f(kl,"test",z);return L(t,Ao)}}),CB=r(function(e,t){return f(vB,t,Ty(e))}),SB=ze("txIn",lE),EB=qe("txOut",Oa),TB={$:"AllGood"},wB={$:"NoWeb3"},IB=function(e){return{$:"TxSentryMsg",a:e}},AB={$:"WrongNetwork"},BB={align:Wp,label:"noWeb3Provider",mainParagraphs:F([F([Qp("No web3 provider detected. Is "),f(AA,F([_A(l(kA,0,0,1))]),{label:Qp("Metamask"),url:"https://metamask.io/"}),Qp(" or some other web3 provider installed and unlocked?")])]),noticeType:rg},kB={$:"TopLeft"},NB={align:kB,label:"screenToSmall",mainParagraphs:F([F([Qp("Your screen is quite small--things may be very broken! We will be addressing this soon.")])]),noticeType:rg},RB=n(function(e,t,r){var n=e.a,a=e.b;return xg({inPort:a,nodePath:r,outPort:n,ref:1,tagger:t,txs:Sh})}),$B=n(function(e,t,r){var n=e.width<1024?ci(NB):fi,a=function(){if(e.networkId){var t=mo(e.networkId);if("Nothing"===t.$)return L(Zi(eo),AB);return L(t.a,TB)}return L(Zi(eo),wB)}(),i=a.a,o=a.b,u=Co(i),s=WE(u),c=s.a,d=s.b,h=s.c,p=l(RB,L(EB,SB),IB,u.httpProvider),g=function(){switch(o.$){case"NoWeb3":return ci(BB);case"WrongNetwork":return ci(DA);default:return fi}}(),v=aS(F([n,g])),y=f(mB,f(Xi,IT,h),f(CB,t,{initialWeb3State:o,key:r,screenWidth:e.width,submodel:ET,time:Ff(0),tradeCache:c,txSentry:p,userAddress:fi,userInfo:fi,userNotices:mr,web3Context:u})),m=y.a,b=y.b;return L(f(To,v,m),Io(F([f(Dg,IT,d),b])))}),xB=ze("networkSentryPort",lE),_B=Me,LB=_B(mr),PB=function(e){return LB},DB=function(e){return{$:"Refresh",a:e}},UB=r(function(e,t){return{$:"Every",a:e,b:t}}),OB=r(function(e,t){return{processes:t,taggers:e}}),MB=Xh(f(OB,Sh,Sh)),FB=o(function(e,t,a,i,o,u){var s=n(function(r,n,i){e:for(;;){var o=i.a,u=i.b;if(o.b){var s=o.a,c=s.a,f=s.b,h=o.b;if(_(c,r)<0){var p=r,g=n,v=L(h,l(e,c,f,u));r=p,n=g,i=v;continue e}return _(c,r)>0?L(o,l(a,r,n,u)):L(h,d(t,c,f,n,u))}return L(o,l(a,r,n,u))}}),c=l(xE,s,L(Aa(i),u),o),f=c.a,h=c.b;return l($a,r(function(t,r){var n=t.a,a=t.b;return l(e,n,a,r)}),h,f)}),VB=Re,KB=r(function(e,t){var r=e.a,n=e.b,a=f(Eh,r,t);if("Nothing"===a.$)return l(kh,r,F([n]),t);var i=a.a;return l(kh,r,f(Na,n,i),t)}),HB=ke,jB=r(function(e,t){return{$:"Zone",a:e,b:t}}),qB=fa,GB=n(function(e,t,r){if(t.b){var n=t.a,a=t.b,i=HB(f(qB,n,f(Fh,e,n)));return f(op,function(t){return l(GB,e,a,l(kh,n,t,r))},i)}return Xh(r)}),zB=n(function(e,t,r){var i=r.processes,o=n(function(e,t,r){var n=r.a,a=r.b,i=r.c;return P(n,a,f(op,function(e){return i},VB(t)))}),u=l($a,KB,Sh,t),s=n(function(e,t,r){var n=r.a,a=r.b,i=r.c;return P(f(Na,e,n),a,i)}),c=a(function(e,t,r,n){var a=n.a,i=n.b,o=n.c;return P(a,l(kh,e,r,i),o)}),d=p(FB,s,c,o,u,i,P(mr,Sh,Xh(vr))),h=d.a,g=d.b,v=d.c;return f(op,function(e){return Xh(f(OB,u,e))},f(op,function(t){return l(GB,e,h,g)},v))}),YB=function(e){return Ie(function(t){t(Te(e(Date.now())))})}(Ff),WB=n(function(e,t,r){var n=f(Eh,t,r.taggers);if("Nothing"===n.$)return Xh(r);var a=n.a,i=function(t){return fp(f(Pa,function(r){return f(Mh,e,r(t))},a))};return f(op,function(e){return Xh(r)},f(op,i,YB))}),JB=r(function(e,t){var r=t.a,n=t.b;return f(UB,r,f(Ua,e,n))});gn.Time=De(MB,zB,WB,0,JB);var QB=Oe("Time"),XB=r(function(e,t){return QB(f(UB,e,t))}),ZB=function(e){return f(XB,2e3,DB)},ek=function(e){return LB},tk=function(e){return{$:"Refresh",a:e}},rk=function(e){return f(XB,2e3,tk)},nk=function(e){return{$:"DecryptionFinished",a:e}},ak=ze("decryptionFinished",lE),ik=ze("encryptionFinished",lE),ok=function(e){return{$:"EncryptionFinished",a:e}},uk=function(e){return{$:"Refresh",a:e}},sk=function(e){return _B(F([f(XB,3e3,uk),ik(ok),ak(function(e){return $S(nk(e))})]))},ck=mn,fk=function(e){var t=e.submodel;switch(t.$){case"BetaLandingPage":return LB;case"CreateModel":t.a;return f(ck,Vy,ZB());case"QuickCreateModel":t.a;return f(ck,jy,rk());case"TradeModel":t.a;return f(ck,Gy,sk());case"MarketplaceModel":t.a;return f(ck,wT,ek());default:t.a;return f(ck,CT,PB())}},lk=ze("userPubkeyResult",lE),dk=ze("walletSentryPort",lE),hk={$:"CheckForNewTrades"},pk=function(e){return f(XB,5e3,function(e){return hk})},gk=function(e){return{$:"NetworkUpdate",a:e}},vk=function(e){return{$:"Tick",a:e}},yk=function(e){return{$:"UserPubkeySet",a:e}},mk=function(e){return{$:"WalletStatus",a:e}},bk=function(e){return f(Xp,"Error decoding JS walletSentry: "+e,fi)},Ck=function(e){return{$:"ErrorDecoding",a:e}},Sk=r(function(e,t){return{$:"TxSigned",a:e,b:t}}),Ek=l(Fi,r(function(e,t){return{ref:e,txHash:t}}),f(Md,"ref",oS),f(Md,"txHash",FA(EE))),Tk=function(e){var t=f(Wd,Ek,e);if("Ok"===t.$){var r=t.a,n=r.txHash;if("Just"===n.$){var a=n.a;return f(Sk,r.ref,di(a))}return f(Sk,r.ref,li("Problem signing/broadcasting Tx. Ref #"+Ri(r.ref)))}t.a;return Ck("Error decoding tx data")},wk=function(e){var t=e.a;return f(ck,t.tagger,t.inPort(Tk))},Ik=f(Mi,vo,oS),Ak=Xo(f(yo,nl,f(yo,_l("Failure decoding stringy int"),Vo(vo)))),Bk=fE(F([Ak,Ik])),kk=r(function(e,t){return{account:e,networkId:t}}),Nk=l(Fi,kk,f(Md,"account",FA(gE)),f(Md,"networkId",Bk)),Rk=n(function(e,t,r){var n=f(Wd,Nk,r);if("Err"===n.$){var a=n.a;return e(Ui(a))}return t(n.a)}),$k=function(e){var t=f(yo,bk,f(yo,ga,ST));return _B(O(F([f(XB,1e3,vk),dk(f(Rk,t,mk)),wk(e.txSentry),lk(yk),f(ck,IT,pk(e.tradeCache)),xB(gk)]),F([fk(e)])))},xk=function(e){return{$:"LinkClicked",a:e}},_k=function(e){return{$:"UrlChanged",a:e}},Lk=n(function(e,t,r){return d(BA,e/255,t/255,r/255,1)}),Pk=l(Lk,10,33,108),Dk={$:"Generic"},Uk=Dk,Ok=r(function(e,t){return d(wA,FT,Uk,f(Na,PT(_T),f(Na,$T(_T),e)),OT(F([t])))}),Mk=function(e){return{$:"Fill",a:e}},Fk=Mk(1),Vk=ji,Kk=function(e){return{$:"Px",a:e}},Hk=Kk,jk=hw(8),qk=function(e){return f($A,jk,l(RA,"bg-"+xA(e),"background-color",e))},Gk=f(Ok,F([PT(Fk),$T(Hk(150)),qk(Pk)]),Vk),zk=function(e){return{$:"GotoRoute",a:e}},Yk={$:"Active"},Wk={$:"Important"},Jk={$:"Normal"},Qk=l(kA,1,1,1),Xk=hw(2),Zk=i(function(e,t,r,n,a){return{$:"PaddingStyle",a:e,b:t,c:r,d:n,e:a}}),eN=r(function(e,t){return $(e,t)?f($A,Xk,h(Zk,"p-"+Ri(e),e,e,e,e)):f($A,Xk,h(Zk,"p-"+Ri(e)+"-"+Ri(t),t,e,t,e))}),tN=hw(21),rN=r(function(e,t){return{$:"Class",a:e,b:t}}),nN=f(rN,tN,jT.cursorPointer),aN=hw(17),iN=function(e){return f($A,aN,l(aA,"br-"+Ri(e),"border-radius",Ri(e)+"px"))},oN=function(e){return{$:"Normal",a:e}},uN=Bn,sN=r(function(e,t){return f(uN,e,oN(t))}),cN=function(e){return f(sN,"click",Vi(e))},fN=f(Ua,DT,cN),lN=hw(13),dN=f(rN,lN,jT.textSemiBold),hN=hw(4),pN=function(e){return{$:"FontSize",a:e}},gN=function(e){return f($A,hN,pN(e))},vN=n(function(e,t,r){var n=function(){switch(r.$){case"Normal":return mr;case"Active":return F([iN(4),qk(l(kA,0,0,1))]);default:return F([iN(4),qk(l(kA,.9,0,0))])}}();return f(Ok,O(F([f(eN,23,12),gN(22),dN,_A(Qk),nN,fN(t)]),n),Qp(e))}),yN=l(Lk,244,0,103),mN=function(e){return{$:"AlignX",a:e}},bN={$:"CenterX"},CN=mN(bN),SN=hw(3),EN=n(function(e,t,r){return{$:"SpacingStyle",a:e,b:t,c:r}}),TN=r(function(e,t){return"spacing-"+Ri(e)+"-"+Ri(t)}),wN=function(e){return f($A,SN,l(EN,f(TN,e,e),e,e))},IN=function(e){return{$:"Describe",a:e}},AN={$:"Paragraph"},BN=r(function(e,t){return d(wA,nw,Uk,f(Na,IN(AN),f(Na,PT(Fk),f(Na,wN(5),e))),OT(t))}),kN=f(rN,lN,jT.bold),NN=f(Ok,F([gN(29),_A(Qk),kN,CN,nN,fN(zk(Qv))]),f(BN,mr,F([Qp("DAI"),f(Ok,F([_A(yN)]),Qp("Hard"))]))),RN=function(e){var t=e.web3Context.factoryType;if("Native"!==t.$){if("EthDai"===t.a.$){t.a;return"Mainnet Dai"}t.a;return"Testnet Dai"}switch(t.a.$){case"Eth":t.a;return"Mainnet ETH";case"Kovan":t.a;return"Testnet ETH";default:t.a;return"xDai"}},$N=IA(jT.italic),xN=function(e){return f(Ok,F([gN(18),_A(l(kA,.8,.8,1)),dN,$N,CN]),Qp(RN(e)))},_N={$:"Right"},LN=mN(_N),PN={$:"AsColumn"},DN=PN,UN=r(function(e,t){return d(wA,DN,Uk,f(Na,IA(jT.contentTop+" "+jT.contentLeft),f(Na,$T(_T),f(Na,PT(_T),e))),OT(t))}),ON={$:"AsRow"},MN=ON,FN=r(function(e,t){return d(wA,MN,Uk,f(Na,IA(jT.contentLeft+" "+jT.contentCenterY),f(Na,PT(_T),f(Na,$T(_T),e))),OT(t))}),VN=function(e){return f(FN,F([PT(Fk),wN(30),f(eN,30,17)]),F([l(vN,"Create a New Offer",zk(Jv),function(){return"CreateModel"===e.submodel.$?Yk:Jk}()),l(vN,"Sell Offers",zk(Xv(ay)),function(){var t=e.submodel;if("MarketplaceModel"===t.$){return $(t.a.browsingRole,ay)?Yk:Jk}return Jk}()),l(vN,"Buy Offers",zk(Xv(Of)),function(){var t=e.submodel;if("MarketplaceModel"===t.$){return $(t.a.browsingRole,Of)?Yk:Jk}return Jk}()),function(){var t=e.userInfo;if("Just"===t.$){var r=t.a;return l(vN,"My Trades",zk(f(_f,r.address,Of)),function(){var t=e.submodel;if("AgentHistoryModel"===t.$){return $(t.a.agentAddress,r.address)?Yk:Jk}return Jk}())}return l(vN,"Connect to Wallet",TT,Wk)}(),f(UN,F([LN,wN(0),f(eN,8,0)]),F([NN,xN(e)]))]))},KN=function(e){return function(t){return $(t.parameters.initiatorAddress,e.agentAddress)||$(t.state.responder,ci(e.agentAddress))}},HN=function(e){switch(e.$){case"Open":return 1;case"Committed":return 2;case"Judgment":return 3;default:return 4}},jN=function(e){return r(function(e,t){var r=f(Iu,HN(e.state.phase),HN(t.state.phase));return $(r,ba)?r:f(Hg,e.derived.phaseEndTime,t.derived.phaseEndTime)})},qN=Er,GN=r(function(e,t){return f(yo,eh(e),qN(t))}),zN=function(e){return{$:"AlignY",a:e}},YN={$:"CenterY"},WN=zN(YN),JN=hw(20),QN=f(rN,JN,jT.clip),XN=Mk,ZN=function(e){return f($A,Xk,h(Zk,"p-"+Ri(e),e,e,e,e))},eR=function(e){var t=e.a,r=e.b;return f(Ok,F([PT(XN(t)),$T(Hk(60)),QN,qk(Qk)]),f(Ok,F([ZN(12),WN,PT(Fk)]),r))},tR=f(rN,lN,jT.textMedium),rR=function(e){return f(Ok,F([tR,gN(17)]),Qp(e))},nR=function(e){return{$:"Poke",a:e}},aR=hw(33),iR={$:"Hover"},oR=r(function(e,t){return{$:"PseudoSelector",a:e,b:t}}),uR=xn,sR=r(function(e,t){return{$:"Nearby",a:e,b:t}}),cR={$:"NoAttribute"},fR=r(function(e,t){return{$:"TransformComponent",a:e,b:t}}),lR=r(function(e,t){switch(t.$){case"NoAttribute":return cR;case"Describe":var r=t.a;return IN(r);case"AlignX":var n=t.a;return mN(n);case"AlignY":var a=t.a;return zN(a);case"Width":var n=t.a;return LT(n);case"Height":var n=t.a;return RT(n);case"Class":var n=t.a,a=t.b;return f(rN,n,a);case"StyleClass":var i=t.a,o=t.b;return f($A,i,o);case"Nearby":var u=t.a,s=t.b;return f(sR,u,f(Yi,e,s));case"Attr":var c=t.a;return DT(f(uR,e,c));default:var l=t.a,d=t.b;return f(fR,l,d)}}),dR=function(e){return f(lR,dg,e)},hR=r(function(e,t){var r=t.a,n=t.b,a=dR(e);switch(a.$){case"StyleClass":var i=a.b;return L(f(Na,i,r),n);case"TransformComponent":var o=(a.a,a.b);return L(r,f(vA,n,o));default:return L(r,n)}}),pR=function(e){var t=l($a,hR,L(mr,EA),e),r=t.a,n=t.b;return f(Na,iA(n),r)},gR=function(e){return f($A,aR,f(oR,iR,pR(e)))},vR=a(function(e,t,r,n){return d(BA,e/255,t/255,r/255,n)}),yR=me,mR=r(function(e,t){return f(Nn,e,yR(t))}),bR=mR("disabled"),CR=function(e){return f(Rn,"tabIndex",Ri(e))},SR=function(e){if("StyleClass"===e.$&&"PseudoSelector"===e.b.$&&"Focus"===e.b.a.$){var t=e.b;t.a;return!0}return!1},ER=function(e){return f(Sd,SR,e)?cR:IA("focusable")},TR=function(e){return{$:"MayPreventDefault",a:e}},wR=r(function(e,t){return f(uN,e,TR(t))}),IR=r(function(e,t){var r=function(r){return $(r,e)?Vi(t):Jo("Not the enter key")},n=f(Wo,r,f(Md,"key",Qo));return DT(f(wR,"keyup",f(Mi,function(e){return L(e,!0)},n)))}),AR=function(e){return f(IR,"Enter",e)},BR={$:"Button"},kR=r(function(e,t){var r=t.onPress,n=t.label;return d(wA,FT,Uk,f(Na,PT(_T),f(Na,$T(_T),f(Na,IA(jT.contentCenterX+" "+jT.contentCenterY+" "+jT.seButton+" "+jT.noTextSelection),f(Na,nN,f(Na,ER(e),f(Na,IN(BR),f(Na,DT(CR(0)),function(){if("Nothing"===r.$)return f(Na,DT(bR(!0)),e);var t=r.a;return f(Na,fN(t),f(Na,AR(t),e))}()))))))),OT(F([n])))}),NR=function(e){return f(kR,F([qk(d(vR,16,7,234,.2)),ZN(5),iN(4),PT(Fk),gR(F([qk(d(vR,16,7,234,.4))]))]),{label:f(Ok,F([CN,_A(l(Lk,16,7,234)),tR,gN(14)]),Qp("Poke")),onPress:ci(nR(e))})},RR=function(e){return{$:"TimeLeft",a:e}},$R=function(e){return{$:"TimeUp",a:e}},xR=r(function(e,t){switch(e.$){case"Open":return t.parameters.autorecallInterval;case"Committed":return t.parameters.autoabortInterval;case"Judgment":return t.parameters.autoreleaseInterval;default:return Ff(0)}}),_R=r(function(e,t){return Ff(Gl(e)-Gl(t))}),LR=r(function(e,t){var r=f(xR,t.state.phase,t),n=f(_R,e,t.state.phaseStartTime),a=f(_R,r,n);return Gl(a)>0?RR(L(a,r)):$R(r)}),PR=function(e){switch(e.$){case"Open":return"Expiring...";case"Committed":return"Aborting...";case"Judgment":return"Releasing...";default:return""}},DR=l(kA,0,0,0),UR=l(Lk,233,237,242),OR={$:"Behind"},MR=function(e){return f(sR,OR,e)},FR=r(function(e,t){var r=Bg(200*e),n=200-r,a=f(Ok,F([PT(XN(n))]),Vk),i=F([$T(Hk(3)),iN(20)]),o=f(Ok,O(i,F([PT(XN(r)),qk(t)])),Vk),u=f(Ok,O(i,F([PT(Fk),qk(UR)])),Vk);return f(FN,F([PT(Fk),MR(u)]),F([o,a]))}),VR=l(Lk,51,183,2),KR=function(e){return Gl(e)<0},HR=a(function(e,t,r,n){return{days:e,hours:t,min:r,sec:n}}),jR=function(e){var t=Lp(e);return function(e){var t=e.a,r=e.b;return function(e){var r=e.a,n=e.b;return function(e){var n=e.a,a=e.b;return d(HR,yC(t),yC(r),yC(n),yC(a))}(f(yc,L(ku(0),ku(0)),f(os,n,ku(60))))}(f(yc,L(ku(0),ku(0)),f(os,r,ku(3600))))}(f(yc,L(ku(0),ku(0)),f(os,t,ku(86400))))},qR=a(function(e,t,n,a){for(;;){var i=n.a,o=n.b;if(!KR(a)){var u=r(function(e,t){return O(l(hs,2,D("0"),Ri(e)),t)}),s=Gl(a)>0?i:o,c=jR(a),d=c.days||c.hours?i:o,h=c.days?i:o;return f(FN,O(F([wN(5)]),e),F([f(Ok,O(F([_A(h)]),t),Qp(f(u,c.days,"d"))),f(Ok,O(F([_A(d)]),t),Qp(f(u,c.hours,"h"))),f(Ok,O(F([_A(s)]),t),Qp(f(u,c.min,"m")))]))}var p=e,g=t,v=L(i,o),y=Ff(0);e=p,t=g,n=v,a=y}}),GR=l(kA,1,1,0),zR=r(function(e,t){return Gl(e)/Gl(t)}),YR=a(function(e,t,r,n){var a=r.a,i=r.b,o=n.a,u=n.b,s=f(zR,o,u),c=(f(Ok,F([CN]),d(qR,mr,mr,L(a,i),o)),s<.1?yN:s<.2?GR:VR);return f(UN,O(F([wN(5)]),e),F([d(qR,F([CN]),t,L(a,i),o),f(FR,1-s,c)]))}),WR=a(function(e,t,r,n){var a=f(LR,e,t);if("TimeLeft"===a.$){var i=a.a,o=r&&f(zR,i.a,i.b)<.05?yN:DR;return d(YR,F([PT(Fk)]),F([gN(16)]),L(o,UR),i)}return f(UN,F([wN(4),PT(Fk)]),O(F([f(Ok,F([CN,gN(14)]),Qp(PR(t.state.phase)))]),n?F([f(Ok,F([CN]),NR(t.creationInfo.address))]):mr))}),JR=function(e){return{$:"JustImage",a:e}},QR=JR,XR=function(e){return l($a,r(function(e,t){var r=e.a,n=e.b;return l(kh,r,n,t)}),Sh,e)}(f(Pa,function(e){var t=e.a;return L(t,L(e.b,QR({description:t,src:"/DAIHard/static/img/currencies/"+t+".svg"})))},F([L("AUD","$"),L("CLP","$"),L("EUR","€"),L("IDR","Rp"),L("KRW","₩"),L("NZD","$"),L("RUB","₽"),L("TRY","₺"),L("BRL","R$"),L("CNY","¥"),L("GBP","£"),L("ILS","₪"),L("MXN","$"),L("PHP","₱"),L("SEK","kr"),L("TWD","NT$"),L("CAD","$"),L("CZK","Kč"),L("HKD","$"),L("INR","₹"),L("MYR","RM"),L("PKR","₨"),L("SGD","$"),L("USD","$"),L("CHF","Fr"),L("DKK","kr"),L("HUF","Ft"),L("JPY","¥"),L("NOK","kr"),L("PLN","zł"),L("THB","฿"),L("ZAR","R"),L("VND","₫")]))),ZR=function(e){return f(yc,"",f(jf,Xa,f(Eh,e,XR)))},e$=function(e){return Lo(e)<=3?e:e$(f(wl,3,e))+","+f(Ho,3,e)},t$=function(e){return e$(Tl(e))},r$=function(e){return O(ZR(e.fiatType),t$(e.amount))},n$=AT("alt"),a$=function(e){return f(AT,"src",nt(e))},i$=r(function(e,t){var r=t.src,n=t.description,a=f(eh,function(e){switch(e.$){case"Width":case"Height":return!0;default:return!1}},e);return d(wA,FT,Uk,f(Na,IA(jT.imageContainer),e),OT(F([d(wA,FT,UT("img"),O(F([DT(a$(r)),DT(n$(n))]),a),OT(mr))])))}),o$=r(function(e,t){if("None"===t.$)return Vk;var r=t.a;return f(i$,e,r)}),u$=BA,s$=function(e){var t=function(){var t=f(Eh,e.fiatType,XR);if("Nothing"===t.$)return Vk;var r=t.a,n=(r.a,r.b);return f(o$,F([$T(Hk(26))]),n)}();return f(FN,F([wN(4)]),F([t,f(Ok,F([_A(d(u$,0,0,0,.5)),tR,PT(Hk(50))]),Qp(e.fiatType)),Qp(r$(e))]))},c$=function(e){return s$(e)},f$=function(e){return f(Ok,F([PT(Fk),$T(Fk),QN]),f(BN,F([gN(12)]),F([Qp(e.info)])))},l$=function(e){return f(yc,Vk,f(jf,f$,Xf(e)))},d$=JR({description:"DAI",src:"/DAIHard/static/img/dai-symbol.png"}),h$=function(e){return f(o$,f(Na,$T(Hk(26)),e),d$)},p$=function(e){var t=Il(Hf(e)),r=f(Zf,".",t);if(!r.b)return t;if(r.b.b){kl("Error interpreting evmValueToString result. More than one decimal??");return"???"}switch(r.a){case 0:return"0"+f(Mo,3,t);case 1:return f(Mo,4,f(yc,t,f(jf,xw,f(jf,function(e){return e/100},f(jf,Ha,f(jf,Bg,f(jf,ri(100),Nl(t))))))));default:var n=r.a;return f(yc,f(Mo,n,t),f(jf,Ri,f(jf,Bg,Nl(t))))}},g$=function(e){var t=p$(e);return f(FN,F([wN(4)]),F([h$(mr),f(Ok,F([gN(16)]),Qp(t))]))},v$=function(e){return g$(e)},y$=function(e){return{$:"TradeClicked",a:e}},m$=function(e){return f(kR,F([qk(d(vR,16,7,234,.2)),ZN(11),iN(4),PT(Fk),gR(F([qk(d(vR,16,7,234,.4))]))]),{label:f(Ok,F([CN,_A(l(Lk,16,7,234)),tR]),Qp("View Offer")),onPress:ci(y$(e))})},b$=i(function(e,t,r,n,a){return f(FN,F([PT(Fk),wN(1)]),F([function(){switch(n.$){case"Open":return eR(L(2,d(WR,e,a,!1,t)));case"Committed":return eR(L(2,d(WR,e,a,$(r,ay),t)));case"Judgment":return eR(L(2,d(WR,e,a,$(r,Of),t)));default:return Vk}}(),eR(L(1,v$(a.parameters.tradeAmount))),eR(L(2,c$(a.terms.price))),eR(L(6,l$(a.terms.paymentMethods))),eR(L(2,m$(a.id)))]))}),C$=hw(28),S$=function(e){return f($A,C$,l(RA,"bc-"+xA(e),"border-color",e))},E$=i(function(e,t,r,n,a){return{$:"BorderWidth",a:e,b:t,c:r,d:n,e:a}}),T$=function(e){return f($A,bA,h(E$,"b-"+Ri(e),e,e,e,e))},w$=n(function(e,t,r){var n=function(){switch(r.viewPhase.$){case"Open":return"Expires in";case"Committed":return"Payment Due";case"Judgment":return"Auto-Release";default:return""}}(),a=function(){return"Buyer"===r.agentRole.$?"Buying":"Selling"}();return f(UN,F([PT(Fk),$T(Fk),f(eN,30,10),wN(5)]),F([f(FN,F([PT(Fk)]),F([$(r.viewPhase,sC)?Vk:eR(L(2,rR(n))),eR(L(1,rR(a))),eR(L(2,rR("For Fiat"))),eR(L(6,rR("Payment Methods"))),eR(L(2,Vk))])),f(UN,F([PT(Fk),T$(1),iN(8),S$(UR),wN(1),qk(UR),QN]),f(Pa,d(b$,e,!$(r.userInfo,fi),r.agentRole,r.viewPhase),t))]))}),I$=n(function(e,t,r){return $(f(BS,e,r),ci(t))}),A$=l(Lk,150,150,150),B$=function(e){return f(eh,function(e){return Ib(e.parameters)},tT(e))},k$=n(function(e,t,r){var n=l(GN,KN(r),jN(),B$(t)),a=f(eh,function(e){return l(I$,e,r.agentRole,r.agentAddress)&&$(e.state.phase,r.viewPhase)},n),i=function(e){return f(Ok,F([gN(24),dN,_A(A$),CN,ZN(20)]),Qp(e))},o=L(t.dataFetchStatus.total,a);if("Nothing"===o.a.$){o.a;return i("Querying Factory contract...")}if(o.a.a){if(o.b.b){var u=o.a.a;return l(w$,e,a,r)}var u=o.a.a;return i(_(t.dataFetchStatus.loaded,u-t.dataFetchStatus.invalid)<0?"Searching for user trades...":"No matching trades found.")}return i("No trades found.")}),N$=r(function(e,t){return f(Ok,F([iN(4),qk(d(u$,0,0,1,.1)),_A(l(Lk,16,7,234)),gN(e),dN,f(eN,15,13)]),Qp(Zd(t)))}),R$=a(function(e,t,r,n){return"pad-"+Ri(e)+"-"+Ri(t)+"-"+Ri(r)+"-"+Ri(n)}),$$=function(e){var t=e.top,r=e.right,n=e.bottom,a=e.left;return $(t,r)&&$(t,n)&&$(t,a)?f($A,Xk,h(Zk,"p-"+Ri(t),t,t,t,t)):f($A,Xk,h(Zk,d(R$,t,r,n,a),t,r,n,a))},x$=function(e){return function(){var t=e.userInfo;return"Nothing"!==t.$&&$(t.a.address,e.agentAddress)}()?f(Ok,F([f(eN,30,10),gN(24),dN]),Qp("Your Trades")):f(FN,F([wN(10),$$({bottom:30,left:30,right:30,top:10})]),F([f(Ok,F([gN(24),dN]),Qp("Trade History for User")),f(N$,18,e.agentAddress)]))},_$=function(e){return{$:"ViewPhaseChanged",a:e}},L$=l(kA,0,0,1),P$=function(e){var t=F([gN(20),kN,nN]),r=function(e){return e?O(t,F([_A(L$)])):t};return f(FN,F([wN(30)]),F([f(Ok,O(F([fN(_$(wo))]),r($(e,wo))),Qp("Open")),f(Ok,O(F([fN(_$(cC))]),r($(e,cC))),Qp("Payment Due")),f(Ok,O(F([fN(_$(fC))]),r($(e,fC))),Qp("Release Due")),f(Ok,O(F([fN(_$(sC))]),r($(e,sC))),Qp("Closed"))]))},D$=function(e){return f(Ok,F([f(eN,30,10)]),P$(e.viewPhase))},U$=function(e){return{$:"ViewUserRoleChanged",a:e}},O$=d(vR,1,31,52,.13),M$=function(e){var t=F([gN(24),dN,nN]),r=function(){return"Buyer"===e.$?L(t,O(t,F([_A(O$)]))):L(O(t,F([_A(O$)])),t)}(),n=r.a,a=r.b;return f(FN,F([wN(20)]),F([f(Ok,O(F([fN(U$(Of))]),a),Qp("As the Seller")),f(Ok,O(F([fN(U$(ay))]),n),Qp("As the Buyer"))]))},F$=function(e){return f(Ok,F([f(eN,30,10)]),M$(e.agentRole))},V$=n(function(e,t,r){return f(UN,F([iN(5),qk(Qk),PT(Fk),$T(Fk),f(eN,0,20)]),F([x$(r),F$(r),D$(r),l(k$,e,t,r)]))}),K$=function(e){return{$:"ShowCurrencyDropdown",a:e}},H$={$:"AbortCreate"},j$=function(e){return{$:"AppCmd",a:e}},q$=r(function(e,t){return{$:"ConfirmCreate",a:e,b:t}}),G$=function(e){return f(Pa,function(e){return F([f(Ok,F([_A(yN)]),Qp("Caution! ")),Qp(e)])},aS(F([$(f(Hg,e.autoreleaseInterval,Ff(12e5)),Ca)?ci(function(){return"Buyer"===e.initiatorRole.$?"That Burn/Release Window time is quite small! It might take a while to find a committed Seller.":"That Burn/Release Window time is quite small! This may attract scammers. Only create this trade if you know what you're doing."}()):fi,$(f(Hg,e.autoabortInterval,Ff(36e5)),Ca)?ci(function(){return"Buyer"===e.initiatorRole.$?'That Payment Window time is quite small! If you fail to to 1. make the payment and 2. click "confirm" before this time is up, the trade will automatically abort, incurring the abort punishments on both parties.':'That Payment Window time is quite small! If the Buyer fails to to 1. make the payment and 2. click "confirm" before this time is up, the trade will automatically abort, incurring the abort punishments on both parties.'}()):fi])))},z$=function(e){return f(Ok,F([$$({bottom:5,left:5,right:5,top:0}),fN(e),iN(30),qk(d(u$,1,1,1,.4)),T$(1),S$(d(u$,0,0,0,.3)),nN,gN(14)]),f(Ok,F([_A(d(u$,0,0,0,.7))]),Qp("x")))},Y$=kn,W$=Y$,J$=DT,Q$=r(function(e,t){return f(Ok,F([MR(f(Ok,F([qk(e),J$(f(W$,"position","fixed")),J$(f(W$,"z-index","1000")),J$(f(W$,"top","0")),J$(f(W$,"left","0")),J$(f(W$,"width","100%")),J$(f(W$,"height","100%"))]),Vk)),PT(Fk),$T(Fk)]),t)}),X$={$:"Top"},Z$=zN(X$),ex={$:"InFront"},tx=function(e){return f(sR,ex,e)},rx=r(function(e,t){return{$:"Max",a:e,b:t}}),nx=r(function(e,t){return f(rx,e,t)}),ax=n(function(e,t,r){return l(Da,Q$,d(u$,0,0,.3,.6),f(Ok,O(F([CN,WN,PT(f(nx,500,_T)),qk(Qk),iN(8),tx(f(Ok,F([LN,Z$]),z$(r)))]),e),t))}),ix=r(function(e,t){if("Nothing"===t.$)return Vk;var r=t.a;return f(Ok,O(F([iN(5),S$(l(kA,.9,0,0)),T$(1),qk(l(kA,1,.4,.4)),ZN(5),CN,WN,PT(f(nx,200,_T)),gN(14)]),e),f(BN,mr,F([Qp(r)])))}),ox={$:"Above"},ux=function(e){return f(sR,ox,e)},sx=hw(26),cx=function(e){return{$:"MoveY",a:e}},fx=function(e){return f(fR,sx,cx(-e))},lx=r(function(e,t){return f(Ok,F([iN(4),f(eN,25,17),gN(18),dN,qk(UR),ux(f(ix,F([fx(5)]),t))]),Qp(e))}),dx=d(vR,1,31,52,.64),hx=hw(32),px={$:"Active"},gx=function(e){return f($A,hx,f(oR,px,pR(e)))},vx=a(function(e,t,r,n){var a=e.a,i=e.b,o=e.c;return f(Ok,F([iN(4),nN,fN(n),f(eN,25,17),_A(t),gN(18),dN,qk(a),gx(F([qk(o)])),gR(F([qk(i)]))]),Qp(r))}),yx=r(function(e,t){return d(vx,P(d(u$,1,0,0,1),d(u$,1,0,0,.8),d(u$,1,0,0,.6)),Qk,e,t)}),mx=hw(12),bx=f(rN,mx,jT.textCenter),Cx=function(e){return Q$(d(u$,0,0,.3,.6))(f(UN,F([wN(10),CN,WN,qk(d(u$,0,0,0,.5)),iN(8),ZN(20)]),f(Pa,function(e){return f(BN,F([CN,WN,gN(20),dN,_A(Qk),bx]),F([e]))},e)))},Sx=r(function(e,t){if("Token"===e.$){if("EthDai"===e.a.$){e.a;return"https://etherscan.io/tx/"+KA(t)}e.a;return"https://kovan.etherscan.io/tx/"+KA(t)}switch(e.a.$){case"Eth":e.a;return"https://etherscan.io/tx/"+KA(t);case"Kovan":e.a;return"https://kovan.etherscan.io/tx/"+KA(t);default:e.a;return"https://blockscout.com/poa/dai/tx/"+KA(t)}}),Ex={$:"Bottom"},Tx=zN(Ex),wx=IA(jT.underline),Ix=r(function(e,t){switch(e.$){case"Confirm":var r=e.a,n=Qf(t.web3Context.factoryType),a=function(){var e=t.depositAmount;if("Just"===e.$){var n=e.a;return L(Qp(p$(Kv(n))),f(yx,"Yes, I definitely want to open this trade.",f(q$,r,n)))}return L(Qp("??"),f(lx,"(loading exact fees...)",fi))}(),i=a.a,o=a.b;return l(ax,mr,f(UN,F([wN(20),ZN(20),CN,$T(Fk),bx]),F([f(Ok,F([gN(26),dN,CN,WN]),Qp("Just to Confirm...")),f(UN,F([wN(20),CN,WN]),f(Pa,BN(F([CN,gN(18),tR,_A(dx)])),O(G$(r),O(F([F([Qp("You will deposit "),i,Qp(" "+n+" (including the 1% dev fee) to open this trade.")])]),function(){return"Token"===t.web3Context.factoryType.$?F([F([Qp("This ususally requires two Metamask signatures. Your "+n+" will not be deposited until the final transaction has been mined.")])]):mr}())))),f(Ok,F([Tx,CN]),o)])),H$);case"ApproveNeedsSig":return f(Ok,F([fN(j$(d(ed,"txChainModal clicked","misclick","ApproveNeedsSig",0)))]),Cx(F([Qp("Waiting for user signature for the approve call."),Qp("(check Metamask!)"),Qp("Note that there will be a second transaction to sign after this.")])));case"ApproveMining":var r=e.a,u=e.b;return f(Ok,F([fN(j$(d(ed,"txChainModal clicked","misclick","ApproveMining",0)))]),Cx(F([Qp("Mining the initial approve transaction..."),f(AA,F([wx,_A(L$)]),{label:Qp("See the transaction on Etherscan"),url:f(Sx,t.web3Context.factoryType,u)}),Qp("Funds will not leave your wallet until you sign the next transaction.")])));case"CreateNeedsSig":return f(Ok,F([fN(j$(d(ed,"txChainModal clicked","misclick","CreateNeedsSig",0)))]),Cx(F([Qp("Waiting for user signature for the create call."),Qp("(check Metamask!)")])));default:var u=e.a;return f(Ok,F([fN(j$(d(ed,"txChainModal clicked","misclick","CreateMining",0)))]),Cx(F([Qp("Mining the final create call..."),f(AA,F([wx,_A(L$)]),{label:Qp("See the transaction on Etherscan"),url:f(Sx,t.web3Context.factoryType,u)}),Qp("You will be redirected when it's mined.")])))}}),Ax=function(e){var t=e.txChainStatus;if("Nothing"===t.$)return Vk;var r=t.a;return f(Ix,r,e)},Bx=function(e){return{$:"TradeAmountChanged",a:e}},kx=AT("id"),Nx=J$(kx("inputError")),Rx=l(Lk,109,127,138),$x=function(e){return f(FN,F([wN(4)]),F([h$(mr),f(Ok,F([gN(24),tR,_A(Rx)]),Qp(Qf(e)))]))},xx={$:"Left"},_x=mN(xx),Lx=function(e){return{$:"HiddenLabel",a:e}},Px=Lx,Dx=AT("type"),Ux=function(e){return L(e,!0)},Ox=function(e){return{$:"MayStopPropagation",a:e}},Mx=r(function(e,t){return f(uN,e,Ox(t))}),Fx=r(function(e,t){return l(La,Md,t,e)}),Vx=f(Fx,F(["target","value"]),Qo),Kx=function(e){return f(Mx,"input",f(Mi,Ux,f(Mi,e,Vx)))},Hx=hw(0),jx=r(function(e,t){return{$:"Transparency",a:e,b:t}}),qx=function(e){var t=function(e){return 1-e}(f(oc,1,f(ti,0,e)));return f($A,Hx,f(jx,"transparency-"+Aw(t),t))},Gx=a(function(e,t,r,n){return{$:"Padding",a:e,b:t,c:r,d:n}}),zx=n(function(e,t,r){if("HiddenLabel"===t.$){t.a;return d(wA,DN,UT("label"),e,OT(F([r])))}var n=t.a,a=t.b,i=t.c,o=d(wA,FT,Uk,a,OT(F([i])));switch(n.$){case"Above":return d(wA,DN,UT("label"),e,OT(F([o,r])));case"Below":return d(wA,DN,UT("label"),e,OT(F([r,o])));case"OnRight":return d(wA,MN,UT("label"),e,OT(F([r,o])));default:return d(wA,MN,UT("label"),e,OT(F([o,r])))}}),Yx=YI,Wx=f(Ua,DT,Yx("autocomplete")),Jx=l(kA,136/255,138/255,133/255),Qx=l(kA,186/255,189/255,182/255),Xx=f(eN,12,12),Zx=l(kA,1,1,1),e_=F([Xx,iN(3),S$(Qx),qk(Zx),T$(1),wN(3),PT(Fk)]),t_=function(e){return{$:"Label",a:e}},r_=function(e){if("HiddenLabel"===e.$){var t=e.a;return IN(t_(t))}return cR},n_=function(e){e:for(;;){if("StyleClass"!==e.$)break e;switch(e.b.$){case"PaddingStyle":e.b;return!0;case"BorderWidth":e.b;return!0;case"Transform":return!0;default:break e}}return!1},a_=function(e){return"HiddenLabel"===e.$},i_=mR("spellcheck"),o_=f(Ua,DT,i_),u_=J,s_=hw(47),c_=a(function(e,t,r,n){var a=function(e){return e.a+e.c},i=function(e){return e<1?1:e}(wi(u_(e))),o=(i-1)*t+f(yc,0,f(jf,a,r))+f(yc,0,f(jf,a,n));return f($A,s_,l(aA,"textarea-height-"+Ri(i),"height",function(e){return"calc("+Ri(e)+"em + "+Ri(o)+"px) !important"}(i)))}),f_=AT("value"),l_=f(Ua,DT,f_),d_={$:"LivePolite"},h_=IN(d_),p_=function(e){return l(La,r(function(e,t){var r=t.a,n=t.b;switch(e.$){case"NoAttribute":return L(r,n);case"Class":e.a;return L(f(Na,e,r),n);case"Attr":e.a;return L(f(Na,e,r),n);case"StyleClass":e.b;return L(f(Na,e,r),n);case"Width":e.a;return f(ww,"width",n)?L(r,n):L(f(Na,e,r),f(DE,"width",n));case"Height":e.a;return f(ww,"height",n)?L(r,n):L(f(Na,e,r),f(DE,"height",n));case"Describe":e.a;return f(ww,"described",n)?L(r,n):L(f(Na,e,r),f(DE,"described",n));case"Nearby":e.a,e.b;return L(f(Na,e,r),n);case"AlignX":return f(ww,"align-x",n)?L(r,n):L(f(Na,e,r),f(DE,"align-x",n));case"AlignY":return f(ww,"align-y",n)?L(r,n):L(f(Na,e,r),f(DE,"align-y",n));default:return f(ww,"transform",n)?L(r,n):L(f(Na,e,r),f(DE,"transform",n))}}),L(mr,wm),e).a},g_=r(function(e,t){return l(La,r(function(e,r){return t(e)?f(Na,e,r):r}),mr,p_(e))}),v_=function(e){e:for(;;)switch(e.$){case"Content":return!0;case"Max":case"Min":var t=e.b,r=t;e=r;continue e;default:return!1}},y_=f(Ua,zi,ts),m_=n(function(e,t,n){var a=function(e){return"Nearby"===e.$},i=F([DT(Kx(n.onChange))]),o=O(e_,t),u=f(g_,o,function(e){e:for(;;)switch(e.$){case"Width":case"Height":if("Fill"===e.a.$)return!0;break e;case"AlignX":case"AlignY":return!0;case"StyleClass":switch(e.b.$){case"SpacingStyle":e.b;return!0;case"FontSize":return!0;case"FontFamily":e.b;return!0;default:break e}default:break e}return!1}),s=f(eh,n_,o),c=f(g_,o,function(e){return"Height"===e.$&&"Fill"===e.a.$}),h=(f(g_,o,function(e){if("StyleClass"===e.$&&"PaddingStyle"===e.b.$){e.b;return!0}return!1}),f(g_,o,function(e){return"Nearby"===e.$})),p=f(eh,f(Ua,Fu,a),o),g=function(){var t=e.type_;if("TextInputNode"===t.$){var a=t.a;return P("input",O(F([l_(n.text),DT(Dx(a)),o_(e.spellchecked),IA(jT.inputText),function(){var t=e.autofill;if("Nothing"===t.$)return cR;var r=t.a;return Wx(r)}()]),p),mr)}var i=l(La,r(function(e,t){e:for(;;)switch(e.$){case"Describe":return t;case"Height":var r=e.a,n=t.heightContent;return"Nothing"===n.$?U(t,{adjustedAttributes:f(Na,e,t.adjustedAttributes),heightContent:ci(v_(r))}):t;case"StyleClass":switch(e.b.$){case"BorderWidth":var a=e.b,i=a.b,o=a.c,u=a.d,s=a.e,c=t.maybeBorder;return"Nothing"===c.$?U(t,{adjustedAttributes:f(Na,e,t.adjustedAttributes),maybeBorder:ci(d(Gx,i,o,u,s))}):t;case"PaddingStyle":var l=e.b,i=l.b,o=l.c,u=l.d,s=l.e,h=t.maybePadding;return"Nothing"===h.$?U(t,{adjustedAttributes:t.adjustedAttributes,maybePadding:ci(d(Gx,i,o,u,s))}):t;case"SpacingStyle":var p=e.b,g=(p.b,p.c),v=t.maybeSpacing;return"Nothing"===v.$?U(t,{adjustedAttributes:f(Na,e,t.adjustedAttributes),maybeSpacing:ci(g)}):t;default:break e}default:break e}return U(t,{adjustedAttributes:f(Na,e,t.adjustedAttributes)})}),{adjustedAttributes:mr,heightContent:fi,maybeBorder:fi,maybePadding:fi,maybeSpacing:fi},o),u=i.maybePadding,s=i.heightContent,c=i.maybeSpacing,h=i.adjustedAttributes,g=i.maybeBorder,v=f(yc,5,c);return P("textarea",O(F([o_(e.spellchecked),IA(jT.inputMultiline),f(yc,cR,f(jf,Wx,e.autofill)),function(){if("Nothing"===u.$)return cR;var e=u.a,t=e.a,r=e.b,n=e.c,a=e.d;return $$({bottom:f(ti,0,n-(v/2|0)),left:a,right:r,top:f(ti,0,t-(v/2|0))})}(),function(){return"Nothing"===s.$?cR:s.a?d(c_,n.text,v,u,g):cR}()]),h),F([y_(jI(n.text))]))}(),v=g.a,y=g.b,m=g.c,b=d(wA,FT,Uk,f(Na,PT(Fk),cy(F([h,c,function(){var e=n.placeholder;if("Nothing"===e.$)return mr;var t=e.a,r=t.a,a=t.b;return F([tx(f(Ok,f(Na,Xx,O(s,O(F([_A(Jx),IA(jT.noTextSelection+" "+jT.passPointerEvents),S$(d(u$,0,0,0,0)),qk(d(u$,0,0,0,0)),$T(Fk),PT(Fk),qx(""===n.text?1:0)]),r))),a))])}()]))),OT(F([d(wA,FT,UT(v),cy(F([F([ER(t),r_(n.label)]),y,i])),OT(m))])));return l(zx,f(Na,f(rN,tN,jT.cursorText),f(Na,a_(n.label)?cR:wN(5),f(Na,h_,u))),n.label,b)}),b_=m_({autofill:fi,spellchecked:!1,type_:function(e){return{$:"TextInputNode",a:e}}("text")}),C_=o(function(e,t,r,n,a,i){var o=t.a,u=t.b,s=f(b_,F([PT(Fk),$T(Hk(40)),T$(0)]),{label:Px(r),onChange:i,placeholder:n,text:a});return f(FN,O(F([wN(5)]),e),aS(F([f(jf,Ok(F([_x])),o),ci(s),f(jf,Ok(F([LN])),u)])))}),S_={$:"Below"},E_=function(e){return f(sR,S_,e)},T_=function(e){return f(fR,sx,cx(e))},w_=n(function(e,t,r){return p(C_,F([PT(Hk(150)),tR,gN(24),E_(f(ix,F([Nx,T_(5)]),r))]),L(fi,ci(f(Ok,F([fN(j$(d(ed,"click","misclick","dai symbol in dai input",0)))]),$x(e)))),"dai input",fi,t,Bx)}),I_=r(function(e,t){return f($A,bA,h(E$,"b-"+Ri(e)+"-"+Ri(t),t,e,t,e))}),A_=function(e){var t=e.bottom,r=e.top,n=e.left,a=e.right;return $(r,t)&&$(n,a)?$(r,a)?T$(r):f(I_,n,r):f($A,bA,h(E$,"b-"+Ri(r)+"-"+Ri(a)+"-"+Ri(t)+"-"+Ri(n),r,a,t,n))},B_=Ok(F([S$(UR),A_({bottom:2,left:0,right:0,top:0})])),k_=r(function(e,t){return f(UN,F([wN(10)]),F([f(Ok,F([gN(17),dN]),Qp(e)),t]))}),N_=function(e){return B_(f(k_,function(){return"Buyer"===e.inputs.userRole.$?"You're buying":"You're selling"}(),l(w_,e.web3Context.factoryType,e.inputs.daiAmount,e.errors.daiAmount)))},R_=function(e){var t=function(){var t=yl(e.inputs.daiAmount);if("Just"===t.$){var r=t.a;return"There is a 1% fee of "+p$(f(Gf,r,100))+" "+Qf(e.web3Context.factoryType)+"."}return"There is a 1% fee."}();return f(FN,F([CN,f(eN,20,10),qk(l(Lk,10,33,108)),iN(8),wN(5),fN(j$(d(ed,"click","misclick","fee notify element",0)))]),F([f(Ok,F([gN(18),_A(l(Lk,0,226,255)),dN]),Qp(t)),f(Ok,F([gN(17),_A(Qk),tR]),Qp("We only collect this fee when trades resolve successfully."))]))},$_=function(e){return{$:"FiatAmountChanged",a:e}},x_=function(e){return{$:"FiatTypeChanged",a:e}},__=r(function(e,t){return l(xE,n(function(t,r,n){return f(e,t,r)?l(kh,t,r,n):n}),Sh,t)}),L_=function(e){return f(__,r(function(t,r){return f(vg,e,t)}),XR)},P_=JR({description:"",src:"/DAIHard/static/img/qmark-circle.svg"}),D_=function(e){return f(o$,F([$T(Hk(26))]),f(yc,P_,f(jf,zo,f(Eh,e,XR))))},U_=function(e){return J$(f(Mx,"click",Vi(L(e,!0))))},O_=y_,M_=function(e){return{$:"AppendProperty",a:e}},F_=r(function(e,t){return M_(e+":"+t)}),V_=r(function(e,t){return f(F_,e,t.value)}),K_=V_("cursor"),H_={$:"Compatible"},j_={cursor:H_,value:"default"},q_=r(function(e,t){return{$:"ExtendSelector",a:e,b:t}}),G_=function(e){return{$:"PseudoClassSelector",a:e}},z_=function(e){return q_(G_(e))}("hover"),Y_=n(function(e,t,r){return{$:"Node",a:e,b:t,c:r}}),W_=Y_,J_=W_,Q_=J_("span"),X_=r(function(e,t){return f(Nn,tt(e),nt(t))}),Z_=n(function(e,t,r){return{$:"Attribute",a:e,b:t,c:r}}),eL=a(function(e,t,r,n){return{charsProcessed:n,hash:r,seed:t,shift:e}}),tL=r(function(e,t){return(65535&t)*e+(((t>>>16)*e&65535)<<16)}),rL=r(function(e,t){return t<>>32-e}),nL=function(e){var t=e.hash?e.seed^f(tL,461845907,f(rL,15,f(tL,3432918353,e.hash))):e.seed,r=t^e.charsProcessed,n=f(tL,2246822507,r^r>>>16),a=f(tL,3266489909,n^n>>>13);return(a^a>>>16)>>>0},aL=r(function(e,t){return f(tL,5,f(rL,13,e^f(tL,461845907,f(rL,15,f(tL,3432918353,t)))))+3864292196}),iL=r(function(e,t){var r=t.hash|(255&mi(e))<";default:return""}},hP=function(e){switch(e.$){case"ClassSelector":var t=e.a;return"."+t;case"IdSelector":var t=e.a;return"#"+t;case"PseudoClassSelector":var t=e.a;return":"+t;default:var t=e.a;return"["+t+"]"}},pP=function(e){switch(e.$){case"TypeSelectorSequence":var t=e.a.a,r=e.b;return f($i,"",f(Na,t,f(Pa,hP,r)));case"UniversalSelectorSequence":var r=e.a;return su(r)?"*":f($i,"",f(Pa,hP,r));default:var t=e.a,r=e.b;return f($i,"",f(Na,t,f(Pa,hP,r)))}},gP=function(e){var t=e.a,r=e.b;return f($i," ",F([dP(t),pP(r)]))},vP=function(e){var t=e.a,r=e.b,n=e.c,a=f(Na,pP(t),f(Pa,gP,r)),i=f($i,"",F([f(yc,"",f(jf,lP,n))]));return f(Hs,f($i," ",f(eh,f(Ua,Fu,Ll),a)),i)},yP=r(function(e,t){var r=t.a,n=t.b,a=t.c,i=f($i,", ",f(Pa,vP,f(Na,r,n)));return f($i,"",F([i," {\n",e,fP(a),"\n",e,"}"]))}),mP=function(e){switch(e.$){case"StyleBlockDeclaration":var t=e.a;return f(yP,"",t);case"MediaRule":var r=e.a,n=e.b;return"@media "+f($i,",\n",f(Pa,aP,r))+" {\n"+f($i,"\n\n",f(Pa,f(Ua,sP,yP(" ")),n))+"\n}";case"SupportsRule":case"DocumentRule":case"PageRule":case"FontFace":return"TODO";case"Keyframes":return"@keyframes "+e.a.name+" {\n"+e.a.declaration+"\n}";case"Viewport":case"CounterStyle":default:return"TODO"}},bP=function(e){var t=e.charset,r=e.imports,n=e.namespaces,a=e.declarations;return f($i,"\n\n",f(eh,f(Ua,Fu,Ll),F([tP(t),f($i,"\n",f(Pa,oP,r)),f($i,"\n",f(Pa,uP,n)),f($i,"\n\n",f(Pa,mP,a))])))},CP=function(e){return bP(eP(QL(e)))},SP=function(e){return f($i,"\n\n",f(Pa,CP,e))},EP=function(e){return{$:"Snippet",a:e}},TP=n(function(e,t,r){return{$:"StyleBlock",a:e,b:t,c:r}}),wP=function(e){return{$:"StyleBlockDeclaration",a:e}},IP=r(function(e,t){var r=l(wL,t,mr,fi);return EP(F([wP(l(TP,r,mr,e))]))}),AP=function(e){return su(e)?"unstyled":f(ss,D("_"),ms(f(oL,15739,SP(ME(uL(ME(f(IP,e,DL(mr)))))))))},BP=function(e){var t=AP(e),r=f(X_,"className",zd(t));return l(Z_,r,e,t)},kP=a(function(e,t,r,n){return f(e,f(Na,BP(t),r),n)}),NP=function(e){return{$:"Unstyled",a:e}},RP=function(e){return NP(Uw(e))},$P=RP,xP=r(function(e,t){return f(wn,e,Ze(t))}),_P=function(e){return En(Ze(e))},LP=r(function(e,t){var r=e.b,n=e.c;return su(r)?t:l(kh,n,r,t)}),PP=function(e){return e.a},DP=r(function(e,t){var r=e.a,n=e.b,a=t.a,i=t.b;switch(n.$){case"Unstyled":var o=n.a;return L(f(Na,L(r,o),a),i);case"Node":var u=n.a,s=n.b,c=n.c,h=l($a,LP,i,s),p=l($a,UP,L(mr,h),c),g=p.a,v=p.b,o=l(fw,u,f(Pa,PP,s),xa(g));return L(f(Na,L(r,o),a),v);case"NodeNS":var y=n.a,u=n.b,s=n.c,c=n.d,h=l($a,LP,i,s),m=l($a,UP,L(mr,h),c),g=m.a,v=m.b,o=d(_P,y,u,f(Pa,PP,s),xa(g));return L(f(Na,L(r,o),a),v);case"KeyedNode":var u=n.a,s=n.b,c=n.c,h=l($a,LP,i,s),b=l($a,DP,L(mr,h),c),g=b.a,v=b.b,o=l(cw,u,f(Pa,PP,s),xa(g));return L(f(Na,L(r,o),a),v);default:var y=n.a,u=n.b,s=n.c,c=n.d,h=l($a,LP,i,s),C=l($a,DP,L(mr,h),c),g=C.a,v=C.b,o=d(xP,y,u,f(Pa,PP,s),xa(g));return L(f(Na,L(r,o),a),v)}}),UP=r(function(e,t){var r=t.a,n=t.b;switch(e.$){case"Unstyled":var a=e.a;return L(f(Na,a,r),n);case"Node":var i=e.a,o=e.b,u=e.c,s=l($a,LP,n,o),c=l($a,UP,L(mr,s),u),h=c.a,p=c.b,a=l(fw,i,f(Pa,PP,o),xa(h));return L(f(Na,a,r),p);case"NodeNS":var g=e.a,i=e.b,o=e.c,u=e.d,s=l($a,LP,n,o),v=l($a,UP,L(mr,s),u),h=v.a,p=v.b,a=d(_P,g,i,f(Pa,PP,o),xa(h));return L(f(Na,a,r),p);case"KeyedNode":var i=e.a,o=e.b,u=e.c,s=l($a,LP,n,o),y=l($a,DP,L(mr,s),u),h=y.a,p=y.b,a=l(cw,i,f(Pa,PP,o),xa(h));return L(f(Na,a,r),p);default:var g=e.a,i=e.b,o=e.c,u=e.d,s=l($a,LP,n,o),m=l($a,DP,L(mr,s),u),h=m.a,p=m.b,a=d(xP,g,i,f(Pa,PP,o),xa(h));return L(f(Na,a,r),p)}}),OP=r(function(e,t){return h(wh,Th,e,t,Ch,Ch)}),MP=r(function(e,t){for(;;){if(!t.b)return e;var r=t.a,n=r.b,a=r.c,i=t.b;if(Ll(a)){var o=e,u=i;e=o,t=u}else{var o=ci(L(a,n)),u=i;e=o,t=u}}}),FP=function(e){var t=f(MP,fi,e);if("Nothing"===t.$)return Sh;var r=t.a,n=r.a,a=r.b;return f(OP,n,a)},VP=function(e){return{$:"ClassSelector",a:e}},KP=function(e){var t=e.a,r=e.b;return f(IP,r,DL(F([VP(t)])))},HP=function(e){return SP(ME(uL(f(Pa,KP,Aa(e)))))},jP=function(e){return l(fw,"style",mr,ME(Uw(HP(e))))},qP=n(function(e,t,r){var n=f(Pa,PP,t),a=FP(t),i=l($a,UP,L(mr,a),r),o=i.a,u=i.b,s=jP(u);return l(fw,e,n,f(Na,s,xa(o)))}),GP=r(function(e,t){for(;;){if(!t.b)return!1;var r=t.a,n=r.a,a=t.b;if($(e,n))return!0;var i=e,o=a;e=i,t=o}}),zP=r(function(e,t){e:for(;;){if(t.b){var r=t.a,n=r.a,a=t.b,i="_"+n;if(f(GP,i,a)){var o=i,u=a;e=o,t=u;continue e}return i}return e}}),YP=r(function(e,t){return L(f(zP,"_",t),jP(e))}),WP=n(function(e,t,r){var n=f(Pa,PP,t),a=FP(t),i=l($a,DP,L(mr,a),r),o=i.a,u=i.b,s=f(YP,u,o);return l(cw,e,n,f(Na,s,xa(o)))}),JP=a(function(e,t,r,n){var a=f(Pa,PP,r),i=FP(r),o=l($a,DP,L(mr,i),n),u=o.a,s=o.b,c=f(YP,s,u);return d(xP,e,t,a,f(Na,c,xa(u)))}),QP=a(function(e,t,r,n){var a=f(Pa,PP,r),i=FP(r),o=l($a,UP,L(mr,i),n),u=o.a,s=o.b,c=jP(s);return d(_P,e,t,a,f(Na,c,xa(u)))}),XP=function(e){switch(e.$){case"Unstyled":return e.a;case"Node":var t=e.a,r=e.b,n=e.c;return l(qP,t,r,n);case"NodeNS":var a=e.a,t=e.b,r=e.c,n=e.d;return d(QP,a,t,r,n);case"KeyedNode":var t=e.a,r=e.b,n=e.c;return l(WP,t,r,n);default:var a=e.a,t=e.b,r=e.c,n=e.d;return d(JP,a,t,r,n)}},ZP=XP,eD=function(e){return O_(ZP(d(kP,Q_,F([z_(F([K_(j_)]))]),mr,F([$P(e)]))))},tD=Q,rD=i(function(e,t,r,n,a){return{$:"Padding",a:e,b:t,c:r,d:n,e:a}}),nD=n(function(e,t,r){return{$:"Spaced",a:e,b:t,c:r}}),aD=function(e){return l(La,r(function(e,t){var r=t.a,n=t.b;return L(function(){if("Just"===r.$){r.a;return r}if("StyleClass"===e.$&&"PaddingStyle"===e.b.$){var t=e.b,n=t.a,a=t.b,i=t.c,o=t.d,u=t.e;return ci(h(rD,n,a,i,o,u))}return fi}(),function(){if("Just"===n.$){var t=n.a;return n}if("StyleClass"===e.$&&"SpacingStyle"===e.b.$){var r=e.b,a=r.a,t=r.b,i=r.c;return ci(l(nD,a,t,i))}return fi}())}),L(fi,fi),e)},iD=r(function(e,t){var r=aD(e),n=r.a,a=r.b;if("Nothing"===a.$)return d(wA,MN,Uk,f(Na,IA(jT.contentLeft+" "+jT.contentCenterY+" "+jT.wrapped),f(Na,PT(_T),f(Na,$T(_T),e))),OT(t));var i=a.a,o=i.a,u=i.b,s=i.c,c=function(){if("Just"===n.$){var e=n.a,t=(e.a,e.b),r=e.c,a=e.d,i=e.e;return _(r,u/2|0)>-1&&_(a,s/2|0)>-1?ci($$({bottom:a-(s/2|0),left:i-(u/2|0),right:r-(u/2|0),top:t-(s/2|0)})):fi}return fi}();if("Just"===c.$){var h=c.a;return d(wA,MN,Uk,f(Na,IA(jT.contentLeft+" "+jT.contentCenterY+" "+jT.wrapped),f(Na,PT(_T),f(Na,$T(_T),O(e,F([h]))))),OT(t))}var p=-s/2,g=-u/2;return d(wA,FT,Uk,e,OT(F([d(wA,MN,Uk,f(Na,IA(jT.contentLeft+" "+jT.contentCenterY+" "+jT.wrapped),f(Na,DT(f(W$,"margin",xw(p)+"px "+xw(g)+"px")),f(Na,DT(f(W$,"width","calc(100% + "+Ri(u)+"px)")),f(Na,DT(f(W$,"height","calc(100% + "+Ri(s)+"px)")),f(Na,f($A,SN,l(EN,o,u,s)),mr))))),OT(t))])))}),oD=i(function(e,t,r,n,a){var i=f(b_,F([PT(Hk(80)),$T(Hk(40)),gN(24),tR,S$(UR),U_(r)]),{label:Px("currency type"),onChange:f(yo,tD,n),placeholder:fi,text:t}),o=f(Eh,t,XR),u=function(){var r=L(e,o);if(r.a){if("Just"===r.b.$)return Vk;r.b;return f(iD,F([PT(Hk(350)),S$(DR),T$(1),qk(Qk),ZN(10),CN]),f(Pa,function(e){var t=e.a,r=e.b,a=r.b;return f(FN,F([PT(Hk(80)),wN(9),f(eN,0,5),U_(n(t)),gR(F([qk(l(kA,.8,.8,1))]))]),F([f(o$,F([$T(Hk(26))]),a),f(Ok,F([gN(16),dN]),eD(t))]))},Aa(L_(t))))}return Vk}();return f(FN,F([wN(4),E_(u)]),F([f(Ok,F([fN(a)]),D_(t)),i]))}),uD=i(function(e,t,r,n,a){var i=j$(d(ed,"click","misclick","currency flag",0)),o=f(Ok,F([fN(j$(d(ed,"click","misclick","currency symbol",0)))]),Qp(ZR(e))),u=f(Ok,F([E_(f(ix,F([Nx,T_(5)]),a))]),h(oD,r,e,K$(!0),x_,i));return p(C_,F([PT(Hk(250)),tR,gN(24),E_(f(ix,F([Nx,T_(5)]),n))]),L(ci(o),ci(u)),"fiat input",fi,t,$_)}),sD=function(e){return B_(f(k_,"For fiat",h(uD,e.inputs.fiatType,e.inputs.fiatAmount,e.showFiatTypeDropdown,e.errors.fiatAmount,e.errors.fiatType)))},cD=function(e){return{$:"ChangeRole",a:e}},fD=r(function(e,t){var r=F([gN(24),tR,nN]),n=function(){return"Buyer"===t.$?L(r,O(r,F([_A(O$)]))):L(O(r,F([_A(O$)])),r)}(),a=n.a,i=n.b;return f(FN,F([wN(20)]),F([f(Ok,O(F([fN(cD(Of))]),i),Qp("Sell "+Qf(e))),f(Ok,O(F([fN(cD(ay))]),a),Qp("Buy "+Qf(e)))]))}),lD=function(e){return f(k_,"Trade Type",f(fD,e.web3Context.factoryType,e.inputs.userRole))},dD=hw(19),hD=function(e){return Sl(F([e.inset?"box-inset":"box-",xw(e.offset.a)+"px",xw(e.offset.b)+"px",xw(e.blur)+"px",xw(e.size)+"px",xA(e.color)]))},pD=function(e){var t={blur:e.blur,color:e.color,inset:!1,offset:e.offset,size:e.size};return f($A,dD,l(aA,hD(t),"box-shadow",Lw(t)))},gD=pD({blur:20,color:d(vR,0,0,0,.04),offset:L(0,3),size:0}),vD=f(rN,SN,jT.spaceEvenly),yD=function(e){return f(UN,F([PT(Fk),wN(20),qk(Qk),iN(5),ZN(20),gD]),F([f(FN,F([PT(Fk),vD]),F([lD(e),N_(e),sD(e)])),R_(e)]))},mD=function(e){return{$:"CreateClicked",a:e}},bD={$:"Web3Connect"},CD=function(e){return f(Ok,F([CN]),function(){if("Just"===e.$){var t=e.a;return f(yx,"Open Trade",mD(t))}return f(yx,"Connect to Wallet",bD)}())},SD=function(e){return{$:"AutoabortIntervalChanged",a:e}},ED=function(e){return{$:"ChangePaymentMethodText",a:e}},TD=r(function(e,t){return{$:"Placeholder",a:e,b:t}}),wD=TD,ID=function(e){return f(wD,F([_A(d(u$,0,0,0,.2))]),function(){return Qp("Seller"===e.$?"Some examples:\n\nI can accept transfers to a Schwab bank account (routing 121202211)\nI can meet in person to accept cash in London, weekdays after 6, with a day of notice.\nHide the cash in Hume Park, Bulawayo, and tell me the location over chat.":"Some examples:\n\nI can deliver cash anywhere within an hour drive of Phoneix, AZ, with 2 days of notice.\nTransferWise\nInterac e-Transfer\n")}())},AD={$:"TextArea"},BD=r(function(e,t){return l(m_,{autofill:fi,spellchecked:t.spellcheck,type_:AD},e,{label:t.label,onChange:t.onChange,placeholder:t.placeholder,text:t.text})}),kD=n(function(e,t,r){var n=f(Ok,F([gN(22),dN]),Qp("Payment Method")),a=f(BD,F([PT(Fk),$T(Hk(150)),qk(d(vR,155,203,255,.2)),T$(0)]),{label:Px("payment method"),onChange:ED,placeholder:""===r?ci(ID(t)):fi,spellcheck:!0,text:r});return f(UN,F([wN(20),$$({bottom:15,left:45,right:45,top:0}),PT(Fk),ux(f(ix,F([Nx,T_(30),ZN(10),gN(20),PT(Hk(400))]),e))]),F([n,a]))}),ND=function(e){return"Buyer"===e.$?"After committing, you and the Seller have this long to complete the fiat payment, using one of your payment methods indicated below. If you fail to confirm payment within this window, 1/4 of your deposit is burned from both parties and the rest is refunded.":"After committing, you and the Buyer have this long to complete the fiat payment, using one of your payment methods indicated below. If the Buyer aborts or fails to confirm within this window, 1/12 of the trade amount is burned from both parties and the rest is refunded."},RD=a(function(e,t,r,n){var a=l(hs,e,D("0"),Ri(n));return f(Ok,F([gN(22),_A(t)]),Qp(O(a,r)))}),$D=function(e){return Gl(e)<0?Ff(0):e},xD=JR({description:"down",src:"/DAIHard/static/img/arrow-down.svg"}),_D=JR({description:"up",src:"/DAIHard/static/img/arrow-up.svg"}),LD=n(function(e,t,n){var a=r(function(e,r){return f(UN,F([wN(4)]),F([f(Ok,F([ZN(4),nN,fN(n(f(Nb,t,e)))]),f(o$,F([$T(Hk(10))]),_D)),r,f(Ok,F([ZN(4),nN,fN(n(function(e){return Gl(e)?e:Ff(3e5)}($D(f(_R,t,e)))))]),f(o$,F([$T(Hk(10))]),xD))]))}),i=jR(t);return f(FN,F([vD,wN(10)]),F([f(a,Ff(864e5),d(RD,3,e," days",i.days)),f(a,Ff(36e5),d(RD,2,e," hours",i.hours)),f(a,Ff(3e5),d(RD,2,e," min",i.min))]))}),PD=o(function(e,t,r,n,a,i){var o=f(Ok,F([qk(d(vR,155,203,255,.2)),iN(5),ZN(15),ux(f(ix,F([Nx]),a))]),l(LD,DR,n,i)),u=f(FN,F([wN(30)]),F([f(o$,F([$T(Hk(40)),fN(j$(d(ed,"click","misclick","symbol for "+t,0)))]),e),f(Ok,F([gN(22),dN]),Qp(t))])),s=f(BN,F([gN(17),tR,_A(dx)]),F([Qp(r)]));return f(UN,F([PT(Fk),iN(10),qk(l(Lk,237,237,237)),wN(2)]),f(Pa,Ok(F([qk(Qk),f(eN,45,18),PT(Fk)])),F([u,f(FN,F([PT(Fk),wN(25),qk(Qk)]),F([o,s]))])))}),DD=JR({description:"fiat",src:"/DAIHard/static/img/fiat-bag-white.svg"}),UD=f(rN,JN,jT.clipX),OD=f(rN,JN,jT.clipY),MD=i(function(e,t,r,n,a){return f(UN,F([wN(15),iN(8),UD,OD,qk(Qk)]),F([p(PD,DD,"Payment Window",ND(a),r,n,SD),l(kD,t,a,e)]))}),FD=function(e){return{$:"AutoreleaseIntervalChanged",a:e}},VD=function(e){return"Buyer"===e.$?"Once you confirm payment, the Seller has this time window to decide whether to release the funds to you or burn everything. If he doesn't decide before the time is up, funds are released to you by default.":"Once the Buyer confirms payment, you have this long to decide whether to release the funds to the Buyer or, in the case of an attempted scam, burn everything. If you don't decide before the time is up, funds are released to the Buyer by default."},KD=JR({description:"",src:"/DAIHard/static/img/release-window-icon.svg"}),HD=n(function(e,t,r){return f(Ok,F([iN(8),UD,OD,qk(Qk)]),p(PD,KD,"Burn/Release Window",VD(r),e,t,FD))}),jD=function(e){return{$:"AutorecallIntervalChanged",a:e}},qD=function(e){var t=function(){return"Buyer"===e.$?"Seller":"Buyer"}();return"The offer will expire by this time window if a "+t+" does not commit to the trade, returning the balance and the 1% fee to your wallet. This can also be manually triggered anytime before a "+t+" commits."},GD=JR({description:"",src:"/DAIHard/static/img/open-window-icon.svg"}),zD=n(function(e,t,r){return f(Ok,F([iN(8),qk(Qk),UD,OD]),p(PD,GD,"Open Window",qD(r),e,t,jD))}),YD=function(e){return f(UN,F([PT(Fk),wN(20)]),F([l(zD,e.inputs.autorecallInterval,e.errors.autorecallInterval,e.inputs.userRole),h(MD,e.inputs.paymentMethod,e.errors.paymentMethod,e.inputs.autoabortInterval,e.errors.autoabortInterval,e.inputs.userRole),l(HD,e.inputs.autoreleaseInterval,e.errors.autoreleaseInterval,e.inputs.userRole)]))},WD=function(e){return f(UN,F([PT(f(nx,1e3,Fk)),CN,wN(20),$$({bottom:30,left:40,right:40,top:0}),fN(K$(!1)),tx(Ax(e))]),F([yD(e),YD(e),CD(e.userInfo)]))},JD=cs(Ym(8226)),QD=r(function(e,t){if(t.b){var n=t.a,a=t.b,i=r(function(t,r){return f(Na,e,f(Na,t,r))}),o=l(La,i,mr,a);return f(Na,n,o)}return mr}),XD=r(function(e,t){return l($a,Na,t,e)}),ZD=n(function(e,t,r){for(;;){if(!(t>0))return e;var n=f(XD,r,e),a=t-1,i=r;e=n,t=a,r=i}}),eU=r(function(e,t){var r=wi(t);return!r||$(r,e)?t:_(r,e)<0?xa(f(XD,f(Ys,e%r,t),l(ZD,mr,e/r|0,t))):f(Ys,e,t)}),tU=a(function(e,t,r,n){for(;;){if(!r.b)return xa(n);var a=r.a,i=r.b,o=e(a);if(f(ww,o,t)){var u=e,s=t,c=i,l=n;e=u,t=s,r=c,n=l}else{var u=e,s=f(DE,o,t),c=i,l=f(Na,a,n);e=u,t=s,r=c,n=l}}}),rU=function(e){return d(tU,Oa,wm,e,mr)},nU=r(function(e,t){return f(Ok,F([PT(Fk),tx(f(FN,F([wN(3),PT(XN(100)),PT(t),QN]),f(QD,f(Ok,F([_A(d(u$,0,0,0,.1)),gN(14)]),Qp(JD)),f(Pa,f(Ua,Ok(F([_A(d(u$,0,0,0,.2))])),Qp),f(eU,100,(e?xa:Oa)(rU(f(Pa,f(yo,zo,Xa),Aa(XR)))))))))]),Qp(" "))}),aU=r(function(e,t){var r=t.url,n=t.label;return d(wA,FT,UT("a"),f(Na,DT(BT(r)),f(Na,DT(kT("noopener noreferrer")),f(Na,PT(_T),f(Na,$T(_T),f(Na,IA(jT.contentCenterX+" "+jT.contentCenterY),e))))),OT(F([n])))}),iU=function(){var e=f(Ua,Ok(F([_A(l(kA,.8,.2,.2))])),Qp),t=f(Ua,Ok(F([kN])),Qp);return f(UN,F([PT(Fk),$T(Fk),qk(Qk),iN(6),wN(50),pD({blur:20,color:d(vR,0,0,0,.1),offset:L(0,3),size:0}),iN(10),ZN(20)]),F([f(nU,!1,Fk),f(UN,F([CN,PT(f(nx,700,Fk)),wN(20)]),F([f(BN,F([gN(70),kN,CN,bx]),F([Qp("DAI"),e("Hard")])),f(FN,F([gN(30),dN,CN,bx,$N]),F([Qp("The "),e("Global"),Qp(", "),e("Unkillable"),Qp(" Crypto Gateway")]))])),f(FN,F([qk(A$),wN(2),CN,Z$,PT(Fk)]),F([f(Ok,F([f(eN,40,10),qk(Qk),PT(Fk),$T(Fk)]),f(UN,F([wN(60),LN]),F([f(Ok,F([gN(40),dN,CN]),Qp("Want to learn more?")),f(UN,F([wN(15)]),F([f(aU,F([iN(4),PT(Fk),nN,f(eN,25,17),qk(L$),_A(Qk),kN,gN(24),CN]),{label:f(BN,F([bx]),F([Qp("Go to the DAIHard Info page")])),url:"https://daihardhome.wpcomstaging.com/2019/07/24/re-launch-test-post/"}),f(aU,F([iN(4),PT(Fk),nN,f(eN,25,17),qk(L$),_A(Qk),kN,gN(24),CN]),{label:f(BN,F([bx]),F([Qp("Join the Telegram Group")])),url:"https://t.me/daihardexchange_group"})]))]))),f(Ok,F([f(eN,40,10),qk(Qk),PT(Fk),$T(Fk)]),f(UN,F([_x,wN(60)]),F([f(Ok,F([gN(40),dN,CN]),Qp("Ready to try it out?")),f(UN,F([wN(10),PT(Hk(400)),CN]),F([f(BN,F([gN(24),PT(Fk)]),F([Qp("Make sure your web3 wallet is unlocked (we recommend using Nifty Wallet over Metamask).")])),f(BN,F([gN(24),PT(Fk)]),F([Qp("Then follow the links at the top of this page to browse "),t("Sell Offers"),Qp(", browse "),t("Buy Offers"),Qp(", or "),t("Create Your Own Offer"),Qp(".")]))]))])))])),f(Ok,F([Tx,PT(Fk)]),f(nU,!0,Fk))]))}(),oU=function(e){return{$:"ShowCurrencyDropdown",a:e}},uU=n(function(e,t,r){return f(yo,eh(t(e)),qN(r))}),sU={$:"AutoabortWindow"},cU={$:"AutoreleaseWindow"},fU={$:"Expiring"},lU={$:"Fiat"},dU={$:"Margin"},hU={$:"TradeAmount"},pU=function(e){var t=e.a,r=e.b;return f(Ok,F([PT(XN(t)),$T(Hk(60)),QN,qk(Qk)]),f(Ok,F([ZN(12),WN,PT(Fk)]),r))},gU={$:"Descending"},vU=r(function(e,t){return{$:"SortBy",a:e,b:t}}),yU=function(e){return f(Ok,F([tR,gN(17)]),Qp(e))},mU=n(function(e,t,r){return f(FN,F([wN(8)]),F([yU(e),f(UN,F([wN(2)]),F([f(Ok,F([ZN(4),nN,fN(f(vU,t,cv))]),f(o$,F([PT(Hk(8)),CN,WN]),_D)),f(Ok,F([ZN(4),nN,fN(f(vU,t,gU))]),f(o$,F([PT(Hk(8)),CN,WN]),xD))]))]))}),bU=r(function(e,t){var r=function(){return"Buyer"===e.$?yN:VR}(),n=_(Gl(t.parameters.autoabortInterval),216e5)<0?r:DR;return d(qR,mr,mr,L(n,UR),t.parameters.autoabortInterval)}),CU=r(function(e,t){var r=function(){return"Buyer"===e.$?VR:yN}(),n=_(Gl(t.parameters.autoabortInterval),216e5)<0?r:DR;return d(qR,mr,mr,L(n,UR),t.parameters.autoreleaseInterval)}),SU=r(function(e,t){var r=f(LR,e,t);if("TimeLeft"===r.$){var n=r.a,a=f(zR,n.a,n.b)<.05?yN:DR;return d(YR,F([PT(Fk)]),F([gN(16)]),L(a,UR),n)}var i=r.a;return d(YR,F([PT(Fk)]),F([gN(16)]),L(yN,UR),L(Ff(0),i))}),EU=function(e){return s$(e.terms.price)},TU=function(e){var t=Bu(100*e),r=t-ei(t),n=Ri(ei(t)),a=f(ti,0,3-Lo(n));return n+(function(){if(a){return f(Mo,a+1,f(Do,1,xw(r)))}return""}()+"%")},wU=r(function(e,t){return JR({description:"",src:function(){var r=L(e,t);if(r.a){if("Just"===r.b.$)return r.b.a?"/DAIHard/static/img/margin-up-green.svg":"/DAIHard/static/img/margin-up-red.svg";r.b;return"/DAIHard/static/img/margin-up.svg"}if("Just"===r.b.$)return r.b.a?"/DAIHard/static/img/margin-down-green.svg":"/DAIHard/static/img/margin-down-red.svg";r.b;return"/DAIHard/static/img/margin-down.svg"}()})}),IU=n(function(e,t,r){return f(o$,f(Na,$T(Hk(34)),e),f(wU,t,r))}),AU=r(function(e,t){var r=TU(t);if("0%"===r)return f(Ok,F([gN(16)]),Qp("0%"));var n=r,a=t>=0,i=!(a!==e),o=i?VR:yN;return f(FN,F([wN(4)]),F([l(IU,mr,a,ci(i)),f(Ok,F([_A(o),gN(16)]),Qp(n))]))}),BU=r(function(e,t){return f(yc,Vk,f(jf,AU(t),e.derived.margin))}),kU=function(e){return f(yc,Vk,f(jf,f$,Xf(e)))},NU=function(e){return g$(e.parameters.tradeAmount)},RU=function(e){return{$:"TradeClicked",a:e}},$U=function(e){return f(kR,F([qk(d(vR,16,7,234,.2)),ZN(11),iN(4),PT(Fk),gR(F([qk(d(vR,16,7,234,.4))]))]),{label:f(Ok,F([CN,_A(l(Lk,16,7,234)),tR]),Qp("View Offer")),onPress:ci(RU(e))})},xU=n(function(e,t,r){return f(FN,F([PT(Fk),wN(1),qk(UR)]),F([f(UN,F([PT(Fk),wN(1),PT(XN(7))]),F([f(FN,F([PT(XN(6)),wN(1)]),f(Pa,pU,F([L(2,f(SU,e,r)),L(1,NU(r)),L(2,EU(r)),L(1,f(BU,r,!$(t,ay))),L(2,f(bU,t,r)),L(2,f(CU,t,r))]))),pU(L(1,kU(r.terms.paymentMethods)))])),f(Ok,F([PT(XN(1)),$T(Fk),QN,qk(Qk)]),f(Ok,F([CN,WN]),$U(r.id)))]))}),_U=n(function(e,t,r){var n=function(){return"Buyer"===r.browsingRole.$?"Selling":"Buying"}();return f(UN,F([PT(Fk),$T(Fk),ZN(30),wN(5)]),F([f(FN,F([PT(Fk)]),F([f(FN,F([PT(XN(7))]),F([pU(L(2,l(mU,"Expires",fU,fi))),pU(L(1,l(mU,n,hU,fi))),pU(L(2,l(mU,"For Fiat",lU,fi))),pU(L(1,l(mU,"Margin",dU,fi))),pU(L(2,l(mU,"Payment Window",sU,fi))),pU(L(2,l(mU,"Auto-Release",cU,fi)))])),f(Ok,F([PT(XN(1))]),Vk)])),f(UN,F([PT(Fk),T$(2),iN(8),S$(A$),wN(1),qk(A$),QN]),f(Pa,f(xU,e,r.browsingRole),t))]))}),LU=n(function(e,t,r){var n=d(uU,e,r.filterFunc,r.sortFunc,B$(t)),a=function(e){return f(Ok,F([gN(24),dN,_A(A$),CN,ZN(20)]),Qp(e))},i=L(t.dataFetchStatus.total,n);if("Nothing"===i.a.$){i.a;return a("Querying Factory contract...")}if(i.a.a){if(i.b.b){var o=i.a.a;return l(_U,e,n,r)}var o=i.a.a;return a(_(t.dataFetchStatus.loaded,o-t.dataFetchStatus.invalid)<0?"Searching trades for Open offers...":"No open offers found.")}return a("No trades found.")}),PU={$:"ApplyInputs"},DU=f(kR,F([qk(L$),ZN(10),iN(5)]),{label:f(Ok,F([_A(Qk),CN,WN]),Qp("Apply")),onPress:ci(PU)}),UU=function(e){var t=e.topLeft,r=e.topRight,n=e.bottomLeft,a=e.bottomRight;return f($A,aN,l(aA,"br-"+Ri(t)+"-"+Ri(r)+Ri(n)+"-"+Ri(a),"border-radius",Ri(t)+"px "+Ri(r)+"px "+Ri(a)+"px "+Ri(n)+"px"))},OU=function(e){return f(sN,"focus",Vi(e))},MU=f(Ua,DT,OU),FU=s(function(e,t,r,n,a,i,o,u){var s=function(){if("Nothing"===o.$)return mr;var e=o.a;return F([MU(e(!0)),U_(e(!0))])}();return f(FN,O(e,F([$T(Hk(40)),pD({blur:20,color:d(vR,233,237,242,.05),offset:L(0,3),size:0})])),F([f(Ok,F([qk(UR),$T(Hk(40)),UU({bottomLeft:4,bottomRight:0,topLeft:4,topRight:0})]),f(Ok,F([WN,f(eN,10,0)]),r)),f(b_,O(s,O(t,F([PT(Hk(100)),$T(Hk(40)),S$(UR),UU({bottomLeft:0,bottomRight:4,topLeft:0,topRight:4}),A_({bottom:1,left:0,right:1,top:1})]))),{label:Px(n),onChange:u,placeholder:i,text:a})]))}),VU=function(e){return{$:"MaxDaiChanged",a:e}},KU=function(e){return{$:"MinDaiChanged",a:e}},HU=r(function(e,t){return f(UN,F([PT(Fk),wN(8)]),F([f(Ok,F([gN(17),tR]),Qp(e)),t]))}),jU=hw(25),qU=function(e){return{$:"MoveX",a:e}},GU=function(e){return f(fR,jU,qU(-e))},zU={$:"OnLeft"},YU=function(e){return f(sR,zU,e)},WU=a(function(e,t,r,n){var a=h$(F([WN])),i=f(FN,F([wN(8),WN,PT(Hk(60))]),F([a,f(Ok,F([gN(16),WN]),Qp("max"))])),o=f(FN,F([wN(8),WN,PT(Hk(60))]),F([a,f(Ok,F([gN(16),WN]),Qp("min"))]));return f(HU,Qf(e)+" Range",f(UN,F([wN(5),PT(Hk(200))]),F([v(FU,F([YU(f(ix,F([GU(5),PT(Hk(200))]),n.minDai))]),F([MU(oU(!1))]),o,"min "+Qf(e),t,fi,fi,KU),v(FU,F([YU(f(ix,F([GU(5),PT(Hk(200))]),n.maxDai))]),F([MU(oU(!1))]),i,"max "+Qf(e),r,fi,fi,VU)])))}),JU=function(e){var t=f(Eh,e,XR);if("Nothing"===t.$)return Qp("*");var r=t.a,n=r.b;return f(o$,F([$T(Hk(26))]),n)},QU=function(e){return{$:"AppCmd",a:e}},XU=function(e){return{$:"FiatTypeInputChanged",a:e}},ZU=function(e){return{$:"MaxFiatChanged",a:e}},eO=function(e){return{$:"MinFiatChanged",a:e}},tO=i(function(e,t,r,n,a){var i=QU(d(ed,"click","misclick","currency flag",0)),o=JU(t),u=f(FN,F([wN(8),WN,PT(Hk(60))]),F([o,f(Ok,F([gN(16),WN]),Qp("max"))])),s=f(FN,F([wN(8),WN,PT(Hk(60))]),F([o,f(Ok,F([gN(16),WN]),Qp("min"))]));return f(HU,"Fiat Type",f(FN,F([wN(5),PT(_T)]),F([f(Ok,F([Z$,PT(Hk(120))]),h(oD,e,t,oU(!0),XU,i)),f(UN,F([wN(5),Z$,PT(Hk(200))]),F([v(FU,F([ux(f(ix,F([fx(5),PT(f(nx,200,_T))]),a.minFiat))]),F([MU(oU(!1))]),s,"min",r,fi,fi,eO),v(FU,F([E_(f(ix,F([T_(5),PT(f(nx,200,_T))]),a.maxFiat))]),F([MU(oU(!1))]),u,"max",n,fi,fi,ZU)]))])))}),rO={$:"AddSearchTerm"},nO=function(e){return{$:"PaymentMethodInputChanged",a:e}},aO=f(Md,"keyCode",oS),iO=function(e){return f(sN,"keyup",f(Wo,function(t){return 13===t?Vi(e):Jo(Ri(t))},aO))},oO=function(e){return f(HU,"Search Payment Methods",f(b_,F([Z$,PT(Hk(250)),$T(Hk(40)),S$(UR),pD({blur:20,color:d(vR,233,237,242,.05),offset:L(0,3),size:0}),J$(iO(rO))]),{label:Px("payment methods search"),onChange:nO,placeholder:fi,text:e}))},uO={$:"ResetSearch"},sO=f(kR,F([qk(L$),ZN(10),iN(5)]),{label:f(Ok,F([_A(Qk),CN,WN]),Qp("Reset")),onPress:ci(uO)}),cO=function(e){return{$:"RemoveTerm",a:e}},fO=function(e){return f(Ok,F([ZN(3),Z$,nN,fN(cO(e)),gN(10),_A(yN)]),Qp("x"))},lO=function(e){if(e.b){var t=e;return f(FN,F([PT(Fk),ZN(10),wN(10)]),f(Pa,function(e){return f(FN,F([qk(d(vR,16,7,234,.2)),iN(5),ZN(4),wN(3)]),F([Qp(e),fO(e)]))},t))}return Vk},dO=a(function(e,t,r,n){return f(UN,F([wN(10),PT(_T),CN]),F([f(FN,F([PT(_T),wN(10)]),F([f(Ok,F([PT(_T),Z$]),d(WU,e,t.minDai,t.maxDai,r)),f(Ok,F([PT(_T),Z$]),h(tO,n,t.fiatType,t.minFiat,t.maxFiat,r)),f(UN,F([PT(_T),Z$,wN(5)]),F([oO(t.paymentMethod),lO(t.paymentMethodTerms)])),f(HU," ",f(UN,F([wN(5),PT(_T)]),F([DU,sO])))]))]))}),hO=n(function(e,t,r){return f(UN,F([iN(5),qk(Qk),PT(Fk),$T(Fk),fN(oU(!1))]),F([f(FN,F([PT(Fk),wN(10),ZN(30)]),F([d(dO,r.web3Context.factoryType,r.inputs,r.errors,r.showCurrencyDropdown)])),l(LU,e,t,r)]))}),pO=f(yo,ku,Lm("USD")),gO=a(function(e,t,r,n){return{daiAmountIn:t,fiatValue:r,initiatorRole:e,intervals:n}}),vO=function(e){return Kv(f(zu,f(gl,ku(10),ku(18)),ku(e)))},yO=F([d(gO,Of,vO(5),pO(4),P(Ff(1728e5),Ff(1728e5),Ff(2592e5))),d(gO,ay,vO(2),pO(7),P(Ff(1728e5),Ff(1728e5),Ff(2592e5)))]),mO=function(e){return f(Gf,Mv(e),3)},bO=GR,CO=r(function(e,t){return p$(t)+" "+Qf(e)}),SO=r(function(e,t){return f(Ok,F([_A(bO),gN(20)]),Qp(f(CO,e,t)))}),EO=VR,TO=function(e){return"$"+Tl(e.amount)+" USD"},wO=function(e){return f(Ok,F([_A(EO),gN(20)]),Qp(TO(e)))},IO=function(e){return $(e,Ff(6048e5))?Qp("1 week"):b("QuickCreate.View",{start:{line:132,column:9},end:{line:132,column:19}})("lol bet u forgot about dis. summarizeIntervalElement is a hack! A dirty hack!!")},AO=r(function(e,t){var r=function(){return"Buyer"===t.initiatorRole.$?f(SO,e,f(ld,Mv(t),mO(t))):wO(t.fiatValue)}(),n=function(){return"Buyer"===t.initiatorRole.$?f(UN,F([wN(5)]),F([f(SO,e,t.daiAmountIn),wO(t.fiatValue)])):f(SO,e,t.daiAmountIn)}(),a=IO(function(e){var t=e.a,r=e.b,n=e.c;return f(Nb,n,f(Nb,r,t))}(t.intervals)),i=Qp("---\x3e");return f(UN,F([wN(8)]),F([f(FN,F([wN(4)]),F([n,i,r])),a]))}),BO=r(function(e,t){return d(vx,P(d(u$,0,0,1,1),d(u$,0,0,1,.8),d(u$,0,0,1,.6)),Qk,e,t)}),kO=function(e){return{$:"StartClicked",a:e}},NO=function(e){return f(BO,"Start",kO(e))},RO=n(function(e,t,r){return f(FN,F([wN(40)]),F([f(AO,e,r),t?NO(r):Vk]))}),$O=r(function(e,t){return{$:"OpenClicked",a:e,b:t}}),xO=r(function(e,t){if("Just"!==e.$)return f(lx,"Can't find userInfo...",ci("You shouldn't be seeing this. Maybe your web3 provider changed something just now?"));var r=e.a;if("Spec"!==t.$)return Vk;var n=t.a,a=t.b;switch(a.$){case"ApproveMining":a.a;return f(lx,"Mining Prepare tx...",fi);case"ReadyToOpen":return f(yx,"Open Trade",f($O,r,n));case"OpenNeedsSig":default:return Vk}}),_O=function(e){return{$:"TextInputChanged",a:e}},LO=function(e){return f(wD,mr,f(UN,F([wN(5)]),f(Pa,f(Ua,BN(mr),ME),function(){return F("Buyer"===e.$?[Qp("Some ideas:"),f(Ok,F([$N]),Qp("I can meet in NYC central park for a cash handoff after 6 pm.")),f(Ok,F([$N]),Qp("I'll send you $7 in Steam credit.")),f(Ok,F([$N]),Qp("TransferWise")),f(Ok,F([$N]),Qp("Cash drop in Hume Park, Bulawayo"))]:[Qp("Some ideas:"),f(Ok,F([$N]),Qp("I accept money orders or cashier checks into my Schwab bank account.")),f(Ok,F([$N]),Qp("Meet me at the Bangkok airport (BKK) on Saturday. I'm coming in on flight I453.")),f(Ok,F([$N]),Qp("Buy Dig Dog on Steam and gift it to me (syriven).")),f(Ok,F([$N]),Qp("Ship me a potato."))])}())))},PO=r(function(e,t){return f(BD,F([PT(Fk),$T(Hk(200))]),{label:Px("payment details"),onChange:_O,placeholder:""===t?ci(LO(e)):fi,spellcheck:!0,text:t})}),DO=r(function(e,t){return f(UN,F([wN(10)]),f(Pa,BN(mr),F([function(){return F("Seller"===e.$?[Qp("How must the "),wO(t),Qp(" be paid?")]:[Qp("How can you deliver the "),wO(t),Qp("?")])}(),F([Qp("You will be able to chat with the "),Qp(function(){return"Seller"===e.$?"buyer":"seller"}()),Qp(" to coordinate further once the trade is in progress.")])])))}),UO=function(e){return{$:"ApproveClicked",a:e}},OO=function(e){return{$:"ChangeState",a:e}},MO={$:"Web3Connect"},FO=n(function(e,t,r){return f(yc,Vk,function(){e:for(;;)if("Menu"===r.$)switch(r.a.$){case"StartPrompt":var n=r.a.a;return ci(l(ax,mr,f(UN,F([wN(15),CN,ZN(20)]),F([Qp("Text about approving"),function(){if("Just"===t.$){t.a;return f(BO,"Prepare "+p$(n.daiAmountIn)+" "+Qf(e)+" for deposit",UO(n))}return f(yx,"Connect to Wallet",MO)}()])),OO(Ev(Tv))));case"ApproveNeedsSig":var n=r.a.a;return ci(l(ax,mr,f(UN,F([wN(15),ZN(20),CN]),F([Qp("Waiting for sig text")])),OO(Ev(Tv))));default:break e}else switch(r.b.$){case"OpenNeedsSig":var n=r.a;r.b;return ci(l(ax,mr,f(UN,F([wN(15),ZN(20),CN]),F([Qp("Text about opening")])),OO(f(Dv,n,Pv))));case"OpenMining":var n=r.a;r.b;return ci(l(ax,mr,f(UN,F([wN(15),ZN(20),CN]),F([Qp("Opening trade. Note that if you close this modal or navigate away, the transaction could still complete."),Qp("You will be redirected when the trade is finished opening.")])),OO(Ev(Tv))));default:break e}return fi}())}),VO=function(e){return L(function(){var t=e.state;if("Menu"===t.$){t.a;return f(UN,F([wN(10),CN]),f(Pa,f(RO,e.web3Context.factoryType,!0),yO))}var r=t.a;t.b;return f(UN,F([wN(20),CN]),F([l(RO,e.web3Context.factoryType,!1,r),f(UN,F([wN(10),CN]),F([f(DO,r.initiatorRole,r.fiatValue),f(PO,r.initiatorRole,e.textInput),f(xO,e.userInfo,e.state)]))]))}(),F([l(FO,e.web3Context.factoryType,e.userInfo,e.state)]))},KO=function(e){return{$:"MessageInputChanged",a:e}},HO={$:"MessageSubmit"},jO=function(e){return f(UN,F([PT(Fk),wN(10)]),F([f(BD,F([PT(Fk),$T(Hk(100))]),{label:Px("messageInput"),onChange:KO,placeholder:fi,spellcheck:!1,text:e.messageInput}),f(kR,F([CN,gN(24)]),{label:Qp("Submit"),onPress:ci(HO)})]))},qO=f(rN,JN,jT.scrollbarsY),GO=r(function(e,t){return f(Ok,F([$T(Fk),PT(Fk)]),f(Ok,O(F([J$(f(W$,"position","absolute")),J$(f(W$,"top","0")),J$(f(W$,"right","0")),J$(f(W$,"bottom","0")),J$(f(W$,"left","0")),qO]),e),t))}),zO=l(Lk,200,205,210),YO=n(function(e,t,r){var n=F([LN,qk(L$),_A(Qk),UU({bottomLeft:15,bottomRight:0,topLeft:15,topRight:15})]),a=F([_x,qk(zO),_A(DR),UU({bottomLeft:0,bottomRight:15,topLeft:15,topRight:15})]),i=r.eventInfo;if("Statement"===i.$){var o=i.a,u=$(o.who,t)?n:a;return f(Ok,O(F([ZN(7)]),u),f(BN,mr,F([Qp(O(function(){return"Buyer"===o.who.$?"B: ":"S: "}(),function(){var e=o.message;switch(e.$){case"FailedDecode":return"DECODE FAILED";case"Encrypted":return"(encrypted data)";case"FailedDecrypt":return"DECRYPT FAILED";default:return e.a}}()))])))}var s=i.a,c=function(){switch(s.$){case"Initiated":return ci(P(l(kA,0,0,1),Qk,"Initiator opened the trade"));case"Recalled":return ci(P(l(kA,0,0,1),Qk,"Initiator recalled the trade"));case"Committed":var t=s.a,r=f(Mo,8,Zd(t))+"..";return ci(P(l(kA,1,0,1),Qk,r+" committed to the trade"));case"Aborted":return ci(P(l(kA,1,0,0),Qk,"Buyer aborted the trade"));case"Claimed":return ci(P(l(kA,0,1,0),Qk,"Buyer marked the fiat transfer complete"));case"Released":return ci(P(l(kA,0,0,1),Qk,"Seller released the "+Qf(e)+" and closed the contract"));default:return ci(P(l(kA,0,0,1),Qk,"Seller burned the "+Qf(e)+" and closed the contract"))}}();if("Nothing"===c.$)return Vk;var d=c.a,h=d.a,p=d.b,g=d.c;return f(Ok,F([iN(3),T$(1),S$(l(kA,1,0,1)),CN,qk(h)]),f(BN,F([_A(p)]),F([Qp(g)])))}),WO=n(function(e,t,r){if(r.b){var n=r;return f(GO,F([PT(Fk),$T(Fk),iN(5),T$(1),S$(DR),ZN(10)]),f(UN,F([PT(Fk),$T(Fk),wN(10)]),f(Pa,f(YO,e,t),n)))}return f(Ok,F([PT(Fk),$T(Fk),iN(5),T$(1),S$(DR),CN,_A(l(kA,.5,.5,.5)),$N]),Qp("no messages found."))}),JO=Sr,QO=function(e){return f(UN,F([PT(Fk),$T(Fk),wN(10),T$(1),iN(5),ZN(20)]),F([l(WO,e.web3Context.factoryType,e.userRole,f(JO,function(e){return e.blocknum},Ta(e.history))),jO(e)]))},XO=function(e){return f(Ok,F([qk(Qk),iN(8),gD,PT(Fk),$T(Fk)]),QO(e))},ZO={$:"ToggleChat"},eM=function(e){if(e.showChatHistory){var t=f(yc,Vk,f(jf,XO,e.chatHistoryModel));return f(Ok,F([$T(Fk),PT(Hk(500)),ZN(20),LN]),l(ax,F([$T(Fk),PT(Fk)]),f(Wi,$S,t),ZO))}return Vk},tM=function(e){return"Buyer"===e.initiatorRole.$?Of:ay},rM=function(e){return r$(e)+" "+e.fiatType},nM={$:"AbortAction"},aM=n(function(e,t,r){return{$:"ConfirmCommit",a:e,b:t,c:r}}),iM=function(e){var t=e.txChainStatus;if("Nothing"===t.$)return Vk;switch(t.a.$){case"ConfirmingCommit":var r=t.a,n=r.a,a=r.b,i=r.c,o=rM(n.terms.price),u=p$(Kv(i)),s=p$(n.parameters.tradeAmount)+" "+Qf(e.web3Context.factoryType),c=function(){return"Buyer"===tM(n.parameters).$?L(f(Ok,F([tR,_A(DR)]),Qp("buyer")),F([Qp("pay the seller "),f(Ok,F([_A(L$)]),Qp(o)),Qp(" in exchange for the "),f(Ok,F([_A(L$)]),Qp(s)),Qp(" held in this contract.")])):L(f(Ok,F([tR,_A(DR)]),Qp("seller")),F([Qp("accept "),f(Ok,F([_A(L$)]),Qp(o)),Qp(" from the buyer in exchange for the "),f(Ok,F([_A(L$)]),Qp(s)),Qp(" held in this contract.")]))}(),d=c.a,h=c.b;return l(ax,mr,f(UN,F([wN(20),ZN(20),CN,$T(Fk),bx]),F([f(Ok,F([gN(26),dN,CN,WN]),Qp("Just to Confirm...")),f(UN,F([wN(20),CN,WN]),f(Pa,BN(F([CN,gN(18),tR,_A(dx)])),O(F([O(F([Qp("You will deposit "),f(Ok,F([_A(L$)]),Qp(u+" "+Qf(e.web3Context.factoryType))),Qp(", thereby becoming the "),d,Qp(" of this trade. By doing so, you are agreeing to ")]),h)]),function(){return"Token"===e.web3Context.factoryType.$?F([F([Qp("(This ususally requires two Metamask signatures. Your "+Qf(e.web3Context.factoryType)+" will not be deposited until the second transaction has been mined.)")])]):mr}()))),f(Ok,F([Tx,CN]),f(yx,"Yes, I definitely want to commit to this trade.",l(aM,n,a,i)))])),nM);case"ApproveNeedsSig":t.a;return Cx(F([Qp("Waiting for user signature for the approve call."),Qp("(check Metamask!)"),Qp("Note that there will be a second transaction to sign after this.")]));case"ApproveMining":var p=t.a.a;return Cx(F([Qp("Mining the initial approve transaction..."),f(AA,F([wx,_A(L$)]),{label:Qp("See the transaction on Etherscan"),url:f(Sx,e.web3Context.factoryType,p)}),Qp("Funds will not leave your wallet until you sign the next transaction.")]));case"CommitNeedsSig":t.a;return Cx(F([Qp("Waiting for user signature for the final commit call."),Qp("(check Metamask!)"),Qp("This will make the deposit and commit you to the trade.")]));case"CommitMining":var p=t.a.a;return Cx(F([Qp("Mining the final commit transaction..."),f(AA,F([wx,_A(L$)]),{label:Qp("See the transaction"),url:f(Sx,e.web3Context.factoryType,p)})]));case"ConfirmingAction":var g=t.a.a;return l(ax,mr,f(UN,F([wN(20),ZN(20),CN,$T(Fk),bx]),F([f(Ok,F([gN(26),dN,CN,WN]),Qp("Just to Confirm...")),f(UN,F([wN(20),CN,WN]),f(Pa,BN(F([CN,gN(18),tR,_A(dx)])),function(){switch(g.$){case"Poke":case"Recall":return mr;case"Claim":return F([F([Qp('By clicking "Confirm Payment", you are claiming that you\'ve paid the Seller in a way they can verify. Only do this if you are sure the Seller will agree that they have the money--otherwise they may burn the '+Qf(e.web3Context.factoryType)+" rather than release it to you.")])]);case"Abort":return F([F([Qp("Aborting will incur a small penalty on both parties, and refund the rest of the "+Qf(e.web3Context.factoryType)+".")])]);case"Release":return F([F([Qp("Releasing the payment will irreversibly send the trade's balance to the Buyer. Only do this if you are certain you've received the full agreed-upon payment.")])]);default:return F([F([Qp("This will destroy the "+Qf(e.web3Context.factoryType)+" in the payment. Only do this if the Buyer has attempted to scam you, is nonresponsive, or for some reason has failed the payment.")])])}}())),f(Ok,F([Tx,CN]),function(e){return f(yx,e,JS(g))}(function(){switch(g.$){case"Poke":return"Poke";case"Recall":return"Recall";case"Claim":return"I understand. Confirm Payment";case"Abort":return"I understand. Abort the trade.";case"Release":return"I understand. Release the "+Qf(e.web3Context.factoryType)+".";default:return"I understand. Burn the "+Qf(e.web3Context.factoryType)+"."}}()))])),nM);case"ActionNeedsSig":var g=t.a.a;return Cx(F([Qp("Waiting for user signature for the "+XS(g)+" call."),Qp("(check Metamask!)")]));default:var v=t.a,g=v.a,p=v.b;return Vk}},oM=FN(F([PT(Fk),qk(Qk),iN(5),ZN(20),vD,gD])),uM=function(e){return f(FN,F([wN(8)]),F([f(o$,mr,d$),f(Ok,F([gN(24),tR]),Qp(p$(e)))]))},sM=r(function(e,t){var r=f(ag,Tb(e),f(jf,function(e){return e.address},t));return f(k_,function(){var t=L(e.parameters.initiatorRole,r);if("Buyer"===t.a.$){if("Just"===t.b.$&&"Initiator"===t.b.a.$){t.a,t.b.a;return"You're Buying"}t.a;return"Buying"}if("Just"===t.b.$&&"Initiator"===t.b.a.$){t.a,t.b.a;return"You're Selling"}t.a;return"Selling"}(),uM(e.parameters.tradeAmount))}),cM=function(e){return f(FN,F([wN(5)]),F([D_(e.fiatType),f(Ok,F([gN(24),tR]),Qp(rM(e)))]))},fM=function(e){return f(k_,"For Fiat",cM(e.terms.price))},lM=function(e){return"Buyer"===e.$?"Buyer":"Seller"},dM=l(Lk,250,165,22),hM=l(Lk,255,0,0),pM=l(Lk,0,255,0),gM=JR({description:"aborted",src:"/DAIHard/static/img/aborted.svg"}),vM=JR({description:"burned",src:"/DAIHard/static/img/burned.svg"}),yM=JR({description:"released",src:"/DAIHard/static/img/released.svg"}),mM={$:"ToggleStatsModal"},bM=function(e){return f(JO,Oa,e)},CM=n(function(e,t,n){var a=f(eh,function(e){return $(f(BS,e,n),ci(t))},f(eT,function(e){if("LoadedTrade"===e.$){var t=e.a;return ci(t)}return fi},Ta(e.trades))),i=wi(a),o=l($a,r(function(e,t){switch(e.state.closedReason.$){case"Released":return U(t,{amountReleased:f(ld,t.amountReleased,e.parameters.tradeAmount),numReleases:t.numReleases+1});case"Burned":return U(t,{amountBurned:f(ld,t.amountBurned,e.parameters.tradeAmount),numBurns:t.numBurns+1});case"Aborted":return U(t,{numAborts:t.numAborts+1});default:return t}}),{amountBurned:Wf,amountReleased:Wf,numAborts:0,numBurns:0,numReleases:0},a),u=f(jf,Ff,Xf(bM(f(eT,function(e){return function(e){return e?ci(e):fi}(Gl(e.phaseStartInfo.committedTime))},a))));return{amountBurned:o.amountBurned,amountReleased:o.amountReleased,asRole:t,firstTrade:u,numAborts:o.numAborts,numBurns:o.numBurns,numReleases:o.numReleases,numTrades:i}}),SM=function(e){return{$:"ViewUserHistory",a:e}},EM=f(jB,0,mr),TM=f(rN,lN,jT.textNormalWeight),wM=r(function(e,t){return ei(e/t)}),IM=n(function(e,t,r){for(;;){if(!r.b)return t+e;var n=r.a,a=r.b;if(_(n.start,t)<0)return t+n.offset;var i=e,o=t,u=a;e=i,t=o,r=u}}),AM=r(function(e,t){var r=e.a,n=e.b;return l(IM,r,f(wM,Gl(t),6e4),n)}),BM=r(function(e,t){return f(gs,24,f(wM,f(AM,e,t),60))}),kM=r(function(e,t){return f(gs,1e3,Gl(t))}),NM=r(function(e,t){return f(gs,60,f(AM,e,t))}),RM={$:"Apr"},$M={$:"Aug"},xM={$:"Dec"},_M={$:"Feb"},LM={$:"Jan"},PM={$:"Jul"},DM={$:"Jun"},UM={$:"Mar"},OM={$:"May"},MM={$:"Nov"},FM={$:"Oct"},VM={$:"Sep"},KM=function(e){var t=f(wM,e,1440)+719468,r=(t>=0?t:t-146096)/146097|0,n=t-146097*r,a=(n-(n/1460|0)+(n/36524|0)-(n/146096|0))/365|0,i=n-(365*a+(a/4|0)-(a/100|0)),o=(5*i+2)/153|0,u=o+(o<10?3:-9);return{day:i-((153*o+2)/5|0)+1,month:u,year:a+400*r+(u<=2?1:0)}},HM=r(function(e,t){switch(KM(f(AM,e,t)).month){case 1:return LM;case 2:return _M;case 3:return UM;case 4:return RM;case 5:return OM;case 6:return DM;case 7:return PM;case 8:return $M;case 9:return VM;case 10:return FM;case 11:return MM;default:return xM}}),jM=r(function(e,t){return f(gs,60,f(wM,Gl(t),1e3))}),qM={$:"Fri"},GM={$:"Mon"},zM={$:"Sat"},YM={$:"Sun"},WM={$:"Thu"},JM={$:"Tue"},QM={$:"Wed"},XM=r(function(e,t){switch(f(gs,7,f(wM,f(AM,e,t),1440))){case 0:return WM;case 1:return qM;case 2:return zM;case 3:return YM;case 4:return GM;case 5:return JM;default:return QM}}),ZM=n(function(e,t,r){return e.toAmPm(f(BM,t,r))}),eF=r(function(e,t){return KM(f(AM,e,t)).day}),tF=eF,rF=F([YM,GM,JM,QM,WM,qM,zM]),nF=r(function(e,t){return function(e){return e.a}(f(yc,L(0,YM),Xf(f(eh,function(r){return $(r.b,f(XM,e,t))},f(ki,r(function(e,t){return L(e,t)}),rF)))))}),aF=function(e){return l($a,Ra,0,e)},iF=r(function(e,t){return KM(f(AM,e,t)).year}),oF=function(e){return!f(gs,4,e)&&(!!f(gs,100,e)||!f(gs,400,e))},uF=r(function(e,t){switch(t.$){case"Jan":return 31;case"Feb":return oF(e)?29:28;case"Mar":return 31;case"Apr":return 30;case"May":return 31;case"Jun":return 30;case"Jul":case"Aug":return 31;case"Sep":return 30;case"Oct":return 31;case"Nov":return 30;default:return 31}}),sF=F([LM,_M,UM,RM,OM,DM,PM,$M,VM,FM,MM,xM]),cF=r(function(e,t){return f(yc,L(0,LM),Xf(f(eh,function(r){r.a;return $(r.b,f(HM,e,t))},f(ki,r(function(e,t){return L(e,t)}),sF))))}),fF=r(function(e,t){return 1+function(e){var t=e.a;e.b;return t}(f(cF,e,t))}),lF=r(function(e,t){var r=f(Ys,f(fF,e,t)-1,sF);return aF(f(Pa,uF(f(iF,e,t)),r))+f(tF,e,t)}),dF=r(function(e,t){return f(fF,e,t)/4|0}),hF=r(function(e,t){var r=Ri(t),n=e-Lo(r);return O(f($i,"",f(Pa,function(e){return"0"},f(Bi,1,n))),r)}),pF=function(e){return e?e<=12?e:e-12:12},gF=Bg(315576e5),vF=r(function(e,t){return Ff(gF*f(iF,e,t))}),yF=r(function(e,t){var r=f(vF,e,t),n=f(nF,e,r);return 1+((f(lF,e,t)+n)/7|0)}),mF=r(function(e,t){return Ri(f(iF,e,t))}),bF=a(function(e,t,r,n){switch(n.$){case"MonthNumber":return Ri(f(fF,t,r));case"MonthSuffix":return function(t){return O(Ri(t),e.toOrdinalSuffix(t))}(f(fF,t,r));case"MonthFixed":return f(hF,2,f(fF,t,r));case"MonthNameAbbreviated":return e.toMonthAbbreviation(f(HM,t,r));case"MonthNameFull":return e.toMonthName(f(HM,t,r));case"QuarterNumber":return Ri(1+f(dF,t,r));case"QuarterSuffix":return function(t){return O(Ri(t),e.toOrdinalSuffix(t))}(1+f(dF,t,r));case"DayOfMonthNumber":return Ri(f(tF,t,r));case"DayOfMonthSuffix":return function(t){return O(Ri(t),e.toOrdinalSuffix(t))}(f(tF,t,r));case"DayOfMonthFixed":return f(hF,2,f(tF,t,r));case"DayOfYearNumber":return Ri(f(lF,t,r));case"DayOfYearSuffix":return function(t){return O(Ri(t),e.toOrdinalSuffix(t))}(f(lF,t,r));case"DayOfYearFixed":return f(hF,3,f(lF,t,r));case"DayOfWeekNumber":return Ri(f(nF,t,r));case"DayOfWeekSuffix":return function(t){return O(Ri(t),e.toOrdinalSuffix(t))}(f(nF,t,r));case"DayOfWeekNameAbbreviated":return e.toWeekdayAbbreviation(f(XM,t,r));case"DayOfWeekNameFull":return e.toWeekdayName(f(XM,t,r));case"WeekOfYearNumber":return Ri(f(yF,t,r));case"WeekOfYearSuffix":return function(t){return O(Ri(t),e.toOrdinalSuffix(t))}(f(yF,t,r));case"WeekOfYearFixed":return f(hF,2,f(yF,t,r));case"YearNumberLastTwo":return f(Ho,2,f(mF,t,r));case"YearNumber":return f(mF,t,r);case"AmPmUppercase":return tD(l(ZM,e,t,r));case"AmPmLowercase":return cl(l(ZM,e,t,r));case"HourMilitaryNumber":return Ri(f(BM,t,r));case"HourMilitaryFixed":return f(hF,2,f(BM,t,r));case"HourNumber":return Ri(pF(f(BM,t,r)));case"HourFixed":return f(hF,2,pF(f(BM,t,r)));case"HourMilitaryFromOneNumber":return Ri(1+f(BM,t,r));case"HourMilitaryFromOneFixed":return f(hF,2,1+f(BM,t,r));case"MinuteNumber":return Ri(f(NM,t,r));case"MinuteFixed":return f(hF,2,f(NM,t,r));case"SecondNumber":return Ri(f(jM,t,r));case"SecondFixed":return f(hF,2,f(jM,t,r));case"MillisecondNumber":return Ri(f(kM,t,r));case"MillisecondFixed":return f(hF,3,f(kM,t,r));default:return n.a}}),CF=a(function(e,t,r,n){return f($i,"",f(Pa,l(bF,e,r,n),t))}),SF=o(function(e,t,r,n,a,i){return{toAmPm:a,toMonthAbbreviation:t,toMonthName:e,toOrdinalSuffix:i,toWeekdayAbbreviation:n,toWeekdayName:r}}),EF=function(e){return e>11?"pm":"am"},TF=function(e){switch(e.$){case"Jan":return"January";case"Feb":return"February";case"Mar":return"March";case"Apr":return"April";case"May":return"May";case"Jun":return"June";case"Jul":return"July";case"Aug":return"August";case"Sep":return"September";case"Oct":return"October";case"Nov":return"November";default:return"December"}},wF=function(e){switch(f(gs,100,e)){case 11:case 12:case 13:return"th";default:switch(f(gs,10,e)){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}}},IF=function(e){switch(e.$){case"Mon":return"Monday";case"Tue":return"Tuesday";case"Wed":return"Wednesday";case"Thu":return"Thursday";case"Fri":return"Friday";case"Sat":return"Saturday";default:return"Sunday"}},AF=p(SF,TF,f(yo,TF,Mo(3)),IF,f(yo,IF,Mo(3)),EF,wF),BF=CF(AF),kF={$:"MonthNameFull"},NF=kF,RF=function(e){return{$:"Text",a:e}},$F=RF,xF={$:"YearNumber"},_F=xF,LF=n(function(e,t,n){var a=r(function(e,t){return f(UN,F([gN(18),wN(6)]),F([f(Ok,F([kN]),Qp(e)),f(Ok,F([TM]),Qp(t))]))}),i=BF(F([NF,$F(", "),_F])),o=f(UN,F([wN(23),PT(Fk)]),O(f(Pa,function(e){var t=e.a,r=e.b;return f(a,t,r)},F([L("First Trade",function(){var e=n.firstTrade;if("Just"===e.$){var t=e.a;return f(i,EM,t)}return"No Committed Trades yet!"}()),L("Release Outcomes",Ri(n.numReleases)+" trades / "+p$(n.amountReleased)+" "+Qf(e)+" Released"),L("Abort Outcomes",Ri(n.numAborts)+" trades"),L("Burn Outcomes",Ri(n.numBurns)+" trades / "+p$(n.amountBurned)+" "+Qf(e)+" Burned")])),F([f(Ok,F([CN]),f(BO,"View User History",SM(n.asRole)))])));return f(UN,F([iN(8),UD,OD,qk(UR),wN(1),pD({blur:20,color:d(u$,0,0,0,.08),offset:L(0,0),size:0})]),F([f(Ok,F([PT(Fk),qk(Qk),ZN(17)]),f(N$,18,t)),f(Ok,F([PT(Fk),qk(Qk),ZN(17)]),o)]))}),PF=a(function(e,t,r,n){var a=l(CM,r,t.parameters.initiatorRole,t.parameters.initiatorAddress),i=lM(t.parameters.initiatorRole)+" Stats";return f(Ok,n?F([E_(f(Ok,F([T_(30),LN]),l(LF,e,t.parameters.initiatorAddress,a)))]):mr,f(k_,i,f(FN,F([PT(Fk),wN(20),nN,fN(mM)]),f(Pa,FN(F([wN(5)])),F([F([f(o$,F([$T(Hk(28))]),yM),f(Ok,F([gN(24),tR,_A(pM)]),Qp(l(hs,2,D("0"),Ri(a.numReleases))))]),F([f(o$,F([$T(Hk(28))]),gM),f(Ok,F([gN(24),tR,_A(dM)]),Qp(l(hs,2,D("0"),Ri(a.numAborts))))]),F([f(o$,F([$T(Hk(28))]),vM),f(Ok,F([gN(24),tR,_A(hM)]),Qp(l(hs,2,D("0"),Ri(a.numBurns))))])])))))}),DF=r(function(e,t){if("Token"===e.$){if("EthDai"===e.a.$){e.a;return"https://etherscan.io/address/"+Zd(t)}e.a;return"https://kovan.etherscan.io/address/"+Zd(t)}switch(e.a.$){case"Eth":e.a;return"https://etherscan.io/address/"+Zd(t);case"Kovan":e.a;return"https://kovan.etherscan.io/address/"+Zd(t);default:e.a;return"https://blockscout.com/poa/dai/address/"+Zd(t)}}),UF=n(function(e,t,r){return f(AA,e,{label:Qp(Zd(r)),url:f(DF,t,r)})}),OF=r(function(e,t){return f(k_,"Trade Status",f(UN,F([gN(24),tR,wN(8)]),F([Qp(function(){switch(e.state.phase.$){case"Open":return"Buyer"===e.parameters.initiatorRole.$?"Open Buy Offer":"Open Sell Offer";case"Committed":return"Committed";case"Judgment":return"Judgment";default:return"Closed"}}()),l(UF,F([gN(12),_A(L$),wx]),t,e.creationInfo.address)])))}),MF=o(function(e,t,r,n,a,i){return oM(F([f(OF,t,n),f(sM,t,r),fM(t),d(PF,n,t,a,i)]))}),FF=l(Lk,9,32,107),VF=JR({description:"chat",src:"/DAIHard/static/img/chat.svg"}),KF=f(Ok,F([iN(4),nN,fN(ZO),ZN(5),qk(l(Lk,22,0,255))]),f(o$,F([PT(Hk(42))]),VF)),HF=function(e){switch(e.$){case"NotClosed":return"";case"Recalled":return"Recalled";case"Aborted":return"Aborted";case"Released":return"Released";default:return"Burned"}},jF=function(e){return f(UN,F([iN(12),qk(UR),ZN(15),wN(15)]),F([f(Ok,F([gN(24),dN,$N]),Qp("Fiat Payment Method")),f(BN,F([gN(18),$T(_T),qk(Qk),pD({blur:5,color:d(u$,0,0,0,.2),offset:L(-3,3),size:0}),iN(3),ZN(5)]),F([f(yc,f(Ok,F([_A(O$),$N]),Qp("No payment methods found.")),f(jf,Qp,f(jf,function(e){return e.info},Xf(e))))]))]))},qF={$:"Active"},GF=function(e){return{$:"ExpandPhase",a:e}},zF=F([qk(FF),_A(Qk)]),YF=r(function(e,t){return{$:"Min",a:e,b:t}}),WF=r(function(e,t){return f(YF,e,t)}),JF=function(e){return F(e?[iN(12),Z$,$T(f(WF,380,_T))]:[iN(12),CN])},QF=F([qk(Qk)]),XF=JR({description:"flame",src:"/DAIHard/static/img/flame.png"}),ZF=r(function(e,t){return Kf(f(Wu,Hf(e),Hf(t)))}),eV=r(function(e,t){return d(vx,P(d(u$,1,.6,.2,1),d(u$,1,.6,.2,.8),d(u$,1,.6,.2,.6)),Qk,e,t)}),tV=n(function(e,t,r){return{$:"CommitClicked",a:e,b:t,c:r}}),rV=function(e){return{$:"ContractActionClicked",a:e}},nV={$:"Web3Connect"},aV=n(function(e,t,r){if("Just"===r.$){var n=r.a;return"TimeUp"===f(LR,e,t).$?Vk:f(FN,F([wN(8)]),function(){var e=P(t.state.phase,f(Tb,t,n.address),f(BS,t,n.address));e:for(;;)switch(e.a.$){case"Open":if("Just"===e.b.$){if("Initiator"===e.b.a.$){e.a,e.b.a;return F([f(Wi,JS,f(BO,"Remove and Refund this Trade",YS))])}break e}var r=(e.a,e.b,Hf(wb(t.parameters)));return F([f(yx,"Deposit and Commit to Trade",l(tV,t,n,r))]);case"Committed":if("Just"===e.c.$){if("Buyer"===e.c.a.$){e.a,e.c.a;return F([f(Wi,rV,f(eV,"Abort Trade",_S)),f(Wi,rV,f(yx,"Confirm Payment",FS)),KF])}e.a,e.c.a;return F([KF])}break e;case"Judgment":if("Just"===e.c.$){if("Seller"===e.c.a.$){e.a,e.c.a;return F([f(Wi,rV,f(yx,"Burn it All!",MS)),f(Wi,rV,f(BO,"Release Everything",WS)),KF])}e.a,e.c.a;return F([KF])}break e;default:break e}return mr}())}return f(yx,"Connect to Wallet",nV)}),iV={$:"Finished"},oV={$:"NotStarted"},uV=r(function(e,t){var r=L(HN(t),HN(e.state.phase)),n=r.a,a=r.b;return _(n,a)>0?oV:$(n,a)?qF:iV}),sV=n(function(e,t,r){for(;;){if(t<=0)return e;var n=f(Na,r,e),a=t-1,i=r;e=n,t=a,r=i}}),cV=r(function(e,t){return l(sV,mr,e,t)}),fV=i(function(e,t,r,n,a){var i=p$(f(ld,n.parameters.tradeAmount,n.parameters.buyerDeposit))+" "+Qf(e),o=p$(n.parameters.tradeAmount)+" "+Qf(e),u=f(FN,mr,f(cV,3,f(o$,F([$T(Hk(18))]),XF))),s=f(Ua,Ok(F([_A(l(kA,1,0,0))])),Qp),c=$(t,n.state.phase),d=f(ag,BS(n),f(jf,function(e){return e.address},a)),h=c?Qk:DR,p=BN(F([_A(h),gN(18),dN])),g=rM(n.terms.price),v=c?l(Lk,0,226,255):l(Lk,16,7,234),y=f(Ua,Ok(F([_A(v)])),Qp),m=p$(n.parameters.buyerDeposit)+" "+Qf(e),b=n.parameters.abortPunishment,C=p$(b)+" "+Qf(e),S=p$(f(ZF,n.parameters.buyerDeposit,b))+" "+Qf(e),E=p$(f(ZF,n.parameters.tradeAmount,b))+" "+Qf(e),T=function(){var r=L(t,d);if("Just"===r.b.$)switch(r.a.$){case"Open":var a=(r.a,r.b.a);return L("And Now, We Wait",function(){return"Buyer"===a.$?f(Pa,p,F([F([Qp("Your "),s("burnable deposit"),Qp(" of "),y(m),Qp(" is now held in this contract, and your offer to buy "),y(o),Qp(" for "),y(g),Qp(" is now listed in the marketplace.")]),F([Qp("If another user likes your offer, they can become the Seller by depositing the full "),y(o),Qp(" into this contract.")]),F([Qp("If no one commits within the Open Window, your offer will expire, refunding the "),y(m),Qp(" to you.")])])):f(Pa,p,F([F([Qp("Your offer to sell the "),y(o),Qp(" held in this contract for "),y(g),Qp(" is now listed in the marketplace.")]),F([Qp("If another user likes your offer, they can become the Buyer by depositing a "),s("burnable deposit"),Qp(" of 1/3 of the trade amount "),y("("+m+")"),Qp(" into this contract.")]),F([Qp("If no one commits within the Open Window, your offer will expire, refunding the "),y(o),Qp(" to you.")])]))}());case"Committed":if("Buyer"===r.b.a.$){r.a,r.b.a;return L("Time to Pay Up",f(Pa,p,F([F([Qp("You must now pay the Seller "),y(g),Qp(" via the Fiat Payment Method, "),f(Ok,F([dN]),Qp("and then click ")),s("Confirm Payment"),Qp(" before the payment window runs out. Use the chat to coordinate.")]),F([Qp("If you abort the trade, or do not confirm payment before this time is up, "),y(C),Qp(" (1/4 of the "),s("burnable deposit"),Qp(") will be "),s("burned"),Qp(" from both parties, while the remainder of each party's deposit is refunded ("),y(E),Qp(" to the Seller, "),y(S),Qp(" to you).")]),F([Qp("This may be your last chance to clear up any ambiguity before Judgement. Do not confirm unless you're sure the "),y(g),Qp(" has been unmistakably transferred.")])])))}r.a,r.b.a;return L("Time to Get Paid",f(Pa,p,F([F([Qp("Work and communicate with the Buyer to receive "),y(g),Qp(" as described in Fiat Payment Method. Then, the Buyer should confirm the payment, moving the trade to the final phase.")]),F([Qp("If the Buyer aborts the trade, or doesn't confirm payment before this time is up, "),y(C),Qp(" (1/4 of the "),s("burnable deposit"),Qp(") will be "),s("burned"),Qp(" from both parties, while the remainder of each party's deposit is refunded ("),y(E),Qp(" to you, "),y(S),Qp(" to the Buyer).")])])));case"Judgment":if("Buyer"===r.b.a.$){r.a,r.b.a;return L("Judgement",f(Pa,p,F([F([Qp("If the Seller confirms receipt of payment, or fails to decide within the Burn/Release Window, the combined balance of "),y(i),Qp(" will be released to you.")]),F([Qp("If they cannot confirm they've received payment from you, they will probably instead "),s("burn the contract's balance of "),y(i),s("."),Qp(" In this case the "),y(i),Qp(" will be lost to both parties.")]),F([Qp("These are the only options the Seller has. So, fingers crossed!")])])))}r.a,r.b.a;return L("Judgement",f(Pa,p,F([F([Qp("By pushing the contract to the final stage, the Buyer has indicated that the transfer has taken place, and awaits your judgement.")]),F([Qp("So, have you recieved the "),y(g),Qp("? If so, you can click "),y("Release Everything"),Qp(".")]),F([Qp("If not, the Buyer is probably trying to scam you, and you should probably "),s("burn it all"),Qp(". You're not getting it back either way, and you wouldn't want the other guy to get it, would you?")]),F([Qp("If you don't decide within the Burn/Release Window, the balance will be automatically released.")])])));default:r.a;return L("Contract closed.",F([p(F([Qp("Check the chat log for the full history.")]))]))}else switch(r.a.$){case"Open":r.a,r.b;return L("Get it while it's hot",function(){return"Seller"===n.parameters.initiatorRole.$?f(Pa,p,F([F([Qp("The Seller has deposited "),y(o),Qp(" into this contract, and offers to sell it for "),y(g),Qp(". To become the Buyer, you must deposit 1/3 of the trade amount "),y("("+m+")"),Qp(" into this contract by clicking "),s("Deposit and Commit to Trade"),Qp(".")]),F([Qp("If the trade is successful, the combined "+Qf(e)+" balance "),y("("+i+")"),Qp(" will be released to you. If anything goes wrong, there are "),s("burnable punishments "),u,Qp(" for both parties (see Payment Window for more on this).")]),F([Qp("Don't commit unless you can fulfil one of the seller’s accepted payment methods below for "),y(g),Qp(" within the payment window.")])])):f(Pa,p,F([F([Qp("The Buyer is offering to buy "),y(o),Qp(" for "),y(g),Qp(", and has deposited "),y(m),Qp(" into this contract as a "),s("burnable deposit"),Qp(". To become the Seller, deposit "),y(o),Qp(" into this contract by clicking "),s("Deposit and Commit to Trade"),Qp(".")]),F([Qp("When you receive the "),y(g),Qp(" from the Buyer, the combined "+Qf(e)+" balance "),y("("+i+")"),Qp(" will be released to the Buyer. If anything goes wrong, there are "),s("burnable punishments "),u,Qp(" for both parties (see Payment Window for more on this).")]),F([Qp("Don't commit unless you can receive "),y(g),Qp(" via one of the Buyer's payment methods below, within the payment window.")])]))}());case"Committed":r.a,r.b;return L("Making the Payment",f(Pa,p,F([F([Qp("During this phase, the Buyer is expected to transfer "),y(g),Qp(" to the Seller, as described in Fiat Payment Method, "),f(Ok,F([dN]),Qp("and ")),s("Confirm the Payment "),Qp(" before the payment window runs out. This would move the trade to the final phase.")]),F([Qp("If the Buyer aborts the trade, or doesn't confirm payment before this time is up, "),y(C),Qp(" (1/4 of the "),s("burnable deposit"),Qp(" amount) will be "),s("burned"),Qp(" from both parties, while the remainder of each party's deposit is refunded ("),y(E),Qp(" to the Seller, "),y(S),Qp(" to the Buyer).")])])));case"Judgment":r.a,r.b;return L("Judgement",f(Pa,p,F([F([Qp("The Buyer has indicated that the transfer has taken place, and awaits the Seller's judgement on the fact of the matter.")]),F([Qp("If the Seller can verify he has received the "),y(g),Qp(", he will probably release the total balance of "),y(o),Qp(" to the Buyer. If he cannot verify payment, he will probably instead "),s("burn it all"),Qp(".")]),F([Qp("If the Seller has not made a decision before the Burn/Release Window expires, the "),y(o),Qp(" will be automaticall released.")])])));default:r.a,r.b;return L("Contract closed.",mr)}}(),w=T.a,I=T.b;return f(UN,F([PT(Fk),$T(Fk),ZN(20),wN(30)]),F([f(FN,F([PT(Fk)]),F([f(Ok,F([gN(24),dN,_A(v),_x]),Qp(w))])),f(UN,F([PT(Fk),WN,wN(13)]),I),f(Ok,F([LN]),function(){switch(f(uV,n,t).$){case"Active":return l(aV,r,n,a);case"NotStarted":return f(Ok,F([gN(20),dN,$N,_A(A$)]),Qp("Phase not yet started."));default:return f(Ok,F([gN(20),dN,$N]),Qp("Phase no longer active."))}}())]))}),lV=JR({description:"committed phase",src:"/DAIHard/static/img/phase-committed.svg"}),dV=JR({description:"judgment phase",src:"/DAIHard/static/img/time-clock-fire.svg"}),hV={$:"None"},pV=hV,gV=JR({description:"open phase",src:"/DAIHard/static/img/diamond-give-white.svg"}),vV=function(e){switch(e.$){case"Open":return gV;case"Committed":return lV;case"Judgment":return dV;default:return pV}},yV=a(function(e,t,r,n){return{$:"RgbaSpace",a:e,b:t,c:r,d:n}}),mV=a(function(e,t,r,n){return d(yV,e,t,r,n)}),bV=function(e){var t=e.a,r=e.b,n=e.c;return{alpha:e.d,blue:n,green:r,red:t}},CV=function(e){return function(e){return d(mV,e.red,e.green,e.blue,e.alpha)}(bV(e))},SV=function(e){return{$:"Circle",a:e}},EV=SV,TV=d(yV,0,0,0,1),wV={$:"Flat"},IV={$:"Sharp"},AV=function(e){return{$:"Uniform",a:e}},BV=AV,kV={cap:wV,dashPattern:mr,dashPhase:0,fill:BV(TV),join:IV,thickness:2},NV=n(function(e,t,r){return U(kV,{dashPattern:e,fill:r,thickness:t})}),RV=NV(mr),$V={$:"Transparent"},xV=$V,_V=f(RV,0,xV),LV=r(function(e,t){return{$:"Shape",a:e,b:t}}),PV=function(e){return{basic:e,handlers:mr,name:fi,opacity:1,rotation:0,scale:L(1,1),shift:L(0,0)}},DV=function(e){return f(Ua,PV,LV(e))},UV=function(e){return DV(L(e,_V))},OV=function(e){return L(-e.a,-e.b)},MV=r(function(e,t){var r=e.a,n=e.b,a=t.shift;return U(t,{shift:L(a.a+r,a.b+n)})}),FV=r(function(e,t){return f(MV,OV(e(t)),t)}),VV=function(e){var t=r(function(e,t){var r=e.a,n=e.b,a=t.a,i=t.b;return L(f(Na,r,a),f(Na,n,i))});return l(La,t,L(mr,mr),e)},KV=r(function(e,t){return{$:"Path",a:e,b:t}}),HV=Nr,jV=Rr,qV=function(e){var t=e.shift,r=e.scale,n=e.rotation,a=function(e){var t=e.a,r=e.b,a=jV(n),i=HV(n);return L(i*t-a*r,a*t+i*r)},i=r,o=i.a,u=i.b,s=function(e){var t=e.a,r=e.b;return L(o*t,u*r)},c=t,l=c.a,d=c.b;return f(Ua,f(Ua,function(e){var t=e.a,r=e.b;return L(t+l,r+d)},s),a)},GV=function(e){return Pa(function(t){var r=t.a,n=t.b,a=e/2;return L(r<0?r-a:r+a,n<0?n-a:n+a)})},zV=r(function(e,t){var r=t.a,n=t.b,a=n/2,i=r/2;return f(GV,e,F([L(-i,-a),L(i,-a),L(i,a),L(-i,a)]))}),YV=function(e){var t=e.toTop,r=e.toBottom,n=e.toRight,a=e.toLeft;return F([L(-a,-r),L(n,-r),L(n,t),L(-a,t)])},WV=function(e){var t=JV(e.basic),r=VV(f(Pa,qV(e),t)),n=r.a,a=r.b;return{toBottom:-f(yc,0,NI(a)),toLeft:-f(yc,0,NI(n)),toRight:f(yc,0,kI(n)),toTop:f(yc,0,kI(a))}},JV=function(e){e:for(;;)switch(e.$){case"Shape":switch(e.b.$){case"Circle":var t=e.a,r=t.b.thickness,n=e.b.a,a=2*n;return f(zV,r,L(a,a));case"Ellipse":var i=e.a,r=i.b.thickness,o=e.b,u=o.a,s=o.b;return f(zV,r,L(2*u,2*s));case"Rectangle":var c=e.a,r=c.b.thickness,l=e.b,d=l.a,h=l.b;return f(zV,r,L(d,h));case"Polygon":var p=e.a,r=p.b.thickness,g=e.b.a;return f(GV,r,g);default:var v=e.a,y=v.b,m=e.b.a,b=f(KV,y,m);e=b;continue e}case"Path":var r=e.a.thickness,C=e.a.cap,g=e.b.a;return f(GV,$(C,wV)?0:r,g);case"Text":case"Image":case"Html":var S=e.a;return f(zV,0,S);case"Group":var E=e.a;return f(GV,0,cy(f(Pa,f(yo,WV,YV),E)));default:var T=e.b;return f(GV,0,YV(WV(T)))}},QV=function(e){var t=WV(e);return t.toTop+t.toBottom},XV=function(e){var t=WV(e);return L(-t.toLeft,t.toTop)},ZV=function(e){var t=WV(e);return t.toLeft+t.toRight},eK=En("http://www.w3.org/2000/svg"),tK=eK("svg"),rK=Rn("height"),nK=Rn("version"),aK=Rn("width"),iK=eK("circle"),oK=eK("ellipse"),uK=eK("foreignObject"),sK=eK("g"),cK=eK("image"),fK=eK("polygon"),lK=eK("polyline"),dK=eK("rect"),hK=Uw,pK=eK("text"),gK=Rn("id"),vK=Rn("points"),yK=Rn("r"),mK=Rn("rx"),bK=Rn("ry"),CK=function(e){return l($n,"http://www.w3.org/1999/xlink","xlink:href",rt(e))},SK=function(e){return{$:"Group",a:e}},EK=Rn("dominant-baseline"),TK=Rn("fill"),wK=Rn("fill-opacity"),IK=Rn("font-family"),AK=Rn("font-size"),BK=Rn("font-style"),kK=Rn("font-variant"),NK=Rn("font-weight"),RK=Rn("opacity"),$K=Rn("stroke"),xK=Rn("stroke-dasharray"),_K=Rn("stroke-dashoffset"),LK=Rn("stroke-linecap"),PK=Rn("stroke-linejoin"),DK=Rn("stroke-opacity"),UK=Rn("stroke-width"),OK=Rn("text-anchor"),MK=Rn("text-decoration"),FK=Rn("transform"),VK=function(e){switch(e.$){case"Round":return"round";case"Padded":return"square";default:return"butt"}},KK=function(e){return f($i," ",f(Pa,function(e){var t=e.a,r=e.b;return f($i,",",F([Ri(t),Ri(r)]))},e))},HK=n(function(e,t,r){return d(yV,e,t,r,1)}),jK=function(e){var t=e.a,r=e.b,n=e.c,a=e.d,i=function(e){return Bg(1e4*e)/100};return Sl(F(["rgba(",xw(i(t)),"%,",xw(i(r)),"%,",xw(i(n)),"%,",xw(function(e){return Bg(1e3*e)/1e3}(a)),")"]))},qK=function(e){var t=e.a,r=e.b,n=e.c;return{alpha:e.d,blue:n,green:r,red:t}},GK=function(e){var t=qK(e),r=t.red,n=t.green,a=t.blue;return jK(l(HK,r,n,a))},zK=function(e){if("Uniform"===e.$){var t=e.a;return GK(t)}return"none"},YK=function(e){var t=qK(e),r=t.alpha;return xw(r)},WK=function(e){if("Uniform"===e.$){var t=e.a;return YK(t)}return"0"},JK=function(e){switch(e.$){case"Smooth":return"round";case"Sharp":return"miter";default:return"bevel"}},QK=kr,XK=function(e){var t=xw(e.scale.b),r=xw(e.scale.a),n=xw(-e.rotation/2/QK*360),a=xw(-e.shift.b),i=xw(e.shift.a);return Sl(F(["translate(",i,",",a,") scale(",r,",",t,") rotate(",n,")"]))},ZK=function(e){var t=e.basic;switch(t.$){case"Path":var r=t.a;return F([$K(zK(r.fill)),DK(WK(r.fill)),UK(xw(r.thickness)),LK(VK(r.cap)),PK(JK(r.join)),TK("none"),RK(xw(e.opacity)),FK(XK(e)),_K(Ri(r.dashPhase)),xK(KK(r.dashPattern))]);case"Shape":var n=t.a,a=n.a,r=n.b;return F([TK(zK(a)),wK(WK(a)),$K(zK(r.fill)),DK(WK(r.fill)),UK(xw(r.thickness)),LK(VK(r.cap)),PK(JK(r.join)),RK(xw(e.opacity)),FK(XK(e)),_K(Ri(r.dashPhase)),xK(KK(r.dashPattern))]);case"Text":var i=t.b,o=i.a;i.b;return F([TK(zK(AV(o.color))),IK(function(){var e=o.typeface;switch(e.$){case"Serif":return"serif";case"Sansserif":return"sans-serif";case"Monospace":return"monospace";default:return e.a}}()),AK(Ri(o.size)),NK(function(){switch(o.weight.$){case"Thin":return"200";case"Light":return"300";case"Regular":return"normal";case"Medium":return"500";case"SemiBold":return"600";case"Bold":return"bold";default:return"800"}}()),BK(function(){switch(o.shape.$){case"Upright":case"SmallCaps":return"normal";case"Slanted":return"oblique";default:return"italic"}}()),kK(function(){return"SmallCaps"===o.shape.$?"small-caps":"normal"}()),MK(function(){switch(o.line.$){case"None":return"none";case"Under":return"underline";case"Over":return"overline";default:return"line-through"}}()),OK("middle"),EK("middle"),FK(XK(e))]);default:return F([FK(XK(e))])}},eH=Rn("x"),tH=Rn("y"),rH=r(function(e,t){return F([aK(xw(e)),rK(xw(t)),eH(xw(-e/2)),tH(xw(-t/2))])}),nH=function(e){return f($i," ",f(Pa,function(e){var t=e.a,r=e.b;return f($i,",",F([xw(t),xw(-r)]))},e))},aH=sN,iH=r(function(e,t){return f(e,t.a,t.b)}),oH=function(e){return f(Pa,iH(aH),e)},uH=function(e){e:for(;;){var t=f(yc,"_unnamed_",e.name),n=e.basic;switch(n.$){case"Path":var a=(n.a,n.b),i=a.a;return f(lK,O(F([gK(t),vK(nH(i))]),O(ZK(e),oH(e.handlers))),mr);case"Shape":var o=n.a,u=(o.a,o.b),s=n.b;switch(s.$){case"Polygon":var i=s.a;return f(fK,O(F([gK(t),vK(nH(i))]),O(ZK(e),oH(e.handlers))),mr);case"Circle":var c=s.a;return f(iK,O(F([gK(t),yK(xw(c))]),O(ZK(e),oH(e.handlers))),mr);case"Ellipse":var d=s.a,h=s.b;return f(oK,O(F([gK(t),mK(xw(d)),bK(xw(h))]),O(ZK(e),oH(e.handlers))),mr);case"Rectangle":var p=s.a,g=s.b,c=s.c;return f(dK,O(F([gK(t),mK(xw(c)),bK(xw(c))]),O(f(rH,p,g),O(ZK(e),oH(e.handlers)))),mr);default:var a=s.a,v=U(e,{basic:f(KV,u,a)});e=v;continue e}case"Text":var y=n.b,m=(y.a,y.b);return f(pK,O(F([gK(t)]),O(ZK(e),oH(e.handlers))),F([hK(m)]));case"Image":var b=n.a,p=b.a,g=b.b,C=n.b;return f(cK,O(F([gK(t),CK(C)]),O(f(rH,p,g),O(ZK(e),oH(e.handlers)))),mr);case"Html":var S=n.a,p=S.a,g=S.b,E=n.b;return f(uK,O(F([gK(t)]),O(f(rH,p,g),O(ZK(e),oH(e.handlers)))),F([E]));case"Group":var T=n.a;return f(sK,f(Na,gK(t),O(ZK(e),oH(e.handlers))),l($a,r(function(e,t){return f(Na,uH(e),t)}),mr,T));default:var w=n.a,I=n.b,v=U(e,{basic:SK(F([w,I]))});e=v;continue e}}},sH=r(function(e,t){var r=e.a,n=e.b,a=xw(r),i=xw(n);return f(aw,mr,F([f(tK,F([aK(a),rK(i),nK("1.1")]),F([uH(t)]))]))}),cH=function(e){return f(sH,L(ZV(e),QV(e)),f(FV,XV,e))},fH=r(function(e,t){var r=vV(e),n=function(){switch(t.$){case"NotStarted":return l(Lk,10,33,108);case"Active":return l(Lk,0,100,170);default:return l(Lk,1,129,104)}}(),a=O_(cH(f(UV,BV(CV(n)),EV(50))));return f(Ok,F([CN,tx(f(o$,F([CN,WN,$T(Hk(60))]),r))]),a)}),lH=function(e){var t=F([$N,dN,gN(20)]);switch(e.$){case"Active":return f(Ok,O(t,F([_A(yN)])),Qp("Active"));case"NotStarted":return f(Ok,O(t,F([_A(A$)])),Qp("Not Started"));default:return f(Ok,t,Qp("Finished"))}},dH=n(function(e,t,r){var n=f(uV,t,e),a=function(){return"Active"===n.$?l(Lk,0,226,255):DR}(),i=f(Ok,F([_A(a),gN(20),dN,CN]),Qp(function(){switch(e.$){case"Open":return"Open Window";case"Committed":return"Payment Window";case"Judgment":return"Burn/Release Window";default:return"Closed"}}())),o=function(){if("Closed"===e.$)return Vk;switch(n.$){case"NotStarted":return d(qR,F([CN]),F([gN(22),tR]),L(DR,UR),f(xR,e,t));case"Active":var a=f(LR,r,t);if("TimeLeft"===a.$){var i=a.a;return d(YR,F([CN]),F([gN(22),tR]),L(Qk,UR),i)}return f(UN,F([CN,wN(10)]),F([f(Ok,F([CN]),Qp(PR(e))),f(BO,"Poke",JS(zS))]));default:return f(Ok,F([$T(Hk(1))]),Vk)}}();return f(UN,F([ZN(20),wN(10),$T(Fk)]),F([f(Ok,F([Z$,CN]),i),f(Ok,F([$T(Fk),CN]),f(Ok,F([WN]),f(fH,e,n))),f(UN,F([wN(10),Tx,CN]),F([f(Ok,F([CN]),lH(n)),o]))]))}),hH=u(function(e,t,r,n,a,i,o){var u=f(uV,n,r),s=f(Ok,F([ZN(10),PT(Fk),$T(Fk)]),h(fV,t,r,o,n,a)),c=function(){switch(r.$){case"Open":return n.parameters.autorecallInterval;case"Committed":return n.parameters.autoabortInterval;case"Judgment":return n.parameters.autoreleaseInterval;default:return Ff(0)}}(),d=l(dH,r,n,o),p=(function(){switch(u.$){case"NotStarted":return c;case"Active":return f(_R,f(Nb,n.state.phaseStartTime,c),o);default:Ff(0)}}(),f(Ok,F([$T(Fk),PT(Hk(1)),qk(function(){return"Active"===u.$?l(kA,0,0,1):UR}())]),Vk)),g=i?f(FN,O(JF(e),O($(u,qF)?zF:QF,F([PT(Fk)]))),F([d,p,s])):f(FN,O(JF(e),O($(u,qF)?zF:QF,F([nN,fN(GF(r))]))),F([d]));return!e&&$(u,qF)?f(UN,F([PT(Fk),wN(20),$$({bottom:20,left:0,right:0,top:0})]),F([g,jF(n.terms.paymentMethods)])):g}),pH=o(function(e,t,r,n,a,i){return"Closed"===r.state.phase.$?f(FN,F([CN,iN(12),ZN(30),wN(10),qk(FF),gN(24),dN,_A(Qk)]),F([Qp("Trade "+HF(r.state.closedReason)),KF])):e?f(UN,F([PT(Fk),wN(10)]),F([f(FN,F([PT(Fk),$T(_T),wN(20)]),F([g(hH,e,t,wo,r,a,$(n,wo),i),g(hH,e,t,cC,r,a,$(n,cC),i),g(hH,e,t,fC,r,a,$(n,fC),i)])),jF(r.terms.paymentMethods)])):f(UN,F([PT(Fk),$T(_T),wN(20)]),F([g(hH,e,t,wo,r,a,$(n,wo),i),g(hH,e,t,cC,r,a,$(n,cC),i),g(hH,e,t,fC,r,a,$(n,fC),i)]))}),gH=a(function(e,t,r,n){var a=e>1300;return L(function(){var e=n.trade;switch(e.$){case"LoadedTrade":var i=e.a;return f(UN,F([PT(Fk),$T(Fk),wN(40)]),F([p(MF,t,i,n.userInfo,n.web3Context.factoryType,r,n.showStatsModal),f(Ok,F([PT(Fk),f(eN,40,0),wN(40)]),p(pH,a,n.web3Context.factoryType,i,n.expandedPhase,n.userInfo,t))]));case"PartiallyLoadedTrade":e.a;return f(Ok,F([CN,WN,gN(30)]),Qp("Loading trade info..."));default:return f(Ok,F([CN,WN,gN(30)]),Qp("Invalid trade"))}}(),F([eM(n),iM(n)]))}),vH=n(function(e,t,r){var n=r.a,a=r.b;return L(e(n),t(a))}),yH=r(function(e,t){var r=function(){var r=t.submodel;switch(r.$){case"BetaLandingPage":return L(iU,mr);case"CreateModel":var n=r.a;return L(f(Wi,Vy,WD(n)),mr);case"QuickCreateModel":var a=r.a;return l(vH,Wi(jy),Pa(Wi(jy)),VO(a));case"TradeModel":var i=r.a;return l(vH,Wi(Gy),Pa(Wi(Gy)),d(gH,e,t.time,t.tradeCache,i));case"MarketplaceModel":var o=r.a;return L(f(Wi,wT,l(hO,t.time,t.tradeCache,o)),mr);default:var u=r.a;return L(f(Wi,CT,l(V$,t.time,t.tradeCache,u)),mr)}}(),n=r.a,a=r.b;return L(f(Ok,F([PT(Fk),$T(Fk),iN(10)]),n),a)}),mH=function(e){return{$:"DismissNotice",a:e}},bH=function(e){return f(fR,jU,qU(e))},CH=function(e){var t=e.a,n=e.b,a=function(){return"Error"===n.noticeType.$?l(kA,1,1,1):l(kA,0,0,0)}(),i=function(){switch(n.noticeType.$){case"Update":return l(Lk,100,200,255);case"Caution":return l(Lk,255,188,0);case"Error":return l(Lk,255,70,70);default:return l(Lk,200,200,200)}}(),o=f(Ok,F([LN,Z$,fx(5),bH(5)]),z$(mH(t)));return f(Ok,F([qk(i),iN(10),ZN(8),PT(Fk),T$(1),S$(d(u$,0,0,0,.15)),gD]),f(UN,F([wN(4),PT(Fk)]),f(ki,r(function(e,t){return f(BN,F([PT(Fk),_A(a)]),e?t:f(Na,o,t))}),n.mainParagraphs)))},SH=function(e){return $(e,mr)?mr:F([f(UN,F([GU(20),fx(20),wN(10),LN,Tx,PT(Hk(300)),gN(15)]),f(Pa,CH,f(eh,function(e){return $(e.b.align,Wp)},f(ki,r(function(e,t){return L(e,t)}),e)))),f(UN,F([bH(20),T_(100),wN(10),_x,Z$,PT(Hk(300)),gN(15)]),f(Pa,CH,f(eh,function(e){return $(e.b.align,kB)},f(ki,r(function(e,t){return L(e,t)}),e))))])},EH=r(function(e,t){var r=f(yH,e,t),n=r.a,a=r.b;return L(f(UN,F([MR(Gk),tx(VN(t)),PT(Fk),$T(Fk),ZN(30)]),F([f(Ok,F([$T(Hk(50))]),Vk),n])),O(a,SH(t.userNotices)))}),TH=r(function(e,t){return{$:"OnlyDynamic",a:e,b:t}}),wH=r(function(e,t){return{$:"StaticRootAndDynamic",a:e,b:t}}),IH={$:"AllowHover"},AH={$:"Layout"},BH={backgroundColor:fi,borderColor:fi,shadow:ci({blur:3,color:d(BA,155/255,203/255,1,1),offset:L(0,0),size:3})},kH=function(e){var t=r(function(e,t){switch(e.$){case"HoverOption":var r=e.a;return"Nothing"===t.hover.$?U(t,{hover:ci(r)}):t;case"FocusStyleOption":var n=e.a;return"Nothing"===t.focus.$?U(t,{focus:ci(n)}):t;default:var a=e.a;return"Nothing"===t.mode.$?U(t,{mode:ci(a)}):t}});return function(e){return{focus:function(){var t=e.focus;return"Nothing"===t.$?BH:t.a}(),hover:function(){var t=e.hover;return"Nothing"===t.$?IH:t.a}(),mode:function(){var t=e.mode;return"Nothing"===t.$?AH:t.a}()}}(l(La,t,{focus:fi,hover:fi,mode:fi},e))},NH=r(function(e,t){switch(t.$){case"Unstyled":var r=t.a;return r(FT);case"Styled":var n=t.a.styles,r=t.a.html;return f(r,e(n),FT);case"Text":var a=t.a;return qI(a);default:return qI("")}}),RH=n(function(e,t,r){var n=kH(e),a=function(){return"NoStaticStyleSheet"===n.mode.$?TH(n):wH(n)}();return f(NH,a,d(wA,FT,Uk,t,OT(F([r]))))}),$H=hw(5),xH=r(function(e,t){return{$:"FontFamily",a:e,b:t}}),_H={$:"SansSerif"},LH=function(e){return{$:"Typeface",a:e}},PH=W,DH=r(function(e,t){return O(t,function(){switch(e.$){case"Serif":return"serif";case"SansSerif":return"sans-serif";case"Monospace":return"monospace";case"Typeface":var t=e.a;return f($i,"-",PH(cl(t)));case"ImportFont":var t=e.a;e.b;return f($i,"-",PH(cl(t)));default:var t=e.a.name;return f($i,"-",PH(cl(t)))}}())}),UH=function(){var e=F([LH("Open Sans"),LH("Helvetica"),LH("Verdana"),_H]);return F([f($A,jk,l(RA,"bg-color-"+xA(d(BA,1,1,1,0)),"background-color",d(BA,1,1,1,0))),f($A,NA,l(RA,"font-color-"+xA(d(BA,0,0,0,1)),"color",d(BA,0,0,0,1))),f($A,hN,pN(20)),f($A,$H,f(xH,l($a,DH,"font-",e),e))])}(),OH=n(function(e,t,r){var n=e.options;return l(RH,n,f(Na,IA(f($i," ",F([jT.root,jT.any,jT.single]))),O(UH,t)),r)}),MH=OH({options:mr}),FH=function(e){return f($A,$H,f(xH,l($a,DH,"ff-",e),e))},VH=_H,KH=LH,HH=function(e){return{body:F([function(){var t=f(EH,e.screenWidth,e),r=t.a,n=t.b,a=O(F([PT(Fk),$T(Fk),FH(F([KH("Soleil"),VH]))]),f(Pa,tx,n));return f(MH,a,r)}()]),title:"DAIHard"}},jH=jt,qH=jH({init:$B,onUrlChange:_k,onUrlRequest:xk,subscriptions:$k,update:bB,view:HH});!function(t){e.Elm?We("Elm",e.Elm,t):e.Elm=t}({App:{init:qH(f(Wo,function(e){return f(Wo,function(t){return f(Wo,function(r){return Vi({height:r,networkId:t,width:e})},f(Md,"height",oS))},f(Md,"networkId",oS))},f(Md,"width",oS)))(0)}})}(this)},function(e,t,r){"use strict";function n(){"undefined"!=typeof web3?web3.version.getNetwork(function(e,t){var r;e?(console.log("Error initializing web3: "+e),r=0):r=parseInt(t),window.app=c.Elm.App.init({node:document.getElementById("elm"),flags:{networkId:r,width:window.innerWidth,height:window.innerHeight}}),i(app),a(app),o(app,web3)}):(window.app=c.Elm.App.init({node:document.getElementById("elm"),flags:{networkId:0,width:window.innerWidth,height:window.innerHeight}}),i(app),a(app),console.log("Metamask not detected."))}function a(e){e.ports.notifyPort.subscribe(function(e){h.notify(e.title,e.body,e.image)}),e.ports.requestNotifyPermissionPort.subscribe(function(){h.requestPermission(function(e){})})}function i(e){e.ports.gTagOut.subscribe(function(e){gtag("event",e.event,{event_category:e.category,event_label:e.label,value:e.value})})}function o(e,t){u(e,t),t.eth.getAccounts(function(r,n){n&&n.length>0&&s(e,t)})}function u(e,t){d.startWatching(e.ports.networkSentryPort,t),e.ports.connectToWeb3.subscribe(function(r){s(e,t)})}function s(e,t){window.ethereum&&!window.web3Connected&&(window.web3=new Web3(ethereum)),f.txSentry(e.ports.txOut,e.ports.txIn,t),f.walletSentry(e.ports.walletSentryPort,t),d.startWatching(e.ports.networkSentryPort,t),e.ports.genPrivkey.subscribe(function(t){l.prepareKeypair(t.signSeedMsg,t.address,function(t,r){console.log("pubkey: ",r),e.ports.userPubkeyResult.send(r)})}),e.ports.encryptToPubkeys.subscribe(function(t){var r=l.encryptToPubkeys(t.message,t.pubkeyHexStrings);e.ports.encryptionFinished.send(r)}),e.ports.decryptMessage.subscribe(function(t){var r=t.id,n=l.decryptForUser(t.encapsulation,t.iv,t.tag,t.encrypted);n||console.log("Uh oh! Decryption didn't work..."),e.ports.decryptionFinished.send({id:r,message:n})}),window.ethereum&&!window.web3Connected&&(ethereum.enable(),window.web3Connected=!0)}Object.defineProperty(t,"__esModule",{value:!0});var c=r(42),f=(r.n(c),r(41)),l=r(40),d=r(39),h=r(38);window.forge=r(22),window.web3Connected=!1,window.addEventListener("load",function(){n()})},function(e,t,r){"use strict";function n(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function a(e){var t=n(e),r=t[0],a=t[1];return 3*(r+a)/4-a}function i(e,t,r){return 3*(t+r)/4-r}function o(e){for(var t,r=n(e),a=r[0],o=r[1],u=new d(i(e,a,o)),s=0,c=o>0?a-4:a,f=0;f>16&255,u[s++]=t>>8&255,u[s++]=255&t;return 2===o&&(t=l[e.charCodeAt(f)]<<2|l[e.charCodeAt(f+1)]>>4,u[s++]=255&t),1===o&&(t=l[e.charCodeAt(f)]<<10|l[e.charCodeAt(f+1)]<<4|l[e.charCodeAt(f+2)]>>2,u[s++]=t>>8&255,u[s++]=255&t),u}function u(e){return f[e>>18&63]+f[e>>12&63]+f[e>>6&63]+f[63&e]}function s(e,t,r){for(var n,a=[],i=t;io?o:i+16383));return 1===n?(t=e[r-1],a.push(f[t>>2]+f[t<<4&63]+"==")):2===n&&(t=(e[r-2]<<8)+e[r-1],a.push(f[t>>10]+f[t>>4&63]+f[t<<2&63]+"=")),a.join("")}t.byteLength=a,t.toByteArray=o,t.fromByteArray=c;for(var f=[],l=[],d="undefined"!=typeof Uint8Array?Uint8Array:Array,h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",p=0,g=h.length;p>1,f=-7,l=r?a-1:0,d=r?-1:1,h=e[t+l];for(l+=d,i=h&(1<<-f)-1,h>>=-f,f+=u;f>0;i=256*i+e[t+l],l+=d,f-=8);for(o=i&(1<<-f)-1,i>>=-f,f+=n;f>0;o=256*o+e[t+l],l+=d,f-=8);if(0===i)i=1-c;else{if(i===s)return o?NaN:1/0*(h?-1:1);o+=Math.pow(2,n),i-=c}return(h?-1:1)*o*Math.pow(2,i-n)},t.write=function(e,t,r,n,a,i){var o,u,s,c=8*i-a-1,f=(1<>1,d=23===a?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:i-1,p=n?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(u=isNaN(t)?1:0,o=f):(o=Math.floor(Math.log(t)/Math.LN2),t*(s=Math.pow(2,-o))<1&&(o--,s*=2),t+=o+l>=1?d/s:d*Math.pow(2,1-l),t*s>=2&&(o++,s/=2),o+l>=f?(u=0,o=f):o+l>=1?(u=(t*s-1)*Math.pow(2,a),o+=l):(u=t*Math.pow(2,l-1)*Math.pow(2,a),o=0));a>=8;e[r+h]=255&u,h+=p,u/=256,a-=8);for(o=o<0;e[r+h]=255&o,h+=p,o/=256,c-=8);e[r+h-p]|=128*g}},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},function(e,t,r){function n(e,t,r){var n=t.entity===c.tls.ConnectionEnd.client;e.read.cipherState={init:!1,cipher:c.cipher.createDecipher("AES-CBC",n?r.keys.server_write_key:r.keys.client_write_key),iv:n?r.keys.server_write_IV:r.keys.client_write_IV},e.write.cipherState={init:!1,cipher:c.cipher.createCipher("AES-CBC",n?r.keys.client_write_key:r.keys.server_write_key),iv:n?r.keys.client_write_IV:r.keys.server_write_IV},e.read.cipherFunction=u,e.write.cipherFunction=a,e.read.macLength=e.write.macLength=r.mac_length,e.read.macFunction=e.write.macFunction=f.hmac_sha1}function a(e,t){var r=!1,n=t.macFunction(t.macKey,t.sequenceNumber,e);e.fragment.putBytes(n),t.updateSequenceNumber();var a;a=e.version.minor===f.Versions.TLS_1_0.minor?t.cipherState.init?null:t.cipherState.iv:c.random.getBytesSync(16),t.cipherState.init=!0;var o=t.cipherState.cipher;return o.start({iv:a}),e.version.minor>=f.Versions.TLS_1_1.minor&&o.output.putBytes(a),o.update(e.fragment),o.finish(i)&&(e.fragment=o.output,e.length=e.fragment.length(),r=!0),r}function i(e,t,r){if(!r){var n=e-t.length()%e;t.fillWithByte(n-1,n)}return!0}function o(e,t,r){var n=!0;if(r){for(var a=t.length(),i=t.last(),o=a-1-i;o=i?(e.fragment=a.output.getBytes(d-i),u=a.output.getBytes(i)):e.fragment=a.output.getBytes(),e.fragment=c.util.createBuffer(e.fragment),e.length=e.fragment.length();var h=t.macFunction(t.macKey,t.sequenceNumber,e);return t.updateSequenceNumber(),r=s(t.macKey,u,h)&&r}function s(e,t,r){var n=c.hmac.create();return n.start("SHA1",e),n.update(t),t=n.digest().getBytes(),n.start(null,null),n.update(r),r=n.digest().getBytes(),t===r}var c=r(0);r(5),r(37);var f=e.exports=c.tls;f.CipherSuites.TLS_RSA_WITH_AES_128_CBC_SHA={id:[0,47],name:"TLS_RSA_WITH_AES_128_CBC_SHA",initSecurityParameters:function(e){e.bulk_cipher_algorithm=f.BulkCipherAlgorithm.aes,e.cipher_type=f.CipherType.block,e.enc_key_length=16,e.block_length=16,e.fixed_iv_length=16,e.record_iv_length=16,e.mac_algorithm=f.MACAlgorithm.hmac_sha1,e.mac_length=20,e.mac_key_length=20},initConnectionState:n},f.CipherSuites.TLS_RSA_WITH_AES_256_CBC_SHA={id:[0,53],name:"TLS_RSA_WITH_AES_256_CBC_SHA",initSecurityParameters:function(e){e.bulk_cipher_algorithm=f.BulkCipherAlgorithm.aes,e.cipher_type=f.CipherType.block,e.enc_key_length=32,e.block_length=16,e.fixed_iv_length=16,e.record_iv_length=16,e.mac_algorithm=f.MACAlgorithm.hmac_sha1,e.mac_length=20,e.mac_key_length=20},initConnectionState:n};var l=0},function(e,t,r){(function(t){function r(e,t){var r=0,n=t.length,a=t.charAt(0),i=[0];for(r=0;r0;)i.push(u%n),u=u/n|0}var s="";for(r=0;0===e.at(r)&&r=0;--r)s+=t[i[r]];return s}var n={};e.exports=n;var a={};n.encode=function(e,t,n){if("string"!=typeof t)throw new TypeError('"alphabet" must be a string.');if(void 0!==n&&"number"!=typeof n)throw new TypeError('"maxline" must be a number.');var a="";if(e instanceof Uint8Array){var i=0,o=t.length,u=t.charAt(0),s=[0];for(i=0;i0;)s.push(f%o),f=f/o|0}for(i=0;0===e[i]&&i=0;--i)a+=t[s[i]]}else a=r(e,t);if(n){var l=new RegExp(".{1,"+n+"}","g");a=a.match(l).join("\r\n")}return a},n.decode=function(e,r){if("string"!=typeof e)throw new TypeError('"input" must be a string.');if("string"!=typeof r)throw new TypeError('"alphabet" must be a string.');var n=a[r];if(!n){n=a[r]=[];for(var i=0;i>=8;for(;l>0;)s.push(255&l),l>>=8}for(var d=0;e[d]===u&&d=32;--n){for(r=0,a=n-32,i=n-12;a>8,t[a]-=256*r;t[a]+=r,t[n]=0}for(r=0,a=0;a<32;++a)t[a]+=r-(t[31]>>4)*H[a],r=t[a]>>8,t[a]&=255;for(a=0;a<32;++a)t[a]-=r*H[a];for(n=0;n<32;++n)t[n+1]+=t[n]>>8,e[n]=255&t[n]}function c(e){for(var t=new Float64Array(64),r=0;r<64;++r)t[r]=e[r],e[r]=0;s(e,t)}function f(e,t){var r=B(),n=B(),a=B(),i=B(),o=B(),u=B(),s=B(),c=B(),f=B();N(r,e[1],e[0]),N(f,t[1],t[0]),$(r,r,f),k(n,e[0],e[1]),k(f,t[0],t[1]),$(n,n,f),$(a,e[3],t[3]),$(a,a,F),$(i,e[2],t[2]),k(i,i,i),N(o,n,r),N(u,i,a),k(s,i,a),k(c,n,r),$(e[0],o,u),$(e[1],c,s),$(e[2],s,u),$(e[3],o,c)}function l(e,t,r){for(var n=0;n<4;++n)A(e[n],t[n],r)}function d(e,t){var r=B(),n=B(),a=B();w(a,t[2]),$(r,t[0],a),$(n,t[1],a),h(e,n),e[31]^=C(r)<<7}function h(e,t){var r,n,a,i=B(),o=B();for(r=0;r<16;++r)o[r]=t[r];for(I(o),I(o),I(o),n=0;n<2;++n){for(i[0]=o[0]-65517,r=1;r<15;++r)i[r]=o[r]-65535-(i[r-1]>>16&1),i[r-1]&=65535;i[15]=o[15]-32767-(i[14]>>16&1),a=i[15]>>16&1,i[14]&=65535,A(o,i,1-a)}for(r=0;r<16;r++)e[2*r]=255&o[r],e[2*r+1]=o[r]>>8}function p(e,t){var r=B(),n=B(),a=B(),i=B(),o=B(),u=B(),s=B();return T(e[2],O),g(e[1],t),R(a,e[1]),$(i,a,M),N(a,a,e[2]),k(i,e[2],i),R(o,i),R(u,o),$(s,u,o),$(r,s,a),$(r,r,i),v(r,r),$(r,r,a),$(r,r,i),$(r,r,i),$(e[0],r,i),R(n,e[0]),$(n,n,i),y(n,a)&&$(e[0],e[0],j),R(n,e[0]),$(n,n,i),y(n,a)?-1:(C(e[0])===t[31]>>7&&N(e[0],U,e[0]),$(e[3],e[0],e[1]),0)}function g(e,t){var r;for(r=0;r<16;++r)e[r]=t[2*r]+(t[2*r+1]<<8);e[15]&=32767}function v(e,t){var r,n=B();for(r=0;r<16;++r)n[r]=t[r];for(r=250;r>=0;--r)R(n,n),1!==r&&$(n,n,t);for(r=0;r<16;++r)e[r]=n[r]}function y(e,t){var r=new P(32),n=new P(32);return h(r,e),h(n,t),m(r,0,n,0)}function m(e,t,r,n){return b(e,t,r,n,32)}function b(e,t,r,n,a){var i,o=0;for(i=0;i>>8)-1}function C(e){var t=new P(32);return h(t,e),1&t[0]}function S(e,t,r){var n,a;for(T(e[0],U),T(e[1],O),T(e[2],O),T(e[3],U),a=255;a>=0;--a)n=r[a/8|0]>>(7&a)&1,l(e,t,n),f(t,e),f(e,e),l(e,t,n)}function E(e,t){var r=[B(),B(),B(),B()];T(r[0],V),T(r[1],K),T(r[2],O),$(r[3],V,K),S(e,r,t)}function T(e,t){var r;for(r=0;r<16;r++)e[r]=0|t[r]}function w(e,t){var r,n=B();for(r=0;r<16;++r)n[r]=t[r];for(r=253;r>=0;--r)R(n,n),2!==r&&4!==r&&$(n,n,t);for(r=0;r<16;++r)e[r]=n[r]}function I(e){var t,r,n=1;for(t=0;t<16;++t)r=e[t]+n+65535,n=Math.floor(r/65536),e[t]=r-65536*n;e[0]+=n-1+37*(n-1)}function A(e,t,r){for(var n,a=~(r-1),i=0;i<16;++i)n=a&(e[i]^t[i]),e[i]^=n,t[i]^=n}function B(e){var t,r=new Float64Array(16);if(e)for(t=0;t=0};var U=B(),O=B([1]),M=B([30883,4953,19914,30187,55467,16705,2637,112,59544,30585,16505,36039,65139,11119,27886,20995]),F=B([61785,9906,39828,60374,45398,33411,5274,224,53552,61171,33010,6542,64743,22239,55772,9222]),V=B([54554,36645,11616,51542,42930,38181,51040,26924,56412,64982,57905,49316,21502,52590,14035,8553]),K=B([26200,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214]),H=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]),j=B([41136,18958,6951,50414,58488,44335,6150,12099,55207,15867,153,11085,57099,20417,9344,11139])}).call(t,r(10).Buffer)},function(e,t,r){function n(e,t,r,n){e.generate=function(e,i){for(var o=new a.util.ByteBuffer,u=Math.ceil(i/n)+r,s=new a.util.ByteBuffer,c=r;c0&&(o=a.util.fillString(String.fromCharCode(0),s)+o),{encapsulation:t.encrypt(o,"NONE"),key:e.generate(o,n)}},n.decrypt=function(t,r,n){var a=t.decrypt(r,"NONE");return e.generate(a,n)},n},a.kem.kdf1=function(e,t){n(this,e,0,t||e.digestLength)},a.kem.kdf2=function(e,t){n(this,e,1,t||e.digestLength)}},function(e,t,r){e.exports=r(4),r(16),r(9),r(35),r(36)},function(e,t,r){var n=r(0);r(26),e.exports=n.mgf=n.mgf||{},n.mgf.mgf1=n.mgf1},function(e,t,r){function n(e){var t={},r=[];if(!p.validate(e,g.asn1.recipientInfoValidator,t,r)){var n=new Error("Cannot read PKCS#7 RecipientInfo. ASN.1 object is not an PKCS#7 RecipientInfo.");throw n.errors=r,n}return{version:t.version.charCodeAt(0),issuer:h.pki.RDNAttributesAsArray(t.issuer),serialNumber:h.util.createBuffer(t.serial).toHex(),encryptedContent:{algorithm:p.derToOid(t.encAlgorithm),parameter:t.encParameter.value,content:t.encKey}}}function a(e){return p.create(p.Class.UNIVERSAL,p.Type.SEQUENCE,!0,[p.create(p.Class.UNIVERSAL,p.Type.INTEGER,!1,p.integerToDer(e.version).getBytes()),p.create(p.Class.UNIVERSAL,p.Type.SEQUENCE,!0,[h.pki.distinguishedNameToAsn1({attributes:e.issuer}),p.create(p.Class.UNIVERSAL,p.Type.INTEGER,!1,h.util.hexToBytes(e.serialNumber))]),p.create(p.Class.UNIVERSAL,p.Type.SEQUENCE,!0,[p.create(p.Class.UNIVERSAL,p.Type.OID,!1,p.oidToDer(e.encryptedContent.algorithm).getBytes()),p.create(p.Class.UNIVERSAL,p.Type.NULL,!1,"")]),p.create(p.Class.UNIVERSAL,p.Type.OCTETSTRING,!1,e.encryptedContent.content)])}function i(e){for(var t=[],r=0;r0){for(var r=p.create(p.Class.CONTEXT_SPECIFIC,1,!0,[]),n=0;n=r&&a0&&a.value[0].value.push(p.create(p.Class.CONTEXT_SPECIFIC,0,!0,e)),n.length>0&&a.value[0].value.push(p.create(p.Class.CONTEXT_SPECIFIC,1,!0,n)),a.value[0].value.push(p.create(p.Class.UNIVERSAL,p.Type.SET,!0,r.signerInfos)),p.create(p.Class.UNIVERSAL,p.Type.SEQUENCE,!0,[p.create(p.Class.UNIVERSAL,p.Type.OID,!1,p.oidToDer(r.type).getBytes()),a])},addSigner:function(e){var t=e.issuer,n=e.serialNumber;if(e.certificate){var a=e.certificate;"string"==typeof a&&(a=h.pki.certificateFromPem(a)),t=a.issuer.attributes,n=a.serialNumber}var i=e.key;if(!i)throw new Error("Could not add PKCS#7 signer; no private key specified.");"string"==typeof i&&(i=h.pki.privateKeyFromPem(i));var o=e.digestAlgorithm||h.pki.oids.sha1;switch(o){case h.pki.oids.sha1:case h.pki.oids.sha256:case h.pki.oids.sha384:case h.pki.oids.sha512:case h.pki.oids.md5:break;default:throw new Error("Could not add PKCS#7 signer; unknown message digest algorithm: "+o)}var u=e.authenticatedAttributes||[];if(u.length>0){for(var s=!1,c=!1,f=0;f="8"&&(r="00"+r);var n=o.util.hexToBytes(r);e.putInt32(n.length),e.putBytes(n)}function a(e,t){e.putInt32(t.length),e.putString(t)}function i(){for(var e=o.md.sha1.create(),t=arguments.length,r=0;r0&&(this.state=v[this.state].block)},y.prototype.unblock=function(e){return e=void 0===e?1:e,this.blocks-=e,0===this.blocks&&this.state!==d&&(this.state=c,b(this,0)),this.blocks},y.prototype.sleep=function(e){e=void 0===e?0:e,this.state=v[this.state].sleep;var t=this;this.timeoutId=setTimeout(function(){t.timeoutId=null,t.state=c,b(t,0)},e)},y.prototype.wait=function(e){e.wait(this)},y.prototype.wakeup=function(){this.state===l&&(cancelTimeout(this.timeoutId),this.timeoutId=null,this.state=c,b(this,0))},y.prototype.cancel=function(){this.state=v[this.state].cancel,this.permitsNeeded=0,null!==this.timeoutId&&(cancelTimeout(this.timeoutId),this.timeoutId=null),this.subtasks=[]},y.prototype.fail=function(e){if(this.error=!0,C(this,!0),e)e.error=this.error,e.swapTime=this.swapTime,e.userData=this.userData,b(e,0);else{if(null!==this.parent){for(var t=this.parent;null!==t.parent;)t.error=this.error,t.swapTime=this.swapTime,t.userData=this.userData,t=t.parent;C(t,!0)}this.failureCallback&&this.failureCallback(this)}};var m=function(e){e.error=!1,e.state=v[e.state][g],setTimeout(function(){e.state===c&&(e.swapTime=+new Date,e.run(e),b(e,0))},0)},b=function(e,t){var r=t>30||+new Date-e.swapTime>20,n=function(t){if(t++,e.state===c)if(r&&(e.swapTime=+new Date),e.subtasks.length>0){var n=e.subtasks.shift();n.error=e.error,n.swapTime=e.swapTime,n.userData=e.userData,n.run(n),n.error||b(n,t)}else C(e),e.error||null!==e.parent&&(e.parent.error=e.error,e.parent.swapTime=e.swapTime,e.parent.userData=e.userData,b(e.parent,t))};r?setTimeout(n,0):n(t)},C=function(e,t){e.state=d,delete i[e.id],null===e.parent&&(e.type in u?0===u[e.type].length?n.log.error(a,"[%s][%s] task queue empty [%s]",e.id,e.name,e.type):u[e.type][0]!==e?n.log.error(a,"[%s][%s] task not first in queue [%s]",e.id,e.name,e.type):(u[e.type].shift(),0===u[e.type].length?delete u[e.type]:u[e.type][0].start()):n.log.error(a,"[%s][%s] task queue missing [%s]",e.id,e.name,e.type),t||(e.error&&e.failureCallback?e.failureCallback(e):!e.error&&e.successCallback&&e.successCallback(e)))};e.exports=n.task=n.task||{},n.task.start=function(e){var t=new y({run:e.run,name:e.name||"?"});t.type=e.type,t.successCallback=e.success||null,t.failureCallback=e.failure||null,t.type in u?u[e.type].push(t):(u[t.type]=[t],m(t))},n.task.cancel=function(e){e in u&&(u[e]=[u[e][0]])},n.task.createCondition=function(){var e={tasks:{}};return e.wait=function(t){t.id in e.tasks||(t.block(),e.tasks[t.id]=t)},e.notify=function(){var t=e.tasks;e.tasks={};for(var r in t)t[r].unblock()},e}},function(e,t,r){(function(e,t){!function(e,r){"use strict";function n(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),r=0;r=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},r(56),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(t,r(14))}]); \ No newline at end of file diff --git a/docs/static/js/main-eba4ac68919b2838e7f6.js b/docs/static/js/main-eba4ac68919b2838e7f6.js new file mode 100644 index 0000000..50ac6a1 --- /dev/null +++ b/docs/static/js/main-eba4ac68919b2838e7f6.js @@ -0,0 +1,7 @@ +!function(e){function t(n){if(r[n])return r[n].exports;var a=r[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var r={};t.m=e,t.c=r,t.i=function(e){return e},t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/DAIHard/",t(t.s=43)}([function(e,t){e.exports={options:{usePureJavaScript:!1}}},function(e,t,r){(function(t,n,a,i){function o(e){if(8!==e&&16!==e&&24!==e&&32!==e)throw new Error("Only 8, 16, 24, or 32 bits supported: "+e)}function u(e){if(this.data="",this.read=0,"string"==typeof e)this.data=e;else if(l.isArrayBuffer(e)||l.isArrayBufferView(e))if(void 0!==i&&e instanceof i)this.data=e.toString("binary");else{var t=new Uint8Array(e);try{this.data=String.fromCharCode.apply(null,t)}catch(e){for(var r=0;r15?(i=Date.now(),s(e)):(a.push(e),1===a.length&&u.setAttribute("a",o=!o))}}l.nextTick=l.setImmediate}(),l.isNodejs=void 0!==t&&t.versions&&t.versions.node,l.globalScope=function(){return l.isNodejs?a:"undefined"==typeof self?window:self}(),l.isArray=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},l.isArrayBuffer=function(e){return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer},l.isArrayBufferView=function(e){return e&&l.isArrayBuffer(e.buffer)&&void 0!==e.byteLength},l.ByteBuffer=u,l.ByteStringBuffer=u;l.ByteStringBuffer.prototype._optimizeConstructedString=function(e){this._constructedStringLength+=e,this._constructedStringLength>4096&&(this.data.substr(0,1),this._constructedStringLength=0)},l.ByteStringBuffer.prototype.length=function(){return this.data.length-this.read},l.ByteStringBuffer.prototype.isEmpty=function(){return this.length()<=0},l.ByteStringBuffer.prototype.putByte=function(e){return this.putBytes(String.fromCharCode(e))},l.ByteStringBuffer.prototype.fillWithByte=function(e,t){e=String.fromCharCode(e);for(var r=this.data;t>0;)1&t&&(r+=e),(t>>>=1)>0&&(e+=e);return this.data=r,this._optimizeConstructedString(t),this},l.ByteStringBuffer.prototype.putBytes=function(e){return this.data+=e,this._optimizeConstructedString(e.length),this},l.ByteStringBuffer.prototype.putString=function(e){return this.putBytes(l.encodeUtf8(e))},l.ByteStringBuffer.prototype.putInt16=function(e){return this.putBytes(String.fromCharCode(e>>8&255)+String.fromCharCode(255&e))},l.ByteStringBuffer.prototype.putInt24=function(e){return this.putBytes(String.fromCharCode(e>>16&255)+String.fromCharCode(e>>8&255)+String.fromCharCode(255&e))},l.ByteStringBuffer.prototype.putInt32=function(e){return this.putBytes(String.fromCharCode(e>>24&255)+String.fromCharCode(e>>16&255)+String.fromCharCode(e>>8&255)+String.fromCharCode(255&e))},l.ByteStringBuffer.prototype.putInt16Le=function(e){return this.putBytes(String.fromCharCode(255&e)+String.fromCharCode(e>>8&255))},l.ByteStringBuffer.prototype.putInt24Le=function(e){return this.putBytes(String.fromCharCode(255&e)+String.fromCharCode(e>>8&255)+String.fromCharCode(e>>16&255))},l.ByteStringBuffer.prototype.putInt32Le=function(e){return this.putBytes(String.fromCharCode(255&e)+String.fromCharCode(e>>8&255)+String.fromCharCode(e>>16&255)+String.fromCharCode(e>>24&255))},l.ByteStringBuffer.prototype.putInt=function(e,t){o(t);var r="";do{t-=8,r+=String.fromCharCode(e>>t&255)}while(t>0);return this.putBytes(r)},l.ByteStringBuffer.prototype.putSignedInt=function(e,t){return e<0&&(e+=2<0);return t},l.ByteStringBuffer.prototype.getSignedInt=function(e){var t=this.getInt(e),r=2<=r&&(t-=r<<1),t},l.ByteStringBuffer.prototype.getBytes=function(e){var t;return e?(e=Math.min(this.length(),e),t=this.data.slice(this.read,this.read+e),this.read+=e):0===e?t="":(t=0===this.read?this.data:this.data.slice(this.read),this.clear()),t},l.ByteStringBuffer.prototype.bytes=function(e){return void 0===e?this.data.slice(this.read):this.data.slice(this.read,this.read+e)},l.ByteStringBuffer.prototype.at=function(e){return this.data.charCodeAt(this.read+e)},l.ByteStringBuffer.prototype.setAt=function(e,t){return this.data=this.data.substr(0,this.read+e)+String.fromCharCode(t)+this.data.substr(this.read+e+1),this},l.ByteStringBuffer.prototype.last=function(){return this.data.charCodeAt(this.data.length-1)},l.ByteStringBuffer.prototype.copy=function(){var e=l.createBuffer(this.data);return e.read=this.read,e},l.ByteStringBuffer.prototype.compact=function(){return this.read>0&&(this.data=this.data.slice(this.read),this.read=0),this},l.ByteStringBuffer.prototype.clear=function(){return this.data="",this.read=0,this},l.ByteStringBuffer.prototype.truncate=function(e){var t=Math.max(0,this.length()-e);return this.data=this.data.substr(this.read,t),this.read=0,this},l.ByteStringBuffer.prototype.toHex=function(){for(var e="",t=this.read;t=e)return this;t=Math.max(t||this.growSize,e);var r=new Uint8Array(this.data.buffer,this.data.byteOffset,this.data.byteLength),n=new Uint8Array(this.length()+t);return n.set(r),this.data=new DataView(n.buffer),this},l.DataBuffer.prototype.putByte=function(e){return this.accommodate(1),this.data.setUint8(this.write++,e),this},l.DataBuffer.prototype.fillWithByte=function(e,t){this.accommodate(t);for(var r=0;r>8&65535),this.data.setInt8(this.write,e>>16&255),this.write+=3,this},l.DataBuffer.prototype.putInt32=function(e){return this.accommodate(4),this.data.setInt32(this.write,e),this.write+=4,this},l.DataBuffer.prototype.putInt16Le=function(e){return this.accommodate(2),this.data.setInt16(this.write,e,!0),this.write+=2,this},l.DataBuffer.prototype.putInt24Le=function(e){return this.accommodate(3),this.data.setInt8(this.write,e>>16&255),this.data.setInt16(this.write,e>>8&65535,!0),this.write+=3,this},l.DataBuffer.prototype.putInt32Le=function(e){return this.accommodate(4),this.data.setInt32(this.write,e,!0),this.write+=4,this},l.DataBuffer.prototype.putInt=function(e,t){o(t),this.accommodate(t/8);do{t-=8,this.data.setInt8(this.write++,e>>t&255)}while(t>0);return this},l.DataBuffer.prototype.putSignedInt=function(e,t){return o(t),this.accommodate(t/8),e<0&&(e+=2<0);return t},l.DataBuffer.prototype.getSignedInt=function(e){var t=this.getInt(e),r=2<=r&&(t-=r<<1),t},l.DataBuffer.prototype.getBytes=function(e){var t;return e?(e=Math.min(this.length(),e),t=this.data.slice(this.read,this.read+e),this.read+=e):0===e?t="":(t=0===this.read?this.data:this.data.slice(this.read),this.clear()),t},l.DataBuffer.prototype.bytes=function(e){return void 0===e?this.data.slice(this.read):this.data.slice(this.read,this.read+e)},l.DataBuffer.prototype.at=function(e){return this.data.getUint8(this.read+e)},l.DataBuffer.prototype.setAt=function(e,t){return this.data.setUint8(e,t),this},l.DataBuffer.prototype.last=function(){return this.data.getUint8(this.write-1)},l.DataBuffer.prototype.copy=function(){return new l.DataBuffer(this)},l.DataBuffer.prototype.compact=function(){if(this.read>0){var e=new Uint8Array(this.data.buffer,this.read),t=new Uint8Array(e.byteLength);t.set(e),this.data=new DataView(t),this.write-=this.read,this.read=0}return this},l.DataBuffer.prototype.clear=function(){return this.data=new DataView(new ArrayBuffer(0)),this.read=this.write=0,this},l.DataBuffer.prototype.truncate=function(e){return this.write=Math.max(0,this.length()-e),this.read=Math.min(this.read,this.write),this},l.DataBuffer.prototype.toHex=function(){for(var e="",t=this.read;t0;)1&t&&(r+=e),(t>>>=1)>0&&(e+=e);return r},l.xorBytes=function(e,t,r){for(var n="",a="",i="",o=0,u=0;r>0;--r,++o)a=e.charCodeAt(o)^t.charCodeAt(o),u>=10&&(n+=i,i="",u=0),i+=String.fromCharCode(a),++u;return n+=i},l.hexToBytes=function(e){var t="",r=0;for(!0&e.length&&(r=1,t+=String.fromCharCode(parseInt(e[0],16)));r>24&255)+String.fromCharCode(e>>16&255)+String.fromCharCode(e>>8&255)+String.fromCharCode(255&e)};var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",h=[62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,64,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],p="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";l.encode64=function(e,t){for(var r,n,a,i="",o="",u=0;u>2),i+=d.charAt((3&r)<<4|n>>4),isNaN(n)?i+="==":(i+=d.charAt((15&n)<<2|a>>6),i+=isNaN(a)?"=":d.charAt(63&a)),t&&i.length>t&&(o+=i.substr(0,t)+"\r\n",i=i.substr(t));return o+=i},l.decode64=function(e){e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");for(var t,r,n,a,i="",o=0;o>4),64!==n&&(i+=String.fromCharCode((15&r)<<4|n>>2),64!==a&&(i+=String.fromCharCode((3&n)<<6|a)));return i},l.encodeUtf8=function(e){return unescape(encodeURIComponent(e))},l.decodeUtf8=function(e){return decodeURIComponent(escape(e))},l.binary={raw:{},hex:{},base64:{},base58:{},baseN:{encode:f.encode,decode:f.decode}},l.binary.raw.encode=function(e){return String.fromCharCode.apply(null,e)},l.binary.raw.decode=function(e,t,r){var n=t;n||(n=new Uint8Array(e.length)),r=r||0;for(var a=r,i=0;i>2),i+=d.charAt((3&r)<<4|n>>4),isNaN(n)?i+="==":(i+=d.charAt((15&n)<<2|a>>6),i+=isNaN(a)?"=":d.charAt(63&a)),t&&i.length>t&&(o+=i.substr(0,t)+"\r\n",i=i.substr(t));return o+=i},l.binary.base64.decode=function(e,t,r){var n=t;n||(n=new Uint8Array(3*Math.ceil(e.length/4))),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,""),r=r||0;for(var a,i,o,u,s=0,c=r;s>4,64!==o&&(n[c++]=(15&i)<<4|o>>2,64!==u&&(n[c++]=(3&o)<<6|u));return t?c-r:n.subarray(0,c)},l.binary.base58.encode=function(e,t){return l.binary.baseN.encode(e,p,t)},l.binary.base58.decode=function(e,t){return l.binary.baseN.decode(e,p,t)},l.text={utf8:{},utf16:{}},l.text.utf8.encode=function(e,t,r){e=l.encodeUtf8(e);var n=t;n||(n=new Uint8Array(e.length)),r=r||0;for(var a=r,i=0;i0?(a=r[n].substring(0,o),i=r[n].substring(o+1)):(a=r[n],i=null),a in t||(t[a]=[]),a in Object.prototype||null===i||t[a].push(unescape(i))}return t};return void 0===e?(null===S&&(S="undefined"!=typeof window&&window.location&&window.location.search?r(window.location.search.substring(1)):{}),t=S):t=r(e),t},l.parseFragment=function(e){var t=e,r="",n=e.indexOf("?");n>0&&(t=e.substring(0,n),r=e.substring(n+1));var a=t.split("/");return a.length>0&&""===a[0]&&a.shift(),{pathString:t,queryString:r,path:a,query:""===r?{}:l.getQueryVariables(r)}},l.makeRequest=function(e){var t=l.parseFragment(e),r={path:t.pathString,query:t.queryString,getPath:function(e){return void 0===e?t.path:t.path[e]},getQuery:function(e,r){var n;return void 0===e?n=t.query:(n=t.query[e])&&void 0!==r&&(n=n[r]),n},getQueryLast:function(e,t){var n=r.getQuery(e);return n?n[n.length-1]:t}};return r},l.makeLink=function(e,t,r){e=jQuery.isArray(e)?e.join("/"):e;var n=jQuery.param(t||{});return r=r||"",e+(n.length>0?"?"+n:"")+(r.length>0?"#"+r:"")},l.setPath=function(e,t,r){if("object"==typeof e&&null!==e)for(var n=0,a=t.length;n0&&i.push(r),o=n.lastIndex;var u=t[0][1];switch(u){case"s":case"o":a");break;case"%":i.push("%");break;default:i.push("<%"+u+"?>")}}return i.push(e.substring(o)),i.join("")},l.formatNumber=function(e,t,r,n){var a=e,i=isNaN(t=Math.abs(t))?2:t,o=void 0===r?",":r,u=void 0===n?".":n,s=a<0?"-":"",c=parseInt(a=Math.abs(+a||0).toFixed(i),10)+"",f=c.length>3?c.length%3:0;return s+(f?c.substr(0,f)+u:"")+c.substr(f).replace(/(\d{3})(?=\d)/g,"$1"+u)+(i?o+Math.abs(a-c).toFixed(i).slice(2):"")},l.formatSize=function(e){return e=e>=1073741824?l.formatNumber(e/1073741824,2,".","")+" GiB":e>=1048576?l.formatNumber(e/1048576,2,".","")+" MiB":e>=1024?l.formatNumber(e/1024,0)+" KiB":l.formatNumber(e,0)+" bytes"},l.bytesFromIP=function(e){return-1!==e.indexOf(".")?l.bytesFromIPv4(e):-1!==e.indexOf(":")?l.bytesFromIPv6(e):null},l.bytesFromIPv4=function(e){if(e=e.split("."),4!==e.length)return null;for(var t=l.createBuffer(),r=0;rr[n].end-r[n].start&&(n=r.length-1)):r.push({start:u,end:u})}t.push(i)}if(r.length>0){var s=r[n];s.end-s.start>0&&(t.splice(s.start,s.end-s.start+1,""),0===s.start&&t.unshift(""),7===s.end&&t.push(""))}return t.join(":")},l.estimateCores=function(e,t){function r(e,o,u){if(0===o){var s=Math.floor(e.reduce(function(e,t){return e+t},0)/e.length);return l.cores=Math.max(1,s),URL.revokeObjectURL(i),t(null,l.cores)}n(u,function(t,n){e.push(a(u,n)),r(e,o-1,u)})}function n(e,t){for(var r=[],n=[],a=0;au.st&&a.sta.st&&u.st0)return l.cores=navigator.hardwareConcurrency,t(null,l.cores);if("undefined"==typeof Worker)return l.cores=1,t(null,l.cores);if("undefined"==typeof Blob)return l.cores=2,t(null,l.cores);var i=URL.createObjectURL(new Blob(["(",function(){self.addEventListener("message",function(e){for(var t=Date.now(),r=t+4;Date.now()t){var n=new Error("Too few bytes to parse DER.");throw n.available=e.length(),n.remaining=t,n.requested=r,n}}function a(e,t,r,i){var s;n(e,t,2);var c=e.getByte();t--;var f=192&c,l=31&c;s=e.length();var d=u(e,t);if(t-=s-e.length(),void 0!==d&&d>t){if(i.strict){var h=new Error("Too few bytes to read ASN.1 value.");throw h.available=e.length(),h.remaining=t,h.requested=d,h}d=t}var p,g,v=32==(32&c);if(v)if(p=[],void 0===d)for(;;){if(n(e,t,2),e.bytes(2)===String.fromCharCode(0,0)){e.getBytes(2),t-=2;break}s=e.length(),p.push(a(e,t,r+1,i)),t-=s-e.length()}else for(;d>0;)s=e.length(),p.push(a(e,d,r+1,i)),t-=s-e.length(),d-=s-e.length();if(void 0===p&&f===o.Class.UNIVERSAL&&l===o.Type.BITSTRING&&(g=e.bytes(d)),void 0===p&&i.decodeBitStrings&&f===o.Class.UNIVERSAL&&l===o.Type.BITSTRING&&d>1){var y=e.read,m=t,b=0;if(l===o.Type.BITSTRING&&(n(e,t,1),b=e.getByte(),t--),0===b)try{s=e.length();var C={verbose:i.verbose,strict:!0,decodeBitStrings:!0},E=a(e,t,r+1,C),S=s-e.length();t-=S,l==o.Type.BITSTRING&&S++;var T=E.tagClass;S!==d||T!==o.Class.UNIVERSAL&&T!==o.Class.CONTEXT_SPECIFIC||(p=[E])}catch(e){}void 0===p&&(e.read=y,t=m)}if(void 0===p){if(void 0===d){if(i.strict)throw new Error("Non-constructed ASN.1 object of indefinite length.");d=t}if(l===o.Type.BMPSTRING)for(p="";d>0;d-=2)n(e,t,2),p+=String.fromCharCode(e.getInt16()),t-=2;else p=e.getBytes(d)}var w=void 0===g?null:{bitStringContents:g};return o.create(f,l,v,p,w)}var i=r(0);r(1),r(6);var o=e.exports=i.asn1=i.asn1||{};o.Class={UNIVERSAL:0,APPLICATION:64,CONTEXT_SPECIFIC:128,PRIVATE:192},o.Type={NONE:0,BOOLEAN:1,INTEGER:2,BITSTRING:3,OCTETSTRING:4,NULL:5,OID:6,ODESC:7,EXTERNAL:8,REAL:9,ENUMERATED:10,EMBEDDED:11,UTF8:12,ROID:13,SEQUENCE:16,SET:17,PRINTABLESTRING:19,IA5STRING:22,UTCTIME:23,GENERALIZEDTIME:24,BMPSTRING:30},o.create=function(e,t,r,n,a){if(i.util.isArray(n)){for(var u=[],s=0;s1&&(0===e.value.charCodeAt(0)&&0==(128&e.value.charCodeAt(1))||255===e.value.charCodeAt(0)&&128==(128&e.value.charCodeAt(1)))?n.putBytes(e.value.substr(1)):n.putBytes(e.value);if(t.putByte(r),n.length()<=127)t.putByte(127&n.length());else{var s=n.length(),c="";do{c+=String.fromCharCode(255&s),s>>>=8}while(s>0);t.putByte(128|c.length);for(var u=c.length-1;u>=0;--u)t.putByte(c.charCodeAt(u))}return t.putBuffer(n),t},o.oidToDer=function(e){var t=e.split("."),r=i.util.createBuffer();r.putByte(40*parseInt(t[0],10)+parseInt(t[1],10));for(var n,a,o,u,s=2;s>>=7,n||(u|=128),a.push(u),n=!1}while(o>0);for(var c=a.length-1;c>=0;--c)r.putByte(a[c])}return r},o.derToOid=function(e){var t;"string"==typeof e&&(e=i.util.createBuffer(e));var r=e.getByte();t=Math.floor(r/40)+"."+r%40;for(var n=0;e.length()>0;)r=e.getByte(),n<<=7,128&r?n+=127&r:(t+="."+(n+r),n=0);return t},o.utcTimeToDate=function(e){var t=new Date,r=parseInt(e.substr(0,2),10);r=r>=50?1900+r:2e3+r;var n=parseInt(e.substr(2,2),10)-1,a=parseInt(e.substr(4,2),10),i=parseInt(e.substr(6,2),10),o=parseInt(e.substr(8,2),10),u=0;if(e.length>11){var s=e.charAt(10),c=10;"+"!==s&&"-"!==s&&(u=parseInt(e.substr(10,2),10),c+=2)}if(t.setUTCFullYear(r,n,a),t.setUTCHours(i,o,u,0),c&&("+"===(s=e.charAt(c))||"-"===s)){var f=parseInt(e.substr(c+1,2),10),l=parseInt(e.substr(c+4,2),10),d=60*f+l;d*=6e4,"+"===s?t.setTime(+t-d):t.setTime(+t+d)}return t},o.generalizedTimeToDate=function(e){var t=new Date,r=parseInt(e.substr(0,4),10),n=parseInt(e.substr(4,2),10)-1,a=parseInt(e.substr(6,2),10),i=parseInt(e.substr(8,2),10),o=parseInt(e.substr(10,2),10),u=parseInt(e.substr(12,2),10),s=0,c=0,f=!1;"Z"===e.charAt(e.length-1)&&(f=!0);var l=e.length-5,d=e.charAt(l);if("+"===d||"-"===d){c=60*parseInt(e.substr(l+1,2),10)+parseInt(e.substr(l+4,2),10),c*=6e4,"+"===d&&(c*=-1),f=!0}return"."===e.charAt(14)&&(s=1e3*parseFloat(e.substr(14),10)),f?(t.setUTCFullYear(r,n,a),t.setUTCHours(i,o,u,s),t.setTime(+t+c)):(t.setFullYear(r,n,a),t.setHours(i,o,u,s)),t},o.dateToUtcTime=function(e){if("string"==typeof e)return e;var t="",r=[];r.push((""+e.getUTCFullYear()).substr(2)),r.push(""+(e.getUTCMonth()+1)),r.push(""+e.getUTCDate()),r.push(""+e.getUTCHours()),r.push(""+e.getUTCMinutes()),r.push(""+e.getUTCSeconds());for(var n=0;n=-128&&e<128)return t.putSignedInt(e,8);if(e>=-32768&&e<32768)return t.putSignedInt(e,16);if(e>=-8388608&&e<8388608)return t.putSignedInt(e,24);if(e>=-2147483648&&e<2147483648)return t.putSignedInt(e,32);var r=new Error("Integer too large; max is 32-bits.");throw r.integer=e,r},o.derToInteger=function(e){"string"==typeof e&&(e=i.util.createBuffer(e));var t=8*e.length();if(t>32)throw new Error("Integer too large; max is 32-bits.");return e.getSignedInt(t)},o.validate=function(e,t,r,n){var a=!1;if(e.tagClass!==t.tagClass&&void 0!==t.tagClass||e.type!==t.type&&void 0!==t.type)n&&(e.tagClass!==t.tagClass&&n.push("["+t.name+'] Expected tag class "'+t.tagClass+'", got "'+e.tagClass+'"'),e.type!==t.type&&n.push("["+t.name+'] Expected type "'+t.type+'", got "'+e.type+'"'));else if(e.constructed===t.constructed||void 0===t.constructed){if(a=!0,t.value&&i.util.isArray(t.value))for(var u=0,s=0;a&&s0&&(n+="\n");for(var a="",u=0;u1?n+="0x"+i.util.bytesToHex(e.value.slice(1)):n+="(none)",e.value.length>0){var d=e.value.charCodeAt(0);1==d?n+=" (1 unused bit shown)":d>1&&(n+=" ("+d+" unused bits shown)")}}else e.type===o.Type.OCTETSTRING?(s.test(e.value)||(n+="("+e.value+") "),n+="0x"+i.util.bytesToHex(e.value)):e.type===o.Type.UTF8?n+=i.util.decodeUtf8(e.value):e.type===o.Type.PRINTABLESTRING||e.type===o.Type.IA5String?n+=e.value:s.test(e.value)?n+="0x"+i.util.bytesToHex(e.value):0===e.value.length?n+="[null]":n+=e.value}return n}},function(e,t,r){var n=r(0);e.exports=n.md=n.md||{},n.md.algorithms=n.md.algorithms||{}},function(e,t,r){function n(e,t){var r=function(){return new s.aes.Algorithm(e,t)};s.cipher.registerAlgorithm(e,r)}function a(){p=!0,l=[0,1,2,4,8,16,32,64,128,27,54];for(var e=new Array(256),t=0;t<128;++t)e[t]=t<<1,e[t+128]=t+128<<1^283;c=new Array(256),f=new Array(256),d=new Array(4),h=new Array(4);for(var t=0;t<4;++t)d[t]=new Array(256),h[t]=new Array(256);for(var r,n,a,i,o,u,s,g=0,v=0,t=0;t<256;++t){i=v^v<<1^v<<2^v<<3^v<<4,i=i>>8^255&i^99,c[g]=i,f[i]=g,o=e[i],r=e[g],n=e[r],a=e[n],u=o<<24^i<<16^i<<8^i^o,s=(r^n^a)<<24^(g^a)<<16^(g^n^a)<<8^g^r^a;for(var y=0;y<4;++y)d[y][g]=u,h[y][i]=s,u=u<<24|u>>>8,s=s<<24|s>>>8;0===g?g=v=1:(g=r^e[e[e[r^a]]],v^=e[e[v]])}}function i(e,t){for(var r,n=e.slice(0),a=1,i=n.length,o=i+6+1,u=g*o,s=i;s>>16&255]<<24^c[r>>>8&255]<<16^c[255&r]<<8^c[r>>>24]^l[a]<<24,a++):i>6&&s%i==4&&(r=c[r>>>24]<<24^c[r>>>16&255]<<16^c[r>>>8&255]<<8^c[255&r]),n[s]=n[s-i]^r;if(t){var f,d=h[0],p=h[1],v=h[2],y=h[3],m=n.slice(0);u=n.length;for(var s=0,b=u-g;s>>24]]^p[c[f>>>16&255]]^v[c[f>>>8&255]]^y[c[255&f]];n=m}return n}function o(e,t,r,n){var a,i,o,u,s,l=e.length/4-1;n?(a=h[0],i=h[1],o=h[2],u=h[3],s=f):(a=d[0],i=d[1],o=d[2],u=d[3],s=c);var p,g,v,y,m,b,C;p=t[0]^e[0],g=t[n?3:1]^e[1],v=t[2]^e[2],y=t[n?1:3]^e[3];for(var E=3,S=1;S>>24]^i[g>>>16&255]^o[v>>>8&255]^u[255&y]^e[++E],b=a[g>>>24]^i[v>>>16&255]^o[y>>>8&255]^u[255&p]^e[++E],C=a[v>>>24]^i[y>>>16&255]^o[p>>>8&255]^u[255&g]^e[++E],y=a[y>>>24]^i[p>>>16&255]^o[g>>>8&255]^u[255&v]^e[++E],p=m,g=b,v=C;r[0]=s[p>>>24]<<24^s[g>>>16&255]<<16^s[v>>>8&255]<<8^s[255&y]^e[++E],r[n?3:1]=s[g>>>24]<<24^s[v>>>16&255]<<16^s[y>>>8&255]<<8^s[255&p]^e[++E],r[2]=s[v>>>24]<<24^s[y>>>16&255]<<16^s[p>>>8&255]<<8^s[255&g]^e[++E],r[n?1:3]=s[y>>>24]<<24^s[p>>>16&255]<<16^s[g>>>8&255]<<8^s[255&v]^e[++E]}function u(e){e=e||{};var t,r=(e.mode||"CBC").toUpperCase(),n="AES-"+r;t=e.decrypt?s.cipher.createDecipher(n,e.key):s.cipher.createCipher(n,e.key);var a=t.start;return t.start=function(e,r){var n=null;r instanceof s.util.ByteBuffer&&(n=r,r={}),r=r||{},r.output=n,r.iv=e,a.call(t,r)},t}var s=r(0);r(15),r(23),r(1),e.exports=s.aes=s.aes||{},s.aes.startEncrypting=function(e,t,r,n){var a=u({key:e,output:r,decrypt:!1,mode:n});return a.start(t),a},s.aes.createEncryptionCipher=function(e,t){return u({key:e,output:null,decrypt:!1,mode:t})},s.aes.startDecrypting=function(e,t,r,n){var a=u({key:e,output:r,decrypt:!0,mode:n});return a.start(t),a},s.aes.createDecryptionCipher=function(e,t){return u({key:e,output:null,decrypt:!0,mode:t})},s.aes.Algorithm=function(e,t){p||a();var r=this;r.name=e,r.mode=new t({blockSize:16,cipher:{encrypt:function(e,t){return o(r._w,e,t,!1)},decrypt:function(e,t){return o(r._w,e,t,!0)}}}),r._init=!1},s.aes.Algorithm.prototype.initialize=function(e){if(!this._init){var t,r=e.key;if("string"!=typeof r||16!==r.length&&24!==r.length&&32!==r.length){if(s.util.isArray(r)&&(16===r.length||24===r.length||32===r.length)){t=r,r=s.util.createBuffer();for(var n=0;n>>=2;for(var n=0;n65&&-1!==o){var u=t[o];","===u?(++o,t=t.substr(0,o)+"\r\n "+t.substr(o)):t=t.substr(0,o)+"\r\n"+u+t.substr(o+1),i=a-o-1,o=-1,++a}else" "!==t[a]&&"\t"!==t[a]&&","!==t[a]||(o=a);return t}function a(e){return e.replace(/^\s+/,"")}var i=r(0);r(1);var o=e.exports=i.pem=i.pem||{};o.encode=function(e,t){t=t||{};var r,a="-----BEGIN "+e.type+"-----\r\n";if(e.procType&&(r={name:"Proc-Type",values:[String(e.procType.version),e.procType.type]},a+=n(r)),e.contentDomain&&(r={name:"Content-Domain",values:[e.contentDomain]},a+=n(r)),e.dekInfo&&(r={name:"DEK-Info",values:[e.dekInfo.algorithm]},e.dekInfo.parameters&&r.values.push(e.dekInfo.parameters),a+=n(r)),e.headers)for(var o=0;ot.blockLength&&(t.start(),t.update(o.bytes()),o=t.digest()),r=n.util.createBuffer(),a=n.util.createBuffer(),c=o.length();for(var s=0;s=64;){for(a=e.h0,i=e.h1,o=e.h2,u=e.h3,s=e.h4,f=0;f<16;++f)n=r.getInt32(),t[f]=n,c=u^i&(o^u),n=(a<<5|a>>>27)+c+s+1518500249+n,s=u,u=o,o=(i<<30|i>>>2)>>>0,i=a,a=n;for(;f<20;++f)n=t[f-3]^t[f-8]^t[f-14]^t[f-16],n=n<<1|n>>>31,t[f]=n,c=u^i&(o^u),n=(a<<5|a>>>27)+c+s+1518500249+n,s=u,u=o,o=(i<<30|i>>>2)>>>0,i=a,a=n;for(;f<32;++f)n=t[f-3]^t[f-8]^t[f-14]^t[f-16],n=n<<1|n>>>31,t[f]=n,c=i^o^u,n=(a<<5|a>>>27)+c+s+1859775393+n,s=u,u=o,o=(i<<30|i>>>2)>>>0,i=a,a=n;for(;f<40;++f)n=t[f-6]^t[f-16]^t[f-28]^t[f-32],n=n<<2|n>>>30,t[f]=n,c=i^o^u,n=(a<<5|a>>>27)+c+s+1859775393+n,s=u,u=o,o=(i<<30|i>>>2)>>>0,i=a,a=n;for(;f<60;++f)n=t[f-6]^t[f-16]^t[f-28]^t[f-32],n=n<<2|n>>>30,t[f]=n,c=i&o|u&(i^o),n=(a<<5|a>>>27)+c+s+2400959708+n,s=u,u=o,o=(i<<30|i>>>2)>>>0,i=a,a=n;for(;f<80;++f)n=t[f-6]^t[f-16]^t[f-28]^t[f-32],n=n<<2|n>>>30,t[f]=n,c=i^o^u,n=(a<<5|a>>>27)+c+s+3395469782+n,s=u,u=o,o=(i<<30|i>>>2)>>>0,i=a,a=n;e.h0=e.h0+a|0,e.h1=e.h1+i|0,e.h2=e.h2+o|0,e.h3=e.h3+u|0,e.h4=e.h4+s|0,l-=64}}var i=r(0);r(4),r(1);var o=e.exports=i.sha1=i.sha1||{};i.md.sha1=i.md.algorithms.sha1=o,o.create=function(){s||n();var e=null,t=i.util.createBuffer(),r=new Array(80),o={algorithm:"sha1",blockLength:64,digestLength:20,messageLength:0,fullMessageLength:null,messageLengthSize:8};return o.start=function(){o.messageLength=0,o.fullMessageLength=o.messageLength64=[];for(var r=o.messageLengthSize/4,n=0;n>>0,s>>>0];for(var c=o.fullMessageLength.length-1;c>=0;--c)o.fullMessageLength[c]+=s[1],s[1]=s[0]+(o.fullMessageLength[c]/4294967296>>>0),o.fullMessageLength[c]=o.fullMessageLength[c]>>>0,s[0]=s[1]/4294967296>>>0;return t.putBytes(n),a(e,r,t),(t.read>2048||0===t.length())&&t.compact(),o},o.digest=function(){var n=i.util.createBuffer();n.putBytes(t.bytes());var s=o.fullMessageLength[o.fullMessageLength.length-1]+o.messageLengthSize,c=s&o.blockLength-1;n.putBytes(u.substr(0,o.blockLength-c));for(var f,l,d=8*o.fullMessageLength[0],h=0;h>>0,d+=l,n.putInt32(d>>>0),d=f>>>0;n.putInt32(d);var p={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3,h4:e.h4};a(p,r,n);var g=i.util.createBuffer();return g.putInt32(p.h0),g.putInt32(p.h1),g.putInt32(p.h2),g.putInt32(p.h3),g.putInt32(p.h4),g},o};var u=null,s=!1},function(e,t,r){"use strict";(function(e){function n(){return i.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(e,t){if(n()=n())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n().toString(16)+" bytes");return 0|e}function g(e){return+e!=e&&(e=0),i.alloc(+e)}function v(e,t){if(i.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return j(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return z(e).length;default:if(n)return j(e).length;t=(""+t).toLowerCase(),n=!0}}function y(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if(r>>>=0,t>>>=0,r<=t)return"";for(e||(e="utf8");;)switch(e){case"hex":return _(this,t,r);case"utf8":case"utf-8":return k(this,t,r);case"ascii":return R(this,t,r);case"latin1":case"binary":return $(this,t,r);case"base64":return B(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function m(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function b(e,t,r,n,a){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=a?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(a)return-1;r=e.length-1}else if(r<0){if(!a)return-1;r=0}if("string"==typeof t&&(t=i.from(t,n)),i.isBuffer(t))return 0===t.length?-1:C(e,t,r,n,a);if("number"==typeof t)return t&=255,i.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?a?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):C(e,[t],r,n,a);throw new TypeError("val must be string, number or Buffer")}function C(e,t,r,n,a){function i(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}var o=1,u=e.length,s=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;o=2,u/=2,s/=2,r/=2}var c;if(a){var f=-1;for(c=r;cu&&(r=u-s),c=r;c>=0;c--){for(var l=!0,d=0;da&&(n=a):n=a;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");n>i/2&&(n=i/2);for(var o=0;o239?4:i>223?3:i>191?2:1;if(a+u<=r){var s,c,f,l;switch(u){case 1:i<128&&(o=i);break;case 2:s=e[a+1],128==(192&s)&&(l=(31&i)<<6|63&s)>127&&(o=l);break;case 3:s=e[a+1],c=e[a+2],128==(192&s)&&128==(192&c)&&(l=(15&i)<<12|(63&s)<<6|63&c)>2047&&(l<55296||l>57343)&&(o=l);break;case 4:s=e[a+1],c=e[a+2],f=e[a+3],128==(192&s)&&128==(192&c)&&128==(192&f)&&(l=(15&i)<<18|(63&s)<<12|(63&c)<<6|63&f)>65535&&l<1114112&&(o=l)}}null===o?(o=65533,u=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),a+=u}return N(n)}function N(e){var t=e.length;if(t<=Z)return String.fromCharCode.apply(String,e);for(var r="",n=0;nn)&&(r=n);for(var a="",i=t;ir)throw new RangeError("Trying to access beyond buffer length")}function P(e,t,r,n,a,o){if(!i.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>a||te.length)throw new RangeError("Index out of range")}function D(e,t,r,n){t<0&&(t=65535+t+1);for(var a=0,i=Math.min(e.length-r,2);a>>8*(n?a:1-a)}function U(e,t,r,n){t<0&&(t=4294967295+t+1);for(var a=0,i=Math.min(e.length-r,4);a>>8*(n?a:3-a)&255}function O(e,t,r,n,a,i){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function M(e,t,r,n,a){return a||O(e,t,r,4,3.4028234663852886e38,-3.4028234663852886e38),Q.write(e,t,r,n,23,4),r+4}function F(e,t,r,n,a){return a||O(e,t,r,8,1.7976931348623157e308,-1.7976931348623157e308),Q.write(e,t,r,n,52,8),r+8}function V(e){if(e=K(e).replace(ee,""),e.length<2)return"";for(;e.length%4!=0;)e+="=";return e}function K(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function H(e){return e<16?"0"+e.toString(16):e.toString(16)}function j(e,t){t=t||1/0;for(var r,n=e.length,a=null,i=[],o=0;o55295&&r<57344){if(!a){if(r>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(o+1===n){(t-=3)>-1&&i.push(239,191,189);continue}a=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),a=r;continue}r=65536+(a-55296<<10|r-56320)}else a&&(t-=3)>-1&&i.push(239,191,189);if(a=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function q(e){for(var t=[],r=0;r>8,a=r%256,i.push(a),i.push(n);return i}function z(e){return J.toByteArray(V(e))}function Y(e,t,r,n){for(var a=0;a=t.length||a>=e.length);++a)t[a+r]=e[a];return a}function W(e){return e!==e}/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +var J=r(44),Q=r(45),X=r(46);t.Buffer=i,t.SlowBuffer=g,t.INSPECT_MAX_BYTES=50,i.TYPED_ARRAY_SUPPORT=void 0!==e.TYPED_ARRAY_SUPPORT?e.TYPED_ARRAY_SUPPORT:function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()&&"function"==typeof e.subarray&&0===e.subarray(1,1).byteLength}catch(e){return!1}}(),t.kMaxLength=n(),i.poolSize=8192,i._augment=function(e){return e.__proto__=i.prototype,e},i.from=function(e,t,r){return o(null,e,t,r)},i.TYPED_ARRAY_SUPPORT&&(i.prototype.__proto__=Uint8Array.prototype,i.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&i[Symbol.species]===i&&Object.defineProperty(i,Symbol.species,{value:null,configurable:!0})),i.alloc=function(e,t,r){return s(null,e,t,r)},i.allocUnsafe=function(e){return c(null,e)},i.allocUnsafeSlow=function(e){return c(null,e)},i.isBuffer=function(e){return!(null==e||!e._isBuffer)},i.compare=function(e,t){if(!i.isBuffer(e)||!i.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var r=e.length,n=t.length,a=0,o=Math.min(r,n);a0&&(e=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(e+=" ... ")),""},i.prototype.compare=function(e,t,r,n,a){if(!i.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===a&&(a=this.length),t<0||r>e.length||n<0||a>this.length)throw new RangeError("out of range index");if(n>=a&&t>=r)return 0;if(n>=a)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,a>>>=0,this===e)return 0;for(var o=a-n,u=r-t,s=Math.min(o,u),c=this.slice(n,a),f=e.slice(t,r),l=0;la)&&(r=a),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return E(this,e,t,r);case"utf8":case"utf-8":return S(this,e,t,r);case"ascii":return T(this,e,t,r);case"latin1":case"binary":return w(this,e,t,r);case"base64":return I(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,e,t,r);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},i.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var Z=4096;i.prototype.slice=function(e,t){var r=this.length;e=~~e,t=void 0===t?r:~~t,e<0?(e+=r)<0&&(e=0):e>r&&(e=r),t<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(a*=256);)n+=this[e+--t]*a;return n},i.prototype.readUInt8=function(e,t){return t||x(e,1,this.length),this[e]},i.prototype.readUInt16LE=function(e,t){return t||x(e,2,this.length),this[e]|this[e+1]<<8},i.prototype.readUInt16BE=function(e,t){return t||x(e,2,this.length),this[e]<<8|this[e+1]},i.prototype.readUInt32LE=function(e,t){return t||x(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},i.prototype.readUInt32BE=function(e,t){return t||x(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},i.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||x(e,t,this.length);for(var n=this[e],a=1,i=0;++i=a&&(n-=Math.pow(2,8*t)),n},i.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||x(e,t,this.length);for(var n=t,a=1,i=this[e+--n];n>0&&(a*=256);)i+=this[e+--n]*a;return a*=128,i>=a&&(i-=Math.pow(2,8*t)),i},i.prototype.readInt8=function(e,t){return t||x(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},i.prototype.readInt16LE=function(e,t){t||x(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},i.prototype.readInt16BE=function(e,t){t||x(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},i.prototype.readInt32LE=function(e,t){return t||x(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},i.prototype.readInt32BE=function(e,t){return t||x(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},i.prototype.readFloatLE=function(e,t){return t||x(e,4,this.length),Q.read(this,e,!0,23,4)},i.prototype.readFloatBE=function(e,t){return t||x(e,4,this.length),Q.read(this,e,!1,23,4)},i.prototype.readDoubleLE=function(e,t){return t||x(e,8,this.length),Q.read(this,e,!0,52,8)},i.prototype.readDoubleBE=function(e,t){return t||x(e,8,this.length),Q.read(this,e,!1,52,8)},i.prototype.writeUIntLE=function(e,t,r,n){if(e=+e,t|=0,r|=0,!n){P(this,e,t,r,Math.pow(2,8*r)-1,0)}var a=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+a]=e/i&255;return t+r},i.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||P(this,e,t,1,255,0),i.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},i.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||P(this,e,t,2,65535,0),i.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):D(this,e,t,!0),t+2},i.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||P(this,e,t,2,65535,0),i.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):D(this,e,t,!1),t+2},i.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||P(this,e,t,4,4294967295,0),i.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):U(this,e,t,!0),t+4},i.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||P(this,e,t,4,4294967295,0),i.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):U(this,e,t,!1),t+4},i.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var a=Math.pow(2,8*r-1);P(this,e,t,r,a-1,-a)}var i=0,o=1,u=0;for(this[t]=255&e;++i>0)-u&255;return t+r},i.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var a=Math.pow(2,8*r-1);P(this,e,t,r,a-1,-a)}var i=r-1,o=1,u=0;for(this[t+i]=255&e;--i>=0&&(o*=256);)e<0&&0===u&&0!==this[t+i+1]&&(u=1),this[t+i]=(e/o>>0)-u&255;return t+r},i.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||P(this,e,t,1,127,-128),i.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},i.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||P(this,e,t,2,32767,-32768),i.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):D(this,e,t,!0),t+2},i.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||P(this,e,t,2,32767,-32768),i.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):D(this,e,t,!1),t+2},i.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||P(this,e,t,4,2147483647,-2147483648),i.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):U(this,e,t,!0),t+4},i.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||P(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),i.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):U(this,e,t,!1),t+4},i.prototype.writeFloatLE=function(e,t,r){return M(this,e,t,!0,r)},i.prototype.writeFloatBE=function(e,t,r){return M(this,e,t,!1,r)},i.prototype.writeDoubleLE=function(e,t,r){return F(this,e,t,!0,r)},i.prototype.writeDoubleBE=function(e,t,r){return F(this,e,t,!1,r)},i.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t=0;--a)e[a+t]=this[a+r];else if(o<1e3||!i.TYPED_ARRAY_SUPPORT)for(a=0;a>>=0,r=void 0===r?this.length:r>>>0,e||(e=0);var o;if("number"==typeof e)for(o=t;o8?3:1,y=[],m=[0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0],b=0,C=0;C>>4^S),S^=t,E^=t<<4,t=65535&(S>>>-16^E),E^=t,S^=t<<-16,t=858993459&(E>>>2^S),S^=t,E^=t<<2,t=65535&(S>>>-16^E),E^=t,S^=t<<-16,t=1431655765&(E>>>1^S),S^=t,E^=t<<1,t=16711935&(S>>>8^E),E^=t,S^=t<<8,t=1431655765&(E>>>1^S),S^=t,E^=t<<1,t=E<<8|S>>>20&240,E=S<<24|S<<8&16711680|S>>>8&65280|S>>>24&240,S=t;for(var T=0;T>>26,S=S<<2|S>>>26):(E=E<<1|E>>>27,S=S<<1|S>>>27),E&=-15,S&=-15;var w=r[E>>>28]|n[E>>>24&15]|a[E>>>20&15]|i[E>>>16&15]|o[E>>>12&15]|u[E>>>8&15]|s[E>>>4&15],I=c[S>>>28]|f[S>>>24&15]|l[S>>>20&15]|d[S>>>16&15]|h[S>>>12&15]|p[S>>>8&15]|g[S>>>4&15];t=65535&(I>>>16^w),y[b++]=w^t,y[b++]=I^t<<16}}return y}function i(e,t,r,n){var a,i=32===e.length?3:9;a=3===i?n?[30,-2,-2]:[0,32,2]:n?[94,62,-2,32,64,2,30,-2,-2]:[0,32,2,62,30,-2,64,96,2];var o,u=t[0],v=t[1];o=252645135&(u>>>4^v),v^=o,u^=o<<4,o=65535&(u>>>16^v),v^=o,u^=o<<16,o=858993459&(v>>>2^u),u^=o,v^=o<<2,o=16711935&(v>>>8^u),u^=o,v^=o<<8,o=1431655765&(u>>>1^v),v^=o,u^=o<<1,u=u<<1|u>>>31,v=v<<1|v>>>31;for(var y=0;y>>4|v<<28)^e[C+1];o=u,u=v,v=o^(c[E>>>24&63]|l[E>>>16&63]|h[E>>>8&63]|g[63&E]|s[S>>>24&63]|f[S>>>16&63]|d[S>>>8&63]|p[63&S])}o=u,u=v,v=o}u=u>>>1|u<<31,v=v>>>1|v<<31,o=1431655765&(u>>>1^v),v^=o,u^=o<<1,o=16711935&(v>>>8^u),u^=o,v^=o<<8,o=858993459&(v>>>2^u),u^=o,v^=o<<2,o=65535&(u>>>16^v),v^=o,u^=o<<16,o=252645135&(u>>>4^v),v^=o,u^=o<<4,r[0]=u,r[1]=v}function o(e){e=e||{};var t,r=(e.mode||"CBC").toUpperCase(),n="DES-"+r;t=e.decrypt?u.cipher.createDecipher(n,e.key):u.cipher.createCipher(n,e.key);var a=t.start;return t.start=function(e,r){var n=null;r instanceof u.util.ByteBuffer&&(n=r,r={}),r=r||{},r.output=n,r.iv=e,a.call(t,r)},t}var u=r(0);r(15),r(23),r(1),e.exports=u.des=u.des||{},u.des.startEncrypting=function(e,t,r,n){var a=o({key:e,output:r,decrypt:!1,mode:n||(null===t?"ECB":"CBC")});return a.start(t),a},u.des.createEncryptionCipher=function(e,t){return o({key:e,output:null,decrypt:!1,mode:t})},u.des.startDecrypting=function(e,t,r,n){var a=o({key:e,output:r,decrypt:!0,mode:n||(null===t?"ECB":"CBC")});return a.start(t),a},u.des.createDecryptionCipher=function(e,t){return o({key:e,output:null,decrypt:!0,mode:t})},u.des.Algorithm=function(e,t){var r=this;r.name=e,r.mode=new t({blockSize:8,cipher:{encrypt:function(e,t){return i(r._keys,e,t,!1)},decrypt:function(e,t){return i(r._keys,e,t,!0)}}}),r._init=!1},u.des.Algorithm.prototype.initialize=function(e){if(!this._init){var t=u.util.createBuffer(e.key);if(0===this.name.indexOf("3DES")&&24!==t.length())throw new Error("Invalid Triple-DES key size: "+8*t.length());this._keys=a(t),this._init=!0}},n("DES-ECB",u.cipher.modes.ecb),n("DES-CBC",u.cipher.modes.cbc),n("DES-CFB",u.cipher.modes.cfb),n("DES-OFB",u.cipher.modes.ofb),n("DES-CTR",u.cipher.modes.ctr),n("3DES-ECB",u.cipher.modes.ecb),n("3DES-CBC",u.cipher.modes.cbc),n("3DES-CFB",u.cipher.modes.cfb),n("3DES-OFB",u.cipher.modes.ofb),n("3DES-CTR",u.cipher.modes.ctr);var s=[16843776,0,65536,16843780,16842756,66564,4,65536,1024,16843776,16843780,1024,16778244,16842756,16777216,4,1028,16778240,16778240,66560,66560,16842752,16842752,16778244,65540,16777220,16777220,65540,0,1028,66564,16777216,65536,16843780,4,16842752,16843776,16777216,16777216,1024,16842756,65536,66560,16777220,1024,4,16778244,66564,16843780,65540,16842752,16778244,16777220,1028,66564,16843776,1028,16778240,16778240,0,65540,66560,0,16842756],c=[-2146402272,-2147450880,32768,1081376,1048576,32,-2146435040,-2147450848,-2147483616,-2146402272,-2146402304,-2147483648,-2147450880,1048576,32,-2146435040,1081344,1048608,-2147450848,0,-2147483648,32768,1081376,-2146435072,1048608,-2147483616,0,1081344,32800,-2146402304,-2146435072,32800,0,1081376,-2146435040,1048576,-2147450848,-2146435072,-2146402304,32768,-2146435072,-2147450880,32,-2146402272,1081376,32,32768,-2147483648,32800,-2146402304,1048576,-2147483616,1048608,-2147450848,-2147483616,1048608,1081344,0,-2147450880,32800,-2147483648,-2146435040,-2146402272,1081344],f=[520,134349312,0,134348808,134218240,0,131592,134218240,131080,134217736,134217736,131072,134349320,131080,134348800,520,134217728,8,134349312,512,131584,134348800,134348808,131592,134218248,131584,131072,134218248,8,134349320,512,134217728,134349312,134217728,131080,520,131072,134349312,134218240,0,512,131080,134349320,134218240,134217736,512,0,134348808,134218248,131072,134217728,134349320,8,131592,131584,134217736,134348800,134218248,520,134348800,131592,8,134348808,131584],l=[8396801,8321,8321,128,8396928,8388737,8388609,8193,0,8396800,8396800,8396929,129,0,8388736,8388609,1,8192,8388608,8396801,128,8388608,8193,8320,8388737,1,8320,8388736,8192,8396928,8396929,129,8388736,8388609,8396800,8396929,129,0,0,8396800,8320,8388736,8388737,1,8396801,8321,8321,128,8396929,129,1,8192,8388609,8193,8396928,8388737,8193,8320,8388608,8396801,128,8388608,8192,8396928],d=[256,34078976,34078720,1107296512,524288,256,1073741824,34078720,1074266368,524288,33554688,1074266368,1107296512,1107820544,524544,1073741824,33554432,1074266112,1074266112,0,1073742080,1107820800,1107820800,33554688,1107820544,1073742080,0,1107296256,34078976,33554432,1107296256,524544,524288,1107296512,256,33554432,1073741824,34078720,1107296512,1074266368,33554688,1073741824,1107820544,34078976,1074266368,256,33554432,1107820544,1107820800,524544,1107296256,1107820800,34078720,0,1074266112,1107296256,524544,33554688,1073742080,524288,0,1074266112,34078976,1073742080],h=[536870928,541065216,16384,541081616,541065216,16,541081616,4194304,536887296,4210704,4194304,536870928,4194320,536887296,536870912,16400,0,4194320,536887312,16384,4210688,536887312,16,541065232,541065232,0,4210704,541081600,16400,4210688,541081600,536870912,536887296,16,541065232,4210688,541081616,4194304,16400,536870928,4194304,536887296,536870912,16400,536870928,541081616,4210688,541065216,4210704,541081600,0,541065232,16,16384,541065216,4210704,16384,4194320,536887312,0,541081600,536870912,4194320,536887312],p=[2097152,69206018,67110914,0,2048,67110914,2099202,69208064,69208066,2097152,0,67108866,2,67108864,69206018,2050,67110912,2099202,2097154,67110912,67108866,69206016,69208064,2097154,69206016,2048,2050,69208066,2099200,2,67108864,2099200,67108864,2099200,2097152,67110914,67110914,69206018,69206018,2,2097154,67108864,67110912,2097152,69208064,2050,2099202,69208064,2050,67108866,69208066,69206016,2099200,0,2,69208066,0,2099202,69206016,2048,67108866,67110912,2048,2097154],g=[268439616,4096,262144,268701760,268435456,268439616,64,268435456,262208,268697600,268701760,266240,268701696,266304,4096,64,268697600,268435520,268439552,4160,266240,262208,268697664,268701696,4160,0,0,268697664,268435520,268439552,266304,262144,266304,262144,268701696,4096,64,268697664,4096,266304,268439552,64,268435520,268697600,268697664,268435456,262144,268439616,0,268701760,262208,268435520,268697600,268439552,268439616,0,268701760,266240,266240,4160,4160,262208,268435456,268701696]},function(e,t,r){function n(e,t,r){this.data=[],null!=e&&("number"==typeof e?this.fromNumber(e,t,r):null==t&&"string"!=typeof e?this.fromString(e,256):this.fromString(e,t))}function a(){return new n(null)}function i(e,t,r,n,a,i){for(;--i>=0;){var o=t*this.data[e++]+r.data[n]+a;a=Math.floor(o/67108864),r.data[n++]=67108863&o}return a}function o(e,t,r,n,a,i){for(var o=32767&t,u=t>>15;--i>=0;){var s=32767&this.data[e],c=this.data[e++]>>15,f=u*s+c*o;s=o*s+((32767&f)<<15)+r.data[n]+(1073741823&a),a=(s>>>30)+(f>>>15)+u*c+(a>>>30),r.data[n++]=1073741823&s}return a}function u(e,t,r,n,a,i){for(var o=16383&t,u=t>>14;--i>=0;){var s=16383&this.data[e],c=this.data[e++]>>14,f=u*s+c*o;s=o*s+((16383&f)<<14)+r.data[n]+a,a=(s>>28)+(f>>14)+u*c,r.data[n++]=268435455&s}return a}function s(e){return it.charAt(e)}function c(e,t){var r=ot[e.charCodeAt(t)];return null==r?-1:r}function f(e){for(var t=this.t-1;t>=0;--t)e.data[t]=this.data[t];e.t=this.t,e.s=this.s}function l(e){this.t=1,this.s=e<0?-1:0,e>0?this.data[0]=e:e<-1?this.data[0]=e+this.DV:this.t=0}function d(e){var t=a();return t.fromInt(e),t}function h(e,t){var r;if(16==t)r=4;else if(8==t)r=3;else if(256==t)r=8;else if(2==t)r=1;else if(32==t)r=5;else{if(4!=t)return void this.fromRadix(e,t);r=2}this.t=0,this.s=0;for(var a=e.length,i=!1,o=0;--a>=0;){var u=8==r?255&e[a]:c(e,a);u<0?"-"==e.charAt(a)&&(i=!0):(i=!1,0==o?this.data[this.t++]=u:o+r>this.DB?(this.data[this.t-1]|=(u&(1<>this.DB-o):this.data[this.t-1]|=u<=this.DB&&(o-=this.DB))}8==r&&0!=(128&e[0])&&(this.s=-1,o>0&&(this.data[this.t-1]|=(1<0&&this.data[this.t-1]==e;)--this.t}function g(e){if(this.s<0)return"-"+this.negate().toString(e);var t;if(16==e)t=4;else if(8==e)t=3;else if(2==e)t=1;else if(32==e)t=5;else{if(4!=e)return this.toRadix(e);t=2}var r,n=(1<0)for(u>u)>0&&(a=!0,i=s(r));o>=0;)u>(u+=this.DB-t)):(r=this.data[o]>>(u-=t)&n,u<=0&&(u+=this.DB,--o)),r>0&&(a=!0),a&&(i+=s(r));return a?i:"0"}function v(){var e=a();return n.ZERO.subTo(this,e),e}function y(){return this.s<0?this.negate():this}function m(e){var t=this.s-e.s;if(0!=t)return t;var r=this.t;if(0!=(t=r-e.t))return this.s<0?-t:t;for(;--r>=0;)if(0!=(t=this.data[r]-e.data[r]))return t;return 0}function b(e){var t,r=1;return 0!=(t=e>>>16)&&(e=t,r+=16),0!=(t=e>>8)&&(e=t,r+=8),0!=(t=e>>4)&&(e=t,r+=4),0!=(t=e>>2)&&(e=t,r+=2),0!=(t=e>>1)&&(e=t,r+=1),r}function C(){return this.t<=0?0:this.DB*(this.t-1)+b(this.data[this.t-1]^this.s&this.DM)}function E(e,t){var r;for(r=this.t-1;r>=0;--r)t.data[r+e]=this.data[r];for(r=e-1;r>=0;--r)t.data[r]=0;t.t=this.t+e,t.s=this.s}function S(e,t){for(var r=e;r=0;--r)t.data[r+o+1]=this.data[r]>>a|u,u=(this.data[r]&i)<=0;--r)t.data[r]=0;t.data[o]=u,t.t=this.t+o+1,t.s=this.s,t.clamp()}function w(e,t){t.s=this.s;var r=Math.floor(e/this.DB);if(r>=this.t)return void(t.t=0);var n=e%this.DB,a=this.DB-n,i=(1<>n;for(var o=r+1;o>n;n>0&&(t.data[this.t-r-1]|=(this.s&i)<>=this.DB;if(e.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n-=e.s}t.s=n<0?-1:0,n<-1?t.data[r++]=this.DV+n:n>0&&(t.data[r++]=n),t.t=r,t.clamp()}function A(e,t){var r=this.abs(),a=e.abs(),i=r.t;for(t.t=i+a.t;--i>=0;)t.data[i]=0;for(i=0;i=0;)e.data[r]=0;for(r=0;r=t.DV&&(e.data[r+t.t]-=t.DV,e.data[r+t.t+1]=1)}e.t>0&&(e.data[e.t-1]+=t.am(r,t.data[r],e,2*r,0,1)),e.s=0,e.clamp()}function k(e,t,r){var i=e.abs();if(!(i.t<=0)){var o=this.abs();if(o.t0?(i.lShiftTo(f,u),o.lShiftTo(f,r)):(i.copyTo(u),o.copyTo(r));var l=u.t,d=u.data[l-1];if(0!=d){var h=d*(1<1?u.data[l-2]>>this.F2:0),p=this.FV/h,g=(1<=0&&(r.data[r.t++]=1,r.subTo(C,r)),n.ONE.dlShiftTo(l,C),C.subTo(u,u);u.t=0;){var E=r.data[--y]==d?this.DM:Math.floor(r.data[y]*p+(r.data[y-1]+v)*g);if((r.data[y]+=u.am(0,E,r,m,0,l))0&&r.rShiftTo(f,r),s<0&&n.ZERO.subTo(r,r)}}}function N(e){var t=a();return this.abs().divRemTo(e,null,t),this.s<0&&t.compareTo(n.ZERO)>0&&e.subTo(t,t),t}function R(e){this.m=e}function $(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e}function _(e){return e}function L(e){e.divRemTo(this.m,null,e)}function x(e,t,r){e.multiplyTo(t,r),this.reduce(r)}function P(e,t){e.squareTo(t),this.reduce(t)}function D(){if(this.t<1)return 0;var e=this.data[0];if(0==(1&e))return 0;var t=3&e;return t=t*(2-(15&e)*t)&15,t=t*(2-(255&e)*t)&255,t=t*(2-((65535&e)*t&65535))&65535,t=t*(2-e*t%this.DV)%this.DV,t>0?this.DV-t:-t}function U(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<0&&this.m.subTo(t,t),t}function M(e){var t=a();return e.copyTo(t),this.reduce(t),t}function F(e){for(;e.t<=this.mt2;)e.data[e.t++]=0;for(var t=0;t>15)*this.mpl&this.um)<<15)&e.DM;for(r=t+this.m.t,e.data[r]+=this.m.am(0,n,e,t,0,this.m.t);e.data[r]>=e.DV;)e.data[r]-=e.DV,e.data[++r]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)}function V(e,t){e.squareTo(t),this.reduce(t)}function K(e,t,r){e.multiplyTo(t,r),this.reduce(r)}function H(){return 0==(this.t>0?1&this.data[0]:this.s)}function j(e,t){if(e>4294967295||e<1)return n.ONE;var r=a(),i=a(),o=t.convert(this),u=b(e)-1;for(o.copyTo(r);--u>=0;)if(t.sqrTo(r,i),(e&1<0)t.mulTo(i,o,r);else{var s=r;r=i,i=s}return t.revert(r)}function q(e,t){var r;return r=e<256||t.isEven()?new R(t):new U(t),this.exp(e,r)}function G(){var e=a();return this.copyTo(e),e}function z(){if(this.s<0){if(1==this.t)return this.data[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this.data[0];if(0==this.t)return 0}return(this.data[1]&(1<<32-this.DB)-1)<>24}function W(){return 0==this.t?this.s:this.data[0]<<16>>16}function J(e){return Math.floor(Math.LN2*this.DB/Math.log(e))}function Q(){return this.s<0?-1:this.t<=0||1==this.t&&this.data[0]<=0?0:1}function X(e){if(null==e&&(e=10),0==this.signum()||e<2||e>36)return"0";var t=this.chunkSize(e),r=Math.pow(e,t),n=d(r),i=a(),o=a(),u="";for(this.divRemTo(n,i,o);i.signum()>0;)u=(r+o.intValue()).toString(e).substr(1)+u,i.divRemTo(n,i,o);return o.intValue().toString(e)+u}function Z(e,t){this.fromInt(0),null==t&&(t=10);for(var r=this.chunkSize(t),a=Math.pow(t,r),i=!1,o=0,u=0,s=0;s=r&&(this.dMultiply(a),this.dAddOffset(u,0),o=0,u=0))}o>0&&(this.dMultiply(Math.pow(t,o)),this.dAddOffset(u,0)),i&&n.ZERO.subTo(this,this)}function ee(e,t,r){if("number"==typeof t)if(e<2)this.fromInt(1);else for(this.fromNumber(e,r),this.testBit(e-1)||this.bitwiseTo(n.ONE.shiftLeft(e-1),se,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(t);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(n.ONE.shiftLeft(e-1),this);else{var a=new Array,i=7&e;a.length=1+(e>>3),t.nextBytes(a),i>0?a[0]&=(1<0)for(n>n)!=(this.s&this.DM)>>n&&(t[a++]=r|this.s<=0;)n<8?(r=(this.data[e]&(1<>(n+=this.DB-8)):(r=this.data[e]>>(n-=8)&255,n<=0&&(n+=this.DB,--e)),0!=(128&r)&&(r|=-256),0==a&&(128&this.s)!=(128&r)&&++a,(a>0||r!=this.s)&&(t[a++]=r);return t}function re(e){return 0==this.compareTo(e)}function ne(e){return this.compareTo(e)<0?this:e}function ae(e){return this.compareTo(e)>0?this:e}function ie(e,t,r){var n,a,i=Math.min(e.t,this.t);for(n=0;n>=16,t+=16),0==(255&e)&&(e>>=8,t+=8),0==(15&e)&&(e>>=4,t+=4),0==(3&e)&&(e>>=2,t+=2),0==(1&e)&&++t,t}function me(){for(var e=0;e=this.t?0!=this.s:0!=(this.data[t]&1<>=this.DB;if(e.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n+=e.s}t.s=n<0?-1:0,n>0?t.data[r++]=n:n<-1&&(t.data[r++]=this.DV+n),t.t=r,t.clamp()}function Be(e){var t=a();return this.addTo(e,t),t}function ke(e){var t=a();return this.subTo(e,t),t}function Ne(e){var t=a();return this.multiplyTo(e,t),t}function Re(e){var t=a();return this.divRemTo(e,t,null),t}function $e(e){var t=a();return this.divRemTo(e,null,t),t}function _e(e){var t=a(),r=a();return this.divRemTo(e,t,r),new Array(t,r)}function Le(e){this.data[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()}function xe(e,t){if(0!=e){for(;this.t<=t;)this.data[this.t++]=0;for(this.data[t]+=e;this.data[t]>=this.DV;)this.data[t]-=this.DV,++t>=this.t&&(this.data[this.t++]=0),++this.data[t]}}function Pe(){}function De(e){return e}function Ue(e,t,r){e.multiplyTo(t,r)}function Oe(e,t){e.squareTo(t)}function Me(e){return this.exp(e,new Pe)}function Fe(e,t,r){var n=Math.min(this.t+e.t,t);for(r.s=0,r.t=n;n>0;)r.data[--n]=0;var a;for(a=r.t-this.t;n=0;)r.data[n]=0;for(n=Math.max(t-this.t,0);n2*this.m.t)return e.mod(this.m);if(e.compareTo(this.m)<0)return e;var t=a();return e.copyTo(t),this.reduce(t),t}function je(e){return e}function qe(e){for(e.drShiftTo(this.m.t-1,this.r2),e.t>this.m.t+1&&(e.t=this.m.t+1,e.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);e.compareTo(this.r2)<0;)e.dAddOffset(1,this.m.t+1);for(e.subTo(this.r2,e);e.compareTo(this.m)>=0;)e.subTo(this.m,e)}function Ge(e,t){e.squareTo(t),this.reduce(t)}function ze(e,t,r){e.multiplyTo(t,r),this.reduce(r)}function Ye(e,t){var r,n,i=e.bitLength(),o=d(1);if(i<=0)return o;r=i<18?1:i<48?3:i<144?4:i<768?5:6,n=i<8?new R(t):t.isEven()?new Ke(t):new U(t);var u=new Array,s=3,c=r-1,f=(1<1){var l=a();for(n.sqrTo(u[1],l);s<=f;)u[s]=a(),n.mulTo(l,u[s-2],u[s]),s+=2}var h,p,g=e.t-1,v=!0,y=a();for(i=b(e.data[g])-1;g>=0;){for(i>=c?h=e.data[g]>>i-c&f:(h=(e.data[g]&(1<0&&(h|=e.data[g-1]>>this.DB+i-c)),s=r;0==(1&h);)h>>=1,--s;if((i-=s)<0&&(i+=this.DB,--g),v)u[h].copyTo(o),v=!1;else{for(;s>1;)n.sqrTo(o,y),n.sqrTo(y,o),s-=2;s>0?n.sqrTo(o,y):(p=o,o=y,y=p),n.mulTo(y,u[h],o)}for(;g>=0&&0==(e.data[g]&1<0&&(t.rShiftTo(i,t),r.rShiftTo(i,r));t.signum()>0;)(a=t.getLowestSetBit())>0&&t.rShiftTo(a,t),(a=r.getLowestSetBit())>0&&r.rShiftTo(a,r),t.compareTo(r)>=0?(t.subTo(r,t),t.rShiftTo(1,t)):(r.subTo(t,r),r.rShiftTo(1,r));return i>0&&r.lShiftTo(i,r),r}function Je(e){if(e<=0)return 0;var t=this.DV%e,r=this.s<0?e-1:0;if(this.t>0)if(0==t)r=this.data[0]%e;else for(var n=this.t-1;n>=0;--n)r=(t*r+this.data[n])%e;return r}function Qe(e){var t=e.isEven();if(this.isEven()&&t||0==e.signum())return n.ZERO;for(var r=e.clone(),a=this.clone(),i=d(1),o=d(0),u=d(0),s=d(1);0!=r.signum();){for(;r.isEven();)r.rShiftTo(1,r),t?(i.isEven()&&o.isEven()||(i.addTo(this,i),o.subTo(e,o)),i.rShiftTo(1,i)):o.isEven()||o.subTo(e,o),o.rShiftTo(1,o);for(;a.isEven();)a.rShiftTo(1,a),t?(u.isEven()&&s.isEven()||(u.addTo(this,u),s.subTo(e,s)),u.rShiftTo(1,u)):s.isEven()||s.subTo(e,s),s.rShiftTo(1,s);r.compareTo(a)>=0?(r.subTo(a,r),t&&i.subTo(u,i),o.subTo(s,o)):(a.subTo(r,a),t&&u.subTo(i,u),s.subTo(o,s))}return 0!=a.compareTo(n.ONE)?n.ZERO:s.compareTo(e)>=0?s.subtract(e):s.signum()<0?(s.addTo(e,s),s.signum()<0?s.add(e):s):s}function Xe(e){var t,r=this.abs();if(1==r.t&&r.data[0]<=ut[ut.length-1]){for(t=0;t=0);var s=a.modPow(i,this);if(0!=s.compareTo(n.ONE)&&0!=s.compareTo(t)){for(var c=1;c++a-11){var i=new Error("Message is too long for PKCS#1 v1.5 padding.");throw i.length=e.length,i.max=a-11,i}n.putByte(0),n.putByte(r);var o,u=a-3-e.length;if(0===r||1===r){o=0===r?0:255;for(var s=0;s0;){for(var c=0,f=d.random.getBytes(u),s=0;s1;){if(255!==i.getByte()){--i.read;break}++s}else if(2===u)for(s=0;i.length()>1;){if(0===i.getByte()){--i.read;break}++s}if(0!==i.getByte()||s!==a-3-i.length())throw new Error("Encryption block is invalid.");return i.getBytes()}function i(e,t,r){function n(){a(e.pBits,function(t,n){return t?r(t):(e.p=n,null!==e.q?i(t,e.q):void a(e.qBits,i))})}function a(e,t){d.prime.generateProbablePrime(e,o,t)}function i(t,o){if(t)return r(t);if(e.q=o,e.p.compareTo(e.q)<0){var u=e.p;e.p=e.q,e.q=u}if(0!==e.p.subtract(h.ONE).gcd(e.e).compareTo(h.ONE))return e.p=null,void n();if(0!==e.q.subtract(h.ONE).gcd(e.e).compareTo(h.ONE))return e.q=null,void a(e.qBits,i);if(e.p1=e.p.subtract(h.ONE),e.q1=e.q.subtract(h.ONE),e.phi=e.p1.multiply(e.q1),0!==e.phi.gcd(e.e).compareTo(h.ONE))return e.p=e.q=null,void n();if(e.n=e.p.multiply(e.q),e.n.bitLength()!==e.bits)return e.q=null,void a(e.qBits,i);var s=e.e.modInverse(e.phi);e.keys={privateKey:y.rsa.setPrivateKey(e.n,e.e,s,e.p,e.q,s.mod(e.p1),s.mod(e.q1),e.q.modInverse(e.p)),publicKey:y.rsa.setPublicKey(e.n,e.e)},r(null,e.keys)}"function"==typeof t&&(r=t,t={}),t=t||{};var o={algorithm:{name:t.algorithm||"PRIMEINC",options:{workers:t.workers||2,workLoad:t.workLoad||100,workerScript:t.workerScript}}};"prng"in t&&(o.prng=t.prng),n()}function o(e){var t=e.toString(16);t[0]>="8"&&(t="00"+t);var r=d.util.hexToBytes(t);return r.length>1&&(0===r.charCodeAt(0)&&0==(128&r.charCodeAt(1))||255===r.charCodeAt(0)&&128==(128&r.charCodeAt(1)))?r.substr(1):r}function u(e){return e<=100?27:e<=150?18:e<=200?15:e<=250?12:e<=300?9:e<=350?8:e<=400?7:e<=500?6:e<=600?5:e<=800?4:e<=1250?3:2}function s(e){return d.util.isNodejs&&"function"==typeof p[e]}function c(e){return void 0!==v.globalScope&&"object"==typeof v.globalScope.crypto&&"object"==typeof v.globalScope.crypto.subtle&&"function"==typeof v.globalScope.crypto.subtle[e]}function f(e){return void 0!==v.globalScope&&"object"==typeof v.globalScope.msCrypto&&"object"==typeof v.globalScope.msCrypto.subtle&&"function"==typeof v.globalScope.msCrypto.subtle[e]}function l(e){for(var t=d.util.hexToBytes(e.toString(16)),r=new Uint8Array(t.length),n=0;n=0||!n.gcd(t.n).equals(h.ONE));e=e.multiply(n.modPow(t.e,t.n)).mod(t.n);for(var a=e.mod(t.p).modPow(t.dP,t.p),i=e.mod(t.q).modPow(t.dQ,t.q);a.compareTo(i)<0;)a=a.add(t.p);var o=a.subtract(i).multiply(t.qInv).mod(t.p).multiply(t.q).add(i);return o=o.multiply(n.modInverse(t.n)).mod(t.n)};y.rsa.encrypt=function(e,t,r){var a,i=r,o=Math.ceil(t.n.bitLength()/8);!1!==r&&!0!==r?(i=2===r,a=n(e,t,r)):(a=d.util.createBuffer(),a.putBytes(e));for(var u=new h(a.toHex(),16),s=w(u,t,i),c=s.toString(16),f=d.util.createBuffer(),l=o-Math.ceil(c.length/2);l>0;)f.putByte(0),--l;return f.putBytes(d.util.hexToBytes(c)),f.getBytes()},y.rsa.decrypt=function(e,t,r,n){var i=Math.ceil(t.n.bitLength()/8);if(e.length!==i){var o=new Error("Encrypted message length is invalid.");throw o.length=e.length,o.expected=i,o}var u=new h(d.util.createBuffer(e).toHex(),16);if(u.compareTo(t.n)>=0)throw new Error("Encrypted message is invalid.");for(var s=w(u,t,r),c=s.toString(16),f=d.util.createBuffer(),l=i-Math.ceil(c.length/2);l>0;)f.putByte(0),--l;return f.putBytes(d.util.hexToBytes(c)),!1!==n?a(f.getBytes(),t,r):f.getBytes()},y.rsa.createKeyPairGenerationState=function(e,t,r){"string"==typeof e&&(e=parseInt(e,10)),e=e||2048,r=r||{};var n,a=r.prng||d.random,i={nextBytes:function(e){for(var t=a.getBytesSync(e.length),r=0;r>1,pBits:e-(e>>1),pqState:0,num:null,keys:null},n.e.fromInt(n.eInt),n},y.rsa.stepKeyPairGenerationState=function(e,t){"algorithm"in e||(e.algorithm="PRIMEINC");var r=new h(null);r.fromInt(30);for(var n,a=0,i=function(e,t){return e|t},o=+new Date,s=0;null===e.keys&&(t<=0||sc?e.pqState=0:e.num.isProbablePrime(u(e.num.bitLength()))?++e.pqState:e.num.dAddOffset(m[a++%8],0):2===e.pqState?e.pqState=0===e.num.subtract(h.ONE).gcd(e.e).compareTo(h.ONE)?3:0:3===e.pqState&&(e.pqState=0,null===e.p?e.p=e.num:e.q=e.num,null!==e.p&&null!==e.q&&++e.state,e.num=null)}else if(1===e.state)e.p.compareTo(e.q)<0&&(e.num=e.p,e.p=e.q,e.q=e.num),++e.state;else if(2===e.state)e.p1=e.p.subtract(h.ONE),e.q1=e.q.subtract(h.ONE),e.phi=e.p1.multiply(e.q1),++e.state;else if(3===e.state)0===e.phi.gcd(e.e).compareTo(h.ONE)?++e.state:(e.p=null,e.q=null,e.state=0);else if(4===e.state)e.n=e.p.multiply(e.q),e.n.bitLength()===e.bits?++e.state:(e.q=null,e.state=0);else if(5===e.state){var l=e.e.modInverse(e.phi);e.keys={privateKey:y.rsa.setPrivateKey(e.n,e.e,l,e.p,e.q,l.mod(e.p1),l.mod(e.q1),e.q.modInverse(e.p)),publicKey:y.rsa.setPublicKey(e.n,e.e)}}n=+new Date,s+=n-o,o=n}return null!==e.keys},y.rsa.generateKeyPair=function(e,t,r,n){if(1===arguments.length?"object"==typeof e?(r=e,e=void 0):"function"==typeof e&&(n=e,e=void 0):2===arguments.length?"number"==typeof e?"function"==typeof t?(n=t,t=void 0):"number"!=typeof t&&(r=t,t=void 0):(r=e,n=t,e=void 0,t=void 0):3===arguments.length&&("number"==typeof t?"function"==typeof r&&(n=r,r=void 0):(n=r,r=t,t=void 0)),r=r||{},void 0===e&&(e=r.bits||2048),void 0===t&&(t=r.e||65537),!d.options.usePureJavaScript&&!r.prng&&e>=256&&e<=16384&&(65537===t||3===t))if(n){if(s("generateKeyPair"))return p.generateKeyPair("rsa",{modulusLength:e,publicExponent:t,publicKeyEncoding:{type:"spki",format:"pem"},privateKeyEncoding:{type:"pkcs8",format:"pem"}},function(e,t,r){if(e)return n(e);n(null,{privateKey:y.privateKeyFromPem(r),publicKey:y.publicKeyFromPem(t)})});if(c("generateKey")&&c("exportKey"))return v.globalScope.crypto.subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:e,publicExponent:l(t),hash:{name:"SHA-256"}},!0,["sign","verify"]).then(function(e){return v.globalScope.crypto.subtle.exportKey("pkcs8",e.privateKey)}).then(void 0,function(e){n(e)}).then(function(e){if(e){var t=y.privateKeyFromAsn1(g.fromDer(d.util.createBuffer(e)));n(null,{privateKey:t,publicKey:y.setRsaPublicKey(t.n,t.e)})}});if(f("generateKey")&&f("exportKey")){var a=v.globalScope.msCrypto.subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:e,publicExponent:l(t),hash:{name:"SHA-256"}},!0,["sign","verify"]);return a.oncomplete=function(e){var t=e.target.result,r=v.globalScope.msCrypto.subtle.exportKey("pkcs8",t.privateKey);r.oncomplete=function(e){var t=e.target.result,r=y.privateKeyFromAsn1(g.fromDer(d.util.createBuffer(t)));n(null,{privateKey:r,publicKey:y.setRsaPublicKey(r.n,r.e)})},r.onerror=function(e){n(e)}},void(a.onerror=function(e){n(e)})}}else if(s("generateKeyPairSync")){var o=p.generateKeyPairSync("rsa",{modulusLength:e,publicExponent:t,publicKeyEncoding:{type:"spki",format:"pem"},privateKeyEncoding:{type:"pkcs8",format:"pem"}});return{privateKey:y.privateKeyFromPem(o.privateKey),publicKey:y.publicKeyFromPem(o.publicKey)}}var u=y.rsa.createKeyPairGenerationState(e,t,r);if(!n)return y.rsa.stepKeyPairGenerationState(u,0),u.keys;i(u,r,n)},y.setRsaPublicKey=y.rsa.setPublicKey=function(e,t){var r={n:e,e:t};return r.encrypt=function(e,t,a){if("string"==typeof t?t=t.toUpperCase():void 0===t&&(t="RSAES-PKCS1-V1_5"),"RSAES-PKCS1-V1_5"===t)t={encode:function(e,t,r){return n(e,t,2).getBytes()}};else if("RSA-OAEP"===t||"RSAES-OAEP"===t)t={encode:function(e,t){return d.pkcs1.encode_rsa_oaep(t,e,a)}};else if(-1!==["RAW","NONE","NULL",null].indexOf(t))t={encode:function(e){return e}};else if("string"==typeof t)throw new Error('Unsupported encryption scheme: "'+t+'".');var i=t.encode(e,r,!0);return y.rsa.encrypt(i,r,!0)},r.verify=function(e,t,n){"string"==typeof n?n=n.toUpperCase():void 0===n&&(n="RSASSA-PKCS1-V1_5"),"RSASSA-PKCS1-V1_5"===n?n={verify:function(e,t){return t=a(t,r,!0),e===g.fromDer(t).value[1].value}}:"NONE"!==n&&"NULL"!==n&&null!==n||(n={verify:function(e,t){return t=a(t,r,!0),e===t}});var i=y.rsa.decrypt(t,r,!0,!1);return n.verify(e,i,r.n.bitLength())},r},y.setRsaPrivateKey=y.rsa.setPrivateKey=function(e,t,r,n,i,o,u,s){var c={n:e,e:t,d:r,p:n,q:i,dP:o,dQ:u,qInv:s};return c.decrypt=function(e,t,r){"string"==typeof t?t=t.toUpperCase():void 0===t&&(t="RSAES-PKCS1-V1_5");var n=y.rsa.decrypt(e,c,!1,!1);if("RSAES-PKCS1-V1_5"===t)t={decode:a};else if("RSA-OAEP"===t||"RSAES-OAEP"===t)t={decode:function(e,t){return d.pkcs1.decode_rsa_oaep(t,e,r)}};else{if(-1===["RAW","NONE","NULL",null].indexOf(t))throw new Error('Unsupported encryption scheme: "'+t+'".');t={decode:function(e){return e}}}return t.decode(n,c,!1)},c.sign=function(e,t){var r=!1;"string"==typeof t&&(t=t.toUpperCase()),void 0===t||"RSASSA-PKCS1-V1_5"===t?(t={encode:T},r=1):"NONE"!==t&&"NULL"!==t&&null!==t||(t={encode:function(){return e}},r=1);var n=t.encode(e,c.n.bitLength());return y.rsa.encrypt(n,c,r)},c},y.wrapRsaPrivateKey=function(e){return g.create(g.Class.UNIVERSAL,g.Type.SEQUENCE,!0,[g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,g.integerToDer(0).getBytes()),g.create(g.Class.UNIVERSAL,g.Type.SEQUENCE,!0,[g.create(g.Class.UNIVERSAL,g.Type.OID,!1,g.oidToDer(y.oids.rsaEncryption).getBytes()),g.create(g.Class.UNIVERSAL,g.Type.NULL,!1,"")]),g.create(g.Class.UNIVERSAL,g.Type.OCTETSTRING,!1,g.toDer(e).getBytes())])},y.privateKeyFromAsn1=function(e){var t={},r=[];if(g.validate(e,b,t,r)&&(e=g.fromDer(d.util.createBuffer(t.privateKey))),t={},r=[],!g.validate(e,C,t,r)){var n=new Error("Cannot read private key. ASN.1 object does not contain an RSAPrivateKey.");throw n.errors=r,n}var a,i,o,u,s,c,f,l;return a=d.util.createBuffer(t.privateKeyModulus).toHex(),i=d.util.createBuffer(t.privateKeyPublicExponent).toHex(),o=d.util.createBuffer(t.privateKeyPrivateExponent).toHex(),u=d.util.createBuffer(t.privateKeyPrime1).toHex(),s=d.util.createBuffer(t.privateKeyPrime2).toHex(),c=d.util.createBuffer(t.privateKeyExponent1).toHex(),f=d.util.createBuffer(t.privateKeyExponent2).toHex(),l=d.util.createBuffer(t.privateKeyCoefficient).toHex(),y.setRsaPrivateKey(new h(a,16),new h(i,16),new h(o,16),new h(u,16),new h(s,16),new h(c,16),new h(f,16),new h(l,16))},y.privateKeyToAsn1=y.privateKeyToRSAPrivateKey=function(e){return g.create(g.Class.UNIVERSAL,g.Type.SEQUENCE,!0,[g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,g.integerToDer(0).getBytes()),g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,o(e.n)),g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,o(e.e)),g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,o(e.d)),g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,o(e.p)),g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,o(e.q)),g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,o(e.dP)),g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,o(e.dQ)),g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,o(e.qInv))])},y.publicKeyFromAsn1=function(e){var t={},r=[];if(g.validate(e,S,t,r)){var n=g.derToOid(t.publicKeyOid);if(n!==y.oids.rsaEncryption){var a=new Error("Cannot read public key. Unknown OID.");throw a.oid=n,a}e=t.rsaPublicKey}if(r=[],!g.validate(e,E,t,r)){var a=new Error("Cannot read public key. ASN.1 object does not contain an RSAPublicKey.");throw a.errors=r,a}var i=d.util.createBuffer(t.publicKeyModulus).toHex(),o=d.util.createBuffer(t.publicKeyExponent).toHex();return y.setRsaPublicKey(new h(i,16),new h(o,16))},y.publicKeyToAsn1=y.publicKeyToSubjectPublicKeyInfo=function(e){return g.create(g.Class.UNIVERSAL,g.Type.SEQUENCE,!0,[g.create(g.Class.UNIVERSAL,g.Type.SEQUENCE,!0,[g.create(g.Class.UNIVERSAL,g.Type.OID,!1,g.oidToDer(y.oids.rsaEncryption).getBytes()),g.create(g.Class.UNIVERSAL,g.Type.NULL,!1,"")]),g.create(g.Class.UNIVERSAL,g.Type.BITSTRING,!1,[y.publicKeyToRSAPublicKey(e)])])},y.publicKeyToRSAPublicKey=function(e){return g.create(g.Class.UNIVERSAL,g.Type.SEQUENCE,!0,[g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,o(e.n)),g.create(g.Class.UNIVERSAL,g.Type.INTEGER,!1,o(e.e))])}},function(e,t){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,r){var n=r(0);r(1),e.exports=n.cipher=n.cipher||{},n.cipher.algorithms=n.cipher.algorithms||{},n.cipher.createCipher=function(e,t){var r=e;if("string"==typeof r&&(r=n.cipher.getAlgorithm(r))&&(r=r()),!r)throw new Error("Unsupported algorithm: "+e);return new n.cipher.BlockCipher({algorithm:r,key:t,decrypt:!1})},n.cipher.createDecipher=function(e,t){var r=e;if("string"==typeof r&&(r=n.cipher.getAlgorithm(r))&&(r=r()),!r)throw new Error("Unsupported algorithm: "+e);return new n.cipher.BlockCipher({algorithm:r,key:t,decrypt:!0})},n.cipher.registerAlgorithm=function(e,t){e=e.toUpperCase(),n.cipher.algorithms[e]=t},n.cipher.getAlgorithm=function(e){return e=e.toUpperCase(),e in n.cipher.algorithms?n.cipher.algorithms[e]:null};var a=n.cipher.BlockCipher=function(e){this.algorithm=e.algorithm,this.mode=this.algorithm.mode,this.blockSize=this.mode.blockSize,this._finish=!1,this._input=null,this.output=null,this._op=e.decrypt?this.mode.decrypt:this.mode.encrypt,this._decrypt=e.decrypt,this.algorithm.initialize(e)};a.prototype.start=function(e){e=e||{};var t={};for(var r in e)t[r]=e[r];t.decrypt=this._decrypt,this._finish=!1,this._input=n.util.createBuffer(),this.output=e.output||n.util.createBuffer(),this.mode.start(t)},a.prototype.update=function(e){for(e&&this._input.putBuffer(e);!this._op.call(this.mode,this._input,this.output,this._finish)&&!this._finish;);this._input.compact()},a.prototype.finish=function(e){!e||"ECB"!==this.mode.name&&"CBC"!==this.mode.name||(this.mode.pad=function(t){return e(this.blockSize,t,!1)},this.mode.unpad=function(t){return e(this.blockSize,t,!0)});var t={};return t.decrypt=this._decrypt,t.overflow=this._input.length()%this.blockSize,!(!this._decrypt&&this.mode.pad&&!this.mode.pad(this._input,t))&&(this._finish=!0,this.update(),!(this._decrypt&&this.mode.unpad&&!this.mode.unpad(this.output,t))&&!(this.mode.afterFinish&&!this.mode.afterFinish(this.output,t)))}},function(e,t,r){function n(){u=String.fromCharCode(128),u+=i.util.fillString(String.fromCharCode(0),64),s=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,1,6,11,0,5,10,15,4,9,14,3,8,13,2,7,12,5,8,11,14,1,4,7,10,13,0,3,6,9,12,15,2,0,7,14,5,12,3,10,1,8,15,6,13,4,11,2,9],c=[7,12,17,22,7,12,17,22,7,12,17,22,7,12,17,22,5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20,4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23,6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21],f=new Array(64);for(var e=0;e<64;++e)f[e]=Math.floor(4294967296*Math.abs(Math.sin(e+1)));l=!0}function a(e,t,r){for(var n,a,i,o,u,l,d,h,p=r.length();p>=64;){for(a=e.h0,i=e.h1,o=e.h2,u=e.h3,h=0;h<16;++h)t[h]=r.getInt32Le(),l=u^i&(o^u),n=a+l+f[h]+t[h],d=c[h],a=u,u=o,o=i,i+=n<>>32-d;for(;h<32;++h)l=o^u&(i^o),n=a+l+f[h]+t[s[h]],d=c[h],a=u,u=o,o=i,i+=n<>>32-d;for(;h<48;++h)l=i^o^u,n=a+l+f[h]+t[s[h]],d=c[h],a=u,u=o,o=i,i+=n<>>32-d;for(;h<64;++h)l=o^(i|~u),n=a+l+f[h]+t[s[h]],d=c[h],a=u,u=o,o=i,i+=n<>>32-d;e.h0=e.h0+a|0,e.h1=e.h1+i|0,e.h2=e.h2+o|0,e.h3=e.h3+u|0,p-=64}}var i=r(0);r(4),r(1);var o=e.exports=i.md5=i.md5||{};i.md.md5=i.md.algorithms.md5=o,o.create=function(){l||n();var e=null,t=i.util.createBuffer(),r=new Array(16),o={algorithm:"md5",blockLength:64,digestLength:16,messageLength:0,fullMessageLength:null,messageLengthSize:8};return o.start=function(){o.messageLength=0,o.fullMessageLength=o.messageLength64=[];for(var r=o.messageLengthSize/4,n=0;n>>0,s>>>0];for(var c=o.fullMessageLength.length-1;c>=0;--c)o.fullMessageLength[c]+=s[1],s[1]=s[0]+(o.fullMessageLength[c]/4294967296>>>0),o.fullMessageLength[c]=o.fullMessageLength[c]>>>0,s[0]=s[1]/4294967296>>>0;return t.putBytes(n),a(e,r,t),(t.read>2048||0===t.length())&&t.compact(),o},o.digest=function(){var n=i.util.createBuffer();n.putBytes(t.bytes());var s=o.fullMessageLength[o.fullMessageLength.length-1]+o.messageLengthSize,c=s&o.blockLength-1;n.putBytes(u.substr(0,o.blockLength-c));for(var f,l=0,d=o.fullMessageLength.length-1;d>=0;--d)f=8*o.fullMessageLength[d]+l,l=f/4294967296>>>0,n.putInt32Le(f>>>0);var h={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3};a(h,r,n);var p=i.util.createBuffer();return p.putInt32Le(h.h0),p.putInt32Le(h.h1),p.putInt32Le(h.h2),p.putInt32Le(h.h3),p},o};var u=null,s=null,c=null,f=null,l=!1},function(e,t,r){(function(t){var n=r(0);r(8),r(4),r(1);var a,i=n.pkcs5=n.pkcs5||{};n.util.isNodejs&&!n.options.usePureJavaScript&&(a=r(21)),e.exports=n.pbkdf2=i.pbkdf2=function(e,r,i,o,u,s){function c(){if(C>h)return s(null,b);g.start(null,null),g.update(r),g.update(n.util.int32ToBytes(C)),v=m=g.digest().getBytes(),E=2,f()}function f(){if(E<=i)return g.start(null,null),g.update(m),y=g.digest().getBytes(),v=n.util.xorBytes(v,y,l),m=y,++E,n.util.setImmediate(f);b+=C4||!u||"sha1"===u))return"string"!=typeof u&&(u="sha1"),e=new t(e,"binary"),r=new t(r,"binary"),s?4===a.pbkdf2Sync.length?a.pbkdf2(e,r,i,o,function(e,t){if(e)return s(e);s(null,t.toString("binary"))}):a.pbkdf2(e,r,i,o,u,function(e,t){if(e)return s(e);s(null,t.toString("binary"))}):4===a.pbkdf2Sync.length?a.pbkdf2Sync(e,r,i,o).toString("binary"):a.pbkdf2Sync(e,r,i,o,u).toString("binary");if(void 0!==u&&null!==u||(u="sha1"),"string"==typeof u){if(!(u in n.md.algorithms))throw new Error("Unknown hash algorithm: "+u);u=n.md[u].create()}var l=u.digestLength;if(o>4294967295*l){var d=new Error("Derived key is too long.");if(s)return s(d);throw d}var h=Math.ceil(o/l),p=o-(h-1)*l,g=n.hmac.create();g.start(u,e);var v,y,m,b="";if(!s){for(var C=1;C<=h;++C){g.start(null,null),g.update(r),g.update(n.util.int32ToBytes(C)),v=m=g.digest().getBytes();for(var E=2;E<=i;++E)g.start(null,null),g.update(m),y=g.digest().getBytes(),v=n.util.xorBytes(v,y,l),m=y;b+=C>8*l-f&255;return(C=String.fromCharCode(C.charCodeAt(0)&~E)+C.substr(1))+g+String.fromCharCode(188)},s.verify=function(e,i,u){var s,c=u-1,f=Math.ceil(c/8);if(i=i.substr(-f),f>8*f-c&255;if(0!=(d.charCodeAt(0)&p))throw new Error("Bits beyond keysize not zero as expected.");var g=r.generate(h,l),v="";for(s=0;s128)throw new Error('Invalid "nsComment" content.');e.value=l.create(l.Class.UNIVERSAL,l.Type.IA5STRING,!1,e.comment)}else if("subjectKeyIdentifier"===e.name&&t.cert){var v=t.cert.generateSubjectKeyIdentifier();e.subjectKeyIdentifier=v.toHex(),e.value=l.create(l.Class.UNIVERSAL,l.Type.OCTETSTRING,!1,v.getBytes())}else if("authorityKeyIdentifier"===e.name&&t.cert){e.value=l.create(l.Class.UNIVERSAL,l.Type.SEQUENCE,!0,[]);var s=e.value.value;if(e.keyIdentifier){var y=!0===e.keyIdentifier?t.cert.generateSubjectKeyIdentifier().getBytes():e.keyIdentifier;s.push(l.create(l.Class.CONTEXT_SPECIFIC,0,!1,y))}if(e.authorityCertIssuer){var m=[l.create(l.Class.CONTEXT_SPECIFIC,4,!0,[a(!0===e.authorityCertIssuer?t.cert.issuer:e.authorityCertIssuer)])];s.push(l.create(l.Class.CONTEXT_SPECIFIC,1,!0,m))}if(e.serialNumber){var b=f.util.hexToBytes(!0===e.serialNumber?t.cert.serialNumber:e.serialNumber);s.push(l.create(l.Class.CONTEXT_SPECIFIC,2,!1,b))}}else if("cRLDistributionPoints"===e.name){e.value=l.create(l.Class.UNIVERSAL,l.Type.SEQUENCE,!0,[]);for(var p,s=e.value.value,C=l.create(l.Class.UNIVERSAL,l.Type.SEQUENCE,!0,[]),E=l.create(l.Class.CONTEXT_SPECIFIC,0,!0,[]),g=0;g=E&&e2)throw new Error("Cannot read notBefore/notAfter validity times; more than two times were provided in the certificate.");if(p.length<2)throw new Error("Cannot read notBefore/notAfter validity times; they were not provided as either UTCTime or GeneralizedTime.");if(s.validity.notBefore=p[0],s.validity.notAfter=p[1],s.tbsCertificate=r.tbsCertificate,t){if(s.md=null,s.signatureOid in h){var u=h[s.signatureOid];switch(u){case"sha1WithRSAEncryption":s.md=f.md.sha1.create();break;case"md5WithRSAEncryption":s.md=f.md.md5.create();break;case"sha256WithRSAEncryption":s.md=f.md.sha256.create();break;case"sha384WithRSAEncryption":s.md=f.md.sha384.create();break;case"sha512WithRSAEncryption":s.md=f.md.sha512.create();break;case"RSASSA-PSS":s.md=f.md.sha256.create()}}if(null===s.md){var o=new Error("Could not compute certificate digest. Unknown signature OID.");throw o.signatureOid=s.signatureOid,o}var g=l.toDer(s.tbsCertificate);s.md.update(g.getBytes())}var y=f.md.sha1.create();s.issuer.getField=function(e){return n(s.issuer,e)},s.issuer.addField=function(e){i([e]),s.issuer.attributes.push(e)},s.issuer.attributes=d.RDNAttributesAsArray(r.certIssuer,y),r.certIssuerUniqueId&&(s.issuer.uniqueId=r.certIssuerUniqueId),s.issuer.hash=y.digest().toHex();var m=f.md.sha1.create();return s.subject.getField=function(e){return n(s.subject,e)},s.subject.addField=function(e){i([e]),s.subject.attributes.push(e)},s.subject.attributes=d.RDNAttributesAsArray(r.certSubject,m),r.certSubjectUniqueId&&(s.subject.uniqueId=r.certSubjectUniqueId),s.subject.hash=m.digest().toHex(),r.certExtensions?s.extensions=d.certificateExtensionsFromAsn1(r.certExtensions):s.extensions=[],s.publicKey=d.publicKeyFromAsn1(r.subjectPublicKeyInfo),s},d.certificateExtensionsFromAsn1=function(e){for(var t=[],r=0;r1&&(n=r.value.charCodeAt(1),a=r.value.length>2?r.value.charCodeAt(2):0),t.digitalSignature=128==(128&n),t.nonRepudiation=64==(64&n),t.keyEncipherment=32==(32&n),t.dataEncipherment=16==(16&n),t.keyAgreement=8==(8&n),t.keyCertSign=4==(4&n),t.cRLSign=2==(2&n),t.encipherOnly=1==(1&n),t.decipherOnly=128==(128&a)}else if("basicConstraints"===t.name){var r=l.fromDer(t.value);r.value.length>0&&r.value[0].type===l.Type.BOOLEAN?t.cA=0!==r.value[0].value.charCodeAt(0):t.cA=!1;var i=null;r.value.length>0&&r.value[0].type===l.Type.INTEGER?i=r.value[0].value:r.value.length>1&&(i=r.value[1].value),null!==i&&(t.pathLenConstraint=l.derToInteger(i))}else if("extKeyUsage"===t.name)for(var r=l.fromDer(t.value),o=0;o1&&(n=r.value.charCodeAt(1)),t.client=128==(128&n),t.server=64==(64&n),t.email=32==(32&n),t.objsign=16==(16&n),t.reserved=8==(8&n),t.sslCA=4==(4&n),t.emailCA=2==(2&n),t.objCA=1==(1&n)}else if("subjectAltName"===t.name||"issuerAltName"===t.name){t.altNames=[];for(var s,r=l.fromDer(t.value),c=0;c0&&n.value.push(d.certificateExtensionsToAsn1(e.extensions)),n},d.getCertificationRequestInfo=function(e){return l.create(l.Class.UNIVERSAL,l.Type.SEQUENCE,!0,[l.create(l.Class.UNIVERSAL,l.Type.INTEGER,!1,l.integerToDer(e.version).getBytes()),a(e.subject),d.publicKeyToAsn1(e.publicKey),s(e)])},d.distinguishedNameToAsn1=function(e){return a(e)},d.certificateToAsn1=function(e){var t=e.tbsCertificate||d.getTBSCertificate(e);return l.create(l.Class.UNIVERSAL,l.Type.SEQUENCE,!0,[t,l.create(l.Class.UNIVERSAL,l.Type.SEQUENCE,!0,[l.create(l.Class.UNIVERSAL,l.Type.OID,!1,l.oidToDer(e.signatureOid).getBytes()),u(e.signatureOid,e.signatureParameters)]),l.create(l.Class.UNIVERSAL,l.Type.BITSTRING,!1,String.fromCharCode(0)+e.signature)])},d.certificateExtensionsToAsn1=function(e){var t=l.create(l.Class.CONTEXT_SPECIFIC,3,!0,[]),r=l.create(l.Class.UNIVERSAL,l.Type.SEQUENCE,!0,[]);t.value.push(r);for(var n=0;ns.validity.notAfter)&&(o={message:"Certificate is not valid yet or has expired.",error:d.certificateError.certificate_expired,notBefore:s.validity.notBefore,notAfter:s.validity.notAfter,now:a}),null===o){if(c=t[0]||e.getIssuer(s),null===c&&s.isIssuer(s)&&(l=!0,c=s),c){var h=c;f.util.isArray(h)||(h=[h]);for(var p=!1;!p&&h.length>0;){c=h.shift();try{p=c.verify(s)}catch(e){}}p||(o={message:"Certificate signature is invalid.",error:d.certificateError.bad_certificate})}null!==o||c&&!l||e.hasCertificate(s)||(o={message:"Certificate is not trusted.",error:d.certificateError.unknown_ca})}if(null===o&&c&&!s.isIssuer(c)&&(o={message:"Certificate issuer is invalid.",error:d.certificateError.bad_certificate}),null===o)for(var g={keyUsage:!0,basicConstraints:!0},v=0;null===o&&vm.pathLenConstraint&&(o={message:"Certificate basicConstraints pathLenConstraint violated.",error:d.certificateError.bad_certificate})}}var C=null===o||o.error,E=r.verify?r.verify(C,u,n):C;if(!0!==E)throw!0===C&&(o={message:"The application rejected the certificate.",error:d.certificateError.bad_certificate}),(E||0===E)&&("object"!=typeof E||f.util.isArray(E)?"string"==typeof E&&(o.error=E):(E.message&&(o.message=E.message),E.error&&(o.error=E.error))),o;o=null,i=!1,++u}while(t.length>0);return!0}},function(e,t){function r(){throw new Error("setTimeout has not been defined")}function n(){throw new Error("clearTimeout has not been defined")}function a(e){if(f===setTimeout)return setTimeout(e,0);if((f===r||!f)&&setTimeout)return f=setTimeout,setTimeout(e,0);try{return f(e,0)}catch(t){try{return f.call(null,e,0)}catch(t){return f.call(this,e,0)}}}function i(e){if(l===clearTimeout)return clearTimeout(e);if((l===n||!l)&&clearTimeout)return l=clearTimeout,clearTimeout(e);try{return l(e)}catch(t){try{return l.call(null,e)}catch(t){return l.call(this,e)}}}function o(){g&&h&&(g=!1,h.length?p=h.concat(p):v=-1,p.length&&u())}function u(){if(!g){var e=a(o);g=!0;for(var t=p.length;t;){for(h=p,p=[];++v1)for(var r=1;r4){var t=e;e=o.util.createBuffer();for(var r=0;r0))return!0;for(var n=0;n0))return!0;for(var n=0;n0)return!1;var r=e.length(),n=e.at(r-1);return!(n>this.blockSize<<2)&&(e.truncate(n),!0)},u.cbc=function(e){e=e||{},this.name="CBC",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=new Array(this._ints),this._outBlock=new Array(this._ints)},u.cbc.prototype.start=function(e){if(null===e.iv){if(!this._prev)throw new Error("Invalid IV parameter.");this._iv=this._prev.slice(0)}else{if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=n(e.iv),this._prev=this._iv.slice(0)}},u.cbc.prototype.encrypt=function(e,t,r){if(e.length()0))return!0;for(var n=0;n0))return!0;for(var n=0;n0)return!1;var r=e.length(),n=e.at(r-1);return!(n>this.blockSize<<2)&&(e.truncate(n),!0)},u.cfb=function(e){e=e||{},this.name="CFB",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=null,this._outBlock=new Array(this._ints),this._partialBlock=new Array(this._ints),this._partialOutput=o.util.createBuffer(),this._partialBytes=0},u.cfb.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=n(e.iv),this._inBlock=this._iv.slice(0),this._partialBytes=0},u.cfb.prototype.encrypt=function(e,t,r){var n=e.length();if(0===n)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize)for(var a=0;a0&&(i=this.blockSize-i),this._partialOutput.clear();for(var a=0;a0)e.read-=this.blockSize;else for(var a=0;a0&&this._partialOutput.getBytes(this._partialBytes),i>0&&!r)return t.putBytes(this._partialOutput.getBytes(i-this._partialBytes)),this._partialBytes=i,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}},u.cfb.prototype.decrypt=function(e,t,r){var n=e.length();if(0===n)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize)for(var a=0;a0&&(i=this.blockSize-i),this._partialOutput.clear();for(var a=0;a0)e.read-=this.blockSize;else for(var a=0;a0&&this._partialOutput.getBytes(this._partialBytes),i>0&&!r)return t.putBytes(this._partialOutput.getBytes(i-this._partialBytes)),this._partialBytes=i,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}},u.ofb=function(e){e=e||{},this.name="OFB",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=null,this._outBlock=new Array(this._ints),this._partialOutput=o.util.createBuffer(),this._partialBytes=0},u.ofb.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=n(e.iv),this._inBlock=this._iv.slice(0),this._partialBytes=0},u.ofb.prototype.encrypt=function(e,t,r){var n=e.length();if(0===e.length())return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize)for(var a=0;a0&&(i=this.blockSize-i),this._partialOutput.clear();for(var a=0;a0)e.read-=this.blockSize;else for(var a=0;a0&&this._partialOutput.getBytes(this._partialBytes),i>0&&!r)return t.putBytes(this._partialOutput.getBytes(i-this._partialBytes)),this._partialBytes=i,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}},u.ofb.prototype.decrypt=u.ofb.prototype.encrypt,u.ctr=function(e){e=e||{},this.name="CTR",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=null,this._outBlock=new Array(this._ints),this._partialOutput=o.util.createBuffer(),this._partialBytes=0},u.ctr.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");this._iv=n(e.iv),this._inBlock=this._iv.slice(0),this._partialBytes=0},u.ctr.prototype.encrypt=function(e,t,r){var n=e.length();if(0===n)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize)for(var i=0;i0&&(o=this.blockSize-o),this._partialOutput.clear();for(var i=0;i0&&(e.read-=this.blockSize),this._partialBytes>0&&this._partialOutput.getBytes(this._partialBytes),o>0&&!r)return t.putBytes(this._partialOutput.getBytes(o-this._partialBytes)),this._partialBytes=o,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}a(this._inBlock)},u.ctr.prototype.decrypt=u.ctr.prototype.encrypt,u.gcm=function(e){e=e||{},this.name="GCM",this.cipher=e.cipher,this.blockSize=e.blockSize||16,this._ints=this.blockSize/4,this._inBlock=new Array(this._ints),this._outBlock=new Array(this._ints),this._partialOutput=o.util.createBuffer(),this._partialBytes=0,this._R=3774873600},u.gcm.prototype.start=function(e){if(!("iv"in e))throw new Error("Invalid IV parameter.");var t=o.util.createBuffer(e.iv);this._cipherLength=0;var r;if(r="additionalData"in e?o.util.createBuffer(e.additionalData):o.util.createBuffer(),this._tagLength="tagLength"in e?e.tagLength:128,this._tag=null,e.decrypt&&(this._tag=o.util.createBuffer(e.tag).getBytes(),this._tag.length!==this._tagLength/8))throw new Error("Authentication tag does not match tag length.");this._hashBlock=new Array(this._ints),this.tag=null,this._hashSubkey=new Array(this._ints),this.cipher.encrypt([0,0,0,0],this._hashSubkey),this.componentBits=4,this._m=this.generateHashTable(this._hashSubkey,this.componentBits);var n=t.length();if(12===n)this._j0=[t.getInt32(),t.getInt32(),t.getInt32(),1];else{for(this._j0=[0,0,0,0];t.length()>0;)this._j0=this.ghash(this._hashSubkey,this._j0,[t.getInt32(),t.getInt32(),t.getInt32(),t.getInt32()]);this._j0=this.ghash(this._hashSubkey,this._j0,[0,0].concat(i(8*n)))}this._inBlock=this._j0.slice(0),a(this._inBlock),this._partialBytes=0,r=o.util.createBuffer(r),this._aDataLength=i(8*r.length());var u=r.length()%this.blockSize;for(u&&r.fillWithByte(0,this.blockSize-u),this._s=[0,0,0,0];r.length()>0;)this._s=this.ghash(this._hashSubkey,this._s,[r.getInt32(),r.getInt32(),r.getInt32(),r.getInt32()])},u.gcm.prototype.encrypt=function(e,t,r){var n=e.length();if(0===n)return!0;if(this.cipher.encrypt(this._inBlock,this._outBlock),0===this._partialBytes&&n>=this.blockSize){for(var i=0;i0&&(o=this.blockSize-o),this._partialOutput.clear();for(var i=0;i0&&this._partialOutput.getBytes(this._partialBytes),o>0&&!r)return e.read-=this.blockSize,t.putBytes(this._partialOutput.getBytes(o-this._partialBytes)),this._partialBytes=o,!0;t.putBytes(this._partialOutput.getBytes(n-this._partialBytes)),this._partialBytes=0}this._s=this.ghash(this._hashSubkey,this._s,this._outBlock),a(this._inBlock)},u.gcm.prototype.decrypt=function(e,t,r){var n=e.length();if(n0))return!0;this.cipher.encrypt(this._inBlock,this._outBlock),a(this._inBlock),this._hashBlock[0]=e.getInt32(),this._hashBlock[1]=e.getInt32(),this._hashBlock[2]=e.getInt32(),this._hashBlock[3]=e.getInt32(),this._s=this.ghash(this._hashSubkey,this._s,this._hashBlock);for(var i=0;i0;--n)t[n]=e[n]>>>1|(1&e[n-1])<<31;t[0]=e[0]>>>1,r&&(t[0]^=this._R)},u.gcm.prototype.tableMultiply=function(e){for(var t=[0,0,0,0],r=0;r<32;++r){var n=r/8|0,a=e[n]>>>4*(7-r%8)&15,i=this._m[r][a];t[0]^=i[0],t[1]^=i[1],t[2]^=i[2],t[3]^=i[3]}return t},u.gcm.prototype.ghash=function(e,t,r){return t[0]^=r[0],t[1]^=r[1],t[2]^=r[2],t[3]^=r[3],this.tableMultiply(t)},u.gcm.prototype.generateHashTable=function(e,t){for(var r=8/t,n=4*r,a=16*r,i=new Array(a),o=0;o>>1,a=new Array(r);a[n]=e.slice(0);for(var i=n>>>1;i>0;)this.pow(a[2*i],a[i]=[]),i>>=1;for(i=2;i=0;s--)N>>=8,N+=I.at(s)+k.at(s),k.setAt(s,255&N);B.putBuffer(k)}C=B,l.putBuffer(T)}return l.truncate(l.length()-a),l},f.pbe.getCipher=function(e,t,r){switch(e){case f.oids.pkcs5PBES2:return f.pbe.getCipherForPBES2(e,t,r);case f.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:case f.oids["pbewithSHAAnd40BitRC2-CBC"]:return f.pbe.getCipherForPKCS12PBE(e,t,r);default:var n=new Error("Cannot read encrypted PBE data block. Unsupported OID.");throw n.oid=e,n.supportedOids=["pkcs5PBES2","pbeWithSHAAnd3-KeyTripleDES-CBC","pbewithSHAAnd40BitRC2-CBC"],n}},f.pbe.getCipherForPBES2=function(e,t,r){var n={},i=[];if(!c.validate(t,h,n,i)){var o=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw o.errors=i,o}if((e=c.derToOid(n.kdfOid))!==f.oids.pkcs5PBKDF2){var o=new Error("Cannot read encrypted private key. Unsupported key derivation function OID.");throw o.oid=e,o.supportedOids=["pkcs5PBKDF2"],o}if((e=c.derToOid(n.encOid))!==f.oids["aes128-CBC"]&&e!==f.oids["aes192-CBC"]&&e!==f.oids["aes256-CBC"]&&e!==f.oids["des-EDE3-CBC"]&&e!==f.oids.desCBC){var o=new Error("Cannot read encrypted private key. Unsupported encryption scheme OID.");throw o.oid=e,o.supportedOids=["aes128-CBC","aes192-CBC","aes256-CBC","des-EDE3-CBC","desCBC"],o}var s=n.kdfSalt,l=u.util.createBuffer(n.kdfIterationCount);l=l.getInt(l.length()<<3);var d,p;switch(f.oids[e]){case"aes128-CBC":d=16,p=u.aes.createDecryptionCipher;break;case"aes192-CBC":d=24,p=u.aes.createDecryptionCipher;break;case"aes256-CBC":d=32,p=u.aes.createDecryptionCipher;break;case"des-EDE3-CBC":d=24,p=u.des.createDecryptionCipher;break;case"desCBC":d=8,p=u.des.createDecryptionCipher}var g=a(n.prfOid),v=u.pkcs5.pbkdf2(r,s,l,d,g),y=n.encIv,m=p(v);return m.start(y),m},f.pbe.getCipherForPKCS12PBE=function(e,t,r){var n={},i=[];if(!c.validate(t,p,n,i)){var o=new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");throw o.errors=i,o}var s=u.util.createBuffer(n.salt),l=u.util.createBuffer(n.iterations);l=l.getInt(l.length()<<3);var d,h,g;switch(e){case f.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:d=24,h=8,g=u.des.startDecrypting;break;case f.oids["pbewithSHAAnd40BitRC2-CBC"]:d=5,h=8,g=function(e,t){var r=u.rc2.createDecryptionCipher(e,40);return r.start(t,null),r};break;default:var o=new Error("Cannot read PKCS #12 PBE data block. Unsupported OID.");throw o.oid=e,o}var v=a(n.prfOid),y=f.pbe.generatePkcs12Key(r,s,1,l,d,v);return v.start(),g(y,f.pbe.generatePkcs12Key(r,s,2,l,h,v))},f.pbe.opensslDeriveBytes=function(e,t,r,a){if(void 0===a||null===a){if(!("md5"in u.md))throw new Error('"md5" hash algorithm unavailable.');a=u.md.md5.create()}null===t&&(t="");for(var i=[n(a,e+t)],o=16,s=1;o>24&255,o>>16&255,o>>8&255,255&o);r.start(),r.update(e+u),n+=r.digest().getBytes()}return n.substring(0,t)}var a=r(0);r(1),r(2),r(9);var i=e.exports=a.pkcs1=a.pkcs1||{};i.encode_rsa_oaep=function(e,t,r){var i,o,u,s;"string"==typeof r?(i=r,o=arguments[3]||void 0,u=arguments[4]||void 0):r&&(i=r.label||void 0,o=r.seed||void 0,u=r.md||void 0,r.mgf1&&r.mgf1.md&&(s=r.mgf1.md)),u?u.start():u=a.md.sha1.create(),s||(s=u);var c=Math.ceil(e.n.bitLength()/8),f=c-2*u.digestLength-2;if(t.length>f){var l=new Error("RSAES-OAEP input message length is too long.");throw l.length=t.length,l.maxLength=f,l}i||(i=""),u.update(i,"raw");for(var d=u.digest(),h="",p=f-t.length,g=0;g=0&&a.push(u):a.push(u))}return a}function a(e){if(e.composed||e.constructed){for(var t=c.util.createBuffer(),r=0;r0&&(a=f.create(f.Class.UNIVERSAL,f.Type.SET,!0,s));var h=[],p=[];null!==t&&(p=c.util.isArray(t)?t:[t]);for(var g=[],v=0;v0){var C=f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,g),E=f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,[f.create(f.Class.UNIVERSAL,f.Type.OID,!1,f.oidToDer(l.oids.data).getBytes()),f.create(f.Class.CONTEXT_SPECIFIC,0,!0,[f.create(f.Class.UNIVERSAL,f.Type.OCTETSTRING,!1,f.toDer(C).getBytes())])]);h.push(E)}var S=null;if(null!==e){var T=l.wrapRsaPrivateKey(l.privateKeyToAsn1(e));S=null===r?f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,[f.create(f.Class.UNIVERSAL,f.Type.OID,!1,f.oidToDer(l.oids.keyBag).getBytes()),f.create(f.Class.CONTEXT_SPECIFIC,0,!0,[T]),a]):f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,[f.create(f.Class.UNIVERSAL,f.Type.OID,!1,f.oidToDer(l.oids.pkcs8ShroudedKeyBag).getBytes()),f.create(f.Class.CONTEXT_SPECIFIC,0,!0,[l.encryptPrivateKeyInfo(T,r,n)]),a]);var w=f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,[S]),I=f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,[f.create(f.Class.UNIVERSAL,f.Type.OID,!1,f.oidToDer(l.oids.data).getBytes()),f.create(f.Class.CONTEXT_SPECIFIC,0,!0,[f.create(f.Class.UNIVERSAL,f.Type.OCTETSTRING,!1,f.toDer(w).getBytes())])]);h.push(I)}var A,B=f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,h);if(n.useMac){var u=c.md.sha1.create(),k=new c.util.ByteBuffer(c.random.getBytes(n.saltSize)),N=n.count,e=d.generateKey(r,k,3,N,20),R=c.hmac.create();R.start(u,e),R.update(f.toDer(B).getBytes());var $=R.getMac();A=f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,[f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,[f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,[f.create(f.Class.UNIVERSAL,f.Type.OID,!1,f.oidToDer(l.oids.sha1).getBytes()),f.create(f.Class.UNIVERSAL,f.Type.NULL,!1,"")]),f.create(f.Class.UNIVERSAL,f.Type.OCTETSTRING,!1,$.getBytes())]),f.create(f.Class.UNIVERSAL,f.Type.OCTETSTRING,!1,k.getBytes()),f.create(f.Class.UNIVERSAL,f.Type.INTEGER,!1,f.integerToDer(N).getBytes())])}return f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,[f.create(f.Class.UNIVERSAL,f.Type.INTEGER,!1,f.integerToDer(3).getBytes()),f.create(f.Class.UNIVERSAL,f.Type.SEQUENCE,!0,[f.create(f.Class.UNIVERSAL,f.Type.OID,!1,f.oidToDer(l.oids.data).getBytes()),f.create(f.Class.CONTEXT_SPECIFIC,0,!0,[f.create(f.Class.UNIVERSAL,f.Type.OCTETSTRING,!1,f.toDer(B).getBytes())])]),A])},d.generateKey=c.pbe.generatePkcs12Key},function(e,t,r){var n=r(0);r(3),r(1);var a=n.asn1,i=e.exports=n.pkcs7asn1=n.pkcs7asn1||{};n.pkcs7=n.pkcs7||{},n.pkcs7.asn1=i;var o={name:"ContentInfo",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"ContentInfo.ContentType",tagClass:a.Class.UNIVERSAL,type:a.Type.OID,constructed:!1,capture:"contentType"},{name:"ContentInfo.content",tagClass:a.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,captureAsn1:"content"}]};i.contentInfoValidator=o;var u={name:"EncryptedContentInfo",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"EncryptedContentInfo.contentType",tagClass:a.Class.UNIVERSAL,type:a.Type.OID,constructed:!1,capture:"contentType"},{name:"EncryptedContentInfo.contentEncryptionAlgorithm",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"EncryptedContentInfo.contentEncryptionAlgorithm.algorithm",tagClass:a.Class.UNIVERSAL,type:a.Type.OID,constructed:!1,capture:"encAlgorithm"},{name:"EncryptedContentInfo.contentEncryptionAlgorithm.parameter",tagClass:a.Class.UNIVERSAL,captureAsn1:"encParameter"}]},{name:"EncryptedContentInfo.encryptedContent",tagClass:a.Class.CONTEXT_SPECIFIC,type:0,capture:"encryptedContent",captureAsn1:"encryptedContentAsn1"}]};i.envelopedDataValidator={name:"EnvelopedData",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"EnvelopedData.Version",tagClass:a.Class.UNIVERSAL,type:a.Type.INTEGER,constructed:!1,capture:"version"},{name:"EnvelopedData.RecipientInfos",tagClass:a.Class.UNIVERSAL,type:a.Type.SET,constructed:!0,captureAsn1:"recipientInfos"}].concat(u)},i.encryptedDataValidator={name:"EncryptedData",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"EncryptedData.Version",tagClass:a.Class.UNIVERSAL,type:a.Type.INTEGER,constructed:!1,capture:"version"}].concat(u)};var s={name:"SignerInfo",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"SignerInfo.version",tagClass:a.Class.UNIVERSAL,type:a.Type.INTEGER,constructed:!1},{name:"SignerInfo.issuerAndSerialNumber",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"SignerInfo.issuerAndSerialNumber.issuer",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,captureAsn1:"issuer"},{name:"SignerInfo.issuerAndSerialNumber.serialNumber",tagClass:a.Class.UNIVERSAL,type:a.Type.INTEGER,constructed:!1,capture:"serial"}]},{name:"SignerInfo.digestAlgorithm",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"SignerInfo.digestAlgorithm.algorithm",tagClass:a.Class.UNIVERSAL,type:a.Type.OID,constructed:!1,capture:"digestAlgorithm"},{name:"SignerInfo.digestAlgorithm.parameter",tagClass:a.Class.UNIVERSAL,constructed:!1,captureAsn1:"digestParameter",optional:!0}]},{name:"SignerInfo.authenticatedAttributes",tagClass:a.Class.CONTEXT_SPECIFIC,type:0,constructed:!0,optional:!0,capture:"authenticatedAttributes"},{name:"SignerInfo.digestEncryptionAlgorithm",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,capture:"signatureAlgorithm"},{name:"SignerInfo.encryptedDigest",tagClass:a.Class.UNIVERSAL,type:a.Type.OCTETSTRING,constructed:!1,capture:"signature"},{name:"SignerInfo.unauthenticatedAttributes",tagClass:a.Class.CONTEXT_SPECIFIC,type:1,constructed:!0,optional:!0,capture:"unauthenticatedAttributes"}]};i.signedDataValidator={name:"SignedData",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"SignedData.Version",tagClass:a.Class.UNIVERSAL,type:a.Type.INTEGER,constructed:!1,capture:"version"},{name:"SignedData.DigestAlgorithms",tagClass:a.Class.UNIVERSAL,type:a.Type.SET,constructed:!0,captureAsn1:"digestAlgorithms"},o,{name:"SignedData.Certificates",tagClass:a.Class.CONTEXT_SPECIFIC,type:0,optional:!0,captureAsn1:"certificates"},{name:"SignedData.CertificateRevocationLists",tagClass:a.Class.CONTEXT_SPECIFIC,type:1,optional:!0,captureAsn1:"crls"},{name:"SignedData.SignerInfos",tagClass:a.Class.UNIVERSAL,type:a.Type.SET,capture:"signerInfos",optional:!0,value:[s]}]},i.recipientInfoValidator={name:"RecipientInfo",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"RecipientInfo.version",tagClass:a.Class.UNIVERSAL,type:a.Type.INTEGER,constructed:!1,capture:"version"},{name:"RecipientInfo.issuerAndSerial",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"RecipientInfo.issuerAndSerial.issuer",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,captureAsn1:"issuer"},{name:"RecipientInfo.issuerAndSerial.serialNumber",tagClass:a.Class.UNIVERSAL,type:a.Type.INTEGER,constructed:!1,capture:"serial"}]},{name:"RecipientInfo.keyEncryptionAlgorithm",tagClass:a.Class.UNIVERSAL,type:a.Type.SEQUENCE,constructed:!0,value:[{name:"RecipientInfo.keyEncryptionAlgorithm.algorithm",tagClass:a.Class.UNIVERSAL,type:a.Type.OID,constructed:!1,capture:"encAlgorithm"},{name:"RecipientInfo.keyEncryptionAlgorithm.parameter",tagClass:a.Class.UNIVERSAL,constructed:!1,captureAsn1:"encParameter"}]},{name:"RecipientInfo.encryptedKey",tagClass:a.Class.UNIVERSAL,type:a.Type.OCTETSTRING,constructed:!1,capture:"encKey"}]}},function(e,t,r){var n=r(0);r(3),r(6),r(27),r(7),r(17),r(29),r(18),r(13),r(1),r(19);var a=n.asn1,i=e.exports=n.pki=n.pki||{};i.pemToDer=function(e){var t=n.pem.decode(e)[0];if(t.procType&&"ENCRYPTED"===t.procType.type)throw new Error("Could not convert PEM to DER; PEM is encrypted.");return n.util.createBuffer(t.body)},i.privateKeyFromPem=function(e){var t=n.pem.decode(e)[0];if("PRIVATE KEY"!==t.type&&"RSA PRIVATE KEY"!==t.type){var r=new Error('Could not convert private key from PEM; PEM header type is not "PRIVATE KEY" or "RSA PRIVATE KEY".');throw r.headerType=t.type,r}if(t.procType&&"ENCRYPTED"===t.procType.type)throw new Error("Could not convert private key from PEM; PEM is encrypted.");var o=a.fromDer(t.body);return i.privateKeyFromAsn1(o)},i.privateKeyToPem=function(e,t){var r={type:"RSA PRIVATE KEY",body:a.toDer(i.privateKeyToAsn1(e)).getBytes()};return n.pem.encode(r,{maxline:t})},i.privateKeyInfoToPem=function(e,t){var r={type:"PRIVATE KEY",body:a.toDer(e).getBytes()};return n.pem.encode(r,{maxline:t})}},function(e,t,r){var n=r(0);r(1),r(12),r(2),function(){function t(e,t,n,a){return"workers"in n?i(e,t,n,a):r(e,t,n,a)}function r(e,t,r,n){var i=o(e,t),s=u(i.bitLength());"millerRabinTests"in r&&(s=r.millerRabinTests);var c=10;"maxBlockTime"in r&&(c=r.maxBlockTime),a(i,e,t,0,s,c,n)}function a(e,t,r,i,u,s,c){var l=+new Date;do{if(e.bitLength()>t&&(e=o(t,r)),e.isProbablePrime(u))return c(null,e);e.dAddOffset(f[i++%8],0)}while(s<0||+new Date-le&&(s=o(e,t));var h=s.toString(16);r.target.postMessage({hex:h,workLoad:l}),s.dAddOffset(d,0)}}f=Math.max(1,f);for(var n=[],a=0;a=32)return i(),e();var t=32-u.pools[0].messageLength<<5;u.seedFile(t,function(t,r){if(t)return e(t);u.collect(r),i(),e()})}function r(){if(u.pools[0].messageLength>=32)return i();var e=32-u.pools[0].messageLength<<5;u.collect(u.seedFileSync(e)),i()}function i(){u.reseeds=4294967295===u.reseeds?0:u.reseeds+1;var e=u.plugin.md.create();e.update(u.keyBytes);for(var t=1,r=0;r<32;++r)u.reseeds%t==0&&(e.update(u.pools[r].digest().getBytes()),u.pools[r].start()),t<<=1;u.keyBytes=e.digest().getBytes(),e.start(),e.update(u.keyBytes);var n=e.digest().getBytes();u.key=u.plugin.formatKey(u.keyBytes),u.seed=u.plugin.formatSeed(n),u.generated=0}function o(e){var t=null,r=n.util.globalScope,a=r.crypto||r.msCrypto;a&&a.getRandomValues&&(t=function(e){return a.getRandomValues(e)});var i=n.util.createBuffer();if(t)for(;i.length()>16),f+=(32767&c)<<16,f+=c>>15,f=(2147483647&f)+(f>>31),d=4294967295&f;for(var s=0;s<3;++s)l=d>>>(s<<3),l^=Math.floor(256*Math.random()),i.putByte(String.fromCharCode(255&l))}return i.getBytes(e)}for(var u={plugin:e,key:null,seed:null,time:null,reseeds:0,generated:0,keyBytes:""},s=e.md,c=new Array(32),f=0;f<32;++f)c[f]=s.create();return u.pools=c,u.pool=0,u.generate=function(e,r){function a(l){if(l)return r(l);if(f.length()>=e)return r(null,f.getBytes(e));if(u.generated>1048575&&(u.key=null),null===u.key)return n.util.nextTick(function(){t(a)});var d=i(u.key,u.seed);u.generated+=d.length,f.putBytes(d),u.key=s(i(u.key,o(u.seed))),u.seed=c(i(u.key,u.seed)),n.util.setImmediate(a)}if(!r)return u.generateSync(e);var i=u.plugin.cipher,o=u.plugin.increment,s=u.plugin.formatKey,c=u.plugin.formatSeed,f=n.util.createBuffer();u.key=null,a()},u.generateSync=function(e){var t=u.plugin.cipher,a=u.plugin.increment,i=u.plugin.formatKey,o=u.plugin.formatSeed;u.key=null;for(var s=n.util.createBuffer();s.length()1048575&&(u.key=null),null===u.key&&r();var c=t(u.key,u.seed);u.generated+=c.length,s.putBytes(c),u.key=i(t(u.key,a(u.seed))),u.seed=o(t(u.key,u.seed))}return s.getBytes(e)},a?(u.seedFile=function(e,t){a.randomBytes(e,function(e,r){if(e)return t(e);t(null,r.toString())})},u.seedFileSync=function(e){return a.randomBytes(e).toString()}):(u.seedFile=function(e,t){try{t(null,o(e))}catch(e){t(e)}},u.seedFileSync=o),u.collect=function(e){for(var t=e.length,r=0;r>n&255);u.collect(r)},u.registerWorker=function(e){if(e===self)u.seedFile=function(e,t){function r(e){var n=e.data;n.forge&&n.forge.prng&&(self.removeEventListener("message",r),t(n.forge.prng.err,n.forge.prng.bytes))}self.addEventListener("message",r),self.postMessage({forge:{prng:{needed:e}}})};else{var t=function(t){var r=t.data;r.forge&&r.forge.prng&&u.seedFile(r.forge.prng.needed,function(t,r){e.postMessage({forge:{prng:{err:t,bytes:r}}})})};e.addEventListener("message",t)}},u}}).call(t,r(20))},function(e,t,r){var n=r(0);r(1);var a=[217,120,249,196,25,221,181,237,40,233,253,121,74,160,216,157,198,126,55,131,43,118,83,142,98,76,100,136,68,139,251,162,23,154,89,245,135,179,79,19,97,69,109,141,9,129,125,50,189,143,64,235,134,183,123,11,240,149,33,34,92,107,78,130,84,214,101,147,206,96,178,28,115,86,192,20,167,140,241,220,18,117,202,31,59,190,228,209,66,61,212,48,163,60,182,38,111,191,14,218,70,105,7,87,39,242,29,155,188,148,67,3,248,17,199,246,144,239,62,231,6,195,213,47,200,102,30,215,8,232,234,222,128,82,238,247,132,170,114,172,53,77,106,42,150,26,210,113,90,21,73,116,75,159,208,94,4,24,164,236,194,224,65,110,15,81,203,204,36,145,175,80,161,244,112,57,153,124,58,133,35,184,180,122,252,2,54,91,37,85,151,49,45,93,250,152,227,138,146,174,5,223,41,16,103,108,186,201,211,0,230,207,225,158,168,44,99,22,1,63,88,226,137,169,13,56,52,27,171,51,255,176,187,72,12,95,185,177,205,46,197,243,219,71,229,165,156,119,10,166,32,104,254,127,193,173],i=[1,2,3,5],o=function(e,t){return e<>16-t},u=function(e,t){return(65535&e)>>t|e<<16-t&65535};e.exports=n.rc2=n.rc2||{},n.rc2.expandKey=function(e,t){"string"==typeof e&&(e=n.util.createBuffer(e)),t=t||128;var r,i=e,o=e.length(),u=t,s=Math.ceil(u/8),c=255>>(7&u);for(r=o;r<128;r++)i.putByte(a[i.at(r-1)+i.at(r-o)&255]);for(i.setAt(128-s,a[i.at(128-s)&c]),r=127-s;r>=0;r--)i.setAt(r,a[i.at(r+1)^i.at(r+s)]);return i};var s=function(e,t,r){var a,s,c,f,l=!1,d=null,h=null,p=null,g=[];for(e=n.rc2.expandKey(e,t),c=0;c<64;c++)g.push(e.getInt16Le());r?(a=function(e){for(c=0;c<4;c++)e[c]+=g[f]+(e[(c+3)%4]&e[(c+2)%4])+(~e[(c+3)%4]&e[(c+1)%4]),e[c]=o(e[c],i[c]),f++},s=function(e){for(c=0;c<4;c++)e[c]+=g[63&e[(c+3)%4]]}):(a=function(e){for(c=3;c>=0;c--)e[c]=u(e[c],i[c]),e[c]-=g[f]+(e[(c+3)%4]&e[(c+2)%4])+(~e[(c+3)%4]&e[(c+1)%4]),f--},s=function(e){for(c=3;c>=0;c--)e[c]-=g[63&e[(c+3)%4]]});var v=function(e){var t=[];for(c=0;c<4;c++){var n=d.getInt16Le();null!==p&&(r?n^=p.getInt16Le():p.putInt16Le(n)),t.push(65535&n)}f=r?0:63;for(var a=0;a=8;)v([[5,a],[1,s],[6,a],[1,s],[5,a]])},finish:function(e){var t=!0;if(r)if(e)t=e(8,d,!r);else{var n=8===d.length()?8:8-d.length();d.fillWithByte(n,n)}if(t&&(l=!0,y.update()),!r&&(t=0===d.length()))if(e)t=e(8,h,!r);else{var a=h.length(),i=h.at(a-1);i>a?t=!1:h.truncate(i)}return t}}};n.rc2.startEncrypting=function(e,t,r){var a=n.rc2.createEncryptionCipher(e,128);return a.start(t,r),a},n.rc2.createEncryptionCipher=function(e,t){return s(e,t,!0)},n.rc2.startDecrypting=function(e,t,r){var a=n.rc2.createDecryptionCipher(e,128);return a.start(t,r),a},n.rc2.createDecryptionCipher=function(e,t){return s(e,t,!1)}},function(e,t,r){function n(){u=String.fromCharCode(128),u+=i.util.fillString(String.fromCharCode(0),64),c=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],s=!0}function a(e,t,r){for(var n,a,i,o,u,s,f,l,d,h,p,g,v,y,m,b=r.length();b>=64;){for(f=0;f<16;++f)t[f]=r.getInt32();for(;f<64;++f)n=t[f-2],n=(n>>>17|n<<15)^(n>>>19|n<<13)^n>>>10,a=t[f-15],a=(a>>>7|a<<25)^(a>>>18|a<<14)^a>>>3,t[f]=n+t[f-7]+a+t[f-16]|0;for(l=e.h0,d=e.h1,h=e.h2,p=e.h3,g=e.h4,v=e.h5,y=e.h6,m=e.h7,f=0;f<64;++f)o=(g>>>6|g<<26)^(g>>>11|g<<21)^(g>>>25|g<<7),u=y^g&(v^y),i=(l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10),s=l&d|h&(l^d),n=m+o+u+c[f]+t[f],a=i+s,m=y,y=v,v=g,g=p+n>>>0,p=h,h=d,d=l,l=n+a>>>0;e.h0=e.h0+l|0,e.h1=e.h1+d|0,e.h2=e.h2+h|0,e.h3=e.h3+p|0,e.h4=e.h4+g|0,e.h5=e.h5+v|0,e.h6=e.h6+y|0,e.h7=e.h7+m|0,b-=64}}var i=r(0);r(4),r(1);var o=e.exports=i.sha256=i.sha256||{};i.md.sha256=i.md.algorithms.sha256=o,o.create=function(){s||n();var e=null,t=i.util.createBuffer(),r=new Array(64),o={algorithm:"sha256",blockLength:64,digestLength:32,messageLength:0,fullMessageLength:null,messageLengthSize:8};return o.start=function(){o.messageLength=0,o.fullMessageLength=o.messageLength64=[];for(var r=o.messageLengthSize/4,n=0;n>>0,s>>>0];for(var c=o.fullMessageLength.length-1;c>=0;--c)o.fullMessageLength[c]+=s[1],s[1]=s[0]+(o.fullMessageLength[c]/4294967296>>>0),o.fullMessageLength[c]=o.fullMessageLength[c]>>>0,s[0]=s[1]/4294967296>>>0;return t.putBytes(n),a(e,r,t),(t.read>2048||0===t.length())&&t.compact(),o},o.digest=function(){var n=i.util.createBuffer();n.putBytes(t.bytes());var s=o.fullMessageLength[o.fullMessageLength.length-1]+o.messageLengthSize,c=s&o.blockLength-1;n.putBytes(u.substr(0,o.blockLength-c));for(var f,l,d=8*o.fullMessageLength[0],h=0;h>>0,d+=l,n.putInt32(d>>>0),d=f>>>0;n.putInt32(d);var p={h0:e.h0,h1:e.h1,h2:e.h2,h3:e.h3,h4:e.h4,h5:e.h5,h6:e.h6,h7:e.h7};a(p,r,n);var g=i.util.createBuffer();return g.putInt32(p.h0),g.putInt32(p.h1),g.putInt32(p.h2),g.putInt32(p.h3),g.putInt32(p.h4),g.putInt32(p.h5),g.putInt32(p.h6),g.putInt32(p.h7),g},o};var u=null,s=!1,c=null},function(e,t,r){function n(){s=String.fromCharCode(128),s+=i.util.fillString(String.fromCharCode(0),128),f=[[1116352408,3609767458],[1899447441,602891725],[3049323471,3964484399],[3921009573,2173295548],[961987163,4081628472],[1508970993,3053834265],[2453635748,2937671579],[2870763221,3664609560],[3624381080,2734883394],[310598401,1164996542],[607225278,1323610764],[1426881987,3590304994],[1925078388,4068182383],[2162078206,991336113],[2614888103,633803317],[3248222580,3479774868],[3835390401,2666613458],[4022224774,944711139],[264347078,2341262773],[604807628,2007800933],[770255983,1495990901],[1249150122,1856431235],[1555081692,3175218132],[1996064986,2198950837],[2554220882,3999719339],[2821834349,766784016],[2952996808,2566594879],[3210313671,3203337956],[3336571891,1034457026],[3584528711,2466948901],[113926993,3758326383],[338241895,168717936],[666307205,1188179964],[773529912,1546045734],[1294757372,1522805485],[1396182291,2643833823],[1695183700,2343527390],[1986661051,1014477480],[2177026350,1206759142],[2456956037,344077627],[2730485921,1290863460],[2820302411,3158454273],[3259730800,3505952657],[3345764771,106217008],[3516065817,3606008344],[3600352804,1432725776],[4094571909,1467031594],[275423344,851169720],[430227734,3100823752],[506948616,1363258195],[659060556,3750685593],[883997877,3785050280],[958139571,3318307427],[1322822218,3812723403],[1537002063,2003034995],[1747873779,3602036899],[1955562222,1575990012],[2024104815,1125592928],[2227730452,2716904306],[2361852424,442776044],[2428436474,593698344],[2756734187,3733110249],[3204031479,2999351573],[3329325298,3815920427],[3391569614,3928383900],[3515267271,566280711],[3940187606,3454069534],[4118630271,4000239992],[116418474,1914138554],[174292421,2731055270],[289380356,3203993006],[460393269,320620315],[685471733,587496836],[852142971,1086792851],[1017036298,365543100],[1126000580,2618297676],[1288033470,3409855158],[1501505948,4234509866],[1607167915,987167468],[1816402316,1246189591]],l={},l["SHA-512"]=[[1779033703,4089235720],[3144134277,2227873595],[1013904242,4271175723],[2773480762,1595750129],[1359893119,2917565137],[2600822924,725511199],[528734635,4215389547],[1541459225,327033209]],l["SHA-384"]=[[3418070365,3238371032],[1654270250,914150663],[2438529370,812702999],[355462360,4144912697],[1731405415,4290775857],[2394180231,1750603025],[3675008525,1694076839],[1203062813,3204075428]],l["SHA-512/256"]=[[573645204,4230739756],[2673172387,3360449730],[596883563,1867755857],[2520282905,1497426621],[2519219938,2827943907],[3193839141,1401305490],[721525244,746961066],[246885852,2177182882]],l["SHA-512/224"]=[[2352822216,424955298],[1944164710,2312950998],[502970286,855612546],[1738396948,1479516111],[258812777,2077511080],[2011393907,79989058],[1067287976,1780299464],[286451373,2446758561]],c=!0}function a(e,t,r){for(var n,a,i,o,u,s,c,l,d,h,p,g,v,y,m,b,C,E,S,T,w,I,A,B,k,N,R,$,_,L,x,P,D,U,O,M=r.length();M>=128;){for(_=0;_<16;++_)t[_][0]=r.getInt32()>>>0,t[_][1]=r.getInt32()>>>0;for(;_<80;++_)P=t[_-2],L=P[0],x=P[1],n=((L>>>19|x<<13)^(x>>>29|L<<3)^L>>>6)>>>0,a=((L<<13|x>>>19)^(x<<3|L>>>29)^(L<<26|x>>>6))>>>0,U=t[_-15],L=U[0],x=U[1],i=((L>>>1|x<<31)^(L>>>8|x<<24)^L>>>7)>>>0,o=((L<<31|x>>>1)^(L<<24|x>>>8)^(L<<25|x>>>7))>>>0,D=t[_-7],O=t[_-16],x=a+D[1]+o+O[1],t[_][0]=n+D[0]+i+O[0]+(x/4294967296>>>0)>>>0,t[_][1]=x>>>0;for(v=e[0][0],y=e[0][1],m=e[1][0],b=e[1][1],C=e[2][0],E=e[2][1],S=e[3][0],T=e[3][1],w=e[4][0],I=e[4][1],A=e[5][0],B=e[5][1],k=e[6][0],N=e[6][1],R=e[7][0],$=e[7][1],_=0;_<80;++_)c=((w>>>14|I<<18)^(w>>>18|I<<14)^(I>>>9|w<<23))>>>0,l=((w<<18|I>>>14)^(w<<14|I>>>18)^(I<<23|w>>>9))>>>0,d=(k^w&(A^k))>>>0,h=(N^I&(B^N))>>>0,u=((v>>>28|y<<4)^(y>>>2|v<<30)^(y>>>7|v<<25))>>>0,s=((v<<4|y>>>28)^(y<<30|v>>>2)^(y<<25|v>>>7))>>>0,p=(v&m|C&(v^m))>>>0,g=(y&b|E&(y^b))>>>0,x=$+l+h+f[_][1]+t[_][1],n=R+c+d+f[_][0]+t[_][0]+(x/4294967296>>>0)>>>0,a=x>>>0,x=s+g,i=u+p+(x/4294967296>>>0)>>>0,o=x>>>0,R=k,$=N,k=A,N=B,A=w,B=I,x=T+a,w=S+n+(x/4294967296>>>0)>>>0,I=x>>>0,S=C,T=E,C=m,E=b,m=v,b=y,x=a+o,v=n+i+(x/4294967296>>>0)>>>0,y=x>>>0;x=e[0][1]+y,e[0][0]=e[0][0]+v+(x/4294967296>>>0)>>>0,e[0][1]=x>>>0,x=e[1][1]+b,e[1][0]=e[1][0]+m+(x/4294967296>>>0)>>>0,e[1][1]=x>>>0,x=e[2][1]+E,e[2][0]=e[2][0]+C+(x/4294967296>>>0)>>>0,e[2][1]=x>>>0,x=e[3][1]+T,e[3][0]=e[3][0]+S+(x/4294967296>>>0)>>>0,e[3][1]=x>>>0,x=e[4][1]+I,e[4][0]=e[4][0]+w+(x/4294967296>>>0)>>>0,e[4][1]=x>>>0,x=e[5][1]+B,e[5][0]=e[5][0]+A+(x/4294967296>>>0)>>>0,e[5][1]=x>>>0,x=e[6][1]+N,e[6][0]=e[6][0]+k+(x/4294967296>>>0)>>>0,e[6][1]=x>>>0,x=e[7][1]+$,e[7][0]=e[7][0]+R+(x/4294967296>>>0)>>>0,e[7][1]=x>>>0,M-=128}}var i=r(0);r(4),r(1);var o=e.exports=i.sha512=i.sha512||{};i.md.sha512=i.md.algorithms.sha512=o;var u=i.sha384=i.sha512.sha384=i.sha512.sha384||{};u.create=function(){return o.create("SHA-384")},i.md.sha384=i.md.algorithms.sha384=u,i.sha512.sha256=i.sha512.sha256||{create:function(){return o.create("SHA-512/256")}},i.md["sha512/256"]=i.md.algorithms["sha512/256"]=i.sha512.sha256,i.sha512.sha224=i.sha512.sha224||{create:function(){return o.create("SHA-512/224")}},i.md["sha512/224"]=i.md.algorithms["sha512/224"]=i.sha512.sha224,o.create=function(e){if(c||n(),void 0===e&&(e="SHA-512"),!(e in l))throw new Error("Invalid SHA-512 algorithm: "+e);for(var t=l[e],r=null,o=i.util.createBuffer(),u=new Array(80),f=0;f<80;++f)u[f]=new Array(2);var d=64;switch(e){case"SHA-384":d=48;break;case"SHA-512/256":d=32;break;case"SHA-512/224":d=28}var h={algorithm:e.replace("-","").toLowerCase(),blockLength:128,digestLength:d,messageLength:0,fullMessageLength:null,messageLengthSize:16};return h.start=function(){h.messageLength=0,h.fullMessageLength=h.messageLength128=[];for(var e=h.messageLengthSize/4,n=0;n>>0,n>>>0];for(var s=h.fullMessageLength.length-1;s>=0;--s)h.fullMessageLength[s]+=n[1],n[1]=n[0]+(h.fullMessageLength[s]/4294967296>>>0),h.fullMessageLength[s]=h.fullMessageLength[s]>>>0,n[0]=n[1]/4294967296>>>0;return o.putBytes(e),a(r,u,o),(o.read>2048||0===o.length())&&o.compact(),h},h.digest=function(){var t=i.util.createBuffer();t.putBytes(o.bytes());var n=h.fullMessageLength[h.fullMessageLength.length-1]+h.messageLengthSize,c=n&h.blockLength-1;t.putBytes(s.substr(0,h.blockLength-c));for(var f,l,d=8*h.fullMessageLength[0],p=0;p>>0,d+=l,t.putInt32(d>>>0),d=f>>>0;t.putInt32(d);for(var g=new Array(r.length),p=0;p>1,u=o+(1&e.length),s=e.substr(0,u),c=e.substr(o,u),f=n.util.createBuffer(),l=n.hmac.create();r=t+r;var d=Math.ceil(a/16),h=Math.ceil(a/20);l.start("MD5",s);var p=n.util.createBuffer();f.putBytes(r);for(var g=0;g0&&(f.queue(e,f.createAlert(e,{level:f.Alert.Level.warning,description:f.Alert.Description.no_renegotiation})),f.flush(e)),e.process()},f.parseHelloMessage=function(e,t,r){var a=null,i=e.entity===f.ConnectionEnd.client;if(r<38)e.error(e,{message:i?"Invalid ServerHello message. Message too short.":"Invalid ClientHello message. Message too short.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.illegal_parameter}});else{var o=t.fragment,u=o.length();if(a={version:{major:o.getByte(),minor:o.getByte()},random:n.util.createBuffer(o.getBytes(32)),session_id:s(o,1),extensions:[]},i?(a.cipher_suite=o.getBytes(2),a.compression_method=o.getByte()):(a.cipher_suites=s(o,2),a.compression_methods=s(o,1)),(u=r-(u-o.length()))>0){for(var c=s(o,2);c.length()>0;)a.extensions.push({type:[c.getByte(),c.getByte()],data:s(c,2)});if(!i)for(var l=0;l0;){var p=h.getByte();if(0!==p)break;e.session.extensions.server_name.serverNameList.push(s(h,2).getBytes())}}}if(e.session.version&&(a.version.major!==e.session.version.major||a.version.minor!==e.session.version.minor))return e.error(e,{message:"TLS version change is disallowed during renegotiation.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.protocol_version}});if(i)e.session.cipherSuite=f.getCipherSuite(a.cipher_suite);else for(var g=n.util.createBuffer(a.cipher_suites.bytes());g.length()>0&&(e.session.cipherSuite=f.getCipherSuite(g.getBytes(2)),null===e.session.cipherSuite););if(null===e.session.cipherSuite)return e.error(e,{message:"No cipher suites in common.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.handshake_failure},cipherSuite:n.util.bytesToHex(a.cipher_suite)});e.session.compressionMethod=i?a.compression_method:f.CompressionMethod.none}return a},f.createSecurityParameters=function(e,t){var r=e.entity===f.ConnectionEnd.client,n=t.random.bytes(),a=r?e.session.sp.client_random:n,i=r?n:f.createRandom().getBytes();e.session.sp={entity:e.entity,prf_algorithm:f.PRFAlgorithm.tls_prf_sha256,bulk_cipher_algorithm:null,cipher_type:null,enc_key_length:null,block_length:null,fixed_iv_length:null,record_iv_length:null,mac_algorithm:null,mac_length:null,mac_key_length:null,compression_algorithm:e.session.compressionMethod,pre_master_secret:null,master_secret:null,client_random:a,server_random:i}},f.handleServerHello=function(e,t,r){var n=f.parseHelloMessage(e,t,r);if(!e.fail){if(!(n.version.minor<=e.version.minor))return e.error(e,{message:"Incompatible TLS version.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.protocol_version}});e.version.minor=n.version.minor,e.session.version=e.version;var a=n.session_id.bytes();a.length>0&&a===e.session.id?(e.expect=g,e.session.resuming=!0,e.session.sp.server_random=n.random.bytes()):(e.expect=l,e.session.resuming=!1,f.createSecurityParameters(e,n)),e.session.id=a,e.process()}},f.handleClientHello=function(e,t,r){var a=f.parseHelloMessage(e,t,r);if(!e.fail){var i=a.session_id.bytes(),o=null;if(e.sessionCache&&(o=e.sessionCache.getSession(i),null===o?i="":(o.version.major!==a.version.major||o.version.minor>a.version.minor)&&(o=null,i="")),0===i.length&&(i=n.random.getBytes(32)),e.session.id=i,e.session.clientHelloVersion=a.version,e.session.sp={},o)e.version=e.session.version=o.version,e.session.sp=o.sp;else{for(var u,s=1;s0;)a=s(u.certificate_list,3),i=n.asn1.fromDer(a),a=n.pki.certificateFromAsn1(i,!0),c.push(a)}catch(t){return e.error(e,{message:"Could not parse certificate list.",cause:t,send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.bad_certificate}})}var l=e.entity===f.ConnectionEnd.client;!l&&!0!==e.verifyClient||0!==c.length?0===c.length?e.expect=l?d:C:(l?e.session.serverCertificate=c[0]:e.session.clientCertificate=c[0],f.verifyCertificateChain(e,c)&&(e.expect=l?d:C)):e.error(e,{message:l?"No server certificate provided.":"No client certificate provided.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.illegal_parameter}}),e.process()},f.handleServerKeyExchange=function(e,t,r){if(r>0)return e.error(e,{message:"Invalid key parameters. Only RSA is supported.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.unsupported_certificate}});e.expect=h,e.process()},f.handleClientKeyExchange=function(e,t,r){if(r<48)return e.error(e,{message:"Invalid key parameters. Only RSA is supported.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.unsupported_certificate}});var a=t.fragment,i={enc_pre_master_secret:s(a,2).getBytes()},o=null;if(e.getPrivateKey)try{o=e.getPrivateKey(e,e.session.serverCertificate),o=n.pki.privateKeyFromPem(o)}catch(t){e.error(e,{message:"Could not get private key.",cause:t,send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.internal_error}})}if(null===o)return e.error(e,{message:"No private key set.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.internal_error}});try{var u=e.session.sp;u.pre_master_secret=o.decrypt(i.enc_pre_master_secret);var c=e.session.clientHelloVersion;if(c.major!==u.pre_master_secret.charCodeAt(0)||c.minor!==u.pre_master_secret.charCodeAt(1))throw new Error("TLS version rollback attack detected.")}catch(e){u.pre_master_secret=n.random.getBytes(48)}e.expect=S,null!==e.session.clientCertificate&&(e.expect=E),e.process()},f.handleCertificateRequest=function(e,t,r){if(r<3)return e.error(e,{message:"Invalid CertificateRequest. Message too short.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.illegal_parameter}});var n=t.fragment,a={certificate_types:s(n,1),certificate_authorities:s(n,2)};e.session.certificateRequest=a,e.expect=p,e.process()},f.handleCertificateVerify=function(e,t,r){if(r<2)return e.error(e,{message:"Invalid CertificateVerify. Message too short.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.illegal_parameter}});var a=t.fragment;a.read-=4;var i=a.bytes();a.read+=4;var o={signature:s(a,2).getBytes()},u=n.util.createBuffer();u.putBuffer(e.session.md5.digest()),u.putBuffer(e.session.sha1.digest()),u=u.getBytes();try{if(!e.session.clientCertificate.publicKey.verify(u,o.signature,"NONE"))throw new Error("CertificateVerify signature does not match.");e.session.md5.update(i),e.session.sha1.update(i)}catch(t){return e.error(e,{message:"Bad signature in CertificateVerify.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.handshake_failure}})}e.expect=S,e.process()},f.handleServerHelloDone=function(e,t,r){if(r>0)return e.error(e,{message:"Invalid ServerHelloDone message. Invalid length.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.record_overflow}});if(null===e.serverCertificate){var a={message:"No server certificate provided. Not enough security.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.insufficient_security}},i=e.verify(e,a.alert.description,0,[]);if(!0!==i)return(i||0===i)&&("object"!=typeof i||n.util.isArray(i)?"number"==typeof i&&(a.alert.description=i):(i.message&&(a.message=i.message),i.alert&&(a.alert.description=i.alert))),e.error(e,a)}null!==e.session.certificateRequest&&(t=f.createRecord(e,{type:f.ContentType.handshake,data:f.createCertificate(e)}),f.queue(e,t)),t=f.createRecord(e,{type:f.ContentType.handshake,data:f.createClientKeyExchange(e)}),f.queue(e,t),e.expect=m;var o=function(e,t){null!==e.session.certificateRequest&&null!==e.session.clientCertificate&&f.queue(e,f.createRecord(e,{type:f.ContentType.handshake,data:f.createCertificateVerify(e,t)})),f.queue(e,f.createRecord(e,{type:f.ContentType.change_cipher_spec,data:f.createChangeCipherSpec()})),e.state.pending=f.createConnectionState(e),e.state.current.write=e.state.pending.write,f.queue(e,f.createRecord(e,{type:f.ContentType.handshake,data:f.createFinished(e)})),e.expect=g,f.flush(e),e.process()};if(null===e.session.certificateRequest||null===e.session.clientCertificate)return o(e,null);f.getClientSignature(e,o)},f.handleChangeCipherSpec=function(e,t){if(1!==t.fragment.getByte())return e.error(e,{message:"Invalid ChangeCipherSpec message received.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.illegal_parameter}});var r=e.entity===f.ConnectionEnd.client;(e.session.resuming&&r||!e.session.resuming&&!r)&&(e.state.pending=f.createConnectionState(e)),e.state.current.read=e.state.pending.read,(!e.session.resuming&&r||e.session.resuming&&!r)&&(e.state.pending=null),e.expect=r?v:T,e.process()},f.handleFinished=function(e,t,r){var i=t.fragment;i.read-=4;var o=i.bytes();i.read+=4;var u=t.fragment.getBytes();i=n.util.createBuffer(),i.putBuffer(e.session.md5.digest()),i.putBuffer(e.session.sha1.digest());var s=e.entity===f.ConnectionEnd.client,c=s?"server finished":"client finished",l=e.session.sp;if(i=a(l.master_secret,c,i.getBytes(),12),i.getBytes()!==u)return e.error(e,{message:"Invalid verify_data in Finished message.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.decrypt_error}});e.session.md5.update(o),e.session.sha1.update(o),(e.session.resuming&&s||!e.session.resuming&&!s)&&(f.queue(e,f.createRecord(e,{type:f.ContentType.change_cipher_spec,data:f.createChangeCipherSpec()})),e.state.current.write=e.state.pending.write,e.state.pending=null,f.queue(e,f.createRecord(e,{type:f.ContentType.handshake,data:f.createFinished(e)}))),e.expect=s?y:w,e.handshaking=!1,++e.handshakes,e.peerCertificate=s?e.session.serverCertificate:e.session.clientCertificate,f.flush(e),e.isConnected=!0,e.connected(e),e.process()},f.handleAlert=function(e,t){var r,n=t.fragment,a={level:n.getByte(),description:n.getByte()};switch(a.description){case f.Alert.Description.close_notify:r="Connection closed.";break;case f.Alert.Description.unexpected_message:r="Unexpected message.";break;case f.Alert.Description.bad_record_mac:r="Bad record MAC.";break;case f.Alert.Description.decryption_failed:r="Decryption failed.";break;case f.Alert.Description.record_overflow:r="Record overflow.";break;case f.Alert.Description.decompression_failure:r="Decompression failed.";break;case f.Alert.Description.handshake_failure:r="Handshake failure.";break;case f.Alert.Description.bad_certificate:r="Bad certificate.";break;case f.Alert.Description.unsupported_certificate:r="Unsupported certificate.";break;case f.Alert.Description.certificate_revoked:r="Certificate revoked.";break;case f.Alert.Description.certificate_expired:r="Certificate expired.";break;case f.Alert.Description.certificate_unknown:r="Certificate unknown.";break;case f.Alert.Description.illegal_parameter:r="Illegal parameter.";break;case f.Alert.Description.unknown_ca:r="Unknown certificate authority.";break;case f.Alert.Description.access_denied:r="Access denied.";break;case f.Alert.Description.decode_error:r="Decode error.";break;case f.Alert.Description.decrypt_error:r="Decrypt error.";break;case f.Alert.Description.export_restriction:r="Export restriction.";break;case f.Alert.Description.protocol_version:r="Unsupported protocol version.";break;case f.Alert.Description.insufficient_security:r="Insufficient security.";break;case f.Alert.Description.internal_error:r="Internal error.";break;case f.Alert.Description.user_canceled:r="User canceled.";break;case f.Alert.Description.no_renegotiation:r="Renegotiation not supported.";break;default:r="Unknown error."}if(a.description===f.Alert.Description.close_notify)return e.close();e.error(e,{message:r,send:!1,origin:e.entity===f.ConnectionEnd.client?"server":"client",alert:a}),e.process()},f.handleHandshake=function(e,t){var r=t.fragment,a=r.getByte(),i=r.getInt24();if(i>r.length())return e.fragmented=t,t.fragment=n.util.createBuffer(),r.read-=4,e.process();e.fragmented=null,r.read-=4;var o=r.bytes(i+4);r.read+=4,a in M[e.entity][e.expect]?(e.entity!==f.ConnectionEnd.server||e.open||e.fail||(e.handshaking=!0,e.session={version:null,extensions:{server_name:{serverNameList:[]}},cipherSuite:null,compressionMethod:null,serverCertificate:null,clientCertificate:null,md5:n.md.md5.create(),sha1:n.md.sha1.create()}),a!==f.HandshakeType.hello_request&&a!==f.HandshakeType.certificate_verify&&a!==f.HandshakeType.finished&&(e.session.md5.update(o),e.session.sha1.update(o)),M[e.entity][e.expect][a](e,t,i)):f.handleUnexpected(e,t)},f.handleApplicationData=function(e,t){e.data.putBuffer(t.fragment),e.dataReady(e),e.process()},f.handleHeartbeat=function(e,t){var r=t.fragment,a=r.getByte(),i=r.getInt16(),o=r.getBytes(i);if(a===f.HeartbeatMessageType.heartbeat_request){if(e.handshaking||i>o.length)return e.process();f.queue(e,f.createRecord(e,{type:f.ContentType.heartbeat,data:f.createHeartbeat(f.HeartbeatMessageType.heartbeat_response,o)})),f.flush(e)}else if(a===f.HeartbeatMessageType.heartbeat_response){if(o!==e.expectedHeartbeatPayload)return e.process();e.heartbeatReceived&&e.heartbeatReceived(e,n.util.createBuffer(o))}e.process()};var l=1,d=2,h=3,p=4,g=5,v=6,y=7,m=8,b=1,C=2,E=3,S=4,T=5,w=6,I=f.handleUnexpected,A=f.handleChangeCipherSpec,B=f.handleAlert,k=f.handleHandshake,N=f.handleApplicationData,R=f.handleHeartbeat,$=[];$[f.ConnectionEnd.client]=[[I,B,k,I,R],[I,B,k,I,R],[I,B,k,I,R],[I,B,k,I,R],[I,B,k,I,R],[A,B,I,I,R],[I,B,k,I,R],[I,B,k,N,R],[I,B,k,I,R]],$[f.ConnectionEnd.server]=[[I,B,k,I,R],[I,B,k,I,R],[I,B,k,I,R],[I,B,k,I,R],[A,B,I,I,R],[I,B,k,I,R],[I,B,k,N,R],[I,B,k,I,R]];var _=f.handleHelloRequest,L=f.handleServerHello,x=f.handleCertificate,P=f.handleServerKeyExchange,D=f.handleCertificateRequest,U=f.handleServerHelloDone,O=f.handleFinished,M=[];M[f.ConnectionEnd.client]=[[I,I,L,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I],[_,I,I,I,I,I,I,I,I,I,I,x,P,D,U,I,I,I,I,I,I],[_,I,I,I,I,I,I,I,I,I,I,I,P,D,U,I,I,I,I,I,I],[_,I,I,I,I,I,I,I,I,I,I,I,I,D,U,I,I,I,I,I,I],[_,I,I,I,I,I,I,I,I,I,I,I,I,I,U,I,I,I,I,I,I],[_,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I],[_,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,O],[_,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I],[_,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I]];var F=f.handleClientHello,V=f.handleClientKeyExchange,K=f.handleCertificateVerify;M[f.ConnectionEnd.server]=[[I,F,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I],[I,I,I,I,I,I,I,I,I,I,I,x,I,I,I,I,I,I,I,I,I],[I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,V,I,I,I,I],[I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,K,I,I,I,I,I],[I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I],[I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,O],[I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I],[I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I]],f.generateKeys=function(e,t){var r=a,n=t.client_random+t.server_random;e.session.resuming||(t.master_secret=r(t.pre_master_secret,"master secret",n,48).bytes(),t.pre_master_secret=null),n=t.server_random+t.client_random;var i=2*t.mac_key_length+2*t.enc_key_length,o=e.version.major===f.Versions.TLS_1_0.major&&e.version.minor===f.Versions.TLS_1_0.minor;o&&(i+=2*t.fixed_iv_length);var u=r(t.master_secret,"key expansion",n,i),s={client_write_MAC_key:u.getBytes(t.mac_key_length),server_write_MAC_key:u.getBytes(t.mac_key_length),client_write_key:u.getBytes(t.enc_key_length),server_write_key:u.getBytes(t.enc_key_length)};return o&&(s.client_write_IV=u.getBytes(t.fixed_iv_length),s.server_write_IV=u.getBytes(t.fixed_iv_length)),s},f.createConnectionState=function(e){var t=e.entity===f.ConnectionEnd.client,r=function(){var e={sequenceNumber:[0,0],macKey:null,macLength:0,macFunction:null,cipherState:null,cipherFunction:function(e){return!0},compressionState:null,compressFunction:function(e){return!0},updateSequenceNumber:function(){4294967295===e.sequenceNumber[1]?(e.sequenceNumber[1]=0,++e.sequenceNumber[0]):++e.sequenceNumber[1]}};return e},n={read:r(),write:r()};if(n.read.update=function(e,t){return n.read.cipherFunction(t,n.read)?n.read.compressFunction(e,t,n.read)||e.error(e,{message:"Could not decompress record.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.decompression_failure}}):e.error(e,{message:"Could not decrypt record or bad MAC.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.bad_record_mac}}),!e.fail},n.write.update=function(e,t){return n.write.compressFunction(e,t,n.write)?n.write.cipherFunction(t,n.write)||e.error(e,{message:"Could not encrypt record.",send:!1,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.internal_error}}):e.error(e,{message:"Could not compress record.",send:!1,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.internal_error}}),!e.fail},e.session){var a=e.session.sp;switch(e.session.cipherSuite.initSecurityParameters(a),a.keys=f.generateKeys(e,a),n.read.macKey=t?a.keys.server_write_MAC_key:a.keys.client_write_MAC_key,n.write.macKey=t?a.keys.client_write_MAC_key:a.keys.server_write_MAC_key,e.session.cipherSuite.initConnectionState(n,e,a),a.compression_algorithm){case f.CompressionMethod.none:break;case f.CompressionMethod.deflate:n.read.compressFunction=u,n.write.compressFunction=o;break;default:throw new Error("Unsupported compression algorithm.")}}return n},f.createRandom=function(){var e=new Date,t=+e+6e4*e.getTimezoneOffset(),r=n.util.createBuffer();return r.putInt32(t),r.putBytes(n.random.getBytes(28)),r},f.createRecord=function(e,t){return t.data?{type:t.type,version:{major:e.version.major,minor:e.version.minor},length:t.data.length(),fragment:t.data}:null},f.createAlert=function(e,t){var r=n.util.createBuffer();return r.putByte(t.level),r.putByte(t.description),f.createRecord(e,{type:f.ContentType.alert,data:r})},f.createClientHello=function(e){e.session.clientHelloVersion={major:e.version.major,minor:e.version.minor};for(var t=n.util.createBuffer(),r=0;r0&&(p+=2);var g=e.session.id,v=g.length+1+2+4+28+2+i+1+u+p,y=n.util.createBuffer();return y.putByte(f.HandshakeType.client_hello),y.putInt24(v),y.putByte(e.version.major),y.putByte(e.version.minor),y.putBytes(e.session.sp.client_random),c(y,1,n.util.createBuffer(g)),c(y,2,t),c(y,1,o),p>0&&c(y,2,s),y},f.createServerHello=function(e){var t=e.session.id,r=t.length+1+2+4+28+2+1,a=n.util.createBuffer();return a.putByte(f.HandshakeType.server_hello),a.putInt24(r),a.putByte(e.version.major),a.putByte(e.version.minor),a.putBytes(e.session.sp.server_random),c(a,1,n.util.createBuffer(t)),a.putByte(e.session.cipherSuite.id[0]),a.putByte(e.session.cipherSuite.id[1]),a.putByte(e.session.compressionMethod),a},f.createCertificate=function(e){var t=e.entity===f.ConnectionEnd.client,r=null;if(e.getCertificate){var a;a=t?e.session.certificateRequest:e.session.extensions.server_name.serverNameList,r=e.getCertificate(e,a)}var i=n.util.createBuffer();if(null!==r)try{n.util.isArray(r)||(r=[r]);for(var o=null,u=0;uf.MaxFragment;)a.push(f.createRecord(e,{type:t.type,data:n.util.createBuffer(i.slice(0,f.MaxFragment))})),i=i.slice(f.MaxFragment);i.length>0&&a.push(f.createRecord(e,{type:t.type,data:n.util.createBuffer(i)}))}for(var o=0;o0&&(a=r.order[0]),null!==a&&a in r.cache){t=r.cache[a],delete r.cache[a];for(var i in r.order)if(r.order[i]===a){r.order.splice(i,1);break}}return t},r.setSession=function(e,t){if(r.order.length===r.capacity){var a=r.order.shift();delete r.cache[a]}var a=n.util.bytesToHex(e);r.order.push(a),r.cache[a]=t}}return r},f.createConnection=function(e){var t=null;t=e.caStore?n.util.isArray(e.caStore)?n.pki.createCaStore(e.caStore):e.caStore:n.pki.createCaStore();var r=e.cipherSuites||null;if(null===r){r=[];for(var a in f.CipherSuites)r.push(f.CipherSuites[a])}var i=e.server?f.ConnectionEnd.server:f.ConnectionEnd.client,o=e.sessionCache?f.createSessionCache(e.sessionCache):null,u={version:{major:f.Version.major,minor:f.Version.minor},entity:i,sessionId:e.sessionId,caStore:t,sessionCache:o,cipherSuites:r,connected:e.connected,virtualHost:e.virtualHost||null,verifyClient:e.verifyClient||!1,verify:e.verify||function(e,t,r,n){return t},verifyOptions:e.verifyOptions||{},getCertificate:e.getCertificate||null,getPrivateKey:e.getPrivateKey||null,getSignature:e.getSignature||null,input:n.util.createBuffer(),tlsData:n.util.createBuffer(),data:n.util.createBuffer(),tlsDataReady:e.tlsDataReady,dataReady:e.dataReady,heartbeatReceived:e.heartbeatReceived,closed:e.closed,error:function(t,r){r.origin=r.origin||(t.entity===f.ConnectionEnd.client?"client":"server"),r.send&&(f.queue(t,f.createAlert(t,r.alert)),f.flush(t));var n=!1!==r.fatal;n&&(t.fail=!0),e.error(t,r),n&&t.close(!1)},deflate:e.deflate||null,inflate:e.inflate||null};u.reset=function(e){u.version={major:f.Version.major,minor:f.Version.minor},u.record=null,u.session=null,u.peerCertificate=null,u.state={pending:null,current:null},u.expect=(u.entity,f.ConnectionEnd.client,0),u.fragmented=null,u.records=[],u.open=!1,u.handshakes=0,u.handshaking=!1,u.isConnected=!1,u.fail=!(e||void 0===e),u.input.clear(),u.tlsData.clear(),u.data.clear(),u.state.current=f.createConnectionState(u)},u.reset();var s=function(e,t){var r=t.type-f.ContentType.change_cipher_spec,n=$[e.entity][e.expect];r in n?n[r](e,t):f.handleUnexpected(e,t)},c=function(e){var t=0,r=e.input,a=r.length();if(a<5)t=5-a;else{e.record={type:r.getByte(),version:{major:r.getByte(),minor:r.getByte()},length:r.getInt16(),fragment:n.util.createBuffer(),ready:!1};var i=e.record.version.major===e.version.major;i&&e.session&&e.session.version&&(i=e.record.version.minor===e.version.minor),i||e.error(e,{message:"Incompatible TLS version.",send:!0,alert:{level:f.Alert.Level.fatal,description:f.Alert.Description.protocol_version}})}return t},l=function(e){var t=0,r=e.input,n=r.length();if(n0&&(u.sessionCache&&(t=u.sessionCache.getSession(e)),null===t&&(e="")),0===e.length&&u.sessionCache&&null!==(t=u.sessionCache.getSession())&&(e=t.id),u.session={id:e,version:null,cipherSuite:null,compressionMethod:null,serverCertificate:null,certificateRequest:null,clientCertificate:null,sp:{},md5:n.md.md5.create(),sha1:n.md.sha1.create()},t&&(u.version=t.version,u.session.sp=t.sp),u.session.sp.client_random=f.createRandom().getBytes(),u.open=!0,f.queue(u,f.createRecord(u,{type:f.ContentType.handshake,data:f.createClientHello(u)})),f.flush(u)}},u.process=function(e){var t=0;return e&&u.input.putBytes(e),u.fail||(null!==u.record&&u.record.ready&&u.record.fragment.isEmpty()&&(u.record=null),null===u.record&&(t=c(u)),u.fail||null===u.record||u.record.ready||(t=l(u)),!u.fail&&null!==u.record&&u.record.ready&&s(u,u.record)),t},u.prepare=function(e){return f.queue(u,f.createRecord(u,{type:f.ContentType.application_data,data:n.util.createBuffer(e)})),f.flush(u)},u.prepareHeartbeatRequest=function(e,t){return e instanceof n.util.ByteBuffer&&(e=e.bytes()),void 0===t&&(t=e.length),u.expectedHeartbeatPayload=e,f.queue(u,f.createRecord(u,{type:f.ContentType.heartbeat,data:f.createHeartbeat(f.HeartbeatMessageType.heartbeat_request,e,t)})),f.flush(u)},u.close=function(e){if(!u.fail&&u.sessionCache&&u.session){var t={id:u.session.id,version:u.session.version,sp:u.session.sp};t.sp.keys=null,u.sessionCache.setSession(t.id,t)}u.open&&(u.open=!1,u.input.clear(),(u.isConnected||u.handshaking)&&(u.isConnected=u.handshaking=!1,f.queue(u,f.createAlert(u,{level:f.Alert.Level.warning,description:f.Alert.Description.close_notify})),f.flush(u)),u.closed(u)),u.reset(e)},u},e.exports=n.tls=n.tls||{};for(var q in f)"function"!=typeof f[q]&&(n.tls[q]=f[q]);n.tls.prf_tls1=a,n.tls.hmac_sha1=i,n.tls.createSessionCache=f.createSessionCache,n.tls.createConnection=f.createConnection},function(e,t,r){"use strict";var n=function(){var e={};return e.isAvailable=function(){return"function"==typeof Notification},e.requestPermission=function(e){var t=Notification.permission;"default"!=t?e(t):Notification.requestPermission(e)},e.notify=function(t,r,n){e.isAvailable()&&e.requestPermission(function(e){if("granted"==e){var a={};r&&(a.body=r),n&&(a.icon=n);var i=new Notification(t,a);setTimeout(function(){i.close.bind(i)()},4e3)}})},e}();e.exports=n},function(e,t,r){"use strict";var n=function(){var e,t,r={};return r.startWatching=function(r,n){e=r,t=n},r}();e.exports=n},function(e,t,r){"use strict";function n(e,t){for(;e.length");if("boolean"==typeof t)return S(e,t?"True":"False");if("number"==typeof t)return T(e,t+"");if(t instanceof String)return I(e,"'"+E(t,!0)+"'");if("string"==typeof t)return w(e,'"'+E(t,!1)+'"');if("object"==typeof t&&"$"in t){var r=t.$;if("number"==typeof r)return B(e,"");if("#"===r[0]){var n=[];for(var a in t)"$"!==a&&n.push(C(e,t[a]));return"("+n.join(",")+")"}if("Set_elm_builtin"===r)return S(e,"Set")+A(e,".fromList")+" "+C(e,Ba(t));if("RBNode_elm_builtin"===r||"RBEmpty_elm_builtin"===r)return S(e,"Dict")+A(e,".fromList")+" "+C(e,Ia(t));if("Array_elm_builtin"===r)return S(e,"Array")+A(e,".fromList")+" "+C(e,Sa(t));if("::"===r||"[]"===r){var n="[";for(t.b&&(n+=C(e,t.a),t=t.b);t.b;t=t.b)n+=","+C(e,t.a);return n+"]"}var n="";for(var i in t)if("$"!==i){var o=C(e,t[i]),u=o[0],s="{"===u||"("===u||"["===u||"<"===u||'"'===u||o.indexOf(" ")<0;n+=" "+(s?o:"("+o+")")}return S(e,r)+n}if("function"==typeof DataView&&t instanceof DataView)return w(e,"<"+t.byteLength+" bytes>");if("function"==typeof File&&t instanceof File)return B(e,"<"+t.name+">");if("object"==typeof t){var n=[];for(var c in t){var f="_"===c[0]?c.slice(1):c;n.push(A(e,f)+" = "+C(e,t[c]))}return 0===n.length?"{}":"{ "+n.join(", ")+" }"}return B(e,"")}function E(e,t){var r=e.replace(/\\/g,"\\\\").replace(/\n/g,"\\n").replace(/\t/g,"\\t").replace(/\r/g,"\\r").replace(/\v/g,"\\v").replace(/\0/g,"\\0");return t?r.replace(/\'/g,"\\'"):r.replace(/\"/g,'\\"')}function S(e,t){return e?""+t+"":t}function T(e,t){return e?""+t+"":t}function w(e,t){return e?""+t+"":t}function I(e,t){return e?""+t+"":t}function A(e,t){return e?""+t+"":t}function B(e,t){return e?""+t+"":t}function k(e,t,r,n,a){switch(e){case 0:throw new Error('What node should I take over? In JavaScript I need something like:\n\n Elm.Main.init({\n node: document.getElementById("elm-node")\n })\n\nYou need to do this with any Browser.sandbox or Browser.element program.');case 1:throw new Error("Browser.application programs cannot handle URLs like this:\n\n "+document.location.href+"\n\nWhat is the root? The root of your file system? Try looking at this program with `elm reactor` or some other server.");case 2:var i=t;throw new Error("Problem with the flags given to your Elm program on initialization.\n\n"+i);case 3:var o=t;throw new Error("There can only be one port named `"+o+"`, but your program has multiple.");case 4:var o=t,u=r;throw new Error("Trying to send an unexpected type of value through port `"+o+"`:\n"+u);case 5:throw new Error('Trying to use `(==)` on functions.\nThere is no way to know if functions are "the same" in the Elm sense.\nRead more about this at https://package.elm-lang.org/packages/elm/core/latest/Basics#== which describes why it is this way and what the better version will look like.');case 6:var s=t;throw new Error("Your page is loading multiple Elm scripts with a module named "+s+". Maybe a duplicate script is getting loaded accidentally? If not, rename one of them so I know which is which!");case 8:var s=t,c=r,f=n;throw new Error("TODO in module `"+s+"` "+N(c)+"\n\n"+f);case 9:var s=t,c=r,l=n,f=a;throw new Error("TODO in module `"+s+"` from the `case` expression "+N(c)+"\n\nIt received the following value:\n\n "+b(l).replace("\n","\n ")+"\n\nBut the branch that handles it says:\n\n "+f.replace("\n","\n "));case 10:throw new Error("Bug in https://github.com/elm/virtual-dom/issues");case 11:throw new Error("Cannot perform mod 0. Division by zero error.")}}function N(e){return e.start.line===e.end.line?"on line "+e.start.line:"on lines "+e.start.line+" through "+e.end.line}function R(e,t){for(var r,n=[],a=$(e,t,0,n);a&&(r=n.pop());a=$(r.a,r.b,0,n));return a}function $(e,t,r,n){if(r>100)return n.push(L(e,t)),!0;if(e===t)return!0;if("object"!=typeof e||null===e||null===t)return"function"==typeof e&&k(5),!1;"Set_elm_builtin"===e.$&&(e=Ba(e),t=Ba(t)),"RBNode_elm_builtin"!==e.$&&"RBEmpty_elm_builtin"!==e.$||(e=Ia(e),t=Ia(t));for(var a in e)if(!$(e[a],t[a],r+1,n))return!1;return!0}function _(e,t,r){if("object"!=typeof e)return e===t?0:e=t.length)return pe("a LONGER array. Need index "+a+" but only see "+t.length+" entries",t);var n=fe(e.b,t[a]);return Oa(n)?n:fi(f(pi,a,n.a));case 8:if("object"!=typeof t||null===t||de(t))return pe("an OBJECT",t);var i=yr;for(var o in t)if(t.hasOwnProperty(o)){var n=fe(e.b,t[o]);if(!Oa(n))return fi(f(hi,o,n.a));i=O(L(o,n.a),i)}return li($a(i));case 9:for(var u=e.f,s=e.g,c=0;c=0&&a.splice(t,1)}var a=[],i=pn[e].r,o=_e(0);return pn[e].b=o,pn[e].c=n(function(e,t,r){for(;t.b;t=t.b)for(var n=a,u=me(i(t.a)),s=0;s0&>(r,1,n,f));case 4:for(var l=e.j,d=t.j,h=!1,p=e.k;4===p.$;)h=!0,"object"!=typeof l?l=[l,p.j]:l.push(p.j),p=p.k;for(var g=t.k;4===g.$;)h=!0,"object"!=typeof d?d=[d,g.j]:d.push(g.j),g=g.k;return h&&l.length!==d.length?void gt(r,0,n,t):((h?yt(l,d):l===d)||gt(r,2,n,d),void vt(p,g,r,n+1));case 0:return void(e.a!==t.a&>(r,3,n,t.a));case 1:return void mt(e,t,r,n,Ct);case 2:return void mt(e,t,r,n,Et);case 3:if(e.h!==t.h)return void gt(r,0,n,t);var v=bt(e.d,t.d);v&>(r,4,n,v);var y=t.i(e.g,t.g);return void(y&>(r,5,n,y))}}}function yt(e,t){for(var r=0;ru?gt(r,6,n,{v:u,i:o-u}):o0||o.length>0||k)&>(r,8,n,{w:a,x:o,y:k})}function St(e,t,r,n,a,i){var o=e[r];if(!o)return o={c:0,z:n,r:a,s:void 0},i.push({r:a,A:o}),void(e[r]=o);if(1===o.c){i.push({r:a,A:o}),o.c=2;var u=[];return vt(o.z,n,u,o.r),o.r=a,void(o.s.s={w:u,A:o})}St(e,t,r+xn,n,a,i)}function Tt(e,t,r,n,a){var i=e[r];if(!i){var o=gt(t,9,a,void 0);return void(e[r]={c:1,z:n,r:a,s:o})}if(0===i.c){i.c=2;var u=[];return vt(n,i.z,u,a),void gt(t,9,a,{w:u,A:i})}Tt(e,t,r+xn,n,a)}function wt(e,t,r,n){It(e,t,r,0,0,t.b,n)}function It(e,t,r,n,a,i,o){for(var u=r[n],s=u.r;s===a;){var c=u.$;if(1===c)wt(e,t.k,u.s,o);else if(8===c){u.t=e,u.u=o;var f=u.s.w;f.length>0&&It(e,t,f,0,a,i,o)}else if(9===c){u.t=e,u.u=o;var l=u.s;if(l){l.A.s=e;var f=l.w;f.length>0&&It(e,t,f,0,a,i,o)}}else u.t=e,u.u=o;if(n++,!(u=r[n])||(s=u.r)>i)return n}var d=t.$;if(4===d){for(var h=t.k;4===h.$;)h=h.k;return It(e,h,r,n,a+1,i,e.elm_event_node_ref)}for(var p=t.e,g=e.childNodes,v=0;vi))return n;a=m}return n}function At(e,t,r,n){return 0===r.length?e:(wt(e,t,r,n),Bt(e,r))}function Bt(e,t){for(var r=0;r0){var o=a.substring(0,i),u=a.substring(i+2);t=l(bp,o,function(e){return si(Cp(e)?u+", "+e.a:u)},t)}}return t}function Vt(e,t,r){t.upload.addEventListener("progress",function(n){t.c||Ae(f(Sp,e,L(r,kp({sent:n.loaded,size:n.total}))))}),t.addEventListener("progress",function(n){t.c||Ae(f(Sp,e,L(r,Bp({received:n.loaded,size:n.lengthComputable?si(n.total):ci}))))})}function Kt(e,t){function r(){n=1===n?0:(na(r),t(e),1)}t(e);var n=0;return function(a,i){e=a,i?(t(e),2===n&&(n=1)):(0===n&&na(r),n=2)}}function Ht(e){var t=e.onUrlChange,n=e.onUrlRequest,a=function(){a.a(t(jt()))};return ra({setup:function(e){return a.a=e,ua.addEventListener("popstate",a),ua.navigator.userAgent.indexOf("Trident")<0||ua.addEventListener("hashchange",a),r(function(t,r){if(!r.ctrlKey&&!r.metaKey&&!r.shiftKey&&r.button<1&&!t.target&&!t.hasAttribute("download")){r.preventDefault();var a=t.href,i=jt(),o=nv(a).a;e(n(o&&i.protocol===o.protocol&&i.host===o.host&&i.port_.a===o.port_.a?qg(o):jg(a)))}})},init:function(t){return l(e.init,t,jt(),a)},view:e.view,update:e.update,subscriptions:e.subscriptions})}function jt(){return nv(Cn.location.href).a||k(1)}function qt(e,t){return we(function(r){na(function(){var n=document.getElementById(e);r(n?Se(t(n)):Te(Gg(e)))})})}function Gt(e){return we(function(t){na(function(){t(Se(e()))})})}function zt(){return{scene:Yt(),viewport:{x:ua.pageXOffset,y:ua.pageYOffset,width:oa.documentElement.clientWidth,height:oa.documentElement.clientHeight}}}function Yt(){var e=oa.body,t=oa.documentElement;return{width:Math.max(e.scrollWidth,e.offsetWidth,t.scrollWidth,t.offsetWidth,t.clientWidth),height:Math.max(e.scrollHeight,e.offsetHeight,t.scrollHeight,t.offsetHeight,t.clientHeight)}}function Wt(e){return qt(e,function(e){var t=e.getBoundingClientRect(),r=ua.pageXOffset,n=ua.pageYOffset;return{scene:Yt(),viewport:{x:r,y:n,width:oa.documentElement.clientWidth,height:oa.documentElement.clientHeight},element:{x:r+t.left,y:n+t.top,width:t.width,height:t.height}}})}function Jt(e){return f(Yg,zg,we(function(t){try{ua.location=e}catch(e){Cn.location.reload(!1)}}))}function Qt(e){try{return si(decodeURIComponent(e))}catch(e){return ci}}function Xt(){return f(zo,xa(ac),f(zo,Ms,nc))}console.warn("Compiled in DEV mode. Follow the advice at https://elm-lang.org/0.19.0/optimize for better performance and smaller assets.");var Zt,er,tr=[],rr=n(function(e,t,r){for(var n=new Array(e),a=0;a=0;n--)t=f(e,r[n],t);return t}),cr=(r(function(e,t){for(var r=t.length,n=new Array(r),a=0;ar.length&&(a=r.length);for(var i=n+a,o=new Array(i),u=0;u0}),r(function(e,t){return _(e,t)>=0}),r(function(e,t){var r=_(e,t);return r<0?ba:r?Ta:ma})),gr={$:"#0"},vr=r(U),yr={$:"[]"},mr=r(O),br=n(function(e,t,r){for(var n=[];t.b&&r.b;t=t.b,r=r.b)n.push(f(e,t.a,r.a));return M(n)}),Cr=(a(function(e,t,r,n){for(var a=[];t.b&&r.b&&n.b;t=t.b,r=r.b,n=n.b)a.push(l(e,t.a,r.a,n.a));return M(a)}),i(function(e,t,r,n,a){for(var i=[];t.b&&r.b&&n.b&&a.b;t=t.b,r=r.b,n=n.b,a=a.b)i.push(d(e,t.a,r.a,n.a,a.a));return M(i)}),o(function(e,t,r,n,a,i){for(var o=[];t.b&&r.b&&n.b&&a.b&&i.b;t=t.b,r=r.b,n=n.b,a=a.b,i=i.b)o.push(h(e,t.a,r.a,n.a,a.a,i.a));return M(o)}),r(function(e,t){return M(F(t).sort(function(t,r){return _(e(t),e(r))}))})),Er=r(function(e,t){return M(F(t).sort(function(t,r){var n=f(e,t,r);return n===ma?0:n===ba?-1:1}))}),Sr=r(function(e,t){return e+t}),Tr=r(function(e,t){return e-t}),wr=r(function(e,t){return e*t}),Ir=(r(function(e,t){return e/t}),r(function(e,t){return e/t|0}),r(Math.pow)),Ar=(r(function(e,t){return t%e}),r(function(e,t){var r=t%e;return 0===e?k(11):r>0&&e<0||r<0&&e>0?r+e:r})),Br=Math.PI,kr=(Math.E,Math.cos),Nr=Math.sin,Rr=(Math.tan,Math.acos,Math.asin,Math.atan,r(Math.atan2),Math.ceil),$r=Math.floor,_r=Math.round,Lr=(Math.sqrt,Math.log),xr=(isNaN,r(function(e,t){return e&&t}),r(function(e,t){return e||t}),r(function(e,t){return e!==t}),r(function(e,t){return e+t})),Pr=r(function(e,t){return e+t}),Dr=(r(function(e,t){for(var r=t.length,n=new Array(r),a=0;a-1}),Hr=r(function(e,t){return 0===t.indexOf(e)}),jr=r(function(e,t){return t.length>=e.length&&t.lastIndexOf(e)===t.length-e.length}),qr=r(function(e,t){var r=e.length;if(r<1)return yr;for(var n=0,a=[];(n=t.indexOf(e,n))>-1;)a.push(n),n+=r;return M(a)}),Gr=ie(function(e){return"number"!=typeof e?pe("an INT",e):-2147483647>e}),r(function(e,t){return t>>>e}),r(function(e,t){return we(function(r){r(Se(1===new Uint8Array(new Uint32Array([1]))[0]?e:t))})}),n(function(e,t,r){return e.setInt8(t,r),t+1})),On=a(function(e,t,r,n){return e.setInt16(t,r,n),t+2}),Mn=a(function(e,t,r,n){return e.setInt32(t,r,n),t+4}),Fn=n(function(e,t,r){return e.setUint8(t,r),t+1}),Vn=a(function(e,t,r,n){return e.setUint16(t,r,n),t+2}),Kn=a(function(e,t,r,n){return e.setUint32(t,r,n),t+4}),Hn=a(function(e,t,r,n){return e.setFloat32(t,r,n),t+4}),jn=a(function(e,t,r,n){return e.setFloat64(t,r,n),t+8}),qn=n(function(e,t,r){for(var n=0,a=r.byteLength,i=a-4;n<=i;n+=4)e.setUint32(t+n,r.getUint32(n));for(;n>>6&31)<<8|63&a),2):a<55296||56319>>12&15)<<8|a>>>6&63),e.setUint8(t+2,128|63&a),3):(a=1024*(a-55296)+r.charCodeAt(++n)-56320+65536,e.setUint32(t,4034953344|(a>>>18&7)<<24|(a>>>12&63)<<16|(a>>>6&63)<<8|63&a),4)}return t}),zn=r(function(e,t){try{return si(f(e,t,0).b)}catch(e){return ci}}),Yn=(r(function(e,t){return L(t+1,e.getInt8(t))}),n(function(e,t,r){return L(r+2,t.getInt16(r,e))}),n(function(e,t,r){return L(r+4,t.getInt32(r,e))}),r(function(e,t){return L(t+1,e.getUint8(t))})),Wn=(n(function(e,t,r){return L(r+2,t.getUint16(r,e))}),n(function(e,t,r){return L(r+4,t.getUint32(r,e))}),n(function(e,t,r){return L(r+4,t.getFloat32(r,e))}),n(function(e,t,r){return L(r+8,t.getFloat64(r,e))}),n(function(e,t,r){return L(r+e,new DataView(t.buffer,t.byteOffset+r,e))})),Jn=(n(function(e,t,r){for(var n="",a=r+e;r0;){var l=n[c];f[--c]=l?si(l):ci}a.push(d(ph,n[0],n.index,i,M(f))),s=t.lastIndex}return t.lastIndex=u,M(a)}),a(function(e,t,r,n){function a(t){if(i++>=e)return t;for(var n=arguments.length-3,a=new Array(n);n>0;){var o=arguments[n];a[--n]=o?si(o):ci}return r(d(ph,t,arguments[arguments.length-2],i,M(a)))}var i=0;return n.replace(t,a)}),n(function(e,t,r){for(var n=r,a=[],i=t.lastIndex,o=t.lastIndex;e--;){var u=t.exec(n);if(!u)break;a.push(n.slice(i,u.index)),i=t.lastIndex}return a.push(n.slice(i)),t.lastIndex=o,M(a)}),n(function(e,t,r){return we(function(n){function a(e){n(t(r.expect.a(e)))}var i=new XMLHttpRequest;i.addEventListener("error",function(){a(Ap)}),i.addEventListener("timeout",function(){a(Np)}),i.addEventListener("load",function(){a(Ot(r.expect.b,i))}),Cp(r.tracker)&&Vt(e,i,r.tracker.a);try{i.open(r.method,r.url,!0)}catch(e){return a(wp(r.url))}return Ut(i,r),r.body.a&&i.setRequestHeader("Content-Type",r.body.a),i.send(r.body.b),function(){i.c=!0,i.abort()}})})),ea=n(function(e,t,r){return{$:0,d:e,b:t,a:r}}),ta=(r(function(e,t){return{$:0,d:t.d,b:t.b,a:function(r){return e(t.a(r))}}}),r(function(e,t){return{$:0,a:e,b:t}})),ra=(r(function(e,t){return new Blob([t],{type:e})}),a(function(e,t,r,n){return Le(t,n,e.init,e.update,e.subscriptions,function(t,r){var a=e.view,i=n&&n.node?n.node:k(0),o=_t(i);return Kt(r,function(e){var r=a(e),n=pt(o,r);i=At(i,o,n,t),o=r})})}),a(function(e,t,r,n){return Le(t,n,e.init,e.update,e.subscriptions,function(t,r){var n=e.setup&&e.setup(t),a=e.view,i=Cn.title,o=Cn.body,u=_t(o);return Kt(r,function(e){Zt=n;var r=a(e),s=Sn("body")(yr)(r.body),c=pt(u,s);o=At(o,u,c,t),u=s,Zt=0,i!==r.title&&(Cn.title=i=r.title)})})})),na=("undefined"!=typeof cancelAnimationFrame&&cancelAnimationFrame,"undefined"!=typeof requestAnimationFrame?requestAnimationFrame:function(e){return setTimeout(e,1e3/60)}),aa=(r(function(e,t){return f(Yg,zg,we(function(){t&&history.go(t),e()}))}),r(function(e,t){return f(Yg,zg,we(function(){history.pushState({},"",t),e()}))})),ia=(r(function(e,t){return f(Yg,zg,we(function(){history.replaceState({},"",t),e()}))}),{addEventListener:function(){},removeEventListener:function(){}}),oa="undefined"!=typeof document?document:ia,ua="undefined"!=typeof window?window:ia,sa=(n(function(e,t,r){return Be(we(function(n){function a(e){Ae(r(e))}return e.addEventListener(t,a,er&&{passive:!0}),function(){e.removeEventListener(t,a)}}))}),r(function(e,t){var r=fe(e,t);return Oa(r)?si(r.a):ci}),r(function(e,t){return qt(t,function(t){return t[e](),gr})}),r(function(e,t){return Gt(function(){return ua.scroll(e,t),gr})})),ca=(n(function(e,t,r){return qt(e,function(e){return e.scrollLeft=t,e.scrollTop=r,gr})}),r(function(e,t){return we(function(r){var n=setInterval(function(){Ae(t)},e);return function(){clearInterval(n)}})})),fa=n(function(e,t,r){return{$:"BrowserNotification",a:e,b:t,c:r}}),la=function(e){return{$:"GTag",a:e}},da=function(e){return{$:"GotoRoute",a:e}},ha={$:"RequestBrowserNotificationPermission"},pa=function(e){return{$:"UserNotice",a:e}},ga={$:"Web3Connect"},va=a(function(e,t,r,n){return{align:r,label:n,mainParagraphs:t,noticeType:e}}),ya=r(function(e,t){return t(e)}),ma={$:"EQ"},ba={$:"LT"},Ca=sr,Ea=n(function(e,t,n){var a=n.c,i=n.d,o=r(function(t,r){if("SubTree"===t.$){var n=t.a;return l(Ca,o,r,n)}var a=t.a;return l(Ca,e,r,a)});return l(Ca,o,l(Ca,e,t,i),a)}),Sa=function(e){return l(Ea,ka,yr,e)},Ta={$:"GT"},wa=n(function(e,t,r){for(;;){if("RBEmpty_elm_builtin"===r.$)return t;var n=r.b,a=r.c,i=r.d,o=r.e,u=e,s=l(e,n,a,l(wa,e,t,o)),c=i;e=u,t=s,r=c}}),Ia=function(e){return l(wa,n(function(e,t,r){return f(ka,L(e,t),r)}),yr,e)},Aa=function(e){return l(wa,n(function(e,t,r){return f(ka,e,r)}),yr,e)},Ba=function(e){var t=e.a;return Aa(t)},ka=mr,Na=Sr,Ra=n(function(e,t,r){for(;;){if(!r.b)return t;var n=r.a,a=r.b,i=e,o=f(e,n,t),u=a;e=i,t=o,r=u}}),$a=function(e){return l(Ra,ka,yr,e)},_a=a(function(e,t,r,n){if(n.b){var a=n.a,i=n.b;if(i.b){var o=i.a,u=i.b;if(u.b){var s=u.a,c=u.b;if(c.b){var h=c.a,p=c.b;return f(e,a,f(e,o,f(e,s,f(e,h,r>500?l(Ra,e,t,$a(p)):d(_a,e,t,r+1,p)))))}return f(e,a,f(e,o,f(e,s,t)))}return f(e,a,f(e,o,t))}return f(e,a,t)}return t}),La=n(function(e,t,r){return d(_a,e,t,0,r)}),xa=r(function(e,t){return l(La,r(function(t,r){return f(ka,e(t),r)}),yr,t)}),Pa=r(function(e,t){return e(t)}),Da=n(function(e,t,r){return e(t(r))}),Ua=function(e){return e},Oa=function(e){return"Ok"===e.$},Ma=a(function(e,t,r,n){return{$:"Array_elm_builtin",a:e,b:t,c:r,d:n}}),Fa=Rr,Va=r(function(e,t){return Lr(t)/Lr(e)}),Ka=V,Ha=Fa(f(Va,2,32)),ja=tr,qa=d(Ma,0,Ha,ja,ja),Ga=function(e){return{$:"Leaf",a:e}},za=function(e){return{$:"SubTree",a:e}},Ya=nr,Wa=r(function(e,t){for(;;){var r=f(Ya,32,e),n=r.a,a=r.b,i=f(ka,za(n),t);if(!a.b)return $a(i);var o=a,u=i;e=o,t=u}}),Ja=dr,Qa=function(e){return e.a},Xa=r(function(e,t){for(;;){var r=Fa(t/32);if(1===r)return f(Ya,32,e).a;var n=f(Wa,e,yr),a=r;e=n,t=a}}),Za=$r,ei=r(function(e,t){return _(e,t)>0?e:t}),ti=wr,ri=Tr,ni=m,ai=r(function(e,t){if(t.nodeListSize){var r=32*t.nodeListSize,n=Za(f(Va,32,r-1)),a=e?$a(t.nodeList):t.nodeList,i=f(Xa,a,t.nodeListSize);return d(Ma,ni(t.tail)+r,f(ei,5,n*Ha),i,t.tail)}return d(Ma,ni(t.tail),Ha,ja,t.tail)}),ii=rr,oi=i(function(e,t,r,n,a){for(;;){if(t<0)return f(ai,!1,{nodeList:n,nodeListSize:r/32|0,tail:a});var i=Ga(l(ii,32,t,e)),o=e,u=t-32,s=r,c=f(ka,i,n),d=a;e=o,t=u,r=s,n=c,a=d}}),ui=r(function(e,t){if(e<=0)return qa;var r=e%32,n=l(ii,r,e-r,t);return h(oi,t,e-r-32,e,yr,n)}),si=function(e){return{$:"Just",a:e}},ci={$:"Nothing"},fi=function(e){return{$:"Err",a:e}},li=function(e){return{$:"Ok",a:e}},di=r(function(e,t){return{$:"Failure",a:e,b:t}}),hi=r(function(e,t){return{$:"Field",a:e,b:t}}),pi=r(function(e,t){return{$:"Index",a:e,b:t}}),gi=function(e){return{$:"OneOf",a:e}},vi=vr,yi=H,mi=function(e){var t=yi(e);return 97<=t&&t<=122},bi=function(e){var t=yi(e);return t<=90&&65<=t},Ci=function(e){return mi(e)||bi(e)},Ei=function(e){var t=yi(e);return t<=57&&48<=t},Si=function(e){return mi(e)||bi(e)||Ei(e)},Ti=function(e){return l(Ra,r(function(e,t){return t+1}),0,e)},wi=br,Ii=n(function(e,t,r){for(;;){if(!(_(e,t)<1))return r;var n=e,a=t-1,i=f(ka,t,r);e=n,t=a,r=i}}),Ai=r(function(e,t){return l(Ii,e,t,yr)}),Bi=r(function(e,t){return l(wi,e,f(Ai,0,Ti(t)-1),t)}),ki=Vr,Ni=X,Ri=r(function(e,t){return f(Mr,e,F(t))}),$i=G,_i=r(function(e,t){return M(f(Or,e,t))}),Li=function(e){return f(Ri,"\n ",f(_i,"\n",e))},xi=an,Pi=r(function(e,t){return"\n\n("+Ni(e+1)+") "+Li(Di(t))}),Di=function(e){return f(Ui,e,yr)},Ui=r(function(e,t){e:for(;;)switch(e.$){case"Field":var r=e.a,n=e.b,a=function(){var e=$i(r);if("Nothing"===e.$)return!1;var t=e.a,n=t.a,a=t.b;return Ci(n)&&f(ki,Si,a)}(),i=a?"."+r:"['"+r+"']",o=n,u=f(ka,i,t);e=o,t=u;continue e;case"Index":var s=e.a,n=e.b,c="["+Ni(s)+"]",o=n,u=f(ka,c,t);e=o,t=u;continue e;case"OneOf":var l=e.a;if(l.b){if(l.b.b){var d=function(){return t.b?"The Json.Decode.oneOf at json"+f(Ri,"",$a(t)):"Json.Decode.oneOf"}(),h=d+" failed in the following "+Ni(Ti(l))+" ways:";return f(Ri,"\n\n",f(ka,h,f(Bi,Pi,l)))}var n=l.a,o=n,u=t;e=o,t=u;continue e}return"Ran into a Json.Decode.oneOf with no possibilities"+function(){return t.b?" at json"+f(Ri,"",$a(t)):"!"}();default:var p=e.a,g=e.b,h=function(){return t.b?"Problem with the value at json"+f(Ri,"",$a(t))+":\n\n ":"Problem with the given value:\n\n"}();return h+(Li(f(xi,4,g))+"\n\n")+p}}),Oi=Zr,Mi=en,Fi=ne,Vi=function(e){switch(e.$){case"Normal":return 0;case"MayStopPropagation":return 1;case"MayPreventDefault":return 2;default:return 3}},Ki=In,Hi={$:"Empty"},ji=function(e){return{$:"Styled",a:e}},qi=function(e){return{$:"Text",a:e}},Gi=function(e){return{$:"Unstyled",a:e}},zi=r(function(e,t){switch(t.$){case"Styled":var n=t.a;return ji({html:r(function(t,r){return f(Ki,e,f(n.html,t,r))}),styles:n.styles});case"Unstyled":var a=t.a;return Gi(f(Da,Ki(e),a));case"Text":var i=t.a;return qi(i);default:return Hi}}),Yi=zi,Wi=r(function(e,t){return d(va,t.noticeType,f(xa,xa(Yi(e)),t.mainParagraphs),t.align,t.label)}),Ji=r(function(e,t){switch(t.$){case"UserNotice":var r=t.a;return pa(f(Wi,e,r));case"Web3Connect":return ga;case"GotoRoute":var n=t.a;return da(n);case"GTag":var a=t.a;return la(a);case"BrowserNotification":var i=t.a,o=t.b,u=t.c;return l(fa,i,o,u);default:return ha}}),Qi=r(function(e,t){return f(xa,Ji(e),t)}),Xi={$:"EthDai"},Zi=function(e){return{$:"Native",a:e}},eo=function(e){return{$:"Token",a:e}},to={$:"XDai"},ro=M([eo(Xi),Zi(to)]),no=function(e){var t=e.a;e.b,e.c;return t},ao=function(e){var t=(e.a,e.b);e.c;return t},io=function(e){e.a,e.b;return e.c},oo=r(function(e,t){return t.b?l(La,ka,t,e):e}),uo=r(function(e,t){return D(t,{userNotices:f(oo,t.userNotices,M([e]))})}),so=r(function(e,t){return l(Ra,uo,t,e)}),co=Ua,fo={$:"Buyer"},lo={$:"Seller"},ho=r(function(e,t){return{options:t,type_:e}}),po={$:"OfferType"},go=n(function(e,t,r){return{checked:t,label:e,testTrade:r}}),vo=r(function(e,t){return f(ho,po,M([l(go,"Buying",e,function(e){return R(e.parameters.initiatorRole,fo)}),l(go,"Selling",t,function(e){return R(e.parameters.initiatorRole,lo)})]))}),yo={$:"Closed"},mo={$:"Committed"},bo={$:"Judgment"},Co={$:"Open"},Eo={$:"Phase"},So=a(function(e,t,r,n){return f(ho,Eo,M([l(go,"Open",e,function(e){return R(e.state.phase,Co)}),l(go,"Committed",t,function(e){return R(e.state.phase,mo)}),l(go,"Judgment",r,function(e){return R(e.state.phase,bo)}),l(go,"Closed",n,function(e){return R(e.state.phase,yo)})]))}),To={$:"Initiator"},wo={$:"Responder"},Io=r(function(e,t){if("Just"===t.$){return e(t.a)}return ci}),Ao=r(function(e,t){return R(t,e.parameters.initiatorAddress)?si(To):f(Io,function(e){return R(t,e)?si(wo):ci},e.state.responder)}),Bo=r(function(e,t){if("Just"===t.$){var r=t.a;return si(e(r))}return ci}),ko=r(function(e,t){return f(Bo,function(t){var r=L(t,e.parameters.initiatorRole);if("Initiator"===r.a.$){if("Seller"===r.b.$){r.a,r.b;return lo}r.a,r.b;return fo}if("Seller"===r.b.$){r.a,r.b;return fo}r.a,r.b;return lo},f(Ao,e,t))}),No={$:"Role"},Ro=n(function(e,t,r){return f(ho,No,M([l(go,"Buyer",t,function(t){return R(f(ko,t,e),si(fo))}),l(go,"Seller",r,function(t){return R(f(ko,t,e),si(lo))})]))}),$o=function(e){return{orderBy:e}},_o=$o,Lo={$:"Ascending"},xo={$:"Phase"},Po=Oe,Do=Po(yr),Uo=r(function(e,t){return L({agentAddress:t,filters:co(M([d(So,!0,!0,!0,!1),f(vo,!0,!0),l(Ro,t,!0,!0)])),tradeTable:_o(L(xo,Lo)),wallet:e},Do)}),Oo=a(function(e,t,r,n){return{appCmds:n,chainCmd:r,cmd:t,model:e}}),Mo={$:"None"},Fo=Mo,Vo=function(e){return d(Oo,e,Do,Fo,yr)},Ko=function(e){return{$:"TradeTableMsg",a:e}},Ho=function(e){return d(Oo,e,Do,Fo,yr)},jo=r(function(e,t){return{$:"CustomSend",a:e,b:t}}),qo=r(function(e,t){return f(jo,e,t)}),Go=n(function(e,t,r){return{onBroadcast:t,onMined:r,onSign:e}}),zo=n(function(e,t,r){return t(e(r))}),Yo=r(function(e,t){if("None"===t.$)return Mo;var r=t.a,n=t.b,a=l(Go,f(Bo,Da(e),r.onSign),f(Bo,Da(e),r.onBroadcast),f(Bo,function(t){var r=t.a,n=t.b;return L(f(zo,r,e),f(Bo,function(t){return{confirmations:t.confirmations,toMsg:f(zo,t.toMsg,e)}},n))},r.onMined));return f(jo,a,n)}),Wo=function(e){return{$:"AbiDecoder",a:e}},Jo=r(function(e,t){return{$:"Tape",a:e,b:t}}),Qo=z,Xo=Fr,Zo=r(function(e,t){return e<1?t:l(Xo,e,Qo(t),t)}),eu=Zo(64),tu=n(function(e,t,r){return L(f(Jo,e,eu(t)),r)}),ru=r(function(e,t){return e<1?"":l(Xo,0,e,t)}),nu=ru(64),au=r(function(e,t){if("Ok"===t.$){var r=t.a;return li(e(r))}var n=t.a;return fi(n)}),iu=function(e){return-e},ou=r(function(e,t){return e<1?"":l(Xo,-e,Qo(t),t)}),uu=function(){var e=function(e){if(!f(ki,Ja(P("0")),f(ru,63,e)))return fi("Boolean decode error. "+e+" is not 1 or 0.");switch(f(ou,1,e)){case"0":return li(!1);case"1":return li(!0);default:return fi("Boolean decode error. "+e+" is not 1 or 0.")}};return Wo(function(t){var r=t.a,n=t.b;return f(au,f(tu,r,n),e(nu(n)))})}(),su=Hr,cu=function(e){return f(su,"0x",e)||f(su,"0X",e)?f(Zo,2,e):e},fu=function(e){return e.b},lu=r(function(e,t){var r=e.a;return f(au,fu,r(function(e){return f(Jo,e,e)}(cu(t))))}),du=Xr,hu=ae,pu=Wr,gu=function(e){return f(du,function(t){var r=e(t);if("Ok"===r.$){var n=r.a;return Fi(n)}var a=r.a;return hu(a)},pu)},vu=f(zo,lu,gu),yu=function(e){return{$:"Magnitude",a:e}},mu=function(e){return{$:"Pos",a:e}},bu=r(function(e,t){return{$:"BigIntNotNormalised",a:e,b:t}}),Cu=function(e){return{$:"MagnitudeNotNormalised",a:e}},Eu=function(e){e:for(;;){if(e.b){if(e.b.b){var t=e.b,r=t;e=r;continue e}var n=e.a;return si(n)}return ci}},Su=function(e){var t=Eu(e);return"Nothing"!==t.$&&t.a<0},Tu=function(e){return{$:"Neg",a:e}},wu={$:"Zer"},Iu=function(e){return!e.b},Au=r(function(e,t){var r=t.a;if(Iu(r))return wu;switch(e.$){case"Zero":return wu;case"Positive":return mu(t);default:return Tu(t)}}),Bu=r(function(e,t){return f(bu,e,Cu(t))}),ku=function(e){return f(La,r(function(t,r){return e(t)&&Iu(r)?yr:f(ka,t,r)}),yr)}(Ja(0)),Nu=Ir,Ru=-1+f(Nu,10,7),$u=Ru+1,_u=r(function(e,t){var r=t.a,n=t.b;return L(e(r),n)}),Lu=function(e){return e<0?f(_u,Na(-1),Lu(e+$u)):L(e/$u|0,e%$u)},xu=r(function(e,t){for(;;){if(t.b){var r=t.a,n=t.b,a=Lu(r+e),i=a.a,o=a.b;return f(ka,o,f(xu,i,n))}{if(!(_(e,$u)>0))return M([e]);var u=M([e]);e=0,t=u}}}),Pu=function(e){var t=e.a;return yu(ku(f(xu,0,t)))},Du=xa(iu),Uu={$:"Negative"},Ou={$:"Positive"},Mu={$:"Zero"},Fu=function(e){switch(e.$){case"Positive":return Uu;case"Negative":return Ou;default:return Mu}},Vu=function(e){for(;;){var t=e.a,r=e.b,n=Pu(r),a=n.a;if(!Su(a))return f(Au,t,yu(a));e=f(Bu,Fu(t),Du(a))}},Ku=pr,Hu=function(e){switch(f(Ku,e,0).$){case"LT":return Uu;case"GT":return Ou;default:return Mu}},ju=function(e){return e<0?-e:e},qu=function(e){return Vu(f(bu,Hu(e),Cu(M([ju(e)]))))},Gu=function(e){e:for(;;)switch(e.$){case"Zer":return 0;case"Pos":if(e.a.a.b){if(e.a.a.b.b){if(e.a.a.b.b.b)break e;var t=e.a.a,r=t.a,n=t.b,a=n.a;return a*f(Nu,10,7)+r}var i=e.a.a,r=i.a;return r}break e;default:break e}return 42},zu=function(e){switch(e.$){case"Zer":return wu;case"Neg":var t=e.a;return mu(t);default:return e}},Yu=function(e){return{$:"MagnitudePair",a:e}},Wu=r(function(e,t){var r=L(e,t);if(r.a.b){if(r.b.b){var n=r.a,a=n.a,i=n.b,o=r.b,u=o.a,s=o.b;return f(ka,L(a,u),f(Wu,i,s))}var c=r.a,a=c.a,i=c.b;return f(ka,L(a,0),f(Wu,i,yr))}if(r.b.b){var l=r.b,u=l.a,s=l.b;return f(ka,L(0,u),f(Wu,yr,s))}return yr}),Ju=r(function(e,t){var r=e.a,n=t.a;return Yu(f(Wu,r,n))}),Qu=function(e){switch(e.$){case"Zer":return f(Bu,Mu,yr);case"Neg":var t=e.a.a;return f(Bu,Ou,Du(t));default:var t=e.a.a;return f(Bu,Ou,t)}},Xu=r(function(e,t){var r=Qu(t),n=r.b,a=Qu(e),i=a.b,o=f(Ju,i,n),u=o.a,s=f(xa,function(e){return e.a+e.b},u);return Vu(f(bu,Ou,Cu(s)))}),Zu=a(function(e,t,r,n){e:for(;;){var a=L(r,n);if(a.a.b){if(a.b.b){var i=a.a,o=i.a,u=i.b,s=a.b,c=s.a,l=s.b;if(R(o,c)){var d=e,h=t,p=u,g=l;e=d,t=h,r=p,n=g;continue e}var d=o,h=c,p=u,g=l;e=d,t=h,r=p,n=g;continue e}return Ta}return a.b.b?ba:f(Ku,e,t)}}),es=function(e){switch(e.$){case"LT":return Ta;case"EQ":return ma;default:return ba}},ts=r(function(e,t){var r=L(e,t);switch(r.a.$){case"Pos":if("Pos"===r.b.$){var n=r.a.a.a,a=r.b.a.a;return d(Zu,0,0,n,a)}return Ta;case"Neg":if("Neg"===r.b.$){var n=r.a.a.a,a=r.b.a.a;return es(d(Zu,0,0,n,a))}return ba;default:switch(r.b.$){case"Pos":r.a;return ba;case"Zer":r.a,r.b;return ma;default:r.a;return Ta}}}),rs=r(function(e,t){return R(f(ts,e,t),Ta)}),ns=K,as=r(function(e,t){return!f(rs,e,t)}),is=function(e){switch(e.$){case"Zer":return yu(yr);case"Pos":default:var t=e.a;return t}},os=r(function(e,t){var r=e.a;return Pu(Cu(f(xa,ti(t),r)))}),us=r(function(e,t){var r=e.a,n=t.a;if(r.b){if(r.b.b){var a=r.a,i=r.b,o=f(os,yu(n),a),u=f(us,yu(i),yu(n)),s=u.a,c=f(Xu,f(Au,Ou,o),f(Au,Ou,yu(f(ka,0,s))));return is(c)}var a=r.a;return f(os,yu(n),a)}return yu(yr)}),ss=function(e){switch(e.$){case"Zer":return Mu;case"Pos":return Ou;default:return Uu}},cs=r(function(e,t){return R(e,Mu)||R(t,Mu)?Mu:R(e,t)?Ou:Uu}),fs=r(function(e,t){return f(Au,f(cs,ss(e),ss(t)),f(us,is(e),is(t)))}),ls=function(e){switch(e.$){case"Zer":return wu;case"Pos":var t=e.a;return Tu(t);default:var t=e.a;return mu(t)}},ds=r(function(e,t){return f(Xu,e,ls(t))}),hs=qu(0),ps=a(function(e,t,r,n){if(e){var a=qu(e),i=f(fs,f(fs,a,n),t),o=f(as,i,r)?L(f(fs,a,t),f(ds,r,i)):L(hs,r),u=o.a,s=o.b,c=d(ps,e/2|0,t,s,n),l=c.a,h=c.b;return L(f(Xu,u,l),h)}return L(hs,r)}),gs=Fa(f(Va,2,Ru)),vs=n(function(e,t,r){return d(ps,f(Nu,2,gs),e,t,r)}),ys=qu(1),ms=r(function(e,t){return e}),bs=n(function(e,t,r){return l(Ra,ms(e),t,f(Ai,1,r))}),Cs=function(e){return l(bs,fs(qu($u)),ys,e)},Es=n(function(e,t,r){if(e){var n=l(vs,Cs(e),t,r),a=n.a,i=n.b,o=l(Es,e-1,i,r),u=o.a,s=o.b;return L(f(Xu,a,u),s)}return l(vs,Cs(e),t,r)}),Ss=function(e){switch(e.$){case"Zer":return yr;case"Pos":default:var t=e.a.a;return t}},Ts=r(function(e,t){if(R(t,hs))return ci;var r=Ti(Ss(e))-Ti(Ss(t))+1,n=l(Es,f(ei,0,r),zu(e),zu(t)),a=n.a,i=n.b;return si(L(f(Au,f(cs,ss(e),ss(t)),is(a)),f(Au,ss(e),is(i))))}),ws=f(fs,qu(2),qu(2147483648)),Is=xr,As=function(e){return f(Is,e,"")},Bs=Pn,ks=n(function(e,t,r){return e<=0?r:l(ks,e>>1,U(t,t),1&e?U(r,t):r)}),Ns=r(function(e,t){return l(ks,e,t,"")}),Rs=n(function(e,t,r){return U(f(Ns,e-Qo(r),As(t)),r)}),$s=te,_s=Ar,Ls=function(e){e:for(;;)switch(e){case 0:return P("0");case 1:return P("1");case 2:return P("2");case 3:return P("3");case 4:return P("4");case 5:return P("5");case 6:return P("6");case 7:return P("7");case 8:return P("8");case 9:return P("9");case 10:return P("a");case 11:return P("b");case 12:return P("c");case 13:return P("d");case 14:return P("e");case 15:return P("f");default:var t=e;e=t;continue e}},xs=r(function(e,t){for(;;){if(t<16)return f(ka,Ls(t),e);var r=f(ka,Ls(f(_s,16,t)),e),n=t/16|0;e=r,t=n}}),Ps=function(e){return $s(e<0?f(ka,P("-"),f(xs,yr,-e)):f(xs,yr,e))},Ds=function(e){var t=f(Ts,e,ws);if("Nothing"===t.$)return"Failure converting BigInt to hex string. Should be impossible. Open up issue on the elm-bigint repo.";var r=t.a,n=r.a,a=r.b,i=Ps(Gu(a));return R(n,qu(0))?i:U(Ds(n),l(Rs,8,P("0"),i))},Us=function(e){switch(e.$){case"Zer":return"0";case"Pos":var t=e.a;return R(t,yu(yr))?"0":Ds(mu(t));default:var t=e.a;return"-"+Us(f(fs,qu(-1),e))}},Os=function(e){return l(Rs,64,P("0"),e)},Ms=function(e){var t=r(function(e,t){var r=e.a,n=e.b,a=t.a,i=t.b,o=t.c;if("Just"===r.$){var u=r.a,s=Os(Ps(a)),c=function(e){return U(e,n)}(Os(Ps(u)));return x(a+32+(Qo(n)/2|0),U(i,s),U(o,c))}return x(a,U(i,n),o)});return function(e){return U(e.b,e.c)}(l(Ra,t,x(32*Ti(e),"",""),e))},Fs=Dr,Vs=n(function(e,t,r){return t<128?f(e,t,r):t<2048?f(e,128|63&t,f(e,192|t>>>6,r)):t<65536?f(e,128|63&t,f(e,128|63&t>>>6,f(e,224|t>>>12,r))):f(e,128|63&t,f(e,128|63&t>>>6,f(e,128|63&t>>>12,f(e,240|t>>>18,r))))}),Ks=n(function(e,t,n){return l(Fs,r(function(t,r){return l(Vs,e,yi(t),r)}),t,n)}),Hs=function(e){return $a(l(Ks,ka,yr,e))},js=function(e){return f(Ri,"",f(xa,f(zo,Ps,f(Rs,2,P("0"))),Hs(e)))},qs=function(e){return 64-f(_s,64,e)},Gs=function(e){return U(e,f(Ns,qs(Qo(e)),"0"))},zs=function(e){return L(si(Qo(e)/2|0),Gs(e))},Ys=function(e){return L(ci,Os(e))},Ws=function(e){switch(e){case"0000":return P("0");case"0001":return P("1");case"0010":return P("2");case"0011":return P("3");case"0100":return P("4");case"0101":return P("5");case"0110":return P("6");case"0111":return P("7");case"1000":return P("8");case"1001":return P("9");case"1010":return P("a");case"1011":return P("b");case"1100":return P("c");case"1101":return P("d");case"1110":return P("e");case"1111":return P("f");default:return P("!")}},Js=function(e){switch(e.valueOf()){case"0":return"0000";case"1":return"0001";case"2":return"0010";case"3":return"0011";case"4":return"0100";case"5":return"0101";case"6":return"0110";case"7":return"0111";case"8":return"1000";case"9":return"1001";case"a":return"1010";case"b":return"1011";case"c":return"1100";case"d":return"1101";case"e":return"1110";case"f":return"1111";default:return"error converting hex to binary"}},Qs=Ur,Xs=function(e){var t=r(function(e,t){var r=t.a,n=t.b,a=L(e,n);e:for(;;)if(a.b)switch(a.a.valueOf()){case"0":return L(f(Is,P("1"),r),!0);case"1":return L(f(Is,P("0"),r),!0);default:break e}else switch(a.a.valueOf()){case"0":return L(f(Is,P("0"),r),!1);case"1":return L(f(Is,P("1"),r),!0);default:break e}return L(r,!0)});return l(Qs,t,L("",!1),e).a},Zs=function(e){return l(Qs,ka,yr,e)},ec=n(function(e,t,r){for(;;){if(""===t)return $a(r);var n=e,a=f(Zo,e,t),i=f(ka,l(Xo,0,e,t),r);e=n,t=a,r=i}}),tc=r(function(e,t){return e&&""!==t?l(ec,e,t,yr):M([t])}),rc=function(e){var t=function(){var t=Zs(Us(e));if(t.b&&"-"===t.a.valueOf()){var r=t.b;return L(r,f(zo,Xs,f(Rs,256,P("1"))))}var r=t;return L(r,f(Rs,256,P("0")))}(),r=t.a,n=t.b;return $s(f(xa,Ws,f(tc,4,n(f(Ri,"",f(xa,Js,r))))))},nc=function(e){return{$:"Hex",a:e}},ac=function(e){switch(e.$){case"AddressE":var t=e.a.a;return Ys(t);case"UintE":var r=e.a;return Ys(Us(r));case"IntE":var n=e.a;return Ys(rc(n));case"BoolE":return Ys(e.a?"1":"0");case"DBytesE":var a=e.a.a;return zs(a);case"BytesE":var a=e.a.a;return Ys(cu(a));case"StringE":var i=e.a;return zs(js(i));case"ListE":var o=e.a;return function(e){var t=e.a;return zs(t)}(Xt()(o));default:var i=e.a;return Ys(cu(i))}};try{var ic=Xt();Xt=function(){return ic}}catch(e){throw"Some top-level definitions from `Abi.Encode` are causing infinite recursion:\n\n ┌─────┐\n │ abiEncodeList\n │ ↓\n │ lowLevelEncode\n └─────┘\n\nThese errors are very tricky, so read https://elm-lang.org/0.19.0/halting-problem to learn how to fix it!"}var oc=Pr,uc=function(e){return 1===Qo(e)?f(oc,"0",e):e},sc=n(function(e,t,r){for(;;){if(e<=0)return r;{if(!t.b)return r;var n=t.a,a=t.b,i=e-1,o=a,u=f(ka,n,r);e=i,t=o,r=u}}}),cc=r(function(e,t){return $a(l(sc,e,t,yr))}),fc=n(function(e,t,r){if(t<=0)return yr;var n=L(t,r);e:for(;;){t:for(;;){if(!n.b.b)return r;if(!n.b.b.b){if(1===n.a)break e;break t}switch(n.a){case 1:break e;case 2:var a=n.b,i=a.a,o=a.b,u=o.a;return M([i,u]);case 3:if(n.b.b.b.b){var s=n.b,i=s.a,c=s.b,u=c.a,d=c.b,h=d.a;return M([i,u,h])}break t;default:if(n.b.b.b.b&&n.b.b.b.b.b){var p=n.b,i=p.a,g=p.b,u=g.a,v=g.b,h=v.a,y=v.b,m=y.a,b=y.b;return e>1e3?f(ka,i,f(ka,u,f(ka,h,f(ka,m,f(cc,t-4,b))))):f(ka,i,f(ka,u,f(ka,h,f(ka,m,l(fc,e+1,t-4,b)))))}break t}}return r}var C=n.b,i=C.a;return M([i])}),lc=r(function(e,t){return l(fc,0,e,t)}),dc=function(e){return{$:"KC",a:e}}({capacity:512,delSuffix:1,outputLen:32,rate:1088}),hc=function(e){switch(e.$){case"I8":return 1;case"I16":return 2;case"I32":return 4;case"U8":return 1;case"U16":return 2;case"U32":case"F32":return 4;case"F64":return 8;case"Seq":case"Utf8":var t=e.a;return t;default:return Pt(e.a)}},pc={$:"LE"},gc=n(function(e,t,r){switch(e.$){case"I8":var n=e.a;return l(Un,t,r,n);case"I16":var a=e.a,n=e.b;return d(On,t,r,n,R(a,pc));case"I32":var a=e.a,n=e.b;return d(Mn,t,r,n,R(a,pc));case"U8":var n=e.a;return l(Fn,t,r,n);case"U16":var a=e.a,n=e.b;return d(Vn,t,r,n,R(a,pc));case"U32":var a=e.a,n=e.b;return d(Kn,t,r,n,R(a,pc));case"F32":var a=e.a,n=e.b;return d(Hn,t,r,n,R(a,pc));case"F64":var a=e.a,n=e.b;return d(jn,t,r,n,R(a,pc));case"Seq":var i=e.b;return l(vc,i,t,r);case"Utf8":var o=e.b;return l(Gn,t,r,o);default:var i=e.a;return l(qn,t,r,i)}}),vc=n(function(e,t,r){for(;;){if(!e.b)return r;var n=e.a,a=e.b,i=a,o=t,u=l(gc,n,t,r);e=i,t=o,r=u}}),yc=Dt,mc=r(function(e,t){return{$:"Seq",a:e,b:t}}),bc=r(function(e,t){for(;;){if(!t.b)return e;var r=t.a,n=t.b,a=e+hc(r),i=n;e=a,t=i}}),Cc=function(e){return f(mc,f(bc,0,e),e)},Ec=function(e){return{$:"U8",a:e}},Sc=Ec,Tc=r(function(e,t){return _(e,t)<0?e:t}),wc=hr,Ic=function(e){return{$:"Bytes",a:e}},Ac=Ic,Bc=function(e){return yc(Cc(f(xa,Ac,$a(e))))},kc=Pt,Nc=r(function(e,t){var r=e.a;return f(zn,r,t)}),Rc=function(e){return{$:"Decoder",a:e}},$c=a(function(e,t,r,n){for(;;){var a=t(e),i=a.a,o=f(i,r,n),u=o.a,s=o.b;if("Loop"!==s.$){return L(u,s.a)}var c=s.a,l=c,d=t,h=r,p=u;e=l,t=d,r=h,n=p}}),_c=r(function(e,t){return Rc(f($c,e,t))}),Lc=Rc(Yn),xc=r(function(e,t){if("Just"===t.$){return t.a}return e}),Pc=function(e){return{$:"Done",a:e}},Dc=function(e){return{$:"Loop",a:e}},Uc=r(function(e,t){var n=t.a;return Rc(r(function(t,r){var a=f(n,t,r),i=a.a,o=a.b;return L(i,e(o))}))}),Oc=function(e){return Rc(r(function(t,r){return L(r,e)}))},Mc=r(function(e,t){var r=t.a,n=t.b;return r<=0?Oc(Pc($a(n))):f(Uc,function(e){return Dc(L(r-1,f(ka,e,n)))},e)}),Fc=function(e){return f(xc,yr,f(Nc,f(_c,L(kc(e),yr),Mc(Lc)),e))},Vc=n(function(e,t,r){var n=t.a,a=t.b,i=r.a,o=r.b;return L(f(e,n,i),f(e,a,o))}),Kc=r(function(e,t){return l(Vc,Bs,e,t)}),Hc=f(Ai,0,4),jc=r(function(e,t){var r=t.d0,n=t.d1,a=t.d2,i=t.d3,o=t.d4;switch(e){case 0:return r;case 1:return n;case 2:return a;case 3:return i;default:return o}}),qc=xt,Gc=r(function(e,t){var r=t.a,n=t.b;return L(e(r),e(n))}),zc=function(e){return f(Gc,f(zo,qc,Bs(4294967295)),e)},Yc=r(function(e,t){return 5*t+e}),Wc=4294967295>>>32-Ha,Jc=ar,Qc=n(function(e,t,r){for(;;){var n=Wc&t>>>e,a=f(Jc,n,r);if("SubTree"!==a.$){var i=a.a;return f(Jc,Wc&t,i)}var o=a.a,u=e-Ha,s=t,c=o;e=u,t=s,r=c}}),Xc=function(e){return e>>>5<<5},Zc=r(function(e,t){var r=t.a,n=t.b,a=t.c,i=t.d;return e<0||_(e,r)>-1?ci:si(_(e,Xc(r))>-1?f(Jc,Wc&e,i):l(Qc,n,e,a))}),ef=r(function(e,t){var r=f(Zc,e,t);if("Just"===r.$){return r.a}return L(0,0)}),tf=n(function(e,t,r){var n=f(Yc,e,t);return f(ef,n,r)}),rf=ir,nf=a(function(e,t,r,n){var a=Wc&t>>>e,i=f(Jc,a,n);if("SubTree"===i.$){var o=i.a,u=d(nf,e-Ha,t,r,o);return l(rf,a,za(u),n)}var s=i.a,c=l(rf,Wc&t,r,s);return l(rf,a,Ga(c),n)}),af=n(function(e,t,r){var n=r.a,a=r.b,i=r.c,o=r.d;return e<0||_(e,n)>-1?r:_(e,Xc(n))>-1?d(Ma,n,a,i,l(rf,Wc&e,t,o)):d(Ma,n,a,d(nf,a,e,t,i),o)}),of=n(function(e,t,r){return l(af,e,t,r)}),uf=a(function(e,t,r,n){var a=f(Yc,e,t);return l(of,a,r,n)}),sf=Dn,cf=r(function(e,t){return l(Vc,sf,e,t)}),ff=function(e){var t=l(La,r(function(t,n){var a={d0:l(tf,0,t,e.state),d1:l(tf,1,t,e.state),d2:l(tf,2,t,e.state),d3:l(tf,3,t,e.state),d4:l(tf,4,t,e.state)},i=r(function(e,r){return d(uf,e,t,f(cf,f(jc,e,a),f(Kc,zc(f(jc,f(_s,5,e+1),a)),f(jc,f(_s,5,e+2),a))),r)});return f(i,4,f(i,3,f(i,2,f(i,1,f(i,0,n)))))}),e.state,Hc);return D(e,{state:t})},lf=L(0,0),df=function(e){return{current:lf,lfsrstate:1,state:e,x:1,y:0}},hf=function(e){var t=1&e;return 128&e?L(t,e<<1^113):L(t,e<<1)},pf=L(1,0),gf=r(function(e,t){var r=t.a,n=t.b;return e?L(n,r):L(r,n)}),vf=r(function(e,t){if(e){var n=f(gf,1,t);return l(Vc,r(function(t,r){return 4294967295&(t<>>32-e)}),t,n)}return t}),yf=r(function(e,t){var r=f(_s,32,e/32|0),n=f(gf,r,t),a=f(_s,32,e);return f(vf,a,n)}),mf=n(function(e,t,r){var n=f(Zc,e,r);if("Nothing"===n.$)return r;var a=n.a;return l(af,e,t(a),r)}),bf=n(function(e,t,r){return l(mf,e,cf(t),r)}),Cf=a(function(e,t,r,n){var a=f(Yc,e,t);return l(bf,a,r,n)}),Ef=function(e){return l(Ra,r(function(e,t){var r=(1<>r}),Nf=n(function(e,t,r){return t?L(0,r<0))return t;var a=f(Tc,n,r),i=f(xa,function(e){return f(kf,e,g)},f(Ai,0,a)),o=Bf(e),u=U(t,i),s=n-a;e=o,t=u,n=s}});return f(lc,i.outputLen,l(v,g,yr,i.outputLen))},Lf=function(e){return{$:"KS",a:e}},xf=function(e){var t=e.a;return Lf({config:t,inputLength:0,partial:yr,state:f(ui,25,ms(lf))})},Pf=function(e){return Rc(Wn(e))},Df=yc(Cc(yr)),Uf=r(function(e,t){var n=t.a;return Rc(r(function(t,r){var a=f(n,t,r),i=a.a,o=a.b;return f(e(o).a,t,i)}))}),Of=r(function(e,t){return f(Uf,function(e){return Pf(t)},Pf(e))}),Mf=r(function(e,t){return f(xc,Df,f(Nc,f(Of,e,kc(t)-e),t))}),Ff=r(function(e,t){for(;;){var n=t.a,a=n.config.rate/8|0,i=kc(e)?f(ka,e,n.partial):n.partial;if(!(_(l(Ra,r(function(e,t){return t+kc(e)}),0,i),a)>-1))return Lf(D(n,{inputLength:kc(e)+n.inputLength,partial:i}));var o=Bc(i),u=f(xc,Df,f(Nc,Pf(a),o)),s=Fc(u),c=f($f,s,n.state),d=Bf(c),h=f(Mf,a,o),p=Df,g=Lf(D(n,{inputLength:kc(e)+n.inputLength,partial:M([h]),state:d}));e=p,t=g}}),Vf=r(function(e,t){return _f(f(Ff,yc(Cc(f(xa,Sc,t))),xf(e)))}),Kf=Vf(dc),Hf=function(e){return nc(f(Ri,"",f(xa,f(zo,Ps,uc),f(lc,4,Kf(f(xa,yi,Zs(e)))))))},jf=function(e){return f(su,"0x",e)||f(su,"0X",e)?e:"0x"+e},qf=function(e){var t=e.a;return jf(t)},Gf=r(function(e,t){var r=Ms(f(xa,ac,t)),n=function(e){return U(e,r)}(cu(qf(Hf(e))));return nc(n)}),zf=function(e){return{data:si(f(Gf,"poke()",yr)),decoder:vu(uu),from:ci,gas:ci,gasPrice:ci,nonce:ci,to:si(e),value:ci}},Yf=r(function(e,t){return D(t,{checked:e})}),Wf=n(function(e,t,r){return f(xa,function(r){return e(r)?t(r):r},r)}),Jf=r(function(e,t){var r=e.a,n=e.b,a=e.c;return l(Wf,f(zo,function(e){return e.type_},Ja(r)),function(e){return D(e,{options:l(Wf,f(zo,function(e){return e.label},Ja(n)),Yf(a),e.options)})},t)}),Qf=r(function(e,t){return{$:"Trade",a:e,b:t}}),Xf=a(function(e,t,r,n){return{appCmds:n,chainCmd:r,cmd:t,model:e}}),Zf={$:"Descending"},el=function(e){return"Ascending"===e.$?Zf:Lo},tl=function(e){return d(Xf,e,Do,Fo,yr)},rl=r(function(e,t){return L(t.a,e(t.b))}),nl=r(function(e,t){switch(e.$){case"TradeClicked":var r=e.a,n=e.b;return d(Xf,t,Do,Fo,M([da(f(Qf,r,n))]));case"ChangeSort":var a=e.a,i=R(t.orderBy.a,a)?f(rl,el,t.orderBy):L(a,Lo);return tl(D(t,{orderBy:i}));default:return tl(t)}}),al=function(e){return{data:e.data,from:e.from,gas:e.gas,gasPrice:e.gasPrice,nonce:e.nonce,to:e.to,value:e.value}},il=yn,ol=r(function(e,t){switch(e.$){case"Poke":var r=e.a,n=al(zf(r)),a={onBroadcast:ci,onMined:ci,onSign:ci},i=f(qo,a,n);return d(Oo,t,Do,i,yr);case"TradeClicked":var o=e.a,u=e.b;return d(Oo,t,Do,Fo,M([da(f(Qf,o,u))]));case"FiltersMsg":var s=e.a;return Ho(D(t,{filters:f(Jf,s,t.filters)}));case"TradeTableMsg":var c=e.a,l=f(nl,c,t.tradeTable);return d(Oo,D(t,{tradeTable:l.model}),f(il,Ko,l.cmd),f(Yo,Ko,l.chainCmd),f(xa,Ji(Ko),l.appCmds));default:return Vo(t)}}),ul={$:"BottomRight"},sl={$:"ShouldBeImpossible"},cl=lr,fl=function(e){return qi(e)},ll=r(function(e,t){f(cl,e,t);return{align:ul,label:"unexpectedError",mainParagraphs:M([M([fl(e)])]),noticeType:sl}}),dl=function(e){var t=e.a;return jf(t)},hl=ye,pl=f(zo,dl,hl),gl=f(zo,Us,f(zo,jf,hl)),vl=f(zo,qf,hl),yl=f(zo,Ps,f(zo,jf,hl)),ml=r(function(e,t){return l(La,r(function(t,r){return e(t)?f(ka,t,r):r}),yr,t)}),bl=un,Cl=function(e){return ye(l(Ra,r(function(e,t){var r=e.a,n=e.b;return l(on,r,n,t)}),Ce(),e))},El=function(e){return Cl(f(xa,function(e){var t=e.a,r=e.b;return L(t,f(xc,bl,r))},f(ml,function(e){e.a;return!R(e.b,ci)},e)))},Sl=function(e){return El(M([L("to",f(Bo,pl,e.to)),L("from",f(Bo,pl,e.from)),L("gas",f(Bo,yl,e.gas)),L("gasPrice",f(Bo,gl,e.gasPrice)),L("value",f(Bo,gl,e.value)),L("data",f(Bo,vl,e.data)),L("nonce",f(Bo,yl,e.nonce))]))},Tl=function(e){return{$:"TxSentry",a:e}},wl=ye,Il=r(function(e,t){return Cl(M([L("ref",wl(e)),L("txParams",t)]))}),Al=function(e){return{$:"Signing",a:e}},Bl=r(function(e,t){var r=t.onSign;return{onBroadcastTagger:t.onBroadcast,onMinedTagger:t.onMined,onSignedTagger:r,params:e,status:Al(e)}}),kl={$:"Black"},Nl=i(function(e,t,r,n,a){return{$:"RBNode_elm_builtin",a:e,b:t,c:r,d:n,e:a}}),Rl={$:"RBEmpty_elm_builtin"},$l={$:"Red"},_l=i(function(e,t,r,n,a){if("RBNode_elm_builtin"===a.$&&"Red"===a.a.$){var i=(a.a,a.b),o=a.c,u=a.d,s=a.e;if("RBNode_elm_builtin"===n.$&&"Red"===n.a.$){var c=(n.a,n.b),f=n.c,l=n.d,d=n.e;return h(Nl,$l,t,r,h(Nl,kl,c,f,l,d),h(Nl,kl,i,o,u,s))}return h(Nl,e,i,o,h(Nl,$l,t,r,n,u),s)}if("RBNode_elm_builtin"===n.$&&"Red"===n.a.$&&"RBNode_elm_builtin"===n.d.$&&"Red"===n.d.a.$){var c=(n.a,n.b),f=n.c,p=n.d,g=(p.a,p.b),v=p.c,y=p.d,m=p.e,d=n.e;return h(Nl,$l,c,f,h(Nl,kl,g,v,y,m),h(Nl,kl,t,r,d,a))}return h(Nl,e,t,r,n,a)}),Ll=n(function(e,t,r){if("RBEmpty_elm_builtin"===r.$)return h(Nl,$l,e,t,Rl,Rl);var n=r.a,a=r.b,i=r.c,o=r.d,u=r.e;switch(f(Ku,e,a).$){case"LT":return h(_l,n,a,i,l(Ll,e,t,o),u);case"EQ":return h(Nl,n,a,t,o,u);default:return h(_l,n,a,i,o,l(Ll,e,t,u))}}),xl=n(function(e,t,r){var n=l(Ll,e,t,r);if("RBNode_elm_builtin"===n.$&&"Red"===n.a.$){var a=(n.a,n.b),i=n.c,o=n.d,u=n.e;return h(Nl,kl,a,i,o,u)}return n}),Pl=n(function(e,t,r){var n=e.a,a=Sl(r),i=l(xl,n.ref,f(Bl,r,t),n.txs);return L(Tl(D(n,{ref:n.ref+1,txs:i})),f(il,n.tagger,n.outPort(f(Il,n.ref,a))))}),Dl=Pl,Ul=r(function(e,t){var r=L(e,t);if("None"===r.b.$){r.b;return x(e,Do,yr)}if("Just"===r.a.$){var n=r.a.a,a=r.b,i=a.a,o=a.b;return function(e){var t=e.a,r=e.b;return x(si(t),r,yr)}(l(Dl,n,i,o))}return x(ci,Do,M([f(ll,"submodel sent chainCmd, but there is no txSentry to use!",ci)]))}),Ol=a(function(e,t,r,n){return{category:t,event:e,label:r,value:n}}),Ml=n(function(e,t,r){return{address:t,commPubkey:r,network:e}}),Fl=function(e){return{$:"Posix",a:e}},Vl=Fl,Kl={autoabortInterval:Vl(0),autorecallInterval:Vl(0),autoreleaseInterval:Vl(0),daiAmount:"",fiatAmount:"",fiatType:"USD",paymentMethod:"",userRole:lo},Hl=function(e){return{$:"TokenValue",a:e}},jl=function(e){return e.a},ql=r(function(e,t){return f(xc,hs,f(Bo,Qa,f(Ts,e,t)))}),Gl=r(function(e,t){return Hl(f(ql,jl(e),qu(t)))}),zl=function(e){return f(Gl,e,12)},Yl=function(e){return f(Gl,e,3)},Wl=Hl(qu(0)),Jl=r(function(e,t){var r=Wl;return{abortPunishment:zl(t.tradeAmount),autoabortInterval:t.autoabortInterval,autorecallInterval:t.autorecallInterval,autoreleaseInterval:t.autoreleaseInterval,buyerDeposit:Yl(t.tradeAmount),initiatorAddress:e.address,initiatorCommPubkey:e.commPubkey,initiatorRole:t.initiatorRole,paymentMethods:t.paymentMethods,pokeReward:r,price:t.price,tradeAmount:t.tradeAmount}}),Ql=function(e){if(e.b){var t=e.a;e.b;return si(t)}return ci},Xl=qr,Zl=function(e){var t=Ql(f(Xl,".",e));if("Nothing"===t.$)return L(e,0);var r=t.a,n=Qo(e)-1-r;return L(U(f(ru,r,e),f(Zo,r+1,e)),n)},ed=r(function(e,t){e:for(;;){if(t.b){var r=t.a,n=t.b;if(e(r)){var a=e,i=n;e=a,t=i;continue e}return t}return yr}}),td=function(e){var t=e.a,r=f(ed,Ja(0),t);return yu(r.b?t:yr)},rd=Z,nd=r(function(e,t){for(;;){if(e<=0)return t;{if(!t.b)return t;var r=(t.a,t.b),n=e-1,a=r;e=n,t=a}}}),ad=n(function(e,t,r){var n=f(nd,t,r),a=Ti(r)>0;return e>0&&t>0&&a?f(ka,f(lc,e,r),l(ad,e,t,n)):yr}),id=r(function(e,t){return l(ad,e,e,t)}),od=function(e){var t=r(function(t,r){var n=e(t);if("Nothing"===n.$)return ci;var a=n.a;return f(Bo,ka(a),r)});return f(La,t,si(yr))}(Ua),ud=function(e){return f(Bo,f(Da,td,yu),od(f(xa,f(zo,$a,f(zo,$s,rd)),f(id,7,$a(e)))))},sd=Q,cd=function(e){var t=Zs(sd(e));if(!t.b)return ci;switch(t.a.valueOf()){case"-":if(t.b.b){var r=t.b;return f(Bo,Au(Uu),ud(r))}return ci;case"+":if(t.b.b){var r=t.b;return f(Bo,Au(Ou),ud(r))}return ci;default:var r=t;return f(Bo,Au(Ou),ud(r))}},fd=function(e){var t=function(e){return!f(_s,2,e)};switch(e.$){case"Zer":return!0;case"Pos":default:var r=e.a.a;return t(f(xc,0,Ql(r)))}},ld=function(e){return f(fs,e,e)},dd=qu(2),hd=n(function(e,t,r){e:for(;;)switch(r.$){case"Zer":return ys;case"Neg":return wu;default:if(R(r,ys))return f(fs,e,t);if(fd(r)){var n=e,a=ld(t),i=f(ql,r,dd);e=n,t=a,r=i;continue e}var n=f(fs,t,e),a=ld(t),i=f(ql,f(ds,r,ys),dd);e=n,t=a,r=i;continue e}}),pd=r(function(e,t){return l(hd,ys,e,t)}),gd=function(e){if(""===e)return ci;var t=Zl(e),r=t.a,n=t.b,a=cd(r),i=18-n;if(i<0)return ci;if("Nothing"===a.$)return ci;var o=a.a,u=f(fs,o,f(pd,qu(10),qu(i)));return si(u)},vd=function(e){return f(Bo,Hl,gd(e))},yd=jr,md=function(e){for(;;){if(f(yd,".",e))return l(Xo,0,-1,e);{if(!f(yd,"0",e))return""===e?"0":e;e=l(Xo,0,-1,e)}}},bd=f(Da,f(Rs,7,P("0")),Ni),Cd=function(e){return f(Ri,"",e)},Ed=function(e){var t=e.a,r=$a(t);if(r.b){var n=r.a,a=r.b;return Cd(f(ka,Ni(n),f(xa,bd,a)))}return"0"},Sd=function(e){switch(e.$){case"Zer":return"0";case"Pos":var t=e.a;return Ed(t);default:var t=e.a;return"-"+Ed(t)}},Td=r(function(e,t){return e<1?t:l(Xo,0,-e,t)}),wd=function(e){var t=l(Rs,18,P("0"),Sd(e)),r=f(Td,18,t)+"."+f(ou,18,t);return function(e){return""===e?"0":e}(md(r))},Id=r(function(e,t){var r=wd(t),n=Ql(f(Xl,".",r));if("Nothing"===n.$)return r;var a=n.a;return e?f(ru,a+1+e,r):f(ru,a,r)}),Ad=r(function(e,t){if("Nothing"===e.$)return wd(jl(t));var r=e.a;return f(Id,r,jl(t))}),Bd=ee,kd=function(e){var t=Bd(f(Ad,ci,e));if("Just"===t.$){return t.a}f(cl,"Error converting tokenValue to float: string -> float failed",e);return 0},Nd=function(e){if(""===e)return fi("You must specify a trade amount.");var t=vd(e);if("Nothing"===t.$)return fi("I don't understand this number.");var r=t.a;return kd(r)<1?fi("Trade amount can't be less than 1."):li(r)},Rd=function(e){if(""===e)return fi("You must specify a fiat price.");var t=cd(e);if("Nothing"===t.$){var r=Bd(e);return fi("Just"===r.$?"Fractional fiat amounts (i.e. $1.20) are not supported. Use a whole number.":"I don't understand this number.")}var n=t.a;return li(n)},$d=r(function(e,t){if("Just"===t.$){var r=t.a;return li(r)}return fi(e)}),_d=function(e){return""===e},Ld=function(e){return _d(e)?ci:si(e)},xd=function(e){return f($d,"You must specify a fiat type.",Ld(e))},Pd=function(e){return""===e?fi("Must specify a payment method."):li(e)},Dd=u(function(e,t,r,n,a,i,o){return{autoabortInterval:i,autorecallInterval:a,autoreleaseInterval:o,daiAmount:e,fiatAmount:t,fiatType:r,paymentMethod:n}}),Ud=g(Dd,ci,ci,ci,ci,ci,ci,ci),Od=function(e){var t=e.a,r=e.b,n=e.c,a=x(t,r,n);if("Ok"===a.a.$){if("Ok"===a.b.$){if("Ok"===a.c.$){var i=a.a.a,o=a.b.a,u=a.c.a;return li(x(i,o,u))}var s=a.c.a;return fi(s)}var c=a.b.a;return fi(c)}var f=a.a.a;return fi(f)},Md=a(function(e,t,r,n){var a=n.a,i=n.b,o=n.c;return x(e(a),t(i),r(o))}),Fd={$:"Custom"},Vd=r(function(e,t){return{info:t,type_:e}}),Kd=o(function(e,t,r,n,a,i){if("Err"===t.$){var o=t.a;return fi(o)}var u=t.a;if("Err"===r.$){var o=r.a;return fi(o)}var s=r.a;if("Err"===n.$){var o=n.a;return fi(o)}var c=n.a;if("Err"===a.$){var o=a.a;return fi(o)}var f=a.a;if("Err"===i.$){var o=i.a;return fi(o)}var l=i.a;return li(h(e,u,s,c,f,l))}),Hd=r(function(e,t){if("Ok"===t.$){var r=t.a;return li(r)}var n=t.a;return fi(e(n))}),jd=function(e){return e.a},qd=function(e){return p(Kd,i(function(t,r,n,a,i){var o=i.a;return{autoabortInterval:i.b,autorecallInterval:o,autoreleaseInterval:i.c,initiatorRole:e.userRole,paymentMethods:M([f(Vd,Fd,a)]),price:{amount:r,fiatType:n},tradeAmount:t}}),f(Hd,function(e){return D(Ud,{daiAmount:si(e)})},Nd(e.daiAmount)),f(Hd,function(e){return D(Ud,{fiatAmount:si(e)})},Rd(e.fiatAmount)),f(Hd,function(e){return D(Ud,{fiatType:si(e)})},xd(e.fiatType)),f(Hd,function(e){return D(Ud,{paymentMethod:si(e)})},Pd(e.paymentMethod)),Od(d(Md,function(e){return jd(e)>0?li(e):fi(D(Ud,{autorecallInterval:si("Must specify a non-zero time for this window")}))},function(e){return jd(e)>0?li(e):fi(D(Ud,{autoabortInterval:si("Must specify a non-zero time for this window")}))},function(e){return jd(e)>0?li(e):fi(D(Ud,{autoreleaseInterval:si("Must specify a non-zero time for this window")}))},x(e.autorecallInterval,e.autoabortInterval,e.autoreleaseInterval))))},Gd=function(e){if("Active"===e.$){var t=e.a;return si(t)}return ci},zd=n(function(e,t,r){if("Nothing"===t.$)return ci;var n=t.a;if("Nothing"===r.$)return ci;var a=r.a;return si(f(e,n,a))}),Yd=function(e){if("Ok"===e.$){var t=e.a;return si(t)}return ci},Wd=function(e){var t=qd(e.inputs),r=function(){return R(e.errors,Ud)?Ud:"Ok"===t.$?Ud:t.a}();return D(e,{createParameters:l(zd,Jl,Gd(e.wallet),Yd(t)),errors:r})},Jd=r(function(e,t){return Wd(D(t,{inputs:e}))}),Qd=a(function(e,t,r,n){return{appCmds:n,chainCmd:r,cmd:t,model:e}}),Xd=function(e){return d(Qd,f(Jd,Kl,{allowance:ci,createParameters:ci,depositAmount:ci,errors:Ud,inputs:Kl,showFiatTypeDropdown:!1,txChainStatus:ci,wallet:e}),Do,Fo,yr)},Zd=a(function(e,t,r,n){return la(d(Ol,e,t,r,n))}),eh=function(e){return{$:"Address",a:e}},th=f(zo,cu,f(zo,sd,eh)),rh=function(e){if("Token"===e.$){if("EthDai"===e.a.$){e.a;return th("0x5677CFbA35a0Db0469d3d56020d556B942E9ce90")}e.a;return th("0xbC69Aff9d93C5EA4a841166C46C68518D02aF818")}switch(e.a.$){case"Eth":e.a;return th("0xD3b1e8F2bDe0a2DdfC9F6e2EB6e2589e5Ba955b6");case"Kovan":e.a;return th("0xA30773FD520cdf845E1a00441aB09cE39B31F676");default:e.a;return th("0x7E370099a7a789dC28810a72381bcd7Be834Ad74")}},nh=function(e){return th("EthDai"===e.$?"0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359":"0xC4375B7De8af5a38a93548eb8453a498222C4fF2")},ah=function(e){return{$:"AddressE",a:e}},ih=ah,oh=function(e){return{$:"UintE",a:e}},uh=oh,sh=n(function(e,t,r){return{data:si(f(Gf,"approve(address,uint256)",M([ih(t),uh(r)]))),decoder:vu(uu),from:ci,gas:ci,gasPrice:ci,nonce:ci,to:si(e),value:ci}}),ch=function(e){return f(Gl,e,200)},fh=r(function(e,t){return Hl(f(Xu,jl(e),jl(t)))}),lh=function(e){var t=f(Gl,e.tradeAmount,200);return f(fh,e.pokeReward,f(fh,ch(e.tradeAmount),f(fh,t,function(){return"Buyer"===e.initiatorRole.$?Yl(e.tradeAmount):e.tradeAmount}())))},dh=Mi(ya),hh=n(function(e,t,r){return{id:e,initiator:r,tradeAddress:t}}),ph=a(function(e,t,r,n){return{index:t,match:e,number:r,submatches:n}}),gh=Xn,vh=Qn,yh=function(e){return f(vh,{caseInsensitive:!1,multiline:!1},e)},mh=Jn,bh=gh(f(xc,mh,yh("^((0[Xx]){1})?[0-9A-Fa-f]{40}$"))),Ch=r(function(e,t){for(;;){if(!t.b)return!1;var r=t.a,n=t.b;if(e(r))return!0;var a=e,i=n;e=a,t=i}}),Eh=r(function(e,t){return!f(Ch,f(Da,ns,e),t)}),Sh=Eh(Ua),Th=q,wh=r(function(e,t){if("Ok"===t.$){return t.a}return e}),Ih=n(function(e,t,r){if("Err"===t.$){var n=t.a;return fi(n)}var a=t.a;if("Err"===r.$){var n=r.a;return fi(n)}var i=r.a;return li(f(e,a,i))}),Ah=f(La,Ih(ka),li(yr)),Bh=function(e){if(e.b){var t=(e.a,e.b);return si(t)}return ci},kh=n(function(e,t,r){e:for(;;){if(!t.b)return li(r);var n=t.a,a=t.b;switch(n.valueOf()){case"0":var i=e-1,o=a,u=r;e=i,t=o,r=u;continue e;case"1":var i=e-1,o=a,u=r+f(Nu,16,e);e=i,t=o,r=u;continue e;case"2":var i=e-1,o=a,u=r+2*f(Nu,16,e);e=i,t=o,r=u;continue e;case"3":var i=e-1,o=a,u=r+3*f(Nu,16,e);e=i,t=o,r=u;continue e;case"4":var i=e-1,o=a,u=r+4*f(Nu,16,e);e=i,t=o,r=u;continue e;case"5":var i=e-1,o=a,u=r+5*f(Nu,16,e);e=i,t=o,r=u;continue e;case"6":var i=e-1,o=a,u=r+6*f(Nu,16,e);e=i,t=o,r=u;continue e;case"7":var i=e-1,o=a,u=r+7*f(Nu,16,e);e=i,t=o,r=u;continue e;case"8":var i=e-1,o=a,u=r+8*f(Nu,16,e);e=i,t=o,r=u;continue e;case"9":var i=e-1,o=a,u=r+9*f(Nu,16,e);e=i,t=o,r=u;continue e;case"a":var i=e-1,o=a,u=r+10*f(Nu,16,e);e=i,t=o,r=u;continue e;case"b":var i=e-1,o=a,u=r+11*f(Nu,16,e);e=i,t=o,r=u;continue e;case"c":var i=e-1,o=a,u=r+12*f(Nu,16,e);e=i,t=o,r=u;continue e;case"d":var i=e-1,o=a,u=r+13*f(Nu,16,e);e=i,t=o,r=u;continue e;case"e":var i=e-1,o=a,u=r+14*f(Nu,16,e);e=i,t=o,r=u;continue e;case"f":var i=e-1,o=a,u=r+15*f(Nu,16,e);e=i,t=o,r=u;continue e;default:var s=n;return fi(As(s)+" is not a valid hexadecimal character.")}}}),Nh=function(e){if(_d(e))return fi("Empty strings are not valid hexadecimal strings.");var t=function(){if(f(su,"-",e)){var t=f(xc,yr,Bh(Zs(e)));return f(au,iu,l(kh,Ti(t)-1,t,0))}return l(kh,Qo(e)-1,Zs(e),0)}();return f(Hd,function(t){return f(Ri," ",M(['"'+e+'"',"is not a valid hexadecimal string because",t]))},t)},Rh=function(e){var t=Zs(e);return function(e){return L(t,e)}(f(wh,yr,Ah(f(xa,Nh,f(_i,"",f(Ri,"",f(xa,f(zo,Ps,uc),f(lc,20,Kf(f(xa,f(zo,Th,yi),t))))))))))},$h=function(e){var t=r(function(e,t){return!(t>=8&&mi(e)||t<8&&bi(e))}),n=Rh(cu(e)),a=n.a,i=n.b,o=l(wi,t,a,i);return!!bh(e)&&Sh(o)},_h=gh(f(xc,mh,yh("^((0[Xx]){1})?[0-9a-f]{40}$"))),Lh=gh(f(xc,mh,yh("^((0[Xx]){1})?[0-9A-F]{40}$"))),xh=function(e){return'"'+e+'"'},Ph=function(e){var t=cu(e),r=f(ru,24,t),n=f(ou,40,e);return 64===Qo(t)&&f(ki,Ja(P("0")),r)?Lh(n)||_h(n)?li(eh(n)):$h(n)?li(eh(n)):fi("Given address "+xh(e)+" failed the EIP-55 checksum test."):40!==Qo(t)?fi("Given address "+xh(e)+" is not the correct length."):bh(t)?Lh(t)||_h(t)?li(eh(t)):$h(t)?li(eh(t)):fi("Given address "+xh(e)+" failed the EIP-55 checksum test."):fi("Given address "+xh(e)+" contains invalid hex characters.")},Dh=Wo(function(e){var t=e.a,r=e.b;return f(au,f(tu,t,r),Ph(nu(r)))}),Uh=r(function(e,t){var r=t.a;return Wo(function(t){var n=t.a,a=t.b;return r(f(Jo,n,f(Zo,64*e,a)))})}),Oh=Jr,Mh=r(function(e,t){return f(Oh,"data",vu(f(Uh,e,t)))}),Fh=Qr,Vh=r(function(e,t){return f(Oh,"topics",f(Fh,e,vu(t)))}),Kh=function(e){return f(Bo,f(zo,$a,f(Ra,r(function(e,t){return f(Xu,qu(e),f(fs,t,ws))}),hs)),od(f(xa,f(zo,$a,f(zo,$s,f(zo,Nh,Yd))),f(id,8,$a(e)))))},Hh=function(e){var t=Zs(sd(e));e:for(;;){if(!t.b)return ci;switch(t.a.valueOf()){case"-":if(t.b.b){if("0"===t.b.a.valueOf()&&t.b.b.b&&"x"===t.b.b.a.valueOf()){if(t.b.b.b.b){var r=t.b,n=r.b,a=n.b;return f(Bo,fs(qu(-1)),Kh(a))}var i=t.b;i.b;return ci}var a=t.b;return f(Bo,fs(qu(-1)),Kh(a))}return ci;case"+":if(t.b.b){var a=t.b;return Kh(a)}return ci;case"0":if(t.b.b&&"x"===t.b.a.valueOf()){if(t.b.b.b){var o=t.b,a=o.b;return Kh(a)}t.b;return ci}break e;default:break e}}var a=t;return Kh(a)},jh=Wo(function(e){var t=e.a,r=e.b;return f(au,f(tu,t,r),f($d,"Error Decoding Uint into BigInt",Hh(jf(nu(r)))))}),qh=f(dh,f(Vh,1,Dh),f(dh,f(Mh,1,Dh),f(dh,f(Mh,0,jh),Fi(hh)))),Gh=nn,zh=r(function(e,t){return ye(l(Ra,Ee(e),be(),t))}),Yh=r(function(e,t){return{address:t.address,blockHash:t.blockHash,blockNumber:t.blockNumber,data:t.data,logIndex:t.logIndex,removed:t.removed,returnData:f(Gh,e,Cl(M([L("data",hl(t.data)),L("topics",f(zh,vl,t.topics))]))),topics:t.topics,transactionHash:t.transactionHash,transactionIndex:t.transactionIndex}}),Wh=r(function(e,t){if("Ok"===t.$){return e(t.a)}var r=t.a;return fi(r)}),Jh=r(function(e,t){return f(au,function(e){return e.id},f(Wh,function(e){return f(Hd,Di,f(Yh,qh,e).returnData)},f($d,"No log found from that factoryAddress in that txReceipt",Ql(f(ml,function(t){return R(f(zo,dl,sd)(t.address),f(zo,dl,sd)(rh(e)))},t.logs)))))}),Qh=n(function(e,t,r){return{data:si(f(Gf,"allowance(address,address)",M([ih(t),ih(r)]))),decoder:vu(jh),from:ci,gas:ci,gasPrice:ci,nonce:ci,to:si(e),value:ci}}),Xh=function(e){if("Token"===e.$){if("EthDai"===e.a.$){e.a;return"https://mainnet.infura.io/v3/e3eef0e2435349bf9164e6f465bd7cf9"}e.a;return"https://kovan.infura.io/v3/e3eef0e2435349bf9164e6f465bd7cf9"}switch(e.a.$){case"Eth":e.a;return"https://mainnet.infura.io/v3/e3eef0e2435349bf9164e6f465bd7cf9";case"Kovan":e.a;return"https://kovan.infura.io/v3/e3eef0e2435349bf9164e6f465bd7cf9";default:e.a;return"https://dai.poa.network"}},Zh=function(e){switch(e.$){case"BlockNum":var t=e.a;return hl(jf(Ps(t)));case"EarliestBlock":return hl("earliest");case"LatestBlock":return hl("latest");default:return hl("pending")}},ep=function(e){var t=e.to,r=e.from,n=e.gas,a=e.gasPrice,i=e.value,o=e.data;return El(M([L("to",f(Bo,pl,t)),L("from",f(Bo,pl,r)),L("gas",f(Bo,yl,n)),L("gasPrice",f(Bo,gl,a)),L("value",f(Bo,gl,i)),L("data",f(Bo,vl,o))]))},tp=function(e){return{$:"BadBody",a:e}},rp=function(e){return{$:"BadStatus",a:e}},np=function(e){return{$:"BadUrl",a:e}},ap={$:"NetworkError"},ip={$:"Timeout"},op=rn,up=r(function(e,t){switch(t.$){case"BadUrl_":var r=t.a;return fi(np(r));case"Timeout_":return fi(ip);case"NetworkError_":return fi(ap);case"BadStatus_":var n=t.a,a=t.b;return fi(rp(n.statusCode));default:var n=t.a,a=t.b,i=f(op,f(Oh,"result",e),a);if("Ok"===i.$){var o=i.a;return li(o)}var u=i.a;return fi(tp(Di(u)))}}),sp=n(function(e,t,r){return Cl(M([L("id",wl(e)),L("jsonrpc",hl("2.0")),L("method",hl(t)),L("params",f(zh,Ua,r))]))}),cp=Rl,fp=r(function(e,t){e:for(;;){if("RBEmpty_elm_builtin"===t.$)return ci;var r=t.b,n=t.c,a=t.d,i=t.e,o=f(Ku,e,r);switch(o.$){case"LT":var u=e,s=a;e=u,t=s;continue e;case"EQ":return si(n);default:var u=e,s=i;e=u,t=s;continue e}}}),lp=function(e){for(;;){if("RBNode_elm_builtin"!==e.$||"RBNode_elm_builtin"!==e.d.$)return e;e=e.d}},dp=function(e){if("RBNode_elm_builtin"===e.$&&"RBNode_elm_builtin"===e.d.$&&"RBNode_elm_builtin"===e.e.$){if("RBNode_elm_builtin"===e.e.d.$&&"Red"===e.e.d.a.$){var t=e.a,r=e.b,n=e.c,a=e.d,i=(a.a,a.b),o=a.c,u=a.d,s=a.e,c=e.e,f=(c.a,c.b),l=c.c,d=c.d,p=(d.a,d.b),g=d.c,v=d.d,y=d.e,m=c.e;return h(Nl,$l,p,g,h(Nl,kl,r,n,h(Nl,$l,i,o,u,s),v),h(Nl,kl,f,l,y,m))}var t=e.a,r=e.b,n=e.c,b=e.d,i=(b.a,b.b),o=b.c,u=b.d,s=b.e,C=e.e,f=(C.a,C.b),l=C.c,d=C.d,m=C.e;return t.$,h(Nl,kl,r,n,h(Nl,$l,i,o,u,s),h(Nl,$l,f,l,d,m))}return e},hp=function(e){if("RBNode_elm_builtin"===e.$&&"RBNode_elm_builtin"===e.d.$&&"RBNode_elm_builtin"===e.e.$){if("RBNode_elm_builtin"===e.d.d.$&&"Red"===e.d.d.a.$){var t=e.a,r=e.b,n=e.c,a=e.d,i=(a.a,a.b),o=a.c,u=a.d,s=(u.a,u.b),c=u.c,f=u.d,l=u.e,d=a.e,p=e.e,g=(p.a,p.b),v=p.c,y=p.d,m=p.e;return h(Nl,$l,i,o,h(Nl,kl,s,c,f,l),h(Nl,kl,r,n,d,h(Nl,$l,g,v,y,m)))}var t=e.a,r=e.b,n=e.c,b=e.d,i=(b.a,b.b),o=b.c,C=b.d,d=b.e,E=e.e,g=(E.a,E.b),v=E.c,y=E.d,m=E.e;return t.$,h(Nl,kl,r,n,h(Nl,$l,i,o,C,d),h(Nl,$l,g,v,y,m))}return e},pp=u(function(e,t,r,n,a,i,o){if("RBNode_elm_builtin"===i.$&&"Red"===i.a.$){var u=(i.a,i.b),s=i.c,c=i.d,f=i.e;return h(Nl,r,u,s,c,h(Nl,$l,n,a,f,o))}e:for(;;){if("RBNode_elm_builtin"===o.$&&"Black"===o.a.$){if("RBNode_elm_builtin"===o.d.$){if("Black"===o.d.a.$){var l=(o.a,o.d);l.a;return hp(t)}break e}o.a,o.d;return hp(t)}break e}return t}),gp=function(e){if("RBNode_elm_builtin"===e.$&&"RBNode_elm_builtin"===e.d.$){var t=e.a,r=e.b,n=e.c,a=e.d,i=a.a,o=a.d,u=e.e;if("Black"===i.$){if("RBNode_elm_builtin"===o.$&&"Red"===o.a.$){o.a;return h(Nl,t,r,n,gp(a),u)}var s=dp(e);if("RBNode_elm_builtin"===s.$){var c=s.a,f=s.b,l=s.c,d=s.d,p=s.e;return h(_l,c,f,l,gp(d),p)}return Rl}return h(Nl,t,r,n,gp(a),u)}return Rl},vp=r(function(e,t){if("RBEmpty_elm_builtin"===t.$)return Rl;var r=t.a,n=t.b,a=t.c,i=t.d,o=t.e;if(_(e,n)<0){if("RBNode_elm_builtin"===i.$&&"Black"===i.a.$){var u=(i.a,i.d);if("RBNode_elm_builtin"===u.$&&"Red"===u.a.$){u.a;return h(Nl,r,n,a,f(vp,e,i),o)}var s=dp(t);if("RBNode_elm_builtin"===s.$){var c=s.a,l=s.b,d=s.c,p=s.d,v=s.e;return h(_l,c,l,d,f(vp,e,p),v)}return Rl}return h(Nl,r,n,a,f(vp,e,i),o)}return f(yp,e,g(pp,e,t,r,n,a,i,o))}),yp=r(function(e,t){if("RBNode_elm_builtin"===t.$){var r=t.a,n=t.b,a=t.c,i=t.d,o=t.e;if(R(e,n)){var u=lp(o);if("RBNode_elm_builtin"===u.$){var s=u.b,c=u.c;return h(_l,r,s,c,i,gp(o))}return Rl}return h(_l,r,n,a,i,f(vp,e,o))}return Rl}),mp=r(function(e,t){var r=f(vp,e,t);if("RBNode_elm_builtin"===r.$&&"Red"===r.a.$){var n=(r.a,r.b),a=r.c,i=r.d,o=r.e;return h(Nl,kl,n,a,i,o)}return r}),bp=n(function(e,t,r){var n=t(f(fp,e,r));if("Just"===n.$){var a=n.a;return l(xl,e,a,r)}return f(mp,e,r)}),Cp=function(e){return"Just"===e.$},Ep=gn,Sp=vn,Tp=r(function(e,t){return{$:"BadStatus_",a:e,b:t}}),wp=function(e){return{$:"BadUrl_",a:e}},Ip=r(function(e,t){return{$:"GoodStatus_",a:e,b:t}}),Ap={$:"NetworkError_"},Bp=function(e){return{$:"Receiving",a:e}},kp=function(e){return{$:"Sending",a:e}},Np={$:"Timeout_"},Rp=function(e){return f(ta,"application/json",f(xi,0,e))},$p=n(function(e,t,r){return Rp(l(sp,e,t,r))}),_p=f(ea,"",Ua),Lp=Te,xp=Se,Pp=function(e){if("Ok"===e.$){var t=e.a;return xp(t)}var r=e.a;return Lp(r)},Dp=function(e){return l(Zn,gr,Pp,{allowCookiesFromOtherDomains:!1,body:e.body,expect:e.resolver,headers:e.headers,method:e.method,timeout:e.timeout,tracker:ci,url:e.url})},Up=function(e){var t=e.url,r=e.method,n=e.params,a=e.decoder;return Dp({body:l($p,1,r,n),headers:yr,method:"POST",resolver:_p(up(a)),timeout:ci,url:t})},Op=n(function(e,t,r){return Up({decoder:t.decoder,method:"eth_call",params:M([ep(t),Zh(r)]),url:e})}),Mp={$:"LatestBlock"},Fp=r(function(e,t){return l(Op,e,t,Mp)}),Vp=function(e){return{$:"Perform",a:e}},Kp=sn,Hp=xp(gr),jp=r(function(e,t){return f(Kp,function(t){return xp(e(t))},t)}),qp=n(function(e,t,r){return f(Kp,function(t){return f(Kp,function(r){return xp(f(e,t,r))},r)},t)}),Gp=function(e){return l(La,qp(ka),xp(yr),e)},zp=r(function(e,t){var r=t.a;return Be(f(Kp,Ep(e),r))}),Yp=n(function(e,t,r){return f(jp,function(e){return gr},Gp(f(xa,zp(e),t)))}),Wp=n(function(e,t,r){return xp(gr)}),Jp=r(function(e,t){var r=t.a;return Vp(f(jp,e,r))});pn.Task=Pe(Hp,Yp,Wp,Jp);var Qp=Ue("Task"),Xp=cn,Zp=r(function(e,t){return Qp(Vp(f(Xp,f(Da,f(Da,xp,e),fi),f(Kp,f(Da,f(Da,xp,e),li),t))))}),eg=a(function(e,t,r,n){return f(Zp,n,f(Fp,Xh(eo(e)),l(Qh,nh(e),t,r)))}),tg=function(e){if("Token"===e.$){if("EthDai"===e.a.$){e.a;return th("0x61F399ED1D5AEC3Bc9d4B026352d5764181d6b35")}e.a;return th("0xF59ed429f9753B0498436DE1a3559AEC7a0c2a21")}switch(e.a.$){case"Eth":e.a;return th("0x61F399ED1D5AEC3Bc9d4B026352d5764181d6b35");case"Kovan":e.a;return th("0xF59ed429f9753B0498436DE1a3559AEC7a0c2a21");default:e.a;return th("0x092110996699c3E06e998d89F0f4586026e44F0F")}},rg=function(e){return{$:"BoolE",a:e}},ng=rg,ag=function(e){return{$:"StringE",a:e}},ig=ag,og=function(e){return function(t){return function(r){return function(n){return function(a){return function(i){return function(o){return function(u){return function(s){return function(c){return function(l){return function(d){return function(h){return function(p){return{data:si(f(Gf,"createOpenTrade(address[2],bool,uint256[8],string,string)",M([ih(t),ih(r),ng(n),uh(a),uh(i),uh(o),uh(u),uh(s),uh(c),uh(l),uh(d),ig(h),ig(p)]))),decoder:vu(Dh),from:ci,gas:ci,gasPrice:ci,nonce:ci,to:si(e),value:ci}}}}}}}}}}}}}}},ug=function(e){return function(t){return function(r){return function(n){return function(a){return function(i){return function(o){return function(u){return function(s){return function(c){return function(l){return function(d){return function(h){return function(p){return{data:si(f(Gf,"createOpenTrade(address[2],bool,uint256[8],string,string)",M([ih(t),ih(r),ng(n),uh(a),uh(i),uh(o),uh(u),uh(s),uh(c),uh(l),uh(d),ig(h),ig(p)]))),decoder:vu(Dh),from:ci,gas:ci,gasPrice:ci,nonce:ci,to:si(e),value:ci}}}}}}}}}}}}}}},sg=r(function(e,t){return{paymentMethods:t,price:e}}),cg=function(e){return hl(Sd(e))},fg=function(e){return f(zh,Ua,M([hl(e.fiatType),cg(e.amount)]))},lg=function(e){switch(e.$){case"Cash":return"cash";case"Bank":return"bank";default:return"custom"}},dg=function(e){return Cl(M([L("type",hl(lg(e.type_))),L("info",hl(e.info))]))},hg=function(e){var t=fg(e.price),r=f(zh,dg,e.paymentMethods);return f(xi,0,Cl(M([L("paymentmethods",r),L("price",t)])))},pg=r(function(e,t){return D(t,{value:si(e)})}),gg=function(e){return qu(jd(e))},vg=function(e){return f(ql,gg(e),qu(1e3))},yg=r(function(e,t){var r=function(){return"Token"===e.$?og:ug}();return function(){return"Native"===e.$?pg(jl(lh(t))):Ua}()(r(rh(e))(t.initiatorAddress)(tg(e))(R(t.initiatorRole,lo))(jl(t.tradeAmount))(jl(Yl(t.tradeAmount)))(jl(zl(t.tradeAmount)))(jl(t.pokeReward))(vg(t.autorecallInterval))(vg(t.autoabortInterval))(vg(t.autoreleaseInterval))(jl(ch(t.tradeAmount)))(hg(f(sg,t.price,t.paymentMethods)))(t.initiatorCommPubkey))}),mg=r(function(e,t){return{$:"CreateMined",a:e,b:t}}),bg=function(e){return{$:"CreateNeedsSig",a:e}},Cg=r(function(e,t){return{$:"CreateSigned",a:e,b:t}}),Eg=r(function(e,t){var r=al(f(yg,e,t)),n={onBroadcast:ci,onMined:si(L(mg(e),ci)),onSign:si(Cg(e))};return L(si(bg(e)),f(qo,n,r))}),Sg=r(function(e,t){return{$:"AllowanceFetched",a:e,b:t}}),Tg=n(function(e,t,r){return{$:"ApproveMining",a:e,b:t,c:r}}),wg=function(e){return{$:"ApproveNeedsSig",a:e}},Ig=n(function(e,t,r){return{$:"ApproveSigned",a:e,b:t,c:r}}),Ag=r(function(e,t){return{$:"Confirm",a:e,b:t}}),Bg=r(function(e,t){return{$:"CreateMining",a:e,b:t}}),kg={$:"NoOp"},Ng=function(e){return{appCmds:yr,chainCmd:Fo,cmd:Do,model:e}},Rg=function(e){return rd(Sd(e))},$g={$:"Error"},_g=r(function(e,t){f(cl,e+" fetch error",t);return{align:ul,label:"web3FetchError",mainParagraphs:M([M([fl('Failed to fetch "'+e+'". See console output for more info.')])]),noticeType:$g}}),Lg=r(function(e,t){return{align:ul,label:"web3MiningError",mainParagraphs:M([M([fl('Error mining "'+e+'" transaction: '+t)])]),noticeType:$g}}),xg={$:"Caution"},Pg=r(function(e,t){return{align:ul,label:"web3SigError",mainParagraphs:M([M([fl('Error signing "'+e+'" transaction: '+t)])]),noticeType:xg}}),Dg={$:"KovanDai"},Ug=function(e){e:for(;;)switch(e.$){case"Mainnet":return si(eo(Xi));case"Kovan":return si(eo(Dg));case"Private":if(100===e.a)return si(Zi(to));break e;default:break e}return ci},Og=function(e){switch(e.$){case"NoneDetected":return ci;case"OnlyNetwork":var t=e.a;return si(t);default:var r=e.a;return si(r.network)}},Mg=function(e){return f(Io,Ug,Og(e))},Fg=r(function(e,t){return 1-e(1-t)}),Vg=function(e){return f(Nu,e,5)},Kg=Fg(Vg),Hg={easing:Kg,offset:12,speed:200},jg=function(e){return{$:"External",a:e}},qg=function(e){return{$:"Internal",a:e}},Gg=function(e){return{$:"NotFound",a:e}},zg=function(e){for(;;){e=e.a}},Yg=r(function(e,t){return Qp(Vp(f(jp,e,t)))}),Wg={$:"Http"},Jg={$:"Https"},Qg=Kr,Xg=o(function(e,t,r,n,a,i){return{fragment:i,host:t,path:n,port_:r,protocol:e,query:a}}),Zg=i(function(e,t,r,n,a){if(_d(a)||f(Qg,"@",a))return ci;var i=f(Xl,":",a);if(i.b){if(i.b.b)return ci;var o=i.a,u=rd(f(Zo,o+1,a));if("Nothing"===u.$)return ci;var s=u;return si(p(Xg,e,f(ru,o,a),s,t,r,n))}return si(p(Xg,e,a,ci,t,r,n))}),ev=a(function(e,t,r,n){if(_d(n))return ci;var a=f(Xl,"/",n);if(a.b){var i=a.a;return h(Zg,e,f(Zo,i,n),t,r,f(ru,i,n))}return h(Zg,e,"/",t,r,n)}),tv=n(function(e,t,r){if(_d(r))return ci;var n=f(Xl,"?",r);if(n.b){var a=n.a;return d(ev,e,si(f(Zo,a+1,r)),t,f(ru,a,r))}return d(ev,e,ci,t,r)}),rv=r(function(e,t){if(_d(t))return ci;var r=f(Xl,"#",t);if(r.b){var n=r.a;return l(tv,e,si(f(Zo,n+1,t)),f(ru,n,t))}return l(tv,e,ci,t)}),nv=function(e){return f(su,"http://",e)?f(rv,Wg,f(Zo,7,e)):f(su,"https://",e)?f(rv,Jg,f(Zo,8,e)):ci},av=Wt,iv=Gt(zt),ov=sa,uv=r(function(e,t){return L(e,t)}),sv=_r,cv=a(function(e,t,r,n){var a=_(r,n)>0?ri:Na,i=ju(r-n),o=f(ei,1,sv(i)/e|0),u=o,s=f(xa,function(e){return t(e/u)},f(Ai,0,o));return e<=0||R(r,n)?yr:f(xa,function(e){return f(a,r,e*i)},s)}),fv=r(function(e,t){var n=r(function(t,r){return Gp(f(xa,ov(0),d(cv,e.speed,e.easing,t,r-e.offset)))});return f(Kp,function(e){var t=e.a.viewport,r=e.b.element;return f(n,t.y,r.y)},l(qp,uv,iv,av(t)))}),lv=r(function(e,t){switch(e.$){case"Refresh":var r=(e.a,L(Gd(t.wallet),Mg(t.wallet)));if("Just"===r.a.$&&"Just"===r.b.$&&"Token"===r.b.a.$){var n=r.a.a,a=r.b.a.a,i=d(eg,a,n.address,rh(eo(a)),Sg(a));return d(Qd,t,i,Fo,yr)}return Ng(t);case"ChangeRole":var o=e.a,u=t.inputs;return d(Qd,D(t,{inputs:D(u,{userRole:o})}),Do,Fo,M([function(){return"Buyer"===o.$?d(Zd,"create offer type changed","input","sell dai",0):d(Zd,"create offer type changed","input","buy dai",0)}()]));case"TradeAmountChanged":var s=e.a,u=t.inputs;return Ng(f(Jd,D(u,{daiAmount:s}),t));case"FiatAmountChanged":var s=e.a,u=t.inputs;return Ng(f(Jd,D(u,{fiatAmount:s}),t));case"FiatTypeChanged":var c=e.a,u=t.inputs;return Ng(f(Jd,D(u,{fiatType:c}),t));case"FiatTypeLostFocus":return Ng(D(t,{showFiatTypeDropdown:!1}));case"ChangePaymentMethodText":var h=e.a,u=t.inputs;return Ng(f(Jd,D(u,{paymentMethod:h}),t));case"AutorecallIntervalChanged":var p=e.a,u=t.inputs;return Ng(f(Jd,D(u,{autorecallInterval:p}),t));case"AutoabortIntervalChanged":var p=e.a,u=t.inputs;return Ng(f(Jd,D(u,{autoabortInterval:p}),t));case"AutoreleaseIntervalChanged":var p=e.a,u=t.inputs;return Ng(f(Jd,D(u,{autoreleaseInterval:p}),t));case"ShowCurrencyDropdown":var g=e.a,u=t.inputs;return d(Qd,(g?Jd(D(u,{fiatType:""})):Ua)(D(t,{showFiatTypeDropdown:g})),Do,Fo,g?M([d(Zd,"currency-selector-clicked","input","",0)]):yr);case"CreateClicked":var v=e.a,n=e.b,y=qd(t.inputs);if("Ok"===y.$){var m=y.a,b=f(Jl,n,m);return Ng(D(t,{depositAmount:si(jl(lh(b))),txChainStatus:si(f(Ag,v,b))}))}var C=y.a;return d(Qd,D(t,{errors:C}),f(Zp,ms(kg),function(){return f(fv,D(Hg,{offset:60}),"inputError")}()),Fo,yr);case"AbortCreate":return d(Qd,D(t,{txChainStatus:ci}),Do,Fo,M([d(Zd,"abort","abort","create",0)]));case"ConfirmCreate":var v=e.a,b=e.b,E=e.c,S=function(){if("Native"===v.$)return f(Eg,v,b);var e=v.a,r=function(){var t=al(l(sh,nh(e),rh(v),E)),r={onBroadcast:ci,onMined:ci,onSign:si(f(Ig,e,b))};return f(qo,r,t)}(),n=t.allowance;if("Just"===n.$){var a=n.a;return R(f(ts,a,E),ba)?L(si(wg(e)),r):f(Eg,v,b)}return L(si(wg(e)),r)}(),T=S.a,w=S.b;return d(Qd,D(t,{txChainStatus:T}),Do,w,yr);case"ApproveSigned":var a=e.a,b=e.b,I=e.c;if("Ok"===I.$){var A=I.a;return Ng(D(t,{txChainStatus:si(l(Tg,a,b,A))}))}var B=I.a;return d(Qd,D(t,{txChainStatus:ci}),Do,Fo,M([pa(f(Pg,"appove",B))]));case"AllowanceFetched":var a=e.a,k=e.b;if("Ok"===k.$){var N=k.a,$=D(t,{allowance:si(N)}),_=L($.txChainStatus,$.depositAmount);if("Just"===_.a.$&&"ApproveMining"===_.a.a.$&&"Just"===_.b.$){var x=_.a.a,b=x.b,P=_.b.a;if(R(f(ts,N,P),ba))return Ng($);var U=f(Eg,eo(a),b),T=U.a,w=U.b;return d(Qd,D($,{txChainStatus:T}),Do,w,yr)}return Ng($)}var O=k.a;return d(Qd,t,Do,Fo,M([pa(f(_g,"allowance",O))]));case"CreateSigned":var v=e.a,I=e.b;if("Ok"===I.$){var A=I.a;return Ng(D(t,{txChainStatus:si(f(Bg,v,A))}))}var B=I.a;return d(Qd,D(t,{txChainStatus:ci}),Do,Fo,M([pa(f(Pg,"create",B))]));case"CreateMined":if("Err"===e.b.$){var v=e.a,B=e.b.a;return d(Qd,t,Do,Fo,M([pa(f(Lg,"create",B))]))}var F=e.a,V=e.b.a,K=f(Io,Rg,Yd(f(Jh,F,V)));if("Just"===K.$){var H=K.a;return d(Qd,t,Do,Fo,M([da(f(Qf,F,H))]))}return d(Qd,t,Do,Fo,M([pa(f(ll,'Error getting the ID of the created offer. Check the "My Trades" page for your open offer.',V))]));case"Web3Connect":return d(Qd,t,Do,Fo,M([ga]));case"NoOp":return Ng(t);default:var j=e.a;return d(Qd,t,Do,Fo,M([j]))}}),dv=r(function(e,t){return f(Eh,function(e){return f(Ch,function(e){return e.checked&&e.testTrade(t)},e.options)},e)}),hv=r(function(e,t){return f(Ku,jd(e),jd(t))}),pv=r(function(e,t){return R(f(hv,t.derived.phaseEndTime,e),Ta)}),gv=function(e){if(""===e)return li(ci);var t=vd(e);if("Nothing"===t.$)return fi("I can't interpret this number");var r=t.a;return li(si(r))},vv=r(function(e,t){return{maxDai:t,minDai:e}}),yv=f(vv,ci,ci),mv=function(e){return l(Ih,r(function(t,r){return{dai:{max:r,min:t},fiatType:Ld(e.fiatType),paymentMethodTerms:e.paymentMethodTerms}}),f(Hd,function(e){return D(yv,{minDai:si(e)})},gv(e.minDai)),f(Hd,function(e){return D(yv,{maxDai:si(e)})},gv(e.maxDai)))},bv=r(function(e,t){var r=function(t){return f(Eh,function(e){return f(Qg,sd(e),sd(t))},e)};return f(Ch,function(e){return r(e.info)},t)}),Cv=r(function(e,t){return D(t,{paymentMethod:e})}),Ev=r(function(e,t){return D(t,{paymentMethodTerms:e})}),Sv=r(function(e,t){return f(ts,jl(e),jl(t))}),Tv=function(e){if(""===e.inputs.paymentMethod)return e;var t=e.inputs.paymentMethod,r=f(oo,e.inputs.paymentMethodTerms,M([t]));return wv(D(e,{inputs:f(Ev,r,f(Cv,"",e.inputs))}))},wv=function(e){var t=Tv(e),n=mv(t.inputs);if("Err"===n.$){return D(e,{errors:n.a})}var a=n.a,i=r(function(e,t){var r=a.paymentMethodTerms;if(r.b){return f(bv,r,t.terms.paymentMethods)}return!0}),o=function(e){var t=a.fiatType;if("Nothing"===t.$)return!0;var r=t.a;return R(e.terms.price.fiatType,r)},u=function(e){return function(){var t=a.dai.min;if("Nothing"===t.$)return!0;var r=t.a;return!R(f(Sv,e.parameters.tradeAmount,r),ba)}()&&function(){var t=a.dai.max;if("Nothing"===t.$)return!0;var r=t.a;return!R(f(Sv,e.parameters.tradeAmount,r),Ta)}()},s=r(function(e,r){return f(pv,e,r)&&f(i,e,r)&&u(r)&&o(r)&&f(dv,t.filters,r)});return D(t,{filterFunc:s})},Iv={fiatType:"",maxDai:"",minDai:"",paymentMethod:"",paymentMethodTerms:yr},Av={$:"Expires"},Bv=function(e){return L(wv({errors:yv,filterFunc:pv,filters:co(M([f(vo,!0,!0),d(So,!0,!1,!1,!1)])),inputs:Iv,showCurrencyDropdown:!1,tradeTable:_o(L(Av,Lo)),wallet:e}),Do)},kv=r(function(e,t){var r=f(ml,wc(e),t.inputs.paymentMethodTerms);return wv(D(t,{inputs:f(Ev,r,t.inputs)}))}),Nv=function(e){return wv(D(e,{filterFunc:pv,inputs:Iv}))},Rv=function(e){return{$:"TradeTableMsg",a:e}},$v=a(function(e,t,r,n){return{appCmds:n,chainCmd:r,cmd:t,model:e}}),_v=function(e){return d($v,e,Do,Fo,yr)},Lv=r(function(e,t){return D(t,{fiatType:e})}),xv=r(function(e,t){return D(t,{maxDai:e})}),Pv=r(function(e,t){return D(t,{minDai:e})}),Dv=r(function(e,t){switch(e.$){case"MinDaiChanged":var r=e.a;return _v(D(t,{inputs:f(Pv,r,t.inputs)}));case"MaxDaiChanged":var r=e.a;return _v(D(t,{inputs:f(xv,r,t.inputs)}));case"FiatTypeInputChanged":var r=e.a;return _v(D(t,{inputs:f(Lv,r,t.inputs)}));case"ShowCurrencyDropdown":var n=e.a;t.inputs;return _v(D(t,{inputs:(n?Lv(""):Ua)(t.inputs),showCurrencyDropdown:n}));case"FiatTypeLostFocus":return _v(D(t,{showCurrencyDropdown:!1}));case"PaymentMethodInputChanged":var r=e.a;return _v(D(t,{inputs:f(Cv,r,t.inputs)}));case"AddSearchTerm":return _v(Tv(t));case"RemoveTerm":var a=e.a;return _v(f(kv,a,t));case"ApplyInputs":return d($v,wv(t),Do,Fo,yr);case"ResetSearch":return _v(Nv(t));case"FiltersMsg":var i=e.a;return _v(wv(D(t,{filters:f(Jf,i,t.filters)})));case"TradeTableMsg":var o=e.a,u=f(nl,o,t.tradeTable);return d($v,D(t,{tradeTable:u.model}),f(il,Rv,u.cmd),f(Yo,Rv,u.chainCmd),f(xa,Ji(Rv),u.appCmds));case"NoOp":return _v(t);default:var s=e.a;return d($v,t,Do,Fo,M([s]))}}),Uv=a(function(e,t,r,n){return e(Cl(M([L("title",hl(t)),L("body",function(){if("Nothing"===r.$)return bl;var e=r.a;return hl(e)}()),L("image",function(){if("Nothing"===n.$)return bl;var e=n.a;return hl(e)}())])))}),Ov=function(e){if("Token"===e.$){if("EthDai"===e.a.$){e.a;return"dai"}e.a;return"kdai"}switch(e.a.$){case"Eth":e.a;return"eth";case"Kovan":e.a;return"keth";default:e.a;return"xdai"}},Mv=function(e){return e.a+"="+e.b},Fv=function(e){return e.b?"?"+f(Ri,"&",f(xa,Mv,e)):""},Vv=r(function(e,t){return"/"+(f(Ri,"/",e)+Fv(t))}),Kv=function(e){switch(e.$){case"Home":return f(Vv,M(["DAIHard"]),yr);case"Create":return f(Vv,M(["DAIHard","create"]),yr);case"Trade":var t=e.a,r=e.b;return f(Vv,M(["DAIHard","trade",Ov(t),Ni(r)]),yr);case"Marketplace":return f(Vv,M(["DAIHard","marketplace"]),yr);case"AgentHistory":var n=e.a;return f(Vv,M(["DAIHard","history",dl(n)]),yr);default:return f(Vv,yr,yr)}},Hv={$:"NotFound"},jv=function(e){return{$:"AgentHistory",a:e}},qv={$:"Create"},Gv={$:"Home"},zv={$:"Marketplace"},Yv=function(e){return{$:"Parser",a:e}},Wv=i(function(e,t,r,n,a){return{frag:n,params:r,unvisited:t,value:a,visited:e}}),Jv=r(function(e,t){return Yv(function(e){var r=e.visited,n=e.unvisited,a=e.params,i=e.frag,o=e.value;if(n.b){var u=n.a,s=n.b,c=t(u);if("Just"===c.$){var l=c.a;return M([h(Wv,f(ka,u,r),s,a,i,o(l))])}return yr}return yr})}),Qv=f(Jv,"ADDRESS",f(zo,Ph,Yd)),Xv={$:"Eth"},Zv={$:"Kovan"},ey=f(Jv,"FACTORY",function(e){switch(e){case"eth":return si(Zi(Xv));case"keth":return si(Zi(Zv));case"dai":return si(eo(Xi));case"kdai":return si(eo(Dg));case"xdai":return si(Zi(to));default:return ci}}),ty=f(Jv,"NUMBER",rd),ry=r(function(e,t){var r=t.visited,n=t.unvisited,a=t.params,i=t.frag,o=t.value;return h(Wv,r,n,a,i,e(o))}),ny=r(function(e,t){var r=t.a;return Yv(function(t){var n=t.visited,a=t.unvisited,i=t.params,o=t.frag,u=t.value;return f(xa,ry(u),r(h(Wv,n,a,i,o,e)))})}),ay=function(e){return l(La,oo,yr,e)},iy=r(function(e,t){return ay(f(xa,e,t))}),oy=function(e){return Yv(function(t){var r=t.visited,n=t.unvisited,a=t.params,i=t.frag,o=t.value;if(n.b){var u=n.a,s=n.b;return R(u,e)?M([h(Wv,f(ka,u,r),s,a,i,o)]):yr}return yr})},uy=r(function(e,t){var r=e.a,n=t.a;return Yv(function(e){return f(iy,n,r(e))})}),sy=Yv(function(e){return M([e])}),cy=f(uy,oy("DAIHard"),function(e){return Yv(function(t){return f(iy,function(e){return(0,e.a)(t)},e)})}(M([f(ny,Gv,sy),f(ny,qv,oy("create")),f(ny,Qf,f(uy,oy("trade"),f(uy,ey,ty))),f(ny,zv,oy("marketplace")),f(ny,jv,f(uy,oy("history"),Qv)),f(ny,function(e){return jv(e)},f(uy,oy("history"),Qv))]))),fy=function(e){e:for(;;){if(e.b){var t=e.a,r=e.b,n=t.unvisited;if(n.b){if(""!==n.a||n.b.b){var a=r;e=a;continue e}return si(t.value)}return si(t.value)}return ci}},ly=function(e){if(e.b){if(""!==e.a||e.b.b){var t=e.a,r=e.b;return f(ka,t,ly(r))}return yr}return yr},dy=function(e){var t=f(_i,"/",e);if(t.b&&""===t.a){var r=t.b;return ly(r)}var r=t;return ly(r)},hy=Qt,py=r(function(e,t){if("Nothing"===t.$)return si(M([e]));var r=t.a;return si(f(ka,e,r))}),gy=r(function(e,t){var r=f(_i,"=",e);if(r.b&&r.b.b&&!r.b.b.b){var n=r.a,a=r.b,i=a.a,o=hy(n);if("Nothing"===o.$)return t;var u=o.a,s=hy(i);if("Nothing"===s.$)return t;var c=s.a;return l(bp,u,py(c),t)}return t}),vy=function(e){if("Nothing"===e.$)return cp;var t=e.a;return l(La,gy,cp,f(_i,"&",t))},yy=r(function(e,t){var r=e.a;return fy(r(h(Wv,yr,dy(t.path),vy(t.query),t.fragment,Ua)))}),my=function(e){return f(xc,Hv,f(yy,cy,e))},by=aa,Cy=r(function(e,t){return f(by,e,Kv(t))}),Ey=je("connectToWeb3",function(e){return bl}),Sy=function(e){return Cl(M([L("event",hl(e.event)),L("category",hl(e.category)),L("label",hl(e.label)),L("value",wl(e.value))]))},Ty=r(function(e,t){return Cl(M([L("address",hl(dl(e))),L("signSeedMsg",hl(t))]))}),wy=je("gTagOut",Ua),Iy=je("genPrivkey",Ua),Ay=r(function(e,t){for(;;){if(!t.b)return ci;var r=t.a,n=t.b;if(e(r))return si(r);var a=e,i=n;e=a,t=i}}),By=n(function(e,t,r){return f(Io,Zc(t),f(Bo,function(e){return e.trades},f(Ay,function(t){return R(t.factory,e)},r)))}),ky=je("notifyPort",Ua),Ny=je("requestNotifyPermissionPort",function(e){return bl}),Ry=r(function(e,t){return D(t,{wallet:e})}),$y=r(function(e,t){return L(f(Jd,t.inputs,D(t,{wallet:e})),function(){var t=L(Gd(e),Mg(e));if("Just"===t.a.$&&"Just"===t.b.$&&"Token"===t.b.a.$){var r=t.a.a,n=t.b.a.a;return d(eg,n,r.address,rh(eo(n)),Sg(n))}return Do}())}),_y=r(function(e,t){return D(t,{wallet:e})}),Ly=function(e){return{$:"AllowanceFetched",a:e}},xy=r(function(e,t){return L(D(t,{wallet:e}),function(){var r=x(Gd(e),Mg(e),t.trade);if("Just"===r.a.$&&"Just"===r.b.$&&"Token"===r.b.a.$&&"LoadedTrade"===r.c.$){var n=r.a.a,a=r.b.a.a,i=r.c.a;return R(Mg(e),si(i.factory))?d(eg,a,n.address,i.creationInfo.address,Ly):Do}return Do}())}),Py=function(e){return{$:"AgentHistoryModel",a:e}},Dy=function(e){return{$:"CreateModel",a:e}},Uy=function(e){return{$:"CreateMsg",a:e}},Oy=function(e){return{$:"MarketplaceModel",a:e}},My=function(e){return{$:"TradeModel",a:e}},Fy=function(e){return{$:"TradeMsg",a:e}},Vy=r(function(e,t){switch(t.$){case"BetaLandingPage":return L(t,Do);case"CreateModel":var r=t.a,n=f($y,e,r),a=n.a,i=n.b;return L(Dy(a),f(il,Uy,i));case"TradeModel":var o=t.a,u=f(xy,e,o),s=u.a,c=u.b;return L(My(s),f(il,Fy,c));case"MarketplaceModel":var l=t.a;return L(Oy(f(_y,e,l)),Do);default:var d=t.a;return L(Py(f(Ry,e,d)),Do)}}),Ky=u(function(e,t,r,n,a,i,o){return{creationInfo:r,factory:e,id:t,parameters:n,phaseStartInfo:o,state:a,terms:i}}),Hy=function(e){return{$:"PartiallyLoadedTrade",a:e}},jy=r(function(e,t){return Hy(g(Ky,e,t,ci,ci,ci,ci,ci))}),qy=function(e){return{$:"CurrentBlockFetched",a:e}},Gy=gu(f(zo,cu,Nh)),zy=function(e){return Up({decoder:Gy,method:"eth_blockNumber",params:yr,url:e})},Yy=function(e){return f(Zp,qy,zy(e))},Wy=r(function(e,t){return{address_:e,blocknum:t}}),Jy=function(e){return Wo(function(t){return li(L(t,e))})},Qy=n(function(e,t,r){var n=t.a,a=r.a;return Wo(function(t){return f(Wh,function(t){var r=t.a,n=t.b;return f(au,rl(e(n)),a(r))},n(t))})}),Xy=r(function(e,t){return l(Qy,r(function(e,t){return e(t)}),t,e)}),Zy=vu(f(Xy,jh,f(Xy,Dh,Jy(Wy)))),em=r(function(e,t){return{data:si(f(Gf,"createdTrades(uint256)",M([uh(t)]))),decoder:Zy,from:ci,gas:ci,gasPrice:ci,nonce:ci,to:si(e),value:ci}}),tm=n(function(e,t,r){return f(Zp,r,f(Fp,Xh(e),f(em,rh(e),t)))}),rm=function(e){return{$:"CreationInfoFetched",a:e}},nm=r(function(e,t){return l(tm,e,qu(t),rm)}),am=function(e){return{$:"EventSentryMsg",a:e}},im=function(e){return{$:"BlockNumber",a:e}},om=function(e){return{$:"EventSentry",a:e}},um=function(e){return{$:"Set_elm_builtin",a:e}},sm=um(cp),cm=r(function(e,t){return L(om({blockNumber:ci,errors:yr,nodePath:t,pending:sm,ref:1,requests:cp,tagger:e,watching:sm}),f(Zp,f(zo,im,e),zy(t)))}),fm=function(e){return f(cm,am,Xh(e))},lm=r(function(e,t){return{initiatorPubkey:e,responderPubkey:t}}),dm=function(e){return{$:"PartiallyLoadedCommInfo",a:e}},hm=dm(f(lm,ci,ci)),pm=n(function(e,t,r){return{allowance:ci,blocknumOnInit:ci,chatHistoryModel:ci,eventSentry:t,eventsWaitingForChatHistory:yr,expandedPhase:Co,secureCommInfo:hm,showChatHistory:!1,showStatsModal:!1,trade:e,txChainStatus:ci,wallet:r}}),gm=a(function(e,t,r,n){return{appCmds:n,chainCmd:r,cmd:t,model:e}}),vm=n(function(e,t,r){var n=f(nm,t,r),a=fm(t),i=a.a,o=a.b;return d(gm,l(pm,f(jy,t,r),i,e),Po(M([n,o,Yy(Xh(t))])),Fo,M([ha]))}),ym=function(e){return{$:"LoadedTrade",a:e}},mm=function(e){return{$:"EventLogFetched",a:e}},bm=r(function(e,t){return{$:"GetLogs",a:e,b:t}}),Cm=ue,Em=ce,Sm=Yr,Tm=n(function(e,t,r){var n=function(e){return Em(M([e,Cm(r)]))};return f(du,function(a){var i=f(Gh,e,a);if("Ok"===i.$){var o=i.a,u=f(Gh,n(t),o);if("Ok"===u.$){var s=u.a;return Fi(s)}var c=u.a;return hu(Di(c))}return Fi(r)},Sm)}),wm=a(function(e,t,r,n){return f(dh,l(Tm,f(Oh,e,Sm),t,r),n)}),Im=n(function(e,t,r){return f(dh,f(Oh,e,t),r)}),Am=gu(Ph),Bm=gh(f(xc,mh,yh("^((0[Xx]){1})?[0-9a-fA-F]{64}$"))),km=function(e){return{$:"BlockHash",a:e}},Nm=function(e){return Bm(e)?li(km(cu(e))):fi("Given blockHash "+xh(e)+" is not valid.")},Rm=gu(Nm),$m=gh(f(xc,mh,yh("^((0[Xx]){1})?[0-9a-fA-F]+$"))),_m=function(e){return $m(e)?li(nc(cu(e))):fi("Something in here is not very hexy: "+xh(e))},Lm=gu(_m),xm=function(e){return{$:"TxHash",a:e}},Pm=function(e){return Bm(e)?li(xm(cu(e))):fi("Given txHash "+xh(e)+" is not valid.")},Dm=gu(Pm),Um=c(function(e,t,r,n,a,i,o,u,s){return{address:e,blockHash:u,blockNumber:s,data:t,logIndex:a,removed:n,topics:r,transactionHash:o,transactionIndex:i}}),Om=zr,Mm=oe,Fm=l(Im,"blockNumber",Gy,l(Im,"blockHash",Rm,l(Im,"transactionHash",Dm,l(Im,"transactionIndex",Gy,l(Im,"logIndex",Gy,d(wm,"removed",Om,!1,l(Im,"topics",Mm(Lm),l(Im,"data",pu,l(Im,"address",Am,Fi(Um)))))))))),Vm=function(e){return f(zh,function(e){if("Just"===e.$){var t=e.a;return hl(qf(t))}return bl},e)},Km=function(e){return Cl(M([L("fromBlock",Zh(e.fromBlock)),L("toBlock",Zh(e.toBlock)),L("address",pl(e.address)),L("topics",Vm(e.topics))]))},Hm=r(function(e,t){return Up({decoder:Mm(Fm),method:"eth_getLogs",params:M([Km(t)]),url:e})}),jm=function(e){return{$:"BlockNum",a:e}},qm=n(function(e,t,r){var n=r.a,a=r.b;return"BlockNum"===t.toBlock.$?f(Kp,function(r){return f(jp,vi(r),f(Hm,e,D(t,{fromBlock:jm(n),toBlock:jm(a)})))},f(Hm,e,t)):f(Hm,e,t)}),Gm=r(function(e,t){var r=t.a;return um(l(xl,e,gr,r))}),zm=a(function(e,t,r,n){var a=r.a,i={logCount:0,logFilter:n,ref:a.ref,tagger:t,watchOnce:e},o=D(a,{ref:a.ref+1,requests:l(xl,a.ref,i,a.requests)}),u=a.blockNumber;if("Just"===u.$){var s=u.a;return function(e){return x(om(D(o,{watching:f(Gm,a.ref,o.watching)})),f(Zp,f(zo,bm(a.ref),a.tagger),e),a.ref)}(l(qm,a.nodePath,n,L(s,s)))}return x(om(D(o,{pending:f(Gm,a.ref,o.pending)})),Do,a.ref)}),Ym=zm(!1),Wm=r(function(e,t){var r=function(){var e=fm(t.factory),r=e.a,n=e.b;return function(e){var t=e.a,r=e.b,a=e.c;return x(t,Po(M([n,r])),a)}(l(Ym,mm,r,{address:t.creationInfo.address,fromBlock:jm(t.creationInfo.blocknum),toBlock:Mp,topics:yr}))}(),n=r.a,a=r.b;return d(gm,l(pm,ym(t),n,e),Po(M([a,Yy(Xh(t.factory))])),Fo,M([ha]))}),Jm=function(e){return{data:si(f(Gf,"abort()",yr)),decoder:Fi(gr),from:ci,gas:ci,gasPrice:ci,nonce:ci,to:si(e),value:ci}},Qm=function(e){return{data:si(f(Gf,"burn()",yr)),decoder:Fi(gr),from:ci,gas:ci,gasPrice:ci,nonce:ci,to:si(e),value:ci}},Xm=function(e){return{data:si(f(Gf,"claim()",yr)),decoder:Fi(gr),from:ci,gas:ci,gasPrice:ci,nonce:ci,to:si(e),value:ci}},Zm=r(function(e,t){return{data:si(f(Gf,"initiatorStatement(string)",M([ig(t)]))),decoder:Fi(gr),from:ci,gas:ci,gasPrice:ci,nonce:ci,to:si(e),value:ci}}),eb=function(e){return{data:si(f(Gf,"recall()",yr)),decoder:Fi(gr),from:ci,gas:ci,gasPrice:ci,nonce:ci,to:si(e),value:ci}},tb=function(e){return{data:si(f(Gf,"release()",yr)),decoder:Fi(gr),from:ci,gas:ci,gasPrice:ci,nonce:ci,to:si(e),value:ci}},rb=r(function(e,t){return{data:si(f(Gf,"responderStatement(string)",M([ig(t)]))),decoder:Fi(gr),from:ci,gas:ci,gasPrice:ci,nonce:ci,to:si(e),value:ci}}),nb={$:"Invalid"},ab=r(function(e,t){return{amount:t,fiatType:e}}),ib=f(du,function(e){var t=cd(e);if("Just"===t.$){var r=t.a;return Fi(r)}return hu("Can't convert that to a BigInt")},pu),ob=l(Mi,ab,f(Fh,0,pu),f(Fh,1,ib)),ub={$:"Bank"},sb={$:"Cash"},cb=function(e){switch(e){case"cash":return si(sb);case"bank":return si(ub);case"custom":return si(Fd);default:return ci}},fb=f(du,function(e){var t=cb(e);if("Just"===t.$){var r=t.a;return Fi(r)}return hu("")},pu),lb=l(Mi,Vd,f(Oh,"type",fb),f(Oh,"info",pu)),db=function(e){var t=l(Mi,sg,f(Oh,"price",ob),f(Oh,"paymentmethods",Mm(lb)));return f(op,t,e)},hb=r(function(e,t){return{commPubkey:t,responder:e}}),pb=r(function(e,t){var n=r(function(t,r){return l(Xo,t,t+2*r,e)}),a=f(zo,Nh,au(ti(2)));return f(Wh,function(t){return f(au,function(e){return f(n,t+64,e)},Nh(l(Xo,t,t+64,e)))},a(t))}),gb=n(function(e,t,r){var n=r.a,a=r.b,i=r.c,o=function(e){return 63&e|n<<6};return a?1===a?x(0,0,f(e,o(t),i)):x(o(t),a-1,i):128&t?192==(224&t)?x(31&t,1,i):224==(240&t)?x(15&t,2,i):x(7&t,3,i):x(0,0,f(e,t,i))}),vb=n(function(e,t,r){var n=l(Ra,gb(e),x(0,0,t),r);if(n.b)return fi("invalid UTF-8 sequence");var a=n.c;return li(a)}),yb=j,mb=function(e){return As(yb(e))},bb=function(e){return l(vb,r(function(e,t){return U(t,mb(e))}),"",e)},Cb=Wo(function(e){var t=e.a,r=e.b;return f(au,f(tu,t,r),f(Wh,bb,f(Wh,f(zo,xa(Nh),Ah),f(au,ml(f(zo,_d,ns)),f(au,tc(2),f(pb,t,nu(r)))))))}),Eb=f(dh,f(Mh,1,Cb),f(dh,f(Mh,0,Dh),Fi(hb))),Sb=r(function(e,t){return{commPubkey:t,terms:e}}),Tb=f(dh,f(Mh,1,Cb),f(dh,f(Mh,0,Cb),Fi(Sb))),wb=function(e){return{statement:e}},Ib=f(dh,f(Mh,0,Cb),Fi(wb)),Ab=function(e){return{statement:e}},Bb=f(dh,f(Mh,0,Cb),Fi(Ab)),kb={$:"AbortedEvent"},Nb={$:"BurnedEvent"},Rb={$:"ClaimedEvent"},$b=function(e){return{$:"CommittedEvent",a:e}},_b=function(e){return{$:"InitiatedEvent",a:e}},Lb=function(e){return{$:"InitiatorStatementLogEvent",a:e}},xb={$:"PokeEvent"},Pb={$:"RecalledEvent"},Db={$:"ReleasedEvent"},Ub=function(e){return{$:"ResponderStatementLogEvent",a:e}},Ob=f(Oh,"topics",f(Fh,0,Lm)),Mb=function(e){return nc(f(Ri,"",f(xa,f(zo,Ps,uc),Kf(f(xa,yi,Zs(e))))))},Fb=f(du,function(e){return R(e,Mb("Initiated(string,string)"))?f(Oi,_b,Tb):R(e,Mb("Committed(address,string)"))?f(Oi,$b,Eb):R(e,Mb("Recalled()"))?Fi(Pb):R(e,Mb("Claimed()"))?Fi(Rb):R(e,Mb("Aborted()"))?Fi(kb):R(e,Mb("Released()"))?Fi(Db):R(e,Mb("Burned()"))?Fi(Nb):R(e,Mb("InitiatorStatementLog(string)"))?f(Oi,Lb,Ib):R(e,Mb("ResponderStatementLog(string)"))?f(Oi,Ub,Bb):R(e,Mb("Poke()"))?Fi(xb):hu("Unrecognized topic hash")},Ob),Vb=function(e){return"Buyer"===e.initiatorRole.$?e.tradeAmount:e.buyerDeposit},Kb=function(e){switch(e.$){case"Invalid":return ci;case"PartiallyLoadedTrade":var t=e.a;return si(t.factory);default:var r=e.a;return si(r.factory)}},Hb=function(e){return R(e.buyerDeposit,Yl(e.tradeAmount))&&R(e.abortPunishment,zl(e.tradeAmount))},jb=s(function(e,t,r,n,a,i,o,u){return{creationInfo:r,derived:u,factory:e,id:t,parameters:n,phaseStartInfo:o,state:a,terms:i}}),qb=r(function(e,t){return Vl(jd(t)+jd(e))}),Gb=function(e){var t=Bd(Sd(e.amount));if("Just"===t.$){return t.a}f(cl,"Error converting FiatValue to float--string -> float failed!",e);return 0},zb=r(function(e,t){return(t-e)/e}),Yb=r(function(e,t){var r=Gb(t),n=kd(e);return"USD"===t.fiatType?si(f(zb,n,r)):ci}),Wb=n(function(e,t,r){var n=function(){switch(t.phase.$){case"Open":return e.autorecallInterval;case"Committed":return e.autoabortInterval;case"Judgment":return e.autoreleaseInterval;default:return Vl(0)}}();return{margin:f(Yb,e.tradeAmount,r.price),phaseEndTime:function(){return"Closed"===t.phase.$?Vl(f(Nu,2,53)-1):f(qb,t.phaseStartTime,n)}()}}),Jb=function(e){var t=x(L(e.creationInfo,e.parameters),L(e.state,e.terms),e.phaseStartInfo);if("Just"===t.a.a.$&&"Just"===t.a.b.$&&"Just"===t.b.a.$&&"Just"===t.b.b.$&&"Just"===t.c.$){var r=t.a,n=r.a.a,a=r.b.a,i=t.b,o=i.a.a,u=i.b.a,s=t.c.a;return ym(v(jb,e.factory,e.id,n,a,o,u,s,l(Wb,a,o,u)))}return Hy(e)},Qb=r(function(e,t){switch(t.$){case"PartiallyLoadedTrade":var r=t.a;return Jb(D(r,{creationInfo:si(e)}));case"LoadedTrade":f(cl,"Trying to update creation info on a trade that's already fully loaded!","");return t;default:return nb}}),Xb=r(function(e,t){switch(t.$){case"PartiallyLoadedTrade":var r=t.a;return Jb(D(r,{parameters:si(e)}));case"LoadedTrade":t.a,f(cl,"Trying to update parameters on a trade that's already fully loaded!","");return t;default:return nb}}),Zb=r(function(e,t){switch(t.$){case"PartiallyLoadedTrade":var r=t.a;return Jb(D(r,{phaseStartInfo:si(e)}));case"LoadedTrade":t.a,f(cl,"Trying to update phaseStartInfo on a trade that's already fully loaded!","");return t;default:return nb}}),eC=r(function(e,t){switch(t.$){case"PartiallyLoadedTrade":var r=t.a;return Jb(D(r,{state:si(e)}));case"LoadedTrade":var n=t.a;return ym(D(n,{state:e}));default:return nb}}),tC=r(function(e,t){switch(t.$){case"PartiallyLoadedTrade":var r=t.a;return Jb(D(r,{terms:si(e)}));case"LoadedTrade":t.a,f(cl,"Trying to update terms on a trade that's already fully loaded!","");return t;default:return nb}}),rC=c(function(e,t,r,n,a,i,o,u,s){return{abortPunishment:a,autoabortInterval:o,autorecallInterval:i,autoreleaseInterval:u,beneficiaryDeposit:n,initiatedByCustodian:t,initiator:e,pokeReward:s,tradeAmount:r}}),nC=vu(f(Xy,jh,f(Xy,jh,f(Xy,jh,f(Xy,jh,f(Xy,jh,f(Xy,jh,f(Xy,jh,f(Xy,uu,f(Xy,Dh,Jy(rC))))))))))),aC=function(e){return{data:si(f(Gf,"getParameters()",yr)),decoder:nC,from:ci,gas:ci,gasPrice:ci,nonce:ci,to:si(e),value:ci}},iC=function(e){return f(Bo,function(e){return Vl(1e3*e)},rd(Sd(e)))},oC=function(e){return Hl(e)},uC=a(function(e,t,r,n){if("Err"===t.$){var a=t.a;return fi(a)}var i=t.a;if("Err"===r.$){var a=r.a;return fi(a)}var o=r.a;if("Err"===n.$){var a=n.a;return fi(a)}var u=n.a;return li(l(e,i,o,u))}),sC=function(e){var t=f($d,"error converting BigInt to Time.Posix",iC(e.autoabortInterval)),r=f($d,"error converting BigInt to Time.Posix",iC(e.autoreleaseInterval)),a=f($d,"error converting BigInt to Time.Posix",iC(e.autorecallInterval));return d(uC,n(function(t,r,n){return{abortPunishment:oC(e.abortPunishment),autoabortInterval:r,autorecallInterval:t,autoreleaseInterval:n,buyerDeposit:oC(e.beneficiaryDeposit),initiatorAddress:e.initiator,initiatorRole:e.initiatedByCustodian?lo:fo,pokeReward:oC(e.pokeReward),tradeAmount:oC(e.tradeAmount)}}),a,t,r)},cC=n(function(e,t,r){return f(Zp,r,f(jp,sC,f(Fp,Xh(e),aC(t))))}),fC=function(e){return function(t){return function(r){return function(n){return function(a){return function(i){return function(o){return function(u){return function(s){return function(c){return{v0:e,v1:t,v2:r,v3:n,v4:a,v5:i,v6:o,v7:u,v8:s,v9:c}}}}}}}}}}},lC=vu(f(Xy,jh,f(Xy,jh,f(Xy,jh,f(Xy,jh,f(Xy,jh,f(Xy,jh,f(Xy,jh,f(Xy,jh,f(Xy,jh,f(Xy,jh,Jy(fC)))))))))))),dC=function(e){return{data:si(f(Gf,"getPhaseStartInfo()",yr)),decoder:lC,from:ci,gas:ci,gasPrice:ci,nonce:ci,to:si(e),value:ci}},hC=i(function(e,t,r,n,a){if("Nothing"===t.$)return ci;var i=t.a;if("Nothing"===r.$)return ci;var o=r.a;if("Nothing"===n.$)return ci;var u=n.a;if("Nothing"===a.$)return ci;var s=a.a;return si(d(e,i,o,u,s))}),pC=function(e){return h(hC,a(function(t,r,n,a){return{claimedBlock:e.v3,claimedTime:n,closedBlock:e.v4,closedTime:a,committedBlock:e.v2,committedTime:r,openedBlock:e.v1,openedTime:t}}),iC(e.v6),iC(e.v7),iC(e.v8),iC(e.v9))},gC=n(function(e,t,r){return f(Zp,r,f(jp,pC,f(Fp,Xh(e),dC(t))))}),vC=i(function(e,t,r,n,a){return{balance:e,closedReason:a,phase:t,phaseStartTimestamp:r,responder:n}}),yC=vu(f(Xy,jh,f(Xy,Dh,f(Xy,jh,f(Xy,jh,f(Xy,jh,Jy(vC))))))),mC=function(e){return{data:si(f(Gf,"getState()",yr)),decoder:yC,from:ci,gas:ci,gasPrice:ci,nonce:ci,to:si(e),value:ci}},bC={$:"Aborted"},CC={$:"Burned"},EC={$:"NotClosed"},SC={$:"Recalled"},TC={$:"Released"},wC=function(e){switch(f(xc,99,rd(Sd(e)))){case 0:return si(EC);case 1:return si(SC);case 2:return si(bC);case 3:return si(TC);case 4:return si(CC);default:return ci}},IC=function(e){switch(f(xc,99,rd(Sd(e)))){case 1:return si(Co);case 2:return si(mo);case 3:return si(bo);case 4:return si(yo);default:return ci}},AC=function(e){return R(e,th("0x0000000000000000000000000000000000000000"))?ci:si(e)},BC=a(function(e,t,r,n){if("Nothing"===t.$)return ci;var a=t.a;if("Nothing"===r.$)return ci;var i=r.a;if("Nothing"===n.$)return ci;var o=n.a;return si(l(e,a,i,o))}),kC=function(e){var t=iC(e.phaseStartTimestamp),r=IC(e.phase),a=wC(e.closedReason);return d(BC,n(function(t,r,n){return{balance:oC(e.balance),closedReason:n,phase:t,phaseStartTime:r,responder:AC(e.responder)}}),r,t,a)},NC=n(function(e,t,r){return f(Zp,r,f(jp,kC,f(Fp,Xh(e),mC(t))))}),RC=i(function(e,t,r,n,a){return Po(M([l(cC,e,t,r),l(NC,e,t,n),l(gC,e,t,a)]))}),$C=function(e){var t=Rg(e);if("Just"===t.$){return t.a}f(cl,"Warning! BigInt to Int conversion failed!",Sd(e));return 0},_C=a(function(e,t,r,n){return{encapsulatedKey:e,iv:t,message:n,tag:r}}),LC=n(function(e,t,r){for(;;){var n=f(Ya,32,e),a=n.a,i=n.b;if(_(ni(a),32)<0)return f(ai,!0,{nodeList:t,nodeListSize:r,tail:a});var o=i,u=f(ka,Ga(a),t),s=r+1;e=o,t=u,r=s}}),xC=function(e){return e.b?l(LC,e,yr,0):qa},PC=tn,DC=function(e){var t=h(PC,_C,f(Oh,"encapsulation",pu),f(Oh,"iv",pu),f(Oh,"tag",pu),f(Oh,"encrypted",pu)),r=Mm(t),n=f(Gh,r,e);if("Err"===n.$){var a=n.a;return fi(Di(a))}var i=n.a;return function(e){var t=L(f(Zc,0,e),f(Zc,1,e));if("Just"===t.a.$&&"Just"===t.b.$){var r=t.a.a,n=t.b.a;return li(L(r,n))}return fi("Decoded list has less than 2 items.")}(xC(i))},UC=function(e){var t=function(e){var t=Qo(e);return t>1114111?fi("string is too long"):li(f(Is,yb(t),e))};return f(au,Ri(""),Ah(f(xa,t,e)))},OC=function(e){var t=e.a,r=e.b;return UC(M([t.encapsulatedKey,t.iv,t.tag,t.message,r.encapsulatedKey,r.iv,r.tag,r.message]))},MC=r(function(e,t){return Cl(M([L("message",hl(e)),L("pubkeyHexStrings",f(zh,hl,M([t.initiatorPubkey,t.responderPubkey])))]))}),FC=function(e){return{$:"LoadedCommInfo",a:e}},VC=r(function(e,t){return{initiatorPubkey:e,responderPubkey:t}}),KC=function(e){var t=L(e.initiatorPubkey,e.responderPubkey);if("Just"===t.a.$&&"Just"===t.b.$){var r=t.a.a,n=t.b.a;return FC(f(VC,r,n))}return dm(e)},HC=r(function(e,t){if("PartiallyLoadedCommInfo"===t.$){var r=t.a;return KC(D(r,{initiatorPubkey:si(e)}))}var n=t.a;return FC(D(n,{initiatorPubkey:e}))}),jC=r(function(e,t){if("PartiallyLoadedCommInfo"===t.$){var r=t.a;return KC(D(r,{responderPubkey:si(e)}))}var n=t.a;return FC(D(n,{responderPubkey:e}))}),qC=r(function(e,t){var r=L(t,e);if("Initiator"===r.a.$){if("Buyer"===r.b.$){r.a,r.b;return fo}r.a,r.b;return lo}if("Buyer"===r.b.$){r.a,r.b;return lo}r.a,r.b;return fo}),GC=r(function(e,t){for(;;){if(!e.b)return t;var r=e.a,n=e.b,a=yi(r),i=f(nd,a,n),o=$s(f(lc,a,n)),u=U(t,M([o])),s=i,c=u;e=s,t=c}}),zC=function(e){var t=xC(f(GC,Zs(e),yr));return l(zd,uv,h(hC,_C,f(Zc,0,t),f(Zc,1,t),f(Zc,2,t),f(Zc,3,t)),h(hC,_C,f(Zc,4,t),f(Zc,5,t),f(Zc,6,t),f(Zc,7,t)))},YC=r(function(e,t){if("Statement"===t.$){t.a;return l(fa,"New Message from Trade",ci,ci)}var r=t.a,n=function(){switch(r.$){case"Initiated":return"Trade Opened.";case"Committed":return e?"Someone has committed to the Trade!":"You are now committed to the Trade!";case"Recalled":return"Trade recalled.";case"Claimed":return"Payment has been confirmed by the Buyer.";case"Aborted":return"Trade aborted by Buyer.";case"Released":return"Trade released by Seller.";default:return"Trade burned by Seller."}}();return l(fa,n,ci,ci)}),WC={$:"Aborted"},JC={$:"Burned"},QC={$:"Claimed"},XC=function(e){return{$:"Committed",a:e}},ZC=function(e){return{$:"Encrypted",a:e}},eE={$:"FailedDecode"},tE={$:"Initiated"},rE={$:"Recalled"},nE={$:"Released"},aE=function(e){return{$:"StateChange",a:e}},iE=function(e){return{$:"Statement",a:e}},oE=fr,uE=cr,sE=r(function(e,t){var r=ni(e),n=32-ni(t.tail)-r,a=l(oE,32,t.tail,e);return n<0?{nodeList:f(ka,Ga(a),t.nodeList),nodeListSize:t.nodeListSize+1,tail:l(uE,n,r,e)}:n?{nodeList:t.nodeList,nodeListSize:t.nodeListSize,tail:a}:{nodeList:f(ka,Ga(a),t.nodeList),nodeListSize:t.nodeListSize+1,tail:ja}}),cE=or,fE=y,lE=a(function(e,t,r,n){var a=Wc&t>>>e;if(_(a,ni(n))>-1){if(5===e)return f(cE,Ga(r),n);var i=za(d(lE,e-Ha,t,r,ja));return f(cE,i,n)}var o=f(Jc,a,n);if("SubTree"===o.$){var u=o.a,i=za(d(lE,e-Ha,t,r,u));return l(rf,a,i,n)}var i=za(d(lE,e-Ha,t,r,fE(o)));return l(rf,a,i,n)}),dE=r(function(e,t){var r=t.a,n=t.b,a=t.c,i=t.d,o=ni(i),u=ni(e),s=r+(u-o);if(R(u,32)){if(_(s>>>Ha,1<0){var c=n+Ha,f=d(lE,c,r,e,fE(za(a)));return d(Ma,s,c,f,ja)}return d(Ma,s,n,d(lE,n,r,e,a),ja)}return d(Ma,s,n,a,e)}),hE=r(function(e,t){var r=(t.a,t.c,t.d),n=ni(e),a=32-ni(r)-n,i=l(oE,32,r,e),o=f(dE,i,t);if(a<0){var u=l(uE,a,n,e);return f(dE,u,o)}return o}),pE=ur,gE=function(e){var t=e.a,n=e.c,a=e.d,i=r(function(e,t){if("SubTree"===e.$){var r=e.a;return l(pE,i,t,r)}return f(ka,e,t)});return{nodeList:l(pE,i,yr,n),nodeListSize:t/32|0,tail:a}},vE=r(function(e,t){var n=(e.d,t.a),a=t.c,i=t.d;if(_(n,128)<1){var o=r(function(e,t){if("SubTree"===e.$){var r=e.a;return l(pE,o,t,r)}var n=e.a;return f(hE,n,t)});return f(hE,i,l(pE,o,e,a))}var o=r(function(e,t){if("SubTree"===e.$){var r=e.a;return l(pE,o,t,r)}var n=e.a;return f(sE,n,t)});return f(ai,!0,f(sE,i,l(pE,o,gE(e),a)))}),yE=r(function(e,t){if("Nothing"===e.$)return t;var r=e.a;return f(ka,r,t)}),mE=f(La,yE,yr),bE=n(function(e,t,r){var n=qC(r.trade.parameters.initiatorRole),a=function(){switch(t.$){case"InitiatedEvent":return si(aE(tE));case"CommittedEvent":var r=t.a;return si(aE(XC(r.responder)));case"RecalledEvent":return si(aE(rE));case"ClaimedEvent":return si(aE(QC));case"AbortedEvent":return si(aE(WC));case"ReleasedEvent":return si(aE(nE));case"BurnedEvent":return si(aE(JC));case"InitiatorStatementLogEvent":var r=t.a;return si(iE({blocknum:e,message:function(){var e=zC(r.statement);if("Just"===e.$){var t=e.a;return ZC(t)}return eE}(),who:n(To)}));case"ResponderStatementLogEvent":var r=t.a;return si(iE({blocknum:e,message:function(){var e=zC(r.statement);if("Just"===e.$){var t=e.a;return ZC(t)}return eE}(),who:n(wo)}));default:return ci}}(),i=f(Bo,function(t){return{blocknum:e,eventInfo:t,time:ci}},a),o=f(vE,r.history,xC(mE(M([i])))),u=_(e,r.lastNotificationBlocknum)>0?L(f(Bo,YC(R(r.userRole,r.trade.parameters.initiatorRole)),a),e):L(ci,r.lastNotificationBlocknum),s=u.a;return x(D(r,{history:o,lastNotificationBlocknum:u.b}),function(){return"Just"===a.$&&"Statement"===a.a.$}(),mE(M([s])))}),CE=Gr,EE=function(e){var t=l(Mi,uv,f(Oh,"id",CE),f(Oh,"message",pu));return f(Hd,Di,f(Gh,t,e))},SE=function(e){return{$:"Decrypted",a:e}},TE=a(function(e,t,r,n){return{appCmds:n,maybeMessageSubmit:r,model:e,shouldCallDecrypt:t}}),wE=r(function(e,t){switch(e.$){case"NewEvent":var r=e.a,n=r.a,a=r.b,i=l(bE,n,a,t),o=i.a,u=i.b,s=i.c;return d(TE,o,u,ci,s);case"MessageInputChanged":var c=e.a;return d(TE,D(t,{messageInput:c}),!1,ci,yr);case"MessageSubmit":return d(TE,D(t,{messageInput:""}),!1,si(t.messageInput),yr);default:var h=e.a,p=EE(h);if("Ok"===p.$){var g=p.a,v=g.a,y=g.b,m=f(Zc,v,t.history);if("Just"===m.$){var b=m.a,C=b.eventInfo;if("Statement"===C.$){var E=C.a,S=D(E,{message:SE(y)}),T=D(b,{eventInfo:iE(S)}),w=l(af,v,T,t.history);return d(TE,D(t,{history:w}),!1,ci,yr)}return d(TE,t,!1,ci,M([pa(f(ll,"got a decryption result, but for an event that is not a message!",b))]))}return d(TE,t,!1,ci,M([pa(f(ll,"got a decryption result, but for an id out of bounds!",L(v,t.history)))]))}var I=p.a;return d(TE,t,!1,ci,M([pa(f(ll,"Error decoding decryption result",I))]))}}),IE=r(function(e,t){return{$:"ActionMined",a:e,b:t}}),AE=r(function(e,t){return{$:"ActionSigned",a:e,b:t}}),BE=function(e){return{onBroadcast:ci,onMined:si(L(IE(e),ci)),onSign:si(AE(e))}},kE=je("encryptToPubkeys",Ua),NE=n(function(e,t,r){return{data:si(f(Gf,"commit(address,string)",M([ih(t),ig(r)]))),decoder:Fi(gr),from:ci,gas:ci,gasPrice:ci,nonce:ci,to:si(e),value:ci}}),RE=n(function(e,t,r){return{data:si(f(Gf,"commit(address,string)",M([ih(t),ig(r)]))),decoder:Fi(gr),from:ci,gas:ci,gasPrice:ci,nonce:ci,to:si(e),value:ci}}),$E=function(e){return{$:"CommitMined",a:e}},_E={$:"CommitNeedsSig"},LE=function(e){return{$:"CommitSigned",a:e}},xE=n(function(e,t,r){var n=function(){return"Token"===e.factory.$?RE:NE}(),a=al(function(){return"Token"===e.factory.$?Ua:pg(jl(Vb(e.parameters)))}()(l(n,e.creationInfo.address,t,r)));return L(si(_E),f(qo,{onBroadcast:ci,onMined:si(L($E,ci)),onSign:si(LE)},a))}),PE=r(function(e,t){return Cl(M([L("id",wl(e)),L("encapsulation",hl(t.encapsulatedKey)),L("iv",hl(t.iv)),L("tag",hl(t.tag)),L("encrypted",hl(t.message))]))}),DE=je("decryptMessage",Ua),UE=function(e){var t=e.a,n=r(function(e,t){var r=t.a,n=t.b;return L(r-1,f(ka,L(r,e),n))});return l(Ea,n,L(t-1,yr),e).b},OE=r(function(e,t){return Po(f(xa,function(e){var r=e.a,n=e.b,a=n.eventInfo;if("Statement"===a.$){var i=a.a,o=i.message;if("Encrypted"===o.$){var u=o.a,s=function(){return"Initiator"===t.$?u.a:u.b}();return DE(f(PE,r,s))}return Do}return Do},UE(e.history)))}),ME=function(e){if("Just"===e.$){return e.a}return ci},FE=function(e){var t=ME(l(zd,Ao,function(){var t=e.trade;if("LoadedTrade"===t.$){var r=t.a;return si(r)}return ci}(),f(Bo,function(e){return e.address},Gd(e.wallet)))),r=L(e.chatHistoryModel,t);if("Just"===r.a.$&&"Just"===r.b.$){var n=r.a.a,a=r.b.a;return f(OE,n,a)}return Do},VE=r(function(e,t){return f(r(function(e,t){for(;;){var r=t.a,n=t.b,a=t.c;if(!e.b)return x(r,n,a);var i=e.a,o=i.a,u=i.b,s=e.b,c=l(bE,o,u,r),d=c.a,h=c.b,p=c.c,g=s,v=x(d,n||h,f(oo,a,p));e=g,t=v}}),e,x(t,!1,yr))}),KE=o(function(e,t,r,n,a,i){return{history:n,lastNotificationBlocknum:a,messageInput:i,trade:t,userRole:r,wallet:e}}),HE=i(function(e,t,r,n,a){return f(VE,n,p(KE,e,r,t,qa,a,""))}),jE=function(e){return{$:"ChatHistoryMsg",a:e}},qE=a(function(e,t,r,n){var a=x(t,Gd(e),r);if("LoadedTrade"===a.a.$&&"Just"===a.b.$&&"Just"===a.c.$){var i=a.a.a,o=a.b.a,u=a.c.a,s=f(ko,i,o.address);if("Just"===s.$){var c=s.a;return function(e){var t=e.a,r=e.b,n=e.c;return x(si(t),r,f(xa,Ji(jE),n))}(h(HE,e,c,i,n,u))}return x(ci,!1,yr)}return x(ci,!1,yr)}),GE={$:"Abort"},zE=r(function(e,t){return{$:"ActionMining",a:e,b:t}}),YE=function(e){return{$:"ActionNeedsSig",a:e}},WE=function(e){return{$:"ApproveMining",a:e}},JE={$:"ApproveNeedsSig"},QE=function(e){return{$:"ApproveSigned",a:e}},XE={$:"Burn"},ZE={$:"Claim"},eS=function(e){return{$:"CommitMining",a:e}},tS=function(e){return{$:"ConfirmingAction",a:e}},rS=r(function(e,t){return{$:"ConfirmingCommit",a:e,b:t}}),nS=function(e){return{$:"ParametersFetched",a:e}},aS=function(e){return{$:"PhaseInfoFetched",a:e}},iS={$:"Poke"},oS={$:"Recall"},uS={$:"Release"},sS=function(e){return{$:"StartContractAction",a:e}},cS=function(e){return{$:"StateFetched",a:e}},fS=function(e){switch(e.$){case"Poke":return"poke";case"Recall":return"recall";case"Claim":return"claim";case"Abort":return"abort";case"Release":return"release";default:return"burn"}},lS=function(e){return d(gm,e,Do,Fo,yr)},dS={align:ul,label:"cantFindTradeWillRetry",mainParagraphs:M([M([fl("Can't find a trade by that ID. I'll try again in half a second.")])]),noticeType:$g},hS=r(function(e,t){if("Err"===t.$){var r=t.a;return f(_g,e,r)}if("Nothing"===t.a.$){t.a;return f(ll,"Couldn't decode the fetched \""+e+'" result.',ci)}return f(ll,"fromBadFetchResultMaybe being called with an 'OK (Just a)' value",t)}),pS={align:ul,label:"tradeParametersNotDefault",mainParagraphs:M([M([fl("Sorry, I'm not yet able to deal with this kind of trade. This must have been created by some other DAIHard interface.")])]),noticeType:$g},gS=eo(Xi),vS=n(function(e,t,r){return l(bp,e,Bo(function(e){return D(e,{logCount:Ti(t)+e.logCount})}),r)}),yS=r(function(e,t){var r=t.a;return um(f(mp,e,r))}),mS=n(function(e,t,r){var n=e.a,a=f(fp,t,n.requests);if("Nothing"===a.$)return L(om(n),Do);var i=a.a,o=L(i.watchOnce,Ql(r));if("Nothing"===o.b.$){o.b;return L(om(D(n,{requests:l(vS,t,r,n.requests)})),Do)}if(o.a){var u=o.b.a;return L(om(D(n,{requests:l(vS,t,r,n.requests),watching:f(yS,t,n.watching)})),f(Yg,i.tagger,xp(u)))}return L(om(D(n,{requests:l(vS,t,r,n.requests)})),Po(f(xa,function(e){return f(Yg,i.tagger,xp(e))},r)))}),bS=_e,CS=r(function(e,t){return f(Zp,f(zo,im,t),f(Kp,function(t){return zy(e)},bS(2e3)))}),ES=n(function(e,t,r){var n=r.a,a=r.b;return f(Hm,e,D(t,{fromBlock:jm(n),toBlock:jm(a)}))}),SS=n(function(e,t,r){for(;;){if("RBEmpty_elm_builtin"===r.$)return t;var n=r.b,a=r.c,i=r.d,o=r.e,u=e,s=l(e,n,a,l(SS,e,t,i)),c=o;e=u,t=s,r=c}}),TS=r(function(e,t){return l(SS,xl,t,e)}),wS=r(function(e,t){var r=e.a,n=t.a;return um(f(TS,r,n))}),IS=r(function(e,t){var r=t.a;if("BlockNumber"===e.$){if("Ok"===e.a.$){var a=e.a.a,i=n(function(e,t,n){return Po(f(xa,function(t){return f(Zp,f(zo,bm(t.ref),r.tagger),l(n,r.nodePath,t.logFilter,e))},mE(f(xa,function(e){return f(fp,e,r.requests)},Ba(t)))))}),o=r.blockNumber;if("Just"===o.$){var u=o.a;return a-u?L(om(D(r,{blockNumber:si(a)})),Po(M([f(CS,r.nodePath,r.tagger),l(i,L(u+1,a),r.watching,ES)]))):L(t,f(CS,r.nodePath,r.tagger))}return L(om(D(r,{blockNumber:si(a),pending:sm,watching:f(wS,r.watching,r.pending)})),Po(M([f(CS,r.nodePath,r.tagger),l(i,L(a,a),r.pending,qm),l(i,L(a,a),r.watching,ES)])))}var s=e.a.a;return L(om(D(r,{errors:f(ka,s,r.errors)})),f(CS,r.nodePath,r.tagger))}if("Ok"===e.b.$){var c=e.a,d=e.b.a;return l(mS,t,c,d)}var s=e.b.a;return L(om(D(r,{errors:f(ka,s,r.errors)})),Do)}),AS=function(e){return M([e])},BS=r(function(e,t){e:for(;;)switch(e.$){case"Refresh":var r=(e.a,function(){var e=t.trade;if("PartiallyLoadedTrade"===e.$){var r=e.a;return"Nothing"===r.creationInfo.$?f(nm,r.factory,r.id):Do}}(),function(){var e=x(Gd(t.wallet),Mg(t.wallet),t.trade);if("Just"===e.a.$&&"Just"===e.b.$&&"Token"===e.b.a.$&&"LoadedTrade"===e.c.$){var r=e.a.a,n=e.b.a.a,a=e.c.a;return R(Mg(t.wallet),si(a.factory))?d(eg,n,r.address,a.creationInfo.address,Ly):Do}return Do}()),n=function(){return"Nothing"===t.chatHistoryModel.$?d(qE,t.wallet,t.trade,t.blocknumOnInit,t.eventsWaitingForChatHistory):x(t.chatHistoryModel,!1,yr)}(),a=n.a,i=n.b,o=n.c,u=D(t,{chatHistoryModel:a}),s=i?FE(t):Do,c=t.trade;if("LoadedTrade"===c.$){var p=c.a;return d(gm,u,Po(M([l(NC,p.factory,p.creationInfo.address,cS),s,r])),Fo,o)}return lS(u);case"CurrentBlockFetched":var g=e.a;if("Ok"===g.$){var v=g.a;return lS(D(t,{blocknumOnInit:si(v)}))}var y=g.a;return d(gm,t,Do,Fo,M([pa(f(_g,"blocknum",y))]));case"AllowanceFetched":var g=e.a;if("Ok"===g.$){var m=g.a,u=D(t,{allowance:si(m)}),b=x(u.txChainStatus,u.trade,u.wallet);if("Just"===b.a.$&&"ApproveMining"===b.a.a.$&&"LoadedTrade"===b.b.$&&"Active"===b.c.$){var C=b.b.a,E=b.c.a;if(R(f(ts,m,jl(Vb(C.parameters))),ba))return lS(u);var S=l(xE,C,E.address,E.commPubkey),T=S.a,w=S.b;return d(gm,D(u,{txChainStatus:T}),Do,w,yr)}return lS(u)}var y=g.a;return d(gm,t,Do,Fo,M([pa(f(_g,"allowance",y))]));case"CreationInfoFetched":var g=e.a;if("Ok"===g.$){var I=g.a,A={address:I.address_,blocknum:$C(I.blocknum)},B=l(Ym,mm,t.eventSentry,{address:A.address,fromBlock:jm(A.blocknum),toBlock:Mp,topics:yr}),k=B.a,N=B.b,u=D(t,{eventSentry:k,trade:f(Qb,A,t.trade)}),$=f(xc,gS,Kb(u.trade)),_=Po(M([N,h(RC,$,A.address,nS,cS,aS)]));return d(gm,u,_,Fo,yr)}if("BadBody"===g.a.$){g.a.a;return d(gm,t,Do,Fo,M([pa(dS)]))}var y=g.a;return d(gm,t,Do,Fo,M([pa(f(_g,"trade state",y))]));case"StateFetched":var g=e.a;if("Ok"===g.$&&"Just"===g.a.$){var P=g.a.a,O=function(){var e=t.trade;switch(e.$){case"PartiallyLoadedTrade":return!0;case"LoadedTrade":return!R(e.a.state.phase,P.phase);default:return!1}}(),u=D(t,{expandedPhase:O?P.phase:t.expandedPhase,trade:f(eC,P,t.trade)});return d(gm,u,FE(u),Fo,yr)}return d(gm,t,Do,Fo,M([pa(f(hS,"trade state",g))]));case"ParametersFetched":var g=e.a;if("Ok"===g.$){if("Ok"===g.a.$){var F=g.a.a;if(Hb(F)){var u=D(t,{trade:f(Xb,F,t.trade)});return d(gm,u,FE(u),Fo,yr)}return d(gm,D(t,{trade:nb}),Do,Fo,M([pa(pS)]))}var V=g.a.a;return d(gm,t,Do,Fo,M([pa(f(ll,"Error decoding fetched trade parameters",V))]))}var K=g.a;return d(gm,t,Do,Fo,M([pa(f(_g,"trade parameters",K))]));case"PhaseInfoFetched":var g=e.a;if("Ok"===g.$&&"Just"===g.a.$){var H=g.a.a,u=D(t,{trade:f(Zb,H,t.trade)});return d(gm,u,FE(u),Fo,yr)}return d(gm,t,Do,Fo,M([pa(f(hS,"trade state",g))]));case"EventLogFetched":var j=e.a,q=f(Yh,Fb,j),G=q.returnData;if("Err"===G.$){var z=G.a;return d(gm,t,Do,Fo,M([pa(f(ll,"Error decoding contract event",z))]))}var Y=G.a,W=function(){switch(Y.$){case"InitiatedEvent":var e=Y.a;return f(HC,e.commPubkey,t.secureCommInfo);case"CommittedEvent":var e=Y.a;return f(jC,e.commPubkey,t.secureCommInfo);default:return t.secureCommInfo}}(),J=function(){if("InitiatedEvent"===Y.$){var e=Y.a,r=db(e.terms);if("Ok"===r.$){var n=r.a;return L(f(tC,n,t.trade),ci)}var a=r.a;return L(t.trade,si(f(ll,"Couldn't decode payment methods!",a)))}return L(t.trade,ci)}(),Q=J.a,X=J.b,Z=function(){var e=t.chatHistoryModel;if("Just"===e.$){var r=e.a;return x(si(r),!1,yr)}return d(qE,t.wallet,Q,t.blocknumOnInit,t.eventsWaitingForChatHistory)}(),ee=Z.a,te=Z.b,re=Z.c,ne=function(){if("Just"===ee.$){var e=ee.a;return L(function(e){var t=e.a,r=e.b,n=e.c;return x(si(t),r||te,f(oo,re,f(xa,Ji(jE),n)))}(l(bE,q.blockNumber,Y,e)),yr)}return L(x(ci,!1,re),f(oo,t.eventsWaitingForChatHistory,M([L(q.blockNumber,Y)])))}(),ae=ne.a,ie=ae.a,oe=ae.b,ue=ae.c,se=ne.b,u=D(t,{chatHistoryModel:ie,eventsWaitingForChatHistory:se,secureCommInfo:W,trade:Q}),_=oe?FE(u):Do;return d(gm,u,_,Fo,f(oo,f(xa,pa,mE(M([X]))),ue));case"ExpandPhase":var ce=e.a;return lS(D(t,{expandedPhase:ce}));case"ToggleChat":var fe=!t.showChatHistory;return lS(D(t,{showChatHistory:fe}));case"ToggleStatsModal":var le=!t.showStatsModal;return lS(D(t,{showStatsModal:le}));case"ViewUserHistory":var de=(e.a,t.trade);if("LoadedTrade"===de.$){var C=de.a;return d(gm,t,Do,Fo,M([da(jv(C.parameters.initiatorAddress))]))}return d(gm,t,Do,Fo,M([pa(f(ll,"Trying to view a user's history for a not-yet-loaded Trade",t.trade))]));case"CommitClicked":var C=e.a,E=e.b,he=e.c;return lS(D(t,{txChainStatus:si(f(rS,E,he))}));case"AbortAction":return lS(D(t,{txChainStatus:ci}));case"ConfirmCommit":var C=e.a,E=e.b,he=e.c,pe=function(){var e=C.factory;if("Native"===e.$)return l(xE,C,E.address,E.commPubkey);var r=e.a,n=function(){var e=al(l(sh,nh(r),C.creationInfo.address,he)),t={onBroadcast:ci,onMined:ci,onSign:si(QE)};return f(qo,t,e)}(),a=t.allowance;if("Just"===a.$){var i=a.a;return R(f(ts,i,jl(Vb(C.parameters))),ba)?L(si(JE),n):l(xE,C,E.address,E.commPubkey)}return L(si(JE),n)}(),T=pe.a,w=pe.b;return d(gm,D(t,{txChainStatus:T}),Do,w,yr);case"ContractActionClicked":var ge=e.a;if(R(ge,iS)||R(ge,oS)){var ve=sS(ge),ye=t;e=ve,t=ye;continue e}return lS(D(t,{txChainStatus:si(tS(ge))}));case"StartContractAction":var me=e.a,be=function(){var e=t.trade;if("LoadedTrade"!==e.$){var r=e;return x(t.txChainStatus,Fo,M([pa(f(ll,"Trying to handle StartContractAction msg for a not-yet-loaded Trade",r))]))}var n=e.a;switch(me.$){case"Recall":var a=al(eb(n.creationInfo.address));return x(si(YE(oS)),f(qo,BE(oS),a),yr);case"Claim":var a=al(Xm(n.creationInfo.address));return x(si(YE(ZE)),f(qo,BE(ZE),a),yr);case"Abort":var a=al(Jm(n.creationInfo.address));return x(si(YE(GE)),f(qo,BE(GE),a),yr);case"Release":var a=al(tb(n.creationInfo.address));return x(si(YE(uS)),f(qo,BE(uS),a),yr);case"Burn":var a=al(Qm(n.creationInfo.address));return x(si(YE(XE)),f(qo,BE(XE),a),yr);default:var a=al(zf(n.creationInfo.address));return x(si(YE(iS)),f(qo,BE(iS),a),yr)}}(),T=be.a,w=be.b,o=be.c;return d(gm,D(t,{txChainStatus:T}),Do,w,o);case"ApproveSigned":var Ce=e.a;if("Ok"===Ce.$){var Ee=Ce.a;return lS(D(t,{txChainStatus:si(WE(Ee))}))}var V=Ce.a;return d(gm,D(t,{txChainStatus:ci}),Do,Fo,M([pa(f(Pg,"approve",V))]));case"CommitSigned":var Ce=e.a;if("Ok"===Ce.$){var Ee=Ce.a;return lS(D(t,{txChainStatus:si(eS(Ee))}))}var V=Ce.a;return d(gm,D(t,{txChainStatus:ci}),Do,Fo,M([pa(f(Pg,"commit",V))]));case"CommitMined":return lS(D(t,{txChainStatus:ci}));case"ActionSigned":var ge=e.a,Ce=e.b;if("Ok"===Ce.$){var Ee=Ce.a;return lS(D(t,{txChainStatus:si(f(zE,ge,Ee))}))}var V=Ce.a;return d(gm,D(t,{txChainStatus:ci}),Do,Fo,M([pa(f(Pg,fS(ge),V))]));case"ActionMined":var ge=e.a;return lS(D(t,{txChainStatus:ci}));case"EventSentryMsg":var Se=e.a,Te=f(IS,Se,t.eventSentry),we=Te.a,_=Te.b;return d(gm,D(t,{eventSentry:we}),_,Fo,yr);case"ChatHistoryMsg":var Ie=e.a,Ae=t.chatHistoryModel;if("Just"===Ae.$){var Be=Ae.a,ke=f(wE,Ie,Be),Ne=D(t,{chatHistoryModel:si(ke.model)}),s=ke.shouldCallDecrypt?FE(t):Do,Re=function(){var e=ke.maybeMessageSubmit;if("Just"===e.$){var r=e.a,n=t.secureCommInfo;if("LoadedCommInfo"===n.$){var a=n.a;return L(kE(f(MC,r,a)),ci)}return L(Do,si(f(ll,"Trying to encrypt, but commInfo is not loaded",n)))}return L(Do,ci)}(),$e=Re.a,_e=Re.b;return d(gm,Ne,Po(M([s,$e])),Fo,U(f(Qi,jE,ke.appCmds),f(xc,yr,f(Bo,AS,f(Bo,pa,_e)))))}return d(gm,t,Do,Fo,M([pa(f(ll,"Got a chat history message, but there is no chat history model!",Ie))]));case"EncryptionFinished":var Le=e.a,xe=f(Wh,OC,DC(Le)),Pe=x(t.wallet,t.trade,xe);if("Ok"===Pe.c.$){if("Active"===Pe.a.$&&"LoadedTrade"===Pe.b.$){var E=Pe.a.a,p=Pe.b.a,De=Pe.c.a,Ue=f(Ao,p,E.address);if("Nothing"===Ue.$)return d(gm,t,Do,Fo,M([pa(f(ll,"Trying to encrypt, but the user is not involved in this trade.",ci))]));var Oe=Ue.a,Me=function(){return al("Initiator"===Oe.$?f(Zm,p.creationInfo.address,De):f(rb,p.creationInfo.address,De))}();return d(gm,t,Do,f(qo,{onBroadcast:ci,onMined:ci,onSign:ci},Me),yr)}var Fe=Pe.a,Ve=Pe.b;return d(gm,t,Do,Fo,M([pa(f(ll,"Encryption successful, but the user or trade is no longer valid.",L(Fe,Ve)))]))}var Ke=Pe.c.a;return d(gm,t,Do,Fo,M([pa(f(ll,"Error translating JS encryption result into Elm.",Ke))]));case"MessageSubmitMined":if("Ok"===e.a.$){e.a.a;return lS(t)}var V=e.a.a;return d(gm,t,Do,Fo,M([pa(f(Lg,"message",V))]));default:return d(gm,t,Do,Fo,M([ga]))}}),kS=r(function(e,t){return{address:e,blocknum:t}}),NS=function(e){switch(e.$){case"LoadedTrade":var t=e.a;return si(t.creationInfo);case"PartiallyLoadedTrade":return e.a.creationInfo;default:return ci}},RS=n(function(e,t,r){return function(e){return L(e.a,e.b)}(d(zm,!0,e,t,r))}),$S=n(function(e,t,r){var n=function(e){return r(f(Yh,Tb,e).returnData)},a={address:t.address,fromBlock:jm(t.blocknum),toBlock:jm(t.blocknum),topics:M([si(Mb("Initiated(string,string)"))])};return l(RS,n,e,a)}),_S=function(e){return{data:si(f(Gf,"numTrades()",yr)),decoder:vu(jh),from:ci,gas:ci,gasPrice:ci,nonce:ci,to:si(e),value:ci}},LS=r(function(e,t){return f(Zp,t,f(Fp,Xh(e),_S(rh(e))))}),xS=function(e){return{data:si(f(Gf,"phase()",yr)),decoder:vu(jh),from:ci,gas:ci,gasPrice:ci,nonce:ci,to:si(e),value:ci}},PS=n(function(e,t,r){return f(Zp,r,f(jp,IC,f(Fp,Xh(e),xS(t))))}),DS=n(function(e,t,r){var n=e(t);if("Just"===n.$){var a=n.a;return f(ka,a,r)}return r}),US=r(function(e,t){return l(La,DS(e),yr,t)}),OS=function(e){return f(US,function(e){if("LoadedTrade"===e.$){var t=e.a;return si(t)}return ci},Sa(e.trades))},MS=function(e){return f(Ra,r(function(t,r){return e(t)?r+1:r}),0)},FS=function(e){return f(MS,Ja(nb),Sa(e.trades))},VS=function(e){return D(e,{dataFetchState:D(e.dataFetchState,{invalid:FS(e),loaded:Ti(OS(e))})})},KS=n(function(e,t,r){return{appCmds:r,cmd:t,tradeCache:e}}),HS=r(function(e,t){var r=f(Zc,e,t.trades);if("Just"===r.$){var n=(r.a,l(af,e,nb,t.trades));return l(KS,VS(D(t,{trades:n})),Do,yr)}return l(KS,t,Do,M([pa(f(ll,"markTradeInvalid ran into an out-of-range error",L(e,t.trades)))]))}),jS=n(function(e,t,r){var n=f(Zc,e,r.trades);if("Just"===n.$){var a=n.a,i=f(Qb,t,a),o=l(af,e,i,r.trades);return L(VS(D(r,{trades:o})),yr)}return L(r,M([f(ll,"updateTradeAddress ran into an out-of-range error",L(e,r.trades))]))}),qS=n(function(e,t,r){var n=f(Zc,e,r.trades);if("Just"===n.$){var a=n.a,i=f(Xb,t,a),o=l(af,e,i,r.trades);return l(KS,VS(D(r,{trades:o})),Do,yr)}return l(KS,r,Do,M([pa(f(ll,"updateTradeParameters ran into an out-of-range error",L(e,r.trades)))]))}),GS=n(function(e,t,r){var n=f(Zc,e,r.trades);if("Just"===n.$){if("LoadedTrade"===n.a.$){var a=n.a.a,i=a.state,o=l(af,e,ym(D(a,{state:D(i,{phase:t})})),r.trades);return l(KS,VS(D(r,{trades:o})),Do,yr)}return l(KS,r,Do,M([pa(f(ll,"updateTradePhase is trying to update a partially loaded trade",L(e,r.trades)))]))}return l(KS,r,Do,M([pa(f(ll,"updateTradePhase ran into an out-of-range error",L(e,r.trades)))]))}),zS=n(function(e,t,r){var n=f(Zc,e,r.trades);if("Just"===n.$){var a=n.a,i=f(Zb,t,a),o=l(af,e,i,r.trades);return l(KS,VS(D(r,{trades:o})),Do,yr)}return l(KS,r,Do,M([pa(f(ll,"updateTradePhaseTimeInfo ran into an out-of-range error",L(e,r.trades)))]))}),YS=n(function(e,t,r){var n=f(Zc,e,r.trades);if("Just"===n.$){var a=n.a,i=f(eC,t,a),o=l(af,e,i,r.trades);return l(KS,VS(D(r,{trades:o})),Do,yr)}return l(KS,r,Do,M([pa(f(ll,"updateTradeState ran into an out-of-range error",L(e,r.trades)))]))}),WS=n(function(e,t,r){var n=f(Zc,e,r.trades);if("Just"===n.$){var a=n.a,i=f(tC,t,a),o=l(af,e,i,r.trades);return l(KS,VS(D(r,{trades:o})),Do,yr)}return l(KS,r,Do,M([pa(f(ll,"updateTTPaymentMethods ran into an out-of-range error",L(e,r.trades)))]))}),JS=r(function(e,t){return{$:"CreationInfoFetched",a:e,b:t}}),QS=n(function(e,t,r){return{invalid:r,loaded:t,total:e}}),XS=r(function(e,t){return{$:"InitiatedEventDataFetched",a:e,b:t}}),ZS=function(e){return{$:"NumTradesFetchedAgain",a:e}},eT=r(function(e,t){return{$:"ParametersFetched",a:e,b:t}}),tT=n(function(e,t,r){return{$:"PhaseFetched",a:e,b:t,c:r}}),rT=r(function(e,t){return{$:"PhaseStartInfoFetched",a:e,b:t}}),nT=r(function(e,t){return{$:"StateFetched",a:e,b:t}}),aT=function(e){return l(KS,e,Do,yr)},iT=r(function(e,t){switch(e.$){case"InitialNumTradesFetched":var r=e.a;if("Ok"===r.$){var n=r.a,a=$C(n),i=xC(f(xa,jy(t.factory),f(Ai,0,a-1))),o=Po(f(xa,function(e){return l(tm,t.factory,qu(e),JS(e))},f(Ai,0,a-1)));return l(KS,D(t,{dataFetchState:l(QS,si(a),0,0),trades:i}),o,yr)}var u=r.a;return l(KS,t,Do,M([pa(f(_g,"Factory numTrades",u))]));case"CheckForNewTrades":return l(KS,t,f(LS,t.factory,ZS),yr);case"UpdateTradePhases":var s=Po(mE(f(xa,function(e){return"Closed"===e.state.phase.$?ci:si(l(PS,e.factory,e.creationInfo.address,f(tT,e.factory,e.id)))},OS(t))));return l(KS,t,s,yr);case"PhaseFetched":var c=e.a,d=e.b,r=e.c;if("Ok"===r.$&&"Just"===r.a.$){var p=r.a.a,g=l(GS,d,p,t),v=function(){var e=L(p,f(Zc,d,t.trades));if("Just"===e.b.$){if("Committed"===e.a.$){var r=(e.a,e.b.a),n=NS(r);if("Just"===n.$){var a=n.a;return L(l(NC,c,a.address,nT(d)),yr)}return L(Do,M([pa(f(ll,"Phase fetched for a trade that has no creationInfo",r))]))}return L(Do,yr)}e.b;return L(Do,M([pa(f(ll,"Phase fetched for a trade, but then ran into an out-of-range error",ci))]))}(),y=v.a,m=v.b;return l(KS,g.tradeCache,Po(M([g.cmd,y])),f(oo,g.appCmds,m))};return l(KS,t,Do,M([pa(f(hS,"phase",r))]));case"NumTradesFetchedAgain":var r=e.a,b=L(r,t.dataFetchState.total);if("Ok"===b.a.$){if("Just"===b.b.$){var n=b.a.a,C=b.b.a,E=$C(n);if(_(C,E)<0){var S=t.dataFetchState,o=Po(f(xa,function(e){return l(tm,t.factory,qu(e),JS(e))},f(Ai,C,E-1))),T=xC(f(xa,jy(t.factory),f(Ai,C,E-1)));return l(KS,D(t,{dataFetchState:D(S,{total:si(E)}),trades:f(vE,t.trades,T)}),o,yr)}return aT(t)}b.b;return l(KS,t,Do,M([pa(f(ll,"Trying to fetch additional trades, but there is an unexpected Nothing in the existing numTrades.",""))]))}var u=b.a.a;return l(KS,t,Do,M([pa(f(_g,"Factory numTrades",u))]));case"CreationInfoFetched":var d=e.a,r=e.b;if("Ok"===r.$){var w=r.a,I=f(kS,w.address_,$C(w.blocknum)),A=l($S,t.eventSentry,I,XS(d)),B=A.a,k=A.b,y=Po(M([h(RC,t.factory,I.address,eT(d),nT(d),rT(d)),k])),N=l(jS,d,I,t),R=N.a,$=N.b;return l(KS,VS(D(R,{eventSentry:B})),y,f(xa,pa,$))}var u=r.a;return l(KS,t,Do,M([pa(f(_g,"creationInfo",u))]));case"ParametersFetched":var d=e.a,r=e.b;if("Err"===r.$){var x=r.a;return l(KS,t,Do,M([pa(f(_g,"parameters",x))]))}if("Ok"===r.a.$){var P=r.a.a;return l(qS,d,P,t)}var U=r.a.a;return l(KS,t,Do,M([pa(f(ll,"Can't decode fetched trade parameters",U))]));case"StateFetched":var d=e.a,r=e.b;if("Ok"===r.$&&"Just"===r.a.$){var O=r.a.a;return l(YS,d,O,t)}return l(KS,t,Do,M([pa(f(hS,"state",r))]));case"PhaseStartInfoFetched":var d=e.a,r=e.b;if("Ok"===r.$&&"Just"===r.a.$){var F=r.a.a;return l(zS,d,F,t)}return l(KS,t,Do,M([pa(f(hS,"phaseStartInfo",r))]));case"InitiatedEventDataFetched":var d=e.a,r=e.b;if("Ok"===r.$){var V=r.a,K=db(V.terms);if("Ok"===K.$){var H=K.a;return l(WS,d,H,t)}var j=K.a;return f(HS,d,t)}var j=r.a;return l(KS,t,Do,M([pa(f(ll,"Error decoding initiated event",j))]));default:var q=e.a,G=f(IS,q,t.eventSentry),z=G.a,y=G.b;return l(KS,D(t,{eventSentry:z}),y,yr)}}),oT=function(e){return{$:"AgentHistoryMsg",a:e}},uT=function(e){return{$:"AppCmd",a:e}},sT={$:"BetaLandingPage"},cT={$:"ConnectToWeb3"},fT=function(e){return{$:"MarketplaceMsg",a:e}},lT=r(function(e,t){return{$:"TradeCacheMsg",a:e,b:t}}),dT=r(function(e,t){return f(kn,e,hl(t))}),hT=function(e){return f(dT,"href",tt(e))},pT=Nn("rel"),gT=dT("target"),vT=function(e){return{$:"Height",a:e}},yT=vT,mT={$:"Content"},bT=mT,CT=function(e){return{$:"Width",a:e}},ET=CT,ST=function(e){return{$:"Attr",a:e}},TT=function(e){return{$:"NodeName",a:e}},wT=function(e){return{$:"Unkeyed",a:e}},IT={$:"AsEl"},AT=IT,BT=r(function(e,t){return{$:"Field",a:e,b:t}}),kT=f(BT,0,0),NT={$:"NoNearbyChildren"},RT={above:"a",active:"atv",alignBottom:"ab",alignCenterX:"cx",alignCenterY:"cy",alignContainerBottom:"acb",alignContainerCenterX:"accx",alignContainerCenterY:"accy",alignContainerRight:"acr",alignLeft:"al",alignRight:"ar",alignTop:"at",alignedHorizontally:"ah",alignedVertically:"av",any:"s",behind:"bh",below:"b",bold:"w7",borderDashed:"bd",borderDotted:"bdt",borderNone:"bn",borderSolid:"bs",capturePointerEvents:"cpe",clip:"cp",clipX:"cpx",clipY:"cpy",column:"c",container:"ctr",contentBottom:"cb",contentCenterX:"ccx",contentCenterY:"ccy",contentLeft:"cl",contentRight:"cr",contentTop:"ct",cursorPointer:"cptr",cursorText:"ctxt",focus:"fcs",fullSize:"fs",grid:"g",hasBehind:"hbh",heightContent:"hc",heightFill:"hf",heightFillPortion:"hfp",hover:"hv",imageContainer:"ic",inFront:"fr",inputMultiline:"iml",inputText:"it",italic:"i",nearby:"nb",noTextSelection:"notxt",onLeft:"ol",onRight:"or",opaque:"oq",overflowHidden:"oh",page:"pg",paragraph:"p",passPointerEvents:"ppe",root:"ui",row:"r",scrollbars:"sb",scrollbarsX:"sbx",scrollbarsY:"sby",seButton:"sbt",single:"e",sizeByCapital:"cap",spaceEvenly:"sev",strike:"sk",text:"t",textCenter:"tc",textExtraBold:"w8",textExtraLight:"w2",textHeavy:"w9",textJustify:"tj",textJustifyAll:"tja",textLeft:"tl",textLight:"w3",textMedium:"w5",textNormalWeight:"w4",textRight:"tr",textSemiBold:"w6",textThin:"w1",textUnitalicized:"tun",transition:"ts",transparent:"clr",underline:"u",widthContent:"wc",widthExact:"we",widthFill:"wf",widthFillPortion:"wfp",wrapped:"wrp"},$T=RT.any+" "+RT.column,_T=RT.any+" "+RT.grid,LT=RT.any+" "+RT.page,xT=RT.any+" "+RT.paragraph,PT=RT.any+" "+RT.row,DT=RT.any+" "+RT.single,UT=function(e){switch(e.$){case"AsRow":return PT;case"AsColumn":return $T;case"AsEl":return DT;case"AsGrid":return _T;case"AsParagraph":return xT;default:return LT}},OT=function(e){return{$:"Keyed",a:e}},MT={$:"NoStyleSheet"},FT=r(function(e,t){switch(t.$){case"NoNearbyChildren":return e;case"ChildrenBehind":var r=t.a;return U(r,e);case"ChildrenInFront":var n=t.a;return U(e,n);default:var r=t.a,n=t.b;return U(r,U(e,n))}}),VT=n(function(e,t,r){switch(r.$){case"NoNearbyChildren":return t;case"ChildrenBehind":var n=r.a;return U(f(xa,function(t){return L(e,t)},n),t);case"ChildrenInFront":var a=r.a;return U(t,f(xa,function(t){return L(e,t)},a));default:var n=r.a,a=r.b;return U(f(xa,function(t){return L(e,t)},n),U(t,f(xa,function(t){return L(e,t)},a)))}}),KT={$:"AsParagraph"},HT=KT,jT=Sn("div"),qT=Sn("p"),GT=Sn("s"),zT=Sn("u"),YT=dT("className"),WT=function(e){return wn(Xe(e))},JT=function(e){return Sn(Xe(e))},QT=function(e){return{$:"Flag",a:e}},XT=function(e){return{$:"Second",a:e}},ZT=function(e){return e>31?XT(1< .ctr > ."+RT.any+" {\n border: 4px dashed rgb(0, 151, 167) !important;\n}\n\n",eI="@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {"+Ew(RT.any)+Ew(RT.row)+" > "+Ew(RT.any)+" { flex-basis: auto !important; } "+Ew(RT.any)+Ew(RT.row)+" > "+Ew(RT.any)+Ew(RT.container)+" { flex-basis: auto !important; }}\n\n/* General Input Reset */\ninput[type=range] {\n -webkit-appearance: none; /* Hides the slider so that custom slider can be made */\n /* width: 100%; Specific width is required for Firefox. */\n background: transparent; /* Otherwise white in Chrome */\n position:absolute;\n left:0;\n top:0;\n z-index:10;\n width: 100%;\n outline: dashed 1px;\n height: 100%;\n opacity: 0;\n}\n\n/* Hide all syling for track */\ninput[type=range]::-moz-range-track {\n background: transparent;\n cursor: pointer;\n}\ninput[type=range]::-ms-track {\n background: transparent;\n cursor: pointer;\n}\ninput[type=range]::-webkit-slider-runnable-track {\n background: transparent;\n cursor: pointer;\n}\n\n/* Thumbs */\ninput[type=range]::-webkit-slider-thumb {\n -webkit-appearance: none;\n opacity: 0.5;\n width: 80px;\n height: 80px;\n background-color: black;\n border:none;\n border-radius: 5px;\n}\ninput[type=range]::-moz-range-thumb {\n opacity: 0.5;\n width: 80px;\n height: 80px;\n background-color: black;\n border:none;\n border-radius: 5px;\n}\ninput[type=range]::-ms-thumb {\n opacity: 0.5;\n width: 80px;\n height: 80px;\n background-color: black;\n border:none;\n border-radius: 5px;\n}\ninput[type=range][orient=vertical]{\n writing-mode: bt-lr; /* IE */\n -webkit-appearance: slider-vertical; /* WebKit */\n}\n"+Zw,tI=function(e){return{$:"Intermediate",a:e}},rI=r(function(e,t){return tI({closing:t,others:yr,props:yr,selector:e})}),nI=r(function(e,t){var n=e.a,a=r(function(e,t){switch(e.$){case"Prop":var r=e.a,a=e.b;return D(t,{props:f(ka,L(r,a),t.props)});case"Supports":var i=e.a,o=i.a,u=i.b,s=e.b;return D(t,{others:f(ka,tI({closing:"\n}",others:yr,props:s,selector:"@supports ("+o+":"+u+") {"+n.selector}),t.others)});case"Adjacent":var c=e.a,l=e.b;return D(t,{others:f(ka,f(nI,f(rI,n.selector+" + "+c,""),l),t.others)});case"Child":var d=e.a,h=e.b;return D(t,{others:f(ka,f(nI,f(rI,n.selector+" > "+d,""),h),t.others)});case"Descriptor":var p=e.a,g=e.b;return D(t,{others:f(ka,f(nI,f(rI,U(n.selector,p),""),g),t.others)});default:var v=e.a;return D(t,{others:f(ka,f(nI,f(rI,n.selector,""),v),t.others)})}});return tI(l(La,a,n,t))}),aI=U(eI,function(e){var t=function(e){return Cd(f(xa,function(e){return e.a+":"+e.b+";"},e))},n=function(e){return e.props.b?e.selector+"{"+t(e.props)+e.closing+"}":""},a=function(e){var t=e.a;return U(n(t),Cd(f(xa,a,t.others)))};return Cd(f(xa,a,l(La,r(function(e,t){var r=e.a,n=e.b;return f(ka,f(nI,f(rI,r,""),n),t)}),yr,e)))}(U(Jw,Xw))),iI=l(JT,"style",yr,M([Tw(aI)])),oI=function(e){switch(e.$){case"Serif":return"serif";case"SansSerif":return"sans-serif";case"Monospace":return"monospace";case"Typeface":var t=e.a;return'"'+t+'"';case"ImportFont":var t=e.a;e.b;return'"'+t+'"';default:var t=e.a.name;return'"'+t+'"'}},uI=function(e){switch(e.$){case"VariantActive":var t=e.a;return"smcp"===t;case"VariantOff":var t=e.a;return!1;default:var t=e.a,r=e.b;return"smcp"===t&&1===r}},sI=function(e){if("FontWith"===e.$){var t=e.a;return f(Ch,uI,t.variants)}return!1},cI=n(function(e,t,r){var n=t.a,a=t.b;return e?r+"\n "+n+": "+a+" !important;":r+"\n "+n+": "+a+";"}),fI=r(function(e,t){return e+" {"+f(Ri,"",f(xa,function(e){return e.a+": "+e.b+";"},t))+"}"}),lI=n(function(e,t,r){var n=r.a,a=r.b;return M([f(fI,"."+e+"."+t+", ."+e+" ."+t,n),f(fI,"."+e+"."+t+"> ."+RT.text+", ."+e+" ."+t+" > ."+RT.text,a)])}),dI=n(function(e,t,r){var n=t.a,a=t.b,i=R(e,r)?e:r+" ."+e;return f(Ri," ",U(l(lI,i,RT.sizeByCapital,a),l(lI,i,RT.fullSize,n)))}),hI=r(function(e,t){var r=R(e,t)?e:t+" ."+e;return f(Ri," ",M([f(fI,"."+r+"."+RT.sizeByCapital+", ."+r+" ."+RT.sizeByCapital,M([L("line-height","1")])),f(fI,"."+r+"."+RT.sizeByCapital+"> ."+RT.text+", ."+r+" ."+RT.sizeByCapital+" > ."+RT.text,M([L("vertical-align","0"),L("line-height","1")]))]))}),pI=function(e){if(e.b){var t=e.a,r=e.b;return si(l(Ra,ei,t,r))}return ci},gI=function(e){if(e.b){var t=e.a,r=e.b;return si(l(Ra,Tc,t,r))}return ci},vI=n(function(e,t,r){return{height:t/e,size:e,vertical:r}}),yI=function(e){var t=M([e.capital,e.baseline,e.descender,e.lowercase]),r=f(xc,e.descender,gI(t)),n=f(xc,e.baseline,gI(f(ml,function(e){return!R(e,r)},t))),a=f(xc,e.capital,pI(t)),i=1/(a-n),o=1-a,u=1/(a-r),s=1-a;return{capital:l(vI,i,a-n,o),full:l(vI,u,a-r,s)}},mI=function(e){return L(M([L("display","block")]),M([L("display","inline-block"),L("line-height",mw(e.height)),L("vertical-align",mw(e.vertical)+"em"),L("font-size",mw(e.size)+"em")]))},bI=function(e){return l(Ra,r(function(e,t){if("Nothing"===t.$){if("FontWith"===e.$){var r=e.a,n=r.adjustment;if("Nothing"===n.$)return t;var a=n.a;return si(L(mI(function(e){return e.full}(yI(a))),mI(function(e){return e.capital}(yI(a)))))}return t}return t}),ci,e)},CI=function(e){var t=function(e){if("ImportFont"===e.$){var t=e.b;return si("@import url('"+t+"');")}return ci},r=function(e){var r=(e.a,e.b);return f(Ri,"\n",f(US,t,r))},n=f(xa,Qa,e),a=function(e){var t=e.a,r=e.b,a=bI(r);if("Nothing"===a.$)return f(Ri,"",f(xa,hI(t),n));var i=a.a;return f(Ri,"",f(xa,f(dI,t,i),n))};return U(f(Ri,"\n",f(xa,r,e)),f(Ri,"\n",f(xa,a,e)))},EI=function(e){switch(e.$){case"VariantActive":var t=e.a;return'"'+t+'"';case"VariantOff":var t=e.a;return'"'+t+'" 0';default:var t=e.a,r=e.b;return'"'+t+'" '+Ni(r)}},SI=function(e){if("FontWith"===e.$){var t=e.a;return si(f(Ri,", ",f(xa,EI,t.variants)))}return ci},TI=function(e){if("FontFamily"===e.$){var t=e.a,r=e.b;return si(L(t,r))}return ci},wI=function(e){switch(e.$){case"Untransformed":return ci;case"Moved":var t=e.a,r=t.a,n=t.b,a=t.c;return si("translate3d("+mw(r)+"px, "+mw(n)+"px, "+mw(a)+"px)");default:var i=e.a,o=i.a,u=i.b,s=i.c,c=e.b,f=c.a,l=c.b,d=c.c,h=e.c,p=h.a,g=h.b,v=h.c,y=e.d,m="translate3d("+mw(o)+"px, "+mw(u)+"px, "+mw(s)+"px)",b="scale3d("+mw(f)+", "+mw(l)+", "+mw(d)+")",C="rotate3d("+mw(p)+", "+mw(g)+", "+mw(v)+", "+mw(y)+"rad)";return si(m+" "+b+" "+C)}},II=r(function(e,t){var a=n(function(t,r,n){if("Nothing"===t.$)return r+"{"+l(Ra,cI(!1),"",n)+"\n}";switch(t.a.$){case"Hover":switch(e.hover.$){case"NoHover":return"";case"ForceHover":return r+"-hv {"+l(Ra,cI(!0),"",n)+"\n}";default:return r+"-hv:hover {"+l(Ra,cI(!1),"",n)+"\n}"}case"Focus":var a=l(Ra,cI(!1),"",n);return f(Ri,"\n",M([r+"-fs:focus {"+a+"\n}","."+RT.any+":focus ~ "+r+"-fs:not(.focus) {"+a+"\n}","."+RT.any+":focus "+r+"-fs {"+a+"\n}",".focusable-parent:focus ~ ."+RT.any+" "+r+"-fs {"+a+"\n}"]));default:return r+"-act:active {"+l(Ra,cI(!1),"",n)+"\n}"}}),i=r(function(e,t){switch(e.$){case"Style":var r=e.a,o=e.b;return l(a,t,r,o);case"Shadows":var u=e.a,s=e.b;return l(a,t,"."+u,M([f(vw,"box-shadow",s)]));case"Transparency":var u=e.a,c=e.b,d=f(ei,0,f(Tc,1,1-c));return l(a,t,"."+u,M([f(vw,"opacity",mw(d))]));case"FontSize":var h=e.a;return l(a,t,".font-size-"+Ni(h),M([f(vw,"font-size",Ni(h)+"px")]));case"FontFamily":var u=e.a,p=e.b,g=f(Ri,", ",f(US,SI,p)),v=M([f(vw,"font-family",f(Ri,", ",f(xa,oI,p))),f(vw,"font-feature-settings",g),f(vw,"font-variant",f(Ch,sI,p)?"small-caps":"normal")]);return f(Ri," ",M([l(a,t,"."+u,v)]));case"Single":var y=e.a,s=e.b,m=e.c;return l(a,t,"."+y,M([f(vw,s,m)]));case"Colored":var y=e.a,s=e.b,b=e.c;return l(a,t,"."+y,M([f(vw,s,bw(b))]));case"SpacingStyle":var C=e.a,E=e.b,S=e.c,T=Ni(S)+"px",w=Ni(E)+"px",I="."+RT.row,A="."+(RT.wrapped+I),B="."+RT.alignRight,k="."+RT.paragraph,N="."+RT.page,R="."+RT.alignLeft,$=mw(S/2)+"px",_=mw(E/2)+"px",x="."+RT.column,y="."+C,P="."+RT.any;return Cd(M([l(a,t,y+(I+" > ")+P+" + "+P,M([f(vw,"margin-left",w)])),l(a,t,y+(A+" > ")+P,M([f(vw,"margin",$+" "+_)])),l(a,t,y+(x+" > ")+P+" + "+P,M([f(vw,"margin-top",T)])),l(a,t,y+(N+" > ")+P+" + "+P,M([f(vw,"margin-top",T)])),l(a,t,y+(N+" > ")+R,M([f(vw,"margin-right",w)])),l(a,t,y+(N+" > ")+B,M([f(vw,"margin-left",w)])),l(a,t,U(y,k),M([f(vw,"line-height","calc(1em + "+Ni(S)+"px)")])),l(a,t,"textarea"+y,M([f(vw,"line-height","calc(1em + "+Ni(S)+"px)")])),l(a,t,y+(k+" > ")+R,M([f(vw,"margin-right",w)])),l(a,t,y+(k+" > ")+B,M([f(vw,"margin-left",w)])),l(a,t,y+(k+"::after"),M([f(vw,"content","''"),f(vw,"display","block"),f(vw,"height","0"),f(vw,"width","0"),f(vw,"margin-top",Ni(-1*(S/2|0))+"px")])),l(a,t,y+(k+"::before"),M([f(vw,"content","''"),f(vw,"display","block"),f(vw,"height","0"),f(vw,"width","0"),f(vw,"margin-bottom",Ni(-1*(S/2|0))+"px")]))]));case"PaddingStyle":var C=e.a,D=e.b,B=e.c,O=e.d,R=e.e,y="."+C;return l(a,t,y,M([f(vw,"padding",Ni(D)+"px "+Ni(B)+"px "+Ni(O)+"px "+Ni(R)+"px")]));case"BorderWidth":var C=e.a,D=e.b,B=e.c,O=e.d,R=e.e,y="."+C;return l(a,t,y,M([f(vw,"border-width",Ni(D)+"px "+Ni(B)+"px "+Ni(O)+"px "+Ni(R)+"px")]));case"GridTemplateStyle":var F=e.a,V=n(function(e,t,r){e:for(;;)switch(r.$){case"Px":var n=r.a;return Ni(n)+"px";case"Content":var a=L(e,t);if("Nothing"===a.a.$){if("Nothing"===a.b.$){a.a,a.b;return"max-content"}var i=(a.a,a.b.a);return"minmax(max-content, "+Ni(i)+"px)"}if("Nothing"===a.b.$){var o=a.a.a;a.b;return"minmax("+Ni(o)+"px, max-content)"}var o=a.a.a,i=a.b.a;return"minmax("+Ni(o)+"px, "+Ni(i)+"px)";case"Fill":var u=r.a,s=L(e,t);if("Nothing"===s.a.$){if("Nothing"===s.b.$){s.a,s.b;return Ni(u)+"fr"}var i=(s.a,s.b.a);return"minmax(max-content, "+Ni(i)+"px)"}if("Nothing"===s.b.$){var o=s.a.a;s.b;return"minmax("+Ni(o)+"px, "+Ni(u)+"frfr)"}var o=s.a.a,i=s.b.a;return"minmax("+Ni(o)+"px, "+Ni(i)+"px)";case"Min":var c=r.a,f=r.b,l=si(c),d=t,h=f;e=l,t=d,r=h;continue e;default:var c=r.a,f=r.b,l=e,d=si(c),h=f;e=l,t=d,r=h;continue e}}),K=function(e){return l(V,ci,ci,e)},H=(K(F.spacing.a),K(F.spacing.b)),j=function(e){return"grid-template-rows: "+e+";"}(f(Ri," ",f(xa,K,F.rows))),q=function(e){return"-ms-grid-rows: "+e+";"}(f(Ri,H,f(xa,K,F.columns))),G=function(e){return"-ms-grid-columns: "+e+";"}(f(Ri,H,f(xa,K,F.columns))),z="grid-row-gap:"+K(F.spacing.b)+";",Y="grid-column-gap:"+K(F.spacing.a)+";",W=function(e){return"grid-template-columns: "+e+";"}(f(Ri," ",f(xa,K,F.columns))),y=".grid-rows-"+f(Ri,"-",f(xa,lw,F.rows))+"-cols-"+f(Ri,"-",f(xa,lw,F.columns))+"-space-x-"+lw(F.spacing.a)+"-space-y-"+lw(F.spacing.b),J=y+"{"+W+j+Y+z+"}",Q="@supports (display:grid) {"+J+"}",X=y+"{"+G+q+"}";return U(X,Q);case"GridPosition":var Z=e.a,ee=f(Ri," ",M(["-ms-grid-row: "+Ni(Z.row)+";","-ms-grid-row-span: "+Ni(Z.height)+";","-ms-grid-column: "+Ni(Z.col)+";","-ms-grid-column-span: "+Ni(Z.width)+";"])),te=f(Ri," ",M(["grid-row: "+Ni(Z.row)+" / "+Ni(Z.row+Z.height)+";","grid-column: "+Ni(Z.col)+" / "+Ni(Z.col+Z.width)+";"])),y=".grid-pos-"+Ni(Z.row)+"-"+Ni(Z.col)+"-"+Ni(Z.width)+"-"+Ni(Z.height),J=y+"{"+te+"}",Q="@supports (display:grid) {"+J+"}",X=y+"{"+ee+"}";return U(X,Q);case"PseudoSelector":var y=e.a,re=e.b;return f(Ri," ",f(xa,function(e){return f(i,e,si(y))},re));default:var ne=e.a,m=wI(ne),y=hw(ne),ae=L(y,m);if("Just"===ae.a.$&&"Just"===ae.b.$){var C=ae.a.a,ie=ae.b.a;return l(a,t,"."+C,M([f(vw,"transform",ie)]))}return""}}),o=r(function(e,t){return{rules:U(t.rules,f(i,e,ci)),topLevel:function(){var r=TI(e);if("Nothing"===r.$)return t.topLevel;var n=r.a;return f(ka,n,t.topLevel)}()}}),u=l(Ra,o,{rules:"",topLevel:yr},t),s=u.topLevel,c=u.rules;return U(CI(s),c)}),AI=r(function(e,t){return l(JT,"style",yr,M([Tw(f(II,e,t))]))}),BI=a(function(e,t,r,n){return e?f(ka,L("static-stylesheet",iI),f(ka,L("dynamic-stylesheet",f(AI,t,l(Ra,gw,L(sm,M([Sw(t.focus)])),r).b)),n)):f(ka,L("dynamic-stylesheet",f(AI,t,l(Ra,gw,L(sm,M([Sw(t.focus)])),r).b)),n)}),kI=a(function(e,t,r,n){return e?f(ka,iI,f(ka,f(AI,t,l(Ra,gw,L(sm,M([Sw(t.focus)])),r).b),n)):f(ka,f(AI,t,l(Ra,gw,L(sm,M([Sw(t.focus)])),r).b),n)}),NI=o(function(e,t,n,a,i,o){var u=r(function(e,t){if("Keyed"===a.$){var r=a.a;return l(WT,e,t,function(){switch(i.$){case"NoStyleSheet":return r;case"OnlyDynamic":var e=i.a,t=i.b;return d(BI,!1,e,t,r);default:var e=i.a,t=i.b;return d(BI,!0,e,t,r)}}())}var n=a.a;return f(function(){switch(e){case"div":return jT;case"p":return qT;default:return JT(e)}}(),t,function(){switch(i.$){case"NoStyleSheet":return n;case"OnlyDynamic":var e=i.a,t=i.b;return d(kI,!1,e,t,n);default:var e=i.a,t=i.b;return d(kI,!0,e,t,n)}}())}),s=function(){switch(t.$){case"Generic":return f(u,"div",n);case"NodeName":var e=t.a;return f(u,e,n);default:var e=t.a,r=t.b;return l(JT,e,n,M([f(u,r,M([YT(RT.any+" "+RT.single)]))]))}}();switch(o.$){case"AsRow":return f(ow,sw,e)&&!f(ow,uw,e)?s:f(ow,tw,e)?f(zT,M([YT(f(Ri," ",M([RT.any,RT.single,RT.container,RT.contentCenterY,RT.alignContainerRight])))]),M([s])):f(ow,rw,e)?f(GT,M([YT(f(Ri," ",M([RT.any,RT.single,RT.container,RT.contentCenterY,RT.alignContainerCenterX])))]),M([s])):s;case"AsColumn":return f(ow,iw,e)&&!f(ow,aw,e)?s:f(ow,nw,e)?f(GT,M([YT(f(Ri," ",M([RT.any,RT.single,RT.container,RT.alignContainerCenterY])))]),M([s])):f(ow,ew,e)?f(zT,M([YT(f(Ri," ",M([RT.any,RT.single,RT.container,RT.alignContainerBottom])))]),M([s])):s;default:return s}}),RI=Tw,$I=function(e){return f(jT,M([YT(f(Ri," ",M([RT.any,RT.text,RT.widthContent,RT.heightContent])))]),M([RI(e)]))},_I=function(e){return l(JT,"div",M([YT(f(Ri," ",M([RT.any,RT.text,RT.widthFill,RT.heightFill])))]),M([Tw(e)]))},LI=n(function(e,t,n){var a=r(function(t,r){var n=t.a,a=t.b,i=r.a,o=r.b;switch(a.$){case"Unstyled":var u=a.a;return R(e,HT),L(f(ka,L(n,u(e)),i),o);case"Styled":var s=a.a;return R(e,HT),L(f(ka,L(n,f(s.html,MT,e)),i),Iu(o)?s.styles:U(s.styles,o));case"Text":var c=a.a;return L(f(ka,L(n,R(e,AT)?_I(c):$I(c)),i),o);default:return L(i,o)}}),i=r(function(t,r){var n=r.a,a=r.b;switch(t.$){case"Unstyled":var i=t.a;return R(e,HT),L(f(ka,i(e),n),a);case"Styled":var o=t.a;return R(e,HT),L(f(ka,f(o.html,MT,e),n),Iu(a)?o.styles:U(o.styles,a));case"Text":var u=t.a;return L(f(ka,R(e,AT)?_I(u):$I(u),n),a);default:return L(n,a)}});if("Keyed"===t.$){var o=t.a,u=l(La,a,L(yr,yr),o),s=u.a,c=u.b,p=Iu(c)?n.styles:U(n.styles,c);if(p.b){var g=p;return ji({html:d(NI,n.has,n.node,n.attributes,OT(l(VT,"nearby-element-pls",s,n.children))),styles:g})}return Gi(h(NI,n.has,n.node,n.attributes,OT(l(VT,"nearby-element-pls",s,n.children)),MT))}var v=t.a,y=l(La,i,L(yr,yr),v),m=y.a,c=y.b,p=Iu(c)?n.styles:U(n.styles,c);if(p.b){var g=p;return ji({html:d(NI,n.has,n.node,n.attributes,wT(f(FT,m,n.children))),styles:g})}return Gi(h(NI,n.has,n.node,n.attributes,wT(f(FT,m,n.children)),MT))}),xI=r(function(e,t){return f(Nn,Ze(e),rt(t))}),PI=r(function(e,t){var r=t.a,n=t.b;if("Flag"===e.$){var a=e.a;return f(BT,a|r,n)}var i=e.a;return f(BT,r,i|n)}),DI=ZT(7),UI=ZT(36),OI=r(function(e,t){var r=e.a,n=e.b,a=t.a,i=t.b;return f(BT,r|a,n|i)}),MI=ZT(6),FI=ZT(38),VI=ZT(30),KI=ZT(29),HI=r(function(e,t){return{$:"Embedded",a:e,b:t}}),jI=n(function(e,t,r){return{$:"Single",a:e,b:t,c:r}}),qI=function(e){return{$:"Transform",a:e}},GI=function(e){return{$:"ChildrenBehind",a:e}},zI=r(function(e,t){return{$:"ChildrenBehindAndInFront",a:e,b:t}}),YI=function(e){return{$:"ChildrenInFront",a:e}},WI=r(function(e,t){return f(jT,M([YT(function(){switch(e.$){case"Above":return f(Ri," ",M([RT.nearby,RT.single,RT.above]));case"Below":return f(Ri," ",M([RT.nearby,RT.single,RT.below]));case"OnRight":return f(Ri," ",M([RT.nearby,RT.single,RT.onRight]));case"OnLeft":return f(Ri," ",M([RT.nearby,RT.single,RT.onLeft]));case"InFront":return f(Ri," ",M([RT.nearby,RT.single,RT.inFront]));default:return f(Ri," ",M([RT.nearby,RT.single,RT.behind]))}}())]),M([function(){switch(t.$){case"Empty":return Tw("");case"Text":var e=t.a;return $I(e);case"Unstyled":return(0,t.a)(AT);default:return f(t.a.html,MT,AT)}}()]))}),JI=n(function(e,t,r){var n=f(WI,e,t);switch(r.$){case"NoNearbyChildren":return"Behind"===e.$?GI(M([n])):YI(M([n]));case"ChildrenBehind":var a=r.a;return"Behind"===e.$?GI(f(ka,n,a)):f(zI,a,M([n]));case"ChildrenInFront":var i=r.a;return"Behind"===e.$?f(zI,M([n]),i):YI(f(ka,n,i));default:var a=r.a,i=r.b;return"Behind"===e.$?f(zI,f(ka,n,a),i):f(zI,a,f(ka,n,i))}}),QI=r(function(e,t){switch(t.$){case"Generic":return TT(e);case"NodeName":var r=t.a;return f(HI,r,e);default:var n=t.a,a=t.b;return f(HI,n,a)}}),XI=function(e){switch(e.$){case"Left":return RT.alignedHorizontally+" "+RT.alignLeft;case"Right":return RT.alignedHorizontally+" "+RT.alignRight;default:return RT.alignedHorizontally+" "+RT.alignCenterX}},ZI=function(e){switch(e.$){case"Top":return RT.alignedVertically+" "+RT.alignTop;case"Bottom":return RT.alignedVertically+" "+RT.alignBottom;default:return RT.alignedVertically+" "+RT.alignCenterY}},eA=a(function(e,t,r,n){return{$:"FullTransform",a:e,b:t,c:r,d:n}}),tA=function(e){return{$:"Moved",a:e}},rA=r(function(e,t){switch(e.$){case"Untransformed":switch(t.$){case"MoveX":var r=t.a;return tA(x(r,0,0));case"MoveY":var n=t.a;return tA(x(0,n,0));case"MoveZ":var a=t.a;return tA(x(0,0,a));case"MoveXYZ":var i=t.a;return tA(i);case"Rotate":var i=t.a,o=t.b;return d(eA,x(0,0,0),x(1,1,1),i,o);default:var i=t.a;return d(eA,x(0,0,0),i,x(0,0,1),0)}case"Moved":var u=e.a,r=u.a,n=u.b,a=u.c;switch(t.$){case"MoveX":var s=t.a;return tA(x(s,n,a));case"MoveY":var c=t.a;return tA(x(r,c,a));case"MoveZ":var f=t.a;return tA(x(r,n,f));case"MoveXYZ":var i=t.a;return tA(i);case"Rotate":var i=t.a,o=t.b;return d(eA,u,x(1,1,1),i,o);default:var l=t.a;return d(eA,u,l,x(0,0,1),0)}default:var u=e.a,r=u.a,n=u.b,a=u.c,h=e.b,p=e.c,o=e.d;switch(t.$){case"MoveX":var s=t.a;return d(eA,x(s,n,a),h,p,o);case"MoveY":var c=t.a;return d(eA,x(r,c,a),h,p,o);case"MoveZ":var f=t.a;return d(eA,x(r,n,f),h,p,o);case"MoveXYZ":var g=t.a;return d(eA,g,h,p,o);case"Rotate":var v=t.a,y=t.b;return d(eA,u,h,v,y);default:var m=t.a;return d(eA,u,m,p,o)}}}),nA=function(e){switch(e.$){case"Px":var t=e.a,r=Ni(t),n="height-px-"+r;return x(kT,n,M([l(jI,n,"height",r+"px")]));case"Content":return x(f(PI,UI,kT),RT.heightContent,yr);case"Fill":var a=e.a;return 1===a?x(f(PI,iw,kT),RT.heightFill,yr):x(f(PI,iw,kT),RT.heightFillPortion+" height-fill-"+Ni(a),M([l(jI,RT.any+"."+RT.row+" > "+Ew("height-fill-"+Ni(a)),"flex-grow",Ni(1e5*a))]));case"Min":var i=e.a,o=e.b,u="min-height-"+Ni(i),s=l(jI,u,"min-height",Ni(i)+"px"),c=nA(o),d=c.a,h=c.b,p=c.c;return x(f(PI,aw,d),u+" "+h,f(ka,s,p));default:var g=e.a,o=e.b,u="max-height-"+Ni(g),s=l(jI,u,"max-height",Ni(g)+"px"),v=nA(o),d=v.a,h=v.b,p=v.c;return x(f(PI,aw,d),u+" "+h,f(ka,s,p))}},aA=function(e){switch(e.$){case"Px":var t=e.a;return x(kT,RT.widthExact+" width-px-"+Ni(t),M([l(jI,"width-px-"+Ni(t),"width",Ni(t)+"px")]));case"Content":return x(f(PI,FI,kT),RT.widthContent,yr);case"Fill":var r=e.a;return 1===r?x(f(PI,sw,kT),RT.widthFill,yr):x(f(PI,sw,kT),RT.widthFillPortion+" width-fill-"+Ni(r),M([l(jI,RT.any+"."+RT.row+" > "+Ew("width-fill-"+Ni(r)),"flex-grow",Ni(1e5*r))]));case"Min":var n=e.a,a=e.b,i="min-width-"+Ni(n),o=l(jI,i,"min-width",Ni(n)+"px"),u=aA(a),s=u.a,c=u.b,d=u.c;return x(f(PI,uw,s),i+" "+c,f(ka,o,d));default:var h=e.a,a=e.b,i="max-width-"+Ni(h),o=l(jI,i,"max-width",Ni(h)+"px"),p=aA(a),s=p.a,c=p.b,d=p.c;return x(f(PI,uw,s),i+" "+c,f(ka,o,d))}},iA=ZT(27),oA=r(function(e,t){if(R(e,iA)){if("Single"!==t.$)return!1;switch(t.c){case"0px":case"1px":case"2px":case"3px":case"4px":case"5px":case"6px":return!0;default:return!1}}else switch(t.$){case"FontSize":var r=t.a;return r>=8&&r<=32;case"PaddingStyle":var n=(t.a,t.b),a=t.c,i=t.d,o=t.e;return R(n,i)&&R(n,a)&&R(n,o)&&n>=0&&n<=24;default:return!1}}),uA=s(function(e,t,r,n,a,i,o,u){e:for(;;){if(!u.b){var s=hw(n);if("Nothing"===s.$)return{attributes:f(ka,YT(e),i),children:o,has:r,node:t,styles:a};var c=s.a;return{attributes:f(ka,YT(e+" "+c),i),children:o,has:r,node:t,styles:f(ka,qI(n),a)}}var d=u.a,h=u.b;switch(d.$){case"NoAttribute":var p=e,g=t,v=r,y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e;case"Class":var S=d.a,T=d.b;if(f(ow,S,r)){var p=e,g=t,v=r,y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e}var p=T+" "+e,g=t,v=f(PI,S,r),y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e;case"Attr":var w=d.a,p=e,g=t,v=r,y=n,m=a,b=f(ka,w,i),C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e;case"StyleClass":var S=d.a,I=d.b;if(f(ow,S,r)){var p=e,g=t,v=r,y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e}if(f(oA,S,I)){var p=pw(I)+" "+e,g=t,v=f(PI,S,r),y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e}var p=pw(I)+" "+e,g=t,v=f(PI,S,r),y=n,m=f(ka,I,a),b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e;case"TransformComponent":var S=d.a,A=d.b,p=e,g=t,v=f(PI,S,r),y=f(rA,n,A),m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e;case"Width":var B=d.a;if(f(ow,MI,r)){var p=e,g=t,v=r,y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e}switch(B.$){case"Px":var k=B.a,p=RT.widthExact+" width-px-"+Ni(k)+" "+e,g=t,v=f(PI,MI,r),y=n,m=f(ka,l(jI,"width-px-"+Ni(k),"width",Ni(k)+"px"),a),b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e;case"Content":var p=e+" "+RT.widthContent,g=t,v=f(PI,FI,f(PI,MI,r)),y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e;case"Fill":var N=B.a;if(1===N){var p=e+" "+RT.widthFill,g=t,v=f(PI,sw,f(PI,MI,r)),y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e}var p=e+" "+RT.widthFillPortion+" width-fill-"+Ni(N),g=t,v=f(PI,sw,f(PI,MI,r)),y=n,m=f(ka,l(jI,RT.any+"."+RT.row+" > "+Ew("width-fill-"+Ni(N)),"flex-grow",Ni(1e5*N)),a),b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e;default:var R=aA(B),$=R.a,_=R.b,L=R.c,p=e+" "+_,g=t,v=f(OI,$,r),y=n,m=U(L,a),b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e}case"Height":var x=d.a;if(f(ow,DI,r)){var p=e,g=t,v=r,y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e}switch(x.$){case"Px":var k=x.a,P=Ni(k)+"px",D="height-px-"+P,p=D+" "+e,g=t,v=f(PI,DI,r),y=n,m=f(ka,l(jI,D,"height ",P),a),b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e;case"Content":var p=RT.heightContent+" "+e,g=t,v=f(PI,UI,f(PI,DI,r)),y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e;case"Fill":var N=x.a;if(1===N){var p=RT.heightFill+" "+e,g=t,v=f(PI,iw,f(PI,DI,r)),y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e}var p=e+" "+RT.heightFillPortion+" height-fill-"+Ni(N),g=t,v=f(PI,iw,f(PI,DI,r)),y=n,m=f(ka,l(jI,RT.any+"."+RT.column+" > "+Ew("height-fill-"+Ni(N)),"flex-grow",Ni(1e5*N)),a),b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e;default:var O=nA(x),$=O.a,_=O.b,L=O.c,p=e+" "+_,g=t,v=f(OI,$,r),y=n,m=U(L,a),b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e}case"Describe":var M=d.a;switch(M.$){case"Main":var p=e,g=f(QI,"main",t),v=r,y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e;case"Navigation":var p=e,g=f(QI,"nav",t),v=r,y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e;case"ContentInfo":var p=e,g=f(QI,"footer",t),v=r,y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e;case"Complementary":var p=e,g=f(QI,"aside",t),v=r,y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e;case"Heading":var F=M.a;if(F<=1){var p=e,g=f(QI,"h1",t),v=r,y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e}if(F<7){var p=e,g=f(QI,"h"+Ni(F),t),v=r,y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e}var p=e,g=f(QI,"h6",t),v=r,y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e;case"Paragraph":var V=function(){switch(t.$){case"Generic":return TT("p");case"NodeName":var e=t.a;return TT(e);default:var r=t.a,n=t.b;return f(HI,r,n)}}(),p=e,g=V,v=r,y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e;case"Button":var p=e,g=t,v=r,y=n,m=a,b=f(ka,f(xI,"role","button"),i),C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e;case"Label":var K=M.a,p=e,g=t,v=r,y=n,m=a,b=f(ka,f(xI,"aria-label",K),i),C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e;case"LivePolite":var p=e,g=t,v=r,y=n,m=a,b=f(ka,f(xI,"aria-live","polite"),i),C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e;default:var p=e,g=t,v=r,y=n,m=a,b=f(ka,f(xI,"aria-live","assertive"),i),C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e}case"Nearby":var H=d.a,j=d.b,L=function(){switch(j.$){case"Empty":return a;case"Text":j.a;return a;case"Unstyled":j.a;return a;default:var e=j.a;return U(a,e.styles)}}(),p=e,g=t,v=r,y=n,m=L,b=i,C=l(JI,H,j,o),E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e;case"AlignX":var q=d.a;if(f(ow,VI,r)){var p=e,g=t,v=r,y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e}var p=XI(q)+" "+e,g=t,v=function(e){switch(q.$){case"CenterX":return f(PI,rw,e);case"Right":return f(PI,tw,e);default:return e}}(f(PI,VI,r)),y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e;default:var G=d.a;if(f(ow,KI,r)){var p=e,g=t,v=r,y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e}var p=ZI(G)+" "+e,g=t,v=function(e){switch(G.$){case"CenterY":return f(PI,nw,e);case"Bottom":return f(PI,ew,e);default:return e}}(f(PI,KI,r)),y=n,m=a,b=i,C=o,E=h;e=p,t=g,r=v,n=y,a=m,i=b,o=C,u=E;continue e}}}),sA={$:"Untransformed"},cA=sA,fA=a(function(e,t,r,n){return l(LI,e,n,v(uA,UT(e),t,kT,cA,yr,yr,NT,$a(r)))}),lA=function(e){return ST(YT(e))},dA=r(function(e,t){var r=t.url,n=t.label;return d(fA,AT,TT("a"),f(ka,ST(hT(r)),f(ka,ST(pT("noopener noreferrer")),f(ka,ST(gT("_blank")),f(ka,ET(bT),f(ka,yT(bT),f(ka,lA(RT.contentCenterX+" "+RT.contentCenterY),e)))))),wT(M([n])))}),hA=a(function(e,t,r,n){return{$:"Rgba",a:e,b:t,c:r,d:n}}),pA=n(function(e,t,r){return d(hA,e,t,r,1)}),gA=ZT(14),vA=n(function(e,t,r){return{$:"Colored",a:e,b:t,c:r}}),yA=r(function(e,t){return{$:"StyleClass",a:e,b:t}}),mA=function(e){var t=e.a,r=e.b,n=e.c,a=e.d;return dw(t)+"-"+dw(r)+"-"+dw(n)+"-"+dw(a)},bA=function(e){return f(yA,gA,l(vA,"fc-"+mA(e),"color",e))},CA={align:ul,label:"cantConnectNoWeb3",mainParagraphs:M([M([fl("You need a web3 provider (such as "),f(dA,M([bA(l(pA,0,0,1))]),{label:fl("Metamask"),url:"https://metamask.io/"}),fl(") to Connect.")]),M([fl("Until you connect, DAIHard will operate in read-only mode.")])]),noticeType:xg},EA={align:ul,label:"invalidUrl",mainParagraphs:M([M([fl("I don't understand that URL...")]),M([fl("I'll just set you down here. Maybe check the URL and try again?")])]),noticeType:$g},SA=function(e){return{$:"Active",a:e}},TA=function(e){return{$:"OnlyNetwork",a:e}},wA=gu(f(zo,jf,f(zo,Hh,$d("Error decoding hex to BigInt")))),IA=function(){return gu(function(e){switch(e){case"0x0":return li(!1);case"0x1":return li(!0);default:return fi("Error decoding "+e+"as bool.")}})}(),AA=function(e){return function(t){return function(r){return function(n){return function(a){return function(i){return function(o){return function(u){return function(s){return function(c){return function(f){return{blockHash:r,blockNumber:n,contractAddress:o,cumulativeGasUsed:i,gasUsed:a,hash:e,index:t,logs:u,logsBloom:s,root:c,status:f}}}}}}}}}}}},BA=function(e){return Em(M([f(Oi,si,e),Fi(ci)]))},kA=f(dh,BA(f(Oh,"status",IA)),f(dh,BA(f(Oh,"root",pu)),l(Im,"logsBloom",pu,l(Im,"logs",Mm(Fm),f(dh,BA(f(Oh,"contractAddress",Am)),l(Im,"cumulativeGasUsed",wA,l(Im,"gasUsed",wA,l(Im,"blockNumber",Gy,l(Im,"blockHash",Rm,l(Im,"transactionIndex",Gy,l(Im,"transactionHash",Dm,Fi(AA)))))))))))),NA=function(e){var t=e.a;return jf(t)},RA=f(zo,NA,hl),$A=r(function(e,t){return Up({decoder:kA,method:"eth_getTransactionReceipt",params:M([RA(t)]),url:e})}),_A=n(function(e,t,r){return{$:"TrackTx",a:e,b:t,c:r}}),LA=r(function(e,t){return{$:"TxMined",a:e,b:t}}),xA=r(function(e,t){return{$:"TxSent",a:e,b:t}}),PA=r(function(e,t){return f(Bo,function(e){return e.toMsg},f(Io,function(e){return e.b},f(Io,function(e){return e.onMinedTagger},f(fp,t,e))))}),DA=function(e){return function(t){return function(r){return function(n){return function(a){return function(i){return function(o){return function(u){return function(s){return function(c){return function(f){return{blockHash:r,blockNumber:n,from:i,gas:c,gasPrice:s,hash:e,input:f,nonce:t,to:o,transactionIndex:a,value:u}}}}}}}}}}}},UA=function(e){return Em(M([Cm(ci),f(Oi,si,e)]))},OA=l(Im,"input",pu,l(Im,"gas",Gy,l(Im,"gasPrice",wA,l(Im,"value",wA,l(Im,"to",UA(Am),l(Im,"from",Am,l(Im,"transactionIndex",Gy,l(Im,"blockNumber",UA(Gy),l(Im,"blockHash",function(e){return f(du,function(t){return"0x"===t||"0x0"===t?Fi(ci):f(ki,function(e){return R(e,P("0"))},cu(t))?Fi(ci):f(Oi,si,e)},pu)}(Rm),l(Im,"nonce",Gy,l(Im,"hash",Dm,Fi(DA)))))))))))),MA=r(function(e,t){return Up({decoder:OA,method:"eth_getTransactionByHash",params:M([RA(t)]),url:e})}),FA=r(function(e,t){return{attempts:e,sleep:t}}),VA=r(function(e,t){var r=e.attempts,n=e.sleep,a=r-1;return f(Xp,function(e){return a>0?f(Kp,function(e){return f(VA,f(FA,a,n),t)},bS(1e3*n)):Lp(e)},t)}),KA=r(function(e,t){return f(Kp,function(r){return f(VA,{attempts:30,sleep:1},f(MA,e,t))},bS(250))}),HA=r(function(e,t){return f(VA,{attempts:60,sleep:5},f($A,e,t))}),jA=function(e){return{$:"Mined",a:e}},qA=function(e){return Bo(function(t){return D(t,{status:jA(e)})})},GA=function(e){return{$:"Sent",a:e}},zA=function(e){return Bo(function(t){return D(t,{status:GA(e)})})},YA=function(e){return{$:"Signed",a:e}},WA=function(e){return Bo(function(t){return D(t,{status:YA(e)})})},JA=function(e){return"Nothing"!==e.$},QA=r(function(e,t){var r=t.a;switch(e.$){case"NoOp":return L(Tl(r),Do);case"TxSigned":var n=e.a,a=e.b,i=f(fp,n,r.txs);if("Just"===i.$){var o=i.a,u=function(){var e=o.onSignedTagger;if("Just"===e.$){var t=e.a;return f(Yg,t,xp(a))}return Do}(),s=function(e){var t=x(o.onSignedTagger,o.onBroadcastTagger,o.onMinedTagger);if("Just"===t.a.$)return Do;if("Just"===t.b.$){var r=t.b.a;return f(Yg,r,xp(fi(e)))}if("Just"===t.c.$){var n=t.c.a,a=n.a;return f(Yg,a,xp(fi(e)))}t.a,t.b,t.c;return Do};if("Ok"===a.$){var c=a.a,d=JA(o.onBroadcastTagger)||JA(o.onMinedTagger)?f(il,r.tagger,f(Zp,xA(n),f(KA,r.nodePath,c))):Do;return L(Tl(D(r,{txs:l(bp,n,WA(c),r.txs)})),Po(M([u,d])))}var h=a.a;return L(Tl(r),Po(M([u,s(h)])))}return L(Tl(r),Do);case"TxSent":var n=e.a,p=e.b,g=f(fp,n,r.txs);if("Just"===g.$){var o=g.a;if("Ok"===p.$){var v=p.a,y=function(){return"Just"===o.onMinedTagger.$?f(il,r.tagger,f(Zp,LA(n),f(HA,r.nodePath,v.hash))):Do}(),d=function(){var e=o.onBroadcastTagger;if("Just"===e.$){var t=e.a;return f(Yg,t,xp(li(v)))}return Do}();return L(Tl(D(r,{txs:l(bp,n,zA(v),r.txs)})),Po(M([d,y])))}var h=p.a,s=function(){var e=L(o.onBroadcastTagger,o.onMinedTagger);if("Just"===e.a.$){var t=e.a.a;return f(Yg,t,xp(fi("Error with TxSent stuff")))}if("Just"===e.b.$){var r=e.b.a,n=r.a;return f(Yg,n,xp(fi("Error with TxSent stuff")))}e.a,e.b;return Do}();return L(Tl(r),s)}return L(Tl(r),Do);case"TxMined":var n=e.a,m=e.b,b=f(fp,n,r.txs);if("Just"===b.$){var o=b.a;if("Ok"===m.$){var C=m.a,E=function(){var e=o.onMinedTagger;if("Just"===e.$){if("Nothing"===e.a.b.$){var t=e.a,a=t.a;t.b;return f(Yg,a,xp(li(C)))}var i=e.a,a=i.a,u=i.b.a,s={currentDepth:1,doneWatching:!1,lastCheckedBlock:C.blockNumber,minedInBlock:C.blockNumber,reOrg:!1,stopWatchingAtBlock:C.blockNumber+(u.confirmations-1),txHash:C.hash};return Po(M([f(il,r.tagger,f(Zp,f(_A,n,s),zy(r.nodePath))),f(Yg,a,xp(li(C))),f(Yg,u.toMsg,xp(s))]))}return Do}();return L(Tl(D(r,{txs:l(bp,n,qA(C),r.txs)})),E)}var h=m.a,S=function(){var e=o.onMinedTagger;if("Just"===e.$){var t=e.a,r=t.a;return f(Yg,r,xp(fi("TxReceipt decoding failure")))}return Do}();return L(Tl(r),S)}return L(Tl(r),Do);case"TrackTx":if("Ok"===e.c.$){var n=e.a,T=e.b,w=e.c.a,I=D(T,{currentDepth:w-T.minedInBlock+1,lastCheckedBlock:w});if(R(w,T.stopWatchingAtBlock)){var A=f(PA,r.txs,n);if("Just"===A.$){var B=A.a;return L(Tl(r),f(Yg,B,f(Xp,function(e){return xp(D(I,{doneWatching:!0,reOrg:!0}))},f(Kp,function(e){return xp(D(I,{doneWatching:!0}))},f($A,r.nodePath,T.txHash)))))}return L(Tl(r),Do)}if(R(w,T.lastCheckedBlock))return L(Tl(r),f(il,r.tagger,f(Zp,f(_A,n,T),f(Kp,function(e){return zy(r.nodePath)},bS(2e3)))));var k=f(PA,r.txs,n);if("Just"===k.$){var B=k.a;return L(Tl(r),Po(M([f(il,r.tagger,f(Zp,f(_A,n,I),f(Kp,function(e){return zy(r.nodePath)},bS(2e3)))),f(Yg,B,xp(I))])))}return L(Tl(r),Do)}var n=e.a,h=e.c.a;return L(Tl(r),Do);default:var h=e.a;return L(Tl(r),Do)}}),XA=Jt,ZA=r(function(e,t){if("Nothing"===e.$)return t;var r=e.a;return t+":"+Ni(r)}),eB=n(function(e,t,r){return"Nothing"===t.$?r:U(r,U(e,t.a))}),tB=function(e){var t=function(){return"Http"===e.protocol.$?"http://":"https://"}();return l(eB,"#",e.fragment,l(eB,"?",e.query,U(f(ZA,e.port_,U(t,e.host)),e.path)))},rB=r(function(e,t){return e<0?ci:Ql(f(nd,e,t))}),nB=r(function(e,t){if(e<0)return t;var r=Bh(f(nd,e,t)),n=f(lc,e,t);if("Nothing"===r.$)return t;var a=r.a;return f(oo,n,a)}),aB=n(function(e,t,r){if(e<0)return r;var n=f(nd,e,r),a=f(lc,e,r);if(n.b){var i=n.a,o=n.b;return U(a,f(ka,t(i),o))}return r}),iB=r(function(e,t){return f(aB,e,ms(t))}),oB=r(function(e,t){Kv(t);switch(t.$){case"Home":return L(D(e,{submodel:sT}),Do);case"Create":var r=Xd(e.wallet),n=f(Ul,e.txSentry,f(Yo,Uy,r.chainCmd)),a=n.a,i=n.b,o=n.c;return f(sB,U(f(Qi,Uy,r.appCmds),f(xa,pa,o)),L(D(e,{submodel:Dy(r.model),txSentry:a}),Po(M([f(il,Uy,r.cmd),i]))));case"Trade":var u=t.a,s=t.b,r=function(){var t=l(By,u,s,e.tradeCaches);if("Just"===t.$&&"LoadedTrade"===t.a.$){var r=t.a.a;return f(Wm,e.wallet,r)}return l(vm,e.wallet,u,s)}(),c=f(Ul,e.txSentry,f(Yo,Fy,r.chainCmd)),a=c.a,i=c.b,o=c.c;return f(sB,U(f(Qi,Fy,r.appCmds),f(xa,pa,o)),L(D(e,{submodel:My(r.model),txSentry:a}),Po(M([f(il,Fy,r.cmd),i]))));case"Marketplace":var d=Bv(e.wallet),h=d.a,p=d.b;return L(D(e,{submodel:Oy(h)}),Po(M([f(il,fT,p)])));case"AgentHistory":var g=t.a,v=f(Uo,e.wallet,g),y=v.a,m=v.b;return L(D(e,{submodel:Py(y)}),Po(M([f(il,oT,m)])));default:return L(f(uo,EA,e),Do)}}),uB=r(function(e,t){var r=t.a,n=t.b,a=f(cB,uT(e),r),i=a.a,o=a.b;return L(i,Po(M([n,o])))}),sB=r(function(e,t){var r=t.a,n=t.b;return l(Ra,uB,L(r,n),e)}),cB=r(function(e,t){switch(e.$){case"AppCmd":var r=e.a;switch(r.$){case"Web3Connect":return f(cB,cT,t);case"GotoRoute":var n=r.a;return L(t,f(Cy,t.key,n));case"GTag":var a=r.a;return L(t,wy(Sy(a)));case"UserNotice":var i=r.a;return L(f(uo,i,t),wy(Sy(d(Ol,"user notice","user notice",i.label,0))));case"BrowserNotification":var o=r.a,u=r.b,s=r.c;return L(t,d(Uv,ky,o,u,s));default:return L(t,Ny(gr))}case"DismissNotice":var c=e.a;return L(D(t,{userNotices:f(nB,c,t.userNotices)}),Do);case"LinkClicked":var h=e.a,p=function(){if("Internal"===h.$){var e=h.a;return f(by,t.key,tB(e))}var r=h.a;return XA(r)}();return L(t,p);case"UrlChanged":var g=e.a;return f(fB,g,t);case"GotoRoute":var v=e.a;return L(t,Po(M([wy(Sy(d(Ol,"GotoRoute","navigation",Kv(v),0))),f(Cy,t.key,v)])));case"Tick":var y=e.a;return L(D(t,{time:y}),Do);case"ConnectToWeb3":return"NoneDetected"===t.wallet.$?L(f(uo,CA,t),Do):L(t,Ey(gr));case"WalletStatus":var m=e.a,b=function(){var e=m.account;if("Nothing"===e.$)return Do;var t=e.a;return Iy(f(Ty,t,"Deriving keypair for encrypted communication on the DAIHard exchange. ONLY SIGN THIS on https://burnable-tech.github.io/DAIHard/. If you sign this elsewhere, you risk revealing any of your encrypted communication on DAIHard to an attacker."))}();return L(D(t,{userAddress:m.account,wallet:TA(m.networkId)}),b);case"UserPubkeySet":var C=e.a,E=f(Gh,pu,C);if("Ok"===E.$){var S=E.a,T=L(t.userAddress,t.wallet);if("Just"===T.a.$){if("OnlyNetwork"===T.b.$){var w=T.a.a,I=T.b.a,A=SA(l(Ml,I,w,S)),B=f(Vy,A,t.submodel),k=B.a,p=B.b;return L(D(t,{submodel:k,wallet:A}),p)}return L(f(uo,f(ll,"Unexpected wallet state encounted when setting commPubkey!",L(t.userAddress,t.wallet)),t),Do)}T.a;return L(f(uo,f(ll,"User pubkey set, but I can no longer find the user address!",ci),t),Do)}var N=E.a;return L(l(Pa,uo,f(ll,"error decoding commPubkey from JS",N),t),Do);case"CreateMsg":var R=e.a,$=t.submodel;if("CreateModel"===$.$){var _=$.a,x=f(lv,R,_),P=f(Ul,t.txSentry,f(Yo,Uy,x.chainCmd)),O=P.a,F=P.b,V=P.c;return f(sB,U(f(Qi,Uy,x.appCmds),f(xa,pa,V)),L(D(t,{submodel:Dy(x.model),txSentry:O}),Po(M([f(il,Uy,x.cmd),F]))))}return L(t,Do);case"TradeMsg":var K=e.a,H=t.submodel;if("TradeModel"===H.$){var j=H.a,x=f(BS,K,j),q=f(Ul,t.txSentry,f(Yo,Fy,x.chainCmd)),O=q.a,F=q.b,V=q.c;return f(sB,U(f(Qi,Fy,x.appCmds),f(xa,pa,V)),L(D(t,{submodel:My(x.model),txSentry:O}),Po(M([f(il,Fy,x.cmd),F]))))}return L(t,Do);case"MarketplaceMsg":var G=e.a,z=t.submodel;if("MarketplaceModel"===z.$){var Y=z.a,x=f(Dv,G,Y);return f(sB,f(Qi,fT,x.appCmds),L(D(t,{submodel:Oy(x.model)}),f(il,fT,x.cmd)))}return L(t,Do);case"AgentHistoryMsg":var W=e.a,J=t.submodel;if("AgentHistoryModel"===J.$){var Q=J.a,x=f(ol,W,Q),X=f(Ul,t.txSentry,f(Yo,oT,x.chainCmd)),O=X.a,F=X.b,V=X.c;return f(sB,U(f(Qi,oT,x.appCmds),f(xa,pa,V)),L(D(t,{submodel:Py(x.model),txSentry:O}),Po(M([f(il,oT,x.cmd),F]))))}return L(t,Do);case"TxSentryMsg":var Z=e.a,ee=function(){var e=t.txSentry;if("Just"===e.$){var r=e.a;return f(_u,si,f(QA,Z,r))}return L(ci,Do)}(),O=ee.a,te=ee.b;return L(D(t,{txSentry:O}),te);case"TradeCacheMsg":var re=e.a,ne=e.b,ae=f(rB,re,t.tradeCaches);if("Nothing"===ae.$)return f(uB,pa(f(ll,"Encountered an out-of-range error when trying to route a TradeCacheMsg",ci)),L(t,Do));var ie=ae.a,x=f(iT,ne,ie);return L(D(t,{tradeCaches:l(iB,re,x.tradeCache,t.tradeCaches)}),f(il,lT(re),x.cmd));case"NoOp":return L(t,Do);default:var N=e.a;f(cl,"test",N);return L(t,Do)}}),fB=r(function(e,t){return f(oB,t,my(e))}),lB=Ge("txIn",Sm),dB=je("txOut",Ua),hB=function(e){if("Token"===e.$){if("EthDai"===e.a.$){e.a;return"Dai"}e.a;return"Kovan Dai"}switch(e.a.$){case"Eth":e.a;return"Ether";case"Kovan":e.a;return"Kovan Ether";default:e.a;return"xDai"}},pB=function(e){return{$:"EventSentryMsg",a:e}},gB=function(e){var t=f(cm,pB,Xh(e)),r=t.a,n=t.b;return x({dataFetchState:l(QS,ci,0,0),eventSentry:r,factory:e,trades:qa},n,M([d(Zd,"tradeCache init","processing",hB(e),0)]))},vB=function(e){return{$:"InitialNumTradesFetched",a:e}},yB=function(e){return f(LS,e.factory,vB)},mB=function(e){var t=gB(e),r=t.a,n=t.b,a=t.c;return x(r,Po(M([n,yB(r)])),a)},bB=function(e){return{$:"TxSentryMsg",a:e}},CB={align:ul,label:"noWeb3Provider",mainParagraphs:M([M([fl("No web3 provider detected. Is "),f(dA,M([bA(l(pA,0,0,1))]),{label:fl("Metamask"),url:"https://metamask.io/"}),fl(" or some other web3 provider installed and unlocked?")])]),noticeType:xg},EB={$:"TopLeft"},SB={align:EB,label:"screenToSmall",mainParagraphs:M([M([fl("Your screen is quite small--things may be very broken! We will be addressing this soon.")])]),noticeType:xg},TB={align:ul,label:"wrongWeb3Network",mainParagraphs:M([M([fl("Make sure your wallet is set to a compatible network.")]),M([fl(" At the moment DAIHard works on: xDai, the Kovan Ethereum Test Net, or Ethereum Main Net.")])]),noticeType:$g},wB={$:"NoneDetected"},IB=function(e){return f(Bo,Xh,Mg(e))},AB={$:"ETCMain"},BB={$:"ETCTest"},kB={$:"Expanse"},NB={$:"Kovan"},RB={$:"Mainnet"},$B=function(e){return{$:"Private",a:e}},_B={$:"Rinkeby"},LB={$:"Ropsten"},xB={$:"RskMain"},PB={$:"RskTest"},DB=function(e){switch(e){case 1:return RB;case 2:return kB;case 3:return LB;case 4:return _B;case 30:return xB;case 31:return PB;case 42:return NB;case 41:return AB;case 62:return BB;default:return $B(e)}},UB=n(function(e,t,r){var n=e.a,a=e.b;return Tl({inPort:a,nodePath:r,outPort:n,ref:1,tagger:t,txs:cp})}),OB=n(function(e,t,n){var a=e.networkId?TA(DB(e.networkId)):wB,i=f(Bo,function(e){return l(UB,L(dB,lB),bB,e)},IB(a)),o=e.width<1024?si(SB):ci,u=f(xa,mB,ro),s=function(){return R(a,wB)?si(CB):"Nothing"===Mg(a).$?si(TB):ci}(),c=mE(M([o,s])),d=x(f(xa,no,u),f(xa,ao,u),f(xa,io,u)),h=d.a,p=d.b,g=d.c,v=ay(f(Bi,r(function(e,t){return f(Qi,lT(e),t)}),g)),y=Po(f(Bi,r(function(e,t){return f(il,lT(e),t)}),p)),m=f(sB,v,f(fB,t,{key:n,screenWidth:e.width,submodel:sT,time:Vl(0),tradeCaches:h,txSentry:i,userAddress:ci,userNotices:yr,wallet:a})),b=m.a,C=m.b;return L(f(so,c,b),Po(M([y,C])))}),MB=Oe,FB=MB(yr),VB=function(e){return FB},KB=function(e){return{$:"Refresh",a:e}},HB=r(function(e,t){return{$:"Every",a:e,b:t}}),jB=r(function(e,t){return{processes:t,taggers:e}}),qB=xp(f(jB,cp,cp)),GB=o(function(e,t,a,i,o,u){var s=n(function(r,n,i){e:for(;;){var o=i.a,u=i.b;if(o.b){var s=o.a,c=s.a,f=s.b,h=o.b;if(_(c,r)<0){var p=r,g=n,v=L(h,l(e,c,f,u));r=p,n=g,i=v;continue e}return _(c,r)>0?L(o,l(a,r,n,u)):L(h,d(t,c,f,n,u))}return L(o,l(a,r,n,u))}}),c=l(SS,s,L(Ia(i),u),o),f=c.a,h=c.b;return l(Ra,r(function(t,r){var n=t.a,a=t.b;return l(e,n,a,r)}),h,f)}),zB=Ne,YB=r(function(e,t){var r=e.a,n=e.b,a=f(fp,r,t);if("Nothing"===a.$)return l(xl,r,M([n]),t);var i=a.a;return l(xl,r,f(ka,n,i),t)}),WB=Be,JB=r(function(e,t){return{$:"Zone",a:e,b:t}}),QB=ca,XB=n(function(e,t,r){if(t.b){var n=t.a,a=t.b,i=WB(f(QB,n,f(Sp,e,n)));return f(Kp,function(t){return l(XB,e,a,l(xl,n,t,r))},i)}return xp(r)}),ZB=n(function(e,t,r){var i=r.processes,o=n(function(e,t,r){var n=r.a,a=r.b,i=r.c;return x(n,a,f(Kp,function(e){return i},zB(t)))}),u=l(Ra,YB,cp,t),s=n(function(e,t,r){var n=r.a,a=r.b,i=r.c;return x(f(ka,e,n),a,i)}),c=a(function(e,t,r,n){var a=n.a,i=n.b,o=n.c;return x(a,l(xl,e,r,i),o)}),d=p(GB,s,c,o,u,i,x(yr,cp,xp(gr))),h=d.a,g=d.b,v=d.c;return f(Kp,function(e){return xp(f(jB,u,e))},f(Kp,function(t){return l(XB,e,h,g)},v))}),ek=function(e){return we(function(t){t(Se(e(Date.now())))})}(Vl),tk=n(function(e,t,r){var n=f(fp,t,r.taggers);if("Nothing"===n.$)return xp(r);var a=n.a,i=function(t){return Gp(f(xa,function(r){return f(Ep,e,r(t))},a))};return f(Kp,function(e){return xp(r)},f(Kp,i,ek))}),rk=r(function(e,t){var r=t.a,n=t.b;return f(HB,r,f(Da,e,n))});pn.Time=Pe(qB,ZB,tk,0,rk);var nk=Ue("Time"),ak=r(function(e,t){return nk(f(HB,e,t))}),ik=function(e){return f(ak,2e3,KB)},ok=function(e){return FB},uk=function(e){return{$:"DecryptionFinished",a:e}},sk=Ge("decryptionFinished",Sm),ck=Ge("encryptionFinished",Sm),fk=function(e){return{$:"EncryptionFinished",a:e}},lk=function(e){return{$:"Refresh",a:e}},dk=function(e){return MB(M([f(ak,3e3,lk),ck(fk),sk(function(e){return jE(uk(e))})]))},hk=yn,pk=function(e){var t=e.submodel;switch(t.$){case"BetaLandingPage":return FB;case"CreateModel":t.a;return f(hk,Uy,ik());case"TradeModel":t.a;return f(hk,Fy,dk());case"MarketplaceModel":t.a;return f(hk,fT,ok());default:t.a;return f(hk,oT,VB())}},gk=Ge("userPubkeyResult",Sm),vk=Ge("walletSentryPort",Sm),yk={$:"CheckForNewTrades"},mk={$:"UpdateTradePhases"},bk=function(e){return MB(M([f(ak,5e3,function(e){return yk}),f(ak,3e3,function(e){return mk})]))},Ck=function(e){return{$:"Tick",a:e}},Ek=function(e){return{$:"UserPubkeySet",a:e}},Sk=function(e){return{$:"WalletStatus",a:e}},Tk=function(e){return f(ll,"Error decoding JS walletSentry: "+e,ci)},wk=function(e){return{$:"ErrorDecoding",a:e}},Ik=r(function(e,t){return{$:"TxSigned",a:e,b:t}}),Ak=l(Mi,r(function(e,t){return{ref:e,txHash:t}}),f(Oh,"ref",CE),f(Oh,"txHash",BA(Dm))),Bk=function(e){var t=f(Gh,Ak,e);if("Ok"===t.$){var r=t.a,n=r.txHash;if("Just"===n.$){var a=n.a;return f(Ik,r.ref,li(a))}return f(Ik,r.ref,fi("Problem signing/broadcasting Tx. Ref #"+Ni(r.ref)))}t.a;return wk("Error decoding tx data")},kk=function(e){var t=e.a;return f(hk,t.tagger,t.inPort(Bk))},Nk=f(Oi,DB,CE),Rk=gu(f(zo,rd,f(zo,$d("Failure decoding stringy int"),au(DB)))),$k=Em(M([Rk,Nk])),_k=r(function(e,t){return{account:e,networkId:t}}),Lk=l(Mi,_k,f(Oh,"account",BA(Am)),f(Oh,"networkId",$k)),xk=n(function(e,t,r){var n=f(Gh,Lk,r);if("Err"===n.$){var a=n.a;return e(Di(a))}return t(n.a)}),Pk=function(e){var t=f(zo,Tk,f(zo,pa,uT));return MB(U(M([f(ak,1e3,Ck),vk(f(xk,t,Sk)),f(xc,FB,f(Bo,kk,e.txSentry)),gk(Ek),MB(f(Bi,r(function(e,t){return f(hk,lT(e),t)}),f(xa,bk,e.tradeCaches)))]),M([pk(e)])))},Dk=function(e){return{$:"LinkClicked",a:e}},Uk=function(e){return{$:"UrlChanged",a:e}},Ok=n(function(e,t,r){return d(hA,e/255,t/255,r/255,1)}),Mk=l(Ok,10,33,108),Fk={$:"Generic"},Vk=Fk,Kk=r(function(e,t){return d(fA,AT,Vk,f(ka,ET(bT),f(ka,yT(bT),e)),wT(M([t])))}),Hk=function(e){return{$:"Fill",a:e}},jk=Hk(1),qk=Hi,Gk=function(e){return{$:"Px",a:e}},zk=Gk,Yk=ZT(8),Wk=function(e){return f(yA,Yk,l(vA,"bg-"+mA(e),"background-color",e))},Jk=f(Kk,M([ET(jk),yT(zk(150)),Wk(Mk)]),qk),Qk=function(e){return{$:"GotoRoute",a:e}},Xk={$:"Active"},Zk={$:"Important"},eN={$:"Normal"},tN=l(pA,1,1,1),rN=ZT(2),nN=i(function(e,t,r,n,a){return{$:"PaddingStyle",a:e,b:t,c:r,d:n,e:a}}),aN=r(function(e,t){return R(e,t)?f(yA,rN,h(nN,"p-"+Ni(e),e,e,e,e)):f(yA,rN,h(nN,"p-"+Ni(e)+"-"+Ni(t),t,e,t,e))}),iN=ZT(21),oN=r(function(e,t){return{$:"Class",a:e,b:t}}),uN=f(oN,iN,RT.cursorPointer),sN=ZT(17),cN=function(e){return f(yA,sN,l(jI,"br-"+Ni(e),"border-radius",Ni(e)+"px"))},fN=function(e){return{$:"Normal",a:e}},lN=An,dN=r(function(e,t){return f(lN,e,fN(t))}),hN=function(e){return f(dN,"click",Fi(e))},pN=f(Da,ST,hN),gN=ZT(13),vN=f(oN,gN,RT.textSemiBold),yN=ZT(4),mN=function(e){return{$:"FontSize",a:e}},bN=function(e){return f(yA,yN,mN(e))},CN=n(function(e,t,r){var n=function(){switch(r.$){case"Normal":return yr;case"Active":return M([cN(4),Wk(l(pA,0,0,1))]);default:return M([cN(4),Wk(l(pA,.9,0,0))])}}();return f(Kk,U(M([f(aN,23,12),bN(22),vN,bA(tN),uN,pN(t)]),n),fl(e))}),EN=l(Ok,244,0,103),SN=function(e){return{$:"AlignX",a:e}},TN={$:"CenterX"},wN=SN(TN),IN=ZT(3),AN=n(function(e,t,r){return{$:"SpacingStyle",a:e,b:t,c:r}}),BN=r(function(e,t){return"spacing-"+Ni(e)+"-"+Ni(t)}),kN=function(e){return f(yA,IN,l(AN,f(BN,e,e),e,e))},NN=function(e){return{$:"Describe",a:e}},RN={$:"Paragraph"},$N=r(function(e,t){return d(fA,HT,Vk,f(ka,NN(RN),f(ka,ET(jk),f(ka,kN(5),e))),wT(t))}),_N=f(oN,gN,RT.bold),LN=f(Kk,M([bN(29),bA(tN),_N,wN,uN,pN(Qk(Gv))]),f($N,yr,M([fl("DAI"),f(Kk,M([bA(EN)]),fl("Hard"))]))),xN={$:"Right"},PN=SN(xN),DN={$:"AsColumn"},UN=DN,ON=r(function(e,t){return d(fA,UN,Vk,f(ka,lA(RT.contentTop+" "+RT.contentLeft),f(ka,yT(bT),f(ka,ET(bT),e))),wT(t))}),MN={$:"AsRow"},FN=MN,VN=r(function(e,t){return d(fA,FN,Vk,f(ka,lA(RT.contentLeft+" "+RT.contentCenterY),f(ka,ET(bT),f(ka,yT(bT),e))),wT(t))}),KN=function(e){return f(VN,M([ET(jk),kN(30),f(aN,30,17)]),M([l(CN,"Browse Offers",Qk(zv),function(){var t=e.submodel;if("MarketplaceModel"===t.$){t.a;return Xk}return eN}()),l(CN,"Create a New Offer",Qk(qv),function(){return"CreateModel"===e.submodel.$?Xk:eN}()),function(){var t=Gd(e.wallet);if("Just"===t.$){var r=t.a;return l(CN,"My Trades",Qk(jv(r.address)),function(){var t=e.submodel;if("AgentHistoryModel"===t.$){return R(t.a.agentAddress,r.address)?Xk:eN}return eN}())}return l(CN,"Connect to Wallet",cT,Zk)}(),f(ON,M([PN,kN(0),f(aN,8,0)]),M([LN]))]))},HN=function(e){return function(t){return R(t.parameters.initiatorAddress,e.agentAddress)||R(t.state.responder,si(e.agentAddress))}},jN=function(e){return ml(e)},qN=r(function(e,t){return f(ml,dv(e),t)}),GN=function(e){return f(ml,function(e){return Hb(e.parameters)},OS(e))},zN={$:"BurnWindow"},YN={$:"FiatPrice"},WN={$:"Margin"},JN={$:"Offer"},QN={$:"PaymentWindow"},XN=function(e){return{$:"AlignY",a:e}},ZN={$:"CenterY"},eR=XN(ZN),tR=ZT(20),rR=f(oN,tR,RT.clip),nR=Hk,aR=function(e){return f(yA,rN,h(nN,"p-"+Ni(e),e,e,e,e))},iR=r(function(e,t){return f(Kk,M([ET(nR(e)),yT(zk(60)),rR,Wk(tN)]),f(Kk,M([aR(12),eR,ET(jk)]),t))}),oR=function(e){switch(e.$){case"Phase":case"Expires":case"Offer":return 1;case"FiatPrice":return 2;case"Margin":return 1;case"PaymentWindow":default:return 2}},uR=function(e){return{$:"JustImage",a:e}},sR=uR({description:"down",src:"/DAIHard/static/img/arrow-down.svg"}),cR=dT("alt"),fR=function(e){return f(dT,"src",rt(e))},lR=r(function(e,t){var r=t.src,n=t.description,a=f(ml,function(e){switch(e.$){case"Width":case"Height":return!0;default:return!1}},e);return d(fA,AT,Vk,f(ka,lA(RT.imageContainer),e),wT(M([d(fA,AT,TT("img"),U(M([ST(fR(r)),ST(cR(n))]),a),wT(yr))])))}),dR=r(function(e,t){if("None"===t.$)return qk;var r=t.a;return f(lR,e,r)}),hR=uR({description:"up",src:"/DAIHard/static/img/arrow-up.svg"}),pR=function(e){return{$:"ChangeSort",a:e}},gR=f(oN,gN,RT.textMedium),vR=function(e){return f(Kk,M([gR,bN(17)]),fl(function(){switch(e.$){case"Phase":return"Phase";case"Expires":return"Expiring";case"Offer":return"Offer";case"FiatPrice":return"For Fiat";case"Margin":return"Margin";case"PaymentWindow":return"Payment Window";default:return"Burn Window"}}()))},yR=r(function(e,t){return f(VN,M([kN(5),uN,pN(pR(e))]),M([vR(e),function(){if("Just"===t.$){var e=t.a;return f(Kk,M([eR]),f(dR,M([ET(zk(8))]),function(){return"Ascending"===e.$?sR:hR}()))}return qk}()]))}),mR=r(function(e,t){return f(iR,oR(t),f(yR,t,e))}),bR=r(function(e,t){return f(VN,M([ET(jk)]),f(xa,function(t){var r=R(e.a,t)?si(e.b):ci;return f(mR,r,t)},t))}),CR=l(Ok,150,150,150),ER=function(e){switch(e.$){case"Open":return 1;case"Committed":return 2;case"Judgment":return 3;default:return 4}},SR=r(function(e,t){return f(ts,e.amount,t.amount)}),TR=n(function(e,t,r){return f(e,r,t)}),wR=function(e){var t=e.a;return(R(e.b,Lo)?Ua:TR)(function(){switch(t.$){case"Phase":return r(function(e,t){return R(e.state.phase,t.state.phase)?l(wR,L(Av,Zf),e,t):f(Ku,ER(e.state.phase),ER(t.state.phase))});case"Expires":return r(function(e,t){return f(hv,e.derived.phaseEndTime,t.derived.phaseEndTime)});case"Offer":return r(function(e,t){return f(Sv,e.parameters.tradeAmount,t.parameters.tradeAmount)});case"FiatPrice":return r(function(e,t){return f(SR,e.terms.price,t.terms.price)});case"Margin":return r(function(e,t){return f(xc,ma,l(zd,r(function(e,t){return f(Ku,e,t)}),e.derived.margin,t.derived.margin))});case"PaymentWindow":return r(function(e,t){return f(hv,e.parameters.autoabortInterval,t.parameters.autoabortInterval)});default:return r(function(e,t){return f(hv,e.parameters.autoreleaseInterval,t.parameters.autoreleaseInterval)})}}())},IR=l(Ok,233,237,242),AR=r(function(e,t){return{$:"TradeClicked",a:e,b:t}}),BR=function(e){return f(Kk,M([ET(jk),yT(jk),rR]),f($N,M([bN(12)]),M([fl(e.info)])))},kR=function(e){return f(xc,qk,f(Bo,BR,Ql(e)))},NR=function(e){if("Token"===e.$){if("EthDai"===e.a.$){e.a;return"Dai"}e.a;return"Dai"}switch(e.a.$){case"Eth":e.a;return"ETH";case"Kovan":e.a;return"ETH";default:e.a;return"xDai"}},RR=function(e){return{$:"TimeLeft",a:e}},$R=function(e){return{$:"TimeUp",a:e}},_R=r(function(e,t){switch(e.$){case"Open":return t.parameters.autorecallInterval;case"Committed":return t.parameters.autoabortInterval;case"Judgment":return t.parameters.autoreleaseInterval;default:return Vl(0)}}),LR=r(function(e,t){return Vl(jd(e)-jd(t))}),xR=r(function(e,t){var r=f(_R,t.state.phase,t),n=f(LR,e,t.state.phaseStartTime),a=f(LR,r,n);return jd(a)>0?RR(L(a,r)):$R(r)}),PR=function(e){switch(e.$){case"Open":return"Open";case"Committed":return"Committed";case"Judgment":return"Judgment";default:return"Closed"}},DR=l(pA,0,0,0),UR=l(Ok,51,183,2),OR=function(e){var t=ju(100*e),r=t-Za(t),n=Ni(Za(t)),a=f(ei,0,3-Qo(n));return n+(function(){if(a){return f(ru,a+1,f(Zo,1,mw(r)))}return""}()+"%")},MR=r(function(e,t){return uR({description:"",src:function(){var r=L(e,t);if(r.a){if("Just"===r.b.$)return r.b.a?"/DAIHard/static/img/margin-up-green.svg":"/DAIHard/static/img/margin-up-red.svg";r.b;return"/DAIHard/static/img/margin-up.svg"}if("Just"===r.b.$)return r.b.a?"/DAIHard/static/img/margin-down-green.svg":"/DAIHard/static/img/margin-down-red.svg";r.b;return"/DAIHard/static/img/margin-down.svg"}()})}),FR=n(function(e,t,r){return f(dR,f(ka,yT(zk(34)),e),f(MR,t,r))}),VR=r(function(e,t){var r=OR(t);if("0%"===r)return f(Kk,M([bN(16)]),fl("0%"));var n=r,a=t>=0,i=!(a!==e),o=i?UR:EN;return f(VN,M([kN(4)]),M([l(FR,yr,a,si(i)),f(Kk,M([bA(o),bN(16)]),fl(n))]))}),KR=uR,HR=function(e){return l(Ra,r(function(e,t){var r=e.a,n=e.b;return l(xl,r,n,t)}),cp,e)}(f(xa,function(e){var t=e.a;return L(t,L(e.b,KR({description:t,src:"/DAIHard/static/img/currencies/"+t+".svg"})))},M([L("AUD","$"),L("CLP","$"),L("EUR","€"),L("IDR","Rp"),L("KRW","₩"),L("NZD","$"),L("RUB","₽"),L("TRY","₺"),L("BRL","R$"),L("CNY","¥"),L("GBP","£"),L("ILS","₪"),L("MXN","$"),L("PHP","₱"),L("SEK","kr"),L("TWD","NT$"),L("CAD","$"),L("CZK","Kč"),L("HKD","$"),L("INR","₹"),L("MYR","RM"),L("PKR","₨"),L("SGD","$"),L("USD","$"),L("CHF","Fr"),L("DKK","kr"),L("HUF","Ft"),L("JPY","¥"),L("NOK","kr"),L("PLN","zł"),L("THB","฿"),L("ZAR","R"),L("VND","₫")]))),jR=function(e){return f(xc,"",f(Bo,Qa,f(fp,e,HR)))},qR=function(e){return Qo(e)<=3?e:qR(f(Td,3,e))+","+f(ou,3,e)},GR=function(e){return qR(Sd(e))},zR=function(e){return U(jR(e.fiatType),GR(e.amount))},YR=hA,WR=function(e){var t=function(){var t=f(fp,e.fiatType,HR);if("Nothing"===t.$)return qk;var r=t.a,n=(r.a,r.b);return f(dR,M([yT(zk(26))]),n)}();return f(VN,M([kN(4)]),M([t,f(Kk,M([bA(d(YR,0,0,0,.5)),gR,ET(zk(50))]),fl(e.fiatType)),fl(zR(e))]))},JR=function(e){return jd(e)<0},QR=a(function(e,t,r,n){return{days:e,hours:t,min:r,sec:n}}),XR=function(e){var t=vg(e);return function(e){var t=e.a,r=e.b;return function(e){var r=e.a,n=e.b;return function(e){var n=e.a,a=e.b;return d(QR,$C(t),$C(r),$C(n),$C(a))}(f(xc,L(qu(0),qu(0)),f(Ts,n,qu(60))))}(f(xc,L(qu(0),qu(0)),f(Ts,r,qu(3600))))}(f(xc,L(qu(0),qu(0)),f(Ts,t,qu(86400))))},ZR=a(function(e,t,n,a){for(;;){var i=n.a,o=n.b;if(!JR(a)){var u=r(function(e,t){return U(l(Rs,2,P("0"),Ni(e)),t)}),s=jd(a)>0?i:o,c=XR(a),d=c.days||c.hours?i:o,h=c.days?i:o;return f(VN,U(M([kN(5)]),e),M([f(Kk,U(M([bA(h)]),t),fl(f(u,c.days,"d"))),f(Kk,U(M([bA(d)]),t),fl(f(u,c.hours,"h"))),f(Kk,U(M([bA(s)]),t),fl(f(u,c.min,"m")))]))}var p=e,g=t,v=L(i,o),y=Vl(0);e=p,t=g,n=v,a=y}}),e$={$:"Behind"},t$=r(function(e,t){return{$:"Nearby",a:e,b:t}}),r$=function(e){return f(t$,e$,e)},n$=r(function(e,t){var r=sv(200*e),n=200-r,a=f(Kk,M([ET(nR(n))]),qk),i=M([yT(zk(3)),cN(20)]),o=f(Kk,U(i,M([ET(nR(r)),Wk(t)])),qk),u=f(Kk,U(i,M([ET(jk),Wk(IR)])),qk);return f(VN,M([ET(jk),r$(u)]),M([o,a]))}),a$=l(pA,1,1,0),i$=r(function(e,t){return jd(e)/jd(t)}),o$=a(function(e,t,r,n){var a=r.a,i=r.b,o=n.a,u=n.b,s=f(i$,o,u),c=(f(Kk,M([wN]),d(ZR,yr,yr,L(a,i),o)),s<.1?EN:s<.2?a$:UR);return f(ON,U(M([kN(5)]),e),M([d(ZR,M([wN]),t,L(a,i),o),f(n$,1-s,c)]))}),u$=function(e){var t=wd(jl(e)),r=f(Xl,".",t);if(!r.b)return t;if(r.b.b){cl("Error interpreting evmValueToString result. More than one decimal??");return"???"}switch(r.a){case 0:return"0"+f(ru,3,t);case 1:return f(ru,4,f(xc,t,f(Bo,mw,f(Bo,function(e){return e/100},f(Bo,Ka,f(Bo,sv,f(Bo,ti(100),Bd(t))))))));default:var n=r.a;return f(xc,f(ru,n,t),f(Bo,Ni,f(Bo,sv,Bd(t))))}},s$=n(function(e,t,r){return f(iR,oR(t),function(){switch(t.$){case"Phase":var n=PR(r.state.phase),a=L(f(xR,e,r),r.state.phase);e:for(;;){if("TimeLeft"===a.a.$){if("Closed"===a.b.$)break e;var i=a.a.a,o=f(i$,i.a,i.b)<.05?EN:DR;return f(ON,M([kN(3)]),M([fl(n),d(o$,M([ET(jk)]),M([bN(16)]),L(o,IR),i)]))}if("Closed"===a.b.$)break e;var u=a.a.a;return f(VN,M([kN(6),bA(CR)]),M([fl(n),f(Kk,M([bN(16)]),fl("(stale)"))]))}a.b;return fl(n);case"Expires":if("Open"===r.state.phase.$){var s=f(xR,e,r);if("TimeLeft"===s.$){var i=s.a,o=f(i$,i.a,i.b)<.05?EN:DR;return d(o$,M([ET(jk)]),M([bN(16)]),L(o,IR),i)}var u=s.a;return d(o$,M([ET(jk)]),M([bN(16)]),L(EN,IR),L(Vl(0),u))}return qk;case"Offer":return f(VN,M([kN(5)]),M([fl(function(){return"Buyer"===r.parameters.initiatorRole.$?"Buying ":"Selling "}()+(u$(r.parameters.tradeAmount)+" ")+NR(r.factory))]));case"FiatPrice":return WR(r.terms.price);case"Margin":var c=R(r.parameters.initiatorRole,fo);return f(xc,qk,f(Bo,VR(c),r.derived.margin));case"PaymentWindow":var l=function(){return"Seller"===r.parameters.initiatorRole.$?EN:UR}(),h=_(jd(r.parameters.autoabortInterval),216e5)<0?l:DR;return d(ZR,yr,yr,L(h,IR),r.parameters.autoabortInterval);default:var l=function(){return"Seller"===r.parameters.initiatorRole.$?UR:EN}(),h=_(jd(r.parameters.autoabortInterval),216e5)<0?l:DR;return d(ZR,yr,yr,L(h,IR),r.parameters.autoreleaseInterval)}}())}),c$=n(function(e,t,r){return f(ON,M([ET(jk),kN(1),Wk(IR),uN,pN(f(AR,r.factory,r.id))]),M([f(VN,M([ET(jk),kN(1)]),f(xa,function(t){return l(s$,e,t,r)},t)),f(iR,1,kR(r.terms.paymentMethods))]))}),f$=Er,l$=ZT(28),d$=function(e){return f(yA,l$,l(vA,"bc-"+mA(e),"border-color",e))},h$=i(function(e,t,r,n,a){return{$:"BorderWidth",a:e,b:t,c:r,d:n,e:a}}),p$=function(e){return f(yA,iA,h(h$,"b-"+Ni(e),e,e,e,e))},g$=a(function(e,t,r,n){return f(ON,M([ET(jk),p$(2),cN(8),d$(CR),kN(2),Wk(CR),rR]),f(xa,f(c$,e,r),f(f$,wR(t.orderBy),n)))}),v$=a(function(e,t,r,n){return f(ON,M([ET(jk),yT(jk),kN(5)]),M([f(bR,t.orderBy,r),d(g$,e,t,r,n)]))}),y$=a(function(e,t,r,n){return"pad-"+Ni(e)+"-"+Ni(t)+"-"+Ni(r)+"-"+Ni(n)}),m$=function(e){var t=e.top,r=e.right,n=e.bottom,a=e.left;return R(t,r)&&R(t,n)&&R(t,a)?f(yA,rN,h(nN,"p-"+Ni(t),t,t,t,t)):f(yA,rN,h(nN,d(y$,t,r,n,a),t,r,n,a))},b$=lA(RT.italic),C$=a(function(e,t,r,n){var a=f(qN,n.filters,ay(f(xa,function(e){return f(jN,HN(n),GN(e))},r)));return R(a,yr)?f(Kk,M([wN,bN(24),m$({bottom:0,left:0,right:0,top:30}),b$]),fl(t?"No trades found with those filters.":"Initializing Trade Cache...")):f(Yi,Ko,d(v$,e,n.tradeTable,M([xo,JN,YN,WN,QN,zN]),a))}),E$=r(function(e,t){return f(Kk,M([cN(4),Wk(d(YR,0,0,1,.1)),bA(l(Ok,16,7,234)),bN(e),vN,f(aN,15,13)]),fl(dl(t)))}),S$=function(e){return function(){var t=Gd(e.wallet);return"Nothing"!==t.$&&R(t.a.address,e.agentAddress)}()?qk:f(VN,M([kN(10),m$({bottom:20,left:20,right:20,top:10})]),M([f(Kk,M([bN(24),vN]),fl("Trade History for User")),f(E$,18,e.agentAddress)]))},T$=function(e){return{$:"FiltersMsg",a:e}},w$=function(e){switch(e.$){case"Phase":return"Phases";case"Role":return"Role";default:return"Offer Type"}},I$=n(function(e,t,r){return{$:"SetOption",a:e,b:t,c:r}}),A$=xI,B$={$:"Left"},k$=SN(B$),N$=n(function(e,t,r){if("HiddenLabel"===t.$){t.a;return d(fA,UN,TT("label"),e,wT(M([r])))}var n=t.a,a=t.b,i=t.c,o=d(fA,AT,Vk,a,wT(M([i])));switch(n.$){case"Above":return d(fA,UN,TT("label"),e,wT(M([o,r])));case"Below":return d(fA,UN,TT("label"),e,wT(M([r,o])));case"OnRight":return d(fA,FN,TT("label"),e,wT(M([r,o])));default:return d(fA,FN,TT("label"),e,wT(M([o,r])))}}),R$=function(e){return{$:"Label",a:e}},$$={$:"NoAttribute"},_$=function(e){if("HiddenLabel"===e.$){var t=e.a;return NN(R$(t))}return $$},L$=function(e){return"HiddenLabel"===e.$},x$=function(e){var t=function(t){var r=e(t);if("Nothing"===r.$)return hu("No key matched");var n=r.a;return Fi(n)},r=f(du,t,f(Oh,"key",pu));return ST(f(dN,"keyup",r))},P$=function(e){return f(Nn,"tabIndex",Ni(e))},D$=f(Da,ST,P$),U$={$:"LivePolite"},O$=NN(U$),M$=r(function(e,t){var r=t.label,n=t.icon,a=t.checked,i=t.onChange,o=U(M([L$(r)?$$:kN(6),ST(hN(i(!a))),O$,x$(function(e){return R(e,"Enter")?si(i(!a)):R(e," ")?si(i(!a)):ci}),D$(0),uN,k$,ET(jk)]),e);return l(N$,o,r,d(fA,AT,Vk,M([ST(f(A$,"role","checkbox")),ST(f(A$,"aria-checked",a?"true":"false")),_$(r),eR,yT(jk),ET(bT)]),wT(M([n(a)]))))}),F$=Br,V$=function(e){return e*F$/180},K$=ZT(26),H$=function(e){return{$:"MoveY",a:e}},j$=r(function(e,t){return{$:"TransformComponent",a:e,b:t}}),q$=function(e){return f(j$,K$,H$(-e))},G$=ZT(24),z$=r(function(e,t){return{$:"Rotate",a:e,b:t}}),Y$=function(e){return f(j$,G$,f(z$,x(0,0,1),e))},W$=ZT(19),J$=function(e){return Cd(M([e.inset?"box-inset":"box-",mw(e.offset.a)+"px",mw(e.offset.b)+"px",mw(e.blur)+"px",mw(e.size)+"px",mA(e.color)]))},Q$=function(e){var t={blur:e.blur,color:e.color,inset:!1,offset:e.offset,size:e.size};return f(yA,W$,l(jI,J$(t),"box-shadow",Cw(t)))},X$=r(function(e,t){return f(yA,iA,h(h$,"b-"+Ni(e)+"-"+Ni(t),t,e,t,e))}),Z$=function(e){var t=e.bottom,r=e.top,n=e.left,a=e.right;return R(r,t)&&R(n,a)?R(r,a)?p$(r):f(X$,n,r):f(yA,iA,h(h$,"b-"+Ni(r)+"-"+Ni(a)+"-"+Ni(t)+"-"+Ni(n),r,a,t,n))},e_=ZT(12),t_=f(oN,e_,RT.textCenter),r_=l(pA,1,1,1),n_=function(e){return f(Kk,M([lA("focusable"),ET(zk(14)),yT(zk(14)),bA(r_),eR,bN(9),t_,cN(3),d$(e?l(pA,59/255,.6,252/255):l(pA,211/255,211/255,211/255)),Q$({blur:1,color:e?d(YR,238/255,238/255,238/255,0):l(pA,238/255,238/255,238/255),offset:L(0,0),size:1}),Wk(e?l(pA,59/255,.6,252/255):r_),p$(e?0:1)]),e?f(Kk,M([d$(r_),yT(zk(6)),ET(zk(9)),Y$(V$(-45)),wN,eR,q$(1),Z$({bottom:2,left:2,right:0,top:0})]),qk):qk)},a_=n(function(e,t,r){return{$:"Label",a:e,b:t,c:r}}),i_={$:"OnRight"},o_=a_(i_),u_=r(function(e,t){return f(M$,yr,{checked:t.checked,icon:n_,label:f(o_,yr,fl(t.label)),onChange:f(I$,e,t.label)})}),s_={$:"Top"},c_=XN(s_),f_=function(e){return f(ON,M([kN(15),c_]),M([f(Kk,M([bN(28),gR]),fl(w$(e.type_))),f(ON,M([kN(5)]),f(xa,u_(e.type_),e.options))]))},l_=function(e){return f(VN,M([kN(20)]),f(xa,f_,e))},d_={$:"NoneFound"},h_={$:"AllFetched"},p_={$:"FetchingTrades"},g_={$:"QueryingNumTrades"},v_=function(e){var t=e.dataFetchState.total;if("Nothing"===t.$)return g_;if(t.a){var r=t.a;return _(e.dataFetchState.loaded,r-e.dataFetchState.invalid)<0?p_:h_}return d_},y_={$:"InFront"},m_=function(e){return f(t$,y_,e)},b_=r(function(e,t){var r=function(e){return f(Kk,M([bN(20),vN,bA(CR),wN]),fl(e))},n=f(Eh,Ja(d_),f(xa,v_,e))?M([r("No trades found.")]):f(xa,r,mE(f(xa,function(e){switch(v_(e).$){case"QueryingNumTrades":return si("Querying "+hB(e.factory)+" Factory...");case"NoneFound":return ci;case"FetchingTrades":return si("Fetching "+hB(e.factory)+" Trades...");default:return ci}},e)));return f(Kk,M([ET(jk),m_(f(ON,M([kN(5),k$]),n))]),f(Kk,M([wN]),f(Yi,T$,l_(t.filters))))}),C_=n(function(e,t,r){return f(ON,M([cN(5),Wk(tN),ET(jk),yT(jk),f(aN,30,20)]),M([S$(r),f(b_,t,r),function(){var n=f(Eh,f(zo,v_,Ja(h_)),t);return d(C$,e,n,t,r)}()]))}),E_=function(e){return{$:"ShowCurrencyDropdown",a:e}},S_={$:"AbortCreate"},T_=function(e){return{$:"AppCmd",a:e}},w_=n(function(e,t,r){return{$:"ConfirmCreate",a:e,b:t,c:r}}),I_=function(e){return f(xa,function(e){return M([f(Kk,M([bA(EN)]),fl("Caution! ")),fl(e)])},mE(M([R(f(hv,e.autoreleaseInterval,Vl(12e5)),ba)?si(function(){return"Buyer"===e.initiatorRole.$?"That Burn/Release Window time is quite small! It might take a while to find a committed Seller.":"That Burn/Release Window time is quite small! This may attract scammers. Only create this trade if you know what you're doing."}()):ci,R(f(hv,e.autoabortInterval,Vl(36e5)),ba)?si(function(){return"Buyer"===e.initiatorRole.$?'That Payment Window time is quite small! If you fail to to 1. make the payment and 2. click "confirm" before this time is up, the trade will automatically abort, incurring the abort punishments on both parties.':'That Payment Window time is quite small! If the Buyer fails to to 1. make the payment and 2. click "confirm" before this time is up, the trade will automatically abort, incurring the abort punishments on both parties.'}()):ci])))},A_=l(pA,0,0,1),B_=function(e){return f(Kk,M([m$({bottom:5,left:5,right:5,top:0}),pN(e),cN(30),Wk(d(YR,1,1,1,.4)),p$(1),d$(d(YR,0,0,0,.3)),uN,bN(14)]),f(Kk,M([bA(d(YR,0,0,0,.7))]),fl("x")))},k_=Bn,N_=k_,R_=ST,$_=r(function(e,t){return f(Kk,M([r$(f(Kk,M([Wk(e),R_(f(N_,"position","fixed")),R_(f(N_,"z-index","1000")),R_(f(N_,"top","0")),R_(f(N_,"left","0")),R_(f(N_,"width","100%")),R_(f(N_,"height","100%"))]),qk)),ET(jk),yT(jk)]),t)}),__=r(function(e,t){return{$:"Max",a:e,b:t}}),L_=r(function(e,t){return f(__,e,t)}),x_=n(function(e,t,r){return l(Pa,$_,d(YR,0,0,.3,.6),f(Kk,U(M([wN,eR,ET(f(L_,500,bT)),Wk(tN),cN(8),m_(f(Kk,M([PN,c_]),B_(r)))]),e),t))}),P_=r(function(e,t){if("Nothing"===t.$)return qk;var r=t.a;return f(Kk,U(M([cN(5),d$(l(pA,.9,0,0)),p$(1),Wk(l(pA,1,.4,.4)),aR(5),wN,eR,ET(f(L_,200,bT)),bN(14)]),e),f($N,yr,M([fl(r)])))}),D_={$:"Above"},U_=function(e){return f(t$,D_,e)},O_=r(function(e,t){return f(Kk,M([cN(4),f(aN,25,17),bN(18),vN,Wk(IR),U_(f(P_,M([q$(5)]),t))]),fl(e))}),M_=a(function(e,t,r,n){return d(hA,e/255,t/255,r/255,n)}),F_=d(M_,1,31,52,.64),V_=ZT(32),K_={$:"Active"},H_=r(function(e,t){return{$:"PseudoSelector",a:e,b:t}}),j_=$n,q_=r(function(e,t){switch(t.$){case"NoAttribute":return $$;case"Describe":var r=t.a;return NN(r);case"AlignX":var n=t.a;return SN(n);case"AlignY":var a=t.a;return XN(a);case"Width":var n=t.a;return CT(n);case"Height":var n=t.a;return vT(n);case"Class":var n=t.a,a=t.b;return f(oN,n,a);case"StyleClass":var i=t.a,o=t.b;return f(yA,i,o);case"Nearby":var u=t.a,s=t.b;return f(t$,u,f(zi,e,s));case"Attr":var c=t.a;return ST(f(j_,e,c));default:var l=t.a,d=t.b;return f(j$,l,d)}}),G_=function(e){return f(q_,zg,e)},z_=r(function(e,t){var r=t.a,n=t.b,a=G_(e);switch(a.$){case"StyleClass":var i=a.b;return L(f(ka,i,r),n);case"TransformComponent":var o=(a.a,a.b);return L(r,f(rA,n,o));default:return L(r,n)}}),Y_=function(e){var t=l(Ra,z_,L(yr,sA),e),r=t.a,n=t.b;return f(ka,qI(n),r)},W_=function(e){return f(yA,V_,f(H_,K_,Y_(e)))},J_=ZT(33),Q_={$:"Hover"},X_=function(e){return f(yA,J_,f(H_,Q_,Y_(e)))},Z_=a(function(e,t,r,n){var a=e.a,i=e.b,o=e.c;return f(Kk,M([cN(4),uN,pN(n),f(aN,25,17),bA(t),bN(18),vN,Wk(a),W_(M([Wk(o)])),X_(M([Wk(i)]))]),fl(r))}),eL=r(function(e,t){return d(Z_,x(d(YR,1,0,0,1),d(YR,1,0,0,.8),d(YR,1,0,0,.6)),tN,e,t)}),tL=function(e){return $_(d(YR,0,0,.3,.6))(f(ON,M([kN(10),wN,eR,Wk(d(YR,0,0,0,.5)),cN(8),aR(20)]),f(xa,function(e){return f($N,M([wN,eR,bN(20),vN,bA(tN),t_]),M([e]))},e)))},rL=r(function(e,t){if("Token"===e.$){if("EthDai"===e.a.$){e.a;return"https://etherscan.io/tx/"+NA(t)}e.a;return"https://kovan.etherscan.io/tx/"+NA(t)}switch(e.a.$){case"Eth":e.a;return"https://etherscan.io/tx/"+NA(t);case"Kovan":e.a;return"https://kovan.etherscan.io/tx/"+NA(t);default:e.a;return"https://blockscout.com/poa/dai/tx/"+NA(t)}}),nL={$:"Bottom"},aL=XN(nL),iL=lA(RT.underline),oL=r(function(e,t){switch(e.$){case"Confirm":var r=e.a,n=e.b,a=function(){var e=t.depositAmount;if("Just"===e.$){var a=e.a;return L(fl(u$(oC(a))),f(eL,"Yes, I definitely want to open this trade.",l(w_,r,n,a)))}return L(fl("??"),f(O_,"(loading exact fees...)",ci))}(),i=a.a,o=a.b;return l(x_,yr,f(ON,M([kN(20),aR(20),wN,yT(jk),t_]),M([f(Kk,M([bN(26),vN,wN,eR]),fl("Just to Confirm...")),f(ON,M([kN(20),wN,eR]),f(xa,$N(M([wN,bN(18),gR,bA(F_)])),U(I_(n),U(M([M([fl("You will deposit "),i,fl(" "+NR(r)+" (including the 1% dev fee) to open this trade.")])]),function(){return"Token"===r.$?M([M([fl("This ususally requires two Metamask signatures. Your "+NR(r)+" will not be deposited until the final transaction has been mined.")])]):yr}())))),f(Kk,M([aL,wN]),o)])),S_);case"ApproveNeedsSig":var u=e.a;return f(Kk,M([pN(T_(d(Zd,"txChainModal clicked","misclick","ApproveNeedsSig",0)))]),tL(M([fl("Waiting for user signature for the approve call."),fl("(check Metamask!)"),fl("Note that there will be a second transaction to sign after this.")])));case"ApproveMining":var u=e.a,n=e.b,s=e.c;return f(Kk,M([pN(T_(d(Zd,"txChainModal clicked","misclick","ApproveMining",0)))]),tL(M([fl("Mining the initial approve transaction..."),f(dA,M([iL,bA(A_)]),{label:fl("See the transaction on Etherscan"),url:f(rL,eo(u),s)}),fl("Funds will not leave your wallet until you sign the next transaction.")])));case"CreateNeedsSig":return f(Kk,M([pN(T_(d(Zd,"txChainModal clicked","misclick","CreateNeedsSig",0)))]),tL(M([fl("Waiting for user signature for the create call."),fl("(check Metamask!)")])));default:var r=e.a,s=e.b;return f(Kk,M([pN(T_(d(Zd,"txChainModal clicked","misclick","CreateMining",0)))]),tL(M([fl("Mining the final create call..."),f(dA,M([iL,bA(A_)]),{label:fl("See the transaction on Etherscan"),url:f(rL,r,s)}),fl("You will be redirected when it's mined.")])))}}),uL=function(e){var t=e.txChainStatus;if("Nothing"===t.$)return qk;var r=t.a;return f(oL,r,e)},sL=function(e){return{$:"TradeAmountChanged",a:e}},cL=dT("id"),fL=R_(cL("inputError")),lL=l(Ok,109,127,138),dL=uR({description:"DAI",src:"/DAIHard/static/img/dai-symbol.png"}),hL=function(e){return f(dR,f(ka,yT(zk(26)),e),dL)},pL=function(e){return f(VN,M([kN(4)]),M([hL(yr),f(Kk,M([bN(24),gR,bA(lL)]),fl(NR(e)))]))},gL=function(e){return{$:"HiddenLabel",a:e}},vL=gL,yL=dT("type"),mL=function(e){return L(e,!0)},bL=function(e){return{$:"MayStopPropagation",a:e}},CL=r(function(e,t){return f(lN,e,bL(t))}),EL=r(function(e,t){return l(La,Oh,t,e)}),SL=f(EL,M(["target","value"]),pu),TL=function(e){return f(CL,"input",f(Oi,mL,f(Oi,e,SL)))},wL=ZT(0),IL=r(function(e,t){return{$:"Transparency",a:e,b:t}}),AL=function(e){var t=function(e){return 1-e}(f(Tc,1,f(ei,0,e)));return f(yA,wL,f(IL,"transparency-"+dw(t),t))},BL=a(function(e,t,r,n){return{$:"Padding",a:e,b:t,c:r,d:n}}),kL=f(Da,ST,A$("autocomplete")),NL=l(pA,136/255,138/255,133/255),RL=l(pA,186/255,189/255,182/255),$L=f(aN,12,12),_L=M([$L,cN(3),d$(RL),Wk(r_),p$(1),kN(3),ET(jk)]),LL=function(e){if("StyleClass"===e.$&&"PseudoSelector"===e.b.$&&"Focus"===e.b.a.$){var t=e.b;t.a;return!0}return!1},xL=function(e){return f(Ch,LL,e)?$$:lA("focusable")},PL=function(e){e:for(;;){if("StyleClass"!==e.$)break e;switch(e.b.$){case"PaddingStyle":e.b;return!0;case"BorderWidth":e.b;return!0;case"Transform":return!0;default:break e}}return!1},DL=ye,UL=r(function(e,t){return f(kn,e,DL(t))}),OL=UL("spellcheck"),ML=f(Da,ST,OL),FL=W,VL=ZT(47),KL=a(function(e,t,r,n){var a=function(e){return e.a+e.c},i=function(e){return e<1?1:e}(Ti(FL(e))),o=(i-1)*t+f(xc,0,f(Bo,a,r))+f(xc,0,f(Bo,a,n));return f(yA,VL,l(jI,"textarea-height-"+Ni(i),"height",function(e){return"calc("+Ni(e)+"em + "+Ni(o)+"px) !important"}(i)))}),HL=dT("value"),jL=f(Da,ST,HL),qL=function(e){return l(La,r(function(e,t){var r=t.a,n=t.b;switch(e.$){case"NoAttribute":return L(r,n);case"Class":e.a;return L(f(ka,e,r),n);case"Attr":e.a;return L(f(ka,e,r),n);case"StyleClass":e.b;return L(f(ka,e,r),n);case"Width":e.a;return f(fw,"width",n)?L(r,n):L(f(ka,e,r),f(Gm,"width",n));case"Height":e.a;return f(fw,"height",n)?L(r,n):L(f(ka,e,r),f(Gm,"height",n));case"Describe":e.a;return f(fw,"described",n)?L(r,n):L(f(ka,e,r),f(Gm,"described",n));case"Nearby":e.a,e.b;return L(f(ka,e,r),n);case"AlignX":return f(fw,"align-x",n)?L(r,n):L(f(ka,e,r),f(Gm,"align-x",n));case"AlignY":return f(fw,"align-y",n)?L(r,n):L(f(ka,e,r),f(Gm,"align-y",n));default:return f(fw,"transform",n)?L(r,n):L(f(ka,e,r),f(Gm,"transform",n))}}),L(yr,sm),e).a},GL=r(function(e,t){return l(La,r(function(e,r){return t(e)?f(ka,e,r):r}),yr,qL(e))}),zL=function(e){e:for(;;)switch(e.$){case"Content":return!0;case"Max":case"Min":var t=e.b,r=t;e=r;continue e;default:return!1}},YL=f(Da,Gi,ms),WL=n(function(e,t,n){var a=function(e){return"Nearby"===e.$},i=M([ST(TL(n.onChange))]),o=U(_L,t),u=f(GL,o,function(e){e:for(;;)switch(e.$){case"Width":case"Height":if("Fill"===e.a.$)return!0;break e;case"AlignX":case"AlignY":return!0;case"StyleClass":switch(e.b.$){case"SpacingStyle":e.b;return!0;case"FontSize":return!0;case"FontFamily":e.b;return!0;default:break e}default:break e}return!1}),s=f(ml,PL,o),c=f(GL,o,function(e){return"Height"===e.$&&"Fill"===e.a.$}),h=(f(GL,o,function(e){if("StyleClass"===e.$&&"PaddingStyle"===e.b.$){e.b;return!0}return!1}),f(GL,o,function(e){return"Nearby"===e.$})),p=f(ml,f(Da,ns,a),o),g=function(){var t=e.type_;if("TextInputNode"===t.$){var a=t.a;return x("input",U(M([jL(n.text),ST(yL(a)),ML(e.spellchecked),lA(RT.inputText),function(){var t=e.autofill;if("Nothing"===t.$)return $$;var r=t.a;return kL(r)}()]),p),yr)}var i=l(La,r(function(e,t){e:for(;;)switch(e.$){case"Describe":return t;case"Height":var r=e.a,n=t.heightContent;return"Nothing"===n.$?D(t,{adjustedAttributes:f(ka,e,t.adjustedAttributes),heightContent:si(zL(r))}):t;case"StyleClass":switch(e.b.$){case"BorderWidth":var a=e.b,i=a.b,o=a.c,u=a.d,s=a.e,c=t.maybeBorder;return"Nothing"===c.$?D(t,{adjustedAttributes:f(ka,e,t.adjustedAttributes),maybeBorder:si(d(BL,i,o,u,s))}):t;case"PaddingStyle":var l=e.b,i=l.b,o=l.c,u=l.d,s=l.e,h=t.maybePadding;return"Nothing"===h.$?D(t,{adjustedAttributes:t.adjustedAttributes,maybePadding:si(d(BL,i,o,u,s))}):t;case"SpacingStyle":var p=e.b,g=(p.b,p.c),v=t.maybeSpacing;return"Nothing"===v.$?D(t,{adjustedAttributes:f(ka,e,t.adjustedAttributes),maybeSpacing:si(g)}):t;default:break e}default:break e}return D(t,{adjustedAttributes:f(ka,e,t.adjustedAttributes)})}),{adjustedAttributes:yr,heightContent:ci,maybeBorder:ci,maybePadding:ci,maybeSpacing:ci},o),u=i.maybePadding,s=i.heightContent,c=i.maybeSpacing,h=i.adjustedAttributes,g=i.maybeBorder,v=f(xc,5,c);return x("textarea",U(M([ML(e.spellchecked),lA(RT.inputMultiline),f(xc,$$,f(Bo,kL,e.autofill)),function(){if("Nothing"===u.$)return $$;var e=u.a,t=e.a,r=e.b,n=e.c,a=e.d;return m$({bottom:f(ei,0,n-(v/2|0)),left:a,right:r,top:f(ei,0,t-(v/2|0))})}(),function(){return"Nothing"===s.$?$$:s.a?d(KL,n.text,v,u,g):$$}()]),h),M([YL(RI(n.text))]))}(),v=g.a,y=g.b,m=g.c,b=d(fA,AT,Vk,f(ka,ET(jk),ay(M([h,c,function(){var e=n.placeholder;if("Nothing"===e.$)return yr;var t=e.a,r=t.a,a=t.b;return M([m_(f(Kk,f(ka,$L,U(s,U(M([bA(NL),lA(RT.noTextSelection+" "+RT.passPointerEvents),d$(d(YR,0,0,0,0)),Wk(d(YR,0,0,0,0)),yT(jk),ET(jk),AL(""===n.text?1:0)]),r))),a))])}()]))),wT(M([d(fA,AT,TT(v),ay(M([M([xL(t),_$(n.label)]),y,i])),wT(m))])));return l(N$,f(ka,f(oN,iN,RT.cursorText),f(ka,L$(n.label)?$$:kN(5),f(ka,O$,u))),n.label,b)}),JL=WL({autofill:ci,spellchecked:!1,type_:function(e){return{$:"TextInputNode",a:e}}("text")}),QL=o(function(e,t,r,n,a,i){var o=t.a,u=t.b,s=f(JL,M([ET(jk),yT(zk(40)),p$(0)]),{label:vL(r),onChange:i,placeholder:n,text:a});return f(VN,U(M([kN(5)]),e),mE(M([f(Bo,Kk(M([k$])),o),si(s),f(Bo,Kk(M([PN])),u)])))}),XL={$:"Below"},ZL=function(e){return f(t$,XL,e)},ex=function(e){return f(j$,K$,H$(e))},tx=n(function(e,t,r){return p(QL,M([ET(zk(150)),gR,bN(24),ZL(f(P_,M([fL,ex(5)]),r))]),L(ci,si(f(Kk,M([pN(T_(d(Zd,"click","misclick","dai symbol in dai input",0)))]),pL(e)))),"dai input",ci,t,sL)}),rx=Kk(M([d$(IR),Z$({bottom:2,left:0,right:0,top:0})])),nx=r(function(e,t){return f(ON,M([kN(10)]),M([f(Kk,M([bN(17),vN]),fl(e)),t]))}),ax=r(function(e,t){return rx(f(nx,function(){return"Buyer"===t.inputs.userRole.$?"You're buying":"You're selling"}(),l(tx,e,t.inputs.daiAmount,t.errors.daiAmount)))}),ix=function(e){return f(xc,gS,Mg(e))},ox=function(e){var t=function(){var t=vd(e.inputs.daiAmount);if("Just"===t.$){var r=t.a;return"There is a 1% fee of "+u$(f(Gl,r,100))+" "+NR(ix(e.wallet))+"."}return"There is a 1% fee."}();return f(VN,M([wN,f(aN,20,10),Wk(l(Ok,10,33,108)),cN(8),kN(5),pN(T_(d(Zd,"click","misclick","fee notify element",0)))]),M([f(Kk,M([bN(18),bA(l(Ok,0,226,255)),vN]),fl(t)),f(Kk,M([bN(17),bA(tN),gR]),fl("We only collect this fee when trades resolve successfully."))]))},ux=function(e){return{$:"FiatAmountChanged",a:e}},sx=function(e){return{$:"FiatTypeChanged",a:e}},cx=r(function(e,t){return l(SS,n(function(t,r,n){return f(e,t,r)?l(xl,t,r,n):n}),cp,t)}),fx=function(e){return f(cx,r(function(t,r){return f(Qg,e,t)}),HR)},lx=uR({description:"",src:"/DAIHard/static/img/qmark-circle.svg"}),dx=function(e){return f(dR,M([yT(zk(26))]),f(xc,lx,f(Bo,fu,f(fp,e,HR))))},hx=function(e){return R_(f(CL,"click",Fi(L(e,!0))))},px=YL,gx=function(e){return{$:"AppendProperty",a:e}},vx=r(function(e,t){return gx(e+":"+t)}),yx=r(function(e,t){return f(vx,e,t.value)}),mx=yx("cursor"),bx={$:"Compatible"},Cx={cursor:bx,value:"default"},Ex=r(function(e,t){return{$:"ExtendSelector",a:e,b:t}}),Sx=function(e){return{$:"PseudoClassSelector",a:e}},Tx=function(e){return Ex(Sx(e))}("hover"),wx=n(function(e,t,r){return{$:"Node",a:e,b:t,c:r}}),Ix=wx,Ax=Ix,Bx=Ax("span"),kx=r(function(e,t){return f(kn,et(e),rt(t))}),Nx=n(function(e,t,r){return{$:"Attribute",a:e,b:t,c:r}}),Rx=a(function(e,t,r,n){return{charsProcessed:n,hash:r,seed:t,shift:e}}),$x=r(function(e,t){return(65535&t)*e+(((t>>>16)*e&65535)<<16)}),_x=r(function(e,t){return t<>>32-e}),Lx=function(e){var t=e.hash?e.seed^f($x,461845907,f(_x,15,f($x,3432918353,e.hash))):e.seed,r=t^e.charsProcessed,n=f($x,2246822507,r^r>>>16),a=f($x,3266489909,n^n>>>13);return(a^a>>>16)>>>0},xx=r(function(e,t){return f($x,5,f(_x,13,e^f($x,461845907,f(_x,15,f($x,3432918353,t)))))+3864292196}),Px=r(function(e,t){var r=t.hash|(255&yi(e))<";default:return""}},HP=function(e){switch(e.$){case"ClassSelector":var t=e.a;return"."+t;case"IdSelector":var t=e.a;return"#"+t;case"PseudoClassSelector":var t=e.a;return":"+t;default:var t=e.a;return"["+t+"]"}},jP=function(e){switch(e.$){case"TypeSelectorSequence":var t=e.a.a,r=e.b;return f(Ri,"",f(ka,t,f(xa,HP,r)));case"UniversalSelectorSequence":var r=e.a;return Iu(r)?"*":f(Ri,"",f(xa,HP,r));default:var t=e.a,r=e.b;return f(Ri,"",f(ka,t,f(xa,HP,r)))}},qP=function(e){var t=e.a,r=e.b;return f(Ri," ",M([KP(t),jP(r)]))},GP=function(e){var t=e.a,r=e.b,n=e.c,a=f(ka,jP(t),f(xa,qP,r)),i=f(Ri,"",M([f(xc,"",f(Bo,VP,n))]));return f(oc,f(Ri," ",f(ml,f(Da,ns,_d),a)),i)},zP=r(function(e,t){var r=t.a,n=t.b,a=t.c,i=f(Ri,", ",f(xa,GP,f(ka,r,n)));return f(Ri,"",M([i," {\n",e,FP(a),"\n",e,"}"]))}),YP=function(e){switch(e.$){case"StyleBlockDeclaration":var t=e.a;return f(zP,"",t);case"MediaRule":var r=e.a,n=e.b;return"@media "+f(Ri,",\n",f(xa,xP,r))+" {\n"+f(Ri,"\n\n",f(xa,f(Da,OP,zP(" ")),n))+"\n}";case"SupportsRule":case"DocumentRule":case"PageRule":case"FontFace":return"TODO";case"Keyframes":return"@keyframes "+e.a.name+" {\n"+e.a.declaration+"\n}";case"Viewport":case"CounterStyle":default:return"TODO"}},WP=function(e){var t=e.charset,r=e.imports,n=e.namespaces,a=e.declarations;return f(Ri,"\n\n",f(ml,f(Da,ns,_d),M([$P(t),f(Ri,"\n",f(xa,DP,r)),f(Ri,"\n",f(xa,UP,n)),f(Ri,"\n\n",f(xa,YP,a))])))},JP=function(e){return WP(RP(BP(e)))},QP=function(e){return f(Ri,"\n\n",f(xa,JP,e))},XP=function(e){return{$:"Snippet",a:e}},ZP=n(function(e,t,r){return{$:"StyleBlock",a:e,b:t,c:r}}),eD=function(e){return{$:"StyleBlockDeclaration",a:e}},tD=r(function(e,t){var r=l(eP,t,yr,ci);return XP(M([eD(l(ZP,r,yr,e))]))}),rD=function(e){return Iu(e)?"unstyled":f(Is,P("_"),Ps(f(Dx,15739,QP(AS(Ux(AS(f(tD,e,dP(yr)))))))))},nD=function(e){var t=rD(e),r=f(kx,"className",hl(t));return l(Nx,r,e,t)},aD=a(function(e,t,r,n){return f(e,f(ka,nD(t),r),n)}),iD=function(e){return{$:"Unstyled",a:e}},oD=function(e){return iD(Tw(e))},uD=oD,sD=r(function(e,t){return f(Tn,e,Xe(t))}),cD=function(e){return En(Xe(e))},fD=r(function(e,t){var r=e.b,n=e.c;return Iu(r)?t:l(xl,n,r,t)}),lD=function(e){return e.a},dD=r(function(e,t){var r=e.a,n=e.b,a=t.a,i=t.b;switch(n.$){case"Unstyled":var o=n.a;return L(f(ka,L(r,o),a),i);case"Node":var u=n.a,s=n.b,c=n.c,h=l(Ra,fD,i,s),p=l(Ra,hD,L(yr,h),c),g=p.a,v=p.b,o=l(JT,u,f(xa,lD,s),$a(g));return L(f(ka,L(r,o),a),v);case"NodeNS":var y=n.a,u=n.b,s=n.c,c=n.d,h=l(Ra,fD,i,s),m=l(Ra,hD,L(yr,h),c),g=m.a,v=m.b,o=d(cD,y,u,f(xa,lD,s),$a(g));return L(f(ka,L(r,o),a),v);case"KeyedNode":var u=n.a,s=n.b,c=n.c,h=l(Ra,fD,i,s),b=l(Ra,dD,L(yr,h),c),g=b.a,v=b.b,o=l(WT,u,f(xa,lD,s),$a(g));return L(f(ka,L(r,o),a),v);default:var y=n.a,u=n.b,s=n.c,c=n.d,h=l(Ra,fD,i,s),C=l(Ra,dD,L(yr,h),c),g=C.a,v=C.b,o=d(sD,y,u,f(xa,lD,s),$a(g));return L(f(ka,L(r,o),a),v)}}),hD=r(function(e,t){var r=t.a,n=t.b;switch(e.$){case"Unstyled":var a=e.a;return L(f(ka,a,r),n);case"Node":var i=e.a,o=e.b,u=e.c,s=l(Ra,fD,n,o),c=l(Ra,hD,L(yr,s),u),h=c.a,p=c.b,a=l(JT,i,f(xa,lD,o),$a(h));return L(f(ka,a,r),p);case"NodeNS":var g=e.a,i=e.b,o=e.c,u=e.d,s=l(Ra,fD,n,o),v=l(Ra,hD,L(yr,s),u),h=v.a,p=v.b,a=d(cD,g,i,f(xa,lD,o),$a(h));return L(f(ka,a,r),p);case"KeyedNode":var i=e.a,o=e.b,u=e.c,s=l(Ra,fD,n,o),y=l(Ra,dD,L(yr,s),u),h=y.a,p=y.b,a=l(WT,i,f(xa,lD,o),$a(h));return L(f(ka,a,r),p);default:var g=e.a,i=e.b,o=e.c,u=e.d,s=l(Ra,fD,n,o),m=l(Ra,dD,L(yr,s),u),h=m.a,p=m.b,a=d(sD,g,i,f(xa,lD,o),$a(h));return L(f(ka,a,r),p)}}),pD=r(function(e,t){return h(Nl,kl,e,t,Rl,Rl)}),gD=r(function(e,t){for(;;){if(!t.b)return e;var r=t.a,n=r.b,a=r.c,i=t.b;if(_d(a)){var o=e,u=i;e=o,t=u}else{var o=si(L(a,n)),u=i;e=o,t=u}}}),vD=function(e){var t=f(gD,ci,e);if("Nothing"===t.$)return cp;var r=t.a,n=r.a,a=r.b;return f(pD,n,a)},yD=function(e){return{$:"ClassSelector",a:e}},mD=function(e){var t=e.a,r=e.b;return f(tD,r,dP(M([yD(t)])))},bD=function(e){return QP(AS(Ux(f(xa,mD,Ia(e)))))},CD=function(e){return l(JT,"style",yr,AS(Tw(bD(e))))},ED=n(function(e,t,r){var n=f(xa,lD,t),a=vD(t),i=l(Ra,hD,L(yr,a),r),o=i.a,u=i.b,s=CD(u);return l(JT,e,n,f(ka,s,$a(o)))}),SD=r(function(e,t){for(;;){if(!t.b)return!1;var r=t.a,n=r.a,a=t.b;if(R(e,n))return!0;var i=e,o=a;e=i,t=o}}),TD=r(function(e,t){e:for(;;){if(t.b){var r=t.a,n=r.a,a=t.b,i="_"+n;if(f(SD,i,a)){var o=i,u=a;e=o,t=u;continue e}return i}return e}}),wD=r(function(e,t){return L(f(TD,"_",t),CD(e))}),ID=n(function(e,t,r){var n=f(xa,lD,t),a=vD(t),i=l(Ra,dD,L(yr,a),r),o=i.a,u=i.b,s=f(wD,u,o);return l(WT,e,n,f(ka,s,$a(o)))}),AD=a(function(e,t,r,n){var a=f(xa,lD,r),i=vD(r),o=l(Ra,dD,L(yr,i),n),u=o.a,s=o.b,c=f(wD,s,u);return d(sD,e,t,a,f(ka,c,$a(u)))}),BD=a(function(e,t,r,n){var a=f(xa,lD,r),i=vD(r),o=l(Ra,hD,L(yr,i),n),u=o.a,s=o.b,c=CD(s);return d(cD,e,t,a,f(ka,c,$a(u)))}),kD=function(e){switch(e.$){case"Unstyled":return e.a;case"Node":var t=e.a,r=e.b,n=e.c;return l(ED,t,r,n);case"NodeNS":var a=e.a,t=e.b,r=e.c,n=e.d;return d(BD,a,t,r,n);case"KeyedNode":var t=e.a,r=e.b,n=e.c;return l(ID,t,r,n);default:var a=e.a,t=e.b,r=e.c,n=e.d;return d(AD,a,t,r,n)}},ND=kD,RD=function(e){return px(ND(d(aD,Bx,M([Tx(M([mx(Cx)]))]),yr,M([uD(e)]))))},$D=J,_D=i(function(e,t,r,n,a){return{$:"Padding",a:e,b:t,c:r,d:n,e:a}}),LD=n(function(e,t,r){return{$:"Spaced",a:e,b:t,c:r}}),xD=function(e){return l(La,r(function(e,t){var r=t.a,n=t.b;return L(function(){if("Just"===r.$){r.a;return r}if("StyleClass"===e.$&&"PaddingStyle"===e.b.$){var t=e.b,n=t.a,a=t.b,i=t.c,o=t.d,u=t.e;return si(h(_D,n,a,i,o,u))}return ci}(),function(){if("Just"===n.$){var t=n.a;return n}if("StyleClass"===e.$&&"SpacingStyle"===e.b.$){var r=e.b,a=r.a,t=r.b,i=r.c;return si(l(LD,a,t,i))}return ci}())}),L(ci,ci),e)},PD=r(function(e,t){var r=xD(e),n=r.a,a=r.b;if("Nothing"===a.$)return d(fA,FN,Vk,f(ka,lA(RT.contentLeft+" "+RT.contentCenterY+" "+RT.wrapped),f(ka,ET(bT),f(ka,yT(bT),e))),wT(t));var i=a.a,o=i.a,u=i.b,s=i.c,c=function(){if("Just"===n.$){var e=n.a,t=(e.a,e.b),r=e.c,a=e.d,i=e.e;return _(r,u/2|0)>-1&&_(a,s/2|0)>-1?si(m$({bottom:a-(s/2|0),left:i-(u/2|0),right:r-(u/2|0),top:t-(s/2|0)})):ci}return ci}();if("Just"===c.$){var h=c.a;return d(fA,FN,Vk,f(ka,lA(RT.contentLeft+" "+RT.contentCenterY+" "+RT.wrapped),f(ka,ET(bT),f(ka,yT(bT),U(e,M([h]))))),wT(t))}var p=-s/2,g=-u/2;return d(fA,AT,Vk,e,wT(M([d(fA,FN,Vk,f(ka,lA(RT.contentLeft+" "+RT.contentCenterY+" "+RT.wrapped),f(ka,ST(f(N_,"margin",mw(p)+"px "+mw(g)+"px")),f(ka,ST(f(N_,"width","calc(100% + "+Ni(u)+"px)")),f(ka,ST(f(N_,"height","calc(100% + "+Ni(s)+"px)")),f(ka,f(yA,IN,l(AN,o,u,s)),yr))))),wT(t))])))}),DD=i(function(e,t,r,n,a){var i=f(JL,M([ET(zk(80)),yT(zk(40)),bN(24),gR,d$(IR),hx(r)]),{label:vL("currency type"),onChange:f(zo,$D,n),placeholder:ci,text:t}),o=f(fp,t,HR),u=function(){var r=L(e,o);if(r.a){if("Just"===r.b.$)return qk;r.b;return f(PD,M([ET(zk(350)),d$(DR),p$(1),Wk(tN),aR(10),wN]),f(xa,function(e){var t=e.a,r=e.b,a=r.b;return f(VN,M([ET(zk(80)),kN(9),f(aN,0,5),hx(n(t)),X_(M([Wk(l(pA,.8,.8,1))]))]),M([f(dR,M([yT(zk(26))]),a),f(Kk,M([bN(16),vN]),RD(t))]))},Ia(fx(t))))}return qk}();return f(VN,M([kN(4),ZL(u)]),M([f(Kk,M([pN(a)]),dx(t)),i]))}),UD=i(function(e,t,r,n,a){var i=T_(d(Zd,"click","misclick","currency flag",0)),o=f(Kk,M([pN(T_(d(Zd,"click","misclick","currency symbol",0)))]),fl(jR(e))),u=f(Kk,M([ZL(f(P_,M([fL,ex(5)]),a))]),h(DD,r,e,E_(!0),sx,i));return p(QL,M([ET(zk(250)),gR,bN(24),ZL(f(P_,M([fL,ex(5)]),n))]),L(si(o),si(u)),"fiat input",ci,t,ux)}),OD=function(e){return rx(f(nx,"For fiat",h(UD,e.inputs.fiatType,e.inputs.fiatAmount,e.showFiatTypeDropdown,e.errors.fiatAmount,e.errors.fiatType)))},MD=function(e){return{$:"ChangeRole",a:e}},FD=d(M_,1,31,52,.13),VD=r(function(e,t){var r=M([bN(24),gR,uN]),n=function(){return"Buyer"===t.$?L(r,U(r,M([bA(FD)]))):L(U(r,M([bA(FD)])),r)}(),a=n.a,i=n.b;return f(VN,M([kN(20)]),M([f(Kk,U(M([pN(MD(lo))]),i),fl("Sell "+e)),f(Kk,U(M([pN(MD(fo))]),a),fl("Buy "+e))]))}),KD=r(function(e,t){return f(nx,"Trade Type",f(VD,NR(e),t.inputs.userRole))}),HD=Q$({blur:20,color:d(M_,0,0,0,.04),offset:L(0,3),size:0}),jD=f(oN,IN,RT.spaceEvenly),qD=function(e){var t=ix(e.wallet);return f(ON,M([ET(jk),kN(20),Wk(tN),cN(5),aR(20),HD]),M([f(VN,M([ET(jk),jD]),M([f(KD,t,e),f(ax,t,e),OD(e)])),ox(e)]))},GD=r(function(e,t){return{$:"CreateClicked",a:e,b:t}}),zD={$:"Web3Connect"},YD=function(e){return f(Kk,M([wN]),function(){var t=L(Gd(e),Mg(e));if("Just"===t.a.$){if("Just"===t.b.$){var r=t.a.a,n=t.b.a;return f(eL,"Open Trade",f(GD,n,r))}t.b;return f(O_,"Unsupported Network",ci)}t.a;return f(eL,"Connect to Wallet",zD)}())},WD=function(e){return{$:"AutoabortIntervalChanged",a:e}},JD=function(e){return{$:"ChangePaymentMethodText",a:e}},QD=r(function(e,t){return{$:"Placeholder",a:e,b:t}}),XD=QD,ZD=function(e){return f(XD,M([bA(d(YR,0,0,0,.2))]),function(){return fl("Seller"===e.$?"Some examples:\n\nI can accept transfers to a Schwab bank account (routing 121202211)\nI can meet in person to accept cash in London, weekdays after 6, with a day of notice.\nHide the cash in Hume Park, Bulawayo, and tell me the location over chat.":"Some examples:\n\nI can deliver cash anywhere within an hour drive of Phoneix, AZ, with 2 days of notice.\nTransferWise\nInterac e-Transfer\n")}())},eU={$:"TextArea"},tU=r(function(e,t){return l(WL,{autofill:ci,spellchecked:t.spellcheck,type_:eU},e,{label:t.label,onChange:t.onChange,placeholder:t.placeholder,text:t.text})}),rU=n(function(e,t,r){var n=f(Kk,M([bN(22),vN]),fl("Payment Method")),a=f(tU,M([ET(jk),yT(zk(150)),Wk(d(M_,155,203,255,.2)),p$(0)]),{label:vL("payment method"),onChange:JD,placeholder:""===r?si(ZD(t)):ci,spellcheck:!0,text:r});return f(ON,M([kN(20),m$({bottom:15,left:45,right:45,top:0}),ET(jk),U_(f(P_,M([fL,ex(30),aR(10),bN(20),ET(zk(400))]),e))]),M([n,a]))}),nU=function(e){return"Buyer"===e.$?"After committing, you and the Seller have this long to complete the fiat payment, using one of your payment methods indicated below. If you fail to confirm payment within this window, 1/4 of your deposit is burned from both parties and the rest is refunded.":"After committing, you and the Buyer have this long to complete the fiat payment, using one of your payment methods indicated below. If the Buyer aborts or fails to confirm within this window, 1/12 of the trade amount is burned from both parties and the rest is refunded."},aU=a(function(e,t,r,n){var a=l(Rs,e,P("0"),Ni(n));return f(Kk,M([bN(22),bA(t)]),fl(U(a,r)))}),iU=function(e){return jd(e)<0?Vl(0):e},oU=n(function(e,t,n){var a=r(function(e,r){return f(ON,M([kN(4)]),M([f(Kk,M([aR(4),uN,pN(n(f(qb,t,e)))]),f(dR,M([yT(zk(10))]),hR)),r,f(Kk,M([aR(4),uN,pN(n(function(e){return jd(e)?e:Vl(3e5)}(iU(f(LR,t,e)))))]),f(dR,M([yT(zk(10))]),sR))]))}),i=XR(t);return f(VN,M([jD,kN(10)]),M([f(a,Vl(864e5),d(aU,3,e," days",i.days)),f(a,Vl(36e5),d(aU,2,e," hours",i.hours)),f(a,Vl(3e5),d(aU,2,e," min",i.min))]))}),uU=o(function(e,t,r,n,a,i){var o=f(Kk,M([Wk(d(M_,155,203,255,.2)),cN(5),aR(15),U_(f(P_,M([fL]),a))]),l(oU,DR,n,i)),u=f(VN,M([kN(30)]),M([f(dR,M([yT(zk(40)),pN(T_(d(Zd,"click","misclick","symbol for "+t,0)))]),e),f(Kk,M([bN(22),vN]),fl(t))])),s=f($N,M([bN(17),gR,bA(F_)]),M([fl(r)]));return f(ON,M([ET(jk),cN(10),Wk(l(Ok,237,237,237)),kN(2)]),f(xa,Kk(M([Wk(tN),f(aN,45,18),ET(jk)])),M([u,f(VN,M([ET(jk),kN(25),Wk(tN)]),M([o,s]))])))}),sU=uR({description:"fiat",src:"/DAIHard/static/img/fiat-bag-white.svg"}),cU=f(oN,tR,RT.clipX),fU=f(oN,tR,RT.clipY),lU=i(function(e,t,r,n,a){return f(ON,M([kN(15),cN(8),cU,fU,Wk(tN)]),M([p(uU,sU,"Payment Window",nU(a),r,n,WD),l(rU,t,a,e)]))}),dU=function(e){return{$:"AutoreleaseIntervalChanged",a:e}},hU=function(e){return"Buyer"===e.$?"Once you confirm payment, the Seller has this time window to decide whether to release the funds to you or burn everything. If he doesn't decide before the time is up, funds are released to you by default.":"Once the Buyer confirms payment, you have this long to decide whether to release the funds to the Buyer or, in the case of an attempted scam, burn everything. If you don't decide before the time is up, funds are released to the Buyer by default."},pU=uR({description:"",src:"/DAIHard/static/img/release-window-icon.svg"}),gU=n(function(e,t,r){return f(Kk,M([cN(8),cU,fU,Wk(tN)]),p(uU,pU,"Burn/Release Window",hU(r),e,t,dU))}),vU=function(e){return{$:"AutorecallIntervalChanged",a:e}},yU=function(e){var t=function(){return"Buyer"===e.$?"Seller":"Buyer"}();return"The offer will expire by this time window if a "+t+" does not commit to the trade, returning the balance and the 1% fee to your wallet. This can also be manually triggered anytime before a "+t+" commits."},mU=uR({description:"",src:"/DAIHard/static/img/open-window-icon.svg"}),bU=n(function(e,t,r){return f(Kk,M([cN(8),Wk(tN),cU,fU]),p(uU,mU,"Open Window",yU(r),e,t,vU))}),CU=function(e){return f(ON,M([ET(jk),kN(20)]),M([l(bU,e.inputs.autorecallInterval,e.errors.autorecallInterval,e.inputs.userRole),h(lU,e.inputs.paymentMethod,e.errors.paymentMethod,e.inputs.autoabortInterval,e.errors.autoabortInterval,e.inputs.userRole),l(gU,e.inputs.autoreleaseInterval,e.errors.autoreleaseInterval,e.inputs.userRole)]))},EU=function(e){return f(ON,M([ET(f(L_,1e3,jk)),wN,kN(20),m$({bottom:30,left:40,right:40,top:0}),pN(E_(!1)),m_(uL(e))]),M([qD(e),CU(e),YD(e.wallet)]))},SU=As(yb(8226)),TU=r(function(e,t){if(t.b){var n=t.a,a=t.b,i=r(function(t,r){return f(ka,e,f(ka,t,r))}),o=l(La,i,yr,a);return f(ka,n,o)}return yr}),wU=r(function(e,t){return l(Ra,ka,t,e)}),IU=n(function(e,t,r){for(;;){if(!(t>0))return e;var n=f(wU,r,e),a=t-1,i=r;e=n,t=a,r=i}}),AU=r(function(e,t){var r=Ti(t);return!r||R(r,e)?t:_(r,e)<0?$a(f(wU,f(lc,e%r,t),l(IU,yr,e/r|0,t))):f(lc,e,t)}),BU=a(function(e,t,r,n){for(;;){if(!r.b)return $a(n);var a=r.a,i=r.b,o=e(a);if(f(fw,o,t)){var u=e,s=t,c=i,l=n;e=u,t=s,r=c,n=l}else{var u=e,s=f(Gm,o,t),c=i,l=f(ka,a,n);e=u,t=s,r=c,n=l}}}),kU=function(e){return d(BU,Ua,sm,e,yr)},NU=r(function(e,t){return f(Kk,M([ET(jk),m_(f(VN,M([kN(3),ET(nR(100)),ET(t),rR]),f(TU,f(Kk,M([bA(d(YR,0,0,0,.1)),bN(14)]),fl(SU)),f(xa,f(Da,Kk(M([bA(d(YR,0,0,0,.2))])),fl),f(AU,100,(e?$a:Ua)(kU(f(xa,f(zo,fu,Qa),Ia(HR)))))))))]),fl(" "))}),RU=r(function(e,t){var r=t.url,n=t.label;return d(fA,AT,TT("a"),f(ka,ST(hT(r)),f(ka,ST(pT("noopener noreferrer")),f(ka,ET(bT),f(ka,yT(bT),f(ka,lA(RT.contentCenterX+" "+RT.contentCenterY),e))))),wT(M([n])))}),$U=function(){var e=f(Da,Kk(M([bA(l(pA,.8,.2,.2))])),fl),t=f(Da,Kk(M([_N])),fl);return f(ON,M([ET(jk),yT(jk),Wk(tN),cN(6),kN(50),Q$({blur:20,color:d(M_,0,0,0,.1),offset:L(0,3),size:0}),cN(10),aR(20)]),M([f(NU,!1,jk),f(ON,M([wN,ET(f(L_,700,jk)),kN(20)]),M([f($N,M([bN(70),_N,wN,t_]),M([fl("DAI"),e("Hard")])),f(VN,M([bN(30),vN,wN,t_,b$]),M([fl("The "),e("Global"),fl(", "),e("Unkillable"),fl(" Crypto Gateway")]))])),f(VN,M([Wk(CR),kN(2),wN,c_,ET(jk)]),M([f(Kk,M([f(aN,40,10),Wk(tN),ET(jk),yT(jk)]),f(ON,M([kN(60),PN]),M([f(Kk,M([bN(40),vN,wN]),fl("Want to learn more?")),f(ON,M([kN(15)]),M([f(RU,M([cN(4),ET(jk),uN,f(aN,25,17),Wk(A_),bA(tN),_N,bN(24),wN]),{label:f($N,M([t_]),M([fl("Go to the DAIHard Info page")])),url:"https://daihardhome.wpcomstaging.com/2019/07/24/re-launch-test-post/"}),f(RU,M([cN(4),ET(jk),uN,f(aN,25,17),Wk(A_),bA(tN),_N,bN(24),wN]),{label:f($N,M([t_]),M([fl("Join the Telegram Group")])),url:"https://t.me/daihardexchange_group"})]))]))),f(Kk,M([f(aN,40,10),Wk(tN),ET(jk),yT(jk)]),f(ON,M([k$,kN(60)]),M([f(Kk,M([bN(40),vN,wN]),fl("Ready to try it out?")),f(ON,M([kN(10),ET(zk(400)),wN]),M([f($N,M([bN(24),ET(jk)]),M([fl("Make sure your web3 wallet is unlocked (we recommend using Nifty Wallet over Metamask).")])),f($N,M([bN(24),ET(jk)]),M([fl("Then follow the links at the top of this page to browse "),t("Sell Offers"),fl(", browse "),t("Buy Offers"),fl(", or "),t("Create Your Own Offer"),fl(".")]))]))])))])),f(Kk,M([aL,ET(jk)]),f(NU,!0,jk))]))}(),_U=r(function(e,t){return f(Ay,f(zo,function(e){return e.type_},Ja(e)),t)}),LU=function(e){return{$:"ShowCurrencyDropdown",a:e}},xU=r(function(e,t){return ml(t(e))}),PU=i(function(e,t,r,n,a){var i=l(xU,e,a.filterFunc,ay(f(xa,GN,n)));return R(i,yr)?f(Kk,M([wN,bN(24),m$({bottom:0,left:0,right:0,top:30}),b$]),fl(r?"No trades found with those filters.":"Initializing Trade Cache...")):f(Yi,Rv,d(v$,e,a.tradeTable,M([t?Av:xo,JN,YN,WN,QN,zN]),i))}),DU=function(e){return{$:"FiltersMsg",a:e}},UU={$:"ApplyInputs"},OU=UL("disabled"),MU=function(e){return{$:"MayPreventDefault",a:e}},FU=r(function(e,t){return f(lN,e,MU(t))}),VU=r(function(e,t){var r=function(r){return R(r,e)?Fi(t):hu("Not the enter key")},n=f(du,r,f(Oh,"key",pu));return ST(f(FU,"keyup",f(Oi,function(e){return L(e,!0)},n)))}),KU=function(e){return f(VU,"Enter",e)},HU={$:"Button"},jU=r(function(e,t){var r=t.onPress,n=t.label;return d(fA,AT,Vk,f(ka,ET(bT),f(ka,yT(bT),f(ka,lA(RT.contentCenterX+" "+RT.contentCenterY+" "+RT.seButton+" "+RT.noTextSelection),f(ka,uN,f(ka,xL(e),f(ka,NN(HU),f(ka,ST(P$(0)),function(){if("Nothing"===r.$)return f(ka,ST(OU(!0)),e);var t=r.a;return f(ka,pN(t),f(ka,KU(t),e))}()))))))),wT(M([n])))}),qU=f(jU,M([Wk(A_),aR(10),cN(5)]),{label:f(Kk,M([bA(tN),wN,eR]),fl("Apply")),onPress:si(UU)}),GU=function(e){var t=e.topLeft,r=e.topRight,n=e.bottomLeft,a=e.bottomRight;return f(yA,sN,l(jI,"br-"+Ni(t)+"-"+Ni(r)+Ni(n)+"-"+Ni(a),"border-radius",Ni(t)+"px "+Ni(r)+"px "+Ni(a)+"px "+Ni(n)+"px"))},zU=function(e){return f(dN,"focus",Fi(e))},YU=f(Da,ST,zU),WU=s(function(e,t,r,n,a,i,o,u){var s=function(){if("Nothing"===o.$)return yr;var e=o.a;return M([YU(e(!0)),hx(e(!0))])}();return f(VN,U(e,M([yT(zk(40)),Q$({blur:20,color:d(M_,233,237,242,.05),offset:L(0,3),size:0})])),M([f(Kk,M([Wk(IR),yT(zk(40)),GU({bottomLeft:4,bottomRight:0,topLeft:4,topRight:0})]),f(Kk,M([eR,f(aN,10,0)]),r)),f(JL,U(s,U(t,M([ET(zk(100)),yT(zk(40)),d$(IR),GU({bottomLeft:0,bottomRight:4,topLeft:0,topRight:4}),Z$({bottom:1,left:0,right:1,top:1})]))),{label:vL(n),onChange:u,placeholder:i,text:a})]))}),JU=function(e){return{$:"MaxDaiChanged",a:e}},QU=function(e){return{$:"MinDaiChanged",a:e}},XU=r(function(e,t){return f(ON,M([ET(jk),kN(8)]),M([f(Kk,M([bN(17),gR]),fl(e)),t]))}),ZU=ZT(25),eO=function(e){return{$:"MoveX",a:e}},tO=function(e){return f(j$,ZU,eO(-e))},rO={$:"OnLeft"},nO=function(e){return f(t$,rO,e)},aO=n(function(e,t,r){var n=hL(M([eR])),a=f(VN,M([kN(8),eR,ET(zk(60))]),M([n,f(Kk,M([bN(16),eR]),fl("max"))])),i=f(VN,M([kN(8),eR,ET(zk(60))]),M([n,f(Kk,M([bN(16),eR]),fl("min"))]));return f(XU,"Dai Range",f(ON,M([kN(5),ET(zk(200))]),M([v(WU,M([nO(f(P_,M([tO(5),ET(zk(200))]),r.minDai))]),M([YU(LU(!1))]),i,"min Dai",e,ci,ci,QU),v(WU,M([nO(f(P_,M([tO(5),ET(zk(200))]),r.maxDai))]),M([YU(LU(!1))]),a,"max Dai",t,ci,ci,JU)])))}),iO=function(e){var t=f(fp,e,HR);if("Nothing"===t.$)return fl("*");var r=t.a,n=r.b;return f(dR,M([yT(zk(26))]),n)},oO=function(e){return{$:"AppCmd",a:e}},uO=function(e){return{$:"FiatTypeInputChanged",a:e}},sO=n(function(e,t,r){var n=oO(d(Zd,"click","misclick","currency flag",0)),a=iO(t);f(VN,M([kN(8),eR,ET(zk(60))]),M([a,f(Kk,M([bN(16),eR]),fl("max"))])),f(VN,M([kN(8),eR,ET(zk(60))]),M([a,f(Kk,M([bN(16),eR]),fl("min"))]));return f(Kk,M([c_,ET(zk(120))]),f(XU,"Fiat Type",h(DD,e,t,LU(!0),uO,n)))}),cO={$:"AddSearchTerm"},fO=function(e){return{$:"PaymentMethodInputChanged",a:e}},lO=f(Oh,"keyCode",CE),dO=function(e){return f(dN,"keyup",f(du,function(t){return 13===t?Fi(e):hu(Ni(t))},lO))},hO=function(e){return f(XU,"Search Payment Methods",f(JL,M([c_,ET(zk(250)),yT(zk(40)),d$(IR),Q$({blur:20,color:d(M_,233,237,242,.05),offset:L(0,3),size:0}),R_(dO(cO))]),{label:vL("payment methods search"),onChange:fO,placeholder:ci,text:e}))},pO={$:"ResetSearch"},gO=f(jU,M([Wk(A_),aR(10),cN(5)]),{label:f(Kk,M([bA(tN),wN,eR]),fl("Reset")),onPress:si(pO)}),vO=function(e){return{$:"RemoveTerm",a:e}},yO=function(e){return f(Kk,M([aR(3),c_,uN,pN(vO(e)),bN(10),bA(EN)]),fl("x"))},mO=function(e){if(e.b){var t=e;return f(VN,M([ET(jk),aR(10),kN(10)]),f(xa,function(e){return f(VN,M([Wk(d(M_,16,7,234,.2)),cN(5),aR(4),kN(3)]),M([fl(e),yO(e)]))},t))}return qk},bO=i(function(e,t,r,n,a){var i=function(e){return f(Kk,M([bN(20),vN,bA(CR),wN]),fl(e))},o=f(Eh,Ja(d_),f(xa,v_,e))?M([i("No trades found.")]):f(xa,i,mE(f(xa,function(e){switch(v_(e).$){case"QueryingNumTrades":return si("Querying "+hB(e.factory)+" Factory...");case"NoneFound":return ci;case"FetchingTrades":return si("Fetching "+hB(e.factory)+" Trades...");default:return ci}},e)));return f(Kk,M([ET(jk),m_(f(ON,M([kN(5),k$]),o))]),f(VN,M([wN,kN(50)]),M([f(Yi,DU,l_(t)),f(VN,M([ET(bT),kN(10)]),M([f(Kk,M([ET(bT),c_]),l(aO,r.minDai,r.maxDai,n)),f(Kk,M([ET(bT),c_]),l(sO,a,r.fiatType,n)),f(ON,M([ET(bT),c_,kN(5)]),M([hO(r.paymentMethod),mO(r.paymentMethodTerms)])),f(XU," ",f(ON,M([kN(5),ET(bT)]),M([qU,gO])))]))])))}),CO=n(function(e,t,r){var n=f(Eh,f(zo,v_,Ja(h_)),t),a=function(){return!f(xc,0,f(Bo,function(e){return f(MS,function(e){return e.checked&&"Open"!==e.label},e.options)},f(_U,Eo,r.filters)))}();return f(ON,M([cN(5),Wk(tN),ET(jk),yT(jk),pN(LU(!1)),aR(30)]),M([f(VN,M([ET(jk),kN(10)]),M([h(bO,t,r.filters,r.inputs,r.errors,r.showCurrencyDropdown)])),h(PU,e,a,n,t,r)]))}),EO=function(e){return{$:"MessageInputChanged",a:e}},SO={$:"MessageSubmit"},TO=function(e){return f(ON,M([ET(jk),kN(10)]),M([f(tU,M([ET(jk),yT(zk(100))]),{label:vL("messageInput"),onChange:EO,placeholder:ci,spellcheck:!1,text:e.messageInput}),f(jU,M([wN,bN(24)]),{label:fl("Submit"),onPress:si(SO)})]))},wO=f(oN,tR,RT.scrollbarsY),IO=r(function(e,t){return f(Kk,M([yT(jk),ET(jk)]),f(Kk,U(M([R_(f(N_,"position","absolute")),R_(f(N_,"top","0")),R_(f(N_,"right","0")),R_(f(N_,"bottom","0")),R_(f(N_,"left","0")),wO]),e),t))}),AO=l(Ok,200,205,210),BO=n(function(e,t,r){var n=M([PN,Wk(A_),bA(tN),GU({bottomLeft:15,bottomRight:0,topLeft:15,topRight:15})]),a=M([k$,Wk(AO),bA(DR),GU({bottomLeft:0,bottomRight:15,topLeft:15,topRight:15})]),i=r.eventInfo;if("Statement"===i.$){var o=i.a,u=R(o.who,t)?n:a;return f(Kk,U(M([aR(7)]),u),f($N,yr,M([fl(U(function(){return"Buyer"===o.who.$?"B: ":"S: "}(),function(){var e=o.message;switch(e.$){case"FailedDecode":return"DECODE FAILED";case"Encrypted":return"(encrypted data)";case"FailedDecrypt":return"DECRYPT FAILED";default:return e.a}}()))])))}var s=i.a,c=function(){switch(s.$){case"Initiated":return si(x(l(pA,0,0,1),tN,"Initiator opened the trade"));case"Recalled":return si(x(l(pA,0,0,1),tN,"Initiator recalled the trade"));case"Committed":var t=s.a,r=f(ru,8,dl(t))+"..";return si(x(l(pA,1,0,1),tN,r+" committed to the trade"));case"Aborted":return si(x(l(pA,1,0,0),tN,"Buyer aborted the trade"));case"Claimed":return si(x(l(pA,0,1,0),tN,"Buyer marked the fiat transfer complete"));case"Released":return si(x(l(pA,0,0,1),tN,"Seller released the "+NR(e)+" and closed the contract"));default:return si(x(l(pA,0,0,1),tN,"Seller burned the "+NR(e)+" and closed the contract"))}}();if("Nothing"===c.$)return qk;var d=c.a,h=d.a,p=d.b,g=d.c;return f(Kk,M([cN(3),p$(1),d$(l(pA,1,0,1)),wN,Wk(h)]),f($N,M([bA(p)]),M([fl(g)])))}),kO=n(function(e,t,r){if(r.b){var n=r;return f(IO,M([ET(jk),yT(jk),cN(5),p$(1),d$(DR),aR(10)]),f(ON,M([ET(jk),yT(jk),kN(10)]),f(xa,f(BO,e,t),n)))}return f(Kk,M([ET(jk),yT(jk),cN(5),p$(1),d$(DR),wN,bA(l(pA,.5,.5,.5)),b$]),fl("no messages found."))}),NO=Cr,RO=function(e){return f(ON,M([ET(jk),yT(jk),kN(10),p$(1),cN(5),aR(20)]),M([l(kO,e.trade.factory,e.userRole,f(NO,function(e){return e.blocknum},Sa(e.history))),TO(e)]))},$O=function(e){return f(Kk,M([Wk(tN),cN(8),HD,ET(jk),yT(jk)]),RO(e))},_O={$:"ToggleChat"},LO=function(e){if(e.showChatHistory){var t=f(xc,qk,f(Bo,$O,e.chatHistoryModel));return f(Kk,M([yT(jk),ET(zk(500)),aR(20),PN]),l(x_,M([yT(jk),ET(jk)]),f(Yi,jE,t),_O))}return qk},xO=function(e){return"Buyer"===e.initiatorRole.$?lo:fo},PO=function(e){return zR(e)+" "+e.fiatType},DO={$:"AbortAction"},UO=n(function(e,t,r){return{$:"ConfirmCommit",a:e,b:t,c:r}}),OO=function(e){var t=L(e.txChainStatus,e.trade);if("Just"!==t.a.$){t.a;return qk}if("LoadedTrade"!==t.b.$)return qk;var r=t.a.a,n=t.b.a;switch(r.$){case"ConfirmingCommit":var a=r.a,i=r.b,o=PO(n.terms.price),u=u$(oC(i)),s=u$(n.parameters.tradeAmount)+" "+NR(n.factory),c=function(){return"Buyer"===xO(n.parameters).$?L(f(Kk,M([gR,bA(DR)]),fl("buyer")),M([fl("pay the seller "),f(Kk,M([bA(A_)]),fl(o)),fl(" in exchange for the "),f(Kk,M([bA(A_)]),fl(s)),fl(" held in this contract.")])):L(f(Kk,M([gR,bA(DR)]),fl("seller")),M([fl("accept "),f(Kk,M([bA(A_)]),fl(o)),fl(" from the buyer in exchange for the "),f(Kk,M([bA(A_)]),fl(s)),fl(" held in this contract.")]))}(),d=c.a,h=c.b;return l(x_,yr,f(ON,M([kN(20),aR(20),wN,yT(jk),t_]),M([f(Kk,M([bN(26),vN,wN,eR]),fl("Just to Confirm...")),f(ON,M([kN(20),wN,eR]),f(xa,$N(M([wN,bN(18),gR,bA(F_)])),U(M([U(M([fl("You will deposit "),f(Kk,M([bA(A_)]),fl(u+" "+NR(n.factory))),fl(", thereby becoming the "),d,fl(" of this trade. By doing so, you are agreeing to ")]),h)]),function(){return"Token"===n.factory.$?M([M([fl("(This ususally requires two Metamask signatures. Your "+NR(n.factory)+" will not be deposited until the second transaction has been mined.)")])]):yr}()))),f(Kk,M([aL,wN]),f(eL,"Yes, I definitely want to commit to this trade.",l(UO,n,a,i)))])),DO);case"ApproveNeedsSig":return tL(M([fl("Waiting for user signature for the approve call."),fl("(check Metamask!)"),fl("Note that there will be a second transaction to sign after this.")]));case"ApproveMining":var p=r.a;return tL(M([fl("Mining the initial approve transaction..."),f(dA,M([iL,bA(A_)]),{label:fl("See the transaction on Etherscan"),url:f(rL,n.factory,p)}),fl("Funds will not leave your wallet until you sign the next transaction.")]));case"CommitNeedsSig":return tL(M([fl("Waiting for user signature for the final commit call."),fl("(check Metamask!)"),fl("This will make the deposit and commit you to the trade.")]));case"CommitMining":var p=r.a;return tL(M([fl("Mining the final commit transaction..."),f(dA,M([iL,bA(A_)]),{label:fl("See the transaction"),url:f(rL,n.factory,p)})]));case"ConfirmingAction":var g=r.a;return l(x_,yr,f(ON,M([kN(20),aR(20),wN,yT(jk),t_]),M([f(Kk,M([bN(26),vN,wN,eR]),fl("Just to Confirm...")),f(ON,M([kN(20),wN,eR]),f(xa,$N(M([wN,bN(18),gR,bA(F_)])),function(){switch(g.$){case"Poke":case"Recall":return yr;case"Claim":return M([M([fl('By clicking "Confirm Payment", you are claiming that you\'ve paid the Seller in a way they can verify. Only do this if you are sure the Seller will agree that they have the money--otherwise they may burn the '+NR(n.factory)+" rather than release it to you.")])]);case"Abort":return M([M([fl("Aborting will incur a small penalty on both parties, and refund the rest of the "+NR(n.factory)+".")])]);case"Release":return M([M([fl("Releasing the payment will irreversibly send the trade's balance to the Buyer. Only do this if you are certain you've received the full agreed-upon payment.")])]);default:return M([M([fl("This will destroy the "+NR(n.factory)+" in the payment. Only do this if the Buyer has attempted to scam you, is nonresponsive, or for some reason has failed the payment.")])])}}())),f(Kk,M([aL,wN]),function(e){return f(eL,e,sS(g))}(function(){switch(g.$){case"Poke":return"Poke";case"Recall":return"Recall";case"Claim":return"I understand. Confirm Payment";case"Abort":return"I understand. Abort the trade.";case"Release":return"I understand. Release the "+NR(n.factory)+".";default:return"I understand. Burn the "+NR(n.factory)+"."}}()))])),DO);case"ActionNeedsSig":var g=r.a;return tL(M([fl("Waiting for user signature for the "+fS(g)+" call."),fl("(check Metamask!)")]));default:var g=r.a,p=r.b;return qk}},MO=VN(M([ET(jk),Wk(tN),cN(5),aR(20),jD,HD])),FO=function(e){return f(VN,M([kN(8)]),M([f(dR,yr,dL),f(Kk,M([bN(24),gR]),fl(u$(e)))]))},VO=r(function(e,t){var r=f(Io,Ao(e),f(Bo,function(e){return e.address},Gd(t)));return f(nx,function(){var t=L(e.parameters.initiatorRole,r);if("Buyer"===t.a.$){if("Just"===t.b.$&&"Initiator"===t.b.a.$){t.a,t.b.a;return"You're Buying"}t.a;return"Buying"}if("Just"===t.b.$&&"Initiator"===t.b.a.$){t.a,t.b.a;return"You're Selling"}t.a;return"Selling"}(),FO(e.parameters.tradeAmount))}),KO=function(e){return f(VN,M([kN(5)]),M([dx(e.fiatType),f(Kk,M([bN(24),gR]),fl(PO(e)))]))},HO=function(e){return f(nx,"For Fiat",KO(e.terms.price))},jO=function(e){return"Buyer"===e.$?"Buyer":"Seller"},qO=l(Ok,250,165,22),GO=l(Ok,255,0,0),zO=l(Ok,0,255,0),YO=uR({description:"aborted",src:"/DAIHard/static/img/aborted.svg"}),WO=uR({description:"burned",src:"/DAIHard/static/img/burned.svg"}),JO=uR({description:"released",src:"/DAIHard/static/img/released.svg"}),QO={$:"ToggleStatsModal"},XO=function(e){return f(NO,Ua,e)},ZO=n(function(e,t,n){var a=ay(f(xa,function(e){return f(ml,function(e){return R(f(ko,e,n),si(t))},f(US,function(e){if("LoadedTrade"===e.$){var t=e.a;return si(t)}return ci},Sa(e.trades)))},e)),i=Ti(a),o=l(Ra,r(function(e,t){switch(e.state.closedReason.$){case"Released":return D(t,{amountReleased:f(fh,t.amountReleased,e.parameters.tradeAmount),numReleases:t.numReleases+1});case"Burned":return D(t,{amountBurned:f(fh,t.amountBurned,e.parameters.tradeAmount),numBurns:t.numBurns+1});case"Aborted":return D(t,{numAborts:t.numAborts+1});default:return t}}),{amountBurned:Wl,amountReleased:Wl,numAborts:0,numBurns:0,numReleases:0},a),u=f(Bo,Vl,Ql(XO(f(US,function(e){return function(e){return e?si(e):ci}(jd(e.phaseStartInfo.committedTime))},a))));return{amountBurned:o.amountBurned,amountReleased:o.amountReleased,asRole:t,firstTrade:u,numAborts:o.numAborts,numBurns:o.numBurns,numReleases:o.numReleases,numTrades:i}}),eM=r(function(e,t){return d(Z_,x(d(YR,0,0,1,1),d(YR,0,0,1,.8),d(YR,0,0,1,.6)),tN,e,t)}),tM=function(e){return{$:"ViewUserHistory",a:e}},rM=f(JB,0,yr),nM=f(oN,gN,RT.textNormalWeight),aM=r(function(e,t){return Za(e/t)}),iM=n(function(e,t,r){for(;;){if(!r.b)return t+e;var n=r.a,a=r.b;if(_(n.start,t)<0)return t+n.offset;var i=e,o=t,u=a;e=i,t=o,r=u}}),oM=r(function(e,t){var r=e.a,n=e.b;return l(iM,r,f(aM,jd(t),6e4),n)}),uM=r(function(e,t){return f(_s,24,f(aM,f(oM,e,t),60))}),sM=r(function(e,t){return f(_s,1e3,jd(t))}),cM=r(function(e,t){return f(_s,60,f(oM,e,t))}),fM={$:"Apr"},lM={$:"Aug"},dM={$:"Dec"},hM={$:"Feb"},pM={$:"Jan"},gM={$:"Jul"},vM={$:"Jun"},yM={$:"Mar"},mM={$:"May"},bM={$:"Nov"},CM={$:"Oct"},EM={$:"Sep"},SM=function(e){var t=f(aM,e,1440)+719468,r=(t>=0?t:t-146096)/146097|0,n=t-146097*r,a=(n-(n/1460|0)+(n/36524|0)-(n/146096|0))/365|0,i=n-(365*a+(a/4|0)-(a/100|0)),o=(5*i+2)/153|0,u=o+(o<10?3:-9);return{day:i-((153*o+2)/5|0)+1,month:u,year:a+400*r+(u<=2?1:0)}},TM=r(function(e,t){switch(SM(f(oM,e,t)).month){case 1:return pM;case 2:return hM;case 3:return yM;case 4:return fM;case 5:return mM;case 6:return vM;case 7:return gM;case 8:return lM;case 9:return EM;case 10:return CM;case 11:return bM;default:return dM}}),wM=r(function(e,t){return f(_s,60,f(aM,jd(t),1e3))}),IM={$:"Fri"},AM={$:"Mon"},BM={$:"Sat"},kM={$:"Sun"},NM={$:"Thu"},RM={$:"Tue"},$M={$:"Wed"},_M=r(function(e,t){switch(f(_s,7,f(aM,f(oM,e,t),1440))){case 0:return NM;case 1:return IM;case 2:return BM;case 3:return kM;case 4:return AM;case 5:return RM;default:return $M}}),LM=n(function(e,t,r){return e.toAmPm(f(uM,t,r))}),xM=r(function(e,t){return SM(f(oM,e,t)).day}),PM=xM,DM=M([kM,AM,RM,$M,NM,IM,BM]),UM=r(function(e,t){return function(e){return e.a}(f(xc,L(0,kM),Ql(f(ml,function(r){return R(r.b,f(_M,e,t))},f(Bi,r(function(e,t){return L(e,t)}),DM)))))}),OM=function(e){return l(Ra,Na,0,e)},MM=r(function(e,t){return SM(f(oM,e,t)).year}),FM=function(e){return!f(_s,4,e)&&(!!f(_s,100,e)||!f(_s,400,e))},VM=r(function(e,t){switch(t.$){case"Jan":return 31;case"Feb":return FM(e)?29:28;case"Mar":return 31;case"Apr":return 30;case"May":return 31;case"Jun":return 30;case"Jul":case"Aug":return 31;case"Sep":return 30;case"Oct":return 31;case"Nov":return 30;default:return 31}}),KM=M([pM,hM,yM,fM,mM,vM,gM,lM,EM,CM,bM,dM]),HM=r(function(e,t){return f(xc,L(0,pM),Ql(f(ml,function(r){r.a;return R(r.b,f(TM,e,t))},f(Bi,r(function(e,t){return L(e,t)}),KM))))}),jM=r(function(e,t){return 1+function(e){var t=e.a;e.b;return t}(f(HM,e,t))}),qM=r(function(e,t){var r=f(lc,f(jM,e,t)-1,KM);return OM(f(xa,VM(f(MM,e,t)),r))+f(PM,e,t)}),GM=r(function(e,t){return f(jM,e,t)/4|0}),zM=r(function(e,t){var r=Ni(t),n=e-Qo(r);return U(f(Ri,"",f(xa,function(e){return"0"},f(Ai,1,n))),r)}),YM=function(e){return e?e<=12?e:e-12:12},WM=sv(315576e5),JM=r(function(e,t){return Vl(WM*f(MM,e,t))}),QM=r(function(e,t){var r=f(JM,e,t),n=f(UM,e,r);return 1+((f(qM,e,t)+n)/7|0)}),XM=r(function(e,t){return Ni(f(MM,e,t))}),ZM=a(function(e,t,r,n){switch(n.$){case"MonthNumber":return Ni(f(jM,t,r));case"MonthSuffix":return function(t){return U(Ni(t),e.toOrdinalSuffix(t))}(f(jM,t,r));case"MonthFixed":return f(zM,2,f(jM,t,r));case"MonthNameAbbreviated":return e.toMonthAbbreviation(f(TM,t,r));case"MonthNameFull":return e.toMonthName(f(TM,t,r));case"QuarterNumber":return Ni(1+f(GM,t,r));case"QuarterSuffix":return function(t){return U(Ni(t),e.toOrdinalSuffix(t))}(1+f(GM,t,r));case"DayOfMonthNumber":return Ni(f(PM,t,r));case"DayOfMonthSuffix":return function(t){return U(Ni(t),e.toOrdinalSuffix(t))}(f(PM,t,r));case"DayOfMonthFixed":return f(zM,2,f(PM,t,r));case"DayOfYearNumber":return Ni(f(qM,t,r));case"DayOfYearSuffix":return function(t){return U(Ni(t),e.toOrdinalSuffix(t))}(f(qM,t,r));case"DayOfYearFixed":return f(zM,3,f(qM,t,r));case"DayOfWeekNumber":return Ni(f(UM,t,r));case"DayOfWeekSuffix":return function(t){return U(Ni(t),e.toOrdinalSuffix(t))}(f(UM,t,r));case"DayOfWeekNameAbbreviated":return e.toWeekdayAbbreviation(f(_M,t,r));case"DayOfWeekNameFull":return e.toWeekdayName(f(_M,t,r));case"WeekOfYearNumber":return Ni(f(QM,t,r));case"WeekOfYearSuffix":return function(t){return U(Ni(t),e.toOrdinalSuffix(t))}(f(QM,t,r));case"WeekOfYearFixed":return f(zM,2,f(QM,t,r));case"YearNumberLastTwo":return f(ou,2,f(XM,t,r));case"YearNumber":return f(XM,t,r);case"AmPmUppercase":return $D(l(LM,e,t,r));case"AmPmLowercase":return sd(l(LM,e,t,r));case"HourMilitaryNumber":return Ni(f(uM,t,r));case"HourMilitaryFixed":return f(zM,2,f(uM,t,r));case"HourNumber":return Ni(YM(f(uM,t,r)));case"HourFixed":return f(zM,2,YM(f(uM,t,r)));case"HourMilitaryFromOneNumber":return Ni(1+f(uM,t,r));case"HourMilitaryFromOneFixed":return f(zM,2,1+f(uM,t,r));case"MinuteNumber":return Ni(f(cM,t,r));case"MinuteFixed":return f(zM,2,f(cM,t,r));case"SecondNumber":return Ni(f(wM,t,r));case"SecondFixed":return f(zM,2,f(wM,t,r));case"MillisecondNumber":return Ni(f(sM,t,r));case"MillisecondFixed":return f(zM,3,f(sM,t,r));default:return n.a}}),eF=a(function(e,t,r,n){return f(Ri,"",f(xa,l(ZM,e,r,n),t))}),tF=o(function(e,t,r,n,a,i){return{toAmPm:a,toMonthAbbreviation:t,toMonthName:e,toOrdinalSuffix:i,toWeekdayAbbreviation:n,toWeekdayName:r}}),rF=function(e){return e>11?"pm":"am"},nF=function(e){switch(e.$){case"Jan":return"January";case"Feb":return"February";case"Mar":return"March";case"Apr":return"April";case"May":return"May";case"Jun":return"June";case"Jul":return"July";case"Aug":return"August";case"Sep":return"September";case"Oct":return"October";case"Nov":return"November";default:return"December"}},aF=function(e){switch(f(_s,100,e)){case 11:case 12:case 13:return"th";default:switch(f(_s,10,e)){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}}},iF=function(e){switch(e.$){case"Mon":return"Monday";case"Tue":return"Tuesday";case"Wed":return"Wednesday";case"Thu":return"Thursday";case"Fri":return"Friday";case"Sat":return"Saturday";default:return"Sunday"}},oF=p(tF,nF,f(zo,nF,ru(3)),iF,f(zo,iF,ru(3)),rF,aF),uF=eF(oF),sF={$:"MonthNameFull"},cF=sF,fF=function(e){return{$:"Text",a:e}},lF=fF,dF={$:"YearNumber"},hF=dF,pF=n(function(e,t,n){var a=r(function(e,t){return f(ON,M([bN(18),kN(6)]),M([f(Kk,M([_N]),fl(e)),f(Kk,M([nM]),fl(t))]))}),i=uF(M([cF,lF(", "),hF])),o=f(ON,M([kN(23),ET(jk)]),U(f(xa,function(e){var t=e.a,r=e.b;return f(a,t,r)},M([L("First Trade",function(){var e=n.firstTrade;if("Just"===e.$){var t=e.a;return f(i,rM,t)}return"No Committed Trades yet!"}()),L("Release Outcomes",Ni(n.numReleases)+" trades / "+u$(n.amountReleased)+" "+NR(e)+" Released"),L("Abort Outcomes",Ni(n.numAborts)+" trades"),L("Burn Outcomes",Ni(n.numBurns)+" trades / "+u$(n.amountBurned)+" "+NR(e)+" Burned")])),M([f(Kk,M([wN]),f(eM,"View User History",tM(n.asRole)))])));return f(ON,M([cN(8),cU,fU,Wk(IR),kN(1),Q$({blur:20,color:d(YR,0,0,0,.08),offset:L(0,0),size:0})]),M([f(Kk,M([ET(jk),Wk(tN),aR(17)]),f(E$,18,t)),f(Kk,M([ET(jk),Wk(tN),aR(17)]),o)]))}),gF=n(function(e,t,r){var n=l(ZO,t,e.parameters.initiatorRole,e.parameters.initiatorAddress),a=jO(e.parameters.initiatorRole)+" Stats";return f(Kk,r?M([ZL(f(Kk,M([ex(30),PN]),l(pF,e.factory,e.parameters.initiatorAddress,n)))]):yr,f(nx,a,f(VN,M([ET(jk),kN(20),uN,pN(QO)]),f(xa,VN(M([kN(5)])),M([M([f(dR,M([yT(zk(28))]),JO),f(Kk,M([bN(24),gR,bA(zO)]),fl(l(Rs,2,P("0"),Ni(n.numReleases))))]),M([f(dR,M([yT(zk(28))]),YO),f(Kk,M([bN(24),gR,bA(qO)]),fl(l(Rs,2,P("0"),Ni(n.numAborts))))]),M([f(dR,M([yT(zk(28))]),WO),f(Kk,M([bN(24),gR,bA(GO)]),fl(l(Rs,2,P("0"),Ni(n.numBurns))))])])))))}),vF=r(function(e,t){if("Token"===e.$){if("EthDai"===e.a.$){e.a;return"https://etherscan.io/address/"+dl(t)}e.a;return"https://kovan.etherscan.io/address/"+dl(t)}switch(e.a.$){case"Eth":e.a;return"https://etherscan.io/address/"+dl(t);case"Kovan":e.a;return"https://kovan.etherscan.io/address/"+dl(t);default:e.a;return"https://blockscout.com/poa/dai/address/"+dl(t)}}),yF=n(function(e,t,r){return f(dA,e,{label:fl(dl(r)),url:f(vF,t,r)})}),mF=function(e){return f(nx,"Trade Status",f(ON,M([bN(24),gR,kN(8)]),M([fl(function(){switch(e.state.phase.$){case"Open":return"Buyer"===e.parameters.initiatorRole.$?"Open Buy Offer":"Open Sell Offer";case"Committed":return"Committed";case"Judgment":return"Judgment";default:return"Closed"}}()),l(yF,M([bN(12),bA(A_),iL]),e.factory,e.creationInfo.address)])))},bF=i(function(e,t,r,n,a){return MO(M([mF(t),f(VO,t,r),HO(t),l(gF,t,n,a)]))}),CF=l(Ok,9,32,107),EF=uR({description:"chat",src:"/DAIHard/static/img/chat.svg"}),SF=f(Kk,M([cN(4),uN,pN(_O),aR(5),Wk(l(Ok,22,0,255))]),f(dR,M([ET(zk(42))]),EF)),TF=function(e){switch(e.$){case"NotClosed":return"";case"Recalled":return"Recalled";case"Aborted":return"Aborted";case"Released":return"Released";default:return"Burned"}},wF=function(e){return f(ON,M([cN(12),Wk(IR),aR(15),kN(15)]),M([f(Kk,M([bN(24),vN,b$]),fl("Fiat Payment Method")),f($N,M([bN(18),yT(bT),Wk(tN),Q$({blur:5,color:d(YR,0,0,0,.2),offset:L(-3,3),size:0}),cN(3),aR(5)]),M([f(xc,f(Kk,M([bA(FD),b$]),fl("No payment methods found.")),f(Bo,fl,f(Bo,function(e){return e.info},Ql(e))))]))]))},IF={$:"Active"},AF=function(e){return{$:"ExpandPhase",a:e}},BF=M([Wk(CF),bA(tN)]),kF=r(function(e,t){return{$:"Min",a:e,b:t}}),NF=r(function(e,t){return f(kF,e,t)}),RF=function(e){return M(e?[cN(12),c_,yT(f(NF,380,bT))]:[cN(12),wN])},$F=M([Wk(tN)]),_F=uR({description:"flame",src:"/DAIHard/static/img/flame.png"}),LF=r(function(e,t){return Hl(f(ds,jl(e),jl(t)))}),xF=r(function(e,t){return d(Z_,x(d(YR,1,.6,.2,1),d(YR,1,.6,.2,.8),d(YR,1,.6,.2,.6)),tN,e,t)}),PF=n(function(e,t,r){return{$:"CommitClicked",a:e,b:t,c:r}}),DF=function(e){return{$:"ContractActionClicked",a:e}},UF={$:"Web3Connect"},OF=n(function(e,t,r){var n=Gd(r);if("Just"===n.$){var a=n.a;return"TimeUp"===f(xR,e,t).$?qk:f(VN,M([kN(8)]),function(){var e=x(t.state.phase,f(Ao,t,a.address),f(ko,t,a.address));e:for(;;)switch(e.a.$){case"Open":if("Just"===e.b.$){if("Initiator"===e.b.a.$){e.a,e.b.a;return M([f(Yi,sS,f(eM,"Remove and Refund this Trade",oS))])}break e}var r=(e.a,e.b,jl(Vb(t.parameters)));return M([f(eL,"Deposit and Commit to Trade",l(PF,t,a,r))]);case"Committed":if("Just"===e.c.$){if("Buyer"===e.c.a.$){e.a,e.c.a;return M([f(Yi,DF,f(xF,"Abort Trade",GE)),f(Yi,DF,f(eL,"Confirm Payment",ZE)),SF])}e.a,e.c.a;return M([SF])}break e;case"Judgment":if("Just"===e.c.$){if("Seller"===e.c.a.$){e.a,e.c.a;return M([f(Yi,DF,f(eL,"Burn it All!",XE)),f(Yi,DF,f(eM,"Release Everything",uS)),SF])}e.a,e.c.a;return M([SF])}break e;default:break e}return yr}())}return f(eL,"Connect to Wallet",UF)}),MF={$:"Finished"},FF={$:"NotStarted"},VF=r(function(e,t){var r=L(ER(t),ER(e.state.phase)),n=r.a,a=r.b;return _(n,a)>0?FF:R(n,a)?IF:MF}),KF=n(function(e,t,r){for(;;){if(t<=0)return e;var n=f(ka,r,e),a=t-1,i=r;e=n,t=a,r=i}}),HF=r(function(e,t){return l(KF,yr,e,t)}),jF=a(function(e,t,r,n){var a=u$(f(fh,r.parameters.tradeAmount,r.parameters.buyerDeposit))+" "+NR(r.factory),i=u$(r.parameters.tradeAmount)+" "+NR(r.factory),o=f(VN,yr,f(HF,3,f(dR,M([yT(zk(18))]),_F))),u=f(Da,Kk(M([bA(l(pA,1,0,0))])),fl),s=R(e,r.state.phase),c=f(Io,ko(r),f(Bo,function(e){return e.address},Gd(n))),d=s?tN:DR,h=$N(M([bA(d),bN(18),vN])),p=PO(r.terms.price),g=s?l(Ok,0,226,255):l(Ok,16,7,234),v=f(Da,Kk(M([bA(g)])),fl),y=u$(r.parameters.buyerDeposit)+" "+NR(r.factory),m=r.parameters.abortPunishment,b=u$(m)+" "+NR(r.factory),C=u$(f(LF,r.parameters.buyerDeposit,m))+" "+NR(r.factory),E=u$(f(LF,r.parameters.tradeAmount,m))+" "+NR(r.factory),S=function(){var t=L(e,c);if("Just"===t.b.$)switch(t.a.$){case"Open":var n=(t.a,t.b.a);return L("And Now, We Wait",function(){return"Buyer"===n.$?f(xa,h,M([M([fl("Your "),u("burnable deposit"),fl(" of "),v(y),fl(" is now held in this contract, and your offer to buy "),v(i),fl(" for "),v(p),fl(" is now listed in the marketplace.")]),M([fl("If another user likes your offer, they can become the Seller by depositing the full "),v(i),fl(" into this contract.")]),M([fl("If no one commits within the Open Window, your offer will expire, refunding the "),v(y),fl(" to you.")])])):f(xa,h,M([M([fl("Your offer to sell the "),v(i),fl(" held in this contract for "),v(p),fl(" is now listed in the marketplace.")]),M([fl("If another user likes your offer, they can become the Buyer by depositing a "),u("burnable deposit"),fl(" of 1/3 of the trade amount "),v("("+y+")"),fl(" into this contract.")]),M([fl("If no one commits within the Open Window, your offer will expire, refunding the "),v(i),fl(" to you.")])]))}());case"Committed":if("Buyer"===t.b.a.$){t.a,t.b.a;return L("Time to Pay Up",f(xa,h,M([M([fl("You must now pay the Seller "),v(p),fl(" via the Fiat Payment Method, "),f(Kk,M([vN]),fl("and then click ")),u("Confirm Payment"),fl(" before the payment window runs out. Use the chat to coordinate.")]),M([fl("If you abort the trade, or do not confirm payment before this time is up, "),v(b),fl(" (1/4 of the "),u("burnable deposit"),fl(") will be "),u("burned"),fl(" from both parties, while the remainder of each party's deposit is refunded ("),v(E),fl(" to the Seller, "),v(C),fl(" to you).")]),M([fl("This may be your last chance to clear up any ambiguity before Judgement. Do not confirm unless you're sure the "),v(p),fl(" has been unmistakably transferred.")])])))}t.a,t.b.a;return L("Time to Get Paid",f(xa,h,M([M([fl("Work and communicate with the Buyer to receive "),v(p),fl(" as described in Fiat Payment Method. Then, the Buyer should confirm the payment, moving the trade to the final phase.")]),M([fl("If the Buyer aborts the trade, or doesn't confirm payment before this time is up, "),v(b),fl(" (1/4 of the "),u("burnable deposit"),fl(") will be "),u("burned"),fl(" from both parties, while the remainder of each party's deposit is refunded ("),v(E),fl(" to you, "),v(C),fl(" to the Buyer).")])])));case"Judgment":if("Buyer"===t.b.a.$){t.a,t.b.a;return L("Judgement",f(xa,h,M([M([fl("If the Seller confirms receipt of payment, or fails to decide within the Burn/Release Window, the combined balance of "),v(a),fl(" will be released to you.")]),M([fl("If they cannot confirm they've received payment from you, they will probably instead "),u("burn the contract's balance of "),v(a),u("."),fl(" In this case the "),v(a),fl(" will be lost to both parties.")]),M([fl("These are the only options the Seller has. So, fingers crossed!")])])))}t.a,t.b.a;return L("Judgement",f(xa,h,M([M([fl("By pushing the contract to the final stage, the Buyer has indicated that the transfer has taken place, and awaits your judgement.")]),M([fl("So, have you recieved the "),v(p),fl("? If so, you can click "),v("Release Everything"),fl(".")]),M([fl("If not, the Buyer is probably trying to scam you, and you should probably "),u("burn it all"),fl(". You're not getting it back either way, and you wouldn't want the other guy to get it, would you?")]),M([fl("If you don't decide within the Burn/Release Window, the balance will be automatically released.")])])));default:t.a;return L("Contract closed.",M([h(M([fl("Check the chat log for the full history.")]))]))}else switch(t.a.$){case"Open":t.a,t.b;return L("Get it while it's hot",function(){return"Seller"===r.parameters.initiatorRole.$?f(xa,h,M([M([fl("The Seller has deposited "),v(i),fl(" into this contract, and offers to sell it for "),v(p),fl(". To become the Buyer, you must deposit 1/3 of the trade amount "),v("("+y+")"),fl(" into this contract by clicking "),u("Deposit and Commit to Trade"),fl(".")]),M([fl("If the trade is successful, the combined "+NR(r.factory)+" balance "),v("("+a+")"),fl(" will be released to you. If anything goes wrong, there are "),u("burnable punishments "),o,fl(" for both parties (see Payment Window for more on this).")]),M([fl("Don't commit unless you can fulfil one of the seller’s accepted payment methods below for "),v(p),fl(" within the payment window.")])])):f(xa,h,M([M([fl("The Buyer is offering to buy "),v(i),fl(" for "),v(p),fl(", and has deposited "),v(y),fl(" into this contract as a "),u("burnable deposit"),fl(". To become the Seller, deposit "),v(i),fl(" into this contract by clicking "),u("Deposit and Commit to Trade"),fl(".")]),M([fl("When you receive the "),v(p),fl(" from the Buyer, the combined "+NR(r.factory)+" balance "),v("("+a+")"),fl(" will be released to the Buyer. If anything goes wrong, there are "),u("burnable punishments "),o,fl(" for both parties (see Payment Window for more on this).")]),M([fl("Don't commit unless you can receive "),v(p),fl(" via one of the Buyer's payment methods below, within the payment window.")])]))}());case"Committed":t.a,t.b;return L("Making the Payment",f(xa,h,M([M([fl("During this phase, the Buyer is expected to transfer "),v(p),fl(" to the Seller, as described in Fiat Payment Method, "),f(Kk,M([vN]),fl("and ")),u("Confirm the Payment "),fl(" before the payment window runs out. This would move the trade to the final phase.")]),M([fl("If the Buyer aborts the trade, or doesn't confirm payment before this time is up, "),v(b),fl(" (1/4 of the "),u("burnable deposit"),fl(" amount) will be "),u("burned"),fl(" from both parties, while the remainder of each party's deposit is refunded ("),v(E),fl(" to the Seller, "),v(C),fl(" to the Buyer).")])])));case"Judgment":t.a,t.b;return L("Judgement",f(xa,h,M([M([fl("The Buyer has indicated that the transfer has taken place, and awaits the Seller's judgement on the fact of the matter.")]),M([fl("If the Seller can verify he has received the "),v(p),fl(", he will probably release the total balance of "),v(i),fl(" to the Buyer. If he cannot verify payment, he will probably instead "),u("burn it all"),fl(".")]),M([fl("If the Seller has not made a decision before the Burn/Release Window expires, the "),v(i),fl(" will be automaticall released.")])])));default:t.a,t.b;return L("Contract closed.",yr)}}(),T=S.a,w=S.b;return f(ON,M([ET(jk),yT(jk),aR(20),kN(30)]),M([f(VN,M([ET(jk)]),M([f(Kk,M([bN(24),vN,bA(g),k$]),fl(T))])),f(ON,M([ET(jk),eR,kN(13)]),w),f(Kk,M([PN]),function(){switch(f(VF,r,e).$){case"Active":return l(OF,t,r,n);case"NotStarted":return f(Kk,M([bN(20),vN,b$,bA(CR)]),fl("Phase not yet started."));default:return f(Kk,M([bN(20),vN,b$]),fl("Phase no longer active."))}}())]))}),qF=function(e){switch(e.$){case"Open":return"Expiring...";case"Committed":return"Aborting...";case"Judgment":return"Releasing...";default:return""}},GF=uR({description:"committed phase",src:"/DAIHard/static/img/phase-committed.svg"}),zF=uR({description:"judgment phase",src:"/DAIHard/static/img/time-clock-fire.svg"}),YF={$:"None"},WF=YF,JF=uR({description:"open phase",src:"/DAIHard/static/img/diamond-give-white.svg"}),QF=function(e){switch(e.$){case"Open":return JF;case"Committed":return GF;case"Judgment":return zF;default:return WF}},XF=a(function(e,t,r,n){return{$:"RgbaSpace",a:e,b:t,c:r,d:n}}),ZF=a(function(e,t,r,n){return d(XF,e,t,r,n)}),eV=function(e){var t=e.a,r=e.b,n=e.c;return{alpha:e.d,blue:n,green:r,red:t}},tV=function(e){return function(e){return d(ZF,e.red,e.green,e.blue,e.alpha)}(eV(e))},rV=function(e){return{$:"Circle",a:e}},nV=rV,aV=d(XF,0,0,0,1),iV={$:"Flat"},oV={$:"Sharp"},uV=function(e){return{$:"Uniform",a:e}},sV=uV,cV={cap:iV,dashPattern:yr,dashPhase:0,fill:sV(aV),join:oV,thickness:2},fV=n(function(e,t,r){return D(cV,{dashPattern:e,fill:r,thickness:t})}),lV=fV(yr),dV={$:"Transparent"},hV=dV,pV=f(lV,0,hV),gV=r(function(e,t){return{$:"Shape",a:e,b:t}}),vV=function(e){return{basic:e,handlers:yr,name:ci,opacity:1,rotation:0,scale:L(1,1),shift:L(0,0)}},yV=function(e){return f(Da,vV,gV(e))},mV=function(e){return yV(L(e,pV))},bV=function(e){return L(-e.a,-e.b)},CV=r(function(e,t){var r=e.a,n=e.b,a=t.shift;return D(t,{shift:L(a.a+r,a.b+n)})}),EV=r(function(e,t){return f(CV,bV(e(t)),t)}),SV=function(e){var t=r(function(e,t){var r=e.a,n=e.b,a=t.a,i=t.b;return L(f(ka,r,a),f(ka,n,i))});return l(La,t,L(yr,yr),e)},TV=r(function(e,t){return{$:"Path",a:e,b:t}}),wV=kr,IV=Nr,AV=function(e){var t=e.shift,r=e.scale,n=e.rotation,a=function(e){var t=e.a,r=e.b,a=IV(n),i=wV(n);return L(i*t-a*r,a*t+i*r)},i=r,o=i.a,u=i.b,s=function(e){var t=e.a,r=e.b;return L(o*t,u*r)},c=t,l=c.a,d=c.b;return f(Da,f(Da,function(e){var t=e.a,r=e.b;return L(t+l,r+d)},s),a)},BV=function(e){return xa(function(t){var r=t.a,n=t.b,a=e/2;return L(r<0?r-a:r+a,n<0?n-a:n+a)})},kV=r(function(e,t){var r=t.a,n=t.b,a=n/2,i=r/2;return f(BV,e,M([L(-i,-a),L(i,-a),L(i,a),L(-i,a)]))}),NV=function(e){var t=e.toTop,r=e.toBottom,n=e.toRight,a=e.toLeft;return M([L(-a,-r),L(n,-r),L(n,t),L(-a,t)])},RV=function(e){var t=$V(e.basic),r=SV(f(xa,AV(e),t)),n=r.a,a=r.b;return{toBottom:-f(xc,0,gI(a)),toLeft:-f(xc,0,gI(n)),toRight:f(xc,0,pI(n)),toTop:f(xc,0,pI(a))}},$V=function(e){e:for(;;)switch(e.$){case"Shape":switch(e.b.$){case"Circle":var t=e.a,r=t.b.thickness,n=e.b.a,a=2*n;return f(kV,r,L(a,a));case"Ellipse":var i=e.a,r=i.b.thickness,o=e.b,u=o.a,s=o.b;return f(kV,r,L(2*u,2*s));case"Rectangle":var c=e.a,r=c.b.thickness,l=e.b,d=l.a,h=l.b;return f(kV,r,L(d,h));case"Polygon":var p=e.a,r=p.b.thickness,g=e.b.a;return f(BV,r,g);default:var v=e.a,y=v.b,m=e.b.a,b=f(TV,y,m);e=b;continue e}case"Path":var r=e.a.thickness,C=e.a.cap,g=e.b.a;return f(BV,R(C,iV)?0:r,g);case"Text":case"Image":case"Html":var E=e.a;return f(kV,0,E);case"Group":var S=e.a;return f(BV,0,ay(f(xa,f(zo,RV,NV),S)));default:var T=e.b;return f(BV,0,NV(RV(T)))}},_V=function(e){var t=RV(e);return t.toTop+t.toBottom},LV=function(e){var t=RV(e);return L(-t.toLeft,t.toTop)},xV=function(e){var t=RV(e);return t.toLeft+t.toRight},PV=En("http://www.w3.org/2000/svg"),DV=PV("svg"),UV=Nn("height"),OV=Nn("version"),MV=Nn("width"),FV=PV("circle"),VV=PV("ellipse"),KV=PV("foreignObject"),HV=PV("g"),jV=PV("image"),qV=PV("polygon"),GV=PV("polyline"),zV=PV("rect"),YV=Tw,WV=PV("text"),JV=Nn("id"),QV=Nn("points"),XV=Nn("r"),ZV=Nn("rx"),eK=Nn("ry"),tK=function(e){return l(Rn,"http://www.w3.org/1999/xlink","xlink:href",tt(e))},rK=function(e){return{$:"Group",a:e}},nK=Nn("dominant-baseline"),aK=Nn("fill"),iK=Nn("fill-opacity"),oK=Nn("font-family"),uK=Nn("font-size"),sK=Nn("font-style"),cK=Nn("font-variant"),fK=Nn("font-weight"),lK=Nn("opacity"),dK=Nn("stroke"),hK=Nn("stroke-dasharray"),pK=Nn("stroke-dashoffset"),gK=Nn("stroke-linecap"),vK=Nn("stroke-linejoin"),yK=Nn("stroke-opacity"),mK=Nn("stroke-width"),bK=Nn("text-anchor"),CK=Nn("text-decoration"),EK=Nn("transform"),SK=function(e){switch(e.$){case"Round":return"round";case"Padded":return"square";default:return"butt"}},TK=function(e){return f(Ri," ",f(xa,function(e){var t=e.a,r=e.b;return f(Ri,",",M([Ni(t),Ni(r)]))},e))},wK=n(function(e,t,r){return d(XF,e,t,r,1)}),IK=function(e){var t=e.a,r=e.b,n=e.c,a=e.d,i=function(e){return sv(1e4*e)/100};return Cd(M(["rgba(",mw(i(t)),"%,",mw(i(r)),"%,",mw(i(n)),"%,",mw(function(e){return sv(1e3*e)/1e3}(a)),")"]))},AK=function(e){var t=e.a,r=e.b,n=e.c;return{alpha:e.d,blue:n,green:r,red:t}},BK=function(e){var t=AK(e),r=t.red,n=t.green,a=t.blue;return IK(l(wK,r,n,a))},kK=function(e){if("Uniform"===e.$){var t=e.a;return BK(t)}return"none"},NK=function(e){var t=AK(e),r=t.alpha;return mw(r)},RK=function(e){if("Uniform"===e.$){var t=e.a;return NK(t)}return"0"},$K=function(e){switch(e.$){case"Smooth":return"round";case"Sharp":return"miter";default:return"bevel"}},_K=function(e){var t=mw(e.scale.b),r=mw(e.scale.a),n=mw(-e.rotation/2/F$*360),a=mw(-e.shift.b),i=mw(e.shift.a);return Cd(M(["translate(",i,",",a,") scale(",r,",",t,") rotate(",n,")"]))},LK=function(e){var t=e.basic;switch(t.$){case"Path":var r=t.a;return M([dK(kK(r.fill)),yK(RK(r.fill)),mK(mw(r.thickness)),gK(SK(r.cap)),vK($K(r.join)),aK("none"),lK(mw(e.opacity)),EK(_K(e)),pK(Ni(r.dashPhase)),hK(TK(r.dashPattern))]);case"Shape":var n=t.a,a=n.a,r=n.b;return M([aK(kK(a)),iK(RK(a)),dK(kK(r.fill)),yK(RK(r.fill)),mK(mw(r.thickness)),gK(SK(r.cap)),vK($K(r.join)),lK(mw(e.opacity)),EK(_K(e)),pK(Ni(r.dashPhase)),hK(TK(r.dashPattern))]);case"Text":var i=t.b,o=i.a;i.b;return M([aK(kK(uV(o.color))),oK(function(){var e=o.typeface;switch(e.$){case"Serif":return"serif";case"Sansserif":return"sans-serif";case"Monospace":return"monospace";default:return e.a}}()),uK(Ni(o.size)),fK(function(){switch(o.weight.$){case"Thin":return"200";case"Light":return"300";case"Regular":return"normal";case"Medium":return"500";case"SemiBold":return"600";case"Bold":return"bold";default:return"800"}}()),sK(function(){switch(o.shape.$){case"Upright":case"SmallCaps":return"normal";case"Slanted":return"oblique";default:return"italic"}}()),cK(function(){return"SmallCaps"===o.shape.$?"small-caps":"normal"}()),CK(function(){switch(o.line.$){case"None":return"none";case"Under":return"underline";case"Over":return"overline";default:return"line-through"}}()),bK("middle"),nK("middle"),EK(_K(e))]);default:return M([EK(_K(e))])}},xK=Nn("x"),PK=Nn("y"),DK=r(function(e,t){return M([MV(mw(e)),UV(mw(t)),xK(mw(-e/2)),PK(mw(-t/2))])}),UK=function(e){return f(Ri," ",f(xa,function(e){var t=e.a,r=e.b;return f(Ri,",",M([mw(t),mw(-r)]))},e))},OK=dN,MK=r(function(e,t){return f(e,t.a,t.b)}),FK=function(e){return f(xa,MK(OK),e)},VK=function(e){e:for(;;){var t=f(xc,"_unnamed_",e.name),n=e.basic;switch(n.$){case"Path":var a=(n.a,n.b),i=a.a;return f(GV,U(M([JV(t),QV(UK(i))]),U(LK(e),FK(e.handlers))),yr);case"Shape":var o=n.a,u=(o.a,o.b),s=n.b;switch(s.$){case"Polygon":var i=s.a;return f(qV,U(M([JV(t),QV(UK(i))]),U(LK(e),FK(e.handlers))),yr);case"Circle":var c=s.a;return f(FV,U(M([JV(t),XV(mw(c))]),U(LK(e),FK(e.handlers))),yr);case"Ellipse":var d=s.a,h=s.b;return f(VV,U(M([JV(t),ZV(mw(d)),eK(mw(h))]),U(LK(e),FK(e.handlers))),yr);case"Rectangle":var p=s.a,g=s.b,c=s.c;return f(zV,U(M([JV(t),ZV(mw(c)),eK(mw(c))]),U(f(DK,p,g),U(LK(e),FK(e.handlers)))),yr);default:var a=s.a,v=D(e,{basic:f(TV,u,a)});e=v;continue e}case"Text":var y=n.b,m=(y.a,y.b);return f(WV,U(M([JV(t)]),U(LK(e),FK(e.handlers))),M([YV(m)]));case"Image":var b=n.a,p=b.a,g=b.b,C=n.b;return f(jV,U(M([JV(t),tK(C)]),U(f(DK,p,g),U(LK(e),FK(e.handlers)))),yr);case"Html":var E=n.a,p=E.a,g=E.b,S=n.b;return f(KV,U(M([JV(t)]),U(f(DK,p,g),U(LK(e),FK(e.handlers)))),M([S]));case"Group":var T=n.a;return f(HV,f(ka,JV(t),U(LK(e),FK(e.handlers))),l(Ra,r(function(e,t){return f(ka,VK(e),t)}),yr,T));default:var w=n.a,I=n.b,v=D(e,{basic:rK(M([w,I]))});e=v;continue e}}},KK=r(function(e,t){var r=e.a,n=e.b,a=mw(r),i=mw(n);return f(jT,yr,M([f(DV,M([MV(a),UV(i),OV("1.1")]),M([VK(t)]))]))}),HK=function(e){return f(KK,L(xV(e),_V(e)),f(EV,LV,e))},jK=r(function(e,t){var r=QF(e),n=function(){switch(t.$){case"NotStarted":return l(Ok,10,33,108);case"Active":return l(Ok,0,100,170);default:return l(Ok,1,129,104)}}(),a=px(HK(f(mV,sV(tV(n)),nV(50))));return f(Kk,M([wN,m_(f(dR,M([wN,eR,yT(zk(60))]),r))]),a)}),qK=function(e){var t=M([b$,vN,bN(20)]);switch(e.$){case"Active":return f(Kk,U(t,M([bA(EN)])),fl("Active"));case"NotStarted":return f(Kk,U(t,M([bA(CR)])),fl("Not Started"));default:return f(Kk,t,fl("Finished"))}},GK=n(function(e,t,r){var n=f(VF,t,e),a=function(){return"Active"===n.$?l(Ok,0,226,255):DR}(),i=f(Kk,M([bA(a),bN(20),vN,wN]),fl(function(){switch(e.$){case"Open":return"Open Window";case"Committed":return"Payment Window";case"Judgment":return"Burn/Release Window";default:return"Closed"}}())),o=function(){if("Closed"===e.$)return qk;switch(n.$){case"NotStarted":return d(ZR,M([wN]),M([bN(22),gR]),L(DR,IR),f(_R,e,t));case"Active":var a=f(xR,r,t);if("TimeLeft"===a.$){var i=a.a;return d(o$,M([wN]),M([bN(22),gR]),L(tN,IR),i)}return f(ON,M([wN,kN(10)]),M([f(Kk,M([wN]),fl(qF(e))),f(eM,"Poke",sS(iS))]));default:return f(Kk,M([yT(zk(1))]),qk)}}();return f(ON,M([aR(20),kN(10),yT(jk)]),M([f(Kk,M([c_,wN]),i),f(Kk,M([yT(jk),wN]),f(Kk,M([eR]),f(jK,e,n))),f(ON,M([kN(10),aL,wN]),M([f(Kk,M([wN]),qK(n)),o]))]))}),zK=o(function(e,t,r,n,a,i){var o=f(VF,r,t),u=f(Kk,M([aR(10),ET(jk),yT(jk)]),d(jF,t,i,r,n)),s=function(){switch(t.$){case"Open":return r.parameters.autorecallInterval;case"Committed":return r.parameters.autoabortInterval;case"Judgment":return r.parameters.autoreleaseInterval;default:return Vl(0)}}(),c=l(GK,t,r,i),h=(function(){switch(o.$){case"NotStarted":return s;case"Active":return f(LR,f(qb,r.state.phaseStartTime,s),i);default:Vl(0)}}(),f(Kk,M([yT(jk),ET(zk(1)),Wk(function(){return"Active"===o.$?l(pA,0,0,1):IR}())]),qk)),p=a?f(VN,U(RF(e),U(R(o,IF)?BF:$F,M([ET(jk)]))),M([c,h,u])):f(VN,U(RF(e),U(R(o,IF)?BF:$F,M([uN,pN(AF(t))]))),M([c]));return!e&&R(o,IF)?f(ON,M([ET(jk),kN(20),m$({bottom:20,left:0,right:0,top:0})]),M([p,wF(r.terms.paymentMethods)])):p}),YK=i(function(e,t,r,n,a){return"Closed"===t.state.phase.$?f(VN,M([wN,cN(12),aR(30),kN(10),Wk(CF),bN(24),vN,bA(tN)]),M([fl("Trade "+TF(t.state.closedReason)),SF])):e?f(ON,M([ET(jk),kN(10)]),M([f(VN,M([ET(jk),yT(bT),kN(20)]),M([p(zK,e,Co,t,n,R(r,Co),a),p(zK,e,mo,t,n,R(r,mo),a),p(zK,e,bo,t,n,R(r,bo),a)])),wF(t.terms.paymentMethods)])):f(ON,M([ET(jk),yT(bT),kN(20)]),M([p(zK,e,Co,t,n,R(r,Co),a),p(zK,e,mo,t,n,R(r,mo),a),p(zK,e,bo,t,n,R(r,bo),a)]))}),WK=a(function(e,t,r,n){var a=e>1300;return L(function(){var e=n.trade;switch(e.$){case"LoadedTrade":var i=e.a;return f(ON,M([ET(jk),yT(jk),kN(40)]),M([h(bF,t,i,n.wallet,r,n.showStatsModal),f(Kk,M([ET(jk),f(aN,40,0),kN(40)]),h(YK,a,i,n.expandedPhase,n.wallet,t))]));case"PartiallyLoadedTrade":e.a;return f(Kk,M([wN,eR,bN(30)]),fl("Loading trade info..."));default:return f(Kk,M([wN,eR,bN(30)]),fl("Invalid trade"))}}(),M([LO(n),OO(n)]))}),JK=n(function(e,t,r){var n=r.a,a=r.b;return L(e(n),t(a))}),QK=r(function(e,t){var r=function(){var r=t.submodel;switch(r.$){case"BetaLandingPage":return L($U,yr);case"CreateModel":var n=r.a;return L(f(Yi,Uy,EU(n)),yr);case"TradeModel":var a=r.a;return l(JK,Yi(Fy),xa(Yi(Fy)),d(WK,e,t.time,t.tradeCaches,a));case"MarketplaceModel":var i=r.a;return L(f(Yi,fT,l(CO,t.time,t.tradeCaches,i)),yr);default:var o=r.a;return L(f(Yi,oT,l(C_,t.time,t.tradeCaches,o)),yr)}}(),n=r.a,a=r.b;return L(f(Kk,M([ET(jk),yT(jk),cN(10)]),n),a)}),XK=function(e){return{$:"DismissNotice",a:e}},ZK=function(e){return f(j$,ZU,eO(e))},eH=function(e){var t=e.a,n=e.b,a=function(){return"Error"===n.noticeType.$?l(pA,1,1,1):l(pA,0,0,0)}(),i=function(){switch(n.noticeType.$){case"Update":return l(Ok,100,200,255);case"Caution":return l(Ok,255,188,0);case"Error":return l(Ok,255,70,70);default:return l(Ok,200,200,200)}}(),o=f(Kk,M([PN,c_,q$(5),ZK(5)]),B_(XK(t)));return f(Kk,M([Wk(i),cN(10),aR(8),ET(jk),p$(1),d$(d(YR,0,0,0,.15)),HD]),f(ON,M([kN(4),ET(jk)]),f(Bi,r(function(e,t){return f($N,M([ET(jk),bA(a)]),e?t:f(ka,o,t))}),n.mainParagraphs)))},tH=function(e){return R(e,yr)?yr:M([f(ON,M([tO(20),q$(20),kN(10),PN,aL,ET(zk(300)),bN(15)]),f(xa,eH,f(ml,function(e){return R(e.b.align,ul)},f(Bi,r(function(e,t){return L(e,t)}),e)))),f(ON,M([ZK(20),ex(100),kN(10),k$,c_,ET(zk(300)),bN(15)]),f(xa,eH,f(ml,function(e){return R(e.b.align,EB)},f(Bi,r(function(e,t){return L(e,t)}),e))))])},rH=r(function(e,t){var r=f(QK,e,t),n=r.a,a=r.b;return L(f(ON,M([r$(Jk),m_(KN(t)),ET(jk),yT(jk),aR(30)]),M([f(Kk,M([yT(zk(50))]),qk),n])),U(a,tH(t.userNotices)))}),nH=r(function(e,t){return{$:"OnlyDynamic",a:e,b:t}}),aH=r(function(e,t){return{$:"StaticRootAndDynamic",a:e,b:t}}),iH={$:"AllowHover"},oH={$:"Layout"},uH={backgroundColor:ci,borderColor:ci,shadow:si({blur:3,color:d(hA,155/255,203/255,1,1),offset:L(0,0),size:3})},sH=function(e){var t=r(function(e,t){switch(e.$){case"HoverOption":var r=e.a;return"Nothing"===t.hover.$?D(t,{hover:si(r)}):t;case"FocusStyleOption":var n=e.a;return"Nothing"===t.focus.$?D(t,{focus:si(n)}):t;default:var a=e.a;return"Nothing"===t.mode.$?D(t,{mode:si(a)}):t}});return function(e){return{focus:function(){var t=e.focus;return"Nothing"===t.$?uH:t.a}(),hover:function(){var t=e.hover;return"Nothing"===t.$?iH:t.a}(),mode:function(){var t=e.mode;return"Nothing"===t.$?oH:t.a}()}}(l(La,t,{focus:ci,hover:ci,mode:ci},e))},cH=r(function(e,t){switch(t.$){case"Unstyled":var r=t.a;return r(AT);case"Styled":var n=t.a.styles,r=t.a.html;return f(r,e(n),AT);case"Text":var a=t.a;return $I(a);default:return $I("")}}),fH=n(function(e,t,r){var n=sH(e),a=function(){return"NoStaticStyleSheet"===n.mode.$?nH(n):aH(n)}();return f(cH,a,d(fA,AT,Vk,t,wT(M([r]))))}),lH=ZT(5),dH=r(function(e,t){return{$:"FontFamily",a:e,b:t}}),hH={$:"SansSerif"},pH=function(e){return{$:"Typeface",a:e}},gH=Y,vH=r(function(e,t){return U(t,function(){switch(e.$){case"Serif":return"serif";case"SansSerif":return"sans-serif";case"Monospace":return"monospace";case"Typeface":var t=e.a;return f(Ri,"-",gH(sd(t)));case"ImportFont":var t=e.a;e.b;return f(Ri,"-",gH(sd(t)));default:var t=e.a.name;return f(Ri,"-",gH(sd(t)))}}())}),yH=function(){var e=M([pH("Open Sans"),pH("Helvetica"),pH("Verdana"),hH]);return M([f(yA,Yk,l(vA,"bg-color-"+mA(d(hA,1,1,1,0)),"background-color",d(hA,1,1,1,0))),f(yA,gA,l(vA,"font-color-"+mA(d(hA,0,0,0,1)),"color",d(hA,0,0,0,1))),f(yA,yN,mN(20)),f(yA,lH,f(dH,l(Ra,vH,"font-",e),e))])}(),mH=n(function(e,t,r){var n=e.options;return l(fH,n,f(ka,lA(f(Ri," ",M([RT.root,RT.any,RT.single]))),U(yH,t)),r)}),bH=mH({options:yr}),CH=function(e){return f(yA,lH,f(dH,l(Ra,vH,"ff-",e),e))},EH=hH,SH=pH,TH=function(e){return{body:M([function(){var t=f(rH,e.screenWidth,e),r=t.a,n=t.b,a=U(M([ET(jk),yT(jk),CH(M([SH("Soleil"),EH]))]),f(xa,m_,n));return f(bH,a,r)}()]),title:"DAIHard"}},wH=Ht,IH=wH({init:OB,onUrlChange:Uk,onUrlRequest:Dk,subscriptions:Pk,update:cB,view:TH});!function(t){e.Elm?Ye("Elm",e.Elm,t):e.Elm=t}({App:{init:IH(f(du,function(e){return f(du,function(t){return f(du,function(r){return Fi({height:r,networkId:t,width:e})},f(Oh,"height",CE))},f(Oh,"networkId",CE))},f(Oh,"width",CE)))(0)}})}(this)},function(e,t,r){"use strict";function n(){"undefined"!=typeof web3?web3.version.getNetwork(function(e,t){var r;e?(console.log("Error initializing web3: "+e),r=0):r=parseInt(t),window.app=c.Elm.App.init({node:document.getElementById("elm"),flags:{networkId:r,width:window.innerWidth,height:window.innerHeight}}),i(app),a(app),o(app,web3)}):(window.app=c.Elm.App.init({node:document.getElementById("elm"),flags:{networkId:0,width:window.innerWidth,height:window.innerHeight}}),i(app),a(app),console.log("Metamask not detected."))}function a(e){e.ports.notifyPort.subscribe(function(e){h.notify(e.title,e.body,e.image)}),e.ports.requestNotifyPermissionPort.subscribe(function(){h.requestPermission(function(e){})})}function i(e){e.ports.gTagOut.subscribe(function(e){gtag("event",e.event,{event_category:e.category,event_label:e.label,value:e.value})})}function o(e,t){u(e,t),t.eth.getAccounts(function(r,n){n&&n.length>0&&s(e,t)})}function u(e,t){d.startWatching(e.ports.networkSentryPort,t),e.ports.connectToWeb3.subscribe(function(r){s(e,t)})}function s(e,t){window.ethereum&&!window.web3Connected&&(window.web3=new Web3(ethereum)),f.txSentry(e.ports.txOut,e.ports.txIn,t),f.walletSentry(e.ports.walletSentryPort,t),d.startWatching(e.ports.networkSentryPort,t),e.ports.genPrivkey.subscribe(function(t){l.prepareKeypair(t.signSeedMsg,t.address,function(t,r){console.log("pubkey: ",r),e.ports.userPubkeyResult.send(r)})}),e.ports.encryptToPubkeys.subscribe(function(t){var r=l.encryptToPubkeys(t.message,t.pubkeyHexStrings);e.ports.encryptionFinished.send(r)}),e.ports.decryptMessage.subscribe(function(t){var r=t.id,n=l.decryptForUser(t.encapsulation,t.iv,t.tag,t.encrypted);n||console.log("Uh oh! Decryption didn't work..."),e.ports.decryptionFinished.send({id:r,message:n})}),window.ethereum&&!window.web3Connected&&(ethereum.enable(),window.web3Connected=!0)}Object.defineProperty(t,"__esModule",{value:!0});var c=r(42),f=(r.n(c),r(41)),l=r(40),d=r(39),h=r(38);window.forge=r(22),window.web3Connected=!1,window.addEventListener("load",function(){n()})},function(e,t,r){"use strict";function n(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function a(e){var t=n(e),r=t[0],a=t[1];return 3*(r+a)/4-a}function i(e,t,r){return 3*(t+r)/4-r}function o(e){for(var t,r=n(e),a=r[0],o=r[1],u=new d(i(e,a,o)),s=0,c=o>0?a-4:a,f=0;f>16&255,u[s++]=t>>8&255,u[s++]=255&t;return 2===o&&(t=l[e.charCodeAt(f)]<<2|l[e.charCodeAt(f+1)]>>4,u[s++]=255&t),1===o&&(t=l[e.charCodeAt(f)]<<10|l[e.charCodeAt(f+1)]<<4|l[e.charCodeAt(f+2)]>>2,u[s++]=t>>8&255,u[s++]=255&t),u}function u(e){return f[e>>18&63]+f[e>>12&63]+f[e>>6&63]+f[63&e]}function s(e,t,r){for(var n,a=[],i=t;io?o:i+16383));return 1===n?(t=e[r-1],a.push(f[t>>2]+f[t<<4&63]+"==")):2===n&&(t=(e[r-2]<<8)+e[r-1],a.push(f[t>>10]+f[t>>4&63]+f[t<<2&63]+"=")),a.join("")}t.byteLength=a,t.toByteArray=o,t.fromByteArray=c;for(var f=[],l=[],d="undefined"!=typeof Uint8Array?Uint8Array:Array,h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",p=0,g=h.length;p>1,f=-7,l=r?a-1:0,d=r?-1:1,h=e[t+l];for(l+=d,i=h&(1<<-f)-1,h>>=-f,f+=u;f>0;i=256*i+e[t+l],l+=d,f-=8);for(o=i&(1<<-f)-1,i>>=-f,f+=n;f>0;o=256*o+e[t+l],l+=d,f-=8);if(0===i)i=1-c;else{if(i===s)return o?NaN:1/0*(h?-1:1);o+=Math.pow(2,n),i-=c}return(h?-1:1)*o*Math.pow(2,i-n)},t.write=function(e,t,r,n,a,i){var o,u,s,c=8*i-a-1,f=(1<>1,d=23===a?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:i-1,p=n?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(u=isNaN(t)?1:0,o=f):(o=Math.floor(Math.log(t)/Math.LN2),t*(s=Math.pow(2,-o))<1&&(o--,s*=2),t+=o+l>=1?d/s:d*Math.pow(2,1-l),t*s>=2&&(o++,s/=2),o+l>=f?(u=0,o=f):o+l>=1?(u=(t*s-1)*Math.pow(2,a),o+=l):(u=t*Math.pow(2,l-1)*Math.pow(2,a),o=0));a>=8;e[r+h]=255&u,h+=p,u/=256,a-=8);for(o=o<0;e[r+h]=255&o,h+=p,o/=256,c-=8);e[r+h-p]|=128*g}},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},function(e,t,r){function n(e,t,r){var n=t.entity===c.tls.ConnectionEnd.client;e.read.cipherState={init:!1,cipher:c.cipher.createDecipher("AES-CBC",n?r.keys.server_write_key:r.keys.client_write_key),iv:n?r.keys.server_write_IV:r.keys.client_write_IV},e.write.cipherState={init:!1,cipher:c.cipher.createCipher("AES-CBC",n?r.keys.client_write_key:r.keys.server_write_key),iv:n?r.keys.client_write_IV:r.keys.server_write_IV},e.read.cipherFunction=u,e.write.cipherFunction=a,e.read.macLength=e.write.macLength=r.mac_length,e.read.macFunction=e.write.macFunction=f.hmac_sha1}function a(e,t){var r=!1,n=t.macFunction(t.macKey,t.sequenceNumber,e);e.fragment.putBytes(n),t.updateSequenceNumber();var a;a=e.version.minor===f.Versions.TLS_1_0.minor?t.cipherState.init?null:t.cipherState.iv:c.random.getBytesSync(16),t.cipherState.init=!0;var o=t.cipherState.cipher;return o.start({iv:a}),e.version.minor>=f.Versions.TLS_1_1.minor&&o.output.putBytes(a),o.update(e.fragment),o.finish(i)&&(e.fragment=o.output,e.length=e.fragment.length(),r=!0),r}function i(e,t,r){if(!r){var n=e-t.length()%e;t.fillWithByte(n-1,n)}return!0}function o(e,t,r){var n=!0;if(r){for(var a=t.length(),i=t.last(),o=a-1-i;o=i?(e.fragment=a.output.getBytes(d-i),u=a.output.getBytes(i)):e.fragment=a.output.getBytes(),e.fragment=c.util.createBuffer(e.fragment),e.length=e.fragment.length();var h=t.macFunction(t.macKey,t.sequenceNumber,e);return t.updateSequenceNumber(),r=s(t.macKey,u,h)&&r}function s(e,t,r){var n=c.hmac.create();return n.start("SHA1",e),n.update(t),t=n.digest().getBytes(),n.start(null,null),n.update(r),r=n.digest().getBytes(),t===r}var c=r(0);r(5),r(37);var f=e.exports=c.tls;f.CipherSuites.TLS_RSA_WITH_AES_128_CBC_SHA={id:[0,47],name:"TLS_RSA_WITH_AES_128_CBC_SHA",initSecurityParameters:function(e){e.bulk_cipher_algorithm=f.BulkCipherAlgorithm.aes,e.cipher_type=f.CipherType.block,e.enc_key_length=16,e.block_length=16,e.fixed_iv_length=16,e.record_iv_length=16,e.mac_algorithm=f.MACAlgorithm.hmac_sha1,e.mac_length=20,e.mac_key_length=20},initConnectionState:n},f.CipherSuites.TLS_RSA_WITH_AES_256_CBC_SHA={id:[0,53],name:"TLS_RSA_WITH_AES_256_CBC_SHA",initSecurityParameters:function(e){e.bulk_cipher_algorithm=f.BulkCipherAlgorithm.aes,e.cipher_type=f.CipherType.block,e.enc_key_length=32,e.block_length=16,e.fixed_iv_length=16,e.record_iv_length=16,e.mac_algorithm=f.MACAlgorithm.hmac_sha1,e.mac_length=20,e.mac_key_length=20},initConnectionState:n};var l=0},function(e,t,r){(function(t){function r(e,t){var r=0,n=t.length,a=t.charAt(0),i=[0];for(r=0;r0;)i.push(u%n),u=u/n|0}var s="";for(r=0;0===e.at(r)&&r=0;--r)s+=t[i[r]];return s}var n={};e.exports=n;var a={};n.encode=function(e,t,n){if("string"!=typeof t)throw new TypeError('"alphabet" must be a string.');if(void 0!==n&&"number"!=typeof n)throw new TypeError('"maxline" must be a number.');var a="";if(e instanceof Uint8Array){var i=0,o=t.length,u=t.charAt(0),s=[0];for(i=0;i0;)s.push(f%o),f=f/o|0}for(i=0;0===e[i]&&i=0;--i)a+=t[s[i]]}else a=r(e,t);if(n){var l=new RegExp(".{1,"+n+"}","g");a=a.match(l).join("\r\n")}return a},n.decode=function(e,r){if("string"!=typeof e)throw new TypeError('"input" must be a string.');if("string"!=typeof r)throw new TypeError('"alphabet" must be a string.');var n=a[r];if(!n){n=a[r]=[];for(var i=0;i>=8;for(;l>0;)s.push(255&l),l>>=8}for(var d=0;e[d]===u&&d=32;--n){for(r=0,a=n-32,i=n-12;a>8,t[a]-=256*r;t[a]+=r,t[n]=0}for(r=0,a=0;a<32;++a)t[a]+=r-(t[31]>>4)*H[a],r=t[a]>>8,t[a]&=255;for(a=0;a<32;++a)t[a]-=r*H[a];for(n=0;n<32;++n)t[n+1]+=t[n]>>8,e[n]=255&t[n]}function c(e){for(var t=new Float64Array(64),r=0;r<64;++r)t[r]=e[r],e[r]=0;s(e,t)}function f(e,t){var r=B(),n=B(),a=B(),i=B(),o=B(),u=B(),s=B(),c=B(),f=B();N(r,e[1],e[0]),N(f,t[1],t[0]),$(r,r,f),k(n,e[0],e[1]),k(f,t[0],t[1]),$(n,n,f),$(a,e[3],t[3]),$(a,a,F),$(i,e[2],t[2]),k(i,i,i),N(o,n,r),N(u,i,a),k(s,i,a),k(c,n,r),$(e[0],o,u),$(e[1],c,s),$(e[2],s,u),$(e[3],o,c)}function l(e,t,r){for(var n=0;n<4;++n)A(e[n],t[n],r)}function d(e,t){var r=B(),n=B(),a=B();w(a,t[2]),$(r,t[0],a),$(n,t[1],a),h(e,n),e[31]^=C(r)<<7}function h(e,t){var r,n,a,i=B(),o=B();for(r=0;r<16;++r)o[r]=t[r];for(I(o),I(o),I(o),n=0;n<2;++n){for(i[0]=o[0]-65517,r=1;r<15;++r)i[r]=o[r]-65535-(i[r-1]>>16&1),i[r-1]&=65535;i[15]=o[15]-32767-(i[14]>>16&1),a=i[15]>>16&1,i[14]&=65535,A(o,i,1-a)}for(r=0;r<16;r++)e[2*r]=255&o[r],e[2*r+1]=o[r]>>8}function p(e,t){var r=B(),n=B(),a=B(),i=B(),o=B(),u=B(),s=B();return T(e[2],O),g(e[1],t),R(a,e[1]),$(i,a,M),N(a,a,e[2]),k(i,e[2],i),R(o,i),R(u,o),$(s,u,o),$(r,s,a),$(r,r,i),v(r,r),$(r,r,a),$(r,r,i),$(r,r,i),$(e[0],r,i),R(n,e[0]),$(n,n,i),y(n,a)&&$(e[0],e[0],j),R(n,e[0]),$(n,n,i),y(n,a)?-1:(C(e[0])===t[31]>>7&&N(e[0],U,e[0]),$(e[3],e[0],e[1]),0)}function g(e,t){var r;for(r=0;r<16;++r)e[r]=t[2*r]+(t[2*r+1]<<8);e[15]&=32767}function v(e,t){var r,n=B();for(r=0;r<16;++r)n[r]=t[r];for(r=250;r>=0;--r)R(n,n),1!==r&&$(n,n,t);for(r=0;r<16;++r)e[r]=n[r]}function y(e,t){var r=new P(32),n=new P(32);return h(r,e),h(n,t),m(r,0,n,0)}function m(e,t,r,n){return b(e,t,r,n,32)}function b(e,t,r,n,a){var i,o=0;for(i=0;i>>8)-1}function C(e){var t=new P(32);return h(t,e),1&t[0]}function E(e,t,r){var n,a;for(T(e[0],U),T(e[1],O),T(e[2],O),T(e[3],U),a=255;a>=0;--a)n=r[a/8|0]>>(7&a)&1,l(e,t,n),f(t,e),f(e,e),l(e,t,n)}function S(e,t){var r=[B(),B(),B(),B()];T(r[0],V),T(r[1],K),T(r[2],O),$(r[3],V,K),E(e,r,t)}function T(e,t){var r;for(r=0;r<16;r++)e[r]=0|t[r]}function w(e,t){var r,n=B();for(r=0;r<16;++r)n[r]=t[r];for(r=253;r>=0;--r)R(n,n),2!==r&&4!==r&&$(n,n,t);for(r=0;r<16;++r)e[r]=n[r]}function I(e){var t,r,n=1;for(t=0;t<16;++t)r=e[t]+n+65535,n=Math.floor(r/65536),e[t]=r-65536*n;e[0]+=n-1+37*(n-1)}function A(e,t,r){for(var n,a=~(r-1),i=0;i<16;++i)n=a&(e[i]^t[i]),e[i]^=n,t[i]^=n}function B(e){var t,r=new Float64Array(16);if(e)for(t=0;t=0};var U=B(),O=B([1]),M=B([30883,4953,19914,30187,55467,16705,2637,112,59544,30585,16505,36039,65139,11119,27886,20995]),F=B([61785,9906,39828,60374,45398,33411,5274,224,53552,61171,33010,6542,64743,22239,55772,9222]),V=B([54554,36645,11616,51542,42930,38181,51040,26924,56412,64982,57905,49316,21502,52590,14035,8553]),K=B([26200,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214]),H=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]),j=B([41136,18958,6951,50414,58488,44335,6150,12099,55207,15867,153,11085,57099,20417,9344,11139])}).call(t,r(10).Buffer)},function(e,t,r){function n(e,t,r,n){e.generate=function(e,i){for(var o=new a.util.ByteBuffer,u=Math.ceil(i/n)+r,s=new a.util.ByteBuffer,c=r;c0&&(o=a.util.fillString(String.fromCharCode(0),s)+o),{encapsulation:t.encrypt(o,"NONE"),key:e.generate(o,n)}},n.decrypt=function(t,r,n){var a=t.decrypt(r,"NONE");return e.generate(a,n)},n},a.kem.kdf1=function(e,t){n(this,e,0,t||e.digestLength)},a.kem.kdf2=function(e,t){n(this,e,1,t||e.digestLength)}},function(e,t,r){e.exports=r(4),r(16),r(9),r(35),r(36)},function(e,t,r){var n=r(0);r(26),e.exports=n.mgf=n.mgf||{},n.mgf.mgf1=n.mgf1},function(e,t,r){function n(e){var t={},r=[];if(!p.validate(e,g.asn1.recipientInfoValidator,t,r)){var n=new Error("Cannot read PKCS#7 RecipientInfo. ASN.1 object is not an PKCS#7 RecipientInfo.");throw n.errors=r,n}return{version:t.version.charCodeAt(0),issuer:h.pki.RDNAttributesAsArray(t.issuer),serialNumber:h.util.createBuffer(t.serial).toHex(),encryptedContent:{algorithm:p.derToOid(t.encAlgorithm),parameter:t.encParameter.value,content:t.encKey}}}function a(e){return p.create(p.Class.UNIVERSAL,p.Type.SEQUENCE,!0,[p.create(p.Class.UNIVERSAL,p.Type.INTEGER,!1,p.integerToDer(e.version).getBytes()),p.create(p.Class.UNIVERSAL,p.Type.SEQUENCE,!0,[h.pki.distinguishedNameToAsn1({attributes:e.issuer}),p.create(p.Class.UNIVERSAL,p.Type.INTEGER,!1,h.util.hexToBytes(e.serialNumber))]),p.create(p.Class.UNIVERSAL,p.Type.SEQUENCE,!0,[p.create(p.Class.UNIVERSAL,p.Type.OID,!1,p.oidToDer(e.encryptedContent.algorithm).getBytes()),p.create(p.Class.UNIVERSAL,p.Type.NULL,!1,"")]),p.create(p.Class.UNIVERSAL,p.Type.OCTETSTRING,!1,e.encryptedContent.content)])}function i(e){for(var t=[],r=0;r0){for(var r=p.create(p.Class.CONTEXT_SPECIFIC,1,!0,[]),n=0;n=r&&a0&&a.value[0].value.push(p.create(p.Class.CONTEXT_SPECIFIC,0,!0,e)),n.length>0&&a.value[0].value.push(p.create(p.Class.CONTEXT_SPECIFIC,1,!0,n)),a.value[0].value.push(p.create(p.Class.UNIVERSAL,p.Type.SET,!0,r.signerInfos)),p.create(p.Class.UNIVERSAL,p.Type.SEQUENCE,!0,[p.create(p.Class.UNIVERSAL,p.Type.OID,!1,p.oidToDer(r.type).getBytes()),a])},addSigner:function(e){var t=e.issuer,n=e.serialNumber;if(e.certificate){var a=e.certificate;"string"==typeof a&&(a=h.pki.certificateFromPem(a)),t=a.issuer.attributes,n=a.serialNumber}var i=e.key;if(!i)throw new Error("Could not add PKCS#7 signer; no private key specified.");"string"==typeof i&&(i=h.pki.privateKeyFromPem(i));var o=e.digestAlgorithm||h.pki.oids.sha1;switch(o){case h.pki.oids.sha1:case h.pki.oids.sha256:case h.pki.oids.sha384:case h.pki.oids.sha512:case h.pki.oids.md5:break;default:throw new Error("Could not add PKCS#7 signer; unknown message digest algorithm: "+o)}var u=e.authenticatedAttributes||[];if(u.length>0){for(var s=!1,c=!1,f=0;f="8"&&(r="00"+r);var n=o.util.hexToBytes(r);e.putInt32(n.length),e.putBytes(n)}function a(e,t){e.putInt32(t.length),e.putString(t)}function i(){for(var e=o.md.sha1.create(),t=arguments.length,r=0;r0&&(this.state=v[this.state].block)},y.prototype.unblock=function(e){return e=void 0===e?1:e,this.blocks-=e,0===this.blocks&&this.state!==d&&(this.state=c,b(this,0)),this.blocks},y.prototype.sleep=function(e){e=void 0===e?0:e,this.state=v[this.state].sleep;var t=this;this.timeoutId=setTimeout(function(){t.timeoutId=null,t.state=c,b(t,0)},e)},y.prototype.wait=function(e){e.wait(this)},y.prototype.wakeup=function(){this.state===l&&(cancelTimeout(this.timeoutId),this.timeoutId=null,this.state=c,b(this,0))},y.prototype.cancel=function(){this.state=v[this.state].cancel,this.permitsNeeded=0,null!==this.timeoutId&&(cancelTimeout(this.timeoutId),this.timeoutId=null),this.subtasks=[]},y.prototype.fail=function(e){if(this.error=!0,C(this,!0),e)e.error=this.error,e.swapTime=this.swapTime,e.userData=this.userData,b(e,0);else{if(null!==this.parent){for(var t=this.parent;null!==t.parent;)t.error=this.error,t.swapTime=this.swapTime,t.userData=this.userData,t=t.parent;C(t,!0)}this.failureCallback&&this.failureCallback(this)}};var m=function(e){e.error=!1,e.state=v[e.state][g],setTimeout(function(){e.state===c&&(e.swapTime=+new Date,e.run(e),b(e,0))},0)},b=function(e,t){var r=t>30||+new Date-e.swapTime>20,n=function(t){if(t++,e.state===c)if(r&&(e.swapTime=+new Date),e.subtasks.length>0){var n=e.subtasks.shift();n.error=e.error,n.swapTime=e.swapTime,n.userData=e.userData,n.run(n),n.error||b(n,t)}else C(e),e.error||null!==e.parent&&(e.parent.error=e.error,e.parent.swapTime=e.swapTime,e.parent.userData=e.userData,b(e.parent,t))};r?setTimeout(n,0):n(t)},C=function(e,t){e.state=d,delete i[e.id],null===e.parent&&(e.type in u?0===u[e.type].length?n.log.error(a,"[%s][%s] task queue empty [%s]",e.id,e.name,e.type):u[e.type][0]!==e?n.log.error(a,"[%s][%s] task not first in queue [%s]",e.id,e.name,e.type):(u[e.type].shift(),0===u[e.type].length?delete u[e.type]:u[e.type][0].start()):n.log.error(a,"[%s][%s] task queue missing [%s]",e.id,e.name,e.type),t||(e.error&&e.failureCallback?e.failureCallback(e):!e.error&&e.successCallback&&e.successCallback(e)))};e.exports=n.task=n.task||{},n.task.start=function(e){var t=new y({run:e.run,name:e.name||"?"});t.type=e.type,t.successCallback=e.success||null,t.failureCallback=e.failure||null,t.type in u?u[e.type].push(t):(u[t.type]=[t],m(t))},n.task.cancel=function(e){e in u&&(u[e]=[u[e][0]])},n.task.createCondition=function(){var e={tasks:{}};return e.wait=function(t){t.id in e.tasks||(t.block(),e.tasks[t.id]=t)},e.notify=function(){var t=e.tasks;e.tasks={};for(var r in t)t[r].unblock()},e}},function(e,t,r){(function(e,t){!function(e,r){"use strict";function n(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),r=0;r=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},r(56),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(t,r(14))}]); \ No newline at end of file diff --git a/src/AgentHistory/State.elm b/src/AgentHistory/State.elm index 65e8386..55c2305 100644 --- a/src/AgentHistory/State.elm +++ b/src/AgentHistory/State.elm @@ -1,9 +1,10 @@ -module AgentHistory.State exposing (init, subscriptions, update, updateUserInfo, updateWeb3Context) +module AgentHistory.State exposing (init, subscriptions, update, updateWalletState) import AgentHistory.Types exposing (..) import AppCmd import Array exposing (Array) import BigInt exposing (BigInt) +import ChainCmd exposing (ChainCmd) import CommonTypes exposing (..) import Config exposing (..) import Contracts.Generated.DAIHardTrade as DHT @@ -13,9 +14,10 @@ import Eth import Eth.Sentry.Event as EventSentry exposing (EventSentry) import Eth.Types exposing (Address) import FiatValue exposing (FiatValue) +import Filters.State as Filters +import Filters.Types as Filter import Flip exposing (flip) import Helpers.BigInt as BigIntHelpers -import Helpers.ChainCmd as ChainCmd exposing (ChainCmd) import Helpers.Eth as EthHelpers import Helpers.Time as TimeHelpers import PaymentMethods exposing (PaymentMethod) @@ -25,15 +27,24 @@ import Time import TokenValue exposing (TokenValue) import TradeCache.State as TradeCache import TradeCache.Types as TradeCache exposing (TradeCache) +import TradeTable.State as TradeTable +import TradeTable.Types as TradeTable +import Wallet -init : EthHelpers.Web3Context -> Address -> BuyerOrSeller -> Maybe UserInfo -> ( Model, Cmd Msg ) -init web3Context agentAddress agentRole maybeUserInfo = - ( { web3Context = web3Context +init : Wallet.State -> Address -> ( Model, Cmd Msg ) +init wallet agentAddress = + ( { wallet = wallet , agentAddress = agentAddress - , agentRole = agentRole - , userInfo = maybeUserInfo - , viewPhase = CTypes.Open + , filters = + Filters.init + [ Filter.phases True True True False + , Filter.offerType True True + , Filter.role agentAddress True True + ] + , tradeTable = + TradeTable.init + ( TradeTable.Phase, TradeTable.Ascending ) } , Cmd.none ) @@ -42,20 +53,6 @@ init web3Context agentAddress agentRole maybeUserInfo = update : Msg -> Model -> UpdateResult update msg prevModel = case msg of - ViewUserRoleChanged role -> - UpdateResult - prevModel - Cmd.none - ChainCmd.none - [ AppCmd.GotoRoute (Routing.AgentHistory prevModel.agentAddress role) ] - - ViewPhaseChanged phase -> - UpdateResult - { prevModel | viewPhase = phase } - Cmd.none - ChainCmd.none - [] - Poke address -> let txParams = @@ -80,12 +77,33 @@ update msg prevModel = chainCmd [] - TradeClicked id -> + TradeClicked factory id -> UpdateResult prevModel Cmd.none ChainCmd.none - [ AppCmd.GotoRoute (Routing.Trade id) ] + [ AppCmd.GotoRoute (Routing.Trade factory id) ] + + FiltersMsg filtersMsg -> + justModelUpdate + { prevModel + | filters = + prevModel.filters |> Filters.update filtersMsg + } + + TradeTableMsg tradeTableMsg -> + let + ttUpdateResult = + prevModel.tradeTable + |> TradeTable.update tradeTableMsg + in + UpdateResult + { prevModel + | tradeTable = ttUpdateResult.model + } + (Cmd.map TradeTableMsg ttUpdateResult.cmd) + (ChainCmd.map TradeTableMsg ttUpdateResult.chainCmd) + (List.map (AppCmd.map TradeTableMsg) ttUpdateResult.appCmds) NoOp -> noUpdate prevModel @@ -100,14 +118,9 @@ noUpdate model = [] -updateUserInfo : Maybe UserInfo -> Model -> Model -updateUserInfo userInfo model = - { model | userInfo = userInfo } - - -updateWeb3Context : EthHelpers.Web3Context -> Model -> Model -updateWeb3Context newWeb3Context model = - { model | web3Context = newWeb3Context } +updateWalletState : Wallet.State -> Model -> Model +updateWalletState wallet model = + { model | wallet = wallet } subscriptions : Model -> Sub Msg diff --git a/src/AgentHistory/Types.elm b/src/AgentHistory/Types.elm index 1ae98ea..2575808 100644 --- a/src/AgentHistory/Types.elm +++ b/src/AgentHistory/Types.elm @@ -1,16 +1,18 @@ -module AgentHistory.Types exposing (Model, Msg(..), UpdateResult) +module AgentHistory.Types exposing (Model, Msg(..), UpdateResult, justModelUpdate) import AppCmd exposing (AppCmd) import Array exposing (Array) import BigInt exposing (BigInt) +import ChainCmd exposing (ChainCmd) import CommonTypes exposing (..) import Contracts.Types as CTypes import Dict exposing (Dict) +import Eth.Net import Eth.Sentry.Event as EventSentry exposing (EventSentry) import Eth.Types exposing (Address) import FiatValue exposing (FiatValue) -import Helpers.ChainCmd as ChainCmd exposing (ChainCmd) -import Helpers.Eth as EthHelpers exposing (Web3Context) +import Filters.Types as Filters +import Helpers.Eth as EthHelpers import Http import Json.Decode import PaymentMethods exposing (PaymentMethod) @@ -19,22 +21,23 @@ import String.Extra import Time import TokenValue exposing (TokenValue) import TradeCache.Types as TradeCache exposing (TradeCache) +import TradeTable.Types as TradeTable +import Wallet type alias Model = - { web3Context : Web3Context + { wallet : Wallet.State , agentAddress : Address - , agentRole : BuyerOrSeller - , userInfo : Maybe UserInfo - , viewPhase : CTypes.Phase + , filters : Filters.Model + , tradeTable : TradeTable.Model } type Msg - = ViewUserRoleChanged BuyerOrSeller - | ViewPhaseChanged CTypes.Phase - | Poke Address - | TradeClicked Int + = Poke Address + | TradeClicked FactoryType Int + | FiltersMsg Filters.Msg + | TradeTableMsg TradeTable.Msg | NoOp @@ -44,3 +47,12 @@ type alias UpdateResult = , chainCmd : ChainCmd Msg , appCmds : List (AppCmd Msg) } + + +justModelUpdate : Model -> UpdateResult +justModelUpdate model = + UpdateResult + model + Cmd.none + ChainCmd.none + [] diff --git a/src/AgentHistory/View.elm b/src/AgentHistory/View.elm index 3290be4..ec6f694 100644 --- a/src/AgentHistory/View.elm +++ b/src/AgentHistory/View.elm @@ -12,31 +12,42 @@ import Element.Font import Element.Input import Eth.Types exposing (Address) import FiatValue exposing (FiatValue) +import Filters.Types as Filters +import Filters.View as Filters import Helpers.Element as EH import Helpers.Time as TimeHelpers import Html.Events.Extra import Images exposing (Image) import Margin +import Maybe.Extra import PaymentMethods exposing (PaymentMethod) import Time import TokenValue exposing (TokenValue) import TradeCache.State as TradeCache -import TradeCache.Types exposing (TradeCache) +import TradeCache.Types as TradeCache exposing (TradeCache) +import TradeTable.Types as TradeTable +import TradeTable.View as TradeTable +import Wallet -root : Time.Posix -> TradeCache -> Model -> Element Msg -root time tradeCache model = +root : Time.Posix -> List TradeCache -> Model -> Element Msg +root time tradeCaches model = Element.column [ Element.Border.rounded 5 , Element.Background.color EH.white , Element.width Element.fill , Element.height Element.fill - , Element.paddingXY 0 20 + , Element.paddingXY 30 20 ] [ pageTitleElement model - , viewTypeElement model - , phaseElement model - , maybeResultsElement time tradeCache model + , statusAndFiltersElement tradeCaches model + , let + tcDoneLoading = + List.all + (TradeCache.loadingStatus >> (==) TradeCache.AllFetched) + tradeCaches + in + maybeResultsElement time tcDoneLoading tradeCaches model ] @@ -44,7 +55,7 @@ pageTitleElement : Model -> Element Msg pageTitleElement model = let viewingOwnHistory = - case model.userInfo of + case Wallet.userInfo model.wallet of Nothing -> False @@ -52,21 +63,16 @@ pageTitleElement model = userInfo.address == model.agentAddress in if viewingOwnHistory then - Element.el - [ Element.paddingXY 30 10 - , Element.Font.size 24 - , Element.Font.semiBold - ] - (Element.text "Your Trades") + Element.none else Element.row [ Element.spacing 10 , Element.paddingEach { top = 10 - , left = 30 - , right = 30 - , bottom = 30 + , left = 20 + , right = 20 + , bottom = 20 } ] [ Element.el @@ -78,342 +84,104 @@ pageTitleElement model = ] -viewTypeElement : Model -> Element Msg -viewTypeElement model = - Element.el - [ Element.paddingXY 30 10 ] - (userRoleToggle model.agentRole) - - -userRoleToggle : BuyerOrSeller -> Element Msg -userRoleToggle buyerOrSeller = - let - baseStyles = - [ Element.Font.size 24 - , Element.Font.semiBold - , Element.pointer - ] - - ( asBuyerStyles, asSellerStyles ) = - case buyerOrSeller of - Buyer -> - ( baseStyles - , baseStyles ++ [ Element.Font.color EH.disabledTextColor ] - ) - - Seller -> - ( baseStyles ++ [ Element.Font.color EH.disabledTextColor ] - , baseStyles - ) - in - Element.row [ Element.spacing 20 ] - [ Element.el - ([ Element.Events.onClick <| ViewUserRoleChanged Seller ] ++ asSellerStyles) - (Element.text "As the Seller") - , Element.el - ([ Element.Events.onClick <| ViewUserRoleChanged Buyer ] ++ asBuyerStyles) - (Element.text "As the Buyer") - ] - - -phaseElement : Model -> Element Msg -phaseElement model = - Element.el - [ Element.paddingXY 30 10 ] - (choosePhaseElement model.viewPhase) - - -choosePhaseElement : CTypes.Phase -> Element Msg -choosePhaseElement activePhase = - let - baseStyles = - [ Element.Font.size 20 - , Element.Font.bold - , Element.pointer - ] - - phaseButtonStyles isActive = - if isActive then - baseStyles ++ [ Element.Font.color EH.blue ] - - else - baseStyles - in - Element.row [ Element.spacing 30 ] - [ Element.el - ([ Element.Events.onClick <| ViewPhaseChanged CTypes.Open ] - ++ phaseButtonStyles (activePhase == CTypes.Open) - ) - (Element.text "Open") - , Element.el - ([ Element.Events.onClick <| ViewPhaseChanged CTypes.Committed ] - ++ phaseButtonStyles (activePhase == CTypes.Committed) - ) - (Element.text "Payment Due") - , Element.el - ([ Element.Events.onClick <| ViewPhaseChanged CTypes.Judgment ] - ++ phaseButtonStyles (activePhase == CTypes.Judgment) - ) - (Element.text "Release Due") - , Element.el - ([ Element.Events.onClick <| ViewPhaseChanged CTypes.Closed ] - ++ phaseButtonStyles (activePhase == CTypes.Closed) - ) - (Element.text "Closed") - ] - - -tradeMatchesUserRole : CTypes.FullTradeInfo -> BuyerOrSeller -> Address -> Bool -tradeMatchesUserRole trade role userAddress = - CTypes.getBuyerOrSeller trade userAddress == Just role - - -maybeResultsElement : Time.Posix -> TradeCache -> Model -> Element Msg -maybeResultsElement time tradeCache model = +statusAndFiltersElement : List TradeCache -> Model -> Element Msg +statusAndFiltersElement tradeCaches model = let statusMsgElement s = Element.el - [ Element.Font.size 24 + [ Element.Font.size 20 , Element.Font.semiBold , Element.Font.color EH.darkGray , Element.centerX - , Element.padding 20 ] (Element.text s) - userTrades = - TradeCache.loadedValidTrades tradeCache - |> filterAndSortTrades - (basicFilterFunc model) - (basicSortFunc model) - - visibleTrades = - userTrades - |> List.filter - (\trade -> - tradeMatchesUserRole trade model.agentRole model.agentAddress - && (trade.state.phase == model.viewPhase) - ) - in - case ( tradeCache.dataFetchStatus.total, visibleTrades ) of - ( Nothing, _ ) -> - statusMsgElement "Querying Factory contract..." - - ( Just 0, _ ) -> - statusMsgElement "No trades found." - - ( Just totalTrades, [] ) -> - if tradeCache.dataFetchStatus.loaded < (totalTrades - tradeCache.dataFetchStatus.invalid) then - statusMsgElement "Searching for user trades..." + statusMessages : List (Element Msg) + statusMessages = + if List.all ((==) TradeCache.NoneFound) (List.map TradeCache.loadingStatus tradeCaches) then + [ statusMsgElement "No trades found." ] else - statusMsgElement "No matching trades found." - - ( Just totalTrades, _ ) -> - resultsElement time visibleTrades model - - -resultsElement : Time.Posix -> List CTypes.FullTradeInfo -> Model -> Element Msg -resultsElement time visibleTrades model = - let - amountTitleString = - case model.agentRole of - Buyer -> - "Buying" - - Seller -> - "Selling" - - phaseCountdownTitleString = - case model.viewPhase of - CTypes.Open -> - "Expires in" - - CTypes.Committed -> - "Payment Due" - - CTypes.Judgment -> - "Auto-Release" - - CTypes.Closed -> - "" + tradeCaches + |> List.map + (\tc -> + case TradeCache.loadingStatus tc of + TradeCache.QueryingNumTrades -> + Just <| "Querying " ++ factoryName tc.factory ++ " Factory..." + + TradeCache.NoneFound -> + Nothing + + TradeCache.FetchingTrades -> + Just <| "Fetching " ++ factoryName tc.factory ++ " Trades..." + + TradeCache.AllFetched -> + Nothing + ) + |> Maybe.Extra.values + |> List.map statusMsgElement in - Element.column - [ Element.width Element.fill - , Element.height Element.fill - , Element.paddingXY 30 10 - , Element.spacing 5 - ] - [ Element.row - [ Element.width Element.fill ] - [ if model.viewPhase /= CTypes.Closed then - cellMaker ( 2, columnHeader phaseCountdownTitleString ) - - else - Element.none - , cellMaker ( 1, columnHeader amountTitleString ) - , cellMaker ( 2, columnHeader "For Fiat" ) - , cellMaker ( 6, columnHeader "Payment Methods" ) - , cellMaker ( 2, Element.none ) - ] - , Element.column - [ Element.width Element.fill - , Element.Border.width 1 - , Element.Border.rounded 8 - , Element.Border.color EH.lightGray - , Element.spacing 1 - , Element.Background.color EH.lightGray - , Element.clip - ] - (visibleTrades - |> List.map - (viewTradeRow time (model.userInfo /= Nothing) model.agentRole model.viewPhase) - ) - ] - - -viewTradeRow : Time.Posix -> Bool -> BuyerOrSeller -> CTypes.Phase -> CTypes.FullTradeInfo -> Element Msg -viewTradeRow time web3Connected userRole viewPhase trade = - Element.row - [ Element.width Element.fill - , Element.spacing 1 - ] - [ case viewPhase of - CTypes.Open -> - cellMaker ( 2, phaseCountdown time trade False web3Connected ) - - CTypes.Committed -> - cellMaker ( 2, phaseCountdown time trade (userRole == Buyer) web3Connected ) - - CTypes.Judgment -> - cellMaker ( 2, phaseCountdown time trade (userRole == Seller) web3Connected ) - - CTypes.Closed -> - Element.none - , cellMaker ( 1, viewTradeAmount trade.parameters.tradeAmount ) - , cellMaker ( 2, viewFiat trade.terms.price ) - , cellMaker ( 6, viewPaymentMethods trade.terms.paymentMethods ) - , cellMaker ( 2, viewTradeButton trade.id ) - ] - - -cellMaker : ( Int, Element Msg ) -> Element Msg -cellMaker ( portion, cellElement ) = Element.el - [ Element.width <| Element.fillPortion portion - , Element.height <| Element.px 60 - , Element.clip - , Element.Background.color EH.white - ] - <| - Element.el - [ Element.padding 12 - , Element.centerY - , Element.width Element.fill - ] - cellElement - - -phaseCountdown : Time.Posix -> CTypes.FullTradeInfo -> Bool -> Bool -> Element Msg -phaseCountdown time trade userActionNeeded web3Connected = - case CTypes.getCurrentPhaseTimeoutInfo time trade of - CTypes.TimeLeft timeoutInfo -> - let - baseColor = - if userActionNeeded && (TimeHelpers.getRatio (Tuple.first timeoutInfo) (Tuple.second timeoutInfo) < 0.05) then - EH.red - - else - EH.black - in - EH.intervalWithElapsedBar - [ Element.width Element.fill ] - [ Element.Font.size 16 ] - ( baseColor, EH.lightGray ) - timeoutInfo - - CTypes.TimeUp _ -> + [ Element.width Element.fill + , Element.inFront <| Element.column - [ Element.spacing 4 - , Element.width Element.fill + [ Element.spacing 5 + , Element.alignLeft ] - ([ Element.el - [ Element.centerX - , Element.Font.size 14 - ] - (Element.text (CTypes.getPokeText trade.state.phase)) - ] - ++ (if web3Connected then - [ Element.el - [ Element.centerX ] - (pokeButton trade.creationInfo.address) - ] - - else - [] - ) - ) - - -pokeButton : Address -> Element Msg -pokeButton address = - Element.Input.button - [ Element.Background.color <| Element.rgba255 16 7 234 0.2 - , Element.padding 5 - , Element.Border.rounded 4 - , Element.width Element.fill - , Element.mouseOver [ Element.Background.color <| Element.rgba255 16 7 234 0.4 ] + statusMessages ] - { onPress = Just <| Poke address - , label = - Element.el - [ Element.centerX - , Element.Font.color <| Element.rgb255 16 7 234 - , Element.Font.medium - , Element.Font.size 14 - ] - (Element.text "Poke") - } - - -viewTradeAmount : TokenValue -> Element Msg -viewTradeAmount tradeAmount = - EH.daiValue tradeAmount - - -viewFiat : FiatValue -> Element Msg -viewFiat price = - EH.fiatValue price - - -viewMargin : CTypes.FullTradeInfo -> Bool -> Element Msg -viewMargin trade upIsGreen = - trade.derived.margin - |> Maybe.map (EH.coloredMargin upIsGreen) - |> Maybe.withDefault Element.none + (Element.el + [ Element.centerX ] + (Element.map FiltersMsg <| Filters.view model.filters) + ) -viewPaymentMethods : List PaymentMethod -> Element Msg -viewPaymentMethods paymentMethods = - paymentMethods - |> List.head - |> Maybe.map PaymentMethods.previewTextHack - |> Maybe.withDefault Element.none +maybeResultsElement : Time.Posix -> Bool -> List TradeCache -> Model -> Element Msg +maybeResultsElement time tcDoneLoading tradeCaches model = + let + visibleTrades = + tradeCaches + |> List.map + (\tradeCache -> + TradeCache.loadedValidTrades tradeCache + |> filterTrades + (basicFilterFunc model) + ) + |> List.concat + |> Filters.filterTrades model.filters + in + if visibleTrades == [] then + Element.el + [ Element.centerX + , Element.Font.size 24 + , Element.paddingEach + { top = 30 + , left = 0 + , right = 0 + , bottom = 0 + } + , Element.Font.italic + ] + (if tcDoneLoading then + Element.text "No trades found with those filters." + else + Element.text "Initializing Trade Cache..." + ) -viewTradeButton : Int -> Element Msg -viewTradeButton factoryID = - Element.Input.button - [ Element.Background.color <| Element.rgba255 16 7 234 0.2 - , Element.padding 11 - , Element.Border.rounded 4 - , Element.width Element.fill - , Element.mouseOver [ Element.Background.color <| Element.rgba255 16 7 234 0.4 ] - ] - { onPress = Just <| TradeClicked factoryID - , label = - Element.el [ Element.centerX, Element.Font.color <| Element.rgb255 16 7 234, Element.Font.medium ] <| Element.text "View Offer" - } + else + TradeTable.view + time + model.tradeTable + [ TradeTable.Phase + , TradeTable.Offer + , TradeTable.FiatPrice + , TradeTable.Margin + , TradeTable.PaymentWindow + , TradeTable.BurnWindow + ] + visibleTrades + |> Element.map TradeTableMsg getLoadedTrades : List CTypes.Trade -> List CTypes.FullTradeInfo @@ -429,19 +197,12 @@ getLoadedTrades = ) -filterAndSortTrades : +filterTrades : (CTypes.FullTradeInfo -> Bool) - -> (CTypes.FullTradeInfo -> CTypes.FullTradeInfo -> Order) -> List CTypes.FullTradeInfo -> List CTypes.FullTradeInfo -filterAndSortTrades filterFunc sortFunc = +filterTrades filterFunc = List.filter filterFunc - >> List.sortWith sortFunc - - -columnHeader : String -> Element Msg -columnHeader title = - Element.el [ Element.Font.medium, Element.Font.size 17 ] <| Element.text title basicFilterFunc : Model -> (CTypes.FullTradeInfo -> Bool) @@ -449,21 +210,3 @@ basicFilterFunc model = \trade -> (trade.parameters.initiatorAddress == model.agentAddress) || (trade.state.responder == Just model.agentAddress) - - -basicSortFunc : Model -> (CTypes.FullTradeInfo -> CTypes.FullTradeInfo -> Order) -basicSortFunc model = - \a b -> - let - phaseOrder = - compare - (CTypes.phaseToInt a.state.phase) - (CTypes.phaseToInt b.state.phase) - in - if phaseOrder == EQ then - phaseOrder - - else - TimeHelpers.compare - a.derived.phaseEndTime - b.derived.phaseEndTime diff --git a/src/Helpers/ChainCmd.elm b/src/ChainCmd.elm similarity index 63% rename from src/Helpers/ChainCmd.elm rename to src/ChainCmd.elm index 820f834..589a4c9 100644 --- a/src/Helpers/ChainCmd.elm +++ b/src/ChainCmd.elm @@ -1,7 +1,8 @@ -port module Helpers.ChainCmd exposing (ChainCmd, custom, execute, map, none) +port module ChainCmd exposing (ChainCmd(..), custom, execute, map, none) import Eth.Sentry.Tx as TxSentry import Eth.Types +import UserNotice as UN type ChainCmd msg @@ -19,14 +20,26 @@ custom customSend txParams = CustomSend customSend txParams -execute : TxSentry.TxSentry msg -> ChainCmd msg -> ( TxSentry.TxSentry msg, Cmd msg ) -execute txSentry chainCmdOrder = - case chainCmdOrder of - None -> - ( txSentry, Cmd.none ) +execute : Maybe (TxSentry.TxSentry msg) -> ChainCmd msg -> ( Maybe (TxSentry.TxSentry msg), Cmd msg, List (UN.UserNotice msg) ) +execute maybeTxSentry chainCmdOrder = + case ( maybeTxSentry, chainCmdOrder ) of + ( _, None ) -> + ( maybeTxSentry, Cmd.none, [] ) - CustomSend customSend txParams -> + ( Just txSentry, CustomSend customSend txParams ) -> TxSentry.customSend txSentry customSend txParams + |> (\( a, b ) -> + ( Just a, b, [] ) + ) + + _ -> + ( Nothing + , Cmd.none + , [ UN.unexpectedError + "submodel sent chainCmd, but there is no txSentry to use!" + Nothing + ] + ) map : (subMsg -> msg) -> ChainCmd subMsg -> ChainCmd msg diff --git a/src/CommonTypes.elm b/src/CommonTypes.elm index 0032e75..da1c86a 100644 --- a/src/CommonTypes.elm +++ b/src/CommonTypes.elm @@ -1,9 +1,11 @@ -module CommonTypes exposing (..) - +module CommonTypes exposing (BuyerOrSeller(..), FactoryType(..), GTagData, InitiatorOrResponder(..), NativeFactoryType(..), TokenFactoryType(..), UserInfo, buyerOrSellerToString, factoryName, tokenUnitName) + +import Eth.Net import Eth.Types exposing (Address) import Json.Decode import Json.Encode + type alias GTagData = { event : String , category : String @@ -11,6 +13,7 @@ type alias GTagData = , value : Int } + type FactoryType = Native NativeFactoryType | Token TokenFactoryType @@ -28,7 +31,8 @@ type TokenFactoryType type alias UserInfo = - { address : Address + { network : Eth.Net.NetworkId + , address : Address , commPubkey : String } @@ -51,3 +55,41 @@ buyerOrSellerToString role = Seller -> "Seller" + + +factoryName : FactoryType -> String +factoryName factoryType = + case factoryType of + Token EthDai -> + "Dai" + + Native Eth -> + "Ether" + + Token KovanDai -> + "Kovan Dai" + + Native Kovan -> + "Kovan Ether" + + Native XDai -> + "xDai" + + +tokenUnitName : FactoryType -> String +tokenUnitName factoryType = + case factoryType of + Token EthDai -> + "Dai" + + Token KovanDai -> + "Dai" + + Native Eth -> + "ETH" + + Native Kovan -> + "ETH" + + Native XDai -> + "xDai" diff --git a/src/Config.elm b/src/Config.elm index 6d21e5e..ef0230e 100644 --- a/src/Config.elm +++ b/src/Config.elm @@ -1,4 +1,4 @@ -module Config exposing (devFeeAddress, factoryAddress, tokenContractAddress, tokenDecimals, tokenUnitName) +module Config exposing (activeFactories, devFeeAddress, factoryAddress, tokenContractAddress, tokenDecimals) import CommonTypes exposing (..) import Eth.Net @@ -10,23 +10,11 @@ tokenDecimals = 18 -tokenUnitName : FactoryType -> String -tokenUnitName factoryType = - case factoryType of - Token EthDai -> - "Dai" - - Token KovanDai -> - "Dai" - - Native Eth -> - "ETH" - - Native Kovan -> - "ETH" - - Native XDai -> - "xDai" +activeFactories : List FactoryType +activeFactories = + [ Token EthDai + , Native XDai + ] tokenContractAddress : TokenFactoryType -> Address diff --git a/src/Contracts/Types.elm b/src/Contracts/Types.elm index d715b2b..759a6b6 100644 --- a/src/Contracts/Types.elm +++ b/src/Contracts/Types.elm @@ -1,4 +1,4 @@ -module Contracts.Types exposing (ClosedReason(..), CreateParameters, DAIHardEvent(..), FullTradeInfo, PartialTradeInfo, Phase(..), PhaseStartInfo, State, Terms, TimeoutInfo(..), Trade(..), TradeCreationInfo, TradeParameters, UserParameters, bigIntToPhase, buildCreateParameters, calculateFullInitialDeposit, decodeParameters, decodePhaseStartInfo, decodeState, decodeTerms, defaultAbortPunishment, defaultBuyerDeposit, encodeTerms, eventDecoder, getBuyerOrSeller, getCurrentPhaseTimeoutInfo, getDevFee, getInitiatorOrResponder, getPhaseInterval, getPokeText, getResponderRole, initiatorOrResponderToBuyerOrSeller, partialTradeInfo, phaseIcon, phaseToInt, phaseToString, responderDeposit, tradeHasDefaultParameters, txReceiptToCreatedTradeSellId, updateCreationInfo, updateParameters, updatePhaseStartInfo, updateState, updateTerms) +module Contracts.Types exposing (ClosedReason(..), CreateParameters, DAIHardEvent(..), FullTradeInfo, PartialTradeInfo, Phase(..), PhaseStartInfo, State, Terms, TimeoutInfo(..), Trade(..), TradeCreationInfo, TradeParameters, UserParameters, bigIntToPhase, buildCreateParameters, calculateFullInitialDeposit, decodeParameters, decodePhaseStartInfo, decodeState, decodeTerms, defaultAbortPunishment, defaultBuyerDeposit, encodeTerms, eventDecoder, getBuyerOrSeller, getCreationInfo, getCurrentPhaseTimeoutInfo, getDevFee, getInitiatorOrResponder, getPhaseInterval, getPokeText, getResponderRole, initiatorOrResponderToBuyerOrSeller, partialTradeInfo, phaseIcon, phaseToInt, phaseToString, responderDeposit, tradeAddress, tradeFactory, tradeHasDefaultParameters, txReceiptToCreatedTradeSellId, updateCreationInfo, updateParameters, updatePhaseStartInfo, updateState, updateTerms) import Abi.Decode import BigInt exposing (BigInt) @@ -28,7 +28,8 @@ type Trade type alias PartialTradeInfo = - { id : Int + { factory : FactoryType + , id : Int , creationInfo : Maybe TradeCreationInfo , parameters : Maybe TradeParameters , state : Maybe State @@ -38,7 +39,8 @@ type alias PartialTradeInfo = type alias FullTradeInfo = - { id : Int + { factory : FactoryType + , id : Int , creationInfo : TradeCreationInfo , parameters : TradeParameters , state : State @@ -155,6 +157,46 @@ type alias PhaseStartInfo = } +getCreationInfo : Trade -> Maybe TradeCreationInfo +getCreationInfo trade = + case trade of + LoadedTrade fTrade -> + Just fTrade.creationInfo + + PartiallyLoadedTrade pTrade -> + pTrade.creationInfo + + Invalid -> + Nothing + + +tradeFactory : Trade -> Maybe FactoryType +tradeFactory trade = + case trade of + Invalid -> + Nothing + + PartiallyLoadedTrade pTrade -> + Just pTrade.factory + + LoadedTrade fTrade -> + Just fTrade.factory + + +tradeAddress : Trade -> Maybe Address +tradeAddress trade = + case trade of + Invalid -> + Nothing + + PartiallyLoadedTrade pTrade -> + pTrade.creationInfo + |> Maybe.map .address + + LoadedTrade fTrade -> + Just fTrade.creationInfo.address + + defaultBuyerDeposit : TokenValue -> TokenValue defaultBuyerDeposit tradeAmount = TokenValue.div tradeAmount 3 @@ -190,9 +232,9 @@ responderDeposit parameters = parameters.buyerDeposit -partialTradeInfo : Int -> Trade -partialTradeInfo factoryID = - PartiallyLoadedTrade (PartialTradeInfo factoryID Nothing Nothing Nothing Nothing Nothing) +partialTradeInfo : FactoryType -> Int -> Trade +partialTradeInfo factory factoryID = + PartiallyLoadedTrade (PartialTradeInfo factory factoryID Nothing Nothing Nothing Nothing Nothing) updateCreationInfo : TradeCreationInfo -> Trade -> Trade @@ -287,6 +329,7 @@ checkIfTradeLoaded pInfo = ( ( Just creationInfo, Just parameters ), ( Just state, Just terms ), Just phaseStartInfo ) -> LoadedTrade (FullTradeInfo + pInfo.factory pInfo.id creationInfo parameters @@ -318,9 +361,14 @@ deriveValues parameters state terms = Time.millisToPosix 0 in { phaseEndTime = - TimeHelpers.add - state.phaseStartTime - currentPhaseInterval + case state.phase of + Closed -> + Time.millisToPosix (2 ^ 53 - 1) + + _ -> + TimeHelpers.add + state.phaseStartTime + currentPhaseInterval , margin = Margin.margin parameters.tradeAmount terms.price } diff --git a/src/Contracts/Wrappers.elm b/src/Contracts/Wrappers.elm index c4ea368..32b4e21 100644 --- a/src/Contracts/Wrappers.elm +++ b/src/Contracts/Wrappers.elm @@ -1,4 +1,4 @@ -module Contracts.Wrappers exposing (getAllowanceCmd, getCreationInfoFromIdCmd, getInitiatedEventDataSentryCmd, getNumTradesCmd, getParametersAndStateCmd, getParametersCmd, getParametersStateAndPhaseInfoCmd, getStateCmd, openTrade) +module Contracts.Wrappers exposing (getAllowanceCmd, getCreationInfoFromIdCmd, getInitiatedEventDataSentryCmd, getNumTradesCmd, getParametersAndStateCmd, getParametersCmd, getParametersStateAndPhaseInfoCmd, getPhaseCmd, getStateCmd, openTrade) import BigInt exposing (BigInt) import CommonTypes exposing (..) @@ -63,64 +63,71 @@ openTrade factoryType parameters = ) -getAllowanceCmd : EthHelpers.Web3Context -> TokenFactoryType -> Address -> Address -> (Result Http.Error BigInt -> msg) -> Cmd msg -getAllowanceCmd web3Context tokenFactoryType owner spender msgConstructor = +getAllowanceCmd : TokenFactoryType -> Address -> Address -> (Result Http.Error BigInt -> msg) -> Cmd msg +getAllowanceCmd tokenType owner spender msgConstructor = Eth.call - web3Context.httpProvider + (EthHelpers.httpProviderForFactory (Token tokenType)) (TokenContract.allowance - (Config.tokenContractAddress tokenFactoryType) + (Config.tokenContractAddress tokenType) owner spender ) |> Task.attempt msgConstructor -getNumTradesCmd : EthHelpers.Web3Context -> (Result Http.Error BigInt -> msg) -> Cmd msg -getNumTradesCmd web3Context msgConstructor = - Eth.call web3Context.httpProvider (DHF.numTrades (Config.factoryAddress web3Context.factoryType)) +getNumTradesCmd : FactoryType -> (Result Http.Error BigInt -> msg) -> Cmd msg +getNumTradesCmd factoryType msgConstructor = + Eth.call (EthHelpers.httpProviderForFactory factoryType) (DHF.numTrades (Config.factoryAddress factoryType)) |> Task.attempt msgConstructor -getCreationInfoFromIdCmd : EthHelpers.Web3Context -> BigInt -> (Result Http.Error DHF.CreatedTrade -> msg) -> Cmd msg -getCreationInfoFromIdCmd web3Context ttId msgConstructor = - Eth.call web3Context.httpProvider (DHF.createdTrades (Config.factoryAddress web3Context.factoryType) ttId) +getCreationInfoFromIdCmd : FactoryType -> BigInt -> (Result Http.Error DHF.CreatedTrade -> msg) -> Cmd msg +getCreationInfoFromIdCmd factoryType ttId msgConstructor = + Eth.call (EthHelpers.httpProviderForFactory factoryType) (DHF.createdTrades (Config.factoryAddress factoryType) ttId) |> Task.attempt msgConstructor -getParametersAndStateCmd : EthHelpers.Web3Context -> Address -> (Result Http.Error (Result String TradeParameters) -> msg) -> (Result Http.Error (Maybe State) -> msg) -> Cmd msg -getParametersAndStateCmd web3Context address parametersMsgConstructor stateMsgConstructor = +getParametersAndStateCmd : FactoryType -> Address -> (Result Http.Error (Result String TradeParameters) -> msg) -> (Result Http.Error (Maybe State) -> msg) -> Cmd msg +getParametersAndStateCmd factoryType address parametersMsgConstructor stateMsgConstructor = Cmd.batch - [ getParametersCmd web3Context address parametersMsgConstructor - , getStateCmd web3Context address stateMsgConstructor + [ getParametersCmd factoryType address parametersMsgConstructor + , getStateCmd factoryType address stateMsgConstructor ] -getParametersStateAndPhaseInfoCmd : EthHelpers.Web3Context -> Address -> (Result Http.Error (Result String TradeParameters) -> msg) -> (Result Http.Error (Maybe State) -> msg) -> (Result Http.Error (Maybe PhaseStartInfo) -> msg) -> Cmd msg -getParametersStateAndPhaseInfoCmd web3Context address parametersMsgConstructor stateMsgConstructor phaseStartInfoConstructor = +getParametersStateAndPhaseInfoCmd : FactoryType -> Address -> (Result Http.Error (Result String TradeParameters) -> msg) -> (Result Http.Error (Maybe State) -> msg) -> (Result Http.Error (Maybe PhaseStartInfo) -> msg) -> Cmd msg +getParametersStateAndPhaseInfoCmd factoryType address parametersMsgConstructor stateMsgConstructor phaseStartInfoConstructor = Cmd.batch - [ getParametersCmd web3Context address parametersMsgConstructor - , getStateCmd web3Context address stateMsgConstructor - , getPhaseStartInfoCmd web3Context address phaseStartInfoConstructor + [ getParametersCmd factoryType address parametersMsgConstructor + , getStateCmd factoryType address stateMsgConstructor + , getPhaseStartInfoCmd factoryType address phaseStartInfoConstructor ] -getParametersCmd : EthHelpers.Web3Context -> Address -> (Result Http.Error (Result String TradeParameters) -> msg) -> Cmd msg -getParametersCmd web3Context ttAddress msgConstructor = - Eth.call web3Context.httpProvider (DHT.getParameters ttAddress) +getParametersCmd : FactoryType -> Address -> (Result Http.Error (Result String TradeParameters) -> msg) -> Cmd msg +getParametersCmd factoryType ttAddress msgConstructor = + Eth.call (EthHelpers.httpProviderForFactory factoryType) (DHT.getParameters ttAddress) |> Task.map decodeParameters |> Task.attempt msgConstructor -getStateCmd : EthHelpers.Web3Context -> Address -> (Result Http.Error (Maybe State) -> msg) -> Cmd msg -getStateCmd web3Context ttAddress msgConstructor = - Eth.call web3Context.httpProvider (DHT.getState ttAddress) +getStateCmd : FactoryType -> Address -> (Result Http.Error (Maybe State) -> msg) -> Cmd msg +getStateCmd factoryType ttAddress msgConstructor = + Eth.call (EthHelpers.httpProviderForFactory factoryType) (DHT.getState ttAddress) |> Task.map decodeState |> Task.attempt msgConstructor -getPhaseStartInfoCmd : EthHelpers.Web3Context -> Address -> (Result Http.Error (Maybe PhaseStartInfo) -> msg) -> Cmd msg -getPhaseStartInfoCmd web3Context ttAddress msgConstructor = - Eth.call web3Context.httpProvider (DHT.getPhaseStartInfo ttAddress) +getPhaseCmd : FactoryType -> Address -> (Result Http.Error (Maybe Phase) -> msg) -> Cmd msg +getPhaseCmd factoryType ttAddress msgConstructor = + Eth.call (EthHelpers.httpProviderForFactory factoryType) (DHT.phase ttAddress) + |> Task.map bigIntToPhase + |> Task.attempt msgConstructor + + +getPhaseStartInfoCmd : FactoryType -> Address -> (Result Http.Error (Maybe PhaseStartInfo) -> msg) -> Cmd msg +getPhaseStartInfoCmd factoryType ttAddress msgConstructor = + Eth.call (EthHelpers.httpProviderForFactory factoryType) (DHT.getPhaseStartInfo ttAddress) |> Task.map decodePhaseStartInfo |> Task.attempt msgConstructor diff --git a/src/Create/State.elm b/src/Create/State.elm index b31937a..2f25540 100644 --- a/src/Create/State.elm +++ b/src/Create/State.elm @@ -1,7 +1,8 @@ -module Create.State exposing (init, subscriptions, update, updateUserInfo, updateWeb3Context) +module Create.State exposing (init, subscriptions, update, updateWalletState) import AppCmd import BigInt exposing (BigInt) +import ChainCmd exposing (ChainCmd) import CommonTypes exposing (..) import Config import Contracts.Generated.ERC20Token as TokenContract @@ -14,7 +15,6 @@ import Eth.Types exposing (Address) import FiatValue exposing (FiatValue) import Flip exposing (flip) import Helpers.BigInt as BigIntHelpers -import Helpers.ChainCmd as ChainCmd exposing (ChainCmd) import Helpers.Eth as EthHelpers import Helpers.Time as TimeHelpers import Helpers.Tuple exposing (extractTuple3Result, mapEachTuple3) @@ -27,14 +27,14 @@ import Task import Time import TokenValue exposing (TokenValue) import UserNotice as UN +import Wallet -init : EthHelpers.Web3Context -> Maybe UserInfo -> UpdateResult -init web3Context userInfo = +init : Wallet.State -> UpdateResult +init wallet = let model = - { web3Context = web3Context - , userInfo = userInfo + { wallet = wallet , inputs = initialInputs , errors = noErrors , showFiatTypeDropdown = False @@ -63,43 +63,36 @@ initialInputs = } -updateUserInfo : Maybe UserInfo -> Model -> ( Model, Cmd Msg ) -updateUserInfo userInfo model = - ( { model | userInfo = userInfo } +updateWalletState : Wallet.State -> Model -> ( Model, Cmd Msg ) +updateWalletState wallet model = + ( { model | wallet = wallet } |> updateInputs model.inputs - , case ( userInfo, model.web3Context.factoryType ) of - ( Just uInfo, Token tokenType ) -> + , case ( Wallet.userInfo wallet, Wallet.factory wallet ) of + ( Just uInfo, Just (Token tokenType) ) -> Contracts.Wrappers.getAllowanceCmd - model.web3Context tokenType uInfo.address - (Config.factoryAddress model.web3Context.factoryType) - AllowanceFetched + (Config.factoryAddress (Token tokenType)) + (AllowanceFetched tokenType) _ -> Cmd.none ) -updateWeb3Context : EthHelpers.Web3Context -> Model -> Model -updateWeb3Context newWeb3Context model = - { model | web3Context = newWeb3Context } - - update : Msg -> Model -> UpdateResult update msg prevModel = case msg of Refresh time -> - case ( prevModel.userInfo, prevModel.web3Context.factoryType ) of - ( Just userInfo, Token tokenType ) -> + case ( Wallet.userInfo prevModel.wallet, Wallet.factory prevModel.wallet ) of + ( Just userInfo, Just (Token tokenType) ) -> let cmd = Contracts.Wrappers.getAllowanceCmd - prevModel.web3Context tokenType userInfo.address - (Config.factoryAddress prevModel.web3Context.factoryType) - AllowanceFetched + (Config.factoryAddress (Token tokenType)) + (AllowanceFetched tokenType) in UpdateResult prevModel @@ -231,8 +224,8 @@ update msg prevModel = [] ) - CreateClicked userInfo -> - case validateInputs prevModel.web3Context.factoryType prevModel.inputs of + CreateClicked factoryType userInfo -> + case validateInputs prevModel.inputs of Ok userParameters -> let createParameters = @@ -240,7 +233,7 @@ update msg prevModel = in justModelUpdate { prevModel - | txChainStatus = Just <| Confirm createParameters + | txChainStatus = Just <| Confirm factoryType createParameters , depositAmount = Just <| (CTypes.calculateFullInitialDeposit createParameters @@ -273,12 +266,12 @@ update msg prevModel = ChainCmd.none [ AppCmd.gTag "abort" "abort" "create" 0 ] - ConfirmCreate createParameters fullDepositAmount -> + ConfirmCreate factoryType createParameters fullDepositAmount -> let ( txChainStatus, chainCmd ) = - case prevModel.web3Context.factoryType of + case factoryType of Native _ -> - initiateCreateCall prevModel.web3Context.factoryType createParameters + initiateCreateCall factoryType createParameters Token tokenType -> let @@ -287,13 +280,13 @@ update msg prevModel = txParams = TokenContract.approve (Config.tokenContractAddress tokenType) - (Config.factoryAddress prevModel.web3Context.factoryType) + (Config.factoryAddress factoryType) fullDepositAmount |> Eth.toSend customSend = { onMined = Nothing - , onSign = Just (ApproveSigned createParameters) + , onSign = Just (ApproveSigned tokenType createParameters) , onBroadcast = Nothing } in @@ -302,13 +295,13 @@ update msg prevModel = case prevModel.allowance of Just allowance -> if BigInt.compare allowance fullDepositAmount /= LT then - initiateCreateCall prevModel.web3Context.factoryType createParameters + initiateCreateCall factoryType createParameters else - ( Just ApproveNeedsSig, approveChainCmd ) + ( Just (ApproveNeedsSig tokenType), approveChainCmd ) Nothing -> - ( Just ApproveNeedsSig, approveChainCmd ) + ( Just (ApproveNeedsSig tokenType), approveChainCmd ) in UpdateResult { prevModel | txChainStatus = txChainStatus } @@ -316,10 +309,10 @@ update msg prevModel = chainCmd [] - ApproveSigned createParameters result -> + ApproveSigned tokenType createParameters result -> case result of Ok txHash -> - justModelUpdate { prevModel | txChainStatus = Just <| ApproveMining createParameters txHash } + justModelUpdate { prevModel | txChainStatus = Just <| ApproveMining tokenType createParameters txHash } Err s -> UpdateResult @@ -328,7 +321,7 @@ update msg prevModel = ChainCmd.none [ AppCmd.UserNotice <| UN.web3SigError "appove" s ] - AllowanceFetched fetchResult -> + AllowanceFetched tokenType fetchResult -> case fetchResult of Ok allowance -> let @@ -338,11 +331,11 @@ update msg prevModel = } in case ( newModel.txChainStatus, newModel.depositAmount ) of - ( Just (ApproveMining createParameters _), Just depositAmount ) -> + ( Just (ApproveMining _ createParameters _), Just depositAmount ) -> if BigInt.compare allowance depositAmount /= LT then let ( txChainStatus, chainCmd ) = - initiateCreateCall newModel.web3Context.factoryType createParameters + initiateCreateCall (Token tokenType) createParameters in UpdateResult { newModel | txChainStatus = txChainStatus } @@ -363,10 +356,10 @@ update msg prevModel = ChainCmd.none [ AppCmd.UserNotice <| UN.web3FetchError "allowance" httpError ] - CreateSigned result -> + CreateSigned factoryType result -> case result of Ok txHash -> - justModelUpdate { prevModel | txChainStatus = Just <| CreateMining txHash } + justModelUpdate { prevModel | txChainStatus = Just <| CreateMining factoryType txHash } Err s -> UpdateResult @@ -375,17 +368,17 @@ update msg prevModel = ChainCmd.none [ AppCmd.UserNotice <| UN.web3SigError "create" s ] - CreateMined (Err s) -> + CreateMined factoryType (Err s) -> UpdateResult prevModel Cmd.none ChainCmd.none [ AppCmd.UserNotice <| UN.web3MiningError "create" s ] - CreateMined (Ok txReceipt) -> + CreateMined factory (Ok txReceipt) -> let maybeId = - CTypes.txReceiptToCreatedTradeSellId prevModel.web3Context.factoryType txReceipt + CTypes.txReceiptToCreatedTradeSellId factory txReceipt |> Result.toMaybe |> Maybe.andThen BigIntHelpers.toInt in @@ -395,7 +388,7 @@ update msg prevModel = prevModel Cmd.none ChainCmd.none - [ AppCmd.GotoRoute (Routing.Trade id) ] + [ AppCmd.GotoRoute (Routing.Trade factory id) ] Nothing -> UpdateResult @@ -434,12 +427,12 @@ initiateCreateCall factoryType parameters = |> Eth.toSend customSend = - { onMined = Just ( CreateMined, Nothing ) - , onSign = Just CreateSigned + { onMined = Just ( CreateMined factoryType, Nothing ) + , onSign = Just (CreateSigned factoryType) , onBroadcast = Nothing } in - ( Just CreateNeedsSig + ( Just (CreateNeedsSig factoryType) , ChainCmd.custom customSend txParams ) @@ -454,7 +447,7 @@ updateParameters : Model -> Model updateParameters model = let validateResult = - validateInputs model.web3Context.factoryType model.inputs + validateInputs model.inputs -- Don't log errors right away (wait until the user tries to submit) -- But if there are already errors displaying, update them accordingly @@ -474,14 +467,14 @@ updateParameters model = | createParameters = Maybe.map2 CTypes.buildCreateParameters - model.userInfo + (Wallet.userInfo model.wallet) (Result.toMaybe validateResult) , errors = newErrors } -validateInputs : FactoryType -> Inputs -> Result Errors CTypes.UserParameters -validateInputs factoryType inputs = +validateInputs : Inputs -> Result Errors CTypes.UserParameters +validateInputs inputs = Result.map5 (\daiAmount fiatAmount fiatType paymentMethod ( autorecallInterval, autoabortInterval, autoreleaseInterval ) -> { initiatorRole = inputs.userRole @@ -497,7 +490,7 @@ validateInputs factoryType inputs = ] } ) - (interpretDaiAmount factoryType inputs.daiAmount + (interpretDaiAmount inputs.daiAmount |> Result.mapError (\e -> { noErrors | daiAmount = Just e }) ) (interpretFiatAmount inputs.fiatAmount @@ -536,8 +529,8 @@ validateInputs factoryType inputs = ) -interpretDaiAmount : FactoryType -> String -> Result String TokenValue -interpretDaiAmount factoryType input = +interpretDaiAmount : String -> Result String TokenValue +interpretDaiAmount input = if input == "" then Err "You must specify a trade amount." @@ -548,7 +541,7 @@ interpretDaiAmount factoryType input = Just value -> if TokenValue.getFloatValueWithWarning value < 1 then - Err <| "Trade amount must be a least 1 " ++ Config.tokenUnitName factoryType ++ "." + Err <| "Trade amount can't be less than 1." else Ok value diff --git a/src/Create/Types.elm b/src/Create/Types.elm index 6761f37..6a79474 100644 --- a/src/Create/Types.elm +++ b/src/Create/Types.elm @@ -6,18 +6,18 @@ import CommonTypes exposing (..) import Contracts.Types as CTypes import Create.PMWizard.Types as PMWizard import Eth.Types exposing (Address, TxHash, TxReceipt) -import Helpers.ChainCmd as ChainCmd exposing (ChainCmd) -import Helpers.Eth as EthHelpers exposing (Web3Context) +import ChainCmd exposing (ChainCmd) +import Helpers.Eth as EthHelpers import Http import PaymentMethods exposing (PaymentMethod) import Routing import Time import TokenValue exposing (TokenValue) +import Wallet type alias Model = - { web3Context : Web3Context - , userInfo : Maybe UserInfo + { wallet : Wallet.State , inputs : Inputs , errors : Errors , showFiatTypeDropdown : Bool @@ -40,24 +40,24 @@ type Msg | AutoabortIntervalChanged Time.Posix | AutoreleaseIntervalChanged Time.Posix | ChangePaymentMethodText String - | CreateClicked UserInfo + | CreateClicked FactoryType UserInfo | AbortCreate - | ConfirmCreate CTypes.CreateParameters BigInt - | AllowanceFetched (Result Http.Error BigInt) - | ApproveSigned CTypes.CreateParameters (Result String TxHash) - | CreateSigned (Result String TxHash) - | CreateMined (Result String TxReceipt) + | ConfirmCreate FactoryType CTypes.CreateParameters BigInt + | AllowanceFetched TokenFactoryType (Result Http.Error BigInt) + | ApproveSigned TokenFactoryType CTypes.CreateParameters (Result String TxHash) + | CreateSigned FactoryType (Result String TxHash) + | CreateMined FactoryType (Result String TxReceipt) | Web3Connect | NoOp | AppCmd (AppCmd Msg) type TxChainStatus - = Confirm CTypes.CreateParameters - | ApproveNeedsSig - | ApproveMining CTypes.CreateParameters TxHash - | CreateNeedsSig - | CreateMining TxHash + = Confirm FactoryType CTypes.CreateParameters + | ApproveNeedsSig TokenFactoryType + | ApproveMining TokenFactoryType CTypes.CreateParameters TxHash + | CreateNeedsSig FactoryType + | CreateMining FactoryType TxHash type alias Inputs = diff --git a/src/Create/View.elm b/src/Create/View.elm index 7e73a1e..e9d3eeb 100644 --- a/src/Create/View.elm +++ b/src/Create/View.elm @@ -24,6 +24,7 @@ import Maybe.Extra import PaymentMethods exposing (PaymentMethod) import Time import TokenValue exposing (TokenValue) +import Wallet root : Model -> Element Msg @@ -44,12 +45,16 @@ root model = ] [ mainInputElement model , phasesElement model - , openButtonElement model.userInfo + , openButtonElement model.wallet ] mainInputElement : Model -> Element Msg mainInputElement model = + let + factory = + Wallet.factoryWithDefault model.wallet + in Element.column [ Element.width Element.fill , Element.spacing 20 @@ -62,23 +67,26 @@ mainInputElement model = [ Element.width Element.fill , Element.spaceEvenly ] - [ tradeTypeElement model - , daiElement model + [ tradeTypeElement factory model + , daiElement factory model , fiatElement model ] , feeNotifyElement model ] -tradeTypeElement : Model -> Element Msg -tradeTypeElement model = +tradeTypeElement : FactoryType -> Model -> Element Msg +tradeTypeElement factory model = EH.withHeader "Trade Type" - (roleToggleElement model.web3Context.factoryType model.inputs.userRole) + (roleToggleElement + (tokenUnitName factory) + model.inputs.userRole + ) -roleToggleElement : FactoryType -> BuyerOrSeller -> Element Msg -roleToggleElement factoryType userRole = +roleToggleElement : String -> BuyerOrSeller -> Element Msg +roleToggleElement tokenName userRole = let baseStyles = [ Element.Font.size 24 @@ -101,15 +109,15 @@ roleToggleElement factoryType userRole = Element.row [ Element.spacing 20 ] [ Element.el ([ Element.Events.onClick <| ChangeRole Seller ] ++ sellDaiStyles) - (Element.text <| "Sell " ++ Config.tokenUnitName factoryType) + (Element.text <| "Sell " ++ tokenName) , Element.el ([ Element.Events.onClick <| ChangeRole Buyer ] ++ buyDaiStyles) - (Element.text <| "Buy " ++ Config.tokenUnitName factoryType) + (Element.text <| "Buy " ++ tokenName) ] -daiElement : Model -> Element Msg -daiElement model = +daiElement : FactoryType -> Model -> Element Msg +daiElement factory model = EH.niceBottomBorderEl <| EH.withHeader (case model.inputs.userRole of @@ -119,7 +127,11 @@ daiElement model = Seller -> "You're selling" ) - (daiInputElement model.web3Context.factoryType model.inputs.daiAmount model.errors.daiAmount) + (daiInputElement + factory + model.inputs.daiAmount + model.errors.daiAmount + ) daiInputElement : FactoryType -> String -> Maybe String -> Element Msg @@ -207,16 +219,19 @@ fiatInputElement typeString amountString showFiatTypeDropdown maybeAmountError m FiatAmountChanged -openButtonElement : Maybe UserInfo -> Element Msg -openButtonElement maybeUserInfo = +openButtonElement : Wallet.State -> Element Msg +openButtonElement wallet = Element.el [ Element.centerX ] <| - case maybeUserInfo of - Just userInfo -> - EH.redButton "Open Trade" (CreateClicked userInfo) + case ( Wallet.userInfo wallet, Wallet.factory wallet ) of + ( Just userInfo, Just factory ) -> + EH.redButton "Open Trade" (CreateClicked factory userInfo) - Nothing -> + ( Nothing, _ ) -> EH.redButton "Connect to Wallet" Web3Connect + ( _, Nothing ) -> + EH.disabledButton "Unsupported Network" Nothing + feeNotifyElement : Model -> Element Msg feeNotifyElement model = @@ -228,7 +243,7 @@ feeNotifyElement model = ++ TokenValue.toConciseString (TokenValue.div daiAmount 100) ++ " " - ++ Config.tokenUnitName model.web3Context.factoryType + ++ tokenUnitName (Wallet.factoryWithDefault model.wallet) ++ "." Nothing -> @@ -511,18 +526,15 @@ getModalOrNone model = txChainStatusModal : TxChainStatus -> Model -> Element Msg txChainStatusModal txChainStatus model = case txChainStatus of - Confirm createParameters -> + Confirm factoryType createParameters -> let - tokenUnitName = - Config.tokenUnitName model.web3Context.factoryType - ( depositAmountEl, confirmButton ) = case model.depositAmount of Just depositAmount -> ( TokenValue.tokenValue depositAmount |> TokenValue.toConciseString |> Element.text - , EH.redButton "Yes, I definitely want to open this trade." (ConfirmCreate createParameters depositAmount) + , EH.redButton "Yes, I definitely want to open this trade." (ConfirmCreate factoryType createParameters depositAmount) ) Nothing -> @@ -562,12 +574,12 @@ txChainStatusModal txChainStatus model = (getWarningParagraphs createParameters ++ [ [ Element.text <| "You will deposit " , depositAmountEl - , Element.text <| " " ++ tokenUnitName ++ " (including the 1% dev fee) to open this trade." + , Element.text <| " " ++ tokenUnitName factoryType ++ " (including the 1% dev fee) to open this trade." ] ] - ++ (case model.web3Context.factoryType of + ++ (case factoryType of Token _ -> - [ [ Element.text <| "This ususally requires two Metamask signatures. Your " ++ tokenUnitName ++ " will not be deposited until the final transaction has been mined." ] ] + [ [ Element.text <| "This ususally requires two Metamask signatures. Your " ++ tokenUnitName factoryType ++ " will not be deposited until the final transaction has been mined." ] ] Native _ -> [] @@ -583,7 +595,7 @@ txChainStatusModal txChainStatus model = ) AbortCreate - ApproveNeedsSig -> + ApproveNeedsSig tokenType -> Element.el [ Element.Events.onClick <| AppCmd <| @@ -596,7 +608,7 @@ txChainStatusModal txChainStatus model = , Element.text "Note that there will be a second transaction to sign after this." ] - ApproveMining createParameters txHash -> + ApproveMining tokenType createParameters txHash -> Element.el [ Element.Events.onClick <| AppCmd <| @@ -606,13 +618,13 @@ txChainStatusModal txChainStatus model = EH.txProcessModal [ Element.text "Mining the initial approve transaction..." , Element.newTabLink [ Element.Font.underline, Element.Font.color EH.blue ] - { url = EthHelpers.makeViewTxUrl model.web3Context.factoryType txHash + { url = EthHelpers.makeViewTxUrl (Token tokenType) txHash , label = Element.text "See the transaction on Etherscan" } , Element.text "Funds will not leave your wallet until you sign the next transaction." ] - CreateNeedsSig -> + CreateNeedsSig _ -> Element.el [ Element.Events.onClick <| AppCmd <| @@ -624,7 +636,7 @@ txChainStatusModal txChainStatus model = , Element.text "(check Metamask!)" ] - CreateMining txHash -> + CreateMining factoryType txHash -> Element.el [ Element.Events.onClick <| AppCmd <| @@ -634,7 +646,7 @@ txChainStatusModal txChainStatus model = EH.txProcessModal [ Element.text "Mining the final create call..." , Element.newTabLink [ Element.Font.underline, Element.Font.color EH.blue ] - { url = EthHelpers.makeViewTxUrl model.web3Context.factoryType txHash + { url = EthHelpers.makeViewTxUrl factoryType txHash , label = Element.text "See the transaction on Etherscan" } , Element.text "You will be redirected when it's mined." diff --git a/src/Filters/State.elm b/src/Filters/State.elm new file mode 100644 index 0000000..ce9dc72 --- /dev/null +++ b/src/Filters/State.elm @@ -0,0 +1,30 @@ +module Filters.State exposing (init, update) + +import Filters.Types exposing (..) +import List.Extra + + +init : List FilterSet -> Model +init = + identity + + +update : Msg -> Model -> Model +update msg filterSets = + case msg of + SetOption filterType optionLabel checked -> + filterSets + |> List.Extra.updateIf (.type_ >> (==) filterType) + (\filterSet -> + { filterSet + | options = + filterSet.options + |> List.Extra.updateIf (.label >> (==) optionLabel) + (setOption checked) + } + ) + + +setOption : Bool -> Option -> Option +setOption checked option = + { option | checked = checked } diff --git a/src/Filters/Types.elm b/src/Filters/Types.elm new file mode 100644 index 0000000..055c511 --- /dev/null +++ b/src/Filters/Types.elm @@ -0,0 +1,125 @@ +module Filters.Types exposing (FilterSet, FilterType(..), Model, Msg(..), Option, filterTrade, filterTrades, filterTypeLabel, getFilterSet, offerType, phases, role) + +import CommonTypes exposing (..) +import Contracts.Types as CTypes +import Eth.Types exposing (Address) +import List.Extra + + +type alias Model = + List FilterSet + + +type Msg + = SetOption FilterType String Bool + + +type alias FilterSet = + { type_ : FilterType + , options : List Option + } + + +type alias Option = + { label : String + , checked : Bool + , testTrade : CTypes.FullTradeInfo -> Bool + } + + +type FilterType + = Phase + | Role + | OfferType + + +filterTypeLabel : FilterType -> String +filterTypeLabel filterType = + case filterType of + Phase -> + "Phases" + + Role -> + "Role" + + OfferType -> + "Offer Type" + + +getFilterSet : FilterType -> Model -> Maybe FilterSet +getFilterSet filterType filterSets = + List.Extra.find + (.type_ >> (==) filterType) + filterSets + + +phases : Bool -> Bool -> Bool -> Bool -> FilterSet +phases openChecked committedChecked judgementChecked closedChecked = + FilterSet + Phase + [ Option + "Open" + openChecked + (\t -> t.state.phase == CTypes.Open) + , Option + "Committed" + committedChecked + (\t -> t.state.phase == CTypes.Committed) + , Option + "Judgment" + judgementChecked + (\t -> t.state.phase == CTypes.Judgment) + , Option + "Closed" + closedChecked + (\t -> t.state.phase == CTypes.Closed) + ] + + +role : Address -> Bool -> Bool -> FilterSet +role addr buyerChecked sellerChecked = + FilterSet + Role + [ Option + "Buyer" + buyerChecked + (\t -> CTypes.getBuyerOrSeller t addr == Just Buyer) + , Option + "Seller" + sellerChecked + (\t -> CTypes.getBuyerOrSeller t addr == Just Seller) + ] + + +offerType : Bool -> Bool -> FilterSet +offerType buyingChecked sellingChecked = + FilterSet + OfferType + [ Option + "Buying" + buyingChecked + (\t -> t.parameters.initiatorRole == Buyer) + , Option + "Selling" + sellingChecked + (\t -> t.parameters.initiatorRole == Seller) + ] + + +filterTrades : List FilterSet -> List CTypes.FullTradeInfo -> List CTypes.FullTradeInfo +filterTrades filterSets trades = + trades + |> List.filter (filterTrade filterSets) + + +filterTrade : List FilterSet -> CTypes.FullTradeInfo -> Bool +filterTrade filterSets trade = + filterSets + |> List.all + (\filterSet -> + filterSet.options + |> List.any + (\option -> + option.checked && option.testTrade trade + ) + ) diff --git a/src/Filters/View.elm b/src/Filters/View.elm new file mode 100644 index 0000000..f39d1b7 --- /dev/null +++ b/src/Filters/View.elm @@ -0,0 +1,43 @@ +module Filters.View exposing (view) + +import Element exposing (Element) +import Element.Font +import Element.Input +import Filters.Types exposing (..) + + +view : Model -> Element Msg +view filterSets = + Element.row + [ Element.spacing 20 ] + <| + List.map viewFilterSet filterSets + + +viewFilterSet : FilterSet -> Element Msg +viewFilterSet filterSet = + Element.column + [ Element.spacing 15 + , Element.alignTop + ] + [ Element.el + [ Element.Font.size 28 + , Element.Font.medium + ] + (Element.text <| filterTypeLabel filterSet.type_) + , Element.column + [ Element.spacing 5 ] + <| + List.map (viewOption filterSet.type_) filterSet.options + ] + + +viewOption : FilterType -> Option -> Element Msg +viewOption filterType option = + Element.Input.checkbox + [] + { onChange = SetOption filterType option.label + , icon = Element.Input.defaultCheckbox + , checked = option.checked + , label = Element.Input.labelRight [] <| Element.text option.label + } diff --git a/src/Helpers/Element.elm b/src/Helpers/Element.elm index 78cd2a6..4fd9320 100644 --- a/src/Helpers/Element.elm +++ b/src/Helpers/Element.elm @@ -847,7 +847,7 @@ daiSymbolAndLabel factoryType = , Element.Font.medium , Element.Font.color currencyLabelColor ] - (Element.text <| Config.tokenUnitName factoryType) + (Element.text <| tokenUnitName factoryType) ] diff --git a/src/Helpers/Eth.elm b/src/Helpers/Eth.elm index 362afe9..1f8301d 100644 --- a/src/Helpers/Eth.elm +++ b/src/Helpers/Eth.elm @@ -1,134 +1,32 @@ -module Helpers.Eth exposing (Web3Context, addressIfNot0x0, factoryTypeToNetworkId, factoryTypeToString, getLogAt, intToFactoryType, makeViewAddressUrl, makeViewTxUrl, networkIdToFactoryType, updateCallValue, web3Context) +module Helpers.Eth exposing (addressIfNot0x0, getLogAt, httpProviderForFactory, makeViewAddressUrl, makeViewTxUrl, updateCallValue) import Array import BigInt exposing (BigInt) import CommonTypes exposing (..) import Config -import Eth.Net as Net +import Eth.Net import Eth.Sentry.Tx as TxSentry import Eth.Types exposing (Address, HttpProvider, TxHash, WebsocketProvider) import Eth.Utils -type alias Web3Context = - { factoryType : FactoryType - , httpProvider : HttpProvider - , wsProvider : WebsocketProvider - } - - -factoryTypeToString : FactoryType -> String -factoryTypeToString factoryType = - case factoryType of - Token EthDai -> - "Ethereum Dai" - - Native Eth -> - "Ethereum Eth" - - Token KovanDai -> - "Kovan Dai" - - Native Kovan -> - "Kovan Eth" - - Native XDai -> - "xDai" - - -networkIdToFactoryType : Net.NetworkId -> Maybe FactoryType -networkIdToFactoryType networkId = - case networkId of - Net.Mainnet -> - Just <| Token EthDai - - Net.Kovan -> - Just <| Token KovanDai - - -- Net.RskMain -> - -- Just <| Native Rootstock - -- Net.RskTest -> - -- Just <| Native RootstockTest - Net.Private 100 -> - Just <| Native XDai - - _ -> - Nothing - - -factoryTypeToNetworkId : FactoryType -> Net.NetworkId -factoryTypeToNetworkId factoryType = - case factoryType of - Token EthDai -> - Net.Mainnet - - Native Eth -> - Net.Mainnet - - Token KovanDai -> - Net.Kovan - - Native Kovan -> - Net.Kovan - - -- Native Rootstock -> - -- Net.RskMain - -- Native RootstockTest -> - -- Net.RskTest - Native XDai -> - Net.Private 100 - - -intToFactoryType : Int -> Maybe FactoryType -intToFactoryType = - Net.toNetworkId >> networkIdToFactoryType - - -web3Context : FactoryType -> Web3Context -web3Context factoryType = +httpProviderForFactory : FactoryType -> HttpProvider +httpProviderForFactory factoryType = case factoryType of Token EthDai -> - Web3Context - factoryType - "https://mainnet.infura.io/v3/e3eef0e2435349bf9164e6f465bd7cf9" - "wss://mainnet.infura.io/ws" + "https://mainnet.infura.io/v3/e3eef0e2435349bf9164e6f465bd7cf9" Native Eth -> - Web3Context - factoryType - "https://mainnet.infura.io/v3/e3eef0e2435349bf9164e6f465bd7cf9" - "wss://mainnet.infura.io/ws" + "https://mainnet.infura.io/v3/e3eef0e2435349bf9164e6f465bd7cf9" Token KovanDai -> - Web3Context - factoryType - "https://kovan.infura.io/v3/e3eef0e2435349bf9164e6f465bd7cf9" - "wss://kovan.infura.io/ws" + "https://kovan.infura.io/v3/e3eef0e2435349bf9164e6f465bd7cf9" Native Kovan -> - Web3Context - factoryType - "https://kovan.infura.io/v3/e3eef0e2435349bf9164e6f465bd7cf9" - "wss://kovan.infura.io/ws" + "https://kovan.infura.io/v3/e3eef0e2435349bf9164e6f465bd7cf9" Native XDai -> - Web3Context - factoryType - "https://dai.poa.network" - "" - - - --- Native Rootstock -> --- Web3Context --- factoryType --- "https://public-node.rsk.co" --- "" --- Native RootstockTest -> --- Web3Context --- factoryType --- "https://public-node.testnet.rsk.co" --- "" + "https://dai.poa.network" addressIfNot0x0 : Address -> Maybe Address diff --git a/src/Helpers/Tuple.elm b/src/Helpers/Tuple.elm index e243dd1..729b4c0 100644 --- a/src/Helpers/Tuple.elm +++ b/src/Helpers/Tuple.elm @@ -1,4 +1,4 @@ -module Helpers.Tuple exposing (extractTuple3Result, mapEachTuple3, mapTuple2, mapTuple3) +module Helpers.Tuple exposing (extractTuple3Result, mapEachTuple3, mapTuple2, mapTuple3, tuple3First, tuple3Second, tuple3Third) mapTuple2 : (a -> b) -> ( a, a ) -> ( b, b ) @@ -38,3 +38,18 @@ mapEachTuple3 f1 f2 f3 ( v1, v2, v3 ) = , f2 v2 , f3 v3 ) + + +tuple3First : ( a, b, c ) -> a +tuple3First ( a, b, c ) = + a + + +tuple3Second : ( a, b, c ) -> b +tuple3Second ( a, b, c ) = + b + + +tuple3Third : ( a, b, c ) -> c +tuple3Third ( a, b, c ) = + c diff --git a/src/Marketplace/State.elm b/src/Marketplace/State.elm index bc84184..0c507bc 100644 --- a/src/Marketplace/State.elm +++ b/src/Marketplace/State.elm @@ -1,8 +1,9 @@ -module Marketplace.State exposing (init, subscriptions, update, updateUserInfo, updateWeb3Context) +module Marketplace.State exposing (init, subscriptions, update, updateWalletState) import AppCmd import Array exposing (Array) import BigInt exposing (BigInt) +import ChainCmd exposing (ChainCmd) import CommonTypes exposing (..) import Config import Contracts.Types as CTypes @@ -10,6 +11,8 @@ import Contracts.Wrappers import Eth.Sentry.Event as EventSentry exposing (EventSentry) import Eth.Types exposing (Address) import FiatValue exposing (FiatValue) +import Filters.State as Filters +import Filters.Types as Filters import Flip exposing (flip) import Helpers.BigInt as BigIntHelpers import Helpers.Eth as EthHelpers @@ -22,18 +25,26 @@ import Time import TokenValue exposing (TokenValue) import TradeCache.State as TradeCache import TradeCache.Types as TradeCache exposing (TradeCache) +import TradeTable.State as TradeTable +import TradeTable.Types as TradeTable +import Wallet -init : EthHelpers.Web3Context -> BuyerOrSeller -> Maybe UserInfo -> ( Model, Cmd Msg ) -init web3Context browsingRole maybeUserInfo = - ( { web3Context = web3Context - , userInfo = maybeUserInfo - , browsingRole = browsingRole +init : Wallet.State -> ( Model, Cmd Msg ) +init wallet = + ( { wallet = wallet + , tradeTable = + TradeTable.init + ( TradeTable.Expires, TradeTable.Ascending ) , inputs = initialInputs , errors = noErrors , showCurrencyDropdown = False + , filters = + Filters.init + [ Filters.offerType True True + , Filters.phases True False False False + ] , filterFunc = baseFilterFunc - , sortFunc = initialSortFunc } |> applyInputs , Cmd.none @@ -45,79 +56,36 @@ initialInputs = { minDai = "" , maxDai = "" , fiatType = "" - , minFiat = "" - , maxFiat = "" , paymentMethod = "" , paymentMethodTerms = [] } update : Msg -> Model -> UpdateResult -update msg model = +update msg prevModel = case msg of - -- Refresh time -> - -- let - -- cmd = - -- model.trades - -- |> Array.toList - -- |> List.indexedMap - -- (\id trade -> - -- case trade of - -- CTypes.PartiallyLoadedTrade _ -> - -- Cmd.none - -- CTypes.LoadedTrade info -> - -- let - -- address = - -- info.creationInfo.address - -- in - -- Contracts.Wrappers.getStateCmd model.web3Context address (StateFetched id) - -- ) - -- |> Cmd.batch - -- in - -- ( { model | time = time } - -- , cmd - -- , Nothing - -- ) MinDaiChanged input -> - UpdateResult - { model | inputs = model.inputs |> updateMinDaiInput input } - Cmd.none - [] + justModelUpdate + { prevModel | inputs = prevModel.inputs |> updateMinDaiInput input } MaxDaiChanged input -> - UpdateResult - { model | inputs = model.inputs |> updateMaxDaiInput input } - Cmd.none - [] - - MinFiatChanged input -> - UpdateResult - { model | inputs = model.inputs |> updateMinFiatInput input } - Cmd.none - [] - - MaxFiatChanged input -> - UpdateResult - { model | inputs = model.inputs |> updateMaxFiatInput input } - Cmd.none - [] + justModelUpdate + { prevModel | inputs = prevModel.inputs |> updateMaxDaiInput input } FiatTypeInputChanged input -> - UpdateResult - { model | inputs = model.inputs |> updateFiatTypeInput input } - Cmd.none - [] + justModelUpdate + { prevModel | inputs = prevModel.inputs |> updateFiatTypeInput input } ShowCurrencyDropdown flag -> let oldInputs = - model.inputs + prevModel.inputs in - UpdateResult - { model + justModelUpdate + { prevModel | showCurrencyDropdown = flag , inputs = - model.inputs + prevModel.inputs |> (if flag then updateFiatTypeInput "" @@ -125,101 +93,65 @@ update msg model = identity ) } - Cmd.none - [] FiatTypeLostFocus -> - UpdateResult - { model | showCurrencyDropdown = False } - Cmd.none - [] + justModelUpdate + { prevModel | showCurrencyDropdown = False } PaymentMethodInputChanged input -> - UpdateResult - { model | inputs = model.inputs |> updatePaymentMethodInput input } - Cmd.none - [] + justModelUpdate + { prevModel | inputs = prevModel.inputs |> updatePaymentMethodInput input } AddSearchTerm -> - UpdateResult - (model |> addPaymentInputTerm) - Cmd.none - [] + justModelUpdate + (prevModel |> addPaymentInputTerm) RemoveTerm term -> - UpdateResult - (model |> removePaymentInputTerm term) - Cmd.none - [] + justModelUpdate + (prevModel |> removePaymentInputTerm term) ApplyInputs -> UpdateResult - (model |> applyInputs) + (prevModel |> applyInputs) Cmd.none + ChainCmd.none [] ResetSearch -> - UpdateResult - (model |> resetSearch) - Cmd.none - [] - - TradeClicked id -> - UpdateResult - model - Cmd.none - [ AppCmd.GotoRoute (Routing.Trade id) ] - - SortBy colType ordering -> + justModelUpdate + (prevModel |> resetSearch) + + FiltersMsg filtersMsg -> + justModelUpdate + ({ prevModel + | filters = + prevModel.filters |> Filters.update filtersMsg + } + |> applyInputs + ) + + TradeTableMsg tradeTableMsg -> let - newSortFunc = - (\a b -> - case colType of - Expiring -> - TimeHelpers.compare a.derived.phaseEndTime b.derived.phaseEndTime - - TradeAmount -> - TokenValue.compare a.parameters.tradeAmount b.parameters.tradeAmount - - Fiat -> - FiatValue.compare a.terms.price b.terms.price - - Margin -> - Maybe.map2 - (\marginA marginB -> compare marginA marginB) - a.derived.margin - b.derived.margin - |> Maybe.withDefault EQ - - -- The user shouldn't even be able to generate this message - PaymentMethods -> - initialSortFunc a b - - AutoabortWindow -> - TimeHelpers.compare a.parameters.autoabortInterval b.parameters.autoabortInterval - - AutoreleaseWindow -> - TimeHelpers.compare a.parameters.autoreleaseInterval b.parameters.autoreleaseInterval - ) - |> (if ordering == Ascending then - flip - - else - identity - ) + ttUpdateResult = + prevModel.tradeTable + |> TradeTable.update tradeTableMsg in UpdateResult - { model | sortFunc = newSortFunc } - Cmd.none - [] + { prevModel + | tradeTable = ttUpdateResult.model + } + (Cmd.map TradeTableMsg ttUpdateResult.cmd) + (ChainCmd.map TradeTableMsg ttUpdateResult.chainCmd) + (List.map (AppCmd.map TradeTableMsg) ttUpdateResult.appCmds) NoOp -> - noUpdate model + justModelUpdate prevModel AppCmd appCmd -> UpdateResult - model + prevModel Cmd.none + ChainCmd.none [ appCmd ] @@ -295,33 +227,19 @@ applyInputs prevModel = ) fiatTest trade = - case query.fiat of + case query.fiatType of Nothing -> True - Just fiatQuery -> - (trade.terms.price.fiatType == fiatQuery.type_) - && (case fiatQuery.min of - Nothing -> - True - - Just min -> - BigInt.compare trade.terms.price.amount min /= LT - ) - && (case fiatQuery.max of - Nothing -> - True - - Just max -> - BigInt.compare trade.terms.price.amount max /= GT - ) + Just fiatType -> + trade.terms.price.fiatType == fiatType newFilterFunc now trade = baseFilterFunc now trade - && (trade.parameters.initiatorRole /= model.browsingRole) && searchTest now trade && daiTest trade && fiatTest trade + && Filters.filterTrade model.filters trade in { model | filterFunc = newFilterFunc @@ -330,21 +248,14 @@ applyInputs prevModel = inputsToQuery : SearchInputs -> Result Errors Query inputsToQuery inputs = - Result.map4 - (\minDai maxDai fiatMin fiatMax -> + Result.map2 + (\minDai maxDai -> { dai = { min = minDai , max = maxDai } - , fiat = - Maybe.map - (\typeString -> - { type_ = typeString - , min = fiatMin - , max = fiatMax - } - ) - (String.Extra.nonEmpty inputs.fiatType) + , fiatType = + String.Extra.nonEmpty inputs.fiatType , paymentMethodTerms = inputs.paymentMethodTerms } @@ -355,12 +266,6 @@ inputsToQuery inputs = (interpretDaiAmount inputs.maxDai |> Result.mapError (\e -> { noErrors | maxDai = Just e }) ) - (interpretFiatAmount inputs.minFiat - |> Result.mapError (\e -> { noErrors | minFiat = Just e }) - ) - (interpretFiatAmount inputs.maxFiat - |> Result.mapError (\e -> { noErrors | maxFiat = Just e }) - ) interpretDaiAmount : String -> Result String (Maybe TokenValue) @@ -394,21 +299,15 @@ interpretFiatAmount input = resetSearch : Model -> Model resetSearch model = { model - | sortFunc = initialSortFunc - , filterFunc = baseFilterFunc + | filterFunc = baseFilterFunc , inputs = initialInputs } - - -initialSortFunc : CTypes.FullTradeInfo -> CTypes.FullTradeInfo -> Order -initialSortFunc a b = - compare a.creationInfo.blocknum b.creationInfo.blocknum + |> applyInputs baseFilterFunc : Time.Posix -> CTypes.FullTradeInfo -> Bool baseFilterFunc now trade = - (trade.state.phase == CTypes.Open) - && (TimeHelpers.compare trade.derived.phaseEndTime now == GT) + TimeHelpers.compare trade.derived.phaseEndTime now == GT testTextMatch : List String -> List PaymentMethod -> Bool @@ -430,17 +329,11 @@ testTextMatch terms paymentMethods = ) -updateUserInfo : Maybe UserInfo -> Model -> Model -updateUserInfo userInfo model = - { model | userInfo = userInfo } - - -updateWeb3Context : EthHelpers.Web3Context -> Model -> Model -updateWeb3Context newWeb3Context model = - { model | web3Context = newWeb3Context } +updateWalletState : Wallet.State -> Model -> Model +updateWalletState wallet model = + { model | wallet = wallet } subscriptions : Model -> Sub Msg subscriptions model = - -- Time.every 5000 Refresh Sub.none diff --git a/src/Marketplace/Types.elm b/src/Marketplace/Types.elm index 2609de2..0e68208 100644 --- a/src/Marketplace/Types.elm +++ b/src/Marketplace/Types.elm @@ -1,15 +1,18 @@ -module Marketplace.Types exposing (Errors, FiatTypeAndRange, Model, Msg(..), Ordering(..), Query, ResultColumnType(..), SearchInputs, TokenRange, UpdateResult, noErrors, noUpdate, updateFiatTypeInput, updateMaxDaiInput, updateMaxFiatInput, updateMinDaiInput, updateMinFiatInput, updatePaymentMethodInput, updatePaymentMethodTerms) +module Marketplace.Types exposing (Errors, Model, Msg(..), Query, SearchInputs, TokenRange, UpdateResult, justModelUpdate, noErrors, updateFiatTypeInput, updateMaxDaiInput, updateMinDaiInput, updatePaymentMethodInput, updatePaymentMethodTerms) import AppCmd exposing (AppCmd) import Array exposing (Array) import BigInt exposing (BigInt) +import ChainCmd exposing (ChainCmd) import CommonTypes exposing (..) import Contracts.Types as CTypes import Dict exposing (Dict) +import Eth.Net import Eth.Sentry.Event as EventSentry exposing (EventSentry) import Eth.Types exposing (Address) import FiatValue exposing (FiatValue) -import Helpers.Eth as EthHelpers exposing (Web3Context) +import Filters.Types as Filters +import Helpers.Eth as EthHelpers import Http import Json.Decode import PaymentMethods exposing (PaymentMethod) @@ -17,17 +20,18 @@ import String.Extra import Time import TokenValue exposing (TokenValue) import TradeCache.Types as TradeCache exposing (TradeCache) +import TradeTable.Types as TradeTable +import Wallet type alias Model = - { web3Context : Web3Context - , userInfo : Maybe UserInfo - , browsingRole : BuyerOrSeller + { wallet : Wallet.State , inputs : SearchInputs , errors : Errors , showCurrencyDropdown : Bool + , tradeTable : TradeTable.Model + , filters : Filters.Model , filterFunc : Time.Posix -> CTypes.FullTradeInfo -> Bool - , sortFunc : CTypes.FullTradeInfo -> CTypes.FullTradeInfo -> Order } @@ -35,8 +39,6 @@ type Msg = MinDaiChanged String | MaxDaiChanged String | FiatTypeInputChanged String - | MinFiatChanged String - | MaxFiatChanged String | PaymentMethodInputChanged String | ShowCurrencyDropdown Bool | FiatTypeLostFocus @@ -44,34 +46,26 @@ type Msg | RemoveTerm String | ApplyInputs | ResetSearch - | TradeClicked Int - | SortBy ResultColumnType Ordering - | NoOp + | TradeTableMsg TradeTable.Msg + | FiltersMsg Filters.Msg | AppCmd (AppCmd Msg) - - -type Ordering - = Ascending - | Descending - - - ---| StateFetched Int (Result Http.Error (Maybe CTypes.State)) ---| Refresh Time.Posix + | NoOp type alias UpdateResult = { model : Model , cmd : Cmd Msg + , chainCmd : ChainCmd Msg , appCmds : List (AppCmd Msg) } -noUpdate : Model -> UpdateResult -noUpdate model = +justModelUpdate : Model -> UpdateResult +justModelUpdate model = UpdateResult model Cmd.none + ChainCmd.none [] @@ -79,8 +73,6 @@ type alias SearchInputs = { minDai : String , maxDai : String , fiatType : String - , minFiat : String - , maxFiat : String , paymentMethod : String , paymentMethodTerms : List String } @@ -89,18 +81,16 @@ type alias SearchInputs = type alias Errors = { minDai : Maybe String , maxDai : Maybe String - , minFiat : Maybe String - , maxFiat : Maybe String } noErrors = - Errors Nothing Nothing Nothing Nothing + Errors Nothing Nothing type alias Query = { dai : TokenRange - , fiat : Maybe FiatTypeAndRange + , fiatType : Maybe String , paymentMethodTerms : List String } @@ -111,13 +101,6 @@ type alias TokenRange = } -type alias FiatTypeAndRange = - { type_ : String - , min : Maybe BigInt - , max : Maybe BigInt - } - - updatePaymentMethodInput : String -> SearchInputs -> SearchInputs updatePaymentMethodInput input inputs = { inputs | paymentMethod = input } @@ -138,26 +121,6 @@ updateMaxDaiInput input inputs = { inputs | maxDai = input } -updateMinFiatInput : String -> SearchInputs -> SearchInputs -updateMinFiatInput input inputs = - { inputs | minFiat = input } - - -updateMaxFiatInput : String -> SearchInputs -> SearchInputs -updateMaxFiatInput input inputs = - { inputs | maxFiat = input } - - updatePaymentMethodTerms : List String -> SearchInputs -> SearchInputs updatePaymentMethodTerms terms inputs = { inputs | paymentMethodTerms = terms } - - -type ResultColumnType - = Expiring - | TradeAmount - | Fiat - | Margin - | PaymentMethods - | AutoabortWindow - | AutoreleaseWindow diff --git a/src/Marketplace/View.elm b/src/Marketplace/View.elm index c9f6c0c..0797a54 100644 --- a/src/Marketplace/View.elm +++ b/src/Marketplace/View.elm @@ -12,77 +12,156 @@ import Element.Events import Element.Font import Element.Input import FiatValue exposing (FiatValue) +import Filters.Types as Filters +import Filters.View as Filters import Helpers.Element as EH import Helpers.Time as TimeHelpers import Html.Events.Extra import Images exposing (Image) +import List.Extra import Margin import Marketplace.Types exposing (..) +import Maybe.Extra import PaymentMethods exposing (PaymentMethod) import Time import TradeCache.State as TradeCache -import TradeCache.Types exposing (TradeCache) +import TradeCache.Types as TradeCache exposing (TradeCache) +import TradeTable.Types as TradeTable +import TradeTable.View as TradeTable -root : Time.Posix -> TradeCache -> Model -> Element Msg -root time tradeCache model = +root : Time.Posix -> List TradeCache -> Model -> Element Msg +root time tradeCaches model = + let + onlyOpenPhaseChecked = + let + nonOpenPhasesChecked = + model.filters + |> Filters.getFilterSet Filters.Phase + |> Maybe.map + (\filterSet -> + List.Extra.count + (\filter -> + filter.checked && filter.label /= "Open" + ) + filterSet.options + ) + |> Maybe.withDefault 0 + in + nonOpenPhasesChecked == 0 + + tcDoneLoading = + List.all + (TradeCache.loadingStatus >> (==) TradeCache.AllFetched) + tradeCaches + in Element.column [ Element.Border.rounded 5 , Element.Background.color EH.white , Element.width Element.fill , Element.height Element.fill , Element.Events.onClick (ShowCurrencyDropdown False) + , Element.padding 30 ] [ Element.row [ Element.width Element.fill , Element.spacing 10 - , Element.padding 30 ] - [ searchInputElement model.web3Context.factoryType model.inputs model.errors model.showCurrencyDropdown + [ statusFiltersAndSearchElement tradeCaches model.filters model.inputs model.errors model.showCurrencyDropdown ] - , maybeResultsElement time tradeCache model + , maybeResultsElement + time + onlyOpenPhaseChecked + tcDoneLoading + tradeCaches + model ] -searchInputElement : FactoryType -> SearchInputs -> Errors -> Bool -> Element Msg -searchInputElement factoryType inputs errors showCurrencyDropdown = - Element.column - [ Element.spacing 10 - , Element.width Element.shrink - , Element.centerX - ] - [ Element.row - [ Element.width Element.shrink - , Element.spacing 10 - ] - [ Element.el - [ Element.width <| Element.shrink - , Element.alignTop +statusFiltersAndSearchElement : List TradeCache -> Filters.Model -> SearchInputs -> Errors -> Bool -> Element Msg +statusFiltersAndSearchElement tradeCaches filters inputs errors showCurrencyDropdown = + let + statusMsgElement s = + Element.el + [ Element.Font.size 20 + , Element.Font.semiBold + , Element.Font.color EH.darkGray + , Element.centerX ] - <| - daiRangeInput factoryType inputs.minDai inputs.maxDai errors - , Element.el - [ Element.width Element.shrink - , Element.alignTop + (Element.text s) + + statusMessages : List (Element Msg) + statusMessages = + if List.all ((==) TradeCache.NoneFound) (List.map TradeCache.loadingStatus tradeCaches) then + [ statusMsgElement "No trades found." ] + + else + tradeCaches + |> List.map + (\tc -> + case TradeCache.loadingStatus tc of + TradeCache.QueryingNumTrades -> + Just <| "Querying " ++ factoryName tc.factory ++ " Factory..." + + TradeCache.NoneFound -> + Nothing + + TradeCache.FetchingTrades -> + Just <| "Fetching " ++ factoryName tc.factory ++ " Trades..." + + TradeCache.AllFetched -> + Nothing + ) + |> Maybe.Extra.values + |> List.map statusMsgElement + in + Element.el + [ Element.width Element.fill + , Element.inFront <| + Element.column + [ Element.spacing 5 + , Element.alignLeft ] - <| - fiatInput showCurrencyDropdown inputs.fiatType inputs.minFiat inputs.maxFiat errors - , Element.column + statusMessages + ] + <| + Element.row + [ Element.centerX + , Element.spacing 50 + ] + [ Element.map FiltersMsg <| Filters.view filters + , Element.row [ Element.width Element.shrink - , Element.alignTop - , Element.spacing 5 - ] - [ paymentMethodsInput inputs.paymentMethod - , searchTermsDisplayElement inputs.paymentMethodTerms + , Element.spacing 10 ] - , Element.column - [ Element.spacing 5 - , Element.width Element.shrink + [ Element.el + [ Element.width <| Element.shrink + , Element.alignTop + ] + <| + daiRangeInput inputs.minDai inputs.maxDai errors + , Element.el + [ Element.width Element.shrink + , Element.alignTop + ] + <| + fiatInput showCurrencyDropdown inputs.fiatType errors + , Element.column + [ Element.width Element.shrink + , Element.alignTop + , Element.spacing 5 + ] + [ paymentMethodsInput inputs.paymentMethod + , searchTermsDisplayElement inputs.paymentMethodTerms + ] + , Element.column + [ Element.spacing 5 + , Element.width Element.shrink + ] + [ applyButton, resetButton ] + |> withInputHeader " " ] - [ applyButton, resetButton ] - |> withInputHeader " " ] - ] searchTermsDisplayElement : List String -> Element Msg @@ -122,90 +201,55 @@ removeSearchTermButton term = (Element.text "x") -maybeResultsElement : Time.Posix -> TradeCache -> Model -> Element Msg -maybeResultsElement time tradeCache model = +maybeResultsElement : Time.Posix -> Bool -> Bool -> List TradeCache -> Model -> Element Msg +maybeResultsElement time onlyOpenTrades tcDoneLoading tradeCaches model = let - statusMsgElement s = - Element.el - [ Element.Font.size 24 - , Element.Font.semiBold - , Element.Font.color EH.darkGray - , Element.centerX - , Element.padding 20 - ] - (Element.text s) - visibleTrades = - TradeCache.loadedValidTrades tradeCache - |> filterAndSortTrades time model.filterFunc model.sortFunc + tradeCaches + |> List.map TradeCache.loadedValidTrades + |> List.concat + |> filterTrades time model.filterFunc in - case ( tradeCache.dataFetchStatus.total, visibleTrades ) of - ( Nothing, _ ) -> - statusMsgElement "Querying Factory contract..." - - ( Just 0, _ ) -> - statusMsgElement "No trades found." - - ( Just totalTrades, [] ) -> - if tradeCache.dataFetchStatus.loaded < (totalTrades - tradeCache.dataFetchStatus.invalid) then - statusMsgElement "Searching trades for Open offers..." - - else - statusMsgElement "No open offers found." - - ( Just totalTrades, _ ) -> - resultsElement time visibleTrades model - + if visibleTrades == [] then + Element.el + [ Element.centerX + , Element.Font.size 24 + , Element.paddingEach + { top = 30 + , left = 0 + , right = 0 + , bottom = 0 + } + , Element.Font.italic + ] + (if tcDoneLoading then + Element.text "No trades found with those filters." -resultsElement : Time.Posix -> List CTypes.FullTradeInfo -> Model -> Element Msg -resultsElement time visibleTrades model = - let - buyingOrSellingString = - case model.browsingRole of - Buyer -> - "Selling" + else + Element.text "Initializing Trade Cache..." + ) - Seller -> - "Buying" - in - Element.column - [ Element.width Element.fill - , Element.height Element.fill - , Element.padding 30 - , Element.spacing 5 - ] - [ Element.row - [ Element.width Element.fill ] - [ Element.row - [ Element.width <| Element.fillPortion 7 ] - [ cellMaker ( 2, sortableColumnHeader "Expires" Expiring Nothing ) - , cellMaker ( 1, sortableColumnHeader buyingOrSellingString TradeAmount Nothing ) - , cellMaker ( 2, sortableColumnHeader "For Fiat" Fiat Nothing ) - , cellMaker ( 1, sortableColumnHeader "Margin" Margin Nothing ) - , cellMaker ( 2, sortableColumnHeader "Payment Window" AutoabortWindow Nothing ) - , cellMaker ( 2, sortableColumnHeader "Auto-Release" AutoreleaseWindow Nothing ) - ] - , Element.el - [ Element.width <| Element.fillPortion 1 ] - Element.none - ] - , Element.column - [ Element.width Element.fill - , Element.Border.width 2 - , Element.Border.rounded 8 - , Element.Border.color EH.darkGray - , Element.spacing 1 - , Element.Background.color EH.darkGray - , Element.clip + else + TradeTable.view + time + model.tradeTable + [ if onlyOpenTrades then + TradeTable.Expires + + else + TradeTable.Phase + , TradeTable.Offer + , TradeTable.FiatPrice + , TradeTable.Margin + , TradeTable.PaymentWindow + , TradeTable.BurnWindow ] - (visibleTrades - |> List.map (viewTradeRow time model.browsingRole) - ) - ] + visibleTrades + |> Element.map TradeTableMsg -daiRangeInput : FactoryType -> String -> String -> Errors -> Element Msg -daiRangeInput factoryType minDai maxDai errors = +daiRangeInput : String -> String -> Errors -> Element Msg +daiRangeInput minDai maxDai errors = let daiLabelElement = EH.daiSymbol [ Element.centerY ] @@ -231,7 +275,7 @@ daiRangeInput factoryType minDai maxDai errors = ] [ Element.Events.onFocus (ShowCurrencyDropdown False) ] minElement - ("min " ++ Config.tokenUnitName factoryType) + "min Dai" minDai Nothing Nothing @@ -244,17 +288,17 @@ daiRangeInput factoryType minDai maxDai errors = ] [ Element.Events.onFocus (ShowCurrencyDropdown False) ] maxElement - ("max " ++ Config.tokenUnitName factoryType) + "max Dai" maxDai Nothing Nothing MaxDaiChanged ] - |> withInputHeader (Config.tokenUnitName factoryType ++ " Range") + |> withInputHeader "Dai Range" -fiatInput : Bool -> String -> String -> String -> Errors -> Element Msg -fiatInput showTypeDropdown fiatType minFiat maxFiat errors = +fiatInput : Bool -> String -> Errors -> Element Msg +fiatInput showTypeDropdown fiatType errors = let fiatLabelElement = EH.fiatTypeToSymbolElement fiatType @@ -274,39 +318,11 @@ fiatInput showTypeDropdown fiatType minFiat maxFiat errors = flagClickedMsg = AppCmd <| AppCmd.gTag "click" "misclick" "currency flag" 0 in - Element.row [ Element.spacing 5, Element.width Element.shrink ] - [ Element.el [ Element.alignTop, Element.width <| Element.px 120 ] <| - EH.currencySelector showTypeDropdown fiatType (ShowCurrencyDropdown True) FiatTypeInputChanged flagClickedMsg - , Element.column [ Element.spacing 5, Element.alignTop, Element.width <| Element.px 200 ] - [ EH.textInputWithElement - [ Element.above <| - EH.maybeErrorElement - [ Element.moveUp 5, Element.width (Element.shrink |> Element.maximum 200) ] - errors.minFiat - ] - [ Element.Events.onFocus (ShowCurrencyDropdown False) ] - minElement - "min" - minFiat - Nothing - Nothing - MinFiatChanged - , EH.textInputWithElement - [ Element.below <| - EH.maybeErrorElement - [ Element.moveDown 5, Element.width (Element.shrink |> Element.maximum 200) ] - errors.maxFiat - ] - [ Element.Events.onFocus (ShowCurrencyDropdown False) ] - maxElement - "max" - maxFiat - Nothing - Nothing - MaxFiatChanged - ] - ] - |> withInputHeader "Fiat Type" + Element.el + [ Element.alignTop, Element.width <| Element.px 120 ] + (EH.currencySelector showTypeDropdown fiatType (ShowCurrencyDropdown True) FiatTypeInputChanged flagClickedMsg + |> withInputHeader "Fiat Type" + ) paymentMethodsInput : String -> Element Msg @@ -379,181 +395,6 @@ withInputHeader title element = ] -viewTradeRow : Time.Posix -> BuyerOrSeller -> CTypes.FullTradeInfo -> Element Msg -viewTradeRow time viewAsRole trade = - Element.row - [ Element.width Element.fill - , Element.spacing 1 - , Element.Background.color EH.lightGray - ] - [ Element.column - [ Element.width Element.fill - , Element.spacing 1 - , Element.width <| Element.fillPortion 7 - ] - [ Element.row - [ Element.width <| Element.fillPortion 6 - , Element.spacing 1 - ] - (List.map cellMaker - [ ( 2, viewExpiring time trade ) - , ( 1, viewTradeAmount trade ) - , ( 2, viewFiat trade ) - , ( 1, viewMargin trade (viewAsRole /= Buyer) ) - , ( 2, viewAutoabortWindow viewAsRole trade ) - , ( 2, viewAutoreleaseWindow viewAsRole trade ) - ] - ) - , cellMaker ( 1, viewPaymentMethods trade.terms.paymentMethods ) - ] - , Element.el - [ Element.width <| Element.fillPortion 1 - , Element.height Element.fill - , Element.clip - , Element.Background.color EH.white - ] - <| - Element.el - [ Element.centerX - , Element.centerY - ] - (viewTradeButton trade.id) - ] - - -cellMaker : ( Int, Element Msg ) -> Element Msg -cellMaker ( portion, cellElement ) = - Element.el - [ Element.width <| Element.fillPortion portion - , Element.height <| Element.px 60 - , Element.clip - , Element.Background.color EH.white - ] - <| - Element.el - [ Element.padding 12 - , Element.centerY - , Element.width Element.fill - ] - cellElement - - -viewExpiring : Time.Posix -> CTypes.FullTradeInfo -> Element Msg -viewExpiring time trade = - case CTypes.getCurrentPhaseTimeoutInfo time trade of - CTypes.TimeLeft timeoutInfo -> - let - baseIntervalColor = - if TimeHelpers.getRatio (Tuple.first timeoutInfo) (Tuple.second timeoutInfo) < 0.05 then - EH.red - - else - EH.black - in - EH.intervalWithElapsedBar - [ Element.width Element.fill ] - [ Element.Font.size 16 ] - ( baseIntervalColor, EH.lightGray ) - timeoutInfo - - CTypes.TimeUp totalInterval -> - EH.intervalWithElapsedBar - [ Element.width Element.fill ] - [ Element.Font.size 16 ] - ( EH.red, EH.lightGray ) - ( Time.millisToPosix 0, totalInterval ) - - -viewTradeAmount : CTypes.FullTradeInfo -> Element Msg -viewTradeAmount trade = - EH.daiValue trade.parameters.tradeAmount - - -viewFiat : CTypes.FullTradeInfo -> Element Msg -viewFiat trade = - EH.fiatValue trade.terms.price - - -viewMargin : CTypes.FullTradeInfo -> Bool -> Element Msg -viewMargin trade upIsGreen = - trade.derived.margin - |> Maybe.map (EH.coloredMargin upIsGreen) - |> Maybe.withDefault Element.none - - -viewPaymentMethods : List PaymentMethod -> Element Msg -viewPaymentMethods paymentMethods = - paymentMethods - |> List.head - |> Maybe.map PaymentMethods.previewTextHack - |> Maybe.withDefault Element.none - - -viewAutoabortWindow : BuyerOrSeller -> CTypes.FullTradeInfo -> Element Msg -viewAutoabortWindow viewAsRole trade = - let - lowValColor = - case viewAsRole of - Buyer -> - EH.red - - Seller -> - EH.green - - baseColor = - if Time.posixToMillis trade.parameters.autoabortInterval < (1000 * 60 * 60 * 6) then - lowValColor - - else - EH.black - in - EH.interval - [] - [] - ( baseColor, EH.lightGray ) - trade.parameters.autoabortInterval - - -viewAutoreleaseWindow : BuyerOrSeller -> CTypes.FullTradeInfo -> Element Msg -viewAutoreleaseWindow viewAsRole trade = - let - lowValColor = - case viewAsRole of - Buyer -> - EH.green - - Seller -> - EH.red - - baseColor = - if Time.posixToMillis trade.parameters.autoabortInterval < (1000 * 60 * 60 * 6) then - lowValColor - - else - EH.black - in - EH.interval - [] - [] - ( baseColor, EH.lightGray ) - trade.parameters.autoreleaseInterval - - -viewTradeButton : Int -> Element Msg -viewTradeButton factoryID = - Element.Input.button - [ Element.Background.color <| Element.rgba255 16 7 234 0.2 - , Element.padding 11 - , Element.Border.rounded 4 - , Element.width Element.fill - , Element.mouseOver [ Element.Background.color <| Element.rgba255 16 7 234 0.4 ] - ] - { onPress = Just <| TradeClicked factoryID - , label = - Element.el [ Element.centerX, Element.Font.color <| Element.rgb255 16 7 234, Element.Font.medium ] <| Element.text "View Offer" - } - - getLoadedTrades : List CTypes.Trade -> List CTypes.FullTradeInfo getLoadedTrades = List.filterMap @@ -567,53 +408,10 @@ getLoadedTrades = ) -filterAndSortTrades : +filterTrades : Time.Posix -> (Time.Posix -> CTypes.FullTradeInfo -> Bool) - -> (CTypes.FullTradeInfo -> CTypes.FullTradeInfo -> Order) -> List CTypes.FullTradeInfo -> List CTypes.FullTradeInfo -filterAndSortTrades time filterFunc sortFunc = +filterTrades time filterFunc = List.filter (filterFunc time) - >> List.sortWith sortFunc - - -sortableColumnHeader : String -> ResultColumnType -> Maybe Ordering -> Element Msg -sortableColumnHeader title colType sorting = - Element.row [ Element.spacing 8 ] - [ columnHeader title - , Element.column - [ Element.spacing 2 ] - [ Element.el - [ Element.padding 4 - , Element.pointer - , Element.Events.onClick <| - SortBy colType Ascending - ] - (Images.toElement - [ Element.width <| Element.px 8 - , Element.centerX - , Element.centerY - ] - Images.upArrow - ) - , Element.el - [ Element.padding 4 - , Element.pointer - , Element.Events.onClick <| - SortBy colType Descending - ] - (Images.toElement - [ Element.width <| Element.px 8 - , Element.centerX - , Element.centerY - ] - Images.downArrow - ) - ] - ] - - -columnHeader : String -> Element Msg -columnHeader title = - Element.el [ Element.Font.medium, Element.Font.size 17 ] <| Element.text title diff --git a/src/QuickCreate/State.elm b/src/QuickCreate/State.elm index f8215d9..31e258e 100644 --- a/src/QuickCreate/State.elm +++ b/src/QuickCreate/State.elm @@ -1,7 +1,8 @@ -module QuickCreate.State exposing (init, subscriptions, update, updateUserInfo, updateWeb3Context) +module QuickCreate.State exposing (init, subscriptions, update, updateWalletState) import AppCmd import BigInt exposing (BigInt) +import ChainCmd exposing (ChainCmd) import CommonTypes exposing (..) import Config import Contracts.Generated.ERC20Token as TokenContract @@ -12,8 +13,7 @@ import Eth.Types exposing (Address) import FiatValue exposing (FiatValue) import Flip exposing (flip) import Helpers.BigInt as BigIntHelpers -import Helpers.ChainCmd as ChainCmd exposing (ChainCmd) -import Helpers.Eth as EthHelpers exposing (Web3Context) +import Helpers.Eth as EthHelpers import Helpers.Time as TimeHelpers import Http import Maybe.Extra @@ -24,61 +24,38 @@ import Task import Time import TokenValue exposing (TokenValue) import UserNotice as UN exposing (UserNotice) +import Wallet -init : EthHelpers.Web3Context -> Maybe UserInfo -> UpdateResult -init web3Context userInfo = - let - model = - { web3Context = web3Context - , userInfo = userInfo - , state = Menu NoneStarted - , tokenAllowance = Nothing - , textInput = "" - } - - cmd = - case userInfo of - Just uInfo -> - getAllowanceCmdIfNeeded model.web3Context uInfo AllowanceFetched - - Nothing -> - Cmd.none - in +init : Wallet.State -> UpdateResult +init wallet = UpdateResult - model - cmd + { wallet = wallet + , state = Menu NoneStarted + , tokenAllowance = Nothing + , textInput = "" + } + (getAllowanceCmdIfNeeded wallet AllowanceFetched) ChainCmd.none [] -updateUserInfo : Maybe UserInfo -> Model -> ( Model, Cmd Msg ) -updateUserInfo maybeUserInfo model = - ( { model | userInfo = maybeUserInfo } - , case maybeUserInfo of - Just userInfo -> - getAllowanceCmdIfNeeded model.web3Context userInfo AllowanceFetched - - Nothing -> - Cmd.none +updateWalletState : Wallet.State -> Model -> ( Model, Cmd Msg ) +updateWalletState wallet model = + ( { model | wallet = wallet } + , getAllowanceCmdIfNeeded wallet AllowanceFetched ) -updateWeb3Context : EthHelpers.Web3Context -> Model -> Model -updateWeb3Context newWeb3Context model = - { model | web3Context = newWeb3Context } - - -getAllowanceCmdIfNeeded : Web3Context -> UserInfo -> (Result Http.Error BigInt -> Msg) -> Cmd Msg -getAllowanceCmdIfNeeded web3Context userInfo msgConstructor = - case web3Context.factoryType of - Token tokenType -> +getAllowanceCmdIfNeeded : Wallet.State -> (TokenFactoryType -> Result Http.Error BigInt -> Msg) -> Cmd Msg +getAllowanceCmdIfNeeded wallet msgConstructor = + case ( Wallet.factory wallet, Wallet.userInfo wallet ) of + ( Just (Token tokenType), Just userInfo ) -> Contracts.Wrappers.getAllowanceCmd - web3Context tokenType userInfo.address - (Config.factoryAddress web3Context.factoryType) - msgConstructor + (Config.factoryAddress (Token tokenType)) + (msgConstructor tokenType) _ -> Cmd.none @@ -88,29 +65,33 @@ update : Msg -> Model -> UpdateResult update msg prevModel = case msg of Refresh time -> - case ( prevModel.userInfo, prevModel.web3Context.factoryType ) of - ( Just userInfo, Token tokenType ) -> - let - cmd = - Contracts.Wrappers.getAllowanceCmd - prevModel.web3Context - tokenType - userInfo.address - (Config.factoryAddress prevModel.web3Context.factoryType) - AllowanceFetched - in - UpdateResult - prevModel - cmd - ChainCmd.none - [] + case prevModel.wallet of + Wallet.Active userInfo -> + case Wallet.factory prevModel.wallet of + Just (Token tokenType) -> + let + cmd = + Contracts.Wrappers.getAllowanceCmd + tokenType + userInfo.address + (Config.factoryAddress (Token tokenType)) + (AllowanceFetched tokenType) + in + UpdateResult + prevModel + cmd + ChainCmd.none + [] + + _ -> + justModelUpdate prevModel _ -> justModelUpdate prevModel - StartClicked tradeRecipe -> - case prevModel.web3Context.factoryType of - Token _ -> + StartClicked factoryType tradeRecipe -> + case factoryType of + Token tokenType -> let newState = case prevModel.tokenAllowance of @@ -119,10 +100,10 @@ update msg prevModel = Spec tradeRecipe ReadyToOpen else - Menu (StartPrompt tradeRecipe) + Menu (StartPrompt tokenType tradeRecipe) Nothing -> - Menu (StartPrompt tradeRecipe) + Menu (StartPrompt tokenType tradeRecipe) in justModelUpdate { prevModel | state = newState } @@ -133,31 +114,22 @@ update msg prevModel = Spec tradeRecipe ReadyToOpen } - ApproveClicked tradeRecipe -> - case prevModel.web3Context.factoryType of - Token tokenType -> - let - chainCmd = - approveChainCmd tokenType tradeRecipe.daiAmountIn - in - UpdateResult - { prevModel - | state = Menu (ApproveNeedsSig tradeRecipe) - } - Cmd.none - chainCmd - [] - - Native _ -> - UpdateResult - prevModel - Cmd.none - ChainCmd.none - [ AppCmd.UserNotice <| UN.unexpectedError "Approve Clicked msg received, but factoryType is not a token factory!" tradeRecipe ] + ApproveClicked tokenType tradeRecipe -> + let + chainCmd = + approveChainCmd tokenType tradeRecipe.daiAmountIn + in + UpdateResult + { prevModel + | state = Menu (ApproveNeedsSig tokenType tradeRecipe) + } + Cmd.none + chainCmd + [] - ApproveSigned txHashResult -> + ApproveSigned tokenType txHashResult -> case ( txHashResult, prevModel.state ) of - ( Ok txHash, Menu (ApproveNeedsSig tradeRecipe) ) -> + ( Ok txHash, Menu (ApproveNeedsSig _ tradeRecipe) ) -> justModelUpdate { prevModel | state = Spec tradeRecipe (ApproveMining txHash) } @@ -175,7 +147,7 @@ update msg prevModel = ChainCmd.none [ AppCmd.UserNotice <| UN.unexpectedError "Approve signed, but factoryType is not a token factory!" txHashResult ] - AllowanceFetched fetchResult -> + AllowanceFetched tokenType fetchResult -> case ( fetchResult, prevModel.state ) of ( Ok tokenAllowance, Spec tradeRecipe (ApproveMining _) ) -> if BigInt.compare tokenAllowance (TokenValue.getEvmValue tradeRecipe.daiAmountIn) /= LT then @@ -199,13 +171,13 @@ update msg prevModel = _ -> justModelUpdate prevModel - OpenClicked userInfo recipe -> + OpenClicked factoryType userInfo recipe -> let createParameters = constructCreateParameters userInfo recipe prevModel.textInput chainCmd = - initiateCreateCall prevModel.web3Context.factoryType createParameters + initiateCreateCall factoryType createParameters txChainStatus = OpenNeedsSig @@ -221,11 +193,11 @@ update msg prevModel = chainCmd [] - OpenSigned txHashResult -> + OpenSigned _ txHashResult -> case ( txHashResult, prevModel.state ) of - ( Ok txHash, Spec createParameters _ ) -> + ( Ok txHash, Spec recipe _ ) -> justModelUpdate - { prevModel | state = Spec createParameters OpenMining } + { prevModel | state = Spec recipe OpenMining } ( Err e, _ ) -> UpdateResult @@ -239,14 +211,14 @@ update msg prevModel = prevModel Cmd.none ChainCmd.none - [ AppCmd.UserNotice <| UN.unexpectedError "Open signed, but factoryType is not a token factory!" txHashResult ] + [ AppCmd.UserNotice <| UN.unexpectedError "Open signed, but there is no recipe!" txHashResult ] - OpenMined txReceiptResult -> + OpenMined factory txReceiptResult -> case txReceiptResult of Ok txReceipt -> let maybeId = - CTypes.txReceiptToCreatedTradeSellId prevModel.web3Context.factoryType txReceipt + CTypes.txReceiptToCreatedTradeSellId factory txReceipt |> Result.toMaybe |> Maybe.andThen BigIntHelpers.toInt in @@ -256,7 +228,7 @@ update msg prevModel = prevModel Cmd.none ChainCmd.none - [ AppCmd.GotoRoute (Routing.Trade id) ] + [ AppCmd.GotoRoute (Routing.Trade factory id) ] Nothing -> UpdateResult @@ -308,7 +280,7 @@ approveChainCmd tokenType amount = customSend = { onMined = Nothing - , onSign = Just ApproveSigned + , onSign = Just (ApproveSigned tokenType) , onBroadcast = Nothing } in @@ -325,8 +297,8 @@ initiateCreateCall factoryType parameters = |> Eth.toSend customSend = - { onMined = Just ( OpenMined, Nothing ) - , onSign = Just OpenSigned + { onMined = Just ( OpenMined factoryType, Nothing ) + , onSign = Just (OpenSigned factoryType) , onBroadcast = Nothing } in diff --git a/src/QuickCreate/Types.elm b/src/QuickCreate/Types.elm index b494f9a..d0e6579 100644 --- a/src/QuickCreate/Types.elm +++ b/src/QuickCreate/Types.elm @@ -4,20 +4,21 @@ import AppCmd exposing (AppCmd) import BigInt exposing (BigInt) import CommonTypes exposing (..) import Contracts.Types as CTypes +import Eth.Net import Eth.Types exposing (Address, TxHash, TxReceipt) import FiatValue exposing (FiatValue) -import Helpers.ChainCmd as ChainCmd exposing (ChainCmd) -import Helpers.Eth as EthHelpers exposing (Web3Context) +import ChainCmd exposing (ChainCmd) +import Helpers.Eth as EthHelpers import Http import PaymentMethods exposing (PaymentMethod) import Routing import Time import TokenValue exposing (TokenValue) +import Wallet type alias Model = - { web3Context : Web3Context - , userInfo : Maybe UserInfo + { wallet : Wallet.State , state : State , tokenAllowance : Maybe TokenValue , textInput : String @@ -31,8 +32,8 @@ type State type MenuState = NoneStarted - | StartPrompt TradeRecipe - | ApproveNeedsSig TradeRecipe + | StartPrompt TokenFactoryType TradeRecipe + | ApproveNeedsSig TokenFactoryType TradeRecipe type SpecState @@ -44,13 +45,13 @@ type SpecState type Msg = Refresh Time.Posix - | StartClicked TradeRecipe - | ApproveClicked TradeRecipe - | AllowanceFetched (Result Http.Error BigInt) - | OpenClicked UserInfo TradeRecipe - | ApproveSigned (Result String TxHash) - | OpenSigned (Result String TxHash) - | OpenMined (Result String TxReceipt) + | StartClicked FactoryType TradeRecipe + | ApproveClicked TokenFactoryType TradeRecipe + | AllowanceFetched TokenFactoryType (Result Http.Error BigInt) + | OpenClicked FactoryType UserInfo TradeRecipe + | ApproveSigned TokenFactoryType (Result String TxHash) + | OpenSigned FactoryType (Result String TxHash) + | OpenMined FactoryType (Result String TxReceipt) | TextInputChanged String | ChangeState State | AbortCreate diff --git a/src/QuickCreate/View.elm b/src/QuickCreate/View.elm index b479664..c7a2d40 100644 --- a/src/QuickCreate/View.elm +++ b/src/QuickCreate/View.elm @@ -33,7 +33,11 @@ root model = , Element.centerX ] (menuItems - |> List.map (menuItemElement model.web3Context.factoryType True) + |> List.map + (menuItemElement + (EthHelpers.factoryTypeWithDefault model.userInfo) + True + ) ) Spec recipe specState -> @@ -41,17 +45,20 @@ root model = [ Element.spacing 20 , Element.centerX ] - [ menuItemElement model.web3Context.factoryType False recipe + [ menuItemElement + (EthHelpers.factoryTypeWithDefault model.userInfo) + False + recipe , Element.column [ Element.spacing 10 , Element.centerX ] [ textInputPrompt recipe.initiatorRole recipe.fiatValue , textInputElement recipe.initiatorRole model.textInput - , openTradeButton model.userInfo model.state + , openTradeButton (EthHelpers.factoryTypeWithDefault model.userInfo) model.userInfo model.state ] ] - , [ txModalOrNone model.web3Context.factoryType model.userInfo model.state ] + , [ txModalOrNone (EthHelpers.factoryTypeWithDefault model.userInfo) model.userInfo model.state ] ) @@ -61,16 +68,16 @@ menuItemElement factoryType showButtons recipe = [ Element.spacing 40 ] [ recipeSummaryElement factoryType recipe , if showButtons then - startButton recipe + startButton factoryType recipe else Element.none ] -startButton : TradeRecipe -> Element Msg -startButton recipe = - EH.blueButton "Start" (StartClicked recipe) +startButton : FactoryType -> TradeRecipe -> Element Msg +startButton factoryType recipe = + EH.blueButton "Start" (StartClicked factoryType recipe) recipeSummaryElement : FactoryType -> TradeRecipe -> Element Msg @@ -204,8 +211,8 @@ textInputPlaceholder initiatorRole = |> Element.Input.placeholder [] -openTradeButton : Maybe UserInfo -> State -> Element Msg -openTradeButton maybeUserInfo state = +openTradeButton : FactoryType -> Maybe UserInfo -> State -> Element Msg +openTradeButton factoryType maybeUserInfo state = case maybeUserInfo of Just userInfo -> case state of @@ -215,7 +222,7 @@ openTradeButton maybeUserInfo state = EH.disabledButton "Mining Prepare tx..." Nothing ReadyToOpen -> - EH.redButton "Open Trade" (OpenClicked userInfo recipe) + EH.redButton "Open Trade" (OpenClicked factoryType userInfo recipe) OpenNeedsSig -> Element.none @@ -263,7 +270,7 @@ dollarValueString dollars = txModalOrNone : FactoryType -> Maybe UserInfo -> State -> Element Msg txModalOrNone factoryType maybeUserInfo state = (case state of - Menu (StartPrompt recipe) -> + Menu (StartPrompt tokenType recipe) -> Just <| EH.closeableModal [] @@ -282,7 +289,7 @@ txModalOrNone factoryType maybeUserInfo state = ++ Config.tokenUnitName factoryType ++ " for deposit" ) - (ApproveClicked recipe) + (ApproveClicked tokenType recipe) Nothing -> EH.redButton "Connect to Wallet" Web3Connect @@ -290,7 +297,7 @@ txModalOrNone factoryType maybeUserInfo state = ) (ChangeState <| Menu NoneStarted) - Menu (ApproveNeedsSig recipe) -> + Menu (ApproveNeedsSig tokenType recipe) -> Just <| EH.closeableModal [] (Element.column diff --git a/src/Routing.elm b/src/Routing.elm index 4040d9d..d10d8e5 100644 --- a/src/Routing.elm +++ b/src/Routing.elm @@ -12,11 +12,11 @@ import Url.Parser exposing ((), (), Parser) type Route = Home - | QuickCreate + -- | QuickCreate | Create - | Trade Int - | Marketplace BuyerOrSeller - | AgentHistory Address BuyerOrSeller + | Trade FactoryType Int + | Marketplace + | AgentHistory Address | NotFound @@ -25,12 +25,13 @@ routeParser = Url.Parser.s "DAIHard" Url.Parser.oneOf [ Url.Parser.map Home Url.Parser.top - , Url.Parser.map QuickCreate (Url.Parser.s "quickcreate") + + -- , Url.Parser.map QuickCreate (Url.Parser.s "quickcreate") , Url.Parser.map Create (Url.Parser.s "create") - , Url.Parser.map Trade (Url.Parser.s "trade" Url.Parser.int) - , Url.Parser.map Marketplace (Url.Parser.s "marketplace" buyerOrSellerParser) - , Url.Parser.map AgentHistory (Url.Parser.s "history" addressParser buyerOrSellerParser) - , Url.Parser.map (\address -> AgentHistory address Seller) (Url.Parser.s "history" addressParser) + , Url.Parser.map Trade (Url.Parser.s "trade" factoryParser Url.Parser.int) + , Url.Parser.map Marketplace (Url.Parser.s "marketplace") + , Url.Parser.map AgentHistory (Url.Parser.s "history" addressParser) + , Url.Parser.map (\address -> AgentHistory address) (Url.Parser.s "history" addressParser) ] @@ -41,6 +42,51 @@ addressParser = (Eth.Utils.toAddress >> Result.toMaybe) +factoryParser : Parser (FactoryType -> a) a +factoryParser = + Url.Parser.custom + "FACTORY" + (\s -> + case s of + "eth" -> + Just <| Native Eth + + "keth" -> + Just <| Native Kovan + + "dai" -> + Just <| Token EthDai + + "kdai" -> + Just <| Token KovanDai + + "xdai" -> + Just <| Native XDai + + _ -> + Nothing + ) + + +factoryToString : FactoryType -> String +factoryToString factory = + case factory of + Native Eth -> + "eth" + + Native Kovan -> + "keth" + + Token EthDai -> + "dai" + + Token KovanDai -> + "kdai" + + Native XDai -> + "xdai" + + buyerOrSellerParser : Parser (BuyerOrSeller -> a) a buyerOrSellerParser = Url.Parser.custom @@ -79,31 +125,19 @@ routeToString route = Home -> Url.Builder.absolute [ "DAIHard" ] [] - QuickCreate -> - Url.Builder.absolute [ "DAIHard", "quickcreate" ] [] - + -- QuickCreate -> + -- Url.Builder.absolute [ "DAIHard", "quickcreate" ] [] Create -> Url.Builder.absolute [ "DAIHard", "create" ] [] - Trade id -> - Url.Builder.absolute [ "DAIHard", "trade", String.fromInt id ] [] + Trade factory id -> + Url.Builder.absolute [ "DAIHard", "trade", factoryToString factory, String.fromInt id ] [] - Marketplace buyerOrSeller -> - Url.Builder.absolute [ "DAIHard", "marketplace", buyerOrSellerToString buyerOrSeller ] [] + Marketplace -> + Url.Builder.absolute [ "DAIHard", "marketplace" ] [] - AgentHistory address buyerOrSeller -> - Url.Builder.absolute - [ "DAIHard" - , "history" - , Eth.Utils.addressToString address - , case buyerOrSeller of - Buyer -> - "buyer" - - Seller -> - "seller" - ] - [] + AgentHistory address -> + Url.Builder.absolute [ "DAIHard", "history", Eth.Utils.addressToString address ] [] NotFound -> Url.Builder.absolute [] [] diff --git a/src/State.elm b/src/State.elm index 7e023c8..a773c49 100644 --- a/src/State.elm +++ b/src/State.elm @@ -1,13 +1,18 @@ port module State exposing (init, subscriptions, update) +-- import QuickCreate.State + import AgentHistory.State import AppCmd +import Array exposing (Array) import BigInt import Browser import Browser.Dom import Browser.Navigation +import ChainCmd exposing (ChainCmd) import CommonTypes exposing (..) import Config +import Contracts.Types as CTypes import Create.State import Element import Eth.Net @@ -15,15 +20,14 @@ import Eth.Sentry.Tx as TxSentry import Eth.Sentry.Wallet as WalletSentry exposing (WalletSentry) import Eth.Types exposing (Address) import Eth.Utils -import Helpers.ChainCmd as ChainCmd exposing (ChainCmd) -import Helpers.Eth as EthHelpers exposing (Web3Context) +import Helpers.Eth as EthHelpers +import Helpers.Tuple import Json.Decode import Json.Encode import List.Extra import Marketplace.State import Maybe.Extra import Notifications -import QuickCreate.State import Routing import Time import Trade.State @@ -32,6 +36,7 @@ import TradeCache.Types exposing (TradeCache) import Types exposing (..) import Url exposing (Url) import UserNotice as UN exposing (UserNotice) +import Wallet init : Flags -> Url -> Browser.Navigation.Key -> ( Model, Cmd Msg ) @@ -44,68 +49,79 @@ init flags url key = else Nothing - ( factoryType, initialWeb3State ) = + wallet = if flags.networkId == 0 then - ( Native XDai - , NoWeb3 - ) + Wallet.NoneDetected else - case EthHelpers.intToFactoryType flags.networkId of - Nothing -> - ( Native XDai - , WrongNetwork - ) - - Just factoryType_ -> - ( factoryType_ - , AllGood - ) + Wallet.OnlyNetwork <| Eth.Net.toNetworkId flags.networkId providerNotice = - case initialWeb3State of - NoWeb3 -> - Just UN.noWeb3Provider + if wallet == Wallet.NoneDetected then + Just UN.noWeb3Provider - WrongNetwork -> - Just UN.wrongWeb3Network + else + case Wallet.factory wallet of + Nothing -> + Just UN.wrongWeb3Network - AllGood -> - Nothing + Just _ -> + Nothing userNotices = Maybe.Extra.values [ tooSmallNotice, providerNotice ] - web3Context = - EthHelpers.web3Context factoryType - txSentry = - TxSentry.init ( txOut, txIn ) TxSentryMsg web3Context.httpProvider + Wallet.httpProvider wallet + |> Maybe.map + (\httpProvider -> + TxSentry.init ( txOut, txIn ) TxSentryMsg httpProvider + ) - ( tradeCache, tcCmd, tcAppCmds ) = - TradeCache.initAndStartCaching web3Context + tcInitResults = + Config.activeFactories + |> List.map TradeCache.initAndStartCaching + + ( tradeCaches, tcCmds, tcAppCmdLists ) = + ( List.map Helpers.Tuple.tuple3First tcInitResults + , List.map Helpers.Tuple.tuple3Second tcInitResults + , List.map Helpers.Tuple.tuple3Third tcInitResults + ) + + appCmds = + tcAppCmdLists + |> List.indexedMap + (\tcId tcAppCmds -> + AppCmd.mapList (TradeCacheMsg tcId) tcAppCmds + ) + |> List.concat + + tcCmd = + tcCmds + |> List.indexedMap + (\tcId cmd -> + Cmd.map (TradeCacheMsg tcId) cmd + ) + |> Cmd.batch ( model, fromUrlCmd ) = { key = key - , initialWeb3State = initialWeb3State + , wallet = wallet + , userAddress = Nothing , time = Time.millisToPosix 0 - , web3Context = web3Context , txSentry = txSentry - , userAddress = Nothing - , userInfo = Nothing - , tradeCache = tradeCache + , tradeCaches = tradeCaches , submodel = BetaLandingPage , userNotices = [] , screenWidth = flags.width } |> updateFromUrl url - |> runAppCmds - (AppCmd.mapList TradeCacheMsg tcAppCmds) + |> runAppCmds appCmds in ( model |> addUserNotices userNotices , Cmd.batch - [ Cmd.map TradeCacheMsg tcCmd + [ tcCmd , fromUrlCmd ] ) @@ -199,69 +215,9 @@ update msg model = Tick newTime -> ( { model | time = newTime }, Cmd.none ) - NetworkUpdate newNetworkValue -> - let - newNetworkIdResult = - Json.Decode.decodeValue Json.Decode.int newNetworkValue - |> Result.map Eth.Net.toNetworkId - - maybeNewFactoryType = - newNetworkIdResult - |> Result.toMaybe - |> Maybe.andThen EthHelpers.networkIdToFactoryType - in - case ( newNetworkIdResult, maybeNewFactoryType ) of - ( Ok newNetworkId, Just newFactoryType ) -> - if newNetworkId /= EthHelpers.factoryTypeToNetworkId model.web3Context.factoryType then - let - newWeb3Context = - EthHelpers.web3Context newFactoryType - - ( submodel, submodelCmd, maybeRoute ) = - model.submodel |> updateSubmodelWeb3Context newWeb3Context - - ( newTradeCache, tradeCacheCmd, appCmds ) = - TradeCache.initAndStartCaching newWeb3Context - in - ( { model - | submodel = submodel - , tradeCache = newTradeCache - , web3Context = newWeb3Context - } - , Cmd.batch - [ Cmd.map TradeCacheMsg tradeCacheCmd - , case maybeRoute of - Just newRoute -> - beginRouteChange model.key newRoute - - Nothing -> - submodelCmd - ] - ) - |> runAppCmds - (AppCmd.mapList TradeCacheMsg appCmds) - - else - ( model - , Cmd.none - ) - - ( Err jsonDecodeError, _ ) -> - ( model - |> (addUserNotice <| UN.unexpectedError "Can't decode networkID from Javascript" jsonDecodeError) - , Cmd.none - ) - - ( _, Nothing ) -> - ( model - |> addUserNotice - UN.wrongWeb3Network - , Cmd.none - ) - ConnectToWeb3 -> - case model.initialWeb3State of - NoWeb3 -> + case model.wallet of + Wallet.NoneDetected -> ( model |> addUserNotice UN.cantConnectNoWeb3 , Cmd.none ) @@ -286,6 +242,7 @@ update msg model = in ( { model | userAddress = walletSentry.account + , wallet = Wallet.OnlyNetwork walletSentry.networkId } , genCommPubkeyCmd ) @@ -293,26 +250,27 @@ update msg model = UserPubkeySet commPubkeyValue -> case Json.Decode.decodeValue Json.Decode.string commPubkeyValue of Ok commPubkey -> - case model.userAddress of - Just userAddress -> + case ( model.userAddress, model.wallet ) of + ( Just userAddress, Wallet.OnlyNetwork network ) -> let - userInfo = - Just - { address = userAddress - , commPubkey = commPubkey - } + wallet = + Wallet.Active <| + UserInfo + network + userAddress + commPubkey ( submodel, cmd ) = - model.submodel |> updateSubmodelUserInfo userInfo + model.submodel |> updateSubmodelWalletState wallet in ( { model - | userInfo = userInfo + | wallet = wallet , submodel = submodel } , cmd ) - Nothing -> + ( Nothing, _ ) -> ( model |> addUserNotice (UN.unexpectedError @@ -322,6 +280,16 @@ update msg model = , Cmd.none ) + ( _, _ ) -> + ( model + |> addUserNotice + (UN.unexpectedError + "Unexpected wallet state encounted when setting commPubkey!" + ( model.userAddress, model.wallet ) + ) + , Cmd.none + ) + Err s -> ( model |> (addUserNotice <| UN.unexpectedError "error decoding commPubkey from JS" s) , Cmd.none @@ -334,7 +302,7 @@ update msg model = updateResult = Create.State.update createMsg createModel - ( newTxSentry, chainCmd ) = + ( newTxSentry, chainCmd, userNotices ) = ChainCmd.execute model.txSentry (ChainCmd.map CreateMsg updateResult.chainCmd) in ( { model @@ -347,36 +315,37 @@ update msg model = ] ) |> runAppCmds - (AppCmd.mapList CreateMsg updateResult.appCmds) - - _ -> - ( model, Cmd.none ) - - QuickCreateMsg quickCreateMsg -> - case model.submodel of - QuickCreateModel quickCreateModel -> - let - updateResult = - QuickCreate.State.update quickCreateMsg quickCreateModel - - ( newTxSentry, chainCmd ) = - ChainCmd.execute model.txSentry (ChainCmd.map QuickCreateMsg updateResult.chainCmd) - in - ( { model - | submodel = QuickCreateModel updateResult.model - , txSentry = newTxSentry - } - , Cmd.batch - [ Cmd.map QuickCreateMsg updateResult.cmd - , chainCmd - ] - ) - |> runAppCmds - (AppCmd.mapList QuickCreateMsg updateResult.appCmds) + (AppCmd.mapList CreateMsg updateResult.appCmds + ++ List.map AppCmd.UserNotice userNotices + ) _ -> ( model, Cmd.none ) + -- QuickCreateMsg quickCreateMsg -> + -- case model.submodel of + -- QuickCreateModel quickCreateModel -> + -- let + -- updateResult = + -- QuickCreate.State.update quickCreateMsg quickCreateModel + -- ( newTxSentry, chainCmd, userNotices ) = + -- ChainCmd.execute model.txSentry (ChainCmd.map QuickCreateMsg updateResult.chainCmd) + -- in + -- ( { model + -- | submodel = QuickCreateModel updateResult.model + -- , txSentry = newTxSentry + -- } + -- , Cmd.batch + -- [ Cmd.map QuickCreateMsg updateResult.cmd + -- , chainCmd + -- ] + -- ) + -- |> runAppCmds + -- (AppCmd.mapList QuickCreateMsg updateResult.appCmds + -- ++ List.map AppCmd.UserNotice userNotices + -- ) + -- _ -> + -- ( model, Cmd.none ) TradeMsg tradeMsg -> case model.submodel of TradeModel tradeModel -> @@ -384,7 +353,7 @@ update msg model = updateResult = Trade.State.update tradeMsg tradeModel - ( newTxSentry, chainCmd ) = + ( newTxSentry, chainCmd, userNotices ) = ChainCmd.execute model.txSentry (ChainCmd.map TradeMsg updateResult.chainCmd) in ( { model @@ -397,7 +366,9 @@ update msg model = ] ) |> runAppCmds - (AppCmd.mapList TradeMsg updateResult.appCmds) + (AppCmd.mapList TradeMsg updateResult.appCmds + ++ List.map AppCmd.UserNotice userNotices + ) _ -> ( model, Cmd.none ) @@ -425,7 +396,7 @@ update msg model = updateResult = AgentHistory.State.update agentHistoryMsg agentHistoryModel - ( newTxSentry, chainCmd ) = + ( newTxSentry, chainCmd, userNotices ) = ChainCmd.execute model.txSentry (ChainCmd.map AgentHistoryMsg updateResult.chainCmd) in ( { model @@ -438,28 +409,46 @@ update msg model = ] ) |> runAppCmds - (AppCmd.mapList AgentHistoryMsg updateResult.appCmds) + (AppCmd.mapList AgentHistoryMsg updateResult.appCmds + ++ List.map AppCmd.UserNotice userNotices + ) _ -> ( model, Cmd.none ) TxSentryMsg subMsg -> let - ( submodel, subCmd ) = - TxSentry.update subMsg model.txSentry - in - ( { model | txSentry = submodel }, subCmd ) + ( newTxSentry, subCmd ) = + case model.txSentry of + Just txSentry -> + TxSentry.update subMsg txSentry + |> Tuple.mapFirst Just - TradeCacheMsg tradeCacheMsg -> - let - updateResult = - TradeCache.update - tradeCacheMsg - model.tradeCache + Nothing -> + ( Nothing, Cmd.none ) in - ( { model | tradeCache = updateResult.tradeCache } - , updateResult.cmd |> Cmd.map TradeCacheMsg - ) + ( { model | txSentry = newTxSentry }, subCmd ) + + TradeCacheMsg tcId tradeCacheMsg -> + case List.Extra.getAt tcId model.tradeCaches of + Nothing -> + ( model, Cmd.none ) + |> runAppCmd (AppCmd.UserNotice <| UN.unexpectedError "Encountered an out-of-range error when trying to route a TradeCacheMsg" Nothing) + + Just tradeCache -> + let + updateResult = + TradeCache.update + tradeCacheMsg + tradeCache + in + ( { model + | tradeCaches = + model.tradeCaches + |> List.Extra.setAt tcId updateResult.tradeCache + } + , updateResult.cmd |> Cmd.map (TradeCacheMsg tcId) + ) NoOp -> ( model, Cmd.none ) @@ -559,9 +548,9 @@ gotoRoute oldModel route = Routing.Create -> let updateResult = - Create.State.init oldModel.web3Context oldModel.userInfo + Create.State.init oldModel.wallet - ( newTxSentry, chainCmd ) = + ( newTxSentry, chainCmd, userNotices ) = ChainCmd.execute oldModel.txSentry (ChainCmd.map CreateMsg updateResult.chainCmd) in ( { oldModel @@ -574,34 +563,41 @@ gotoRoute oldModel route = ] ) |> runAppCmds - (AppCmd.mapList CreateMsg updateResult.appCmds) + (AppCmd.mapList CreateMsg updateResult.appCmds + ++ List.map AppCmd.UserNotice userNotices + ) - Routing.QuickCreate -> + -- Routing.QuickCreate -> + -- let + -- updateResult = + -- QuickCreate.State.init oldModel.wallet + -- ( newTxSentry, chainCmd, userNotices ) = + -- ChainCmd.execute oldModel.txSentry (ChainCmd.map QuickCreateMsg updateResult.chainCmd) + -- in + -- ( { oldModel + -- | submodel = QuickCreateModel updateResult.model + -- , txSentry = newTxSentry + -- } + -- , Cmd.batch + -- [ Cmd.map QuickCreateMsg updateResult.cmd + -- , chainCmd + -- ] + -- ) + -- |> runAppCmds + -- (AppCmd.mapList QuickCreateMsg updateResult.appCmds + -- ++ List.map AppCmd.UserNotice userNotices + -- ) + Routing.Trade factory id -> let updateResult = - QuickCreate.State.init oldModel.web3Context oldModel.userInfo + case getTradeFromCaches factory id oldModel.tradeCaches of + Just (CTypes.LoadedTrade trade) -> + Trade.State.initFromCached oldModel.wallet trade - ( newTxSentry, chainCmd ) = - ChainCmd.execute oldModel.txSentry (ChainCmd.map QuickCreateMsg updateResult.chainCmd) - in - ( { oldModel - | submodel = QuickCreateModel updateResult.model - , txSentry = newTxSentry - } - , Cmd.batch - [ Cmd.map QuickCreateMsg updateResult.cmd - , chainCmd - ] - ) - |> runAppCmds - (AppCmd.mapList QuickCreateMsg updateResult.appCmds) - - Routing.Trade id -> - let - updateResult = - Trade.State.init oldModel.web3Context oldModel.userInfo id + _ -> + Trade.State.init oldModel.wallet factory id - ( newTxSentry, chainCmd ) = + ( newTxSentry, chainCmd, userNotices ) = ChainCmd.execute oldModel.txSentry (ChainCmd.map TradeMsg updateResult.chainCmd) in ( { oldModel @@ -614,12 +610,14 @@ gotoRoute oldModel route = ] ) |> runAppCmds - (AppCmd.mapList TradeMsg updateResult.appCmds) + (AppCmd.mapList TradeMsg updateResult.appCmds + ++ List.map AppCmd.UserNotice userNotices + ) - Routing.Marketplace browsingRole -> + Routing.Marketplace -> let ( marketplaceModel, marketplaceCmd ) = - Marketplace.State.init oldModel.web3Context browsingRole oldModel.userInfo + Marketplace.State.init oldModel.wallet in ( { oldModel | submodel = MarketplaceModel marketplaceModel @@ -629,10 +627,10 @@ gotoRoute oldModel route = ] ) - Routing.AgentHistory address agentRole -> + Routing.AgentHistory address -> let ( agentHistoryModel, agentHistoryCmd ) = - AgentHistory.State.init oldModel.web3Context address agentRole oldModel.userInfo + AgentHistory.State.init oldModel.wallet address in ( { oldModel | submodel = AgentHistoryModel agentHistoryModel @@ -648,8 +646,16 @@ gotoRoute oldModel route = ) -updateSubmodelUserInfo : Maybe UserInfo -> Submodel -> ( Submodel, Cmd Msg ) -updateSubmodelUserInfo userInfo submodel = +getTradeFromCaches : FactoryType -> Int -> List TradeCache -> Maybe CTypes.Trade +getTradeFromCaches factory id tradeCaches = + tradeCaches + |> List.Extra.find (\tc -> tc.factory == factory) + |> Maybe.map .trades + |> Maybe.andThen (Array.get id) + + +updateSubmodelWalletState : Wallet.State -> Submodel -> ( Submodel, Cmd Msg ) +updateSubmodelWalletState wallet submodel = case submodel of BetaLandingPage -> ( submodel @@ -659,77 +665,37 @@ updateSubmodelUserInfo userInfo submodel = CreateModel createModel -> let ( newCreateModel, createCmd ) = - createModel |> Create.State.updateUserInfo userInfo + createModel |> Create.State.updateWalletState wallet in ( CreateModel newCreateModel , Cmd.map CreateMsg createCmd ) - QuickCreateModel quickCreateModel -> - let - ( newQuickCreateModel, quickCreateCmd ) = - quickCreateModel |> QuickCreate.State.updateUserInfo userInfo - in - ( QuickCreateModel newQuickCreateModel - , Cmd.map QuickCreateMsg quickCreateCmd - ) - + -- QuickCreateModel quickCreateModel -> + -- let + -- ( newQuickCreateModel, quickCreateCmd ) = + -- quickCreateModel |> QuickCreate.State.updateWalletState wallet + -- in + -- ( QuickCreateModel newQuickCreateModel + -- , Cmd.map QuickCreateMsg quickCreateCmd + -- ) TradeModel tradeModel -> let ( newTradeModel, tradeCmd ) = - tradeModel |> Trade.State.updateUserInfo userInfo + tradeModel |> Trade.State.updateWalletState wallet in ( TradeModel newTradeModel , Cmd.map TradeMsg tradeCmd ) MarketplaceModel marketplaceModel -> - ( MarketplaceModel (marketplaceModel |> Marketplace.State.updateUserInfo userInfo) - , Cmd.none - ) - - AgentHistoryModel agentHistoryModel -> - ( AgentHistoryModel (agentHistoryModel |> AgentHistory.State.updateUserInfo userInfo) - , Cmd.none - ) - - -updateSubmodelWeb3Context : EthHelpers.Web3Context -> Submodel -> ( Submodel, Cmd Msg, Maybe Routing.Route ) -updateSubmodelWeb3Context newWeb3Context submodel = - case submodel of - BetaLandingPage -> - ( submodel, Cmd.none, Nothing ) - - CreateModel createModel -> - ( CreateModel (createModel |> Create.State.updateWeb3Context newWeb3Context) - , Cmd.none - , Nothing - ) - - QuickCreateModel quickCreateModel -> - ( QuickCreateModel (quickCreateModel |> QuickCreate.State.updateWeb3Context newWeb3Context) - , Cmd.none - , Nothing - ) - - TradeModel tradeModel -> - -- Doesn't make sense to look at the same trade on a new network - -- so just redirect to marketplace - ( submodel - , Cmd.none - , Just <| Routing.Marketplace Buyer - ) - - MarketplaceModel marketplaceModel -> - ( MarketplaceModel (marketplaceModel |> Marketplace.State.updateWeb3Context newWeb3Context) + ( MarketplaceModel (marketplaceModel |> Marketplace.State.updateWalletState wallet) , Cmd.none - , Nothing ) AgentHistoryModel agentHistoryModel -> - ( AgentHistoryModel (agentHistoryModel |> AgentHistory.State.updateWeb3Context newWeb3Context) + ( AgentHistoryModel (agentHistoryModel |> AgentHistory.State.updateWalletState wallet) , Cmd.none - , Nothing ) @@ -743,10 +709,14 @@ subscriptions model = Sub.batch ([ Time.every 1000 Tick , walletSentryPort (WalletSentry.decodeToMsg failedWalletDecodeToMsg WalletStatus) - , TxSentry.listen model.txSentry + , Maybe.map TxSentry.listen model.txSentry + |> Maybe.withDefault Sub.none , userPubkeyResult UserPubkeySet - , Sub.map TradeCacheMsg <| TradeCache.subscriptions model.tradeCache - , networkSentryPort NetworkUpdate + , model.tradeCaches + |> List.map TradeCache.subscriptions + |> List.indexedMap + (\tcId sub -> Sub.map (TradeCacheMsg tcId) sub) + |> Sub.batch ] ++ [ submodelSubscriptions model ] ) @@ -761,9 +731,8 @@ submodelSubscriptions model = CreateModel createModel -> Sub.map CreateMsg <| Create.State.subscriptions createModel - QuickCreateModel quickCreateModel -> - Sub.map QuickCreateMsg <| QuickCreate.State.subscriptions quickCreateModel - + -- QuickCreateModel quickCreateModel -> + -- Sub.map QuickCreateMsg <| QuickCreate.State.subscriptions quickCreateModel TradeModel tradeModel -> Sub.map TradeMsg <| Trade.State.subscriptions tradeModel @@ -777,9 +746,6 @@ submodelSubscriptions model = port walletSentryPort : (Json.Decode.Value -> msg) -> Sub msg -port networkSentryPort : (Json.Decode.Value -> msg) -> Sub msg - - port connectToWeb3 : () -> Cmd msg diff --git a/src/Trade/ChatHistory/State.elm b/src/Trade/ChatHistory/State.elm index 7d2c6d5..d72a1cc 100644 --- a/src/Trade/ChatHistory/State.elm +++ b/src/Trade/ChatHistory/State.elm @@ -5,22 +5,22 @@ import Array exposing (Array) import CommonTypes exposing (..) import Contracts.Types as CTypes import Eth -import Helpers.Eth as EthHelpers exposing (Web3Context) +import Helpers.Eth as EthHelpers import Json.Decode import Json.Encode import Maybe.Extra import Trade.ChatHistory.SecureComm exposing (..) import Trade.ChatHistory.Types exposing (..) import UserNotice as UN +import Wallet -init : Web3Context -> UserInfo -> BuyerOrSeller -> BuyerOrSeller -> List ( Int, CTypes.DAIHardEvent ) -> Int -> ( Model, Bool, List (AppCmd Msg) ) -init web3Context userInfo buyerOrSeller initiatorRole initialEvents currentBlocknum = +init : Wallet.State -> BuyerOrSeller -> CTypes.FullTradeInfo -> List ( Int, CTypes.DAIHardEvent ) -> Int -> ( Model, Bool, List (AppCmd Msg) ) +init wallet userRole trade initialEvents currentBlocknum = Model - web3Context - userInfo - buyerOrSeller - initiatorRole + wallet + trade + userRole Array.empty currentBlocknum "" @@ -133,7 +133,7 @@ handleNewEvent : Int -> CTypes.DAIHardEvent -> Model -> ( Model, Bool, List (App handleNewEvent blocknum event prevModel = let toBuyerOrSeller = - CTypes.initiatorOrResponderToBuyerOrSeller prevModel.initiatorRole + CTypes.initiatorOrResponderToBuyerOrSeller prevModel.trade.parameters.initiatorRole maybeHistoryEventInfo = case event of @@ -194,7 +194,7 @@ handleNewEvent blocknum event prevModel = ( maybeHistoryEventInfo |> Maybe.map (historyEventToBrowserNotifcationAppCmd - (prevModel.userRole == prevModel.initiatorRole) + (prevModel.userRole == prevModel.trade.parameters.initiatorRole) ) , blocknum ) diff --git a/src/Trade/ChatHistory/Types.elm b/src/Trade/ChatHistory/Types.elm index 825b682..26ef9a8 100644 --- a/src/Trade/ChatHistory/Types.elm +++ b/src/Trade/ChatHistory/Types.elm @@ -4,17 +4,18 @@ import AppCmd exposing (AppCmd) import Array exposing (Array) import CommonTypes exposing (..) import Contracts.Types as CTypes +import Eth.Net import Eth.Types exposing (Address) -import Helpers.Eth as EthHelpers exposing (Web3Context) +import Helpers.Eth as EthHelpers import Json.Decode import Time +import Wallet type alias Model = - { web3Context : Web3Context - , userInfo : UserInfo + { wallet : Wallet.State + , trade : CTypes.FullTradeInfo , userRole : BuyerOrSeller - , initiatorRole : BuyerOrSeller , history : Array Event , lastNotificationBlocknum : Int , messageInput : String diff --git a/src/Trade/ChatHistory/View.elm b/src/Trade/ChatHistory/View.elm index 2193ca5..d862921 100644 --- a/src/Trade/ChatHistory/View.elm +++ b/src/Trade/ChatHistory/View.elm @@ -12,6 +12,7 @@ import Element.Input import Eth.Utils import Helpers.Element as EH import Trade.ChatHistory.Types exposing (..) +import Wallet window : Model -> Element Msg @@ -37,7 +38,7 @@ historyAndCommsElement model = , Element.padding 20 ] [ historyElement - model.web3Context.factoryType + model.trade.factory model.userRole (model.history |> Array.toList |> List.sortBy .blocknum) , commInputElement model @@ -175,10 +176,10 @@ renderEvent factoryType userRole event = Just ( Element.rgb 0 1 0, EH.white, "Buyer marked the fiat transfer complete" ) Released -> - Just ( Element.rgb 0 0 1, EH.white, "Seller released the " ++ Config.tokenUnitName factoryType ++ " and closed the contract" ) + Just ( Element.rgb 0 0 1, EH.white, "Seller released the " ++ tokenUnitName factoryType ++ " and closed the contract" ) Burned -> - Just ( Element.rgb 0 0 1, EH.white, "Seller burned the " ++ Config.tokenUnitName factoryType ++ " and closed the contract" ) + Just ( Element.rgb 0 0 1, EH.white, "Seller burned the " ++ tokenUnitName factoryType ++ " and closed the contract" ) in case maybeElementInfo of Nothing -> diff --git a/src/Trade/State.elm b/src/Trade/State.elm index cfb2ccd..f130968 100644 --- a/src/Trade/State.elm +++ b/src/Trade/State.elm @@ -1,8 +1,9 @@ -port module Trade.State exposing (init, subscriptions, update, updateUserInfo) +port module Trade.State exposing (init, initFromCached, subscriptions, update, updateWalletState) import AppCmd exposing (AppCmd) import Array exposing (Array) import BigInt exposing (BigInt) +import ChainCmd exposing (ChainCmd) import CommonTypes exposing (..) import Config import Contracts.Generated.DAIHardNativeTrade as DHNT @@ -17,8 +18,7 @@ import Eth.Sentry.Tx exposing (CustomSend) import Eth.Types exposing (Address) import Eth.Utils import Helpers.BigInt as BigIntHelpers -import Helpers.ChainCmd as ChainCmd exposing (ChainCmd) -import Helpers.Eth as EthHelpers exposing (Web3Context) +import Helpers.Eth as EthHelpers import Http import Json.Decode import Json.Encode @@ -35,58 +35,105 @@ import Trade.ChatHistory.State as ChatHistory import Trade.ChatHistory.Types as ChatHistory import Trade.Types exposing (..) import UserNotice as UN +import Wallet -init : EthHelpers.Web3Context -> Maybe UserInfo -> Int -> UpdateResult -init web3Context userInfo tradeId = +init : Wallet.State -> FactoryType -> Int -> UpdateResult +init wallet factory tradeId = let - getCreationInfoCmd = - getContractCreationInfoCmd web3Context tradeId + creationInfoCmd = + getCreationInfoCmd factory tradeId ( eventSentry, eventSentryCmd ) = - EventSentry.init EventSentryMsg web3Context.httpProvider + initEventSentry factory in UpdateResult - { web3Context = web3Context - , userInfo = userInfo - , trade = CTypes.partialTradeInfo tradeId - , expandedPhase = CTypes.Open - , chatHistoryModel = Nothing - , showChatHistory = False - , showStatsModal = False - , eventsWaitingForChatHistory = [] - , secureCommInfo = partialCommInfo - , eventSentry = eventSentry - , allowance = Nothing - , txChainStatus = Nothing - , blocknumOnInit = Nothing - } + (initModel (CTypes.partialTradeInfo factory tradeId) eventSentry wallet) (Cmd.batch - [ getCreationInfoCmd + [ creationInfoCmd , eventSentryCmd - , getBlockCmd web3Context + , getBlockCmd (EthHelpers.httpProviderForFactory factory) ] ) ChainCmd.none [ AppCmd.RequestBrowserNotificationPermission ] -getContractCreationInfoCmd : EthHelpers.Web3Context -> Int -> Cmd Msg -getContractCreationInfoCmd web3Context id = - Contracts.Wrappers.getCreationInfoFromIdCmd web3Context (BigInt.fromInt id) CreationInfoFetched +initFromCached : Wallet.State -> CTypes.FullTradeInfo -> UpdateResult +initFromCached wallet trade = + let + ( eventSentry, eventSentryCmd, _ ) = + let + ( initialSentry, initialCmd ) = + initEventSentry trade.factory + in + EventSentry.watch + EventLogFetched + initialSentry + { address = trade.creationInfo.address + , fromBlock = Eth.Types.BlockNum trade.creationInfo.blocknum + , toBlock = Eth.Types.LatestBlock + , topics = [] + } + |> (\( a, b, c ) -> + ( a + , Cmd.batch [ initialCmd, b ] + , c + ) + ) + in + UpdateResult + (initModel (CTypes.LoadedTrade trade) eventSentry wallet) + (Cmd.batch + [ eventSentryCmd + , getBlockCmd (EthHelpers.httpProviderForFactory trade.factory) + ] + ) + ChainCmd.none + [ AppCmd.RequestBrowserNotificationPermission ] + + +initModel : CTypes.Trade -> EventSentry Msg -> Wallet.State -> Model +initModel trade eventSentry wallet = + { wallet = wallet + , trade = trade + , expandedPhase = CTypes.Open + , chatHistoryModel = Nothing + , showChatHistory = False + , showStatsModal = False + , eventsWaitingForChatHistory = [] + , secureCommInfo = partialCommInfo + , eventSentry = eventSentry + , allowance = Nothing + , txChainStatus = Nothing + , blocknumOnInit = Nothing + } + + +initEventSentry : FactoryType -> ( EventSentry Msg, Cmd Msg ) +initEventSentry factory = + EventSentry.init EventSentryMsg (EthHelpers.httpProviderForFactory factory) + + +getCreationInfoCmd : FactoryType -> Int -> Cmd Msg +getCreationInfoCmd factoryType id = + Contracts.Wrappers.getCreationInfoFromIdCmd factoryType (BigInt.fromInt id) CreationInfoFetched -updateUserInfo : Maybe UserInfo -> Model -> ( Model, Cmd Msg ) -updateUserInfo userInfo model = - ( { model | userInfo = userInfo } - , case ( userInfo, model.trade, model.web3Context.factoryType ) of - ( Just uInfo, CTypes.LoadedTrade trade, Token tokenType ) -> - Contracts.Wrappers.getAllowanceCmd - model.web3Context - tokenType - uInfo.address - trade.creationInfo.address - AllowanceFetched +updateWalletState : Wallet.State -> Model -> ( Model, Cmd Msg ) +updateWalletState wallet model = + ( { model | wallet = wallet } + , case ( Wallet.userInfo wallet, Wallet.factory wallet, model.trade ) of + ( Just uInfo, Just (Token tokenType), CTypes.LoadedTrade trade ) -> + if Wallet.factory wallet == Just trade.factory then + Contracts.Wrappers.getAllowanceCmd + tokenType + uInfo.address + trade.creationInfo.address + AllowanceFetched + + else + Cmd.none _ -> Cmd.none @@ -103,7 +150,7 @@ update msg prevModel = CTypes.PartiallyLoadedTrade pInfo -> case pInfo.creationInfo of Nothing -> - getContractCreationInfoCmd prevModel.web3Context pInfo.id + getCreationInfoCmd pInfo.factory pInfo.id _ -> Cmd.none @@ -114,7 +161,7 @@ update msg prevModel = ( newChatHistoryModel, shouldDecrypt, appCmds ) = case prevModel.chatHistoryModel of Nothing -> - tryInitChatHistory prevModel.web3Context prevModel.trade prevModel.userInfo prevModel.blocknumOnInit prevModel.eventsWaitingForChatHistory + tryInitChatHistory prevModel.wallet prevModel.trade prevModel.blocknumOnInit prevModel.eventsWaitingForChatHistory _ -> ( prevModel.chatHistoryModel, False, [] ) @@ -127,14 +174,17 @@ update msg prevModel = Cmd.none fetchAllowanceCmd = - case ( prevModel.userInfo, prevModel.trade, prevModel.web3Context.factoryType ) of - ( Just userInfo, CTypes.LoadedTrade trade, Token tokenType ) -> - Contracts.Wrappers.getAllowanceCmd - prevModel.web3Context - tokenType - userInfo.address - trade.creationInfo.address - AllowanceFetched + case ( Wallet.userInfo prevModel.wallet, Wallet.factory prevModel.wallet, prevModel.trade ) of + ( Just userInfo, Just (Token tokenType), CTypes.LoadedTrade trade ) -> + if Wallet.factory prevModel.wallet == Just trade.factory then + Contracts.Wrappers.getAllowanceCmd + tokenType + userInfo.address + trade.creationInfo.address + AllowanceFetched + + else + Cmd.none _ -> Cmd.none @@ -147,9 +197,10 @@ update msg prevModel = UpdateResult newModel (Cmd.batch - [ Contracts.Wrappers.getStateCmd prevModel.web3Context tradeInfo.creationInfo.address StateFetched + [ Contracts.Wrappers.getStateCmd tradeInfo.factory tradeInfo.creationInfo.address StateFetched , decryptCmd - , fetchCreationInfoCmd + + -- , fetchCreationInfoCmd , fetchAllowanceCmd ] ) @@ -183,12 +234,12 @@ update msg prevModel = | allowance = Just allowance } in - case ( newModel.txChainStatus, newModel.trade, newModel.userInfo ) of - ( Just (ApproveMining _), CTypes.LoadedTrade trade, Just userInfo ) -> + case ( newModel.txChainStatus, newModel.trade, newModel.wallet ) of + ( Just (ApproveMining _), CTypes.LoadedTrade trade, Wallet.Active userInfo ) -> if BigInt.compare allowance (CTypes.responderDeposit trade.parameters |> TokenValue.getEvmValue) /= LT then let ( txChainStatus, chainCmd ) = - initiateCommitCall prevModel.web3Context trade userInfo.address userInfo.commPubkey + initiateCommitCall trade userInfo.address userInfo.commPubkey in UpdateResult { newModel | txChainStatus = txChainStatus } @@ -213,11 +264,11 @@ update msg prevModel = CreationInfoFetched fetchResult -> case fetchResult of - Ok createdSell -> + Ok createdTrade -> let newCreationInfo = - { address = createdSell.address_ - , blocknum = BigIntHelpers.toIntWithWarning createdSell.blocknum + { address = createdTrade.address_ + , blocknum = BigIntHelpers.toIntWithWarning createdTrade.blocknum } ( newSentry, sentryCmd, _ ) = @@ -236,10 +287,14 @@ update msg prevModel = , eventSentry = newSentry } + factory = + CTypes.tradeFactory newModel.trade + |> Maybe.withDefault Wallet.defaultFactory + cmd = Cmd.batch [ sentryCmd - , Contracts.Wrappers.getParametersStateAndPhaseInfoCmd newModel.web3Context newCreationInfo.address ParametersFetched StateFetched PhaseInfoFetched + , Contracts.Wrappers.getParametersStateAndPhaseInfoCmd factory newCreationInfo.address ParametersFetched StateFetched PhaseInfoFetched ] in UpdateResult @@ -323,7 +378,9 @@ update msg prevModel = else UpdateResult - prevModel + { prevModel + | trade = CTypes.Invalid + } Cmd.none ChainCmd.none [ AppCmd.UserNotice UN.tradeParametersNotDefault ] @@ -420,44 +477,49 @@ update msg prevModel = _ -> prevModel.secureCommInfo - ( newChatHistoryModel, shouldDecrypt, appCmds ) = + ( maybeChatHistoryModel, firstShouldDecrypt, firstAppCmds ) = case prevModel.chatHistoryModel of Just prevChatHistoryModel -> - ChatHistory.handleNewEvent + ( Just prevChatHistoryModel, False, [] ) + + Nothing -> + tryInitChatHistory prevModel.wallet newTrade prevModel.blocknumOnInit prevModel.eventsWaitingForChatHistory + + ( ( updatedChatHistory, finalShouldDecrypt, finalAppCmds ), newEventsWaitingForChatHistory ) = + case maybeChatHistoryModel of + Just chatHistoryModel -> + ( ChatHistory.handleNewEvent decodedEventLog.blockNumber event - prevChatHistoryModel + chatHistoryModel |> (\( chModel, shouldDecrypt_, appCmds_ ) -> ( Just chModel - , shouldDecrypt_ - , appCmds_ |> List.map (AppCmd.map ChatHistoryMsg) + , shouldDecrypt_ || firstShouldDecrypt + , List.append + firstAppCmds + (List.map (AppCmd.map ChatHistoryMsg) appCmds_) ) ) + , [] + ) Nothing -> - -- chat is uninitialized; initialize if we can - tryInitChatHistory prevModel.web3Context newTrade prevModel.userInfo prevModel.blocknumOnInit prevModel.eventsWaitingForChatHistory - - eventsToSave = - case newChatHistoryModel of - Nothing -> - List.append + ( ( Nothing, False, firstAppCmds ) + , List.append prevModel.eventsWaitingForChatHistory [ ( decodedEventLog.blockNumber, event ) ] - - Just _ -> - [] + ) newModel = { prevModel | trade = newTrade - , chatHistoryModel = newChatHistoryModel + , chatHistoryModel = updatedChatHistory , secureCommInfo = newSecureCommInfo - , eventsWaitingForChatHistory = eventsToSave + , eventsWaitingForChatHistory = newEventsWaitingForChatHistory } cmd = - if shouldDecrypt then + if finalShouldDecrypt then tryBuildDecryptCmd newModel else @@ -472,7 +534,7 @@ update msg prevModel = |> Maybe.Extra.values |> List.map AppCmd.UserNotice ) - appCmds + finalAppCmds ) ExpandPhase phase -> @@ -507,7 +569,7 @@ update msg prevModel = prevModel Cmd.none ChainCmd.none - [ AppCmd.GotoRoute (Routing.AgentHistory trade.parameters.initiatorAddress asRole) ] + [ AppCmd.GotoRoute (Routing.AgentHistory trade.parameters.initiatorAddress) ] _ -> UpdateResult @@ -519,7 +581,7 @@ update msg prevModel = ] CommitClicked trade userInfo depositAmount -> - justModelUpdate { prevModel | txChainStatus = Just <| ConfirmingCommit trade userInfo depositAmount } + justModelUpdate { prevModel | txChainStatus = Just <| ConfirmingCommit userInfo depositAmount } AbortAction -> justModelUpdate { prevModel | txChainStatus = Nothing } @@ -527,9 +589,9 @@ update msg prevModel = ConfirmCommit trade userInfo depositAmount -> let ( txChainStatus, chainCmd ) = - case prevModel.web3Context.factoryType of + case trade.factory of Native _ -> - initiateCommitCall prevModel.web3Context trade userInfo.address userInfo.commPubkey + initiateCommitCall trade userInfo.address userInfo.commPubkey Token tokenType -> let @@ -553,7 +615,7 @@ update msg prevModel = case prevModel.allowance of Just allowance -> if BigInt.compare allowance (CTypes.responderDeposit trade.parameters |> TokenValue.getEvmValue) /= LT then - initiateCommitCall prevModel.web3Context trade userInfo.address userInfo.commPubkey + initiateCommitCall trade userInfo.address userInfo.commPubkey else ( Just ApproveNeedsSig, approveChainCmd ) @@ -795,8 +857,8 @@ update msg prevModel = decodeEncryptionResult encryptedMessagesValue |> Result.andThen encodeEncryptedMessages in - case ( prevModel.userInfo, prevModel.trade, encodedEncryptionMessages ) of - ( Just userInfo, CTypes.LoadedTrade tradeInfo, Ok encodedEncryptedMessages ) -> + case ( prevModel.wallet, prevModel.trade, encodedEncryptionMessages ) of + ( Wallet.Active userInfo, CTypes.LoadedTrade tradeInfo, Ok encodedEncryptedMessages ) -> case CTypes.getInitiatorOrResponder tradeInfo userInfo.address of Nothing -> UpdateResult @@ -869,11 +931,11 @@ update msg prevModel = [ AppCmd.Web3Connect ] -initiateCommitCall : EthHelpers.Web3Context -> CTypes.FullTradeInfo -> Address -> String -> ( Maybe TxChainStatus, ChainCmd Msg ) -initiateCommitCall web3Context trade userAddress commPubkey = +initiateCommitCall : CTypes.FullTradeInfo -> Address -> String -> ( Maybe TxChainStatus, ChainCmd Msg ) +initiateCommitCall trade userAddress commPubkey = let commitConstructor = - case web3Context.factoryType of + case trade.factory of Token _ -> DHT.commit @@ -882,7 +944,7 @@ initiateCommitCall web3Context trade userAddress commPubkey = txParams = commitConstructor trade.creationInfo.address userAddress commPubkey - |> (case web3Context.factoryType of + |> (case trade.factory of Token _ -> identity @@ -902,9 +964,9 @@ initiateCommitCall web3Context trade userAddress commPubkey = ) -tryInitChatHistory : Web3Context -> CTypes.Trade -> Maybe UserInfo -> Maybe Int -> List ( Int, CTypes.DAIHardEvent ) -> ( Maybe ChatHistory.Model, Bool, List (AppCmd Msg) ) -tryInitChatHistory web3Context maybeTrade maybeUserInfo maybeCurrentBlocknum pendingEvents = - case ( maybeTrade, maybeUserInfo, maybeCurrentBlocknum ) of +tryInitChatHistory : Wallet.State -> CTypes.Trade -> Maybe Int -> List ( Int, CTypes.DAIHardEvent ) -> ( Maybe ChatHistory.Model, Bool, List (AppCmd Msg) ) +tryInitChatHistory wallet maybeTrade maybeCurrentBlocknum pendingEvents = + case ( maybeTrade, Wallet.userInfo wallet, maybeCurrentBlocknum ) of ( CTypes.LoadedTrade tradeInfo, Just userInfo, Just blocknum ) -> let maybeBuyerOrSeller = @@ -913,10 +975,9 @@ tryInitChatHistory web3Context maybeTrade maybeUserInfo maybeCurrentBlocknum pen case maybeBuyerOrSeller of Just buyerOrSeller -> ChatHistory.init - web3Context - userInfo + wallet buyerOrSeller - tradeInfo.parameters.initiatorRole + tradeInfo pendingEvents blocknum |> (\( chModel, shouldDecrypt, appCmds ) -> @@ -946,7 +1007,7 @@ tryBuildDecryptCmd model = _ -> Nothing ) - (model.userInfo + (Wallet.userInfo model.wallet |> Maybe.map (\i -> i.address) ) |> Maybe.Extra.join @@ -990,9 +1051,9 @@ decryptNewMessagesCmd model userRole = |> Cmd.batch -getBlockCmd : EthHelpers.Web3Context -> Cmd Msg -getBlockCmd web3Context = - Eth.getBlockNumber web3Context.httpProvider +getBlockCmd : Eth.Types.HttpProvider -> Cmd Msg +getBlockCmd httpProvider = + Eth.getBlockNumber httpProvider |> Task.attempt CurrentBlockFetched diff --git a/src/Trade/Types.elm b/src/Trade/Types.elm index 8ed9170..2ca2bd8 100644 --- a/src/Trade/Types.elm +++ b/src/Trade/Types.elm @@ -1,24 +1,16 @@ -module Trade.Types exposing - ( ContractAction(..) - , Model - , Msg(..) - , PhaseState(..) - , TxChainStatus(..) - , UpdateResult - , actionName - , justModelUpdate - ) +module Trade.Types exposing (ContractAction(..), Model, Msg(..), PhaseState(..), TxChainStatus(..), UpdateResult, actionName, justModelUpdate) import AppCmd exposing (AppCmd) import Array exposing (Array) import BigInt exposing (BigInt) +import ChainCmd exposing (ChainCmd) import CommonTypes exposing (..) import Contracts.Generated.DAIHardFactory as DHF import Contracts.Generated.DAIHardTrade as DHT import Contracts.Types as CTypes +import Eth.Net import Eth.Sentry.Event as EventSentry exposing (EventSentry) import Eth.Types exposing (Address, TxHash, TxReceipt) -import Helpers.ChainCmd as ChainCmd exposing (ChainCmd) import Helpers.Eth as EthHelpers import Http import Json.Decode @@ -26,11 +18,11 @@ import Routing import Time import Trade.ChatHistory.SecureComm exposing (..) import Trade.ChatHistory.Types as ChatHistory +import Wallet type alias Model = - { web3Context : EthHelpers.Web3Context - , userInfo : Maybe UserInfo + { wallet : Wallet.State , trade : CTypes.Trade , expandedPhase : CTypes.Phase , chatHistoryModel : Maybe ChatHistory.Model @@ -93,7 +85,7 @@ justModelUpdate model = type TxChainStatus - = ConfirmingCommit CTypes.FullTradeInfo UserInfo BigInt + = ConfirmingCommit UserInfo BigInt | ApproveNeedsSig | ApproveMining TxHash | CommitNeedsSig diff --git a/src/Trade/View.elm b/src/Trade/View.elm index 9001508..ccefb3c 100644 --- a/src/Trade/View.elm +++ b/src/Trade/View.elm @@ -18,7 +18,7 @@ import Eth.Types exposing (Address) import Eth.Utils import FiatValue exposing (FiatValue) import Helpers.Element as EH -import Helpers.Eth as EthHelpers exposing (Web3Context) +import Helpers.Eth as EthHelpers import Helpers.Time as TimeHelpers import Images exposing (Image) import PaymentMethods exposing (PaymentMethod) @@ -27,10 +27,11 @@ import TokenValue exposing (TokenValue) import Trade.ChatHistory.View as ChatHistory import Trade.Types exposing (..) import TradeCache.Types exposing (TradeCache) +import Wallet -root : Int -> Time.Posix -> TradeCache -> Model -> ( Element Msg, List (Element Msg) ) -root screenWidth time tradeCache model = +root : Int -> Time.Posix -> List TradeCache -> Model -> ( Element Msg, List (Element Msg) ) +root screenWidth time tradeCaches model = let inRow = screenWidth > 1300 @@ -42,13 +43,13 @@ root screenWidth time tradeCache model = , Element.height Element.fill , Element.spacing 40 ] - [ header time tradeInfo model.userInfo model.web3Context.factoryType tradeCache model.showStatsModal + [ header time tradeInfo model.wallet tradeCaches model.showStatsModal , Element.el [ Element.width Element.fill , Element.paddingXY 40 0 , Element.spacing 40 ] - (phasesElement inRow model.web3Context.factoryType tradeInfo model.expandedPhase model.userInfo time) + (phasesElement inRow tradeInfo model.expandedPhase model.wallet time) ] CTypes.PartiallyLoadedTrade partialTradeInfo -> @@ -72,18 +73,18 @@ root screenWidth time tradeCache model = ) -header : Time.Posix -> FullTradeInfo -> Maybe UserInfo -> FactoryType -> TradeCache -> Bool -> Element Msg -header currentTime trade maybeUserInfo factoryType tradeCache showStatsModal = +header : Time.Posix -> FullTradeInfo -> Wallet.State -> List TradeCache -> Bool -> Element Msg +header currentTime trade wallet tradeCaches showStatsModal = EH.niceFloatingRow - [ tradeStatusElement trade factoryType - , daiAmountElement trade maybeUserInfo + [ tradeStatusElement trade + , daiAmountElement trade wallet , fiatElement trade - , statsElement factoryType trade tradeCache showStatsModal + , statsElement trade tradeCaches showStatsModal ] -tradeStatusElement : FullTradeInfo -> FactoryType -> Element Msg -tradeStatusElement trade factoryType = +tradeStatusElement : FullTradeInfo -> Element Msg +tradeStatusElement trade = EH.withHeader "Trade Status" (Element.column @@ -115,19 +116,19 @@ tradeStatusElement trade factoryType = , Element.Font.color EH.blue , Element.Font.underline ] - factoryType + trade.factory trade.creationInfo.address ] ) -daiAmountElement : FullTradeInfo -> Maybe UserInfo -> Element Msg -daiAmountElement trade maybeUserInfo = +daiAmountElement : FullTradeInfo -> Wallet.State -> Element Msg +daiAmountElement trade wallet = let maybeInitiatorOrResponder = - Maybe.andThen - (CTypes.getInitiatorOrResponder trade) - (Maybe.map .address maybeUserInfo) + Wallet.userInfo wallet + |> Maybe.map .address + |> Maybe.andThen (CTypes.getInitiatorOrResponder trade) in EH.withHeader (case ( trade.parameters.initiatorRole, maybeInitiatorOrResponder ) of @@ -191,26 +192,31 @@ type alias Stats = } -generateUserStats : TradeCache -> BuyerOrSeller -> Address -> Stats -generateUserStats tradeCache forRole userAddress = +generateUserStats : List TradeCache -> BuyerOrSeller -> Address -> Stats +generateUserStats tradeCaches forRole userAddress = let fullTradesByUserAsRole = - tradeCache.trades - |> Array.toList - |> List.filterMap - (\t -> - case t of - CTypes.LoadedTrade loadedT -> - Just loadedT + tradeCaches + |> List.map + (\tradeCache -> + tradeCache.trades + |> Array.toList + |> List.filterMap + (\t -> + case t of + CTypes.LoadedTrade loadedT -> + Just loadedT - _ -> - Nothing - ) - |> List.filter - -- filter for trades that share the same Seller - (\t -> - CTypes.getBuyerOrSeller t userAddress == Just forRole + _ -> + Nothing + ) + |> List.filter + -- filter for trades that share the same user in the same role + (\t -> + CTypes.getBuyerOrSeller t userAddress == Just forRole + ) ) + |> List.concat talliedVals = fullTradesByUserAsRole @@ -279,12 +285,12 @@ generateUserStats tradeCache forRole userAddress = } -statsElement : FactoryType -> FullTradeInfo -> TradeCache -> Bool -> Element Msg -statsElement factoryType trade tradeCache showModal = +statsElement : FullTradeInfo -> List TradeCache -> Bool -> Element Msg +statsElement trade tradeCaches showModal = let userStats = trade.parameters.initiatorAddress - |> generateUserStats tradeCache trade.parameters.initiatorRole + |> generateUserStats tradeCaches trade.parameters.initiatorRole headerText = buyerOrSellerToString trade.parameters.initiatorRole @@ -297,7 +303,7 @@ statsElement factoryType trade tradeCache showModal = [ Element.moveDown 30 , Element.alignRight ] - (statsModal factoryType trade.parameters.initiatorAddress userStats) + (statsModal trade.factory trade.parameters.initiatorAddress userStats) ) ] @@ -391,7 +397,7 @@ statsModal factoryType address stats = ++ " trades / " ++ TokenValue.toConciseString stats.amountReleased ++ " " - ++ Config.tokenUnitName factoryType + ++ tokenUnitName factoryType ++ " Released" ) , ( "Abort Outcomes" @@ -403,7 +409,7 @@ statsModal factoryType address stats = ++ " trades / " ++ TokenValue.toConciseString stats.amountBurned ++ " " - ++ Config.tokenUnitName factoryType + ++ tokenUnitName factoryType ++ " Burned" ) ] @@ -447,8 +453,8 @@ statsModal factoryType address stats = ] -phasesElement : Bool -> FactoryType -> FullTradeInfo -> CTypes.Phase -> Maybe UserInfo -> Time.Posix -> Element Msg -phasesElement inRow factoryType trade expandedPhase maybeUserInfo currentTime = +phasesElement : Bool -> FullTradeInfo -> CTypes.Phase -> Wallet.State -> Time.Posix -> Element Msg +phasesElement inRow trade expandedPhase wallet currentTime = case trade.state.phase of CTypes.Closed -> Element.row @@ -476,9 +482,9 @@ phasesElement inRow factoryType trade expandedPhase maybeUserInfo currentTime = , Element.height Element.shrink , Element.spacing 20 ] - [ phaseAndPaymentMethodElement inRow factoryType CTypes.Open trade maybeUserInfo (expandedPhase == CTypes.Open) currentTime - , phaseAndPaymentMethodElement inRow factoryType CTypes.Committed trade maybeUserInfo (expandedPhase == CTypes.Committed) currentTime - , phaseAndPaymentMethodElement inRow factoryType CTypes.Judgment trade maybeUserInfo (expandedPhase == CTypes.Judgment) currentTime + [ phaseAndPaymentMethodElement inRow CTypes.Open trade wallet (expandedPhase == CTypes.Open) currentTime + , phaseAndPaymentMethodElement inRow CTypes.Committed trade wallet (expandedPhase == CTypes.Committed) currentTime + , phaseAndPaymentMethodElement inRow CTypes.Judgment trade wallet (expandedPhase == CTypes.Judgment) currentTime ] , paymentMethodElement trade.terms.paymentMethods ] @@ -489,9 +495,9 @@ phasesElement inRow factoryType trade expandedPhase maybeUserInfo currentTime = , Element.height Element.shrink , Element.spacing 20 ] - [ phaseAndPaymentMethodElement inRow factoryType CTypes.Open trade maybeUserInfo (expandedPhase == CTypes.Open) currentTime - , phaseAndPaymentMethodElement inRow factoryType CTypes.Committed trade maybeUserInfo (expandedPhase == CTypes.Committed) currentTime - , phaseAndPaymentMethodElement inRow factoryType CTypes.Judgment trade maybeUserInfo (expandedPhase == CTypes.Judgment) currentTime + [ phaseAndPaymentMethodElement inRow CTypes.Open trade wallet (expandedPhase == CTypes.Open) currentTime + , phaseAndPaymentMethodElement inRow CTypes.Committed trade wallet (expandedPhase == CTypes.Committed) currentTime + , phaseAndPaymentMethodElement inRow CTypes.Judgment trade wallet (expandedPhase == CTypes.Judgment) currentTime ] @@ -538,8 +544,8 @@ phaseState trade phase = Finished -phaseAndPaymentMethodElement : Bool -> FactoryType -> CTypes.Phase -> FullTradeInfo -> Maybe UserInfo -> Bool -> Time.Posix -> Element Msg -phaseAndPaymentMethodElement inRow factoryType viewPhase trade maybeUserInfo expanded currentTime = +phaseAndPaymentMethodElement : Bool -> CTypes.Phase -> FullTradeInfo -> Wallet.State -> Bool -> Time.Posix -> Element Msg +phaseAndPaymentMethodElement inRow viewPhase trade wallet expanded currentTime = let viewPhaseState = phaseState trade viewPhase @@ -583,7 +589,7 @@ phaseAndPaymentMethodElement inRow factoryType viewPhase trade maybeUserInfo exp , Element.width Element.fill , Element.height Element.fill ] - (phaseBodyElement factoryType viewPhase currentTime trade maybeUserInfo) + (phaseBodyElement viewPhase currentTime trade wallet) borderEl = Element.el @@ -853,14 +859,14 @@ phaseStateElement pState = (Element.text "Finished") -phaseBodyElement : FactoryType -> CTypes.Phase -> Time.Posix -> CTypes.FullTradeInfo -> Maybe UserInfo -> Element Msg -phaseBodyElement factoryType viewPhase currentTime trade maybeUserInfo = +phaseBodyElement : CTypes.Phase -> Time.Posix -> CTypes.FullTradeInfo -> Wallet.State -> Element Msg +phaseBodyElement viewPhase currentTime trade wallet = let phaseIsActive = viewPhase == trade.state.phase maybeBuyerOrSeller = - maybeUserInfo + Wallet.userInfo wallet |> Maybe.map .address |> Maybe.andThen (CTypes.getBuyerOrSeller trade) @@ -892,13 +898,13 @@ phaseBodyElement factoryType viewPhase currentTime trade maybeUserInfo = Element.el [ Element.Font.color <| Element.rgb 1 0 0 ] << Element.text tradeAmountString = - TokenValue.toConciseString trade.parameters.tradeAmount ++ " " ++ Config.tokenUnitName factoryType + TokenValue.toConciseString trade.parameters.tradeAmount ++ " " ++ tokenUnitName trade.factory fiatAmountString = FiatValue.renderToStringFull trade.terms.price buyerDepositString = - TokenValue.toConciseString trade.parameters.buyerDeposit ++ " " ++ Config.tokenUnitName factoryType + TokenValue.toConciseString trade.parameters.buyerDeposit ++ " " ++ tokenUnitName trade.factory tradePlusDepositString = (TokenValue.add @@ -907,7 +913,7 @@ phaseBodyElement factoryType viewPhase currentTime trade maybeUserInfo = |> TokenValue.toConciseString ) ++ " " - ++ Config.tokenUnitName factoryType + ++ tokenUnitName trade.factory abortPunishment = trade.parameters.abortPunishment @@ -916,7 +922,7 @@ phaseBodyElement factoryType viewPhase currentTime trade maybeUserInfo = TokenValue.toConciseString abortPunishment ++ " " - ++ Config.tokenUnitName factoryType + ++ tokenUnitName trade.factory sellerAbortRefundString = TokenValue.toConciseString @@ -925,7 +931,7 @@ phaseBodyElement factoryType viewPhase currentTime trade maybeUserInfo = abortPunishment ) ++ " " - ++ Config.tokenUnitName factoryType + ++ tokenUnitName trade.factory buyerAbortRefundString = TokenValue.toConciseString @@ -934,7 +940,7 @@ phaseBodyElement factoryType viewPhase currentTime trade maybeUserInfo = abortPunishment ) ++ " " - ++ Config.tokenUnitName factoryType + ++ tokenUnitName trade.factory threeFlames = Element.row [] @@ -957,7 +963,7 @@ phaseBodyElement factoryType viewPhase currentTime trade maybeUserInfo = , scaryText "Deposit and Commit to Trade" , Element.text "." ] - , [ Element.text <| "If the trade is successful, the combined " ++ Config.tokenUnitName factoryType ++ " balance " + , [ Element.text <| "If the trade is successful, the combined " ++ tokenUnitName trade.factory ++ " balance " , emphasizedText <| "(" ++ tradePlusDepositString ++ ")" , Element.text " will be released to you. If anything goes wrong, there are " , scaryText "burnable punishments " @@ -988,7 +994,7 @@ phaseBodyElement factoryType viewPhase currentTime trade maybeUserInfo = ] , [ Element.text "When you receive the " , emphasizedText fiatAmountString - , Element.text <| " from the Buyer, the combined " ++ Config.tokenUnitName factoryType ++ " balance " + , Element.text <| " from the Buyer, the combined " ++ tokenUnitName trade.factory ++ " balance " , emphasizedText <| "(" ++ tradePlusDepositString ++ ")" , Element.text " will be released to the Buyer. If anything goes wrong, there are " , scaryText "burnable punishments " @@ -1221,7 +1227,7 @@ phaseBodyElement factoryType viewPhase currentTime trade maybeUserInfo = ] (case phaseState trade viewPhase of Active -> - actionButtonsElement currentTime trade maybeUserInfo + actionButtonsElement currentTime trade wallet NotStarted -> Element.el @@ -1243,9 +1249,9 @@ phaseBodyElement factoryType viewPhase currentTime trade maybeUserInfo = ] -actionButtonsElement : Time.Posix -> FullTradeInfo -> Maybe UserInfo -> Element Msg -actionButtonsElement currentTime trade maybeUserInfo = - case maybeUserInfo of +actionButtonsElement : Time.Posix -> FullTradeInfo -> Wallet.State -> Element Msg +actionButtonsElement currentTime trade wallet = + case Wallet.userInfo wallet of Just userInfo -> case CTypes.getCurrentPhaseTimeoutInfo currentTime trade of CTypes.TimeUp _ -> @@ -1342,217 +1348,222 @@ chatOverlayElement model = getModalOrNone : Model -> Element Msg getModalOrNone model = - case model.txChainStatus of - Nothing -> - Element.none - - Just (ConfirmingCommit trade userInfo deposit) -> - let - depositAmountString = - TokenValue.tokenValue deposit - |> TokenValue.toConciseString - - fiatPriceString = - FiatValue.renderToStringFull trade.terms.price + case ( model.txChainStatus, model.trade ) of + ( Just txChainStatus, CTypes.LoadedTrade trade ) -> + case txChainStatus of + ConfirmingCommit userInfo deposit -> + let + depositAmountString = + TokenValue.tokenValue deposit + |> TokenValue.toConciseString + + fiatPriceString = + FiatValue.renderToStringFull trade.terms.price + + daiAmountString = + TokenValue.toConciseString trade.parameters.tradeAmount ++ " " ++ tokenUnitName trade.factory + + ( buyerOrSellerEl, agreeToWhatTextList ) = + case CTypes.getResponderRole trade.parameters of + Buyer -> + ( Element.el [ Element.Font.medium, Element.Font.color EH.black ] <| Element.text "buyer" + , [ Element.text "pay the seller " + , Element.el [ Element.Font.color EH.blue ] <| Element.text fiatPriceString + , Element.text " in exchange for the " + , Element.el [ Element.Font.color EH.blue ] <| Element.text daiAmountString + , Element.text " held in this contract." + ] + ) + + Seller -> + ( Element.el [ Element.Font.medium, Element.Font.color EH.black ] <| Element.text "seller" + , [ Element.text "accept " + , Element.el [ Element.Font.color EH.blue ] <| Element.text fiatPriceString + , Element.text " from the buyer in exchange for the " + , Element.el [ Element.Font.color EH.blue ] <| Element.text daiAmountString + , Element.text " held in this contract." + ] + ) + in + EH.closeableModal + [] + (Element.column + [ Element.spacing 20 + , Element.padding 20 + , Element.centerX + , Element.height Element.fill + , Element.Font.center + ] + [ Element.el + [ Element.Font.size 26 + , Element.Font.semiBold + , Element.centerX + , Element.centerY + ] + (Element.text "Just to Confirm...") + , Element.column + [ Element.spacing 20 + , Element.centerX + , Element.centerY + ] + (List.map + (Element.paragraph + [ Element.centerX + , Element.Font.size 18 + , Element.Font.medium + , Element.Font.color EH.permanentTextColor + ] + ) + ([ [ Element.text <| "You will deposit " + , Element.el [ Element.Font.color EH.blue ] <| Element.text <| depositAmountString ++ " " ++ tokenUnitName trade.factory + , Element.text ", thereby becoming the " + , buyerOrSellerEl + , Element.text " of this trade. By doing so, you are agreeing to " + ] + ++ agreeToWhatTextList + ] + ++ (case trade.factory of + Token _ -> + [ [ Element.text <| "(This ususally requires two Metamask signatures. Your " ++ tokenUnitName trade.factory ++ " will not be deposited until the second transaction has been mined.)" ] ] + + _ -> + [] + ) + ) + ) + , Element.el + [ Element.alignBottom + , Element.centerX + ] + (EH.redButton "Yes, I definitely want to commit to this trade." (ConfirmCommit trade userInfo deposit)) + ] + ) + AbortAction - daiAmountString = - TokenValue.toConciseString trade.parameters.tradeAmount ++ " " ++ Config.tokenUnitName model.web3Context.factoryType + ApproveNeedsSig -> + EH.txProcessModal + [ Element.text "Waiting for user signature for the approve call." + , Element.text "(check Metamask!)" + , Element.text "Note that there will be a second transaction to sign after this." + ] - ( buyerOrSellerEl, agreeToWhatTextList ) = - case CTypes.getResponderRole trade.parameters of - Buyer -> - ( Element.el [ Element.Font.medium, Element.Font.color EH.black ] <| Element.text "buyer" - , [ Element.text "pay the seller " - , Element.el [ Element.Font.color EH.blue ] <| Element.text fiatPriceString - , Element.text " in exchange for the " - , Element.el [ Element.Font.color EH.blue ] <| Element.text daiAmountString - , Element.text " held in this contract." - ] - ) + ApproveMining txHash -> + EH.txProcessModal + [ Element.text "Mining the initial approve transaction..." + , Element.newTabLink [ Element.Font.underline, Element.Font.color EH.blue ] + { url = EthHelpers.makeViewTxUrl trade.factory txHash + , label = Element.text "See the transaction on Etherscan" + } + , Element.text "Funds will not leave your wallet until you sign the next transaction." + ] - Seller -> - ( Element.el [ Element.Font.medium, Element.Font.color EH.black ] <| Element.text "seller" - , [ Element.text "accept " - , Element.el [ Element.Font.color EH.blue ] <| Element.text fiatPriceString - , Element.text " from the buyer in exchange for the " - , Element.el [ Element.Font.color EH.blue ] <| Element.text daiAmountString - , Element.text " held in this contract." - ] - ) - in - EH.closeableModal - [] - (Element.column - [ Element.spacing 20 - , Element.padding 20 - , Element.centerX - , Element.height Element.fill - , Element.Font.center - ] - [ Element.el - [ Element.Font.size 26 - , Element.Font.semiBold - , Element.centerX - , Element.centerY + CommitNeedsSig -> + EH.txProcessModal + [ Element.text "Waiting for user signature for the final commit call." + , Element.text "(check Metamask!)" + , Element.text "This will make the deposit and commit you to the trade." ] - (Element.text "Just to Confirm...") - , Element.column - [ Element.spacing 20 - , Element.centerX - , Element.centerY + + CommitMining txHash -> + EH.txProcessModal + [ Element.text "Mining the final commit transaction..." + , Element.newTabLink [ Element.Font.underline, Element.Font.color EH.blue ] + { url = EthHelpers.makeViewTxUrl trade.factory txHash + , label = Element.text "See the transaction" + } ] - (List.map - (Element.paragraph - [ Element.centerX - , Element.Font.size 18 - , Element.Font.medium - , Element.Font.color EH.permanentTextColor - ] - ) - ([ [ Element.text <| "You will deposit " - , Element.el [ Element.Font.color EH.blue ] <| Element.text <| depositAmountString ++ " " ++ Config.tokenUnitName model.web3Context.factoryType - , Element.text ", thereby becoming the " - , buyerOrSellerEl - , Element.text " of this trade. By doing so, you are agreeing to " - ] - ++ agreeToWhatTextList - ] - ++ (case model.web3Context.factoryType of - Token _ -> - [ [ Element.text <| "(This ususally requires two Metamask signatures. Your " ++ Config.tokenUnitName model.web3Context.factoryType ++ " will not be deposited until the second transaction has been mined.)" ] ] - _ -> + ConfirmingAction action -> + EH.closeableModal [] + (Element.column + [ Element.spacing 20 + , Element.padding 20 + , Element.centerX + , Element.height Element.fill + , Element.Font.center + ] + [ Element.el + [ Element.Font.size 26 + , Element.Font.semiBold + , Element.centerX + , Element.centerY + ] + (Element.text "Just to Confirm...") + , Element.column + [ Element.spacing 20 + , Element.centerX + , Element.centerY + ] + (List.map + (Element.paragraph + [ Element.centerX + , Element.Font.size 18 + , Element.Font.medium + , Element.Font.color EH.permanentTextColor + ] + ) + (case action of + Poke -> [] - ) - ) - ) - , Element.el - [ Element.alignBottom - , Element.centerX - ] - (EH.redButton "Yes, I definitely want to commit to this trade." (ConfirmCommit trade userInfo deposit)) - ] - ) - AbortAction - Just ApproveNeedsSig -> - EH.txProcessModal - [ Element.text "Waiting for user signature for the approve call." - , Element.text "(check Metamask!)" - , Element.text "Note that there will be a second transaction to sign after this." - ] + Recall -> + [] - Just (ApproveMining txHash) -> - EH.txProcessModal - [ Element.text "Mining the initial approve transaction..." - , Element.newTabLink [ Element.Font.underline, Element.Font.color EH.blue ] - { url = EthHelpers.makeViewTxUrl model.web3Context.factoryType txHash - , label = Element.text "See the transaction on Etherscan" - } - , Element.text "Funds will not leave your wallet until you sign the next transaction." - ] + Claim -> + [ [ Element.text <| "By clicking \"Confirm Payment\", you are claiming that you've paid the Seller in a way they can verify. Only do this if you are sure the Seller will agree that they have the money--otherwise they may burn the " ++ tokenUnitName trade.factory ++ " rather than release it to you." ] ] - Just CommitNeedsSig -> - EH.txProcessModal - [ Element.text "Waiting for user signature for the final commit call." - , Element.text "(check Metamask!)" - , Element.text "This will make the deposit and commit you to the trade." - ] + Abort -> + [ [ Element.text <| "Aborting will incur a small penalty on both parties, and refund the rest of the " ++ tokenUnitName trade.factory ++ "." ] ] - Just (CommitMining txHash) -> - EH.txProcessModal - [ Element.text "Mining the final commit transaction..." - , Element.newTabLink [ Element.Font.underline, Element.Font.color EH.blue ] - { url = EthHelpers.makeViewTxUrl model.web3Context.factoryType txHash - , label = Element.text "See the transaction" - } - ] + Release -> + [ [ Element.text "Releasing the payment will irreversibly send the trade's balance to the Buyer. Only do this if you are certain you've received the full agreed-upon payment." ] ] - Just (ConfirmingAction action) -> - EH.closeableModal [] - (Element.column - [ Element.spacing 20 - , Element.padding 20 - , Element.centerX - , Element.height Element.fill - , Element.Font.center - ] - [ Element.el - [ Element.Font.size 26 - , Element.Font.semiBold - , Element.centerX - , Element.centerY - ] - (Element.text "Just to Confirm...") - , Element.column - [ Element.spacing 20 - , Element.centerX - , Element.centerY - ] - (List.map - (Element.paragraph - [ Element.centerX - , Element.Font.size 18 - , Element.Font.medium - , Element.Font.color EH.permanentTextColor + Burn -> + [ [ Element.text <| "This will destroy the " ++ tokenUnitName trade.factory ++ " in the payment. Only do this if the Buyer has attempted to scam you, is nonresponsive, or for some reason has failed the payment." ] ] + ) + ) + , Element.el + [ Element.alignBottom + , Element.centerX ] - ) - (case action of - Poke -> - [] + ((case action of + Poke -> + "Poke" - Recall -> - [] + Recall -> + "Recall" - Claim -> - [ [ Element.text <| "By clicking \"Confirm Payment\", you are claiming that you've paid the Seller in a way they can verify. Only do this if you are sure the Seller will agree that they have the money--otherwise they may burn the " ++ Config.tokenUnitName model.web3Context.factoryType ++ " rather than release it to you." ] ] + Claim -> + "I understand. Confirm Payment" - Abort -> - [ [ Element.text <| "Aborting will incur a small penalty on both parties, and refund the rest of the " ++ Config.tokenUnitName model.web3Context.factoryType ++ "." ] ] + Abort -> + "I understand. Abort the trade." - Release -> - [ [ Element.text "Releasing the payment will irreversibly send the trade's balance to the Buyer. Only do this if you are certain you've received the full agreed-upon payment." ] ] + Release -> + "I understand. Release the " ++ tokenUnitName trade.factory ++ "." - Burn -> - [ [ Element.text <| "This will destroy the " ++ Config.tokenUnitName model.web3Context.factoryType ++ " in the payment. Only do this if the Buyer has attempted to scam you, is nonresponsive, or for some reason has failed the payment." ] ] - ) + Burn -> + "I understand. Burn the " ++ tokenUnitName trade.factory ++ "." + ) + |> (\s -> EH.redButton s (StartContractAction action)) + ) + ] ) - , Element.el - [ Element.alignBottom - , Element.centerX - ] - ((case action of - Poke -> - "Poke" - - Recall -> - "Recall" - - Claim -> - "I understand. Confirm Payment" + AbortAction - Abort -> - "I understand. Abort the trade." - - Release -> - "I understand. Release the " ++ Config.tokenUnitName model.web3Context.factoryType ++ "." + ActionNeedsSig action -> + EH.txProcessModal + [ Element.text <| "Waiting for user signature for the " ++ actionName action ++ " call." + , Element.text "(check Metamask!)" + ] - Burn -> - "I understand. Burn the " ++ Config.tokenUnitName model.web3Context.factoryType ++ "." - ) - |> (\s -> EH.redButton s (StartContractAction action)) - ) - ] - ) - AbortAction + ActionMining action txHash -> + Element.none - Just (ActionNeedsSig action) -> - EH.txProcessModal - [ Element.text <| "Waiting for user signature for the " ++ actionName action ++ " call." - , Element.text "(check Metamask!)" - ] + ( Nothing, _ ) -> + Element.none - Just (ActionMining action txHash) -> + ( _, _ ) -> Element.none diff --git a/src/TradeCache/State.elm b/src/TradeCache/State.elm index 2f993de..15b48cc 100644 --- a/src/TradeCache/State.elm +++ b/src/TradeCache/State.elm @@ -3,6 +3,7 @@ module TradeCache.State exposing (init, initAndStartCaching, loadedValidTrades, import AppCmd exposing (AppCmd) import Array exposing (Array) import BigInt exposing (BigInt) +import CommonTypes exposing (..) import Contracts.Types as CTypes import Contracts.Wrappers import Dict exposing (Dict) @@ -10,41 +11,42 @@ import Eth.Sentry.Event as EventSentry import Helpers.BigInt as BigIntHelpers import Helpers.Eth as EthHelpers import List.Extra +import Maybe.Extra import PaymentMethods exposing (PaymentMethod) import Time import TradeCache.Types exposing (..) import UserNotice as UN exposing (UserNotice) -init : EthHelpers.Web3Context -> ( TradeCache, Cmd Msg, List (AppCmd Msg) ) -init web3Context = +init : FactoryType -> ( TradeCache, Cmd Msg, List (AppCmd Msg) ) +init factoryType = let ( sentry, sentryCmd ) = EventSentry.init EventSentryMsg - web3Context.httpProvider + (EthHelpers.httpProviderForFactory factoryType) in - ( { web3Context = web3Context + ( { factory = factoryType , eventSentry = sentry , trades = Array.empty - , dataFetchStatus = - Status Nothing 0 0 + , dataFetchState = + DataState Nothing 0 0 } , sentryCmd - , [ AppCmd.gTag "tradeCache init" "processing" (EthHelpers.factoryTypeToString web3Context.factoryType) 0 ] + , [ AppCmd.gTag "tradeCache init" "processing" (factoryName factoryType) 0 ] ) startCaching : TradeCache -> Cmd Msg startCaching tradeCache = - Contracts.Wrappers.getNumTradesCmd tradeCache.web3Context InitialNumTradesFetched + Contracts.Wrappers.getNumTradesCmd tradeCache.factory InitialNumTradesFetched -initAndStartCaching : EthHelpers.Web3Context -> ( TradeCache, Cmd Msg, List (AppCmd Msg) ) -initAndStartCaching web3Context = +initAndStartCaching : FactoryType -> ( TradeCache, Cmd Msg, List (AppCmd Msg) ) +initAndStartCaching factoryType = let ( tc, cmd1, appCmds ) = - init web3Context + init factoryType in ( tc , Cmd.batch @@ -55,6 +57,23 @@ initAndStartCaching web3Context = ) +updateStates : List Int -> TradeCache -> Cmd Msg +updateStates tradeIds tradeCache = + tradeIds + |> List.map + (\id -> + Array.get id tradeCache.trades + |> Maybe.andThen CTypes.tradeAddress + |> Maybe.map (\address -> ( id, address )) + ) + |> Maybe.Extra.values + |> List.map + (\( id, address ) -> + Contracts.Wrappers.getStateCmd tradeCache.factory address (StateFetched id) + ) + |> Cmd.batch + + update : Msg -> TradeCache -> UpdateResult update msg prevModel = case msg of @@ -70,19 +89,19 @@ update msg prevModel = (List.range 0 (numTrades - 1) |> List.map (\id -> - Contracts.Wrappers.getCreationInfoFromIdCmd prevModel.web3Context (BigInt.fromInt id) (CreationInfoFetched id) + Contracts.Wrappers.getCreationInfoFromIdCmd prevModel.factory (BigInt.fromInt id) (CreationInfoFetched id) ) ) trades = List.range 0 (numTrades - 1) - |> List.map CTypes.partialTradeInfo + |> List.map (CTypes.partialTradeInfo prevModel.factory) |> Array.fromList in UpdateResult { prevModel | trades = trades - , dataFetchStatus = Status (Just numTrades) 0 0 + , dataFetchState = DataState (Just numTrades) 0 0 } fetchCreationInfoCmd [] @@ -98,11 +117,96 @@ update msg prevModel = CheckForNewTrades -> UpdateResult prevModel - (Contracts.Wrappers.getNumTradesCmd prevModel.web3Context NumTradesFetchedAgain) + (Contracts.Wrappers.getNumTradesCmd prevModel.factory NumTradesFetchedAgain) + [] + + UpdateTradePhases -> + let + updatePhasesCmd = + loadedTrades prevModel + |> List.map + (\trade -> + case trade.state.phase of + CTypes.Closed -> + Nothing + + _ -> + Just <| + Contracts.Wrappers.getPhaseCmd + trade.factory + trade.creationInfo.address + (PhaseFetched trade.factory trade.id) + ) + |> Maybe.Extra.values + |> Cmd.batch + in + UpdateResult + prevModel + updatePhasesCmd [] + PhaseFetched factory id fetchResult -> + case fetchResult of + Ok (Just newPhase) -> + let + intermediateUpdateResult = + prevModel + |> updateTradePhase id newPhase + + ( cmd, appCmds ) = + case ( newPhase, Array.get id prevModel.trades ) of + ( CTypes.Committed, Just trade ) -> + case CTypes.getCreationInfo trade of + Just creationInfo -> + -- state has changed; update + ( Contracts.Wrappers.getStateCmd + factory + creationInfo.address + (StateFetched id) + , [] + ) + + Nothing -> + ( Cmd.none + , [ AppCmd.UserNotice <| + UN.unexpectedError "Phase fetched for a trade that has no creationInfo" trade + ] + ) + + ( _, Nothing ) -> + ( Cmd.none + , [ AppCmd.UserNotice <| + UN.unexpectedError "Phase fetched for a trade, but then ran into an out-of-range error" Nothing + ] + ) + + _ -> + ( Cmd.none + , [] + ) + in + UpdateResult + intermediateUpdateResult.tradeCache + (Cmd.batch + [ intermediateUpdateResult.cmd + , cmd + ] + ) + (List.append + intermediateUpdateResult.appCmds + appCmds + ) + + badFetchResult -> + UpdateResult + prevModel + Cmd.none + [ AppCmd.UserNotice <| + UN.fromBadFetchResultMaybe "phase" fetchResult + ] + NumTradesFetchedAgain fetchResult -> - case ( fetchResult, prevModel.dataFetchStatus.total ) of + case ( fetchResult, prevModel.dataFetchState.total ) of ( Ok bigInt, Just oldNumTrades ) -> let newNumTrades = @@ -115,22 +219,22 @@ update msg prevModel = (List.range oldNumTrades (newNumTrades - 1) |> List.map (\id -> - Contracts.Wrappers.getCreationInfoFromIdCmd prevModel.web3Context (BigInt.fromInt id) (CreationInfoFetched id) + Contracts.Wrappers.getCreationInfoFromIdCmd prevModel.factory (BigInt.fromInt id) (CreationInfoFetched id) ) ) additionalTrades = List.range oldNumTrades (newNumTrades - 1) - |> List.map CTypes.partialTradeInfo + |> List.map (CTypes.partialTradeInfo prevModel.factory) |> Array.fromList - oldStatus = - prevModel.dataFetchStatus + oldState = + prevModel.dataFetchState in UpdateResult { prevModel | trades = Array.append prevModel.trades additionalTrades - , dataFetchStatus = { oldStatus | total = Just newNumTrades } + , dataFetchState = { oldState | total = Just newNumTrades } } fetchCreationInfoCmd [] @@ -172,7 +276,7 @@ update msg prevModel = cmd = Cmd.batch - [ Contracts.Wrappers.getParametersStateAndPhaseInfoCmd prevModel.web3Context creationInfo.address (ParametersFetched id) (StateFetched id) (PhaseStartInfoFetched id) + [ Contracts.Wrappers.getParametersStateAndPhaseInfoCmd prevModel.factory creationInfo.address (ParametersFetched id) (StateFetched id) (PhaseStartInfoFetched id) , sentryCmd ] in @@ -280,12 +384,12 @@ update msg prevModel = updateStatus : TradeCache -> TradeCache updateStatus tradeCache = let - oldStatus = - tradeCache.dataFetchStatus + oldState = + tradeCache.dataFetchState in { tradeCache - | dataFetchStatus = - { oldStatus + | dataFetchState = + { oldState | loaded = List.length <| loadedTrades tradeCache @@ -425,6 +529,49 @@ updateTradeParameters id parameters tradeCache = ] +updateTradePhase : Int -> CTypes.Phase -> TradeCache -> UpdateResult +updateTradePhase id newPhase tradeCache = + case Array.get id tradeCache.trades of + Just (CTypes.LoadedTrade trade) -> + let + oldState = + trade.state + + newTradeArray = + Array.set + id + (CTypes.LoadedTrade <| + { trade + | state = + { oldState | phase = newPhase } + } + ) + tradeCache.trades + in + UpdateResult + ({ tradeCache | trades = newTradeArray } + |> updateStatus + ) + Cmd.none + [] + + Just _ -> + UpdateResult + tradeCache + Cmd.none + [ AppCmd.UserNotice <| + UN.unexpectedError "updateTradePhase is trying to update a partially loaded trade" ( id, tradeCache.trades ) + ] + + Nothing -> + UpdateResult + tradeCache + Cmd.none + [ AppCmd.UserNotice <| + UN.unexpectedError "updateTradePhase ran into an out-of-range error" ( id, tradeCache.trades ) + ] + + updateTradeState : Int -> CTypes.State -> TradeCache -> UpdateResult updateTradeState id state tradeCache = case Array.get id tradeCache.trades of @@ -514,4 +661,7 @@ updateTradeTerms id terms tradeCache = subscriptions : TradeCache -> Sub Msg subscriptions tradeCache = - Time.every 5000 (\_ -> CheckForNewTrades) + Sub.batch + [ Time.every 5000 (\_ -> CheckForNewTrades) + , Time.every 3000 (\_ -> UpdateTradePhases) + ] diff --git a/src/TradeCache/Types.elm b/src/TradeCache/Types.elm index 7539ffd..e62f6b6 100644 --- a/src/TradeCache/Types.elm +++ b/src/TradeCache/Types.elm @@ -1,14 +1,15 @@ -module TradeCache.Types exposing (Msg(..), Status, TradeCache, UpdateResult, justModelUpdate) +module TradeCache.Types exposing (DataState, LoadingStatus(..), Msg(..), TradeCache, UpdateResult, justModelUpdate, loadingStatus) import AppCmd exposing (AppCmd) import Array exposing (Array) import BigInt exposing (BigInt) +import CommonTypes exposing (..) import Contracts.Generated.DAIHardFactory as DHF import Contracts.Generated.DAIHardTrade as DHT import Contracts.Types as CTypes import Eth.Sentry.Event as EventSentry exposing (EventSentry) import Eth.Types exposing (Address) -import Helpers.Eth as EthHelpers exposing (Web3Context) +import Helpers.Eth as EthHelpers import Http import Json.Decode import Time @@ -16,23 +17,32 @@ import TokenValue exposing (TokenValue) type alias TradeCache = - { web3Context : Web3Context + { factory : FactoryType , eventSentry : EventSentry Msg , trades : Array CTypes.Trade - , dataFetchStatus : Status + , dataFetchState : DataState } -type alias Status = +type alias DataState = { total : Maybe Int , loaded : Int , invalid : Int } +type LoadingStatus + = QueryingNumTrades + | NoneFound + | FetchingTrades + | AllFetched + + type Msg = InitialNumTradesFetched (Result Http.Error BigInt) | CheckForNewTrades + | UpdateTradePhases + | PhaseFetched FactoryType Int (Result Http.Error (Maybe CTypes.Phase)) | NumTradesFetchedAgain (Result Http.Error BigInt) | CreationInfoFetched Int (Result Http.Error DHF.CreatedTrade) | ParametersFetched Int (Result Http.Error (Result String CTypes.TradeParameters)) @@ -49,6 +59,23 @@ type alias UpdateResult = } +loadingStatus : TradeCache -> LoadingStatus +loadingStatus tc = + case tc.dataFetchState.total of + Nothing -> + QueryingNumTrades + + Just 0 -> + NoneFound + + Just totalTrades -> + if tc.dataFetchState.loaded < (totalTrades - tc.dataFetchState.invalid) then + FetchingTrades + + else + AllFetched + + justModelUpdate : TradeCache -> UpdateResult justModelUpdate tc = UpdateResult diff --git a/src/TradeTable/State.elm b/src/TradeTable/State.elm new file mode 100644 index 0000000..6f10792 --- /dev/null +++ b/src/TradeTable/State.elm @@ -0,0 +1,40 @@ +module TradeTable.State exposing (init, update) + +import AppCmd exposing (AppCmd) +import ChainCmd exposing (ChainCmd) +import Routing +import TradeTable.Types exposing (..) + + +init : ( ColType, Ordering ) -> Model +init = + Model + + +update : Msg -> Model -> UpdateResult +update msg prevModel = + case msg of + TradeClicked factory id -> + UpdateResult + prevModel + Cmd.none + ChainCmd.none + [ AppCmd.GotoRoute <| Routing.Trade factory id ] + + ChangeSort newOrderCol -> + let + newOrderBy = + if Tuple.first prevModel.orderBy == newOrderCol then + prevModel.orderBy + |> Tuple.mapSecond flipOrdering + + else + ( newOrderCol, Ascending ) + in + justModelUpdate + { prevModel + | orderBy = newOrderBy + } + + NoOp -> + justModelUpdate prevModel diff --git a/src/TradeTable/Types.elm b/src/TradeTable/Types.elm new file mode 100644 index 0000000..7e9e8be --- /dev/null +++ b/src/TradeTable/Types.elm @@ -0,0 +1,59 @@ +module TradeTable.Types exposing (ColType(..), Model, Msg(..), Ordering(..), UpdateResult, flipOrdering, justModelUpdate) + +import AppCmd exposing (AppCmd) +import ChainCmd exposing (ChainCmd) +import CommonTypes exposing (..) +import Contracts.Types as CTypes + + +type alias Model = + { orderBy : ( ColType, Ordering ) + } + + +type Msg + = TradeClicked FactoryType Int + | ChangeSort ColType + | NoOp + + +type alias UpdateResult = + { model : Model + , cmd : Cmd Msg + , chainCmd : ChainCmd Msg + , appCmds : List (AppCmd Msg) + } + + +type ColType + = Phase + | Expires + | Offer + | FiatPrice + | Margin + | PaymentWindow + | BurnWindow + + +type Ordering + = Ascending + | Descending + + +flipOrdering : Ordering -> Ordering +flipOrdering ordering = + case ordering of + Ascending -> + Descending + + Descending -> + Ascending + + +justModelUpdate : Model -> UpdateResult +justModelUpdate model = + UpdateResult + model + Cmd.none + ChainCmd.none + [] diff --git a/src/TradeTable/View.elm b/src/TradeTable/View.elm new file mode 100644 index 0000000..2746c40 --- /dev/null +++ b/src/TradeTable/View.elm @@ -0,0 +1,390 @@ +module TradeTable.View exposing (view) + +import CommonTypes exposing (..) +import Contracts.Types as CTypes +import Element exposing (Element) +import Element.Background +import Element.Border +import Element.Events +import Element.Font +import FiatValue exposing (FiatValue) +import Flip exposing (flip) +import Helpers.Element as EH +import Helpers.Time as TimeHelpers +import Images exposing (Image) +import PaymentMethods exposing (PaymentMethod) +import Time +import TokenValue exposing (TokenValue) +import TradeTable.Types exposing (..) + + +view : Time.Posix -> Model -> List ColType -> List CTypes.FullTradeInfo -> Element Msg +view time model colTypes trades = + Element.column + [ Element.width Element.fill + , Element.height Element.fill + , Element.spacing 5 + ] + [ viewColHeaders model.orderBy colTypes + , viewTradeRows time model colTypes trades + ] + + +viewColHeaders : ( ColType, Ordering ) -> List ColType -> Element Msg +viewColHeaders orderBy colTypes = + Element.row [ Element.width Element.fill ] + (colTypes + |> List.map + (\colType -> + let + maybeOrdering = + if Tuple.first orderBy == colType then + Just <| Tuple.second orderBy + + else + Nothing + in + viewColHeader maybeOrdering colType + ) + ) + + +viewColHeader : Maybe Ordering -> ColType -> Element Msg +viewColHeader maybeOrdering colType = + cellMaker (colTypePortion colType) (sortableColumnHeader colType maybeOrdering) + + +colTypePortion : ColType -> Int +colTypePortion colType = + case colType of + Phase -> + 1 + + Expires -> + 1 + + Offer -> + 1 + + FiatPrice -> + 2 + + Margin -> + 1 + + PaymentWindow -> + 2 + + BurnWindow -> + 2 + + +sortableColumnHeader : ColType -> Maybe Ordering -> Element Msg +sortableColumnHeader colType maybeOrdering = + Element.row + [ Element.spacing 5 + , Element.pointer + , Element.Events.onClick (ChangeSort colType) + ] + [ colTitleEl colType + , case maybeOrdering of + Just ordering -> + Element.el + [ Element.centerY ] + (Images.toElement + [ Element.width <| Element.px 8 ] + (case ordering of + Ascending -> + Images.downArrow + + Descending -> + Images.upArrow + ) + ) + + Nothing -> + Element.none + ] + + +colTitleEl : ColType -> Element Msg +colTitleEl colType = + Element.el [ Element.Font.medium, Element.Font.size 17 ] <| + Element.text <| + case colType of + Phase -> + "Phase" + + Expires -> + "Expiring" + + Offer -> + "Offer" + + FiatPrice -> + "For Fiat" + + Margin -> + "Margin" + + PaymentWindow -> + "Payment Window" + + BurnWindow -> + "Burn Window" + + +viewTradeRows : Time.Posix -> Model -> List ColType -> List CTypes.FullTradeInfo -> Element Msg +viewTradeRows time model colTypes trades = + Element.column + [ Element.width Element.fill + , Element.Border.width 2 + , Element.Border.rounded 8 + , Element.Border.color EH.darkGray + , Element.spacing 2 + , Element.Background.color EH.darkGray + , Element.clip + ] + (trades + |> List.sortWith (sortByFunc model.orderBy) + |> List.map (viewTradeRow time colTypes) + ) + + +viewTradeRow : Time.Posix -> List ColType -> CTypes.FullTradeInfo -> Element Msg +viewTradeRow time colTypes trade = + Element.column + [ Element.width Element.fill + , Element.spacing 1 + , Element.Background.color EH.lightGray + , Element.pointer + , Element.Events.onClick (TradeClicked trade.factory trade.id) + ] + [ Element.row + [ Element.width <| Element.fill + , Element.spacing 1 + ] + (colTypes + |> List.map + (\colType -> + viewTradeCell time colType trade + ) + ) + , cellMaker 1 <| viewPaymentMethods trade.terms.paymentMethods + ] + + +viewPaymentMethods : List PaymentMethod -> Element Msg +viewPaymentMethods paymentMethods = + paymentMethods + |> List.head + |> Maybe.map PaymentMethods.previewTextHack + |> Maybe.withDefault Element.none + + +viewTradeCell : Time.Posix -> ColType -> CTypes.FullTradeInfo -> Element Msg +viewTradeCell time colType trade = + cellMaker + (colTypePortion colType) + (case colType of + Phase -> + let + phaseTitle = + CTypes.phaseToString trade.state.phase + in + case ( CTypes.getCurrentPhaseTimeoutInfo time trade, trade.state.phase ) of + ( _, CTypes.Closed ) -> + Element.text phaseTitle + + ( CTypes.TimeLeft timeoutInfo, _ ) -> + let + baseIntervalColor = + if TimeHelpers.getRatio (Tuple.first timeoutInfo) (Tuple.second timeoutInfo) < 0.05 then + EH.red + + else + EH.black + in + Element.column + [ Element.spacing 3 ] + [ Element.text phaseTitle + , EH.intervalWithElapsedBar + [ Element.width Element.fill ] + [ Element.Font.size 16 ] + ( baseIntervalColor, EH.lightGray ) + timeoutInfo + ] + + ( CTypes.TimeUp totalInterval, _ ) -> + Element.row + [ Element.spacing 6 + , Element.Font.color EH.darkGray + ] + [ Element.text phaseTitle + , Element.el [ Element.Font.size 16 ] <| Element.text "(stale)" + ] + + Expires -> + case trade.state.phase of + CTypes.Open -> + case CTypes.getCurrentPhaseTimeoutInfo time trade of + CTypes.TimeLeft timeoutInfo -> + let + baseIntervalColor = + if TimeHelpers.getRatio (Tuple.first timeoutInfo) (Tuple.second timeoutInfo) < 0.05 then + EH.red + + else + EH.black + in + EH.intervalWithElapsedBar + [ Element.width Element.fill ] + [ Element.Font.size 16 ] + ( baseIntervalColor, EH.lightGray ) + timeoutInfo + + CTypes.TimeUp totalInterval -> + EH.intervalWithElapsedBar + [ Element.width Element.fill ] + [ Element.Font.size 16 ] + ( EH.red, EH.lightGray ) + ( Time.millisToPosix 0, totalInterval ) + + _ -> + Element.none + + Offer -> + Element.row + [ Element.spacing 5 ] + [ Element.text <| + ((case trade.parameters.initiatorRole of + Buyer -> + "Buying " + + Seller -> + "Selling " + ) + ++ TokenValue.toConciseString trade.parameters.tradeAmount + ++ " " + ++ tokenUnitName trade.factory + ) + ] + + FiatPrice -> + EH.fiatValue trade.terms.price + + Margin -> + let + upIsGreen = + trade.parameters.initiatorRole == Buyer + in + trade.derived.margin + |> Maybe.map (EH.coloredMargin upIsGreen) + |> Maybe.withDefault Element.none + + PaymentWindow -> + let + lowValColor = + case trade.parameters.initiatorRole of + Seller -> + EH.red + + Buyer -> + EH.green + + baseColor = + if Time.posixToMillis trade.parameters.autoabortInterval < (1000 * 60 * 60 * 6) then + lowValColor + + else + EH.black + in + EH.interval + [] + [] + ( baseColor, EH.lightGray ) + trade.parameters.autoabortInterval + + BurnWindow -> + let + lowValColor = + case trade.parameters.initiatorRole of + Seller -> + EH.green + + Buyer -> + EH.red + + baseColor = + if Time.posixToMillis trade.parameters.autoabortInterval < (1000 * 60 * 60 * 6) then + lowValColor + + else + EH.black + in + EH.interval + [] + [] + ( baseColor, EH.lightGray ) + trade.parameters.autoreleaseInterval + ) + + +cellMaker : Int -> Element Msg -> Element Msg +cellMaker portion cellElement = + Element.el + [ Element.width <| Element.fillPortion portion + , Element.height <| Element.px 60 + , Element.clip + , Element.Background.color EH.white + ] + <| + Element.el + [ Element.padding 12 + , Element.centerY + , Element.width Element.fill + ] + cellElement + + +sortByFunc : ( ColType, Ordering ) -> (CTypes.FullTradeInfo -> CTypes.FullTradeInfo -> Order) +sortByFunc ( sortCol, ordering ) = + (case sortCol of + Phase -> + \a b -> + if a.state.phase == b.state.phase then + sortByFunc ( Expires, Descending ) a b + + else + compare (CTypes.phaseToInt a.state.phase) (CTypes.phaseToInt b.state.phase) + + Expires -> + \a b -> TimeHelpers.compare a.derived.phaseEndTime b.derived.phaseEndTime + + Offer -> + \a b -> TokenValue.compare a.parameters.tradeAmount b.parameters.tradeAmount + + FiatPrice -> + \a b -> FiatValue.compare a.terms.price b.terms.price + + Margin -> + \a b -> + Maybe.map2 + (\marginA marginB -> compare marginA marginB) + a.derived.margin + b.derived.margin + |> Maybe.withDefault EQ + + PaymentWindow -> + \a b -> TimeHelpers.compare a.parameters.autoabortInterval b.parameters.autoabortInterval + + BurnWindow -> + \a b -> + TimeHelpers.compare a.parameters.autoreleaseInterval b.parameters.autoreleaseInterval + ) + |> (if ordering == Ascending then + identity + + else + flip + ) diff --git a/src/Types.elm b/src/Types.elm index dca687b..1d61232 100644 --- a/src/Types.elm +++ b/src/Types.elm @@ -1,4 +1,6 @@ -module Types exposing (Flags, InitialWeb3State(..), Model, Msg(..), Submodel(..)) +module Types exposing (Flags, Model, Msg(..), Submodel(..)) + +-- import QuickCreate.Types import AgentHistory.Types import AppCmd @@ -8,19 +10,20 @@ import Browser import Browser.Navigation import CommonTypes exposing (..) import Create.Types +import Eth.Net import Eth.Sentry.Tx as TxSentry exposing (TxSentry) import Eth.Sentry.Wallet as WalletSentry exposing (WalletSentry) import Eth.Types exposing (Address) -import Helpers.Eth as EthHelpers exposing (Web3Context) +import Helpers.Eth as EthHelpers import Json.Decode import Marketplace.Types -import QuickCreate.Types import Routing import Time import Trade.Types import TradeCache.Types as TradeCache exposing (TradeCache) import Url exposing (Url) import UserNotice as UN exposing (UserNotice) +import Wallet type alias Flags = @@ -32,29 +35,21 @@ type alias Flags = type alias Model = { key : Browser.Navigation.Key - , initialWeb3State : InitialWeb3State + , userAddress : Maybe Address -- `wallet` will store this but only after commPubkey has been generated + , wallet : Wallet.State , time : Time.Posix - , web3Context : Web3Context - , txSentry : TxSentry Msg - , userAddress : Maybe Address - , userInfo : Maybe UserInfo - , tradeCache : TradeCache + , txSentry : Maybe (TxSentry Msg) + , tradeCaches : List TradeCache , submodel : Submodel , userNotices : List (UserNotice Msg) , screenWidth : Int } -type InitialWeb3State - = AllGood - | WrongNetwork - | NoWeb3 - - type Submodel = BetaLandingPage | CreateModel Create.Types.Model - | QuickCreateModel QuickCreate.Types.Model + -- | QuickCreateModel QuickCreate.Types.Model | TradeModel Trade.Types.Model | MarketplaceModel Marketplace.Types.Model | AgentHistoryModel AgentHistory.Types.Model @@ -68,12 +63,11 @@ type Msg | AppCmd (AppCmd.AppCmd Msg) | ConnectToWeb3 | WalletStatus WalletSentry - | NetworkUpdate Json.Decode.Value | TxSentryMsg TxSentry.Msg | UserPubkeySet Json.Decode.Value | CreateMsg Create.Types.Msg - | QuickCreateMsg QuickCreate.Types.Msg - | TradeCacheMsg TradeCache.Msg + -- | QuickCreateMsg QuickCreate.Types.Msg + | TradeCacheMsg Int TradeCache.Msg | TradeMsg Trade.Types.Msg | MarketplaceMsg Marketplace.Types.Msg | AgentHistoryMsg AgentHistory.Types.Msg diff --git a/src/View.elm b/src/View.elm index b512c2f..4c964d1 100644 --- a/src/View.elm +++ b/src/View.elm @@ -1,5 +1,7 @@ module View exposing (root) +-- import QuickCreate.View + import AgentHistory.View import Browser import CommonTypes exposing (..) @@ -19,11 +21,11 @@ import Helpers.Tuple exposing (mapTuple2) import Landing.View import Marketplace.Types import Marketplace.View -import QuickCreate.View import Routing import Trade.View import Types exposing (..) import UserNotice as UN exposing (UserNotice) +import Wallet root : Model -> Browser.Document Msg @@ -91,48 +93,30 @@ headerContent model = , Element.paddingXY 30 17 ] [ headerLink - "Create a New Offer" - (GotoRoute Routing.Create) - (case model.submodel of - CreateModel _ -> - Active - - _ -> - Normal - ) - , headerLink - "Sell Offers" - (GotoRoute <| Routing.Marketplace Buyer) + "Browse Offers" + (GotoRoute Routing.Marketplace) (case model.submodel of MarketplaceModel marketplaceModel -> - if marketplaceModel.browsingRole == Buyer then - Active - - else - Normal + Active _ -> Normal ) , headerLink - "Buy Offers" - (GotoRoute <| Routing.Marketplace Seller) + "Create a New Offer" + (GotoRoute Routing.Create) (case model.submodel of - MarketplaceModel marketplaceModel -> - if marketplaceModel.browsingRole == Seller then - Active - - else - Normal + CreateModel _ -> + Active _ -> Normal ) - , case model.userInfo of + , case Wallet.userInfo model.wallet of Just userInfo -> headerLink "My Trades" - (GotoRoute <| Routing.AgentHistory userInfo.address Seller) + (GotoRoute <| Routing.AgentHistory userInfo.address) (case model.submodel of AgentHistoryModel agentHistoryModel -> if agentHistoryModel.agentAddress == userInfo.address then @@ -156,42 +140,10 @@ headerContent model = , Element.paddingXY 8 0 ] [ logoElement - , networkModeElement model ] ] -networkModeElement : Model -> Element Msg -networkModeElement model = - Element.el - [ Element.Font.size 18 - , Element.Font.color <| Element.rgb 0.8 0.8 1 - , Element.Font.semiBold - , Element.Font.italic - , Element.centerX - ] - (Element.text (networkModeText model)) - - -networkModeText : Model -> String -networkModeText model = - case model.web3Context.factoryType of - Native Eth -> - "Mainnet ETH" - - Native Kovan -> - "Testnet ETH" - - Native XDai -> - "xDai" - - Token EthDai -> - "Mainnet Dai" - - Token KovanDai -> - "Testnet Dai" - - type HeaderLinkStyle = Normal | Active @@ -387,25 +339,23 @@ submodelElementAndModal screenWidth model = , [] ) - QuickCreateModel quickCreateModel -> - QuickCreate.View.root quickCreateModel - |> Tuple.mapBoth - (Element.map QuickCreateMsg) - (List.map (Element.map QuickCreateMsg)) - + -- QuickCreateModel quickCreateModel -> + -- QuickCreate.View.root quickCreateModel + -- (Element.map QuickCreateMsg) + -- (List.map (Element.map QuickCreateMsg)) TradeModel tradeModel -> - Trade.View.root screenWidth model.time model.tradeCache tradeModel + Trade.View.root screenWidth model.time model.tradeCaches tradeModel |> Tuple.mapBoth (Element.map TradeMsg) (List.map (Element.map TradeMsg)) MarketplaceModel marketplaceModel -> - ( Element.map MarketplaceMsg (Marketplace.View.root model.time model.tradeCache marketplaceModel) + ( Element.map MarketplaceMsg (Marketplace.View.root model.time model.tradeCaches marketplaceModel) , [] ) AgentHistoryModel agentHistoryModel -> - ( Element.map AgentHistoryMsg (AgentHistory.View.root model.time model.tradeCache agentHistoryModel) + ( Element.map AgentHistoryMsg (AgentHistory.View.root model.time model.tradeCaches agentHistoryModel) , [] ) in diff --git a/src/Wallet.elm b/src/Wallet.elm new file mode 100644 index 0000000..f13ce59 --- /dev/null +++ b/src/Wallet.elm @@ -0,0 +1,98 @@ +module Wallet exposing (State(..), defaultFactory, factory, factoryForNetwork, factoryWithDefault, httpProvider, httpProviderWithDefault, network, networkForFactory, userInfo) + +import CommonTypes exposing (..) +import Eth.Net +import Eth.Types exposing (Address, HttpProvider, TxHash, WebsocketProvider) +import Helpers.Eth as EthHelpers + + +type State + = NoneDetected + | OnlyNetwork Eth.Net.NetworkId + | Active UserInfo + + +userInfo : State -> Maybe UserInfo +userInfo walletState = + case walletState of + Active uInfo -> + Just uInfo + + _ -> + Nothing + + +factory : State -> Maybe FactoryType +factory walletState = + network walletState + |> Maybe.andThen factoryForNetwork + + +factoryWithDefault : State -> FactoryType +factoryWithDefault walletState = + factory walletState + |> Maybe.withDefault defaultFactory + + +httpProvider : State -> Maybe HttpProvider +httpProvider walletState = + factory walletState + |> Maybe.map EthHelpers.httpProviderForFactory + + +httpProviderWithDefault : State -> HttpProvider +httpProviderWithDefault = + factoryWithDefault >> EthHelpers.httpProviderForFactory + + +network : State -> Maybe Eth.Net.NetworkId +network walletState = + case walletState of + NoneDetected -> + Nothing + + OnlyNetwork network_ -> + Just network_ + + Active uInfo -> + Just uInfo.network + + +factoryForNetwork : Eth.Net.NetworkId -> Maybe FactoryType +factoryForNetwork networkId = + case networkId of + Eth.Net.Mainnet -> + Just <| Token EthDai + + Eth.Net.Kovan -> + Just <| Token KovanDai + + Eth.Net.Private 100 -> + Just <| Native XDai + + _ -> + Nothing + + +networkForFactory : FactoryType -> Eth.Net.NetworkId +networkForFactory factory_ = + case factory_ of + Token EthDai -> + Eth.Net.Mainnet + + Native Eth -> + Eth.Net.Mainnet + + Token KovanDai -> + Eth.Net.Kovan + + Native Kovan -> + Eth.Net.Kovan + + Native XDai -> + Eth.Net.Private 100 + + +defaultFactory : FactoryType +defaultFactory = + Token EthDai