diff --git a/services/auth/dist/index.js b/services/auth/dist/index.js deleted file mode 100644 index d0b126dba..000000000 --- a/services/auth/dist/index.js +++ /dev/null @@ -1,304 +0,0 @@ -"use strict";var TT=Object.create;var Vl=Object.defineProperty;var kT=Object.getOwnPropertyDescriptor;var CT=Object.getOwnPropertyNames;var OT=Object.getPrototypeOf,PT=Object.prototype.hasOwnProperty;var P=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),MT=(t,e)=>{for(var r in e)Vl(t,r,{get:e[r],enumerable:!0})},Vg=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of CT(e))!PT.call(t,i)&&i!==r&&Vl(t,i,{get:()=>e[i],enumerable:!(n=kT(e,i))||n.enumerable});return t};var Ti=(t,e,r)=>(r=t!=null?TT(OT(t)):{},Vg(e||!t||!t.__esModule?Vl(r,"default",{value:t,enumerable:!0}):r,t)),BT=t=>Vg(Vl({},"__esModule",{value:!0}),t);var Qg=P((iW,Zg)=>{"use strict";Zg.exports=async function(e,r,...n){return await new Promise((i,a)=>{if(e.finished||e.complete){i();return}let o=!1;function c(u){o||(o=!0,e.removeListener("error",c),e.removeListener("end",c),e.removeListener("finish",c),u?a(u):i())}e.once("error",c),e.once("end",c),e.once("finish",c)}),typeof r=="function"?await r(e,...n):typeof r=="object"&&r!==null&&Object.assign(e,r),e}});var Ql=P((aW,e1)=>{"use strict";var FT=require("http"),Wg=`\r -\r -`,Zl=Symbol(),Xc=Symbol();function LT(t){if(Buffer.isBuffer(t))return t.toString("utf8");if(typeof t=="string")return t;throw new Error(`response.write() of unexpected type: ${typeof t}`)}function Yg(t,e){if(Buffer.isBuffer(e)||typeof e=="string"||e instanceof Uint8Array)t[Zl].push(Buffer.from(e));else throw new Error(`response.write() of unexpected type: ${typeof e}`)}e1.exports=class $g extends FT.ServerResponse{static from(e){let r=new $g(e);return r.statusCode=e.statusCode,r[Xc]=e.headers,r[Zl]=[Buffer.from(e.body)],r.end(),r}static body(e){return Buffer.concat(e[Zl])}static headers(e){let r=typeof e.getHeaders=="function"?e.getHeaders():e._headers;return Object.assign(r,e[Xc])}get headers(){return this[Xc]}setHeader(e,r){this._wroteHeader?this[Xc][e]=r:super.setHeader(e,r)}writeHead(e,r,n){let i=typeof r=="string"?n:r;for(let a in i)if(this.setHeader(a,i[a]),!this._wroteHeader)break;super.writeHead(e,r,n)}constructor({method:e}){super({method:e}),this[Zl]=[],this[Xc]={},this.useChunkedEncodingByDefault=!1,this.chunkedEncoding=!1,this._header="",this.assignSocket({_writableState:{},writable:!0,on:Function.prototype,removeListener:Function.prototype,destroy:Function.prototype,cork:Function.prototype,uncork:Function.prototype,write:(r,n,i)=>{if(typeof n=="function"&&(i=n,n=null),this._header===""||this._wroteHeader)Yg(this,r);else{let a=LT(r),o=a.indexOf(Wg);if(o!==-1){let c=a.slice(o+Wg.length);c&&Yg(this,c),this._wroteHeader=!0}}typeof i=="function"&&i()}}),this.once("finish",()=>{this.emit("close")})}}});var t1=P((oW,r1)=>{"use strict";var RT=require("http"),B0=Ql();function Qi(t){return e=>{let r=new B0(e);return t(e,r),r}}r1.exports=function(e){if(e instanceof RT.Server)return r=>{let n=new B0(r);return e.emit("request",r,n),n};if(typeof e.callback=="function")return Qi(e.callback());if(typeof e.handle=="function")return Qi((r,n)=>{e.handle(r,n)});if(typeof e.handler=="function")return Qi((r,n)=>{e.handler(r,n)});if(typeof e._onRequest=="function")return Qi((r,n)=>{e._onRequest(r,n)});if(typeof e=="function")return Qi(e);if(e.router&&typeof e.router.route=="function")return Qi((r,n)=>{let{url:i,method:a,headers:o,body:c}=r;e.router.route({url:i,method:a,headers:o,body:c},n)});if(e._core&&typeof e._core._dispatch=="function")return Qi(e._core._dispatch({app:e}));if(typeof e.inject=="function")return async r=>{let{method:n,url:i,headers:a,body:o}=r,c=await e.inject({method:n,url:i,headers:a,payload:o});return B0.from(c)};if(typeof e.main=="function")return Qi(e.main);throw new Error("Unsupported framework")}});var s1=P((sW,o1)=>{"use strict";function n1(t="/",e){if(e){let r=t.indexOf(e);if(r>-1)return t.substr(r+e.length)||"/"}return t}function a1(t){return typeof t=="string"||t instanceof String}function i1(t){if(!a1(t))return t;let e;try{e=decodeURIComponent(t.replace(/[+]/g,"%20"))}catch{e=t.replace(/[+]/g,"%20")}return e}function Wl(t){if(a1(t))return i1(t);if(Array.isArray(t)){let e=[];for(let r in t)e.push(Wl(t[r]));return e}else if(t instanceof Object){let e={};for(let r of Object.keys(t))e[i1(r)]=Wl(t[r]);return e}return t}o1.exports=function(e,r){let n=e||{};return n.requestContext=n.requestContext||{},n.body=n.body||"",n.headers=n.headers||{},"elb"in n.requestContext&&(n.multiValueQueryStringParameters&&(n.multiValueQueryStringParameters=Wl(n.multiValueQueryStringParameters)),n.queryStringParameters&&(n.queryStringParameters=Wl(n.queryStringParameters))),n.version==="2.0"?(n.requestContext.authorizer=n.requestContext.authorizer||{},n.requestContext.http.method=n.requestContext.http.method||"GET",n.rawPath=n1(n.requestPath||n.rawPath,r.basePath)):(n.requestContext.identity=n.requestContext.identity||{},n.httpMethod=n.httpMethod||"GET",n.path=n1(n.requestPath||n.path,r.basePath)),n}});var F0=P((uW,c1)=>{"use strict";var IT=require("http");c1.exports=class extends IT.IncomingMessage{constructor({method:e,url:r,headers:n,body:i,remoteAddress:a}){super({encrypted:!0,readable:!1,remoteAddress:a,address:()=>({port:443}),end:Function.prototype,destroy:Function.prototype}),typeof n["content-length"]>"u"&&(n["content-length"]=Buffer.byteLength(i)),Object.assign(this,{ip:a,complete:!0,httpVersion:"1.1",httpVersionMajor:"1",httpVersionMinor:"1",method:e,headers:n,body:i,url:r}),this._read=()=>{this.push(i),this.push(null)}}}});var f1=P((lW,l1)=>{"use strict";var u1=require("url"),NT=F0();function DT(t){return t.version==="2.0"?t.requestContext.http.method:t.httpMethod}function JT(t){return t.version==="2.0"?t.requestContext.http.sourceIp:t.requestContext.identity.sourceIp}function qT(t){let e=t.version==="2.0"&&Array.isArray(t.cookies)?{cookie:t.cookies.join("; ")}:{};return t.multiValueHeaders?Object.keys(t.multiValueHeaders).reduce((r,n)=>(r[n.toLowerCase()]=t.multiValueHeaders[n].join(", "),r),e):Object.keys(t.headers).reduce((r,n)=>(r[n.toLowerCase()]=t.headers[n],r),e)}function jT(t){let e=typeof t.body;if(Buffer.isBuffer(t.body))return t.body;if(e==="string")return Buffer.from(t.body,t.isBase64Encoded?"base64":"utf8");if(e==="object")return Buffer.from(JSON.stringify(t.body));throw new Error(`Unexpected event.body type: ${typeof t.body}`)}function UT(t){if(t.version==="2.0")return u1.format({pathname:t.rawPath,search:t.rawQueryString});let e=t.multiValueQueryStringParameters||{};return t.queryStringParameters&&Object.keys(t.queryStringParameters).forEach(r=>{Array.isArray(e[r])?e[r].includes(t.queryStringParameters[r])||e[r].push(t.queryStringParameters[r]):e[r]=[t.queryStringParameters[r]]}),u1.format({pathname:t.path,query:e})}l1.exports=(t,e,r)=>{let n=DT(t),i=JT(t),a=qT(t),o=jT(t),c=UT(t);if(typeof r.requestId=="string"&&r.requestId.length>0){let s=r.requestId.toLowerCase(),f=a[s]||t.requestContext.requestId;f&&(a[s]=f)}let u=new NT({method:n,headers:a,body:o,remoteAddress:i,url:c});return u.requestContext=t.requestContext,u.apiGateway={event:t,context:e},u}});var p1=P((fW,d1)=>{"use strict";var HT=["gzip","deflate","br"],zT=(process.env.BINARY_CONTENT_TYPES||"").split(",");function GT(t){let e=t["content-encoding"];if(typeof e=="string")return e.split(",").some(r=>HT.some(n=>r.indexOf(n)!==-1))}function XT(t,e){let r=[].concat(e.binary?e.binary:zT).map(i=>new RegExp(`^${i.replace(/\*/g,".*")}$`)),n=(t["content-type"]||"").split(";")[0];return!!n&&r.some(i=>i.test(n))}d1.exports=function(e,r){return r.binary===!1?!1:r.binary===!0?!0:typeof r.binary=="function"?r.binary(e):GT(e)||XT(e,r)}});var v1=P((dW,h1)=>{"use strict";h1.exports=function(e){return Object.keys(e).reduce((r,n)=>{let i=e[n];return Array.isArray(i)?(r.multiValueHeaders[n]=i,n.toLowerCase()!=="set-cookie"&&(r.headers[n]=i.join(", "))):r.headers[n]=i==null?"":i.toString(),r},{headers:{},multiValueHeaders:{}})}});var b1=P((pW,m1)=>{"use strict";var KT=p1(),L0=Ql(),VT=v1();m1.exports=(t,e,r)=>{let{statusCode:n}=e,{headers:i,multiValueHeaders:a}=VT(L0.headers(e)),o=[];a["set-cookie"]&&(o=a["set-cookie"]);let c=KT(i,r),u=c?"base64":"utf8",s=L0.body(e).toString(u);if(i["transfer-encoding"]==="chunked"||e.chunkedEncoding){let m=L0.body(e).toString().split(`\r -`),w=[];for(let T=0;T{var ZT=s1(),QT=f1(),WT=b1();g1.exports=t=>e=>async(r,n={})=>{let i=ZT(r,t),a=QT(i,n,t),o=await e(a,i,n);return WT(i,o,t)}});var w1=P((vW,y1)=>{"use strict";function YT({requestPath:t,url:e}){return t||(typeof e=="string"?e:"/")}function $T(t){let e={};e.identity={};let r=t.headers["x-forwarded-for"],n=t.headers["client-ip"],i=r||n||"";return i&&(e.identity.sourceIp=i.split(":")[0]),e}y1.exports=function(e,r){let n=e||{};if(n.requestContext=$T(e),n.method=n.method||"GET",n.url=YT(n),n.body=n.body||"",n.headers=n.headers||{},r.basePath){let i=n.url.indexOf(r.basePath);i>-1&&(n.url=n.url.substr(i+r.basePath.length))}return n}});var E1=P((mW,A1)=>{"use strict";var ek=require("url"),rk=F0();function tk(t){return Object.keys(t.headers).reduce((e,r)=>(e[r.toLowerCase()]=t.headers[r],e),{})}function nk(t){let e=typeof t.rawBody;if(Buffer.isBuffer(t.rawBody))return t.rawBody;if(e==="string")return Buffer.from(t.rawBody,"utf8");if(e==="object")return Buffer.from(JSON.stringify(t.rawBody));throw new Error(`Unexpected request.body type: ${typeof t.rawBody}`)}A1.exports=t=>{let e=t.method,r=t.query,n=tk(t),i=nk(t),a=new rk({method:e,headers:n,body:i,url:ek.format({pathname:t.url,query:r})});return a.requestContext=t.requestContext,a}});var _1=P((bW,S1)=>{"use strict";var ik=["gzip","deflate","br"],ak=(process.env.BINARY_CONTENT_TYPES||"").split(",");function ok(t){let e=t["content-encoding"];if(typeof e=="string")return e.split(",").some(r=>ik.some(n=>r.indexOf(n)!==-1))}function sk(t,e){let r=[].concat(e.binary?e.binary:ak).map(i=>new RegExp(`^${i.replace(/\*/g,".*")}$`)),n=(t["content-type"]||"").split(";")[0];return!!n&&r.some(i=>i.test(n))}S1.exports=function(e,r){return r.binary===!1?!1:r.binary===!0?!0:typeof r.binary=="function"?r.binary(e):ok(e)||sk(e,r)}});var T1=P((gW,ck)=>{ck.exports={variations:["set-cookie","Set-cookie","sEt-cookie","SEt-cookie","seT-cookie","SeT-cookie","sET-cookie","SET-cookie","set-Cookie","Set-Cookie","sEt-Cookie","SEt-Cookie","seT-Cookie","SeT-Cookie","sET-Cookie","SET-Cookie","set-cOokie","Set-cOokie","sEt-cOokie","SEt-cOokie","seT-cOokie","SeT-cOokie","sET-cOokie","SET-cOokie","set-COokie","Set-COokie","sEt-COokie","SEt-COokie","seT-COokie","SeT-COokie","sET-COokie","SET-COokie","set-coOkie","Set-coOkie","sEt-coOkie","SEt-coOkie","seT-coOkie","SeT-coOkie","sET-coOkie","SET-coOkie","set-CoOkie","Set-CoOkie","sEt-CoOkie","SEt-CoOkie","seT-CoOkie","SeT-CoOkie","sET-CoOkie","SET-CoOkie","set-cOOkie","Set-cOOkie","sEt-cOOkie","SEt-cOOkie","seT-cOOkie","SeT-cOOkie","sET-cOOkie","SET-cOOkie","set-COOkie","Set-COOkie","sEt-COOkie","SEt-COOkie","seT-COOkie","SeT-COOkie","sET-COOkie","SET-COOkie","set-cooKie","Set-cooKie","sEt-cooKie","SEt-cooKie","seT-cooKie","SeT-cooKie","sET-cooKie","SET-cooKie","set-CooKie","Set-CooKie","sEt-CooKie","SEt-CooKie","seT-CooKie","SeT-CooKie","sET-CooKie","SET-CooKie","set-cOoKie","Set-cOoKie","sEt-cOoKie","SEt-cOoKie","seT-cOoKie","SeT-cOoKie","sET-cOoKie","SET-cOoKie","set-COoKie","Set-COoKie","sEt-COoKie","SEt-COoKie","seT-COoKie","SeT-COoKie","sET-COoKie","SET-COoKie","set-coOKie","Set-coOKie","sEt-coOKie","SEt-coOKie","seT-coOKie","SeT-coOKie","sET-coOKie","SET-coOKie","set-CoOKie","Set-CoOKie","sEt-CoOKie","SEt-CoOKie","seT-CoOKie","SeT-CoOKie","sET-CoOKie","SET-CoOKie","set-cOOKie","Set-cOOKie","sEt-cOOKie","SEt-cOOKie","seT-cOOKie","SeT-cOOKie","sET-cOOKie","SET-cOOKie","set-COOKie","Set-COOKie","sEt-COOKie","SEt-COOKie","seT-COOKie","SeT-COOKie","sET-COOKie","SET-COOKie","set-cookIe","Set-cookIe","sEt-cookIe","SEt-cookIe","seT-cookIe","SeT-cookIe","sET-cookIe","SET-cookIe","set-CookIe","Set-CookIe","sEt-CookIe","SEt-CookIe","seT-CookIe","SeT-CookIe","sET-CookIe","SET-CookIe","set-cOokIe","Set-cOokIe","sEt-cOokIe","SEt-cOokIe","seT-cOokIe","SeT-cOokIe","sET-cOokIe","SET-cOokIe","set-COokIe","Set-COokIe","sEt-COokIe","SEt-COokIe","seT-COokIe","SeT-COokIe","sET-COokIe","SET-COokIe","set-coOkIe","Set-coOkIe","sEt-coOkIe","SEt-coOkIe","seT-coOkIe","SeT-coOkIe","sET-coOkIe","SET-coOkIe","set-CoOkIe","Set-CoOkIe","sEt-CoOkIe","SEt-CoOkIe","seT-CoOkIe","SeT-CoOkIe","sET-CoOkIe","SET-CoOkIe","set-cOOkIe","Set-cOOkIe","sEt-cOOkIe","SEt-cOOkIe","seT-cOOkIe","SeT-cOOkIe","sET-cOOkIe","SET-cOOkIe","set-COOkIe","Set-COOkIe","sEt-COOkIe","SEt-COOkIe","seT-COOkIe","SeT-COOkIe","sET-COOkIe","SET-COOkIe","set-cooKIe","Set-cooKIe","sEt-cooKIe","SEt-cooKIe","seT-cooKIe","SeT-cooKIe","sET-cooKIe","SET-cooKIe","set-CooKIe","Set-CooKIe","sEt-CooKIe","SEt-CooKIe","seT-CooKIe","SeT-CooKIe","sET-CooKIe","SET-CooKIe","set-cOoKIe","Set-cOoKIe","sEt-cOoKIe","SEt-cOoKIe","seT-cOoKIe","SeT-cOoKIe","sET-cOoKIe","SET-cOoKIe","set-COoKIe","Set-COoKIe","sEt-COoKIe","SEt-COoKIe","seT-COoKIe","SeT-COoKIe","sET-COoKIe","SET-COoKIe","set-coOKIe","Set-coOKIe","sEt-coOKIe","SEt-coOKIe","seT-coOKIe","SeT-coOKIe","sET-coOKIe","SET-coOKIe","set-CoOKIe","Set-CoOKIe","sEt-CoOKIe","SEt-CoOKIe","seT-CoOKIe","SeT-CoOKIe","sET-CoOKIe","SET-CoOKIe","set-cOOKIe","Set-cOOKIe","sEt-cOOKIe","SEt-cOOKIe","seT-cOOKIe","SeT-cOOKIe","sET-cOOKIe","SET-cOOKIe","set-COOKIe","Set-COOKIe","sEt-COOKIe","SEt-COOKIe","seT-COOKIe","SeT-COOKIe","sET-COOKIe","SET-COOKIe","set-cookiE","Set-cookiE","sEt-cookiE","SEt-cookiE","seT-cookiE","SeT-cookiE","sET-cookiE","SET-cookiE","set-CookiE","Set-CookiE","sEt-CookiE","SEt-CookiE","seT-CookiE","SeT-CookiE","sET-CookiE","SET-CookiE","set-cOokiE","Set-cOokiE","sEt-cOokiE","SEt-cOokiE","seT-cOokiE","SeT-cOokiE","sET-cOokiE","SET-cOokiE","set-COokiE","Set-COokiE","sEt-COokiE","SEt-COokiE","seT-COokiE","SeT-COokiE","sET-COokiE","SET-COokiE","set-coOkiE","Set-coOkiE","sEt-coOkiE","SEt-coOkiE","seT-coOkiE","SeT-coOkiE","sET-coOkiE","SET-coOkiE","set-CoOkiE","Set-CoOkiE","sEt-CoOkiE","SEt-CoOkiE","seT-CoOkiE","SeT-CoOkiE","sET-CoOkiE","SET-CoOkiE","set-cOOkiE","Set-cOOkiE","sEt-cOOkiE","SEt-cOOkiE","seT-cOOkiE","SeT-cOOkiE","sET-cOOkiE","SET-cOOkiE","set-COOkiE","Set-COOkiE","sEt-COOkiE","SEt-COOkiE","seT-COOkiE","SeT-COOkiE","sET-COOkiE","SET-COOkiE","set-cooKiE","Set-cooKiE","sEt-cooKiE","SEt-cooKiE","seT-cooKiE","SeT-cooKiE","sET-cooKiE","SET-cooKiE","set-CooKiE","Set-CooKiE","sEt-CooKiE","SEt-CooKiE","seT-CooKiE","SeT-CooKiE","sET-CooKiE","SET-CooKiE","set-cOoKiE","Set-cOoKiE","sEt-cOoKiE","SEt-cOoKiE","seT-cOoKiE","SeT-cOoKiE","sET-cOoKiE","SET-cOoKiE","set-COoKiE","Set-COoKiE","sEt-COoKiE","SEt-COoKiE","seT-COoKiE","SeT-COoKiE","sET-COoKiE","SET-COoKiE","set-coOKiE","Set-coOKiE","sEt-coOKiE","SEt-coOKiE","seT-coOKiE","SeT-coOKiE","sET-coOKiE","SET-coOKiE","set-CoOKiE","Set-CoOKiE","sEt-CoOKiE","SEt-CoOKiE","seT-CoOKiE","SeT-CoOKiE","sET-CoOKiE","SET-CoOKiE","set-cOOKiE","Set-cOOKiE","sEt-cOOKiE","SEt-cOOKiE","seT-cOOKiE","SeT-cOOKiE","sET-cOOKiE","SET-cOOKiE","set-COOKiE","Set-COOKiE","sEt-COOKiE","SEt-COOKiE","seT-COOKiE","SeT-COOKiE","sET-COOKiE","SET-COOKiE","set-cookIE","Set-cookIE","sEt-cookIE","SEt-cookIE","seT-cookIE","SeT-cookIE","sET-cookIE","SET-cookIE","set-CookIE","Set-CookIE","sEt-CookIE","SEt-CookIE","seT-CookIE","SeT-CookIE","sET-CookIE","SET-CookIE","set-cOokIE","Set-cOokIE","sEt-cOokIE","SEt-cOokIE","seT-cOokIE","SeT-cOokIE","sET-cOokIE","SET-cOokIE","set-COokIE","Set-COokIE","sEt-COokIE","SEt-COokIE","seT-COokIE","SeT-COokIE","sET-COokIE","SET-COokIE","set-coOkIE","Set-coOkIE","sEt-coOkIE","SEt-coOkIE","seT-coOkIE","SeT-coOkIE","sET-coOkIE","SET-coOkIE","set-CoOkIE","Set-CoOkIE","sEt-CoOkIE","SEt-CoOkIE","seT-CoOkIE","SeT-CoOkIE","sET-CoOkIE","SET-CoOkIE","set-cOOkIE","Set-cOOkIE","sEt-cOOkIE","SEt-cOOkIE","seT-cOOkIE","SeT-cOOkIE","sET-cOOkIE","SET-cOOkIE","set-COOkIE","Set-COOkIE","sEt-COOkIE","SEt-COOkIE","seT-COOkIE","SeT-COOkIE","sET-COOkIE","SET-COOkIE","set-cooKIE","Set-cooKIE","sEt-cooKIE","SEt-cooKIE","seT-cooKIE","SeT-cooKIE","sET-cooKIE","SET-cooKIE","set-CooKIE","Set-CooKIE","sEt-CooKIE","SEt-CooKIE","seT-CooKIE","SeT-CooKIE","sET-CooKIE","SET-CooKIE","set-cOoKIE","Set-cOoKIE","sEt-cOoKIE","SEt-cOoKIE","seT-cOoKIE","SeT-cOoKIE","sET-cOoKIE","SET-cOoKIE","set-COoKIE","Set-COoKIE","sEt-COoKIE","SEt-COoKIE","seT-COoKIE","SeT-COoKIE","sET-COoKIE","SET-COoKIE","set-coOKIE","Set-coOKIE","sEt-coOKIE","SEt-coOKIE","seT-coOKIE","SeT-coOKIE","sET-coOKIE","SET-coOKIE","set-CoOKIE","Set-CoOKIE","sEt-CoOKIE","SEt-CoOKIE","seT-CoOKIE","SeT-CoOKIE","sET-CoOKIE","SET-CoOKIE","set-cOOKIE","Set-cOOKIE","sEt-cOOKIE","SEt-cOOKIE","seT-cOOKIE","SeT-cOOKIE","sET-cOOKIE","SET-cOOKIE","set-COOKIE","Set-COOKIE","sEt-COOKIE","SEt-COOKIE","seT-COOKIE","SeT-COOKIE","sET-COOKIE","SET-COOKIE"]}});var C1=P((xW,k1)=>{"use strict";var uk=T1().variations;k1.exports=function(e){return Object.keys(e).reduce((r,n)=>{let i=e[n];return Array.isArray(i)?n.toLowerCase()==="set-cookie"?i.forEach((a,o)=>{r[uk[o]]=a}):r[n]=i.join(", "):r[n]=i==null?"":i.toString(),r},{})}});var M1=P((yW,P1)=>{var lk=_1(),O1=Ql(),fk=C1();P1.exports=(t,e)=>{let{statusCode:r}=t,n=fk(O1.headers(t));if(n["transfer-encoding"]==="chunked"||t.chunkedEncoding)throw new Error("chunked encoding not supported");let i=lk(n,e),a=i?"base64":"utf8",o=O1.body(t).toString(a);return{status:r,headers:n,isBase64Encoded:i,body:o}}});var F1=P((wW,B1)=>{var dk=w1(),pk=E1(),hk=M1();B1.exports=t=>e=>async(r,n)=>{let i=dk(n,t),a=pk(i,t),o=await e(a,r,i);return r.log(o),hk(o,t)}});var I1=P((AW,R1)=>{var vk=x1(),mk=F1(),L1={aws:vk,azure:mk};R1.exports=function(e){let{provider:r="aws"}=e;if(r in L1)return L1[r](e);throw new Error(`Unsupported provider ${r}`)}});var J1=P((EW,D1)=>{"use strict";var N1=Qg(),bk=t1(),gk=I1(),xk={requestId:"x-request-id"};D1.exports=function(t,e){let r=Object.assign({},xk,e),n=bk(t);return gk(r)(async(a,...o)=>{await N1(a,r.request,...o);let c=await n(a);return await N1(c,r.response,...o),c})}});var qn=P((SW,H1)=>{var yk=require("path").relative;H1.exports=_k;var wk=process.cwd();function j1(t,e){for(var r=t.split(/[ ,]+/),n=String(e).toLowerCase(),i=0;i0}function kk(t){if(process.noDeprecation)return!0;var e=process.env.NO_DEPRECATION||"";return j1(e,t)}function Ck(t){if(process.traceDeprecation)return!0;var e=process.env.TRACE_DEPRECATION||"";return j1(e,t)}function Yl(t,e){var r=Tk(process,"deprecation");if(!(!r&&this._ignored)){var n,i,a,o,c=0,u=!1,s=$l(),f=this._file;for(e?(o=e,a=Qo(s[1]),a.name=o.name,f=a[0]):(c=2,o=Qo(s[c]),a=o);c",r=t.getLineNumber(),n=t.getColumnNumber();t.isEval()&&(e=t.getEvalOrigin()+", "+e);var i=[e,r,n];return i.callSite=t,i.name=t.getFunctionName(),i}function q1(t){var e=t.callSite,r=t.name;r||(r="");var n=e.getThis(),i=n&&e.getTypeName();return i==="Object"&&(i=void 0),i==="Function"&&(i=n.name||i),i&&e.getMethodName()?i+"."+r:r}function Ok(t,e,r){var n=new Date().toUTCString(),i=n+" "+this._namespace+" deprecated "+t;if(this._traced){for(var a=0;a{"use strict";ef.exports=Nk;ef.exports.format=z1;ef.exports.parse=G1;var Lk=/\B(?=(\d{3})+(?!\d))/g,Rk=/(?:\.0*|(\.[^0]+)0+)$/,Wi={b:1,kb:1<<10,mb:1<<20,gb:1<<30,tb:Math.pow(1024,4),pb:Math.pow(1024,5)},Ik=/^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i;function Nk(t,e){return typeof t=="string"?G1(t):typeof t=="number"?z1(t,e):null}function z1(t,e){if(!Number.isFinite(t))return null;var r=Math.abs(t),n=e&&e.thousandsSeparator||"",i=e&&e.unitSeparator||"",a=e&&e.decimalPlaces!==void 0?e.decimalPlaces:2,o=Boolean(e&&e.fixedDecimals),c=e&&e.unit||"";(!c||!Wi[c.toLowerCase()])&&(r>=Wi.pb?c="PB":r>=Wi.tb?c="TB":r>=Wi.gb?c="GB":r>=Wi.mb?c="MB":r>=Wi.kb?c="KB":c="B");var u=t/Wi[c.toLowerCase()],s=u.toFixed(a);return o||(s=s.replace(Rk,"$1")),n&&(s=s.split(".").map(function(f,m){return m===0?f.replace(Lk,n):f}).join(".")),s+i+c}function G1(t){if(typeof t=="number"&&!isNaN(t))return t;if(typeof t!="string")return null;var e=Ik.exec(t),r,n="b";return e?(r=parseFloat(e[1]),n=e[4].toLowerCase()):(r=parseInt(t,10),n="b"),isNaN(r)?null:Math.floor(Wi[n]*r)}});var Kc=P(I0=>{"use strict";var X1=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,Dk=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,K1=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,Jk=/\\([\u000b\u0020-\u00ff])/g,qk=/([\\"])/g,V1=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;I0.format=jk;I0.parse=Uk;function jk(t){if(!t||typeof t!="object")throw new TypeError("argument obj is required");var e=t.parameters,r=t.type;if(!r||!V1.test(r))throw new TypeError("invalid type");var n=r;if(e&&typeof e=="object")for(var i,a=Object.keys(e).sort(),o=0;o0&&!Dk.test(e))throw new TypeError("invalid parameter value");return'"'+e.replace(qk,"\\$1")+'"'}function Gk(t){this.parameters=Object.create(null),this.type=t}});var Vc=P((kW,Z1)=>{"use strict";Z1.exports=Object.setPrototypeOf||({__proto__:[]}instanceof Array?Xk:Kk);function Xk(t,e){return t.__proto__=e,t}function Kk(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(t,r)||(t[r]=e[r]);return t}});var Q1=P((CW,Vk)=>{Vk.exports={"100":"Continue","101":"Switching Protocols","102":"Processing","103":"Early Hints","200":"OK","201":"Created","202":"Accepted","203":"Non-Authoritative Information","204":"No Content","205":"Reset Content","206":"Partial Content","207":"Multi-Status","208":"Already Reported","226":"IM Used","300":"Multiple Choices","301":"Moved Permanently","302":"Found","303":"See Other","304":"Not Modified","305":"Use Proxy","307":"Temporary Redirect","308":"Permanent Redirect","400":"Bad Request","401":"Unauthorized","402":"Payment Required","403":"Forbidden","404":"Not Found","405":"Method Not Allowed","406":"Not Acceptable","407":"Proxy Authentication Required","408":"Request Timeout","409":"Conflict","410":"Gone","411":"Length Required","412":"Precondition Failed","413":"Payload Too Large","414":"URI Too Long","415":"Unsupported Media Type","416":"Range Not Satisfiable","417":"Expectation Failed","418":"I'm a Teapot","421":"Misdirected Request","422":"Unprocessable Entity","423":"Locked","424":"Failed Dependency","425":"Too Early","426":"Upgrade Required","428":"Precondition Required","429":"Too Many Requests","431":"Request Header Fields Too Large","451":"Unavailable For Legal Reasons","500":"Internal Server Error","501":"Not Implemented","502":"Bad Gateway","503":"Service Unavailable","504":"Gateway Timeout","505":"HTTP Version Not Supported","506":"Variant Also Negotiates","507":"Insufficient Storage","508":"Loop Detected","509":"Bandwidth Limit Exceeded","510":"Not Extended","511":"Network Authentication Required"}});var Zc=P((OW,Y1)=>{"use strict";var N0=Q1();Y1.exports=fn;fn.message=N0;fn.code=Zk(N0);fn.codes=Qk(N0);fn.redirect={300:!0,301:!0,302:!0,303:!0,305:!0,307:!0,308:!0};fn.empty={204:!0,205:!0,304:!0};fn.retry={502:!0,503:!0,504:!0};function Zk(t){var e={};return Object.keys(t).forEach(function(n){var i=t[n],a=Number(n);e[i.toLowerCase()]=a}),e}function Qk(t){return Object.keys(t).map(function(r){return Number(r)})}function Wk(t){var e=t.toLowerCase();if(!Object.prototype.hasOwnProperty.call(fn.code,e))throw new Error('invalid status message: "'+t+'"');return fn.code[e]}function W1(t){if(!Object.prototype.hasOwnProperty.call(fn.message,t))throw new Error("invalid status code: "+t);return fn.message[t]}function fn(t){if(typeof t=="number")return W1(t);if(typeof t!="string")throw new TypeError("code must be a number or string");var e=parseInt(t,10);return isNaN(e)?Wk(t):W1(e)}});var $1=P((PW,D0)=>{typeof Object.create=="function"?D0.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:D0.exports=function(e,r){if(r){e.super_=r;var n=function(){};n.prototype=r.prototype,e.prototype=new n,e.prototype.constructor=e}}});var Yo=P((MW,q0)=>{try{if(J0=require("util"),typeof J0.inherits!="function")throw"";q0.exports=J0.inherits}catch{q0.exports=$1()}var J0});var rx=P((BW,ex)=>{"use strict";ex.exports=Yk;function Yk(t){return t.split(" ").map(function(e){return e.slice(0,1).toUpperCase()+e.slice(1)}).join("").replace(/[^ _0-9a-z]/gi,"")}});var ro=P((FW,eo)=>{"use strict";var $k=qn()("http-errors"),tx=Vc(),$o=Zc(),j0=Yo(),eC=rx();eo.exports=rf;eo.exports.HttpError=rC();eo.exports.isHttpError=nC(eo.exports.HttpError);aC(eo.exports,$o.codes,eo.exports.HttpError);function nx(t){return Number(String(t).charAt(0)+"00")}function rf(){for(var t,e,r=500,n={},i=0;i=600)&&$k("non-error status code; use only 4xx or 5xx status codes"),(typeof r!="number"||!$o.message[r]&&(r<400||r>=600))&&(r=500);var c=rf[r]||rf[nx(r)];t||(t=c?new c(e):new Error(e||$o.message[r]),Error.captureStackTrace(t,rf)),(!c||!(t instanceof c)||t.status!==r)&&(t.expose=r<500,t.status=t.statusCode=r);for(var u in n)u!=="status"&&u!=="statusCode"&&(t[u]=n[u]);return t}function rC(){function t(){throw new TypeError("cannot construct abstract class")}return j0(t,Error),t}function tC(t,e,r){var n=ax(e);function i(a){var o=a??$o.message[r],c=new Error(o);return Error.captureStackTrace(c,i),tx(c,i.prototype),Object.defineProperty(c,"message",{enumerable:!0,configurable:!0,value:o,writable:!0}),Object.defineProperty(c,"name",{enumerable:!1,configurable:!0,value:n,writable:!0}),c}return j0(i,t),ix(i,n),i.prototype.status=r,i.prototype.statusCode=r,i.prototype.expose=!0,i}function nC(t){return function(r){return!r||typeof r!="object"?!1:r instanceof t?!0:r instanceof Error&&typeof r.expose=="boolean"&&typeof r.statusCode=="number"&&r.status===r.statusCode}}function iC(t,e,r){var n=ax(e);function i(a){var o=a??$o.message[r],c=new Error(o);return Error.captureStackTrace(c,i),tx(c,i.prototype),Object.defineProperty(c,"message",{enumerable:!0,configurable:!0,value:o,writable:!0}),Object.defineProperty(c,"name",{enumerable:!1,configurable:!0,value:n,writable:!0}),c}return j0(i,t),ix(i,n),i.prototype.status=r,i.prototype.statusCode=r,i.prototype.expose=!1,i}function ix(t,e){var r=Object.getOwnPropertyDescriptor(t,"name");r&&r.configurable&&(r.value=e,Object.defineProperty(t,"name",r))}function aC(t,e,r){e.forEach(function(i){var a,o=eC($o.message[i]);switch(nx(i)){case 400:a=tC(r,o,i);break;case 500:a=iC(r,o,i);break}a&&(t[i]=a,t[o]=a)})}function ax(t){return t.substr(-5)!=="Error"?t+"Error":t}});var sx=P((LW,ox)=>{var Qc=1e3,Wc=Qc*60,Yc=Wc*60,$c=Yc*24,oC=$c*365.25;ox.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return sC(t);if(r==="number"&&isNaN(t)===!1)return e.long?uC(t):cC(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function sC(t){if(t=String(t),!(t.length>100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(!!e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*oC;case"days":case"day":case"d":return r*$c;case"hours":case"hour":case"hrs":case"hr":case"h":return r*Yc;case"minutes":case"minute":case"mins":case"min":case"m":return r*Wc;case"seconds":case"second":case"secs":case"sec":case"s":return r*Qc;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function cC(t){return t>=$c?Math.round(t/$c)+"d":t>=Yc?Math.round(t/Yc)+"h":t>=Wc?Math.round(t/Wc)+"m":t>=Qc?Math.round(t/Qc)+"s":t+"ms"}function uC(t){return tf(t,$c,"day")||tf(t,Yc,"hour")||tf(t,Wc,"minute")||tf(t,Qc,"second")||t+" ms"}function tf(t,e,r){if(!(t{Qe=cx.exports=H0.debug=H0.default=H0;Qe.coerce=hC;Qe.disable=dC;Qe.enable=fC;Qe.enabled=pC;Qe.humanize=sx();Qe.names=[];Qe.skips=[];Qe.formatters={};var U0;function lC(t){var e=0,r;for(r in t)e=(e<<5)-e+t.charCodeAt(r),e|=0;return Qe.colors[Math.abs(e)%Qe.colors.length]}function H0(t){function e(){if(!!e.enabled){var r=e,n=+new Date,i=n-(U0||n);r.diff=i,r.prev=U0,r.curr=n,U0=n;for(var a=new Array(arguments.length),o=0;o{mt=lx.exports=z0();mt.log=bC;mt.formatArgs=mC;mt.save=gC;mt.load=ux;mt.useColors=vC;mt.storage=typeof chrome<"u"&&typeof chrome.storage<"u"?chrome.storage.local:xC();mt.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"];function vC(){return typeof window<"u"&&window.process&&window.process.type==="renderer"?!0:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}mt.formatters.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}};function mC(t){var e=this.useColors;if(t[0]=(e?"%c":"")+this.namespace+(e?" %c":" ")+t[0]+(e?"%c ":" ")+"+"+mt.humanize(this.diff),!!e){var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var n=0,i=0;t[0].replace(/%[a-zA-Z%]/g,function(a){a!=="%%"&&(n++,a==="%c"&&(i=n))}),t.splice(i,0,r)}}function bC(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function gC(t){try{t==null?mt.storage.removeItem("debug"):mt.storage.debug=t}catch{}}function ux(){var t;try{t=mt.storage.debug}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}mt.enable(ux());function xC(){try{return window.localStorage}catch{}}});var vx=P((Rr,hx)=>{var dx=require("tty"),eu=require("util");Rr=hx.exports=z0();Rr.init=TC;Rr.log=EC;Rr.formatArgs=AC;Rr.save=SC;Rr.load=px;Rr.useColors=wC;Rr.colors=[6,2,3,4,5,1];Rr.inspectOpts=Object.keys(process.env).filter(function(t){return/^debug_/i.test(t)}).reduce(function(t,e){var r=e.substring(6).toLowerCase().replace(/_([a-z])/g,function(i,a){return a.toUpperCase()}),n=process.env[e];return/^(yes|on|true|enabled)$/i.test(n)?n=!0:/^(no|off|false|disabled)$/i.test(n)?n=!1:n==="null"?n=null:n=Number(n),t[r]=n,t},{});var es=parseInt(process.env.DEBUG_FD,10)||2;es!==1&&es!==2&&eu.deprecate(function(){},"except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")();var yC=es===1?process.stdout:es===2?process.stderr:_C(es);function wC(){return"colors"in Rr.inspectOpts?Boolean(Rr.inspectOpts.colors):dx.isatty(es)}Rr.formatters.o=function(t){return this.inspectOpts.colors=this.useColors,eu.inspect(t,this.inspectOpts).split(` -`).map(function(e){return e.trim()}).join(" ")};Rr.formatters.O=function(t){return this.inspectOpts.colors=this.useColors,eu.inspect(t,this.inspectOpts)};function AC(t){var e=this.namespace,r=this.useColors;if(r){var n=this.color,i=" \x1B[3"+n+";1m"+e+" \x1B[0m";t[0]=i+t[0].split(` -`).join(` -`+i),t.push("\x1B[3"+n+"m+"+Rr.humanize(this.diff)+"\x1B[0m")}else t[0]=new Date().toUTCString()+" "+e+" "+t[0]}function EC(){return yC.write(eu.format.apply(eu,arguments)+` -`)}function SC(t){t==null?delete process.env.DEBUG:process.env.DEBUG=t}function px(){return process.env.DEBUG}function _C(t){var e,r=process.binding("tty_wrap");switch(r.guessHandleType(t)){case"TTY":e=new dx.WriteStream(t),e._type="tty",e._handle&&e._handle.unref&&e._handle.unref();break;case"FILE":var n=require("fs");e=new n.SyncWriteStream(t,{autoClose:!1}),e._type="fs";break;case"PIPE":case"TCP":var i=require("net");e=new i.Socket({fd:t,readable:!1,writable:!0}),e.readable=!1,e.read=null,e._type="pipe",e._handle&&e._handle.unref&&e._handle.unref();break;default:throw new Error("Implement me. Unknown stream file type!")}return e.fd=t,e._isStdio=!0,e}function TC(t){t.inspectOpts={};for(var e=Object.keys(Rr.inspectOpts),r=0;r{typeof process<"u"&&process.type==="renderer"?G0.exports=fx():G0.exports=vx()});var X0=P((IW,bx)=>{"use strict";var kC=require("events").EventEmitter,CC=require("fs").ReadStream,mx=require("stream"),to=require("zlib");bx.exports=OC;function OC(t,e){return RC(t)?PC(t):IC(t)?BC(t):FC(t)&&t.destroy(),LC(t)&&e&&(t.removeAllListeners("error"),t.addListener("error",NC)),t}function PC(t){t.destroy(),typeof t.close=="function"&&t.on("open",JC)}function MC(t){if(t._hadError===!0){var e=t._binding===null?"_binding":"_handle";t[e]={close:function(){this[e]=null}}}t.close()}function BC(t){typeof t.destroy=="function"?t._binding?(t.destroy(),t._processing?(t._needDrain=!0,t.once("drain",DC)):t._binding.clear()):t._destroy&&t._destroy!==mx.Transform.prototype._destroy?t.destroy():t._destroy&&typeof t.close=="function"?(t.destroyed=!0,t.close()):t.destroy():typeof t.close=="function"&&MC(t)}function FC(t){return t instanceof mx&&typeof t.destroy=="function"}function LC(t){return t instanceof kC}function RC(t){return t instanceof CC}function IC(t){return t instanceof to.Gzip||t instanceof to.Gunzip||t instanceof to.Deflate||t instanceof to.DeflateRaw||t instanceof to.Inflate||t instanceof to.InflateRaw||t instanceof to.Unzip}function NC(){}function DC(){this._binding.clear()}function JC(){typeof this.fd=="number"&&this.close()}});var no=P((NW,gx)=>{"use strict";var nf=require("buffer"),rs=nf.Buffer,jt={},Ut;for(Ut in nf)!nf.hasOwnProperty(Ut)||Ut==="SlowBuffer"||Ut==="Buffer"||(jt[Ut]=nf[Ut]);var ts=jt.Buffer={};for(Ut in rs)!rs.hasOwnProperty(Ut)||Ut==="allocUnsafe"||Ut==="allocUnsafeSlow"||(ts[Ut]=rs[Ut]);jt.Buffer.prototype=rs.prototype;(!ts.from||ts.from===Uint8Array.from)&&(ts.from=function(t,e,r){if(typeof t=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+typeof t);if(t&&typeof t.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);return rs(t,e,r)});ts.alloc||(ts.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError('The "size" argument must be of type number. Received type '+typeof t);if(t<0||t>=2*(1<<30))throw new RangeError('The value "'+t+'" is invalid for option "size"');var n=rs(t);return!e||e.length===0?n.fill(0):typeof r=="string"?n.fill(e,r):n.fill(e),n});if(!jt.kStringMaxLength)try{jt.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch{}jt.constants||(jt.constants={MAX_LENGTH:jt.kMaxLength},jt.kStringMaxLength&&(jt.constants.MAX_STRING_LENGTH=jt.kStringMaxLength));gx.exports=jt});var yx=P(Z0=>{"use strict";var xx="\uFEFF";Z0.PrependBOM=K0;function K0(t,e){this.encoder=t,this.addBOM=!0}K0.prototype.write=function(t){return this.addBOM&&(t=xx+t,this.addBOM=!1),this.encoder.write(t)};K0.prototype.end=function(){return this.encoder.end()};Z0.StripBOM=V0;function V0(t,e){this.decoder=t,this.pass=!1,this.options=e||{}}V0.prototype.write=function(t){var e=this.decoder.write(t);return this.pass||!e||(e[0]===xx&&(e=e.slice(1),typeof this.options.stripBOM=="function"&&this.options.stripBOM()),this.pass=!0),e};V0.prototype.end=function(){return this.decoder.end()}});var Ex=P((JW,Ax)=>{"use strict";var tu=no().Buffer;Ax.exports={utf8:{type:"_internal",bomAware:!0},cesu8:{type:"_internal",bomAware:!0},unicode11utf8:"utf8",ucs2:{type:"_internal",bomAware:!0},utf16le:"ucs2",binary:{type:"_internal"},base64:{type:"_internal"},hex:{type:"_internal"},_internal:Q0};function Q0(t,e){this.enc=t.encodingName,this.bomAware=t.bomAware,this.enc==="base64"?this.encoder=Y0:this.enc==="cesu8"&&(this.enc="utf8",this.encoder=$0,tu.from("eda0bdedb2a9","hex").toString()!=="\u{1F4A9}"&&(this.decoder=eh,this.defaultCharUnicode=e.defaultCharUnicode))}Q0.prototype.encoder=W0;Q0.prototype.decoder=wx;var af=require("string_decoder").StringDecoder;af.prototype.end||(af.prototype.end=function(){});function wx(t,e){af.call(this,e.enc)}wx.prototype=af.prototype;function W0(t,e){this.enc=e.enc}W0.prototype.write=function(t){return tu.from(t,this.enc)};W0.prototype.end=function(){};function Y0(t,e){this.prevStr=""}Y0.prototype.write=function(t){t=this.prevStr+t;var e=t.length-t.length%4;return this.prevStr=t.slice(e),t=t.slice(0,e),tu.from(t,"base64")};Y0.prototype.end=function(){return tu.from(this.prevStr,"base64")};function $0(t,e){}$0.prototype.write=function(t){for(var e=tu.alloc(t.length*3),r=0,n=0;n>>6),e[r++]=128+(i&63)):(e[r++]=224+(i>>>12),e[r++]=128+(i>>>6&63),e[r++]=128+(i&63))}return e.slice(0,r)};$0.prototype.end=function(){};function eh(t,e){this.acc=0,this.contBytes=0,this.accBytes=0,this.defaultCharUnicode=e.defaultCharUnicode}eh.prototype.write=function(t){for(var e=this.acc,r=this.contBytes,n=this.accBytes,i="",a=0;a0&&(i+=this.defaultCharUnicode,r=0),o<128?i+=String.fromCharCode(o):o<224?(e=o&31,r=1,n=1):o<240?(e=o&15,r=2,n=1):i+=this.defaultCharUnicode):r>0?(e=e<<6|o&63,r--,n++,r===0&&(n===2&&e<128&&e>0?i+=this.defaultCharUnicode:n===3&&e<2048?i+=this.defaultCharUnicode:i+=String.fromCharCode(e))):i+=this.defaultCharUnicode}return this.acc=e,this.contBytes=r,this.accBytes=n,i};eh.prototype.end=function(){var t=0;return this.contBytes>0&&(t+=this.defaultCharUnicode),t}});var _x=P(oh=>{"use strict";var of=no().Buffer;oh.utf16be=sf;function sf(){}sf.prototype.encoder=rh;sf.prototype.decoder=th;sf.prototype.bomAware=!0;function rh(){}rh.prototype.write=function(t){for(var e=of.from(t,"ucs2"),r=0;r=2)if(t[0]==254&&t[1]==255)r="utf-16be";else if(t[0]==255&&t[1]==254)r="utf-16le";else{for(var n=0,i=0,a=Math.min(t.length-t.length%2,64),o=0;on?r="utf-16be":i{"use strict";var jn=no().Buffer;lf.utf7=cf;lf.unicode11utf7="utf7";function cf(t,e){this.iconv=e}cf.prototype.encoder=ch;cf.prototype.decoder=uh;cf.prototype.bomAware=!0;var qC=/[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;function ch(t,e){this.iconv=e.iconv}ch.prototype.write=function(t){return jn.from(t.replace(qC,function(e){return"+"+(e==="+"?"":this.iconv.encode(e,"utf16-be").toString("base64").replace(/=+$/,""))+"-"}.bind(this)))};ch.prototype.end=function(){};function uh(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}var jC=/[A-Za-z0-9\/+]/,lh=[];for(nu=0;nu<256;nu++)lh[nu]=jC.test(String.fromCharCode(nu));var nu,UC="+".charCodeAt(0),io="-".charCodeAt(0),sh="&".charCodeAt(0);uh.prototype.write=function(t){for(var e="",r=0,n=this.inBase64,i=this.base64Accum,a=0;a0&&(t=this.iconv.decode(jn.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",t};lf.utf7imap=uf;function uf(t,e){this.iconv=e}uf.prototype.encoder=fh;uf.prototype.decoder=dh;uf.prototype.bomAware=!0;function fh(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=jn.alloc(6),this.base64AccumIdx=0}fh.prototype.write=function(t){for(var e=this.inBase64,r=this.base64Accum,n=this.base64AccumIdx,i=jn.alloc(t.length*5+10),a=0,o=0;o0&&(a+=i.write(r.slice(0,n).toString("base64").replace(/\//g,",").replace(/=+$/,""),a),n=0),i[a++]=io,e=!1),e||(i[a++]=c,c===sh&&(i[a++]=io))):(e||(i[a++]=sh,e=!0),e&&(r[n++]=c>>8,r[n++]=c&255,n==r.length&&(a+=i.write(r.toString("base64").replace(/\//g,","),a),n=0)))}return this.inBase64=e,this.base64AccumIdx=n,i.slice(0,a)};fh.prototype.end=function(){var t=jn.alloc(10),e=0;return this.inBase64&&(this.base64AccumIdx>0&&(e+=t.write(this.base64Accum.slice(0,this.base64AccumIdx).toString("base64").replace(/\//g,",").replace(/=+$/,""),e),this.base64AccumIdx=0),t[e++]=io,this.inBase64=!1),t.slice(0,e)};function dh(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}var Tx=lh.slice();Tx[",".charCodeAt(0)]=!0;dh.prototype.write=function(t){for(var e="",r=0,n=this.inBase64,i=this.base64Accum,a=0;a0&&(t=this.iconv.decode(jn.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",t}});var Ox=P(Cx=>{"use strict";var ff=no().Buffer;Cx._sbcs=ph;function ph(t,e){if(!t)throw new Error("SBCS codec is called without the data.");if(!t.chars||t.chars.length!==128&&t.chars.length!==256)throw new Error("Encoding '"+t.type+"' has incorrect 'chars' (must be of len 128 or 256)");if(t.chars.length===128){for(var r="",n=0;n<128;n++)r+=String.fromCharCode(n);t.chars=r+t.chars}this.decodeBuf=ff.from(t.chars,"ucs2");for(var i=ff.alloc(65536,e.defaultCharSingleByte.charCodeAt(0)),n=0;n{"use strict";Px.exports={10029:"maccenteuro",maccenteuro:{type:"_sbcs",chars:"\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7"},808:"cp808",ibm808:"cp808",cp808:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\u20AC\u25A0\xA0"},mik:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\xA7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ascii8bit:"ascii",usascii:"ascii",ansix34:"ascii",ansix341968:"ascii",ansix341986:"ascii",csascii:"ascii",cp367:"ascii",ibm367:"ascii",isoir6:"ascii",iso646us:"ascii",iso646irv:"ascii",us:"ascii",latin1:"iso88591",latin2:"iso88592",latin3:"iso88593",latin4:"iso88594",latin5:"iso88599",latin6:"iso885910",latin7:"iso885913",latin8:"iso885914",latin9:"iso885915",latin10:"iso885916",csisolatin1:"iso88591",csisolatin2:"iso88592",csisolatin3:"iso88593",csisolatin4:"iso88594",csisolatincyrillic:"iso88595",csisolatinarabic:"iso88596",csisolatingreek:"iso88597",csisolatinhebrew:"iso88598",csisolatin5:"iso88599",csisolatin6:"iso885910",l1:"iso88591",l2:"iso88592",l3:"iso88593",l4:"iso88594",l5:"iso88599",l6:"iso885910",l7:"iso885913",l8:"iso885914",l9:"iso885915",l10:"iso885916",isoir14:"iso646jp",isoir57:"iso646cn",isoir100:"iso88591",isoir101:"iso88592",isoir109:"iso88593",isoir110:"iso88594",isoir144:"iso88595",isoir127:"iso88596",isoir126:"iso88597",isoir138:"iso88598",isoir148:"iso88599",isoir157:"iso885910",isoir166:"tis620",isoir179:"iso885913",isoir199:"iso885914",isoir203:"iso885915",isoir226:"iso885916",cp819:"iso88591",ibm819:"iso88591",cyrillic:"iso88595",arabic:"iso88596",arabic8:"iso88596",ecma114:"iso88596",asmo708:"iso88596",greek:"iso88597",greek8:"iso88597",ecma118:"iso88597",elot928:"iso88597",hebrew:"iso88598",hebrew8:"iso88598",turkish:"iso88599",turkish8:"iso88599",thai:"iso885911",thai8:"iso885911",celtic:"iso885914",celtic8:"iso885914",isoceltic:"iso885914",tis6200:"tis620",tis62025291:"tis620",tis62025330:"tis620",1e4:"macroman",10006:"macgreek",10007:"maccyrillic",10079:"maciceland",10081:"macturkish",cspc8codepage437:"cp437",cspc775baltic:"cp775",cspc850multilingual:"cp850",cspcp852:"cp852",cspc862latinhebrew:"cp862",cpgr:"cp869",msee:"cp1250",mscyrl:"cp1251",msansi:"cp1252",msgreek:"cp1253",msturk:"cp1254",mshebr:"cp1255",msarab:"cp1256",winbaltrim:"cp1257",cp20866:"koi8r",20866:"koi8r",ibm878:"koi8r",cskoi8r:"koi8r",cp21866:"koi8u",21866:"koi8u",ibm1168:"koi8u",strk10482002:"rk1048",tcvn5712:"tcvn",tcvn57121:"tcvn",gb198880:"iso646cn",cn:"iso646cn",csiso14jisc6220ro:"iso646jp",jisc62201969ro:"iso646jp",jp:"iso646jp",cshproman8:"hproman8",r8:"hproman8",roman8:"hproman8",xroman8:"hproman8",ibm1051:"hproman8",mac:"macintosh",csmacintosh:"macintosh"}});var Fx=P((zW,Bx)=>{"use strict";Bx.exports={437:"cp437",737:"cp737",775:"cp775",850:"cp850",852:"cp852",855:"cp855",856:"cp856",857:"cp857",858:"cp858",860:"cp860",861:"cp861",862:"cp862",863:"cp863",864:"cp864",865:"cp865",866:"cp866",869:"cp869",874:"windows874",922:"cp922",1046:"cp1046",1124:"cp1124",1125:"cp1125",1129:"cp1129",1133:"cp1133",1161:"cp1161",1162:"cp1162",1163:"cp1163",1250:"windows1250",1251:"windows1251",1252:"windows1252",1253:"windows1253",1254:"windows1254",1255:"windows1255",1256:"windows1256",1257:"windows1257",1258:"windows1258",28591:"iso88591",28592:"iso88592",28593:"iso88593",28594:"iso88594",28595:"iso88595",28596:"iso88596",28597:"iso88597",28598:"iso88598",28599:"iso88599",28600:"iso885910",28601:"iso885911",28603:"iso885913",28604:"iso885914",28605:"iso885915",28606:"iso885916",windows874:{type:"_sbcs",chars:"\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},win874:"windows874",cp874:"windows874",windows1250:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\xA0\u02C7\u02D8\u0141\xA4\u0104\xA6\xA7\xA8\xA9\u015E\xAB\xAC\xAD\xAE\u017B\xB0\xB1\u02DB\u0142\xB4\xB5\xB6\xB7\xB8\u0105\u015F\xBB\u013D\u02DD\u013E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"},win1250:"windows1250",cp1250:"windows1250",windows1251:{type:"_sbcs",chars:"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\xA0\u040E\u045E\u0408\xA4\u0490\xA6\xA7\u0401\xA9\u0404\xAB\xAC\xAD\xAE\u0407\xB0\xB1\u0406\u0456\u0491\xB5\xB6\xB7\u0451\u2116\u0454\xBB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},win1251:"windows1251",cp1251:"windows1251",windows1252:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},win1252:"windows1252",cp1252:"windows1252",windows1253:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0385\u0386\xA3\xA4\xA5\xA6\xA7\xA8\xA9\uFFFD\xAB\xAC\xAD\xAE\u2015\xB0\xB1\xB2\xB3\u0384\xB5\xB6\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"},win1253:"windows1253",cp1253:"windows1253",windows1254:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"},win1254:"windows1254",cp1254:"windows1254",windows1255:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\xA1\xA2\xA3\u20AA\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\xBF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"},win1255:"windows1255",cp1255:"windows1255",windows1256:{type:"_sbcs",chars:"\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\xA0\u060C\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\u06BE\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\u061B\xBB\xBC\xBD\xBE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\xD7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\xE0\u0644\xE2\u0645\u0646\u0647\u0648\xE7\xE8\xE9\xEA\xEB\u0649\u064A\xEE\xEF\u064B\u064C\u064D\u064E\xF4\u064F\u0650\xF7\u0651\xF9\u0652\xFB\xFC\u200E\u200F\u06D2"},win1256:"windows1256",cp1256:"windows1256",windows1257:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\xA8\u02C7\xB8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\xAF\u02DB\uFFFD\xA0\uFFFD\xA2\xA3\xA4\uFFFD\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u02D9"},win1257:"windows1257",cp1257:"windows1257",windows1258:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},win1258:"windows1258",cp1258:"windows1258",iso88591:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},cp28591:"iso88591",iso88592:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u02D8\u0141\xA4\u013D\u015A\xA7\xA8\u0160\u015E\u0164\u0179\xAD\u017D\u017B\xB0\u0105\u02DB\u0142\xB4\u013E\u015B\u02C7\xB8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"},cp28592:"iso88592",iso88593:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0126\u02D8\xA3\xA4\uFFFD\u0124\xA7\xA8\u0130\u015E\u011E\u0134\xAD\uFFFD\u017B\xB0\u0127\xB2\xB3\xB4\xB5\u0125\xB7\xB8\u0131\u015F\u011F\u0135\xBD\uFFFD\u017C\xC0\xC1\xC2\uFFFD\xC4\u010A\u0108\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\uFFFD\xD1\xD2\xD3\xD4\u0120\xD6\xD7\u011C\xD9\xDA\xDB\xDC\u016C\u015C\xDF\xE0\xE1\xE2\uFFFD\xE4\u010B\u0109\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\uFFFD\xF1\xF2\xF3\xF4\u0121\xF6\xF7\u011D\xF9\xFA\xFB\xFC\u016D\u015D\u02D9"},cp28593:"iso88593",iso88594:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0138\u0156\xA4\u0128\u013B\xA7\xA8\u0160\u0112\u0122\u0166\xAD\u017D\xAF\xB0\u0105\u02DB\u0157\xB4\u0129\u013C\u02C7\xB8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\u012A\u0110\u0145\u014C\u0136\xD4\xD5\xD6\xD7\xD8\u0172\xDA\xDB\xDC\u0168\u016A\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\u012B\u0111\u0146\u014D\u0137\xF4\xF5\xF6\xF7\xF8\u0173\xFA\xFB\xFC\u0169\u016B\u02D9"},cp28594:"iso88594",iso88595:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F"},cp28595:"iso88595",iso88596:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\uFFFD\uFFFD\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\xAD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"},cp28596:"iso88596",iso88597:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u2018\u2019\xA3\u20AC\u20AF\xA6\xA7\xA8\xA9\u037A\xAB\xAC\xAD\uFFFD\u2015\xB0\xB1\xB2\xB3\u0384\u0385\u0386\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"},cp28597:"iso88597",iso88598:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"},cp28598:"iso88598",iso88599:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"},cp28599:"iso88599",iso885910:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0112\u0122\u012A\u0128\u0136\xA7\u013B\u0110\u0160\u0166\u017D\xAD\u016A\u014A\xB0\u0105\u0113\u0123\u012B\u0129\u0137\xB7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\xCF\xD0\u0145\u014C\xD3\xD4\xD5\xD6\u0168\xD8\u0172\xDA\xDB\xDC\xDD\xDE\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\xEF\xF0\u0146\u014D\xF3\xF4\xF5\xF6\u0169\xF8\u0173\xFA\xFB\xFC\xFD\xFE\u0138"},cp28600:"iso885910",iso885911:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},cp28601:"iso885911",iso885913:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u201D\xA2\xA3\xA4\u201E\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\u201C\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u2019"},cp28603:"iso885913",iso885914:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u1E02\u1E03\xA3\u010A\u010B\u1E0A\xA7\u1E80\xA9\u1E82\u1E0B\u1EF2\xAD\xAE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\xB6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0174\xD1\xD2\xD3\xD4\xD5\xD6\u1E6A\xD8\xD9\xDA\xDB\xDC\xDD\u0176\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0175\xF1\xF2\xF3\xF4\xF5\xF6\u1E6B\xF8\xF9\xFA\xFB\xFC\xFD\u0177\xFF"},cp28604:"iso885914",iso885915:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\u0160\xA7\u0161\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u017D\xB5\xB6\xB7\u017E\xB9\xBA\xBB\u0152\u0153\u0178\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},cp28605:"iso885915",iso885916:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0105\u0141\u20AC\u201E\u0160\xA7\u0161\xA9\u0218\xAB\u0179\xAD\u017A\u017B\xB0\xB1\u010C\u0142\u017D\u201D\xB6\xB7\u017E\u010D\u0219\xBB\u0152\u0153\u0178\u017C\xC0\xC1\xC2\u0102\xC4\u0106\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0110\u0143\xD2\xD3\xD4\u0150\xD6\u015A\u0170\xD9\xDA\xDB\xDC\u0118\u021A\xDF\xE0\xE1\xE2\u0103\xE4\u0107\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0111\u0144\xF2\xF3\xF4\u0151\xF6\u015B\u0171\xF9\xFA\xFB\xFC\u0119\u021B\xFF"},cp28606:"iso885916",cp437:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm437:"cp437",csibm437:"cp437",cp737:{type:"_sbcs",chars:"\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\xB1\u2265\u2264\u03AA\u03AB\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm737:"cp737",csibm737:"cp737",cp775:{type:"_sbcs",chars:"\u0106\xFC\xE9\u0101\xE4\u0123\xE5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\xC4\xC5\xC9\xE6\xC6\u014D\xF6\u0122\xA2\u015A\u015B\xD6\xDC\xF8\xA3\xD8\xD7\xA4\u0100\u012A\xF3\u017B\u017C\u017A\u201D\xA6\xA9\xAE\xAC\xBD\xBC\u0141\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\xD3\xDF\u014C\u0143\xF5\xD5\xB5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\xAD\xB1\u201C\xBE\xB6\xA7\xF7\u201E\xB0\u2219\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm775:"cp775",csibm775:"cp775",cp850:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u0131\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm850:"cp850",csibm850:"cp850",cp852:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\u016F\u0107\xE7\u0142\xEB\u0150\u0151\xEE\u0179\xC4\u0106\xC9\u0139\u013A\xF4\xF6\u013D\u013E\u015A\u015B\xD6\xDC\u0164\u0165\u0141\xD7\u010D\xE1\xED\xF3\xFA\u0104\u0105\u017D\u017E\u0118\u0119\xAC\u017A\u010C\u015F\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u0111\u0110\u010E\xCB\u010F\u0147\xCD\xCE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\xD3\xDF\xD4\u0143\u0144\u0148\u0160\u0161\u0154\xDA\u0155\u0170\xFD\xDD\u0163\xB4\xAD\u02DD\u02DB\u02C7\u02D8\xA7\xF7\xB8\xB0\xA8\u02D9\u0171\u0158\u0159\u25A0\xA0"},ibm852:"cp852",csibm852:"cp852",cp855:{type:"_sbcs",chars:"\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\xAD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\xA7\u25A0\xA0"},ibm855:"cp855",csibm855:"cp855",cp856:{type:"_sbcs",chars:"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\xA3\uFFFD\xD7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAE\xAC\xBD\xBC\uFFFD\xAB\xBB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\xA6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xB5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm856:"cp856",csibm856:"cp856",cp857:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\u0131\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\u0130\xD6\xDC\xF8\xA3\xD8\u015E\u015F\xE1\xED\xF3\xFA\xF1\xD1\u011E\u011F\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xBA\xAA\xCA\xCB\xC8\uFFFD\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\uFFFD\xD7\xDA\xDB\xD9\xEC\xFF\xAF\xB4\xAD\xB1\uFFFD\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm857:"cp857",csibm857:"cp857",cp858:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u20AC\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm858:"cp858",csibm858:"cp858",cp860:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE3\xE0\xC1\xE7\xEA\xCA\xE8\xCD\xD4\xEC\xC3\xC2\xC9\xC0\xC8\xF4\xF5\xF2\xDA\xF9\xCC\xD5\xDC\xA2\xA3\xD9\u20A7\xD3\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xD2\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm860:"cp860",csibm860:"cp860",cp861:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xD0\xF0\xDE\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xFE\xFB\xDD\xFD\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xC1\xCD\xD3\xDA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm861:"cp861",csibm861:"cp861",cp862:{type:"_sbcs",chars:"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm862:"cp862",csibm862:"cp862",cp863:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xC2\xE0\xB6\xE7\xEA\xEB\xE8\xEF\xEE\u2017\xC0\xA7\xC9\xC8\xCA\xF4\xCB\xCF\xFB\xF9\xA4\xD4\xDC\xA2\xA3\xD9\xDB\u0192\xA6\xB4\xF3\xFA\xA8\xB8\xB3\xAF\xCE\u2310\xAC\xBD\xBC\xBE\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm863:"cp863",csibm863:"cp863",cp864:{type:"_sbcs",chars:`\0\x07\b -\v\f\r\x1B !"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xB0\xB7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\xB1\xBD\xBC\u2248\xAB\xBB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\xA0\xAD\uFE82\xA3\xA4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\xA2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\xA6\xAC\xF7\xD7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD`},ibm864:"cp864",csibm864:"cp864",cp865:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xA4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm865:"cp865",csibm865:"cp865",cp866:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\xA4\u25A0\xA0"},ibm866:"cp866",csibm866:"cp866",cp869:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\xB7\xAC\xA6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\xA9\u038F\xB2\xB3\u03AC\xA3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\xBD\u0398\u0399\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\xAD\xB1\u03C5\u03C6\u03C7\xA7\u03C8\u0385\xB0\xA8\u03C9\u03CB\u03B0\u03CE\u25A0\xA0"},ibm869:"cp869",csibm869:"cp869",cp922:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\u203E\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0160\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\u017D\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0161\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\u017E\xFF"},ibm922:"cp922",csibm922:"cp922",cp1046:{type:"_sbcs",chars:"\uFE88\xD7\xF7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\x88\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\xA0\uF8FA\uF8F9\uF8F8\xA4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\xAD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD"},ibm1046:"cp1046",csibm1046:"cp1046",cp1124:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F"},ibm1124:"cp1124",csibm1124:"cp1124",cp1125:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\xB7\u221A\u2116\xA4\u25A0\xA0"},ibm1125:"cp1125",csibm1125:"cp1125",cp1129:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},ibm1129:"cp1129",csibm1129:"cp1129",cp1133:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\xA2\xAC\xA6\uFFFD"},ibm1133:"cp1133",csibm1133:"cp1133",cp1161:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\xA2\xAC\xA6\xA0"},ibm1161:"cp1161",csibm1161:"cp1161",cp1162:{type:"_sbcs",chars:"\u20AC\x81\x82\x83\x84\u2026\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},ibm1162:"cp1162",csibm1162:"cp1162",cp1163:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},ibm1163:"cp1163",csibm1163:"cp1163",maccroatian:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u2126\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uFFFD\xA9\u2044\xA4\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7"},maccyrillic:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\xA2\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4"},macgreek:{type:"_sbcs",chars:"\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\xAD\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\u0387\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026\xA0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD"},maciceland:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macroman:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macromania:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u015E\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\u0103\u015F\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\u0162\u0163\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macthai:{type:"_sbcs",chars:"\xAB\xBB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\xAE\xA9\uFFFD\uFFFD\uFFFD\uFFFD"},macturkish:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\uFFFD\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macukraine:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\u0490\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4"},koi8r:{type:"_sbcs",chars:"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},koi8u:{type:"_sbcs",chars:"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},koi8ru:{type:"_sbcs",chars:"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},koi8t:{type:"_sbcs",chars:"\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\xA4\u04E3\xA6\xA7\uFFFD\uFFFD\uFFFD\xAB\xAC\xAD\xAE\uFFFD\xB0\xB1\xB2\u0401\uFFFD\u04E2\xB6\xB7\uFFFD\u2116\uFFFD\xBB\uFFFD\uFFFD\uFFFD\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},armscii8:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\u0587\u0589)(\xBB\xAB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD"},rk1048:{type:"_sbcs",chars:"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\xA0\u04B0\u04B1\u04D8\xA4\u04E8\xA6\xA7\u0401\xA9\u0492\xAB\xAC\xAD\xAE\u04AE\xB0\xB1\u0406\u0456\u04E9\xB5\xB6\xB7\u0451\u2116\u0493\xBB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},tcvn:{type:"_sbcs",chars:`\0\xDA\u1EE4\u1EEA\u1EEC\u1EEE\x07\b -\v\f\r\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\xDD\u1EF4\x1B !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xC0\u1EA2\xC3\xC1\u1EA0\u1EB6\u1EAC\xC8\u1EBA\u1EBC\xC9\u1EB8\u1EC6\xCC\u1EC8\u0128\xCD\u1ECA\xD2\u1ECE\xD5\xD3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\xD9\u1EE6\u0168\xA0\u0102\xC2\xCA\xD4\u01A0\u01AF\u0110\u0103\xE2\xEA\xF4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\xE0\u1EA3\xE3\xE1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\xE8\u1EC2\u1EBB\u1EBD\xE9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\xEC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\xED\u1ECB\xF2\u1ED4\u1ECF\xF5\xF3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\xF9\u1ED6\u1EE7\u0169\xFA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\xFD\u1EF5\u1ED0`},georgianacademy:{type:"_sbcs",chars:"\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},georgianps:{type:"_sbcs",chars:"\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},pt154:{type:"_sbcs",chars:"\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\xA0\u040E\u045E\u0408\u04E8\u0498\u04B0\xA7\u0401\xA9\u04D8\xAB\xAC\u04EF\xAE\u049C\xB0\u04B1\u0406\u0456\u0499\u04E9\xB6\xB7\u0451\u2116\u04D9\xBB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},viscii:{type:"_sbcs",chars:`\0\u1EB2\u1EB4\u1EAA\x07\b -\v\f\r\u1EF6\u1EF8\x1B\u1EF4 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\xD5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\xC0\xC1\xC2\xC3\u1EA2\u0102\u1EB3\u1EB5\xC8\xC9\xCA\u1EBA\xCC\xCD\u0128\u1EF3\u0110\u1EE9\xD2\xD3\xD4\u1EA1\u1EF7\u1EEB\u1EED\xD9\xDA\u1EF9\u1EF5\xDD\u1EE1\u01B0\xE0\xE1\xE2\xE3\u1EA3\u0103\u1EEF\u1EAB\xE8\xE9\xEA\u1EBB\xEC\xED\u0129\u1EC9\u0111\u1EF1\xF2\xF3\xF4\xF5\u1ECF\u1ECD\u1EE5\xF9\xFA\u0169\u1EE7\xFD\u1EE3\u1EEE`},iso646cn:{type:"_sbcs",chars:`\0\x07\b -\v\f\r\x1B !"#\xA5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD`},iso646jp:{type:"_sbcs",chars:`\0\x07\b -\v\f\r\x1B !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\xA5]^_\`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD`},hproman8:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xC0\xC2\xC8\xCA\xCB\xCE\xCF\xB4\u02CB\u02C6\xA8\u02DC\xD9\xDB\u20A4\xAF\xDD\xFD\xB0\xC7\xE7\xD1\xF1\xA1\xBF\xA4\xA3\xA5\xA7\u0192\xA2\xE2\xEA\xF4\xFB\xE1\xE9\xF3\xFA\xE0\xE8\xF2\xF9\xE4\xEB\xF6\xFC\xC5\xEE\xD8\xC6\xE5\xED\xF8\xE6\xC4\xEC\xD6\xDC\xC9\xEF\xDF\xD4\xC1\xC3\xE3\xD0\xF0\xCD\xCC\xD3\xD2\xD5\xF5\u0160\u0161\xDA\u0178\xFF\xDE\xFE\xB7\xB5\xB6\xBE\u2014\xBC\xBD\xAA\xBA\xAB\u25A0\xBB\xB1\uFFFD"},macintosh:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},ascii:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"},tis620:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"}}});var Ix=P(Rx=>{"use strict";var is=no().Buffer;Rx._dbcs=ki;var At=-1,Lx=-2,Ht=-10,Un=-1e3,ns=new Array(256),iu=-1;for(df=0;df<256;df++)ns[df]=At;var df;function ki(t,e){if(this.encodingName=t.encodingName,!t)throw new Error("DBCS codec is called without the data.");if(!t.table)throw new Error("Encoding '"+this.encodingName+"' has no data.");var r=t.table();this.decodeTables=[],this.decodeTables[0]=ns.slice(0),this.decodeTableSeq=[];for(var n=0;n0;t>>=8)e.push(t&255);e.length==0&&e.push(0);for(var r=this.decodeTables[0],n=e.length-1;n>0;n--){var i=r[e[n]];if(i==At)r[e[n]]=Un-this.decodeTables.length,this.decodeTables.push(r=ns.slice(0));else if(i<=Un)r=this.decodeTables[Un-i];else throw new Error("Overwrite byte in "+this.encodingName+", addr: "+t.toString(16))}return r};ki.prototype._addDecodeChunk=function(t){var e=parseInt(t[0],16),r=this._getDecodeTrieNode(e);e=e&255;for(var n=1;n255)throw new Error("Incorrect chunk in "+this.encodingName+" at addr "+t[0]+": too long"+e)};ki.prototype._getEncodeBucket=function(t){var e=t>>8;return this.encodeTable[e]===void 0&&(this.encodeTable[e]=ns.slice(0)),this.encodeTable[e]};ki.prototype._setEncodeChar=function(t,e){var r=this._getEncodeBucket(t),n=t&255;r[n]<=Ht?this.encodeTableSeq[Ht-r[n]][iu]=e:r[n]==At&&(r[n]=e)};ki.prototype._setEncodeSequence=function(t,e){var r=t[0],n=this._getEncodeBucket(r),i=r&255,a;n[i]<=Ht?a=this.encodeTableSeq[Ht-n[i]]:(a={},n[i]!==At&&(a[iu]=n[i]),n[i]=Ht-this.encodeTableSeq.length,this.encodeTableSeq.push(a));for(var o=1;o=0?this._setEncodeChar(a,o):a<=Un?this._fillEncodeTable(Un-a,o<<8,r):a<=Ht&&this._setEncodeSequence(this.decodeTableSeq[Ht-a],o))}};function pf(t,e){this.leadSurrogate=-1,this.seqObj=void 0,this.encodeTable=e.encodeTable,this.encodeTableSeq=e.encodeTableSeq,this.defaultCharSingleByte=e.defCharSB,this.gb18030=e.gb18030}pf.prototype.write=function(t){for(var e=is.alloc(t.length*(this.gb18030?4:3)),r=this.leadSurrogate,n=this.seqObj,i=-1,a=0,o=0;;){if(i===-1){if(a==t.length)break;var c=t.charCodeAt(a++)}else{var c=i;i=-1}if(55296<=c&&c<57344)if(c<56320)if(r===-1){r=c;continue}else r=c,c=At;else r!==-1?(c=65536+(r-55296)*1024+(c-56320),r=-1):c=At;else r!==-1&&(i=c,c=At,r=-1);var u=At;if(n!==void 0&&c!=At){var s=n[c];if(typeof s=="object"){n=s;continue}else typeof s=="number"?u=s:s==null&&(s=n[iu],s!==void 0&&(u=s,i=c));n=void 0}else if(c>=0){var f=this.encodeTable[c>>8];if(f!==void 0&&(u=f[c&255]),u<=Ht){n=this.encodeTableSeq[Ht-u];continue}if(u==At&&this.gb18030){var m=bh(this.gb18030.uChars,c);if(m!=-1){var u=this.gb18030.gbChars[m]+(c-this.gb18030.uChars[m]);e[o++]=129+Math.floor(u/12600),u=u%12600,e[o++]=48+Math.floor(u/1260),u=u%1260,e[o++]=129+Math.floor(u/10),u=u%10,e[o++]=48+u;continue}}}u===At&&(u=this.defaultCharSingleByte),u<256?e[o++]=u:u<65536?(e[o++]=u>>8,e[o++]=u&255):(e[o++]=u>>16,e[o++]=u>>8&255,e[o++]=u&255)}return this.seqObj=n,this.leadSurrogate=r,e.slice(0,o)};pf.prototype.end=function(){if(!(this.leadSurrogate===-1&&this.seqObj===void 0)){var t=is.alloc(10),e=0;if(this.seqObj){var r=this.seqObj[iu];r!==void 0&&(r<256?t[e++]=r:(t[e++]=r>>8,t[e++]=r&255)),this.seqObj=void 0}return this.leadSurrogate!==-1&&(t[e++]=this.defaultCharSingleByte,this.leadSurrogate=-1),t.slice(0,e)}};pf.prototype.findIdx=bh;function mh(t,e){this.nodeIdx=0,this.prevBuf=is.alloc(0),this.decodeTables=e.decodeTables,this.decodeTableSeq=e.decodeTableSeq,this.defaultCharUnicode=e.defaultCharUnicode,this.gb18030=e.gb18030}mh.prototype.write=function(t){var e=is.alloc(t.length*2),r=this.nodeIdx,n=this.prevBuf,i=this.prevBuf.length,a=-this.prevBuf.length,o;i>0&&(n=is.concat([n,t.slice(0,10)]));for(var c=0,u=0;c=0?t[c]:n[c+i],o=this.decodeTables[r][s];if(!(o>=0))if(o===At)c=a,o=this.defaultCharUnicode.charCodeAt(0);else if(o===Lx){var f=a>=0?t.slice(a,c+1):n.slice(a+i,c+1+i),m=(f[0]-129)*12600+(f[1]-48)*1260+(f[2]-129)*10+(f[3]-48),w=bh(this.gb18030.gbChars,m);o=this.gb18030.uChars[w]+m-this.gb18030.gbChars[w]}else if(o<=Un){r=Un-o;continue}else if(o<=Ht){for(var T=this.decodeTableSeq[Ht-o],A=0;A>8;o=T[T.length-1]}else throw new Error("iconv-lite internal error: invalid decoding table value "+o+" at "+r+"/"+s);if(o>65535){o-=65536;var O=55296+Math.floor(o/1024);e[u++]=O&255,e[u++]=O>>8,o=56320+o%1024}e[u++]=o&255,e[u++]=o>>8,r=0,a=c+1}return this.nodeIdx=r,this.prevBuf=a>=0?t.slice(a):n.slice(a+i),e.slice(0,u).toString("ucs2")};mh.prototype.end=function(){for(var t="";this.prevBuf.length>0;){t+=this.defaultCharUnicode;var e=this.prevBuf.slice(1);this.prevBuf=is.alloc(0),this.nodeIdx=0,e.length>0&&(t+=this.write(e))}return this.nodeIdx=0,t};function bh(t,e){if(t[0]>e)return-1;for(var r=0,n=t.length;r{HC.exports=[["0","\0",128],["a1","\uFF61",62],["8140","\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008",9,"\uFF0B\uFF0D\xB1\xD7"],["8180","\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"],["81b8","\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"],["81c8","\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"],["81da","\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"],["81f0","\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"],["81fc","\u25EF"],["824f","\uFF10",9],["8260","\uFF21",25],["8281","\uFF41",25],["829f","\u3041",82],["8340","\u30A1",62],["8380","\u30E0",22],["839f","\u0391",16,"\u03A3",6],["83bf","\u03B1",16,"\u03C3",6],["8440","\u0410",5,"\u0401\u0416",25],["8470","\u0430",5,"\u0451\u0436",7],["8480","\u043E",17],["849f","\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"],["8740","\u2460",19,"\u2160",9],["875f","\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"],["877e","\u337B"],["8780","\u301D\u301F\u2116\u33CD\u2121\u32A4",4,"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"],["889f","\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"],["8940","\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186"],["8980","\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"],["8a40","\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B"],["8a80","\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"],["8b40","\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551"],["8b80","\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"],["8c40","\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8"],["8c80","\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"],["8d40","\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D"],["8d80","\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"],["8e40","\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62"],["8e80","\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"],["8f40","\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3"],["8f80","\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"],["9040","\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8"],["9080","\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"],["9140","\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB"],["9180","\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"],["9240","\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4"],["9280","\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"],["9340","\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC"],["9380","\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"],["9440","\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885"],["9480","\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"],["9540","\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577"],["9580","\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"],["9640","\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6"],["9680","\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"],["9740","\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32"],["9780","\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"],["9840","\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"],["989f","\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"],["9940","\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED"],["9980","\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"],["9a40","\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638"],["9a80","\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"],["9b40","\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80"],["9b80","\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"],["9c40","\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060"],["9c80","\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"],["9d40","\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B"],["9d80","\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"],["9e40","\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E"],["9e80","\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"],["9f40","\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF"],["9f80","\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"],["e040","\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD"],["e080","\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"],["e140","\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF"],["e180","\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"],["e240","\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0"],["e280","\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"],["e340","\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37"],["e380","\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"],["e440","\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264"],["e480","\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"],["e540","\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC"],["e580","\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"],["e640","\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7"],["e680","\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"],["e740","\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C"],["e780","\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"],["e840","\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599"],["e880","\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"],["e940","\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43"],["e980","\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"],["ea40","\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF"],["ea80","\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199"],["ed40","\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F"],["ed80","\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"],["ee40","\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559"],["ee80","\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"],["eeef","\u2170",9,"\uFFE2\uFFE4\uFF07\uFF02"],["f040","\uE000",62],["f080","\uE03F",124],["f140","\uE0BC",62],["f180","\uE0FB",124],["f240","\uE178",62],["f280","\uE1B7",124],["f340","\uE234",62],["f380","\uE273",124],["f440","\uE2F0",62],["f480","\uE32F",124],["f540","\uE3AC",62],["f580","\uE3EB",124],["f640","\uE468",62],["f680","\uE4A7",124],["f740","\uE524",62],["f780","\uE563",124],["f840","\uE5E0",62],["f880","\uE61F",124],["f940","\uE69C"],["fa40","\u2170",9,"\u2160",9,"\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A"],["fa80","\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F"],["fb40","\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19"],["fb80","\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9"],["fc40","\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"]]});var Dx=P((KW,zC)=>{zC.exports=[["0","\0",127],["8ea1","\uFF61",62],["a1a1","\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008",9,"\uFF0B\uFF0D\xB1\xD7\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7"],["a2a1","\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"],["a2ba","\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"],["a2ca","\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"],["a2dc","\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"],["a2f2","\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"],["a2fe","\u25EF"],["a3b0","\uFF10",9],["a3c1","\uFF21",25],["a3e1","\uFF41",25],["a4a1","\u3041",82],["a5a1","\u30A1",85],["a6a1","\u0391",16,"\u03A3",6],["a6c1","\u03B1",16,"\u03C3",6],["a7a1","\u0410",5,"\u0401\u0416",25],["a7d1","\u0430",5,"\u0451\u0436",25],["a8a1","\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"],["ada1","\u2460",19,"\u2160",9],["adc0","\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"],["addf","\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4",4,"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"],["b0a1","\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"],["b1a1","\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC"],["b2a1","\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"],["b3a1","\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431"],["b4a1","\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"],["b5a1","\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC"],["b6a1","\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"],["b7a1","\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372"],["b8a1","\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"],["b9a1","\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC"],["baa1","\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"],["bba1","\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642"],["bca1","\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"],["bda1","\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F"],["bea1","\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"],["bfa1","\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE"],["c0a1","\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"],["c1a1","\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E"],["c2a1","\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"],["c3a1","\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5"],["c4a1","\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"],["c5a1","\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230"],["c6a1","\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"],["c7a1","\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6"],["c8a1","\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"],["c9a1","\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D"],["caa1","\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"],["cba1","\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80"],["cca1","\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"],["cda1","\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483"],["cea1","\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"],["cfa1","\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"],["d0a1","\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"],["d1a1","\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8"],["d2a1","\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"],["d3a1","\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709"],["d4a1","\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"],["d5a1","\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53"],["d6a1","\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"],["d7a1","\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A"],["d8a1","\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"],["d9a1","\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC"],["daa1","\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"],["dba1","\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD"],["dca1","\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"],["dda1","\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE"],["dea1","\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"],["dfa1","\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC"],["e0a1","\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"],["e1a1","\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670"],["e2a1","\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"],["e3a1","\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50"],["e4a1","\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"],["e5a1","\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A"],["e6a1","\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"],["e7a1","\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9"],["e8a1","\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"],["e9a1","\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759"],["eaa1","\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"],["eba1","\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B"],["eca1","\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"],["eda1","\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8"],["eea1","\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"],["efa1","\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E"],["f0a1","\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"],["f1a1","\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7"],["f2a1","\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"],["f3a1","\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0"],["f4a1","\u582F\u69C7\u9059\u7464\u51DC\u7199"],["f9a1","\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7"],["faa1","\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"],["fba1","\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA"],["fca1","\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"],["fcf1","\u2170",9,"\uFFE2\uFFE4\uFF07\uFF02"],["8fa2af","\u02D8\u02C7\xB8\u02D9\u02DD\xAF\u02DB\u02DA\uFF5E\u0384\u0385"],["8fa2c2","\xA1\xA6\xBF"],["8fa2eb","\xBA\xAA\xA9\xAE\u2122\xA4\u2116"],["8fa6e1","\u0386\u0388\u0389\u038A\u03AA"],["8fa6e7","\u038C"],["8fa6e9","\u038E\u03AB"],["8fa6ec","\u038F"],["8fa6f1","\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"],["8fa7c2","\u0402",10,"\u040E\u040F"],["8fa7f2","\u0452",10,"\u045E\u045F"],["8fa9a1","\xC6\u0110"],["8fa9a4","\u0126"],["8fa9a6","\u0132"],["8fa9a8","\u0141\u013F"],["8fa9ab","\u014A\xD8\u0152"],["8fa9af","\u0166\xDE"],["8fa9c1","\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\xF8\u0153\xDF\u0167\xFE"],["8faaa1","\xC1\xC0\xC4\xC2\u0102\u01CD\u0100\u0104\xC5\xC3\u0106\u0108\u010C\xC7\u010A\u010E\xC9\xC8\xCB\xCA\u011A\u0116\u0112\u0118"],["8faaba","\u011C\u011E\u0122\u0120\u0124\xCD\xCC\xCF\xCE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\xD1\xD3\xD2\xD6\xD4\u01D1\u0150\u014C\xD5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\xDA\xD9\xDC\xDB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\xDD\u0178\u0176\u0179\u017D\u017B"],["8faba1","\xE1\xE0\xE4\xE2\u0103\u01CE\u0101\u0105\xE5\xE3\u0107\u0109\u010D\xE7\u010B\u010F\xE9\xE8\xEB\xEA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F"],["8fabbd","\u0121\u0125\xED\xEC\xEF\xEE\u01D0"],["8fabc5","\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\xF1\xF3\xF2\xF6\xF4\u01D2\u0151\u014D\xF5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\xFA\xF9\xFC\xFB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\xFD\xFF\u0177\u017A\u017E\u017C"],["8fb0a1","\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"],["8fb1a1","\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090"],["8fb2a1","\u5092\u5093\u5094\u5096\u509B\u509C\u509E",4,"\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2"],["8fb3a1","\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B"],["8fb4a1","\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"],["8fb5a1","\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2"],["8fb6a1","\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D",5,"\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4",4,"\u56F1\u56EB\u56ED"],["8fb7a1","\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D",4,"\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1"],["8fb8a1","\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D"],["8fb9a1","\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF"],["8fbaa1","\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6",4,"\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69"],["8fbba1","\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4"],["8fbca1","\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A",4,"\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"],["8fbda1","\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0",4,"\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7"],["8fbea1","\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110",4,"\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5"],["8fbfa1","\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375"],["8fc0a1","\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"],["8fc1a1","\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D"],["8fc2a1","\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D"],["8fc3a1","\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E",4,"\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF"],["8fc4a1","\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"],["8fc5a1","\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D"],["8fc6a1","\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6"],["8fc7a1","\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E"],["8fc8a1","\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA"],["8fc9a1","\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094",4,"\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103",4,"\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160"],["8fcaa1","\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB"],["8fcba1","\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD"],["8fcca1","\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428",9,"\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"],["8fcda1","\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579",5,"\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639"],["8fcea1","\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2",6,"\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762"],["8fcfa1","\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3"],["8fd0a1","\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"],["8fd1a1","\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30"],["8fd2a1","\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59",5],["8fd3a1","\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D"],["8fd4a1","\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2",4,"\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"],["8fd5a1","\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE"],["8fd6a1","\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246"],["8fd7a1","\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378"],["8fd8a1","\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3"],["8fd9a1","\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F",4,"\u8556\u8559\u855C",6,"\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC"],["8fdaa1","\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660",4,"\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723"],["8fdba1","\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783",6,"\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835"],["8fdca1","\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA",4,"\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"],["8fdda1","\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4",4,"\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3"],["8fdea1","\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42",4,"\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86"],["8fdfa1","\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22"],["8fe0a1","\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"],["8fe1a1","\u8F43\u8F47\u8F4F\u8F51",4,"\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3"],["8fe2a1","\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF"],["8fe3a1","\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC",5,"\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275",4,"\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297"],["8fe4a1","\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF",4,"\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"],["8fe5a1","\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9",4,"\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579"],["8fe6a1","\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702"],["8fe7a1","\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826"],["8fe8a1","\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931",4,"\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5"],["8fe9a1","\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF",4],["8feaa1","\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A",4,"\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8"],["8feba1","\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26",4,"\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B"],["8feca1","\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"],["8feda1","\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43",4,"\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D",4,"\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5"]]});var hf=P((VW,GC)=>{GC.exports=[["0","\0",127,"\u20AC"],["8140","\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A",5,"\u4E72\u4E74",9,"\u4E7F",6,"\u4E87\u4E8A"],["8180","\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02",6,"\u4F0B\u4F0C\u4F12",4,"\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E",4,"\u4F44\u4F45\u4F47",5,"\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2"],["8240","\u4FA4\u4FAB\u4FAD\u4FB0",4,"\u4FB6",8,"\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2",4,"\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF",11],["8280","\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F",10,"\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050",4,"\u5056\u5057\u5058\u5059\u505B\u505D",7,"\u5066",5,"\u506D",8,"\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E",20,"\u50A4\u50A6\u50AA\u50AB\u50AD",4,"\u50B3",6,"\u50BC"],["8340","\u50BD",17,"\u50D0",5,"\u50D7\u50D8\u50D9\u50DB",10,"\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6",4,"\u50FC",9,"\u5108"],["8380","\u5109\u510A\u510C",5,"\u5113",13,"\u5122",28,"\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D",4,"\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6",4,"\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2",5],["8440","\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5",5,"\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244",5,"\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258"],["8480","\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273",9,"\u527E\u5280\u5283",4,"\u5289",6,"\u5291\u5292\u5294",6,"\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4",9,"\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9",5,"\u52E0\u52E1\u52E2\u52E3\u52E5",10,"\u52F1",7,"\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E"],["8540","\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F",9,"\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F"],["8580","\u5390",4,"\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF",6,"\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3",4,"\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D",4,"\u5463\u5465\u5467\u5469",7,"\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1"],["8640","\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0",4,"\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4",5,"\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A",4,"\u5512\u5513\u5515",5,"\u551C\u551D\u551E\u551F\u5521\u5525\u5526"],["8680","\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B",4,"\u5551\u5552\u5553\u5554\u5557",4,"\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F",5,"\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0",6,"\u55A8",8,"\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF",4,"\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7",4,"\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8",4,"\u55FF\u5602\u5603\u5604\u5605"],["8740","\u5606\u5607\u560A\u560B\u560D\u5610",7,"\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640",11,"\u564F",4,"\u5655\u5656\u565A\u565B\u565D",4],["8780","\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D",7,"\u5687",6,"\u5690\u5691\u5692\u5694",14,"\u56A4",10,"\u56B0",6,"\u56B8\u56B9\u56BA\u56BB\u56BD",12,"\u56CB",8,"\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5",5,"\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B",6],["8840","\u5712",9,"\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734",4,"\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752",4,"\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780"],["8880","\u5781\u5787\u5788\u5789\u578A\u578D",4,"\u5794",6,"\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9",8,"\u57C4",6,"\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5",7,"\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825",4,"\u582B",4,"\u5831\u5832\u5833\u5834\u5836",7],["8940","\u583E",5,"\u5845",6,"\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859",4,"\u585F",5,"\u5866",4,"\u586D",16,"\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C"],["8980","\u588D",4,"\u5894",4,"\u589B\u589C\u589D\u58A0",7,"\u58AA",17,"\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6",10,"\u58D2\u58D3\u58D4\u58D6",13,"\u58E5",5,"\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA",7,"\u5903\u5905\u5906\u5908",4,"\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B"],["8a40","\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B",4,"\u5961\u5963\u5964\u5966",12,"\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6"],["8a80","\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3",5,"\u59BA\u59BC\u59BD\u59BF",6,"\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE",4,"\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED",11,"\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A",6,"\u5A33\u5A35\u5A37",4,"\u5A3D\u5A3E\u5A3F\u5A41",4,"\u5A47\u5A48\u5A4B",9,"\u5A56\u5A57\u5A58\u5A59\u5A5B",5],["8b40","\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B",8,"\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80",17,"\u5A93",6,"\u5A9C",13,"\u5AAB\u5AAC"],["8b80","\u5AAD",4,"\u5AB4\u5AB6\u5AB7\u5AB9",4,"\u5ABF\u5AC0\u5AC3",5,"\u5ACA\u5ACB\u5ACD",4,"\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC",4,"\u5AF2",22,"\u5B0A",11,"\u5B18",25,"\u5B33\u5B35\u5B36\u5B38",7,"\u5B41",6],["8c40","\u5B48",7,"\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF"],["8c80","\u5BD1\u5BD4",8,"\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9",4,"\u5BEF\u5BF1",6,"\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67",6,"\u5C70\u5C72",6,"\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83",4,"\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D",4,"\u5CA4",4],["8d40","\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5",5,"\u5CCC",5,"\u5CD3",5,"\u5CDA",6,"\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1",9,"\u5CFC",4],["8d80","\u5D01\u5D04\u5D05\u5D08",5,"\u5D0F",4,"\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F",4,"\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F",4,"\u5D35",7,"\u5D3F",7,"\u5D48\u5D49\u5D4D",10,"\u5D59\u5D5A\u5D5C\u5D5E",10,"\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75",12,"\u5D83",21,"\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0"],["8e40","\u5DA1",21,"\u5DB8",12,"\u5DC6",6,"\u5DCE",12,"\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED"],["8e80","\u5DF0\u5DF5\u5DF6\u5DF8",4,"\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E",7,"\u5E28",4,"\u5E2F\u5E30\u5E32",4,"\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46",5,"\u5E4D",6,"\u5E56",4,"\u5E5C\u5E5D\u5E5F\u5E60\u5E63",14,"\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8",4,"\u5EAE",4,"\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF",6],["8f40","\u5EC6\u5EC7\u5EC8\u5ECB",5,"\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC",11,"\u5EE9\u5EEB",8,"\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24"],["8f80","\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32",6,"\u5F3B\u5F3D\u5F3E\u5F3F\u5F41",14,"\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2",5,"\u5FA9\u5FAB\u5FAC\u5FAF",5,"\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE",4,"\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007"],["9040","\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030",4,"\u6036",4,"\u603D\u603E\u6040\u6044",6,"\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080"],["9080","\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD",7,"\u60C7\u60C8\u60C9\u60CC",4,"\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1",4,"\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB",4,"\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110",4,"\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C",18,"\u6140",6],["9140","\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156",6,"\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169",6,"\u6171\u6172\u6173\u6174\u6176\u6178",18,"\u618C\u618D\u618F",4,"\u6195"],["9180","\u6196",6,"\u619E",8,"\u61AA\u61AB\u61AD",9,"\u61B8",5,"\u61BF\u61C0\u61C1\u61C3",4,"\u61C9\u61CC",4,"\u61D3\u61D5",16,"\u61E7",13,"\u61F6",8,"\u6200",5,"\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238",4,"\u6242\u6244\u6245\u6246\u624A"],["9240","\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C",6,"\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B",5,"\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1"],["9280","\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333",5,"\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356",7,"\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399",6,"\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0"],["9340","\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7",6,"\u63DF\u63E2\u63E4",4,"\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406",4,"\u640D\u640E\u6411\u6412\u6415",5,"\u641D\u641F\u6422\u6423\u6424"],["9380","\u6425\u6427\u6428\u6429\u642B\u642E",5,"\u6435",4,"\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B",6,"\u6453\u6455\u6456\u6457\u6459",4,"\u645F",7,"\u6468\u646A\u646B\u646C\u646E",9,"\u647B",6,"\u6483\u6486\u6488",8,"\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F",4,"\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6",6,"\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA"],["9440","\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7",24,"\u6501",7,"\u650A",7,"\u6513",4,"\u6519",8],["9480","\u6522\u6523\u6524\u6526",4,"\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540",4,"\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578",14,"\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1",7,"\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8",7,"\u65E1\u65E3\u65E4\u65EA\u65EB"],["9540","\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB",4,"\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637",4,"\u663D\u663F\u6640\u6642\u6644",6,"\u664D\u664E\u6650\u6651\u6658"],["9580","\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669",4,"\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698",4,"\u669E",8,"\u66A9",4,"\u66AF",4,"\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF",25,"\u66DA\u66DE",7,"\u66E7\u66E8\u66EA",5,"\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703"],["9640","\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720",5,"\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757",4,"\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776"],["9680","\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9",7,"\u67C2\u67C5",9,"\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5",7,"\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818",4,"\u681E\u681F\u6820\u6822",6,"\u682B",6,"\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856",5],["9740","\u685C\u685D\u685E\u685F\u686A\u686C",7,"\u6875\u6878",8,"\u6882\u6884\u6887",7,"\u6890\u6891\u6892\u6894\u6895\u6896\u6898",9,"\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8"],["9780","\u68B9",6,"\u68C1\u68C3",5,"\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB",4,"\u68E1\u68E2\u68E4",9,"\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906",4,"\u690C\u690F\u6911\u6913",11,"\u6921\u6922\u6923\u6925",7,"\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943",16,"\u6955\u6956\u6958\u6959\u695B\u695C\u695F"],["9840","\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972",4,"\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E",5,"\u6996\u6997\u6999\u699A\u699D",9,"\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD"],["9880","\u69BE\u69BF\u69C0\u69C2",7,"\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5",5,"\u69DC\u69DD\u69DE\u69E1",11,"\u69EE\u69EF\u69F0\u69F1\u69F3",9,"\u69FE\u6A00",9,"\u6A0B",11,"\u6A19",5,"\u6A20\u6A22",5,"\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36",6,"\u6A3F",4,"\u6A45\u6A46\u6A48",7,"\u6A51",6,"\u6A5A"],["9940","\u6A5C",4,"\u6A62\u6A63\u6A64\u6A66",10,"\u6A72",6,"\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85",8,"\u6A8F\u6A92",4,"\u6A98",7,"\u6AA1",5],["9980","\u6AA7\u6AA8\u6AAA\u6AAD",114,"\u6B25\u6B26\u6B28",6],["9a40","\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D",11,"\u6B5A",7,"\u6B68\u6B69\u6B6B",13,"\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88"],["9a80","\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C",4,"\u6BA2",7,"\u6BAB",7,"\u6BB6\u6BB8",6,"\u6BC0\u6BC3\u6BC4\u6BC6",4,"\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC",4,"\u6BE2",7,"\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE",6,"\u6C08",4,"\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B",4,"\u6C51\u6C52\u6C53\u6C56\u6C58"],["9b40","\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B",4,"\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8"],["9b80","\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F",5,"\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D",4,"\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96",4,"\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9",5,"\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA"],["9c40","\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD",7,"\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35"],["9c80","\u6E36\u6E37\u6E39\u6E3B",7,"\u6E45",7,"\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60",10,"\u6E6C\u6E6D\u6E6F",14,"\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A",4,"\u6E91",6,"\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA",5],["9d40","\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA",7,"\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A",4,"\u6F10\u6F11\u6F12\u6F16",9,"\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37",6,"\u6F3F\u6F40\u6F41\u6F42"],["9d80","\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E",9,"\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67",5,"\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D",6,"\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F",12,"\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2",4,"\u6FA8",10,"\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA",5,"\u6FC1\u6FC3",5,"\u6FCA",6,"\u6FD3",10,"\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5"],["9e40","\u6FE6",7,"\u6FF0",32,"\u7012",7,"\u701C",6,"\u7024",6],["9e80","\u702B",9,"\u7036\u7037\u7038\u703A",17,"\u704D\u704E\u7050",13,"\u705F",11,"\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E",12,"\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB",12,"\u70DA"],["9f40","\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0",6,"\u70F8\u70FA\u70FB\u70FC\u70FE",10,"\u710B",4,"\u7111\u7112\u7114\u7117\u711B",10,"\u7127",7,"\u7132\u7133\u7134"],["9f80","\u7135\u7137",13,"\u7146\u7147\u7148\u7149\u714B\u714D\u714F",12,"\u715D\u715F",4,"\u7165\u7169",4,"\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E",5,"\u7185",4,"\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A",4,"\u71A1",6,"\u71A9\u71AA\u71AB\u71AD",5,"\u71B4\u71B6\u71B7\u71B8\u71BA",8,"\u71C4",9,"\u71CF",4],["a040","\u71D6",9,"\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8",5,"\u71EF",9,"\u71FA",11,"\u7207",19],["a080","\u721B\u721C\u721E",9,"\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240",6,"\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285",4,"\u728C\u728E\u7290\u7291\u7293",11,"\u72A0",11,"\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA",6,"\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB"],["a1a1","\u3000\u3001\u3002\xB7\u02C9\u02C7\xA8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008",7,"\u3016\u3017\u3010\u3011\xB1\xD7\xF7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFF04\xA4\uFFE0\uFFE1\u2030\xA7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013"],["a2a1","\u2170",9],["a2b1","\u2488",19,"\u2474",19,"\u2460",9],["a2e5","\u3220",9],["a2f1","\u2160",11],["a3a1","\uFF01\uFF02\uFF03\uFFE5\uFF05",88,"\uFFE3"],["a4a1","\u3041",82],["a5a1","\u30A1",85],["a6a1","\u0391",16,"\u03A3",6],["a6c1","\u03B1",16,"\u03C3",6],["a6e0","\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44"],["a6ee","\uFE3B\uFE3C\uFE37\uFE38\uFE31"],["a6f4","\uFE33\uFE34"],["a7a1","\u0410",5,"\u0401\u0416",25],["a7d1","\u0430",5,"\u0451\u0436",25],["a840","\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550",35,"\u2581",6],["a880","\u2588",7,"\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E"],["a8a1","\u0101\xE1\u01CE\xE0\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA\u01DC\xFC\xEA\u0251"],["a8bd","\u0144\u0148"],["a8c0","\u0261"],["a8c5","\u3105",36],["a940","\u3021",8,"\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4"],["a959","\u2121\u3231"],["a95c","\u2010"],["a960","\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49",9,"\uFE54\uFE55\uFE56\uFE57\uFE59",8],["a980","\uFE62",4,"\uFE68\uFE69\uFE6A\uFE6B"],["a996","\u3007"],["a9a4","\u2500",75],["aa40","\u72DC\u72DD\u72DF\u72E2",5,"\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304",5,"\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340",8],["aa80","\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358",7,"\u7361",10,"\u736E\u7370\u7371"],["ab40","\u7372",11,"\u737F",4,"\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3",5,"\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3",4],["ab80","\u73CB\u73CC\u73CE\u73D2",6,"\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3",4],["ac40","\u73F8",10,"\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411",8,"\u741C",5,"\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437",4,"\u743D\u743E\u743F\u7440\u7442",11],["ac80","\u744E",6,"\u7456\u7458\u745D\u7460",12,"\u746E\u746F\u7471",4,"\u7478\u7479\u747A"],["ad40","\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491",10,"\u749D\u749F",7,"\u74AA",15,"\u74BB",12],["ad80","\u74C8",9,"\u74D3",8,"\u74DD\u74DF\u74E1\u74E5\u74E7",6,"\u74F0\u74F1\u74F2"],["ae40","\u74F3\u74F5\u74F8",6,"\u7500\u7501\u7502\u7503\u7505",7,"\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520",4,"\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558"],["ae80","\u755D",7,"\u7567\u7568\u7569\u756B",6,"\u7573\u7575\u7576\u7577\u757A",4,"\u7580\u7581\u7582\u7584\u7585\u7587"],["af40","\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6",4,"\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607"],["af80","\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644"],["b040","\u7645",6,"\u764E",5,"\u7655\u7657",4,"\u765D\u765F\u7660\u7661\u7662\u7664",6,"\u766C\u766D\u766E\u7670",7,"\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B"],["b080","\u769C",7,"\u76A5",8,"\u76AF\u76B0\u76B3\u76B5",9,"\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265"],["b140","\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0",4,"\u76E6",7,"\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E",10,"\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B"],["b180","\u772C\u772E\u7730",4,"\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748",7,"\u7752",7,"\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3"],["b240","\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D",11,"\u777A\u777B\u777C\u7781\u7782\u7783\u7786",5,"\u778F\u7790\u7793",11,"\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6",4],["b280","\u77BC\u77BE\u77C0",12,"\u77CE",8,"\u77D8\u77D9\u77DA\u77DD",4,"\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316"],["b340","\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803",5,"\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A"],["b380","\u785B\u785C\u785E",11,"\u786F",7,"\u7878\u7879\u787A\u787B\u787D",6,"\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A"],["b440","\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8",7,"\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA",9],["b480","\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED",4,"\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB",5,"\u7902\u7903\u7904\u7906",6,"\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E"],["b540","\u790D",5,"\u7914",9,"\u791F",4,"\u7925",14,"\u7935",4,"\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A",8,"\u7954\u7955\u7958\u7959\u7961\u7963"],["b580","\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970",6,"\u7979\u797B",4,"\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0"],["b640","\u7993",6,"\u799B",11,"\u79A8",10,"\u79B4",4,"\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9",5,"\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA"],["b680","\u79EC\u79EE\u79F1",6,"\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F",4,"\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C"],["b740","\u7A1D\u7A1F\u7A21\u7A22\u7A24",14,"\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40",5,"\u7A47",9,"\u7A52",4,"\u7A58",16],["b780","\u7A69",6,"\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D"],["b840","\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE",4,"\u7AB4",10,"\u7AC0",10,"\u7ACC",9,"\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7",5,"\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3"],["b880","\u7AF4",4,"\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9"],["b940","\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F",5,"\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63",10,"\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86",6,"\u7B8E\u7B8F"],["b980","\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9",7,"\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8"],["ba40","\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4",4,"\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2",4,"\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF",7,"\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10",5,"\u7C17\u7C18\u7C19"],["ba80","\u7C1A",4,"\u7C20",5,"\u7C28\u7C29\u7C2B",12,"\u7C39",5,"\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56"],["bb40","\u7C43",9,"\u7C4E",36,"\u7C75",5,"\u7C7E",9],["bb80","\u7C88\u7C8A",6,"\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4",4,"\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95"],["bc40","\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE",6,"\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1",6,"\u7CE9",5,"\u7CF0",7,"\u7CF9\u7CFA\u7CFC",13,"\u7D0B",5],["bc80","\u7D11",14,"\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30",6,"\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6"],["bd40","\u7D37",54,"\u7D6F",7],["bd80","\u7D78",32,"\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78"],["be40","\u7D99",12,"\u7DA7",6,"\u7DAF",42],["be80","\u7DDA",32,"\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB"],["bf40","\u7DFB",62],["bf80","\u7E3A\u7E3C",4,"\u7E42",4,"\u7E48",21,"\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080"],["c040","\u7E5E",35,"\u7E83",23,"\u7E9C\u7E9D\u7E9E"],["c080","\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B",6,"\u7F43\u7F46",9,"\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0"],["c140","\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63",4,"\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82",7,"\u7F8B\u7F8D\u7F8F",4,"\u7F95",4,"\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8",6,"\u7FB1"],["c180","\u7FB3",4,"\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF",4,"\u7FD6\u7FD7\u7FD9",5,"\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF"],["c240","\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4",6,"\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B",5,"\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057"],["c280","\u8059\u805B",13,"\u806B",5,"\u8072",11,"\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B"],["c340","\u807E\u8081\u8082\u8085\u8088\u808A\u808D",5,"\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7",4,"\u80CF",6,"\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B"],["c380","\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F",12,"\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139",4,"\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478"],["c440","\u8140",5,"\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B",4,"\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183",4,"\u8189\u818B\u818C\u818D\u818E\u8190\u8192",5,"\u8199\u819A\u819E",4,"\u81A4\u81A5"],["c480","\u81A7\u81A9\u81AB",7,"\u81B4",5,"\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD",6,"\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81"],["c540","\u81D4",14,"\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE",4,"\u81F5",5,"\u81FD\u81FF\u8203\u8207",4,"\u820E\u820F\u8211\u8213\u8215",5,"\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F"],["c580","\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250",7,"\u8259\u825B\u825C\u825D\u825E\u8260",7,"\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7"],["c640","\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8"],["c680","\u82FA\u82FC",4,"\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D",9,"\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390"],["c740","\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A",4,"\u8353\u8355",4,"\u835D\u8362\u8370",6,"\u8379\u837A\u837E",6,"\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1",6,"\u83AC\u83AD\u83AE"],["c780","\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20"],["c840","\u83EE\u83EF\u83F3",4,"\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412",5,"\u8419\u841A\u841B\u841E",5,"\u8429",7,"\u8432",5,"\u8439\u843A\u843B\u843E",7,"\u8447\u8448\u8449"],["c880","\u844A",6,"\u8452",4,"\u8458\u845D\u845E\u845F\u8460\u8462\u8464",4,"\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1"],["c940","\u847D",4,"\u8483\u8484\u8485\u8486\u848A\u848D\u848F",7,"\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2",12,"\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7"],["c980","\u84D8",4,"\u84DE\u84E1\u84E2\u84E4\u84E7",4,"\u84ED\u84EE\u84EF\u84F1",10,"\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3"],["ca40","\u8503",8,"\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522",8,"\u852D",9,"\u853E",4,"\u8544\u8545\u8546\u8547\u854B",10],["ca80","\u8557\u8558\u855A\u855B\u855C\u855D\u855F",4,"\u8565\u8566\u8567\u8569",8,"\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31"],["cb40","\u8582\u8583\u8586\u8588",6,"\u8590",10,"\u859D",6,"\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1",5,"\u85B8\u85BA",6,"\u85C2",6,"\u85CA",4,"\u85D1\u85D2"],["cb80","\u85D4\u85D6",5,"\u85DD",6,"\u85E5\u85E6\u85E7\u85E8\u85EA",14,"\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854"],["cc40","\u85F9\u85FA\u85FC\u85FD\u85FE\u8600",4,"\u8606",10,"\u8612\u8613\u8614\u8615\u8617",15,"\u8628\u862A",13,"\u8639\u863A\u863B\u863D\u863E\u863F\u8640"],["cc80","\u8641",11,"\u8652\u8653\u8655",4,"\u865B\u865C\u865D\u865F\u8660\u8661\u8663",7,"\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3"],["cd40","\u866D\u866F\u8670\u8672",6,"\u8683",6,"\u868E",4,"\u8694\u8696",5,"\u869E",4,"\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB",4,"\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC"],["cd80","\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01"],["ce40","\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740",6,"\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A",5,"\u8761\u8762\u8766",7,"\u876F\u8771\u8772\u8773\u8775"],["ce80","\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E",4,"\u8794\u8795\u8796\u8798",6,"\u87A0",4,"\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A"],["cf40","\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1",4,"\u87C7\u87C8\u87C9\u87CC",4,"\u87D4",6,"\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF",9],["cf80","\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804",5,"\u880B",7,"\u8814\u8817\u8818\u8819\u881A\u881C",4,"\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653"],["d040","\u8824",13,"\u8833",5,"\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846",5,"\u884E",5,"\u8855\u8856\u8858\u885A",6,"\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A"],["d080","\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897",4,"\u889D",4,"\u88A3\u88A5",5,"\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384"],["d140","\u88AC\u88AE\u88AF\u88B0\u88B2",4,"\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA",4,"\u88E0\u88E1\u88E6\u88E7\u88E9",6,"\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903",5],["d180","\u8909\u890B",4,"\u8911\u8914",4,"\u891C",4,"\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476"],["d240","\u8938",8,"\u8942\u8943\u8945",24,"\u8960",5,"\u8967",19,"\u897C"],["d280","\u897D\u897E\u8980\u8982\u8984\u8985\u8987",26,"\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690"],["d340","\u89A2",30,"\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4",6],["d380","\u89FB",4,"\u8A01",5,"\u8A08",21,"\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89"],["d440","\u8A1E",31,"\u8A3F",8,"\u8A49",21],["d480","\u8A5F",25,"\u8A7A",6,"\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67"],["d540","\u8A81",7,"\u8A8B",7,"\u8A94",46],["d580","\u8AC3",32,"\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F"],["d640","\u8AE4",34,"\u8B08",27],["d680","\u8B24\u8B25\u8B27",30,"\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51"],["d740","\u8B46",31,"\u8B67",4,"\u8B6D",25],["d780","\u8B87",24,"\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7"],["d840","\u8C38",8,"\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D",7,"\u8C56\u8C57\u8C58\u8C59\u8C5B",5,"\u8C63",6,"\u8C6C",6,"\u8C74\u8C75\u8C76\u8C77\u8C7B",6,"\u8C83\u8C84\u8C86\u8C87"],["d880","\u8C88\u8C8B\u8C8D",6,"\u8C95\u8C96\u8C97\u8C99",20,"\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D"],["d940","\u8CAE",62],["d980","\u8CED",32,"\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC"],["da40","\u8D0E",14,"\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78",8,"\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C",4,"\u8D92\u8D93\u8D95",9,"\u8DA0\u8DA1"],["da80","\u8DA2\u8DA4",12,"\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA"],["db40","\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE",6,"\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15",7,"\u8E20\u8E21\u8E24",4,"\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E"],["db80","\u8E3F\u8E43\u8E45\u8E46\u8E4C",4,"\u8E53",5,"\u8E5A",11,"\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD"],["dc40","\u8E73\u8E75\u8E77",4,"\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88",6,"\u8E91\u8E92\u8E93\u8E95",6,"\u8E9D\u8E9F",11,"\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3",6,"\u8EBB",7],["dc80","\u8EC3",10,"\u8ECF",21,"\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365"],["dd40","\u8EE5",62],["dd80","\u8F24",32,"\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A"],["de40","\u8F45",32,"\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6"],["de80","\u8FC9",4,"\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496"],["df40","\u9019\u901C\u9023\u9024\u9025\u9027",5,"\u9030",4,"\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048",4,"\u904E\u9054\u9055\u9056\u9059\u905A\u905C",5,"\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F",4,"\u9076",6,"\u907E\u9081"],["df80","\u9084\u9085\u9086\u9087\u9089\u908A\u908C",4,"\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C"],["e040","\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105",19,"\u911A\u911B\u911C"],["e080","\u911D\u911F\u9120\u9121\u9124",10,"\u9130\u9132",6,"\u913A",8,"\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C"],["e140","\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180",4,"\u9186\u9188\u918A\u918E\u918F\u9193",6,"\u919C",5,"\u91A4",5,"\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB"],["e180","\u91BC",10,"\u91C8\u91CB\u91D0\u91D2",9,"\u91DD",8,"\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA"],["e240","\u91E6",62],["e280","\u9225",32,"\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967",5,"\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042"],["e340","\u9246",45,"\u9275",16],["e380","\u9286",7,"\u928F",24,"\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE"],["e440","\u92A8",5,"\u92AF",24,"\u92C9",31],["e480","\u92E9",32,"\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1"],["e540","\u930A",51,"\u933F",10],["e580","\u934A",31,"\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3"],["e640","\u936C",34,"\u9390",27],["e680","\u93AC",29,"\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9"],["e740","\u93CE",7,"\u93D7",54],["e780","\u940E",32,"\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21",6,"\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F",4,"\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C"],["e840","\u942F",14,"\u943F",43,"\u946C\u946D\u946E\u946F"],["e880","\u9470",20,"\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9"],["e940","\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577",7,"\u9580",42],["e980","\u95AB",32,"\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B"],["ea40","\u95CC",27,"\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623",6,"\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657"],["ea80","\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D",4,"\u9673\u9678",12,"\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0"],["eb40","\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D",9,"\u96A8",7,"\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6",9,"\u96E1",6,"\u96EB"],["eb80","\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717",4,"\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB"],["ec40","\u9721",8,"\u972B\u972C\u972E\u972F\u9731\u9733",4,"\u973A\u973B\u973C\u973D\u973F",18,"\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A",7],["ec80","\u9772\u9775\u9777",4,"\u977D",7,"\u9786",4,"\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799",4,"\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0"],["ed40","\u979E\u979F\u97A1\u97A2\u97A4",6,"\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5",46],["ed80","\u97E4\u97E5\u97E8\u97EE",4,"\u97F4\u97F7",23,"\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768"],["ee40","\u980F",62],["ee80","\u984E",32,"\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6",4,"\u94BC\u94BD\u94BF\u94C4\u94C8",6,"\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA"],["ef40","\u986F",5,"\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8",37,"\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0",4],["ef80","\u98E5\u98E6\u98E9",30,"\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512",4,"\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564",8,"\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14"],["f040","\u9908",4,"\u990E\u990F\u9911",28,"\u992F",26],["f080","\u994A",9,"\u9956",12,"\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28",4,"\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66",6,"\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619"],["f140","\u998C\u998E\u999A",10,"\u99A6\u99A7\u99A9",47],["f180","\u99D9",32,"\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883"],["f240","\u99FA",62],["f280","\u9A39",32,"\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2"],["f340","\u9A5A",17,"\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9",6,"\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6",4,"\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC"],["f380","\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0",8,"\u9AFA\u9AFC",6,"\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B"],["f440","\u9B07\u9B09",5,"\u9B10\u9B11\u9B12\u9B14",10,"\u9B20\u9B21\u9B22\u9B24",10,"\u9B30\u9B31\u9B33",7,"\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55",5],["f480","\u9B5B",32,"\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164"],["f540","\u9B7C",62],["f580","\u9BBB",32,"\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC"],["f640","\u9BDC",62],["f680","\u9C1B",32,"\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85",5,"\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E",5,"\u9CA5",4,"\u9CAB\u9CAD\u9CAE\u9CB0",7,"\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB"],["f740","\u9C3C",62],["f780","\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE",4,"\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC",4,"\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44"],["f840","\u9CE3",62],["f880","\u9D22",32],["f940","\u9D43",62],["f980","\u9D82",32],["fa40","\u9DA3",62],["fa80","\u9DE2",32],["fb40","\u9E03",27,"\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74",9,"\u9E80"],["fb80","\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C",5,"\u9E94",8,"\u9E9E\u9EA0",5,"\u9EA7\u9EA8\u9EA9\u9EAA"],["fc40","\u9EAB",8,"\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF",4,"\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0",8,"\u9EFA\u9EFD\u9EFF",6],["fc80","\u9F06",4,"\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A",5,"\u9F21\u9F23",8,"\u9F2D\u9F2E\u9F30\u9F31"],["fd40","\u9F32",4,"\u9F38\u9F3A\u9F3C\u9F3F",4,"\u9F45",10,"\u9F52",38],["fd80","\u9F79",5,"\u9F81\u9F82\u9F8D",11,"\u9F9C\u9F9D\u9F9E\u9FA1",4,"\uF92C\uF979\uF995\uF9E7\uF9F1"],["fe40","\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29"]]});var gh=P((ZW,XC)=>{XC.exports=[["a140","\uE4C6",62],["a180","\uE505",32],["a240","\uE526",62],["a280","\uE565",32],["a2ab","\uE766",5],["a2e3","\u20AC\uE76D"],["a2ef","\uE76E\uE76F"],["a2fd","\uE770\uE771"],["a340","\uE586",62],["a380","\uE5C5",31,"\u3000"],["a440","\uE5E6",62],["a480","\uE625",32],["a4f4","\uE772",10],["a540","\uE646",62],["a580","\uE685",32],["a5f7","\uE77D",7],["a640","\uE6A6",62],["a680","\uE6E5",32],["a6b9","\uE785",7],["a6d9","\uE78D",6],["a6ec","\uE794\uE795"],["a6f3","\uE796"],["a6f6","\uE797",8],["a740","\uE706",62],["a780","\uE745",32],["a7c2","\uE7A0",14],["a7f2","\uE7AF",12],["a896","\uE7BC",10],["a8bc","\uE7C7"],["a8bf","\u01F9"],["a8c1","\uE7C9\uE7CA\uE7CB\uE7CC"],["a8ea","\uE7CD",20],["a958","\uE7E2"],["a95b","\uE7E3"],["a95d","\uE7E4\uE7E5\uE7E6"],["a989","\u303E\u2FF0",11],["a997","\uE7F4",12],["a9f0","\uE801",14],["aaa1","\uE000",93],["aba1","\uE05E",93],["aca1","\uE0BC",93],["ada1","\uE11A",93],["aea1","\uE178",93],["afa1","\uE1D6",93],["d7fa","\uE810",4],["f8a1","\uE234",93],["f9a1","\uE292",93],["faa1","\uE2F0",93],["fba1","\uE34E",93],["fca1","\uE3AC",93],["fda1","\uE40A",93],["fe50","\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843"],["fe80","\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13",6,"\u4DAE\uE864\uE468",93]]});var Jx=P((QW,KC)=>{KC.exports={uChars:[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],gbChars:[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189e3]}});var qx=P((WW,VC)=>{VC.exports=[["0","\0",127],["8141","\uAC02\uAC03\uAC05\uAC06\uAC0B",4,"\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25",6,"\uAC2E\uAC32\uAC33\uAC34"],["8161","\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41",9,"\uAC4C\uAC4E",5,"\uAC55"],["8181","\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D",18,"\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B",4,"\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95",6,"\uAC9E\uACA2",5,"\uACAB\uACAD\uACAE\uACB1",6,"\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD",7,"\uACD6\uACD8",7,"\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7",4,"\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07",4,"\uAD0E\uAD10\uAD12\uAD13"],["8241","\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21",7,"\uAD2A\uAD2B\uAD2E",5],["8261","\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D",6,"\uAD46\uAD48\uAD4A",5,"\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57"],["8281","\uAD59",7,"\uAD62\uAD64",7,"\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83",4,"\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91",10,"\uAD9E",5,"\uADA5",17,"\uADB8",7,"\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9",6,"\uADD2\uADD4",7,"\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5",18],["8341","\uADFA\uADFB\uADFD\uADFE\uAE02",5,"\uAE0A\uAE0C\uAE0E",5,"\uAE15",7],["8361","\uAE1D",18,"\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C"],["8381","\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57",4,"\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71",6,"\uAE7A\uAE7E",5,"\uAE86",5,"\uAE8D",46,"\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5",6,"\uAECE\uAED2",5,"\uAEDA\uAEDB\uAEDD",8],["8441","\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE",5,"\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD",8],["8461","\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11",18],["8481","\uAF24",7,"\uAF2E\uAF2F\uAF31\uAF33\uAF35",6,"\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A",5,"\uAF51",10,"\uAF5E",5,"\uAF66",18,"\uAF7A",5,"\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89",6,"\uAF92\uAF93\uAF94\uAF96",5,"\uAF9D",26,"\uAFBA\uAFBB\uAFBD\uAFBE"],["8541","\uAFBF\uAFC1",5,"\uAFCA\uAFCC\uAFCF",4,"\uAFD5",6,"\uAFDD",4],["8561","\uAFE2",5,"\uAFEA",5,"\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9",6,"\uB002\uB003"],["8581","\uB005",6,"\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015",6,"\uB01E",9,"\uB029",26,"\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E",29,"\uB07E\uB07F\uB081\uB082\uB083\uB085",6,"\uB08E\uB090\uB092",5,"\uB09B\uB09D\uB09E\uB0A3\uB0A4"],["8641","\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD",6,"\uB0C6\uB0CA",5,"\uB0D2"],["8661","\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9",6,"\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6",10],["8681","\uB0F1",22,"\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E",4,"\uB126\uB127\uB129\uB12A\uB12B\uB12D",6,"\uB136\uB13A",5,"\uB142\uB143\uB145\uB146\uB147\uB149",6,"\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161",22,"\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183",4,"\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D"],["8741","\uB19E",9,"\uB1A9",15],["8761","\uB1B9",18,"\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5"],["8781","\uB1D6",5,"\uB1DE\uB1E0",7,"\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1",7,"\uB1FA\uB1FC\uB1FE",5,"\uB206\uB207\uB209\uB20A\uB20D",6,"\uB216\uB218\uB21A",5,"\uB221",18,"\uB235",6,"\uB23D",26,"\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261",6,"\uB26A",4],["8841","\uB26F",4,"\uB276",5,"\uB27D",6,"\uB286\uB287\uB288\uB28A",4],["8861","\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B",4,"\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7"],["8881","\uB2B8",15,"\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3",4,"\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309",6,"\uB312\uB316",5,"\uB31D",54,"\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363"],["8941","\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379",6,"\uB382\uB386",5,"\uB38D"],["8961","\uB38E\uB38F\uB391\uB392\uB393\uB395",10,"\uB3A2",5,"\uB3A9\uB3AA\uB3AB\uB3AD"],["8981","\uB3AE",21,"\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9",18,"\uB3FD",18,"\uB411",6,"\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421",6,"\uB42A\uB42C",7,"\uB435",15],["8a41","\uB445",10,"\uB452\uB453\uB455\uB456\uB457\uB459",6,"\uB462\uB464\uB466"],["8a61","\uB467",4,"\uB46D",18,"\uB481\uB482"],["8a81","\uB483",4,"\uB489",19,"\uB49E",5,"\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD",7,"\uB4B6\uB4B8\uB4BA",5,"\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9",6,"\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6",5,"\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7",4,"\uB4EE\uB4F0\uB4F2",5,"\uB4F9",26,"\uB516\uB517\uB519\uB51A\uB51D"],["8b41","\uB51E",5,"\uB526\uB52B",4,"\uB532\uB533\uB535\uB536\uB537\uB539",6,"\uB542\uB546"],["8b61","\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555",6,"\uB55E\uB562",8],["8b81","\uB56B",52,"\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6",4,"\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5",6,"\uB5CE\uB5D2",5,"\uB5D9",18,"\uB5ED",18],["8c41","\uB600",15,"\uB612\uB613\uB615\uB616\uB617\uB619",4],["8c61","\uB61E",6,"\uB626",5,"\uB62D",6,"\uB635",5],["8c81","\uB63B",12,"\uB649",26,"\uB665\uB666\uB667\uB669",50,"\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5",5,"\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2",16],["8d41","\uB6C3",16,"\uB6D5",8],["8d61","\uB6DE",17,"\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA"],["8d81","\uB6FB",4,"\uB702\uB703\uB704\uB706",33,"\uB72A\uB72B\uB72D\uB72E\uB731",6,"\uB73A\uB73C",7,"\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D",6,"\uB756",9,"\uB761\uB762\uB763\uB765\uB766\uB767\uB769",6,"\uB772\uB774\uB776",5,"\uB77E\uB77F\uB781\uB782\uB783\uB785",6,"\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E"],["8e41","\uB79F\uB7A1",6,"\uB7AA\uB7AE",5,"\uB7B6\uB7B7\uB7B9",8],["8e61","\uB7C2",4,"\uB7C8\uB7CA",19],["8e81","\uB7DE",13,"\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5",6,"\uB7FE\uB802",4,"\uB80A\uB80B\uB80D\uB80E\uB80F\uB811",6,"\uB81A\uB81C\uB81E",5,"\uB826\uB827\uB829\uB82A\uB82B\uB82D",6,"\uB836\uB83A",5,"\uB841\uB842\uB843\uB845",11,"\uB852\uB854",7,"\uB85E\uB85F\uB861\uB862\uB863\uB865",6,"\uB86E\uB870\uB872",5,"\uB879\uB87A\uB87B\uB87D",7],["8f41","\uB885",7,"\uB88E",17],["8f61","\uB8A0",7,"\uB8A9",6,"\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9",4],["8f81","\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6",5,"\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5",7,"\uB8DE\uB8E0\uB8E2",5,"\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1",6,"\uB8FA\uB8FC\uB8FE",5,"\uB905",18,"\uB919",6,"\uB921",26,"\uB93E\uB93F\uB941\uB942\uB943\uB945",6,"\uB94D\uB94E\uB950\uB952",5],["9041","\uB95A\uB95B\uB95D\uB95E\uB95F\uB961",6,"\uB96A\uB96C\uB96E",5,"\uB976\uB977\uB979\uB97A\uB97B\uB97D"],["9061","\uB97E",5,"\uB986\uB988\uB98B\uB98C\uB98F",15],["9081","\uB99F",12,"\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5",6,"\uB9BE\uB9C0\uB9C2",5,"\uB9CA\uB9CB\uB9CD\uB9D3",4,"\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED",6,"\uB9F6\uB9FB",4,"\uBA02",5,"\uBA09",11,"\uBA16",33,"\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46"],["9141","\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D",6,"\uBA66\uBA6A",5],["9161","\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79",9,"\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D",5],["9181","\uBA93",20,"\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3",4,"\uBABA\uBABC\uBABE",5,"\uBAC5\uBAC6\uBAC7\uBAC9",14,"\uBADA",33,"\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05",7,"\uBB0E\uBB10\uBB12",5,"\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21",6],["9241","\uBB28\uBB2A\uBB2C",7,"\uBB37\uBB39\uBB3A\uBB3F",4,"\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52"],["9261","\uBB53\uBB55\uBB56\uBB57\uBB59",7,"\uBB62\uBB64",7,"\uBB6D",4],["9281","\uBB72",21,"\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91",18,"\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD",6,"\uBBB5\uBBB6\uBBB8",7,"\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9",6,"\uBBD1\uBBD2\uBBD4",35,"\uBBFA\uBBFB\uBBFD\uBBFE\uBC01"],["9341","\uBC03",4,"\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35"],["9361","\uBC36\uBC37\uBC39",6,"\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51",8],["9381","\uBC5A\uBC5B\uBC5C\uBC5E",37,"\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F",4,"\uBC96\uBC98\uBC9B",4,"\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9",6,"\uBCB2\uBCB6",5,"\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5",7,"\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD",22,"\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD"],["9441","\uBCFE",5,"\uBD06\uBD08\uBD0A",5,"\uBD11\uBD12\uBD13\uBD15",8],["9461","\uBD1E",5,"\uBD25",6,"\uBD2D",12],["9481","\uBD3A",5,"\uBD41",6,"\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51",6,"\uBD5A",9,"\uBD65\uBD66\uBD67\uBD69",22,"\uBD82\uBD83\uBD85\uBD86\uBD8B",4,"\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D",6,"\uBDA5",10,"\uBDB1",6,"\uBDB9",24],["9541","\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD",11,"\uBDEA",5,"\uBDF1"],["9561","\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9",6,"\uBE01\uBE02\uBE04\uBE06",5,"\uBE0E\uBE0F\uBE11\uBE12\uBE13"],["9581","\uBE15",6,"\uBE1E\uBE20",35,"\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F",4,"\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B",4,"\uBE72\uBE76",4,"\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85",6,"\uBE8E\uBE92",5,"\uBE9A",13,"\uBEA9",14],["9641","\uBEB8",23,"\uBED2\uBED3"],["9661","\uBED5\uBED6\uBED9",6,"\uBEE1\uBEE2\uBEE6",5,"\uBEED",8],["9681","\uBEF6",10,"\uBF02",5,"\uBF0A",13,"\uBF1A\uBF1E",33,"\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49",6,"\uBF52\uBF53\uBF54\uBF56",44],["9741","\uBF83",16,"\uBF95",8],["9761","\uBF9E",17,"\uBFB1",7],["9781","\uBFB9",11,"\uBFC6",5,"\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5",6,"\uBFDD\uBFDE\uBFE0\uBFE2",89,"\uC03D\uC03E\uC03F"],["9841","\uC040",16,"\uC052",5,"\uC059\uC05A\uC05B"],["9861","\uC05D\uC05E\uC05F\uC061",6,"\uC06A",15],["9881","\uC07A",21,"\uC092\uC093\uC095\uC096\uC097\uC099",6,"\uC0A2\uC0A4\uC0A6",5,"\uC0AE\uC0B1\uC0B2\uC0B7",4,"\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1",6,"\uC0DA\uC0DE",5,"\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED",6,"\uC0F6\uC0F8\uC0FA",5,"\uC101\uC102\uC103\uC105\uC106\uC107\uC109",6,"\uC111\uC112\uC113\uC114\uC116",5,"\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E"],["9941","\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141",6,"\uC14A\uC14E",5,"\uC156\uC157"],["9961","\uC159\uC15A\uC15B\uC15D",6,"\uC166\uC16A",5,"\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B"],["9981","\uC17C",8,"\uC186",5,"\uC18F\uC191\uC192\uC193\uC195\uC197",4,"\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1",11,"\uC1BE",5,"\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD",6,"\uC1D5\uC1D6\uC1D9",6,"\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9",6,"\uC1F2\uC1F4",7,"\uC1FE\uC1FF\uC201\uC202\uC203\uC205",6,"\uC20E\uC210\uC212",5,"\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223"],["9a41","\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235",16],["9a61","\uC246\uC247\uC249",6,"\uC252\uC253\uC255\uC256\uC257\uC259",6,"\uC261\uC262\uC263\uC264\uC266"],["9a81","\uC267",4,"\uC26E\uC26F\uC271\uC272\uC273\uC275",6,"\uC27E\uC280\uC282",5,"\uC28A",5,"\uC291",6,"\uC299\uC29A\uC29C\uC29E",5,"\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE",5,"\uC2B6\uC2B8\uC2BA",33,"\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5",5,"\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301",6,"\uC30A\uC30B\uC30E\uC30F"],["9b41","\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D",6,"\uC326\uC327\uC32A",8],["9b61","\uC333",17,"\uC346",7],["9b81","\uC34E",25,"\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373",4,"\uC37A\uC37B\uC37E",5,"\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D",50,"\uC3C1",22,"\uC3DA"],["9c41","\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3",4,"\uC3EA\uC3EB\uC3EC\uC3EE",5,"\uC3F6\uC3F7\uC3F9",5],["9c61","\uC3FF",8,"\uC409",6,"\uC411",9],["9c81","\uC41B",8,"\uC425",6,"\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435",6,"\uC43E",9,"\uC449",26,"\uC466\uC467\uC469\uC46A\uC46B\uC46D",6,"\uC476\uC477\uC478\uC47A",5,"\uC481",18,"\uC495",6,"\uC49D",12],["9d41","\uC4AA",13,"\uC4B9\uC4BA\uC4BB\uC4BD",8],["9d61","\uC4C6",25],["9d81","\uC4E0",8,"\uC4EA",5,"\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502",9,"\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515",6,"\uC51D",10,"\uC52A\uC52B\uC52D\uC52E\uC52F\uC531",6,"\uC53A\uC53C\uC53E",5,"\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569",6,"\uC572\uC576",5,"\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594"],["9e41","\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1",7,"\uC5AA",9,"\uC5B6"],["9e61","\uC5B7\uC5BA\uC5BF",4,"\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9",6,"\uC5E2\uC5E4\uC5E6\uC5E7"],["9e81","\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611",6,"\uC61A\uC61D",6,"\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649",6,"\uC652\uC656",5,"\uC65E\uC65F\uC661",10,"\uC66D\uC66E\uC670\uC672",5,"\uC67A\uC67B\uC67D\uC67E\uC67F\uC681",6,"\uC68A\uC68C\uC68E",5,"\uC696\uC697\uC699\uC69A\uC69B\uC69D",6,"\uC6A6"],["9f41","\uC6A8\uC6AA",5,"\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB",4,"\uC6C2\uC6C4\uC6C6",5,"\uC6CE"],["9f61","\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5",6,"\uC6DE\uC6DF\uC6E2",5,"\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2"],["9f81","\uC6F3",4,"\uC6FA\uC6FB\uC6FC\uC6FE",5,"\uC706\uC707\uC709\uC70A\uC70B\uC70D",6,"\uC716\uC718\uC71A",5,"\uC722\uC723\uC725\uC726\uC727\uC729",6,"\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745",4,"\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761",6,"\uC769\uC76A\uC76C",7,"\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B",4,"\uC7A2\uC7A7",4,"\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7"],["a041","\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2",5,"\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1",6,"\uC7D9\uC7DA\uC7DB\uC7DC"],["a061","\uC7DE",5,"\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED",13],["a081","\uC7FB",4,"\uC802\uC803\uC805\uC806\uC807\uC809\uC80B",4,"\uC812\uC814\uC817",4,"\uC81E\uC81F\uC821\uC822\uC823\uC825",6,"\uC82E\uC830\uC832",5,"\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841",6,"\uC84A\uC84B\uC84E",5,"\uC855",26,"\uC872\uC873\uC875\uC876\uC877\uC879\uC87B",4,"\uC882\uC884\uC888\uC889\uC88A\uC88E",5,"\uC895",7,"\uC89E\uC8A0\uC8A2\uC8A3\uC8A4"],["a141","\uC8A5\uC8A6\uC8A7\uC8A9",18,"\uC8BE\uC8BF\uC8C0\uC8C1"],["a161","\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD",6,"\uC8D6\uC8D8\uC8DA",5,"\uC8E2\uC8E3\uC8E5"],["a181","\uC8E6",14,"\uC8F6",5,"\uC8FE\uC8FF\uC901\uC902\uC903\uC907",4,"\uC90E\u3000\u3001\u3002\xB7\u2025\u2026\xA8\u3003\xAD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008",9,"\xB1\xD7\xF7\u2260\u2264\u2265\u221E\u2234\xB0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\xA7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2"],["a241","\uC910\uC912",5,"\uC919",18],["a261","\uC92D",6,"\uC935",18],["a281","\uC948",7,"\uC952\uC953\uC955\uC956\uC957\uC959",6,"\uC962\uC964",7,"\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\xB4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\xB8\u02DB\xA1\xBF\u02D0\u222E\u2211\u220F\xA4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\xB6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\xAE"],["a341","\uC971\uC972\uC973\uC975",6,"\uC97D",10,"\uC98A\uC98B\uC98D\uC98E\uC98F"],["a361","\uC991",6,"\uC99A\uC99C\uC99E",16],["a381","\uC9AF",16,"\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB",4,"\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01",58,"\uFFE6\uFF3D",32,"\uFFE3"],["a441","\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2",5,"\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04"],["a461","\uCA05\uCA06\uCA07\uCA0A\uCA0E",5,"\uCA15\uCA16\uCA17\uCA19",12],["a481","\uCA26\uCA27\uCA28\uCA2A",28,"\u3131",93],["a541","\uCA47",4,"\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55",6,"\uCA5E\uCA62",5,"\uCA69\uCA6A"],["a561","\uCA6B",17,"\uCA7E",5,"\uCA85\uCA86"],["a581","\uCA87",16,"\uCA99",14,"\u2170",9],["a5b0","\u2160",9],["a5c1","\u0391",16,"\u03A3",6],["a5e1","\u03B1",16,"\u03C3",6],["a641","\uCAA8",19,"\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5"],["a661","\uCAC6",5,"\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA",5,"\uCAE1",6],["a681","\uCAE8\uCAE9\uCAEA\uCAEB\uCAED",6,"\uCAF5",18,"\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543",7],["a741","\uCB0B",4,"\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19",6,"\uCB22",7],["a761","\uCB2A",22,"\uCB42\uCB43\uCB44"],["a781","\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51",6,"\uCB5A\uCB5B\uCB5C\uCB5E",5,"\uCB65",7,"\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399",9,"\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0",9,"\u3380",4,"\u33BA",5,"\u3390",4,"\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6"],["a841","\uCB6D",10,"\uCB7A",14],["a861","\uCB89",18,"\uCB9D",6],["a881","\uCBA4",19,"\uCBB9",11,"\xC6\xD0\xAA\u0126"],["a8a6","\u0132"],["a8a8","\u013F\u0141\xD8\u0152\xBA\xDE\u0166\u014A"],["a8b1","\u3260",27,"\u24D0",25,"\u2460",14,"\xBD\u2153\u2154\xBC\xBE\u215B\u215C\u215D\u215E"],["a941","\uCBC5",14,"\uCBD5",10],["a961","\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA",18],["a981","\uCBFD",14,"\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15",6,"\uCC1E\uCC1F\uCC20\uCC23\uCC24\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0140\u0142\xF8\u0153\xDF\xFE\u0167\u014B\u0149\u3200",27,"\u249C",25,"\u2474",14,"\xB9\xB2\xB3\u2074\u207F\u2081\u2082\u2083\u2084"],["aa41","\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31",6,"\uCC3A\uCC3F",4,"\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E"],["aa61","\uCC4F",4,"\uCC56\uCC5A",5,"\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69",6,"\uCC71\uCC72"],["aa81","\uCC73\uCC74\uCC76",29,"\u3041",82],["ab41","\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1",6,"\uCCAA\uCCAE",5,"\uCCB6\uCCB7\uCCB9"],["ab61","\uCCBA\uCCBB\uCCBD",6,"\uCCC6\uCCC8\uCCCA",5,"\uCCD1\uCCD2\uCCD3\uCCD5",5],["ab81","\uCCDB",8,"\uCCE5",6,"\uCCED\uCCEE\uCCEF\uCCF1",12,"\u30A1",85],["ac41","\uCCFE\uCCFF\uCD00\uCD02",5,"\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11",6,"\uCD1A\uCD1C\uCD1E\uCD1F\uCD20"],["ac61","\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D",11,"\uCD3A",4],["ac81","\uCD3F",28,"\uCD5D\uCD5E\uCD5F\u0410",5,"\u0401\u0416",25],["acd1","\u0430",5,"\u0451\u0436",25],["ad41","\uCD61\uCD62\uCD63\uCD65",6,"\uCD6E\uCD70\uCD72",5,"\uCD79",7],["ad61","\uCD81",6,"\uCD89",10,"\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F"],["ad81","\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA",5,"\uCDB1",18,"\uCDC5"],["ae41","\uCDC6",5,"\uCDCD\uCDCE\uCDCF\uCDD1",16],["ae61","\uCDE2",5,"\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1",6,"\uCDFA\uCDFC\uCDFE",4],["ae81","\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D",6,"\uCE15\uCE16\uCE17\uCE18\uCE1A",5,"\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B"],["af41","\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36",19],["af61","\uCE4A",13,"\uCE5A\uCE5B\uCE5D\uCE5E\uCE62",5,"\uCE6A\uCE6C"],["af81","\uCE6E",5,"\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D",6,"\uCE86\uCE88\uCE8A",5,"\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99"],["b041","\uCE9A",5,"\uCEA2\uCEA6",5,"\uCEAE",12],["b061","\uCEBB",5,"\uCEC2",19],["b081","\uCED6",13,"\uCEE6\uCEE7\uCEE9\uCEEA\uCEED",6,"\uCEF6\uCEFA",5,"\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10",7,"\uAC19",4,"\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06"],["b141","\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09",6,"\uCF12\uCF14\uCF16",5,"\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23"],["b161","\uCF25",6,"\uCF2E\uCF32",5,"\uCF39",11],["b181","\uCF45",14,"\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D",6,"\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78"],["b241","\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79",6,"\uCF81\uCF82\uCF83\uCF84\uCF86",5,"\uCF8D"],["b261","\uCF8E",18,"\uCFA2",5,"\uCFA9"],["b281","\uCFAA",5,"\uCFB1",18,"\uCFC5",6,"\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059"],["b341","\uCFCC",19,"\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9"],["b361","\uCFEA",5,"\uCFF2\uCFF4\uCFF6",5,"\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005",5],["b381","\uD00B",5,"\uD012",5,"\uD019",19,"\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB",4,"\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD"],["b441","\uD02E",5,"\uD036\uD037\uD039\uD03A\uD03B\uD03D",6,"\uD046\uD048\uD04A",5],["b461","\uD051\uD052\uD053\uD055\uD056\uD057\uD059",6,"\uD061",10,"\uD06E\uD06F"],["b481","\uD071\uD072\uD073\uD075",6,"\uD07E\uD07F\uD080\uD082",18,"\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB",4,"\uB2F3\uB2F4\uB2F5\uB2F7",4,"\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365"],["b541","\uD095",14,"\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD",5],["b561","\uD0B3\uD0B6\uD0B8\uD0BA",5,"\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA",5,"\uD0D2\uD0D6",4],["b581","\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5",6,"\uD0EE\uD0F2",5,"\uD0F9",11,"\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538"],["b641","\uD105",7,"\uD10E",17],["b661","\uD120",15,"\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E"],["b681","\uD13F\uD142\uD146",5,"\uD14E\uD14F\uD151\uD152\uD153\uD155",6,"\uD15E\uD160\uD162",5,"\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797"],["b741","\uD16E",13,"\uD17D",6,"\uD185\uD186\uD187\uD189\uD18A"],["b761","\uD18B",20,"\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7"],["b781","\uD1A9",6,"\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1",14,"\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969"],["b841","\uD1D0",7,"\uD1D9",17],["b861","\uD1EB",8,"\uD1F5\uD1F6\uD1F7\uD1F9",13],["b881","\uD208\uD20A",5,"\uD211",24,"\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE",4,"\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC"],["b941","\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235",6,"\uD23E\uD240\uD242",5,"\uD249\uD24A\uD24B\uD24C"],["b961","\uD24D",14,"\uD25D",6,"\uD265\uD266\uD267\uD268"],["b981","\uD269",22,"\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14",4,"\uBC1B",4,"\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97"],["ba41","\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296",5,"\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5",6,"\uD2AD"],["ba61","\uD2AE\uD2AF\uD2B0\uD2B2",5,"\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3",4,"\uD2CA\uD2CC",5],["ba81","\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD",6,"\uD2E6",9,"\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64"],["bb41","\uD2FB",4,"\uD302\uD304\uD306",5,"\uD30F\uD311\uD312\uD313\uD315\uD317",4,"\uD31E\uD322\uD323"],["bb61","\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331",6,"\uD33A\uD33E",5,"\uD346\uD347\uD348\uD349"],["bb81","\uD34A",31,"\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4"],["bc41","\uD36A",17,"\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387"],["bc61","\uD388\uD389\uD38A\uD38B\uD38E\uD392",5,"\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1",6,"\uD3AA\uD3AC\uD3AE"],["bc81","\uD3AF",4,"\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD",6,"\uD3C6\uD3C7\uD3CA",5,"\uD3D1",5,"\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C",4,"\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D"],["bd41","\uD3D7\uD3D9",7,"\uD3E2\uD3E4",7,"\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7"],["bd61","\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402",5,"\uD409",13],["bd81","\uD417",5,"\uD41E",25,"\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430"],["be41","\uD438",7,"\uD441\uD442\uD443\uD445",14],["be61","\uD454",7,"\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465",7,"\uD46E\uD470\uD471\uD472"],["be81","\uD473",4,"\uD47A\uD47B\uD47D\uD47E\uD481\uD483",4,"\uD48A\uD48C\uD48E",5,"\uD495",8,"\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4",6,"\uC5CC\uC5CE"],["bf41","\uD49E",10,"\uD4AA",14],["bf61","\uD4B9",18,"\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5"],["bf81","\uD4D6",5,"\uD4DD\uD4DE\uD4E0",7,"\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1",6,"\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC",5,"\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8"],["c041","\uD4FE",5,"\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D",6,"\uD516\uD518",5],["c061","\uD51E",25],["c081","\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545",6,"\uD54E\uD550\uD552",5,"\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751",7,"\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A"],["c141","\uD564\uD566\uD567\uD56A\uD56C\uD56E",5,"\uD576\uD577\uD579\uD57A\uD57B\uD57D",6,"\uD586\uD58A\uD58B"],["c161","\uD58C\uD58D\uD58E\uD58F\uD591",19,"\uD5A6\uD5A7"],["c181","\uD5A8",31,"\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3"],["c241","\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3",4,"\uD5DA\uD5DC\uD5DE",5,"\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE"],["c261","\uD5EF",4,"\uD5F6\uD5F8\uD5FA",5,"\uD602\uD603\uD605\uD606\uD607\uD609",6,"\uD612"],["c281","\uD616",5,"\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625",7,"\uD62E",9,"\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B"],["c341","\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D",4],["c361","\uD662",4,"\uD668\uD66A",5,"\uD672\uD673\uD675",11],["c381","\uD681\uD682\uD684\uD686",5,"\uD68E\uD68F\uD691\uD692\uD693\uD695",7,"\uD69E\uD6A0\uD6A2",5,"\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35"],["c441","\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1",7,"\uD6BA\uD6BC",7,"\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB"],["c461","\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA",5,"\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9",4],["c481","\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6",5,"\uD6FE\uD6FF\uD701\uD702\uD703\uD705",11,"\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C"],["c541","\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721",6,"\uD72A\uD72C\uD72E",5,"\uD736\uD737\uD739"],["c561","\uD73A\uD73B\uD73D",6,"\uD745\uD746\uD748\uD74A",5,"\uD752\uD753\uD755\uD75A",4],["c581","\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775",6,"\uD77E\uD77F\uD780\uD782",5,"\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C"],["c641","\uD78D\uD78E\uD78F\uD791",6,"\uD79A\uD79C\uD79E",5],["c6a1","\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401"],["c7a1","\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620"],["c8a1","\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D"],["caa1","\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95"],["cba1","\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2"],["cca1","\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0"],["cda1","\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC"],["cea1","\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE"],["cfa1","\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4"],["d0a1","\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3"],["d1a1","\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E",5,"\u90A3\uF914",4,"\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925"],["d2a1","\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928",4,"\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933",5,"\u99D1\uF939",10,"\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A",7,"\u5AE9\u8A25\u677B\u7D10\uF952",5,"\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336"],["d3a1","\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843"],["d4a1","\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85"],["d5a1","\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23"],["d6a1","\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC"],["d7a1","\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C"],["d8a1","\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5"],["d9a1","\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587"],["daa1","\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51"],["dba1","\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656"],["dca1","\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66"],["dda1","\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5"],["dea1","\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A"],["dfa1","\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72"],["e0a1","\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C"],["e1a1","\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101"],["e2a1","\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27"],["e3a1","\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81"],["e4a1","\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D"],["e5a1","\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982"],["e6a1","\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2"],["e7a1","\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3"],["e8a1","\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1"],["e9a1","\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553"],["eaa1","\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB"],["eba1","\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC"],["eca1","\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344"],["eda1","\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577"],["eea1","\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1"],["efa1","\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756"],["f0a1","\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B"],["f1a1","\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA"],["f2a1","\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F"],["f3a1","\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56"],["f4a1","\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2"],["f5a1","\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403"],["f6a1","\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17"],["f7a1","\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211"],["f8a1","\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43"],["f9a1","\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A"],["faa1","\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B"],["fba1","\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575"],["fca1","\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6"],["fda1","\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70"]]});var xh=P((YW,ZC)=>{ZC.exports=[["0","\0",127],["a140","\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\xB7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A"],["a1a1","\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\xA7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\xAF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\xD7\xF7\xB1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62",4,"\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F"],["a240","\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\xB0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581",7,"\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D"],["a2a1","\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10",9,"\u2160",9,"\u3021",8,"\u5341\u5344\u5345\uFF21",25,"\uFF41",21],["a340","\uFF57\uFF58\uFF59\uFF5A\u0391",16,"\u03A3",6,"\u03B1",16,"\u03C3",6,"\u3105",10],["a3a1","\u3110",25,"\u02D9\u02C9\u02CA\u02C7\u02CB"],["a3e1","\u20AC"],["a440","\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D"],["a4a1","\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19"],["a540","\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916"],["a5a1","\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168"],["a640","\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74"],["a6a1","\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63"],["a740","\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D"],["a7a1","\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760"],["a840","\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292"],["a8a1","\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475"],["a940","\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45"],["a9a1","\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A"],["aa40","\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0"],["aaa1","\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644"],["ab40","\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1"],["aba1","\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7"],["ac40","\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17"],["aca1","\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004"],["ad40","\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5"],["ada1","\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA"],["ae40","\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059"],["aea1","\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93"],["af40","\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837"],["afa1","\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343"],["b040","\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661"],["b0a1","\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40"],["b140","\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD"],["b1a1","\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA"],["b240","\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6"],["b2a1","\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C"],["b340","\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014"],["b3a1","\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960"],["b440","\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD"],["b4a1","\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB"],["b540","\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98"],["b5a1","\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41"],["b640","\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591"],["b6a1","\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC"],["b740","\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D"],["b7a1","\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763"],["b840","\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B"],["b8a1","\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A"],["b940","\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4"],["b9a1","\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147"],["ba40","\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22"],["baa1","\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC"],["bb40","\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4"],["bba1","\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC"],["bc40","\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182"],["bca1","\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483"],["bd40","\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF"],["bda1","\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E"],["be40","\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09"],["bea1","\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1"],["bf40","\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A"],["bfa1","\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A"],["c040","\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687"],["c0a1","\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC"],["c140","\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA"],["c1a1","\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01"],["c240","\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658"],["c2a1","\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6"],["c340","\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378"],["c3a1","\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E"],["c440","\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C"],["c4a1","\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74"],["c540","\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C"],["c5a1","\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92"],["c640","\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72"],["c940","\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15"],["c9a1","\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B"],["ca40","\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418"],["caa1","\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747"],["cb40","\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293"],["cba1","\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762"],["cc40","\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B"],["cca1","\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2"],["cd40","\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA"],["cda1","\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF"],["ce40","\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB"],["cea1","\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA"],["cf40","\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42"],["cfa1","\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80"],["d040","\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA"],["d0a1","\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1"],["d140","\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067"],["d1a1","\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4"],["d240","\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278"],["d2a1","\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10"],["d340","\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322"],["d3a1","\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150"],["d440","\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545"],["d4a1","\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F"],["d540","\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F"],["d5a1","\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9"],["d640","\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF"],["d6a1","\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F"],["d740","\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7"],["d7a1","\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA"],["d840","\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837"],["d8a1","\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114"],["d940","\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2"],["d9a1","\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E"],["da40","\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416"],["daa1","\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65"],["db40","\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3"],["dba1","\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA"],["dc40","\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688"],["dca1","\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6"],["dd40","\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424"],["dda1","\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC"],["de40","\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153"],["dea1","\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13"],["df40","\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F"],["dfa1","\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4"],["e040","\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F"],["e0a1","\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0"],["e140","\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0"],["e1a1","\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9"],["e240","\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A"],["e2a1","\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993"],["e340","\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE"],["e3a1","\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB"],["e440","\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D"],["e4a1","\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658"],["e540","\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189"],["e5a1","\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92"],["e640","\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359"],["e6a1","\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F"],["e740","\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662"],["e7a1","\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27"],["e840","\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3"],["e8a1","\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E"],["e940","\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA"],["e9a1","\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8"],["ea40","\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799"],["eaa1","\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558"],["eb40","\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0"],["eba1","\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C"],["ec40","\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95"],["eca1","\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E"],["ed40","\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6"],["eda1","\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E"],["ee40","\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E"],["eea1","\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C"],["ef40","\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30"],["efa1","\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376"],["f040","\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2"],["f0a1","\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67"],["f140","\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA"],["f1a1","\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70"],["f240","\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B"],["f2a1","\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55"],["f340","\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726"],["f3a1","\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2"],["f440","\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929"],["f4a1","\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF"],["f540","\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B"],["f5a1","\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625"],["f640","\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A"],["f6a1","\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A"],["f740","\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A"],["f7a1","\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE"],["f840","\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F"],["f8a1","\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A"],["f940","\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A"],["f9a1","\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593"]]});var jx=P(($W,QC)=>{QC.exports=[["8740","\u43F0\u4C32\u4603\u45A6\u4578\u{27267}\u4D77\u45B3\u{27CB1}\u4CE2\u{27CC5}\u3B95\u4736\u4744\u4C47\u4C40\u{242BF}\u{23617}\u{27352}\u{26E8B}\u{270D2}\u4C57\u{2A351}\u474F\u45DA\u4C85\u{27C6C}\u4D07\u4AA4\u46A1\u{26B23}\u7225\u{25A54}\u{21A63}\u{23E06}\u{23F61}\u664D\u56FB"],["8767","\u7D95\u591D\u{28BB9}\u3DF4\u9734\u{27BEF}\u5BDB\u{21D5E}\u5AA4\u3625\u{29EB0}\u5AD1\u5BB7\u5CFC\u676E\u8593\u{29945}\u7461\u749D\u3875\u{21D53}\u{2369E}\u{26021}\u3EEC"],["87a1","\u{258DE}\u3AF5\u7AFC\u9F97\u{24161}\u{2890D}\u{231EA}\u{20A8A}\u{2325E}\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\u{25DB9}\u74C6\u9FC7\u57B3\u492F\u544C\u4131\u{2368E}\u5818\u7A72\u{27B65}\u8B8F\u46AE\u{26E88}\u4181\u{25D99}\u7BAE\u{224BC}\u9FC8\u{224C1}\u{224C9}\u{224CC}\u9FC9\u8504\u{235BB}\u40B4\u9FCA\u44E1\u{2ADFF}\u62C1\u706E\u9FCB"],["8840","\u31C0",4,"\u{2010C}\u31C5\u{200D1}\u{200CD}\u31C6\u31C7\u{200CB}\u{21FE8}\u31C8\u{200CA}\u31C9\u31CA\u31CB\u31CC\u{2010E}\u31CD\u31CE\u0100\xC1\u01CD\xC0\u0112\xC9\u011A\xC8\u014C\xD3\u01D1\xD2\u0FFF\xCA\u0304\u1EBE\u0FFF\xCA\u030C\u1EC0\xCA\u0101\xE1\u01CE\xE0\u0251\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA"],["88a1","\u01DC\xFC\u0FFF\xEA\u0304\u1EBF\u0FFF\xEA\u030C\u1EC1\xEA\u0261\u23DA\u23DB"],["8940","\u{2A3A9}\u{21145}"],["8943","\u650A"],["8946","\u4E3D\u6EDD\u9D4E\u91DF"],["894c","\u{27735}\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E"],["89a1","\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227"],["89ab","\u918C\u78B8\u915E\u80BC"],["89b0","\u8D0B\u80F6\u{209E7}"],["89b5","\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\u{29DF6}\u{2700E}\u9E0A\u{2A133}\u35C1"],["89c1","\u6E9A\u823E\u7519"],["89c5","\u4911\u9A6C\u9A8F\u9F99\u7987\u{2846C}\u{21DCA}\u{205D0}\u{22AE6}\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5"],["8a40","\u{27D84}\u5525"],["8a43","\u{20C42}\u{20D15}\u{2512B}\u5590\u{22CC6}\u39EC\u{20341}\u8E46\u{24DB8}\u{294E5}\u4053\u{280BE}\u777A\u{22C38}\u3A34\u47D5\u{2815D}\u{269F2}\u{24DEA}\u64DD\u{20D7C}\u{20FB4}\u{20CD5}\u{210F4}\u648D\u8E7E\u{20E96}\u{20C0B}\u{20F64}\u{22CA9}\u{28256}\u{244D3}"],["8a64","\u{20D46}\u{29A4D}\u{280E9}\u47F4\u{24EA7}\u{22CC2}\u9AB2\u3A67\u{295F4}\u3FED\u3506\u{252C7}\u{297D4}\u{278C8}\u{22D44}\u9D6E\u9815"],["8a76","\u43D9\u{260A5}\u64B4\u54E3\u{22D4C}\u{22BCA}\u{21077}\u39FB\u{2106F}"],["8aa1","\u{266DA}\u{26716}\u{279A0}\u64EA\u{25052}\u{20C43}\u8E68\u{221A1}\u{28B4C}\u{20731}"],["8aac","\u480B\u{201A9}\u3FFA\u5873\u{22D8D}"],["8ab2","\u{245C8}\u{204FC}\u{26097}\u{20F4C}\u{20D96}\u5579\u40BB\u43BA"],["8abb","\u4AB4\u{22A66}\u{2109D}\u81AA\u98F5\u{20D9C}\u6379\u39FE\u{22775}\u8DC0\u56A1\u647C\u3E43"],["8ac9","\u{2A601}\u{20E09}\u{22ACF}\u{22CC9}"],["8ace","\u{210C8}\u{239C2}\u3992\u3A06\u{2829B}\u3578\u{25E49}\u{220C7}\u5652\u{20F31}\u{22CB2}\u{29720}\u34BC\u6C3D\u{24E3B}"],["8adf","\u{27574}\u{22E8B}\u{22208}\u{2A65B}\u{28CCD}\u{20E7A}\u{20C34}\u{2681C}\u7F93\u{210CF}\u{22803}\u{22939}\u35FB\u{251E3}\u{20E8C}\u{20F8D}\u{20EAA}\u3F93\u{20F30}\u{20D47}\u{2114F}\u{20E4C}"],["8af6","\u{20EAB}\u{20BA9}\u{20D48}\u{210C0}\u{2113D}\u3FF9\u{22696}\u6432\u{20FAD}"],["8b40","\u{233F4}\u{27639}\u{22BCE}\u{20D7E}\u{20D7F}\u{22C51}\u{22C55}\u3A18\u{20E98}\u{210C7}\u{20F2E}\u{2A632}\u{26B50}\u{28CD2}\u{28D99}\u{28CCA}\u95AA\u54CC\u82C4\u55B9"],["8b55","\u{29EC3}\u9C26\u9AB6\u{2775E}\u{22DEE}\u7140\u816D\u80EC\u5C1C\u{26572}\u8134\u3797\u535F\u{280BD}\u91B6\u{20EFA}\u{20E0F}\u{20E77}\u{20EFB}\u35DD\u{24DEB}\u3609\u{20CD6}\u56AF\u{227B5}\u{210C9}\u{20E10}\u{20E78}\u{21078}\u{21148}\u{28207}\u{21455}\u{20E79}\u{24E50}\u{22DA4}\u5A54\u{2101D}\u{2101E}\u{210F5}\u{210F6}\u579C\u{20E11}"],["8ba1","\u{27694}\u{282CD}\u{20FB5}\u{20E7B}\u{2517E}\u3703\u{20FB6}\u{21180}\u{252D8}\u{2A2BD}\u{249DA}\u{2183A}\u{24177}\u{2827C}\u5899\u5268\u361A\u{2573D}\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\u{25B74}\u{2313D}\u55FB\u35F2\u5689\u4E28\u5902\u{21BC1}\u{2F878}\u9751\u{20086}\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\u{248E9}\u7F52\u793B\u7CF9\u7F53\u{2626A}\u34C1"],["8bde","\u{2634B}\u8002\u8080\u{26612}\u{26951}\u535D\u8864\u89C1\u{278B2}\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\u{28E0F}\u97E6\u9875\u98CE\u98DE\u9963\u{29810}\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\u{20087}\u961D\u6237\u94A2"],["8c40","\u503B\u6DFE\u{29C73}\u9FA6\u3DC9\u888F\u{2414E}\u7077\u5CF5\u4B20\u{251CD}\u3559\u{25D30}\u6122\u{28A32}\u8FA7\u91F6\u7191\u6719\u73BA\u{23281}\u{2A107}\u3C8B\u{21980}\u4B10\u78E4\u7402\u51AE\u{2870F}\u4009\u6A63\u{2A2BA}\u4223\u860F\u{20A6F}\u7A2A\u{29947}\u{28AEA}\u9755\u704D\u5324\u{2207E}\u93F4\u76D9\u{289E3}\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\u{21DB6}\u5E92\u5E99\u5FC2\u{22712}\u658B"],["8ca1","\u{233F9}\u6919\u6A43\u{23C63}\u6CFF"],["8ca7","\u7200\u{24505}\u738C\u3EDB\u{24A13}\u5B15\u74B9\u8B83\u{25CA4}\u{25695}\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\u{28DB9}\u{2143F}\u4071\u42A2\u5A1A"],["8cc9","\u9868\u676B\u4276\u573D"],["8cce","\u85D6\u{2497B}\u82BF\u{2710D}\u4C81\u{26D74}\u5D7B\u{26B15}\u{26FBE}\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\u{23256}\u{22796}\u439A\u4536"],["8ce6","\u5CD5\u{23B1A}\u8AF9\u5C78\u3D12\u{23551}\u5D78\u9FB2\u7157\u4558\u{240EC}\u{21E23}\u4C77\u3978\u344A\u{201A4}\u{26C41}\u8ACC\u4FB4\u{20239}\u59BF\u816C\u9856\u{298FA}\u5F3B"],["8d40","\u{20B9F}"],["8d42","\u{221C1}\u{2896D}\u4102\u46BB\u{29079}\u3F07\u9FB3\u{2A1B5}\u40F8\u37D6\u46F7\u{26C46}\u417C\u{286B2}\u{273FF}\u456D\u38D4\u{2549A}\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\u{24B0F}\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1"],["8da1","\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\u{289C0}\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\u{23F41}\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\u{20325}\u43C1\u35F1\u{20ED8}"],["8e40","\u{23ED7}\u57BE\u{26ED3}\u713E\u{257E0}\u364E\u69A2\u{28BE9}\u5B74\u7A49\u{258E1}\u{294D9}\u7A65\u7A7D\u{259AC}\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\u{2648D}\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\u{25C01}\u7B0B\u7B55\u7B29\u{2530E}\u{25CFE}\u7BA2\u7B6F\u839C\u{25BB4}\u{26C7F}\u7BD0\u8421\u7B92\u7BB8\u{25D20}\u3DAD\u{25C65}\u8492\u7BFA\u7C06\u7C35\u{25CC1}\u7C44\u7C83\u{24882}\u7CA6\u667D\u{24578}\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE"],["8ea1","\u7E67\u451D\u{26E44}\u7D5D\u{26ED6}\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\u{24057}\u{26029}\u7DE4\u3D13\u7DF5\u{217F9}\u7DE5\u{2836D}\u7E1D\u{26121}\u{2615A}\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\u{262D0}\u99E1\u7F97\u{26351}\u7FA3\u{21661}\u{20068}\u455C\u{23766}\u4503\u{2833A}\u7FFA\u{26489}\u8005\u8008\u801D\u8028\u802F\u{2A087}\u{26CC3}\u803B\u803C\u8061\u{22714}\u4989\u{26626}\u{23DE3}\u{266E8}\u6725\u80A7\u{28A48}\u8107\u811A\u58B0\u{226F6}\u6C7F\u{26498}\u{24FB8}\u64E7\u{2148A}\u8218\u{2185E}\u6A53\u{24A65}\u{24A95}\u447A\u8229\u{20B0D}\u{26A52}\u{23D7E}\u4FF9\u{214FD}\u84E2\u8362\u{26B0A}\u{249A7}\u{23530}\u{21773}\u{23DF8}\u82AA\u691B\u{2F994}\u41DB"],["8f40","\u854B\u82D0\u831A\u{20E16}\u{217B4}\u36C1\u{2317D}\u{2355A}\u827B\u82E2\u8318\u{23E8B}\u{26DA3}\u{26B05}\u{26B97}\u{235CE}\u3DBF\u831D\u55EC\u8385\u450B\u{26DA5}\u83AC\u83C1\u83D3\u347E\u{26ED4}\u6A57\u855A\u3496\u{26E42}\u{22EEF}\u8458\u{25BE4}\u8471\u3DD3\u44E4\u6AA7\u844A\u{23CB5}\u7958\u84A8\u{26B96}\u{26E77}\u{26E43}\u84DE\u840F\u8391\u44A0\u8493\u84E4\u{25C91}\u4240\u{25CC0}\u4543\u8534\u5AF2\u{26E99}\u4527\u8573\u4516\u67BF\u8616"],["8fa1","\u{28625}\u{2863B}\u85C1\u{27088}\u8602\u{21582}\u{270CD}\u{2F9B2}\u456A\u8628\u3648\u{218A2}\u53F7\u{2739A}\u867E\u8771\u{2A0F8}\u87EE\u{22C27}\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\u{275E0}\u{23DB9}\u{275E4}\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\u{2770F}\u8987\u898A\u89A6\u89A9\u89A7\u89BC\u{28A25}\u89E7\u{27924}\u{27ABD}\u8A9C\u7793\u91FE\u8A90\u{27A59}\u7AE9\u{27B3A}\u{23F8F}\u4713\u{27B38}\u717C\u8B0C\u8B1F\u{25430}\u{25565}\u8B3F\u8B4C\u8B4D\u8AA9\u{24A7A}\u8B90\u8B9B\u8AAF\u{216DF}\u4615\u884F\u8C9B\u{27D54}\u{27D8F}\u{2F9D4}\u3725\u{27D53}\u8CD6\u{27D98}\u{27DBD}\u8D12\u8D03\u{21910}\u8CDB\u705C\u8D11\u{24CC9}\u3ED0\u8D77"],["9040","\u8DA9\u{28002}\u{21014}\u{2498A}\u3B7C\u{281BC}\u{2710C}\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\u{28365}\u{28412}\u8FA5\u9303\u{2A29F}\u{20A50}\u8FB3\u492A\u{289DE}\u{2853D}\u{23DBB}\u5EF8\u{23262}\u8FF9\u{2A014}\u{286BC}\u{28501}\u{22325}\u3980\u{26ED7}\u9037\u{2853C}\u{27ABE}\u9061\u{2856C}\u{2860B}\u90A8\u{28713}\u90C4\u{286E6}\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\u{28933}\u{21E89}\u920E\u6C9F\u9241\u9262\u{255B9}\u92B9\u{28AC6}\u{23C9B}\u{28B0C}\u{255DB}"],["90a1","\u{20D31}\u932C\u936B\u{28AE1}\u{28BEB}\u708F\u5AC3\u{28AE2}\u{28AE5}\u4965\u9244\u{28BEC}\u{28C39}\u{28BFF}\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\u{2267A}\u{286D8}\u{2127C}\u{23E2E}\u49DF\u6C1C\u967B\u9696\u416C\u96A3\u{26ED5}\u61DA\u96B6\u78F5\u{28AE0}\u96BD\u53CC\u49A1\u{26CB8}\u{20274}\u{26410}\u{290AF}\u{290E5}\u{24AD1}\u{21915}\u{2330A}\u9731\u8642\u9736\u4A0F\u453D\u4585\u{24AE9}\u7075\u5B41\u971B\u975C\u{291D5}\u9757\u5B4A\u{291EB}\u975F\u9425\u50D0\u{230B7}\u{230BC}\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\u{2546C}\u97EE\u741C\u{29433}\u97FF\u97F5\u{2941D}\u{2797A}\u4AD1\u9834\u9833\u984B\u9866\u3B0E\u{27175}\u3D51\u{20630}\u{2415C}"],["9140","\u{25706}\u98CA\u98B7\u98C8\u98C7\u4AFF\u{26D27}\u{216D3}\u55B0\u98E1\u98E6\u98EC\u9378\u9939\u{24A29}\u4B72\u{29857}\u{29905}\u99F5\u9A0C\u9A3B\u9A10\u9A58\u{25725}\u36C4\u{290B1}\u{29BD5}\u9AE0\u9AE2\u{29B05}\u9AF4\u4C0E\u9B14\u9B2D\u{28600}\u5034\u9B34\u{269A8}\u38C3\u{2307D}\u9B50\u9B40\u{29D3E}\u5A45\u{21863}\u9B8E\u{2424B}\u9C02\u9BFF\u9C0C\u{29E68}\u9DD4\u{29FB7}\u{2A192}\u{2A1AB}\u{2A0E1}\u{2A123}\u{2A1DF}\u9D7E\u9D83\u{2A134}\u9E0E\u6888"],["91a1","\u9DC4\u{2215B}\u{2A193}\u{2A220}\u{2193B}\u{2A233}\u9D39\u{2A0B9}\u{2A2B4}\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\u{24364}\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\u{28C2B}\u9F02\u9F08\u4B96\u9424\u{26DA2}\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\u{2908B}\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\u{24975}\u{249BB}\u7177\u{249F8}\u{24348}\u{24A51}\u739E\u{28BDA}\u{218FA}\u799F\u{2897E}\u{28E36}\u9369\u93F3\u{28A44}\u92EC\u9381\u93CB\u{2896C}\u{244B9}\u7217\u3EEB\u7772\u7A43\u70D0\u{24473}\u{243F8}\u717E\u{217EF}\u70A3\u{218BE}\u{23599}\u3EC7\u{21885}\u{2542F}\u{217F8}\u3722\u{216FB}\u{21839}\u36E1\u{21774}\u{218D1}\u{25F4B}\u3723\u{216C0}\u575B\u{24A25}\u{213FE}\u{212A8}"],["9240","\u{213C6}\u{214B6}\u8503\u{236A6}\u8503\u8455\u{24994}\u{27165}\u{23E31}\u{2555C}\u{23EFB}\u{27052}\u44F4\u{236EE}\u{2999D}\u{26F26}\u67F9\u3733\u3C15\u3DE7\u586C\u{21922}\u6810\u4057\u{2373F}\u{240E1}\u{2408B}\u{2410F}\u{26C21}\u54CB\u569E\u{266B1}\u5692\u{20FDF}\u{20BA8}\u{20E0D}\u93C6\u{28B13}\u939C\u4EF8\u512B\u3819\u{24436}\u4EBC\u{20465}\u{2037F}\u4F4B\u4F8A\u{25651}\u5A68\u{201AB}\u{203CB}\u3999\u{2030A}\u{20414}\u3435\u4F29\u{202C0}\u{28EB3}\u{20275}\u8ADA\u{2020C}\u4E98"],["92a1","\u50CD\u510D\u4FA2\u4F03\u{24A0E}\u{23E8A}\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\u{23595}\u{23E39}\u{23EBF}\u6D72\u{21884}\u{23E89}\u51A8\u51C3\u{205E0}\u44DD\u{204A3}\u{20492}\u{20491}\u8D7A\u{28A9C}\u{2070E}\u5259\u52A4\u{20873}\u52E1\u936E\u467A\u718C\u{2438C}\u{20C20}\u{249AC}\u{210E4}\u69D1\u{20E1D}\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\u{24ABC}\u{2408D}\u53D0\u3584\u720F\u{240C9}\u55B4\u{20345}\u54CD\u{20BC6}\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\u{28A46}\u{216FA}\u{2176F}\u{21710}\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\u{25946}\u{219F3}\u{21861}\u{24295}\u36F5\u6D05\u7443\u5A21\u{25E83}"],["9340","\u5A81\u{28BD7}\u{20413}\u93E0\u748C\u{21303}\u7105\u4972\u9408\u{289FB}\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\u{21996}\u{2197C}\u{23AEE}\u5ECD\u5B4F\u{21903}\u{21904}\u3701\u{218A0}\u36DD\u{216FE}\u36D3\u812A\u{28A47}\u{21DBA}\u{23472}\u{289A8}\u5F0C\u5F0E\u{21927}\u{217AB}\u5A6B\u{2173B}\u5B44\u8614\u{275FD}\u8860\u607E\u{22860}\u{2262B}\u5FDB\u3EB8\u{225AF}\u{225BE}\u{29088}\u{26F73}\u61C0\u{2003E}\u{20046}\u{2261B}\u6199\u6198\u6075\u{22C9B}\u{22D07}\u{246D4}\u{2914D}"],["93a1","\u6471\u{24665}\u{22B6A}\u3A29\u{22B22}\u{23450}\u{298EA}\u{22E78}\u6337\u{2A45B}\u64B6\u6331\u63D1\u{249E3}\u{22D67}\u62A4\u{22CA1}\u643B\u656B\u6972\u3BF4\u{2308E}\u{232AD}\u{24989}\u{232AB}\u550D\u{232E0}\u{218D9}\u{2943F}\u66CE\u{23289}\u{231B3}\u3AE0\u4190\u{25584}\u{28B22}\u{2558F}\u{216FC}\u{2555B}\u{25425}\u78EE\u{23103}\u{2182A}\u{23234}\u3464\u{2320F}\u{23182}\u{242C9}\u668E\u{26D24}\u666B\u4B93\u6630\u{27870}\u{21DEB}\u6663\u{232D2}\u{232E1}\u661E\u{25872}\u38D1\u{2383A}\u{237BC}\u3B99\u{237A2}\u{233FE}\u74D0\u3B96\u678F\u{2462A}\u68B6\u681E\u3BC4\u6ABE\u3863\u{237D5}\u{24487}\u6A33\u6A52\u6AC9\u6B05\u{21912}\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\u{23FC0}\u{23C9A}\u93A0\u92F2\u{28BEA}\u{28ACB}"],["9440","\u9289\u{2801E}\u{289DC}\u9467\u6DA5\u6F0B\u{249EC}\u6D67\u{23F7F}\u3D8F\u6E04\u{2403C}\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\u{2431A}\u{24276}\u70F1\u7250\u7287\u7294\u{2478F}\u{24725}\u5179\u{24AA4}\u{205EB}\u747A\u{23EF8}\u{2365F}\u{24A4A}\u{24917}\u{25FE1}\u3F06\u3EB1\u{24ADF}\u{28C23}\u{23F35}\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\u{26DEA}\u4551\u7583\u3F63\u{24CD9}\u{24D06}\u3F58\u7555\u7673\u{2A5C6}\u3B19\u7468\u{28ACC}\u{249AB}\u{2498E}\u3AFB"],["94a1","\u3DCD\u{24A4E}\u3EFF\u{249C5}\u{248F3}\u91FA\u5732\u9342\u{28AE3}\u{21864}\u50DF\u{25221}\u{251E7}\u7778\u{23232}\u770E\u770F\u777B\u{24697}\u{23781}\u3A5E\u{248F0}\u7438\u749B\u3EBF\u{24ABA}\u{24AC7}\u40C8\u{24A96}\u{261AE}\u9307\u{25581}\u781E\u788D\u7888\u78D2\u73D0\u7959\u{27741}\u{256E3}\u410E\u799B\u8496\u79A5\u6A2D\u{23EFA}\u7A3A\u79F4\u416E\u{216E6}\u4132\u9235\u79F1\u{20D4C}\u{2498C}\u{20299}\u{23DBA}\u{2176E}\u3597\u556B\u3570\u36AA\u{201D4}\u{20C0D}\u7AE2\u5A59\u{226F5}\u{25AAF}\u{25A9C}\u5A0D\u{2025B}\u78F0\u5A2A\u{25BC6}\u7AFE\u41F9\u7C5D\u7C6D\u4211\u{25BB3}\u{25EBC}\u{25EA6}\u7CCD\u{249F9}\u{217B0}\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\u{26261}"],["9540","\u{2615C}\u{27B48}\u7D97\u{25E82}\u426A\u{26B75}\u{20916}\u67D6\u{2004E}\u{235CF}\u57C4\u{26412}\u{263F8}\u{24962}\u7FDD\u7B27\u{2082C}\u{25AE9}\u{25D43}\u7B0C\u{25E0E}\u99E6\u8645\u9A63\u6A1C\u{2343F}\u39E2\u{249F7}\u{265AD}\u9A1F\u{265A0}\u8480\u{27127}\u{26CD1}\u44EA\u8137\u4402\u80C6\u8109\u8142\u{267B4}\u98C3\u{26A42}\u8262\u8265\u{26A51}\u8453\u{26DA7}\u8610\u{2721B}\u5A86\u417F\u{21840}\u5B2B\u{218A1}\u5AE4\u{218D8}\u86A0\u{2F9BC}\u{23D8F}\u882D\u{27422}\u5A02"],["95a1","\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\u{25683}\u8954\u{27785}\u{27784}\u{28BF5}\u{28BD9}\u{28B9C}\u{289F9}\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\u{29448}\u5F4D\u922B\u{24284}\u65D4\u7129\u70C4\u{21845}\u9D6D\u8C9F\u8CE9\u{27DDC}\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\u{24C09}\u8F30\u8F4A\u42F4\u6C58\u6FBB\u{22321}\u489B\u6F79\u6E8B\u{217DA}\u9BE9\u36B5\u{2492F}\u90BB\u9097\u5571\u4906\u91BB\u9404\u{28A4B}\u4062\u{28AFC}\u9427\u{28C1D}\u{28C3B}\u84E5\u8A2B\u9599\u95A7\u9597\u9596\u{28D34}\u7445\u3EC2\u{248FF}\u{24A42}\u{243EA}\u3EE7\u{23225}\u968F\u{28EE7}\u{28E66}\u{28E65}\u3ECC\u{249ED}\u{24A78}\u{23FEE}\u7412\u746B\u3EFC\u9741\u{290B0}"],["9640","\u6847\u4A1D\u{29093}\u{257DF}\u975D\u9368\u{28989}\u{28C26}\u{28B2F}\u{263BE}\u92BA\u5B11\u8B69\u493C\u73F9\u{2421B}\u979B\u9771\u9938\u{20F26}\u5DC1\u{28BC5}\u{24AB2}\u981F\u{294DA}\u92F6\u{295D7}\u91E5\u44C0\u{28B50}\u{24A67}\u{28B64}\u98DC\u{28A45}\u3F00\u922A\u4925\u8414\u993B\u994D\u{27B06}\u3DFD\u999B\u4B6F\u99AA\u9A5C\u{28B65}\u{258C8}\u6A8F\u9A21\u5AFE\u9A2F\u{298F1}\u4B90\u{29948}\u99BC\u4BBD\u4B97\u937D\u5872\u{21302}\u5822\u{249B8}"],["96a1","\u{214E8}\u7844\u{2271F}\u{23DB8}\u68C5\u3D7D\u9458\u3927\u6150\u{22781}\u{2296B}\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\u{29E2D}\u9B9F\u{2A1F5}\u{2A0FE}\u9D21\u4CAE\u{24104}\u9E18\u4CB0\u9D0C\u{2A1B4}\u{2A0ED}\u{2A0F3}\u{2992F}\u9DA5\u84BD\u{26E12}\u{26FDF}\u{26B82}\u85FC\u4533\u{26DA4}\u{26E84}\u{26DF0}\u8420\u85EE\u{26E00}\u{237D7}\u{26064}\u79E2\u{2359C}\u{23640}\u492D\u{249DE}\u3D62\u93DB\u92BE\u9348\u{202BF}\u78B9\u9277\u944D\u4FE4\u3440\u9064\u{2555D}\u783D\u7854\u78B6\u784B\u{21757}\u{231C9}\u{24941}\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\u{241B5}\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\u{241AC}\u71EB\u{26C40}\u{24F97}\u5B28\u{217B5}\u{28A49}"],["9740","\u610C\u5ACE\u5A0B\u42BC\u{24488}\u372C\u4B7B\u{289FC}\u93BB\u93B8\u{218D6}\u{20F1D}\u8472\u{26CC0}\u{21413}\u{242FA}\u{22C26}\u{243C1}\u5994\u{23DB7}\u{26741}\u7DA8\u{2615B}\u{260A4}\u{249B9}\u{2498B}\u{289FA}\u92E5\u73E2\u3EE9\u74B4\u{28B63}\u{2189F}\u3EE1\u{24AB3}\u6AD8\u73F3\u73FB\u3ED6\u{24A3E}\u{24A94}\u{217D9}\u{24A66}\u{203A7}\u{21424}\u{249E5}\u7448\u{24916}\u70A5\u{24976}\u9284\u73E6\u935F\u{204FE}\u9331\u{28ACE}\u{28A16}\u9386\u{28BE7}\u{255D5}\u4935\u{28A82}\u716B"],["97a1","\u{24943}\u{20CFF}\u56A4\u{2061A}\u{20BEB}\u{20CB8}\u5502\u79C4\u{217FA}\u7DFE\u{216C2}\u{24A50}\u{21852}\u452E\u9401\u370A\u{28AC0}\u{249AD}\u59B0\u{218BF}\u{21883}\u{27484}\u5AA1\u36E2\u{23D5B}\u36B0\u925F\u5A79\u{28A81}\u{21862}\u9374\u3CCD\u{20AB4}\u4A96\u398A\u50F4\u3D69\u3D4C\u{2139C}\u7175\u42FB\u{28218}\u6E0F\u{290E4}\u44EB\u6D57\u{27E4F}\u7067\u6CAF\u3CD6\u{23FED}\u{23E2D}\u6E02\u6F0C\u3D6F\u{203F5}\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\u{28C1C}\u{26BC0}\u5812\u57C8\u36D6\u{21452}\u70FE\u{24362}\u{24A71}\u{22FE3}\u{212B0}\u{223BD}\u68B9\u6967\u{21398}\u{234E5}\u{27BF4}\u{236DF}\u{28A83}\u{237D6}\u{233FA}\u{24C9F}\u6A1A\u{236AD}\u{26CB7}\u843E\u44DF\u44CE"],["9840","\u{26D26}\u{26D51}\u{26C82}\u{26FDE}\u6F17\u{27109}\u833D\u{2173A}\u83ED\u{26C80}\u{27053}\u{217DB}\u5989\u5A82\u{217B3}\u5A61\u5A71\u{21905}\u{241FC}\u372D\u59EF\u{2173C}\u36C7\u718E\u9390\u669A\u{242A5}\u5A6E\u5A2B\u{24293}\u6A2B\u{23EF9}\u{27736}\u{2445B}\u{242CA}\u711D\u{24259}\u{289E1}\u4FB0\u{26D28}\u5CC2\u{244CE}\u{27E4D}\u{243BD}\u6A0C\u{24256}\u{21304}\u70A6\u7133\u{243E9}\u3DA5\u6CDF\u{2F825}\u{24A4F}\u7E65\u59EB\u5D2F\u3DF3\u5F5C\u{24A5D}\u{217DF}\u7DA4\u8426"],["98a1","\u5485\u{23AFA}\u{23300}\u{20214}\u577E\u{208D5}\u{20619}\u3FE5\u{21F9E}\u{2A2B6}\u7003\u{2915B}\u5D70\u738F\u7CD3\u{28A59}\u{29420}\u4FC8\u7FE7\u72CD\u7310\u{27AF4}\u7338\u7339\u{256F6}\u7341\u7348\u3EA9\u{27B18}\u906C\u71F5\u{248F2}\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\u{24F5C}\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\u{25535}\u7933\u6803\u7932\u4103"],["9940","\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\u{20CCF}\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A"],["99a1","\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\u{27967}\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF"],["9a40","\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\u{21BC2}\u9D49\u9C3A"],["9aa1","\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\u{20094}\u{202B7}\u{203A0}\u691A\u94C3\u59AC\u{204D7}\u5840\u94C1\u37B9\u{205D5}\u{20615}\u{20676}\u{216BA}\u5757\u7173\u{20AC2}\u{20ACD}\u{20BBF}\u546A\u{2F83B}\u{20BCB}\u549E\u{20BFB}\u{20C3B}\u{20C53}\u{20C65}\u{20C7C}\u60E7\u{20C8D}\u567A\u{20CB5}\u{20CDD}\u{20CED}\u{20D6F}\u{20DB2}\u{20DC8}\u6955\u9C2F\u87A5\u{20E04}\u{20E0E}\u{20ED7}\u{20F90}\u{20F2D}\u{20E73}\u5C20\u{20FBC}\u5E0B\u{2105C}\u{2104F}\u{21076}\u671E\u{2107B}\u{21088}\u{21096}\u3647\u{210BF}\u{210D3}\u{2112F}\u{2113B}\u5364\u84AD\u{212E3}\u{21375}\u{21336}\u8B81\u{21577}\u{21619}\u{217C3}\u{217C7}\u4E78\u70BB\u{2182D}\u{2196A}"],["9b40","\u{21A2D}\u{21A45}\u{21C2A}\u{21C70}\u{21CAC}\u{21EC8}\u62C3\u{21ED5}\u{21F15}\u7198\u6855\u{22045}\u69E9\u36C8\u{2227C}\u{223D7}\u{223FA}\u{2272A}\u{22871}\u{2294F}\u82FD\u{22967}\u{22993}\u{22AD5}\u89A5\u{22AE8}\u8FA0\u{22B0E}\u97B8\u{22B3F}\u9847\u9ABD\u{22C4C}"],["9b62","\u{22C88}\u{22CB7}\u{25BE8}\u{22D08}\u{22D12}\u{22DB7}\u{22D95}\u{22E42}\u{22F74}\u{22FCC}\u{23033}\u{23066}\u{2331F}\u{233DE}\u5FB1\u6648\u66BF\u{27A79}\u{23567}\u{235F3}\u7201\u{249BA}\u77D7\u{2361A}\u{23716}\u7E87\u{20346}\u58B5\u670E"],["9ba1","\u6918\u{23AA7}\u{27657}\u{25FE2}\u{23E11}\u{23EB9}\u{275FE}\u{2209A}\u48D0\u4AB8\u{24119}\u{28A9A}\u{242EE}\u{2430D}\u{2403B}\u{24334}\u{24396}\u{24A45}\u{205CA}\u51D2\u{20611}\u599F\u{21EA8}\u3BBE\u{23CFF}\u{24404}\u{244D6}\u5788\u{24674}\u399B\u{2472F}\u{285E8}\u{299C9}\u3762\u{221C3}\u8B5E\u{28B4E}\u99D6\u{24812}\u{248FB}\u{24A15}\u7209\u{24AC0}\u{20C78}\u5965\u{24EA5}\u{24F86}\u{20779}\u8EDA\u{2502C}\u528F\u573F\u7171\u{25299}\u{25419}\u{23F4A}\u{24AA7}\u55BC\u{25446}\u{2546E}\u{26B52}\u91D4\u3473\u{2553F}\u{27632}\u{2555E}\u4718\u{25562}\u{25566}\u{257C7}\u{2493F}\u{2585D}\u5066\u34FB\u{233CC}\u60DE\u{25903}\u477C\u{28948}\u{25AAE}\u{25B89}\u{25C06}\u{21D90}\u57A1\u7151\u6FB6\u{26102}\u{27C12}\u9056\u{261B2}\u{24F9A}\u8B62\u{26402}\u{2644A}"],["9c40","\u5D5B\u{26BF7}\u8F36\u{26484}\u{2191C}\u8AEA\u{249F6}\u{26488}\u{23FEF}\u{26512}\u4BC0\u{265BF}\u{266B5}\u{2271B}\u9465\u{257E1}\u6195\u5A27\u{2F8CD}\u4FBB\u56B9\u{24521}\u{266FC}\u4E6A\u{24934}\u9656\u6D8F\u{26CBD}\u3618\u8977\u{26799}\u{2686E}\u{26411}\u{2685E}\u71DF\u{268C7}\u7B42\u{290C0}\u{20A11}\u{26926}\u9104\u{26939}\u7A45\u9DF0\u{269FA}\u9A26\u{26A2D}\u365F\u{26469}\u{20021}\u7983\u{26A34}\u{26B5B}\u5D2C\u{23519}\u83CF\u{26B9D}\u46D0\u{26CA4}\u753B\u8865\u{26DAE}\u58B6"],["9ca1","\u371C\u{2258D}\u{2704B}\u{271CD}\u3C54\u{27280}\u{27285}\u9281\u{2217A}\u{2728B}\u9330\u{272E6}\u{249D0}\u6C39\u949F\u{27450}\u{20EF8}\u8827\u88F5\u{22926}\u{28473}\u{217B1}\u6EB8\u{24A2A}\u{21820}\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\u{29CAD}\u{298A4}\u8943\u{277CC}\u{27858}\u56D6\u40DF\u{2160A}\u39A1\u{2372F}\u{280E8}\u{213C5}\u71AD\u8366\u{279DD}\u{291A8}\u5A67\u4CB7\u{270AF}\u{289AB}\u{279FD}\u{27A0A}\u{27B0B}\u{27D66}\u{2417A}\u7B43\u797E\u{28009}\u6FB5\u{2A2DF}\u6A03\u{28318}\u53A2\u{26E07}\u93BF\u6836\u975D\u{2816F}\u{28023}\u{269B5}\u{213ED}\u{2322F}\u{28048}\u5D85\u{28C30}\u{28083}\u5715\u9823\u{28949}\u5DAB\u{24988}\u65BE\u69D5\u53D2\u{24AA5}\u{23F81}\u3C11\u6736\u{28090}\u{280F4}\u{2812E}\u{21FA1}\u{2814F}"],["9d40","\u{28189}\u{281AF}\u{2821A}\u{28306}\u{2832F}\u{2838A}\u35CA\u{28468}\u{286AA}\u48FA\u63E6\u{28956}\u7808\u9255\u{289B8}\u43F2\u{289E7}\u43DF\u{289E8}\u{28B46}\u{28BD4}\u59F8\u{28C09}\u8F0B\u{28FC5}\u{290EC}\u7B51\u{29110}\u{2913C}\u3DF7\u{2915E}\u{24ACA}\u8FD0\u728F\u568B\u{294E7}\u{295E9}\u{295B0}\u{295B8}\u{29732}\u{298D1}\u{29949}\u{2996A}\u{299C3}\u{29A28}\u{29B0E}\u{29D5A}\u{29D9B}\u7E9F\u{29EF8}\u{29F23}\u4CA4\u9547\u{2A293}\u71A2\u{2A2FF}\u4D91\u9012\u{2A5CB}\u4D9C\u{20C9C}\u8FBE\u55C1"],["9da1","\u8FBA\u{224B0}\u8FB9\u{24A93}\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\u{28B2C}\u{2789D}\u373A\u8E80\u{217F5}\u{28024}\u{28B6C}\u{28B99}\u{27A3E}\u{266AF}\u3DEB\u{27655}\u{23CB7}\u{25635}\u{25956}\u4E9A\u{25E81}\u{26258}\u56BF\u{20E6D}\u8E0E\u5B6D\u{23E88}\u{24C9E}\u63DE\u62D0\u{217F6}\u{2187B}\u6530\u562D\u{25C4A}\u541A\u{25311}\u3DC6\u{29D98}\u4C7D\u5622\u561E\u7F49\u{25ED8}\u5975\u{23D40}\u8770\u4E1C\u{20FEA}\u{20D49}\u{236BA}\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\u{20E9D}\u35CE\u5605\u55F1\u66F1\u{282E2}\u362D\u7534\u55F0\u55BA\u5497\u5572\u{20C41}\u{20C96}\u5ED0\u{25148}\u{20E76}\u{22C62}"],["9e40","\u{20EA2}\u9EAB\u7D5A\u55DE\u{21075}\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\u{22B43}\u9C72\u{22EB3}\u519A\u34DF\u{20DA7}\u51A7\u544D\u551E\u5513\u7666\u8E2D\u{2688A}\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\u{210C1}\u44EC\u7304\u{24706}\u5B90\u830B\u{26893}\u567B\u{226F4}\u{27D2F}\u{241A3}\u{27D73}\u{26ED0}\u{272B6}\u9170\u{211D9}\u9208\u{23CFC}\u{2A6A9}\u{20EAC}\u{20EF9}\u7266\u{21CA2}\u474E\u{24FC2}\u{27FF9}\u{20FEB}\u40FA"],["9ea1","\u9C5D\u651F\u{22DA0}\u48F3\u{247E0}\u{29D7C}\u{20FEC}\u{20E0A}\u6062\u{275A3}\u{20FED}"],["9ead","\u{26048}\u{21187}\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\u{24618}\u589A\u{24B6E}\u822D\u544B\u57AA\u{25A95}\u{20979}"],["9ec5","\u3A52\u{22465}\u7374\u{29EAC}\u4D09\u9BED\u{23CFE}\u{29F30}\u4C5B\u{24FA9}\u{2959E}\u{29FDE}\u845C\u{23DB6}\u{272B2}\u{267B3}\u{23720}\u632E\u7D25\u{23EF7}\u{23E2C}\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\u{2048E}\u7640\u5AF0\u{20EB6}\u787A\u{27F2E}\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\u{2A434}\u9E85\u4CE1\u75F9\u37FB\u6119\u{230DA}\u{243F2}"],["9ef5","\u565D\u{212A9}\u57A7\u{24963}\u{29E06}\u5234\u{270AE}\u35AD\u6C4A\u9D7C"],["9f40","\u7C56\u9B39\u57DE\u{2176C}\u5C53\u64D3\u{294D0}\u{26335}\u{27164}\u86AD\u{20D28}\u{26D22}\u{24AE2}\u{20D71}"],["9f4f","\u51FE\u{21F0F}\u5D8E\u9703\u{21DD1}\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\u{2493E}\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130"],["9fa1","\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\u{2176D}\u99DA\u5273"],["9fae","\u9159\u9681\u915C"],["9fb2","\u9151\u{28E97}\u637F\u{26D23}\u6ACA\u5611\u918E\u757A\u6285\u{203FC}\u734F\u7C70\u{25C21}\u{23CFD}"],["9fc1","\u{24919}\u76D6\u9B9D\u4E2A\u{20CD4}\u83BE\u8842"],["9fc9","\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\u{201F2}\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3"],["9fdb","\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14"],["9fe7","\u6BFA\u8818\u7F78"],["9feb","\u5620\u{2A64A}\u8E77\u9F53"],["9ff0","\u8DD4\u8E4F\u9E1C\u8E01\u6282\u{2837D}\u8E28\u8E75\u7AD3\u{24A77}\u7A3E\u78D8\u6CEA\u8A67\u7607"],["a040","\u{28A5A}\u9F26\u6CCE\u87D6\u75C3\u{2A2B2}\u7853\u{2F840}\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\u{24ABB}\u862F\u5FBA\u88A0\u44B7"],["a055","\u{2183B}\u{26E05}"],["a058","\u8A7E\u{2251B}"],["a05b","\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5"],["a063","\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\u{26159}\u6159\u4C04\u9E96\u617D"],["a073","\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\u{233F5}\u6364\u6802\u35D2"],["a0a1","\u5D57\u{28BC2}\u8FDA\u{28E39}"],["a0a6","\u50D9\u{21D46}\u7906\u5332\u9638\u{20F3B}\u4065"],["a0ae","\u77FE"],["a0b0","\u7CC2\u{25F1A}\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\u{27486}\u805B\u74F0\u8103\u7724\u8989\u{267CC}\u7553\u{26ED1}\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6"],["a0d4","\u89A9\u7468\u6DB9\u87C1\u{24011}\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077"],["a0e2","\u7F71\u{28B2D}\u7250\u60E9\u4B7E\u5220\u3C18\u{23CC7}\u{25ED7}\u{27656}\u{25531}\u{21944}\u{212FE}\u{29903}\u{26DDC}\u{270AD}\u5CC1\u{261AD}\u{28A0F}\u{23677}\u{200EE}\u{26846}\u{24F0E}\u4562\u5B1F\u{2634C}\u9F50\u9EA6\u{2626B}"],["a3c0","\u2400",31,"\u2421"],["c6a1","\u2460",9,"\u2474",9,"\u2170",9,"\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\xA8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041",23],["c740","\u3059",58,"\u30A1\u30A2\u30A3\u30A4"],["c7a1","\u30A5",81,"\u0410",5,"\u0401\u0416",4],["c840","\u041B",26,"\u0451\u0436",25,"\u21E7\u21B8\u21B9\u31CF\u{200CC}\u4E5A\u{2008A}\u5202\u4491"],["c8a1","\u9FB0\u5188\u9FB1\u{27607}"],["c8cd","\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3"],["c8f5","\u0283\u0250\u025B\u0254\u0275\u0153\xF8\u014B\u028A\u026A"],["f9fe","\uFFED"],["fa40","\u{20547}\u92DB\u{205DF}\u{23FC5}\u854C\u42B5\u73EF\u51B5\u3649\u{24942}\u{289E4}\u9344\u{219DB}\u82EE\u{23CC8}\u783C\u6744\u62DF\u{24933}\u{289AA}\u{202A0}\u{26BB3}\u{21305}\u4FAB\u{224ED}\u5008\u{26D29}\u{27A84}\u{23600}\u{24AB1}\u{22513}\u5029\u{2037E}\u5FA4\u{20380}\u{20347}\u6EDB\u{2041F}\u507D\u5101\u347A\u510E\u986C\u3743\u8416\u{249A4}\u{20487}\u5160\u{233B4}\u516A\u{20BFF}\u{220FC}\u{202E5}\u{22530}\u{2058E}\u{23233}\u{21983}\u5B82\u877D\u{205B3}\u{23C99}\u51B2\u51B8"],["faa1","\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\u{24AA6}\u51B3\u51E2\u5342\u51ED\u83CD\u693E\u{2372D}\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\u{26B13}\u5305\u{28ADE}\u5549\u6ED9\u{23F80}\u{20954}\u{23FEC}\u5333\u5344\u{20BE2}\u6CCB\u{21726}\u681B\u73D5\u604A\u3EAA\u38CC\u{216E8}\u71DD\u44A2\u536D\u5374\u{286AB}\u537E\u537F\u{21596}\u{21613}\u77E6\u5393\u{28A9B}\u53A0\u53AB\u53AE\u73A7\u{25772}\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\u{20B8F}\u53E0\u{23FEB}\u{22DA3}\u53F6\u{20C77}\u5413\u7079\u552B\u6657\u6D5B\u546D\u{26B53}\u{20D74}\u555D\u548F\u54A4\u47A6\u{2170D}\u{20EDD}\u3DB4\u{20D4D}"],["fb40","\u{289BC}\u{22698}\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\u{218D7}\u{2403A}\u4552\u{24435}\u66B3\u{210B4}\u5637\u66CD\u{2328A}\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\u{28B66}\u3623\u{2124F}\u5746\u{241A5}\u6C6E\u708B\u5742\u36B1\u{26C7E}\u57E6\u{21416}\u5803\u{21454}\u{24363}\u5826\u{24BF5}\u585C\u58AA\u3561\u58E0\u58DC\u{2123C}\u58FB\u5BFF\u5743\u{2A150}\u{24278}\u93D3\u35A1\u591F\u68A6\u36C3\u6E59"],["fba1","\u{2163E}\u5A24\u5553\u{21692}\u8505\u59C9\u{20D4E}\u{26C81}\u{26D2A}\u{217DC}\u59D9\u{217FB}\u{217B2}\u{26DA6}\u6D71\u{21828}\u{216D5}\u59F9\u{26E45}\u5AAB\u5A63\u36E6\u{249A9}\u5A77\u3708\u5A96\u7465\u5AD3\u{26FA1}\u{22554}\u3D85\u{21911}\u3732\u{216B8}\u5E83\u52D0\u5B76\u6588\u5B7C\u{27A0E}\u4004\u485D\u{20204}\u5BD5\u6160\u{21A34}\u{259CC}\u{205A5}\u5BF3\u5B9D\u4D10\u5C05\u{21B44}\u5C13\u73CE\u5C14\u{21CA5}\u{26B28}\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\u{21DF9}\u{21E37}\u5D10\u5D18\u5D46\u{21EA4}\u5CBA\u5DD7\u82FC\u382D\u{24901}\u{22049}\u{22173}\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\u{244BC}\u{20CD3}\u53A6\u4EB7\u5ED0\u53A8\u{21771}\u5E09\u5EF4\u{28482}"],["fc40","\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\u{201C1}\u{2F894}\u3ADE\u48AE\u{2133A}\u5F3A\u{26888}\u{223D0}\u5F58\u{22471}\u5F63\u97BD\u{26E6E}\u5F72\u9340\u{28A36}\u5FA7\u5DB6\u3D5F\u{25250}\u{21F6A}\u{270F8}\u{22668}\u91D6\u{2029E}\u{28A29}\u6031\u6685\u{21877}\u3963\u3DC7\u3639\u5790\u{227B4}\u7971\u3E40\u609E\u60A4\u60B3\u{24982}\u{2498F}\u{27A53}\u74A4\u50E1\u5AA0\u6164\u8424\u6142\u{2F8A6}\u{26ED2}\u6181\u51F4\u{20656}\u6187\u5BAA\u{23FB7}"],["fca1","\u{2285F}\u61D3\u{28B9D}\u{2995D}\u61D0\u3932\u{22980}\u{228C1}\u6023\u615C\u651E\u638B\u{20118}\u62C5\u{21770}\u62D5\u{22E0D}\u636C\u{249DF}\u3A17\u6438\u63F8\u{2138E}\u{217FC}\u6490\u6F8A\u{22E36}\u9814\u{2408C}\u{2571D}\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\u{24A28}\u{24A23}\u6585\u656D\u655F\u{2307E}\u65B5\u{24940}\u4B37\u65D1\u40D8\u{21829}\u65E0\u65E3\u5FDF\u{23400}\u6618\u{231F7}\u{231F8}\u6644\u{231A4}\u{231A5}\u664B\u{20E75}\u6667\u{251E6}\u6673\u6674\u{21E3D}\u{23231}\u{285F4}\u{231C8}\u{25313}\u77C5\u{228F7}\u99A4\u6702\u{2439C}\u{24A21}\u3B2B\u69FA\u{237C2}\u675E\u6767\u6762\u{241CD}\u{290ED}\u67D7\u44E9\u6822\u6E50\u923C\u6801\u{233E6}\u{26DA0}\u685D"],["fd40","\u{2346F}\u69E1\u6A0B\u{28ADF}\u6973\u68C3\u{235CD}\u6901\u6900\u3D32\u3A01\u{2363C}\u3B80\u67AC\u6961\u{28A4A}\u42FC\u6936\u6998\u3BA1\u{203C9}\u8363\u5090\u69F9\u{23659}\u{2212A}\u6A45\u{23703}\u6A9D\u3BF3\u67B1\u6AC8\u{2919C}\u3C0D\u6B1D\u{20923}\u60DE\u6B35\u6B74\u{227CD}\u6EB5\u{23ADB}\u{203B5}\u{21958}\u3740\u5421\u{23B5A}\u6BE1\u{23EFC}\u6BDC\u6C37\u{2248B}\u{248F1}\u{26B51}\u6C5A\u8226\u6C79\u{23DBC}\u44C5\u{23DBD}\u{241A4}\u{2490C}\u{24900}"],["fda1","\u{23CC9}\u36E5\u3CEB\u{20D32}\u9B83\u{231F9}\u{22491}\u7F8F\u6837\u{26D25}\u{26DA1}\u{26DEB}\u6D96\u6D5C\u6E7C\u6F04\u{2497F}\u{24085}\u{26E72}\u8533\u{26F74}\u51C7\u6C9C\u6E1D\u842E\u{28B21}\u6E2F\u{23E2F}\u7453\u{23F82}\u79CC\u6E4F\u5A91\u{2304B}\u6FF8\u370D\u6F9D\u{23E30}\u6EFA\u{21497}\u{2403D}\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\u{29170}\u3D3B\u6F9F\u{24144}\u6FD3\u{24091}\u{24155}\u{24039}\u{23FF0}\u{23FB4}\u{2413F}\u51DF\u{24156}\u{24157}\u{24140}\u{261DD}\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\u{24277}\u712B\u7145\u5A88\u714A\u716E\u5C9C\u{24365}\u714F\u9362\u{242C1}\u712C\u{2445A}\u{24A27}\u{24A22}\u71BA\u{28BE8}\u70BD\u720E"],["fe40","\u9442\u7215\u5911\u9443\u7224\u9341\u{25605}\u722E\u7240\u{24974}\u68BD\u7255\u7257\u3E55\u{23044}\u680D\u6F3D\u7282\u732A\u732B\u{24823}\u{2882B}\u48ED\u{28804}\u7328\u732E\u73CF\u73AA\u{20C3A}\u{26A2E}\u73C9\u7449\u{241E2}\u{216E7}\u{24A24}\u6623\u36C5\u{249B7}\u{2498D}\u{249FB}\u73F7\u7415\u6903\u{24A26}\u7439\u{205C3}\u3ED7\u745C\u{228AD}\u7460\u{28EB2}\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\u{24A8C}"],["fea1","\u{2415F}\u{24A79}\u{28B8F}\u5B46\u{28C03}\u{2189E}\u74C8\u{21988}\u750E\u74E9\u751E\u{28ED9}\u{21A4B}\u5BD7\u{28EAC}\u9385\u754D\u754A\u7567\u756E\u{24F82}\u3F04\u{24D13}\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\u{263F5}\u7690\u81EF\u37F8\u{26911}\u{2690E}\u76A1\u76A5\u76B7\u76CC\u{26F9F}\u8462\u{2509D}\u{2517D}\u{21E1C}\u771E\u7726\u7740\u64AF\u{25220}\u7758\u{232AC}\u77AF\u{28964}\u{28968}\u{216C1}\u77F4\u7809\u{21376}\u{24A12}\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\u{255E0}\u78D7\u7934\u78B1\u{2760C}\u8FB8\u8884\u{28B2B}\u{26083}\u{2261C}\u7986\u8900\u6902\u7980\u{25857}\u799D\u{27B39}\u793C\u79A9\u6E2A\u{27126}\u3EA8\u79C6\u{2910D}\u79D4"]]});var Hx=P((eY,Ux)=>{"use strict";Ux.exports={shiftjis:{type:"_dbcs",table:function(){return Nx()},encodeAdd:{"\xA5":92,"\u203E":126},encodeSkipVals:[{from:60736,to:63808}]},csshiftjis:"shiftjis",mskanji:"shiftjis",sjis:"shiftjis",windows31j:"shiftjis",ms31j:"shiftjis",xsjis:"shiftjis",windows932:"shiftjis",ms932:"shiftjis",932:"shiftjis",cp932:"shiftjis",eucjp:{type:"_dbcs",table:function(){return Dx()},encodeAdd:{"\xA5":92,"\u203E":126}},gb2312:"cp936",gb231280:"cp936",gb23121980:"cp936",csgb2312:"cp936",csiso58gb231280:"cp936",euccn:"cp936",windows936:"cp936",ms936:"cp936",936:"cp936",cp936:{type:"_dbcs",table:function(){return hf()}},gbk:{type:"_dbcs",table:function(){return hf().concat(gh())}},xgbk:"gbk",isoir58:"gbk",gb18030:{type:"_dbcs",table:function(){return hf().concat(gh())},gb18030:function(){return Jx()},encodeSkipVals:[128],encodeAdd:{"\u20AC":41699}},chinese:"gb18030",windows949:"cp949",ms949:"cp949",949:"cp949",cp949:{type:"_dbcs",table:function(){return qx()}},cseuckr:"cp949",csksc56011987:"cp949",euckr:"cp949",isoir149:"cp949",korean:"cp949",ksc56011987:"cp949",ksc56011989:"cp949",ksc5601:"cp949",windows950:"cp950",ms950:"cp950",950:"cp950",cp950:{type:"_dbcs",table:function(){return xh()}},big5:"big5hkscs",big5hkscs:{type:"_dbcs",table:function(){return xh().concat(jx())},encodeSkipVals:[41676]},cnbig5:"big5hkscs",csbig5:"big5hkscs",xxbig5:"big5hkscs"}});var Xx=P((Gx,as)=>{"use strict";var zx=[Ex(),_x(),kx(),Ox(),Mx(),Fx(),Ix(),Hx()];for(vf=0;vf{"use strict";var Kx=require("buffer").Buffer,bf=require("stream").Transform;Vx.exports=function(t){t.encodeStream=function(r,n){return new ao(t.getEncoder(r,n),n)},t.decodeStream=function(r,n){return new Yi(t.getDecoder(r,n),n)},t.supportsStreams=!0,t.IconvLiteEncoderStream=ao,t.IconvLiteDecoderStream=Yi,t._collect=Yi.prototype.collect};function ao(t,e){this.conv=t,e=e||{},e.decodeStrings=!1,bf.call(this,e)}ao.prototype=Object.create(bf.prototype,{constructor:{value:ao}});ao.prototype._transform=function(t,e,r){if(typeof t!="string")return r(new Error("Iconv encoding stream needs strings as its input."));try{var n=this.conv.write(t);n&&n.length&&this.push(n),r()}catch(i){r(i)}};ao.prototype._flush=function(t){try{var e=this.conv.end();e&&e.length&&this.push(e),t()}catch(r){t(r)}};ao.prototype.collect=function(t){var e=[];return this.on("error",t),this.on("data",function(r){e.push(r)}),this.on("end",function(){t(null,Kx.concat(e))}),this};function Yi(t,e){this.conv=t,e=e||{},e.encoding=this.encoding="utf8",bf.call(this,e)}Yi.prototype=Object.create(bf.prototype,{constructor:{value:Yi}});Yi.prototype._transform=function(t,e,r){if(!Kx.isBuffer(t))return r(new Error("Iconv decoding stream needs buffers as its input."));try{var n=this.conv.write(t);n&&n.length&&this.push(n,this.encoding),r()}catch(i){r(i)}};Yi.prototype._flush=function(t){try{var e=this.conv.end();e&&e.length&&this.push(e,this.encoding),t()}catch(r){t(r)}};Yi.prototype.collect=function(t){var e="";return this.on("error",t),this.on("data",function(r){e+=r}),this.on("end",function(){t(null,e)}),this}});var Wx=P((tY,Qx)=>{"use strict";var br=require("buffer").Buffer;Qx.exports=function(t){var e=void 0;t.supportsNodeEncodingsExtension=!(br.from||new br(0)instanceof Uint8Array),t.extendNodeEncodings=function(){if(!e){if(e={},!t.supportsNodeEncodingsExtension){console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node"),console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility");return}var n={hex:!0,utf8:!0,"utf-8":!0,ascii:!0,binary:!0,base64:!0,ucs2:!0,"ucs-2":!0,utf16le:!0,"utf-16le":!0};br.isNativeEncoding=function(o){return o&&n[o.toLowerCase()]};var i=require("buffer").SlowBuffer;if(e.SlowBufferToString=i.prototype.toString,i.prototype.toString=function(o,c,u){return o=String(o||"utf8").toLowerCase(),br.isNativeEncoding(o)?e.SlowBufferToString.call(this,o,c,u):(typeof c>"u"&&(c=0),typeof u>"u"&&(u=this.length),t.decode(this.slice(c,u),o))},e.SlowBufferWrite=i.prototype.write,i.prototype.write=function(o,c,u,s){if(isFinite(c))isFinite(u)||(s=u,u=void 0);else{var f=s;s=c,c=u,u=f}c=+c||0;var m=this.length-c;if(u?(u=+u,u>m&&(u=m)):u=m,s=String(s||"utf8").toLowerCase(),br.isNativeEncoding(s))return e.SlowBufferWrite.call(this,o,c,u,s);if(o.length>0&&(u<0||c<0))throw new RangeError("attempt to write beyond buffer bounds");var w=t.encode(o,s);return w.length"u"&&(c=0),typeof u>"u"&&(u=this.length),t.decode(this.slice(c,u),o))},e.BufferWrite=br.prototype.write,br.prototype.write=function(o,c,u,s){var f=c,m=u,w=s;if(isFinite(c))isFinite(u)||(s=u,u=void 0);else{var T=s;s=c,c=u,u=T}if(s=String(s||"utf8").toLowerCase(),br.isNativeEncoding(s))return e.BufferWrite.call(this,o,f,m,w);c=+c||0;var A=this.length-c;if(u?(u=+u,u>A&&(u=A)):u=A,o.length>0&&(u<0||c<0))throw new RangeError("attempt to write beyond buffer bounds");var O=t.encode(o,s);return O.length{"use strict";var $x=no().Buffer,ey=yx(),Ze=ry.exports;Ze.encodings=null;Ze.defaultCharUnicode="\uFFFD";Ze.defaultCharSingleByte="?";Ze.encode=function(e,r,n){e=""+(e||"");var i=Ze.getEncoder(r,n),a=i.write(e),o=i.end();return o&&o.length>0?$x.concat([a,o]):a};Ze.decode=function(e,r,n){typeof e=="string"&&(Ze.skipDecodeWarning||(console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"),Ze.skipDecodeWarning=!0),e=$x.from(""+(e||""),"binary"));var i=Ze.getDecoder(r,n),a=i.write(e),o=i.end();return o?a+o:a};Ze.encodingExists=function(e){try{return Ze.getCodec(e),!0}catch{return!1}};Ze.toEncoding=Ze.encode;Ze.fromEncoding=Ze.decode;Ze._codecDataCache={};Ze.getCodec=function(e){Ze.encodings||(Ze.encodings=Xx());for(var r=Ze._canonicalizeEncoding(e),n={};;){var i=Ze._codecDataCache[r];if(i)return i;var a=Ze.encodings[r];switch(typeof a){case"string":r=a;break;case"object":for(var o in a)n[o]=a[o];n.encodingName||(n.encodingName=r),r=a.type;break;case"function":return n.encodingName||(n.encodingName=r),i=new a(n,Ze),Ze._codecDataCache[n.encodingName]=i,i;default:throw new Error("Encoding not recognized: '"+e+"' (searched as: '"+r+"')")}}};Ze._canonicalizeEncoding=function(t){return(""+t).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g,"")};Ze.getEncoder=function(e,r){var n=Ze.getCodec(e),i=new n.encoder(r,n);return n.bomAware&&r&&r.addBOM&&(i=new ey.PrependBOM(i,r)),i};Ze.getDecoder=function(e,r){var n=Ze.getCodec(e),i=new n.decoder(r,n);return n.bomAware&&!(r&&r.stripBOM===!1)&&(i=new ey.StripBOM(i,r)),i};var Yx=typeof process<"u"&&process.versions&&process.versions.node;Yx&&(yh=Yx.split(".").map(Number),(yh[0]>0||yh[1]>=10)&&Zx()(Ze),Wx()(Ze));var yh});var gf=P((iY,ty)=>{"use strict";ty.exports=YC;function WC(t){for(var e=t.listeners("data"),r=0;r{"use strict";var ny=oO(),$C=Wo(),oo=ro(),eO=wh(),rO=gf();ay.exports=iO;var tO=/^Encoding not recognized: /;function nO(t){if(!t)return null;try{return eO.getDecoder(t)}catch(e){throw tO.test(e.message)?oo(415,"specified encoding unsupported",{encoding:t,type:"encoding.unsupported"}):e}}function iO(t,e,r){var n=r,i=e||{};if((e===!0||typeof e=="string")&&(i={encoding:e}),typeof e=="function"&&(n=e,i={}),n!==void 0&&typeof n!="function")throw new TypeError("argument callback must be a function");if(!n&&!global.Promise)throw new TypeError("argument callback is required");var a=i.encoding!==!0?i.encoding:"utf-8",o=$C.parse(i.limit),c=i.length!=null&&!isNaN(i.length)?parseInt(i.length,10):null;return n?iy(t,a,c,o,sO(n)):new Promise(function(s,f){iy(t,a,c,o,function(w,T){if(w)return f(w);s(T)})})}function aO(t){rO(t),typeof t.pause=="function"&&t.pause()}function iy(t,e,r,n,i){var a=!1,o=!0;if(n!==null&&r!==null&&r>n)return m(oo(413,"request entity too large",{expected:r,length:r,limit:n,type:"entity.too.large"}));var c=t._readableState;if(t._decoder||c&&(c.encoding||c.decoder))return m(oo(500,"stream encoding should not be set",{type:"stream.encoding.set"}));if(typeof t.readable<"u"&&!t.readable)return m(oo(500,"stream is not readable",{type:"stream.not.readable"}));var u=0,s;try{s=nO(e)}catch(B){return m(B)}var f=s?"":[];t.on("aborted",w),t.on("close",O),t.on("data",T),t.on("end",A),t.on("error",A),o=!1;function m(){for(var B=new Array(arguments.length),F=0;Fn?m(oo(413,"request entity too large",{limit:n,received:u,type:"entity.too.large"})):s?f+=s.write(B):f.push(B))}function A(B){if(!a){if(B)return m(B);if(r!==null&&u!==r)m(oo(400,"request size did not match content length",{expected:r,length:r,received:u,type:"request.size.invalid"}));else{var F=s?f+(s.end()||""):Buffer.concat(f);m(null,F)}}}function O(){f=null,t.removeListener("aborted",w),t.removeListener("data",T),t.removeListener("end",A),t.removeListener("error",A),t.removeListener("close",O)}}function oO(){try{return require("async_hooks")}catch{return{}}}function sO(t){var e;return ny.AsyncResource&&(e=new ny.AsyncResource(t.name||"bound-anonymous-fn")),!e||!e.runInAsyncScope?t:e.runInAsyncScope.bind(e,t,null)}});var cy=P((oY,sy)=>{"use strict";sy.exports=cO;function cO(t,e){if(!Array.isArray(t))throw new TypeError("arg must be an array of [ee, events...] arrays");for(var r=[],n=0;n{"use strict";Ah.exports=fO;Ah.exports.isFinished=fy;var uy=mO(),ly=cy(),lO=typeof setImmediate=="function"?setImmediate:function(t){process.nextTick(t.bind.apply(t,arguments))};function fO(t,e){return fy(t)!==!1?(lO(e,null,t),t):(pO(t,bO(e)),t)}function fy(t){var e=t.socket;if(typeof t.finished=="boolean")return Boolean(t.finished||e&&!e.writable);if(typeof t.complete=="boolean")return Boolean(t.upgrade||!e||!e.readable||t.complete&&!t.readable)}function dO(t,e){var r,n,i=!1;function a(c){r.cancel(),n.cancel(),i=!0,e(c)}r=n=ly([[t,"end","finish"]],a);function o(c){t.removeListener("socket",o),!i&&r===n&&(n=ly([[c,"error","close"]],a))}if(t.socket){o(t.socket);return}t.on("socket",o),t.socket===void 0&&vO(t,o)}function pO(t,e){var r=t.__onFinished;(!r||!r.queue)&&(r=t.__onFinished=hO(t),dO(t,r)),r.queue.push(e)}function hO(t){function e(r){if(t.__onFinished===e&&(t.__onFinished=null),!!e.queue){var n=e.queue;e.queue=null;for(var i=0;i{"use strict";var $i=ro(),gO=X0(),xO=oy(),dy=wh(),py=au(),yO=gf(),hy=require("zlib");vy.exports=wO;function wO(t,e,r,n,i,a){var o,c=a,u;t._body=!0;var s=c.encoding!==null?c.encoding:null,f=c.verify;try{u=AO(t,i,c.inflate),o=u.length,u.length=void 0}catch(m){return r(m)}if(c.length=o,c.encoding=f?null:s,c.encoding===null&&s!==null&&!dy.encodingExists(s))return r($i(415,'unsupported charset "'+s.toUpperCase()+'"',{charset:s.toLowerCase(),type:"charset.unsupported"}));i("read body"),xO(u,c,function(m,w){if(m){var T;m.type==="encoding.unsupported"?T=$i(415,'unsupported charset "'+s.toUpperCase()+'"',{charset:s.toLowerCase(),type:"charset.unsupported"}):T=$i(400,m),u!==t&&(yO(t),gO(u,!0)),EO(t,function(){r($i(400,T))});return}if(f)try{i("verify body"),f(t,e,w,s)}catch(O){r($i(403,O,{body:w,type:O.type||"entity.verify.failed"}));return}var A=w;try{i("parse body"),A=typeof w!="string"&&s!==null?dy.decode(w,s):w,t.body=n(A)}catch(O){r($i(400,O,{body:A,type:O.type||"entity.parse.failed"}));return}r()})}function AO(t,e,r){var n=(t.headers["content-encoding"]||"identity").toLowerCase(),i=t.headers["content-length"],a;if(e('content-encoding "%s"',n),r===!1&&n!=="identity")throw $i(415,"content encoding unsupported",{encoding:n,type:"encoding.unsupported"});switch(n){case"deflate":a=hy.createInflate(),e("inflate body"),t.pipe(a);break;case"gzip":a=hy.createGunzip(),e("gunzip body"),t.pipe(a);break;case"identity":a=t,a.length=i;break;default:throw $i(415,'unsupported content encoding "'+n+'"',{encoding:n,type:"encoding.unsupported"})}return a}function EO(t,e){py.isFinished(t)?e(null):(py(t,e),t.resume())}});var xy=P(Eh=>{var my=/; *([!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) *= *("(?:[ !\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u0020-\u007e])*"|[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) */g,SO=/^[\u0020-\u007e\u0080-\u00ff]+$/,gy=/^[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+$/,_O=/\\([\u0000-\u007f])/g,TO=/([\\"])/g,kO=/^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/,by=/^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/,CO=/^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;Eh.format=OO;Eh.parse=PO;function OO(t){if(!t||typeof t!="object")throw new TypeError("argument obj is required");var e=t.parameters,r=t.subtype,n=t.suffix,i=t.type;if(!i||!by.test(i))throw new TypeError("invalid type");if(!r||!kO.test(r))throw new TypeError("invalid subtype");var a=i+"/"+r;if(n){if(!by.test(n))throw new TypeError("invalid suffix");a+="+"+n}if(e&&typeof e=="object")for(var o,c=Object.keys(e).sort(),u=0;u0&&!SO.test(e))throw new TypeError("invalid parameter value");return'"'+e.replace(TO,"\\$1")+'"'}function FO(t){var e=CO.exec(t.toLowerCase());if(!e)throw new TypeError("invalid media type");var r=e[1],n=e[2],i,a=n.lastIndexOf("+");a!==-1&&(i=n.substr(a+1),n=n.substr(0,a));var o={type:r,subtype:n,suffix:i};return o}});var yy=P((lY,LO)=>{LO.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/city+json":{source:"iana",compressible:!0},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0,extensions:["cpl"]},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dash-patch+xml":{source:"iana",compressible:!0,extensions:["mpp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana"},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/ecmascript":{source:"iana",compressible:!0,extensions:["es","ecma"]},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"apache",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/load-control+xml":{source:"iana",compressible:!0},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0,extensions:["mpf"]},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/oblivious-dns-message":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!1,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana",extensions:["asc"]},"application/pgp-signature":{source:"iana",extensions:["asc","sig"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"iana"},"application/reputon+json":{source:"iana",compressible:!0},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"iana"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana"},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/stix+json":{source:"iana",compressible:!0},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"iana",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"iana"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"iana"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.eclipse.ditto+json":{source:"iana",compressible:!0},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eu.kasparian.car+json":{source:"iana",compressible:!0},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.familysearch.gedcom+zip":{source:"iana",compressible:!1},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"iana",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{source:"iana",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"iana",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.geo+json":{source:"iana",compressible:!0},"application/vnd.geocube+xml":{source:"iana",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.slides":{source:"iana"},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"iana",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hl7cda+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hl7v2+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"iana"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"iana",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"iana"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxar.archive.3tz+zip":{source:"iana",compressible:!1},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"iana",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"iana",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.syft+json":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.youtube.yt":{source:"iana"},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0,extensions:["wif"]},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana"},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{compressible:!1,extensions:["apng"]},"image/avci":{source:"iana",extensions:["avci"]},"image/avcs":{source:"iana",extensions:["avcs"]},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/hsj2":{source:"iana",extensions:["hsj2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpeg","jpg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"apache",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/step":{source:"iana"},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana"},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:!0},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["markdown","md"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"iana"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"iana"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}});var Ay=P((fY,wy)=>{wy.exports=yy()});var Sh=P(Et=>{"use strict";var xf=Ay(),RO=require("path").extname,Ey=/^\s*([^;\s]*)(?:;|\s|$)/,IO=/^text\//i;Et.charset=Sy;Et.charsets={lookup:Sy};Et.contentType=NO;Et.extension=DO;Et.extensions=Object.create(null);Et.lookup=JO;Et.types=Object.create(null);qO(Et.extensions,Et.types);function Sy(t){if(!t||typeof t!="string")return!1;var e=Ey.exec(t),r=e&&xf[e[1].toLowerCase()];return r&&r.charset?r.charset:e&&IO.test(e[1])?"UTF-8":!1}function NO(t){if(!t||typeof t!="string")return!1;var e=t.indexOf("/")===-1?Et.lookup(t):t;if(!e)return!1;if(e.indexOf("charset")===-1){var r=Et.charset(e);r&&(e+="; charset="+r.toLowerCase())}return e}function DO(t){if(!t||typeof t!="string")return!1;var e=Ey.exec(t),r=e&&Et.extensions[e[1].toLowerCase()];return!r||!r.length?!1:r[0]}function JO(t){if(!t||typeof t!="string")return!1;var e=RO("x."+t).toLowerCase().substr(1);return e&&Et.types[e]||!1}function qO(t,e){var r=["nginx","apache",void 0,"iana"];Object.keys(xf).forEach(function(i){var a=xf[i],o=a.extensions;if(!(!o||!o.length)){t[i]=o;for(var c=0;cf||s===f&&e[u].substr(0,12)==="application/"))continue}e[u]=i}}})}});var ss=P((pY,os)=>{"use strict";var _y=xy(),jO=Sh();os.exports=UO;os.exports.is=Ty;os.exports.hasBody=ky;os.exports.normalize=Cy;os.exports.match=Oy;function Ty(t,e){var r,n=e,i=zO(t);if(!i)return!1;if(n&&!Array.isArray(n))for(n=new Array(arguments.length-1),r=0;r2){r=new Array(arguments.length-1);for(var n=0;n{"use strict";var GO=Wo(),XO=Kc(),KO=ro(),ea=ru()("body-parser:json"),VO=ou(),Py=ss();By.exports=QO;var ZO=/^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/;function QO(t){var e=t||{},r=typeof e.limit!="number"?GO.parse(e.limit||"100kb"):e.limit,n=e.inflate!==!1,i=e.reviver,a=e.strict!==!1,o=e.type||"application/json",c=e.verify||!1;if(c!==!1&&typeof c!="function")throw new TypeError("option verify must be function");var u=typeof o!="function"?eP(o):o;function s(f){if(f.length===0)return{};if(a){var m=YO(f);if(m!=="{"&&m!=="[")throw ea("strict violation"),WO(f,m)}try{return ea("parse json"),JSON.parse(f,i)}catch(w){throw My(w,{message:w.message,stack:w.stack})}}return function(m,w,T){if(m._body){ea("body already parsed"),T();return}if(m.body=m.body||{},!Py.hasBody(m)){ea("skip empty body"),T();return}if(ea("content-type %j",m.headers["content-type"]),!u(m)){ea("skip parsing"),T();return}var A=$O(m)||"utf-8";if(A.slice(0,4)!=="utf-"){ea("invalid charset"),T(KO(415,'unsupported charset "'+A.toUpperCase()+'"',{charset:A,type:"charset.unsupported"}));return}VO(m,w,T,s,ea,{encoding:A,inflate:n,limit:r,verify:c})}}function WO(t,e){var r=t.indexOf(e),n=r!==-1?t.substring(0,r)+"#":"";try{throw JSON.parse(n),new SyntaxError("strict violation")}catch(i){return My(i,{message:i.message.replace("#",e),stack:i.stack})}}function YO(t){var e=ZO.exec(t);return e?e[1]:void 0}function $O(t){try{return(XO.parse(t).parameters.charset||"").toLowerCase()}catch{return}}function My(t,e){for(var r=Object.getOwnPropertyNames(t),n=0;n{"use strict";var rP=Wo(),su=ru()("body-parser:raw"),tP=ou(),Ly=ss();Ry.exports=nP;function nP(t){var e=t||{},r=e.inflate!==!1,n=typeof e.limit!="number"?rP.parse(e.limit||"100kb"):e.limit,i=e.type||"application/octet-stream",a=e.verify||!1;if(a!==!1&&typeof a!="function")throw new TypeError("option verify must be function");var o=typeof i!="function"?iP(i):i;function c(u){return u}return function(s,f,m){if(s._body){su("body already parsed"),m();return}if(s.body=s.body||{},!Ly.hasBody(s)){su("skip empty body"),m();return}if(su("content-type %j",s.headers["content-type"]),!o(s)){su("skip parsing"),m();return}tP(s,f,m,c,su,{encoding:null,inflate:r,limit:n,verify:a})}}function iP(t){return function(r){return Boolean(Ly(r,t))}}});var Jy=P((mY,Dy)=>{"use strict";var aP=Wo(),oP=Kc(),cu=ru()("body-parser:text"),sP=ou(),Ny=ss();Dy.exports=cP;function cP(t){var e=t||{},r=e.defaultCharset||"utf-8",n=e.inflate!==!1,i=typeof e.limit!="number"?aP.parse(e.limit||"100kb"):e.limit,a=e.type||"text/plain",o=e.verify||!1;if(o!==!1&&typeof o!="function")throw new TypeError("option verify must be function");var c=typeof a!="function"?lP(a):a;function u(s){return s}return function(f,m,w){if(f._body){cu("body already parsed"),w();return}if(f.body=f.body||{},!Ny.hasBody(f)){cu("skip empty body"),w();return}if(cu("content-type %j",f.headers["content-type"]),!c(f)){cu("skip parsing"),w();return}var T=uP(f)||r;sP(f,m,w,u,cu,{encoding:T,inflate:n,limit:i,verify:o})}}function uP(t){try{return(oP.parse(t).parameters.charset||"").toLowerCase()}catch{return}}function lP(t){return function(r){return Boolean(Ny(r,t))}}});var jy=P((bY,qy)=>{"use strict";qy.exports=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var e={},r=Symbol("test"),n=Object(r);if(typeof r=="string"||Object.prototype.toString.call(r)!=="[object Symbol]"||Object.prototype.toString.call(n)!=="[object Symbol]")return!1;var i=42;e[r]=i;for(r in e)return!1;if(typeof Object.keys=="function"&&Object.keys(e).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(e).length!==0)return!1;var a=Object.getOwnPropertySymbols(e);if(a.length!==1||a[0]!==r||!Object.prototype.propertyIsEnumerable.call(e,r))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var o=Object.getOwnPropertyDescriptor(e,r);if(o.value!==i||o.enumerable!==!0)return!1}return!0}});var zy=P((gY,Hy)=>{"use strict";var Uy=typeof Symbol<"u"&&Symbol,fP=jy();Hy.exports=function(){return typeof Uy!="function"||typeof Symbol!="function"||typeof Uy("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:fP()}});var Xy=P((xY,Gy)=>{"use strict";var dP="Function.prototype.bind called on incompatible ",_h=Array.prototype.slice,pP=Object.prototype.toString,hP="[object Function]";Gy.exports=function(e){var r=this;if(typeof r!="function"||pP.call(r)!==hP)throw new TypeError(dP+r);for(var n=_h.call(arguments,1),i,a=function(){if(this instanceof i){var f=r.apply(this,n.concat(_h.call(arguments)));return Object(f)===f?f:this}else return r.apply(e,n.concat(_h.call(arguments)))},o=Math.max(0,r.length-n.length),c=[],u=0;u{"use strict";var vP=Xy();Ky.exports=Function.prototype.bind||vP});var Zy=P((wY,Vy)=>{"use strict";var mP=yf();Vy.exports=mP.call(Function.call,Object.prototype.hasOwnProperty)});var Ef=P((AY,e2)=>{"use strict";var je,fs=SyntaxError,$y=Function,ls=TypeError,Th=function(t){try{return $y('"use strict"; return ('+t+").constructor;")()}catch{}},so=Object.getOwnPropertyDescriptor;if(so)try{so({},"")}catch{so=null}var kh=function(){throw new ls},bP=so?function(){try{return arguments.callee,kh}catch{try{return so(arguments,"callee").get}catch{return kh}}}():kh,cs=zy()(),Hn=Object.getPrototypeOf||function(t){return t.__proto__},us={},gP=typeof Uint8Array>"u"?je:Hn(Uint8Array),co={"%AggregateError%":typeof AggregateError>"u"?je:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?je:ArrayBuffer,"%ArrayIteratorPrototype%":cs?Hn([][Symbol.iterator]()):je,"%AsyncFromSyncIteratorPrototype%":je,"%AsyncFunction%":us,"%AsyncGenerator%":us,"%AsyncGeneratorFunction%":us,"%AsyncIteratorPrototype%":us,"%Atomics%":typeof Atomics>"u"?je:Atomics,"%BigInt%":typeof BigInt>"u"?je:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?je:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?je:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?je:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":typeof Float32Array>"u"?je:Float32Array,"%Float64Array%":typeof Float64Array>"u"?je:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?je:FinalizationRegistry,"%Function%":$y,"%GeneratorFunction%":us,"%Int8Array%":typeof Int8Array>"u"?je:Int8Array,"%Int16Array%":typeof Int16Array>"u"?je:Int16Array,"%Int32Array%":typeof Int32Array>"u"?je:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":cs?Hn(Hn([][Symbol.iterator]())):je,"%JSON%":typeof JSON=="object"?JSON:je,"%Map%":typeof Map>"u"?je:Map,"%MapIteratorPrototype%":typeof Map>"u"||!cs?je:Hn(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?je:Promise,"%Proxy%":typeof Proxy>"u"?je:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":typeof Reflect>"u"?je:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?je:Set,"%SetIteratorPrototype%":typeof Set>"u"||!cs?je:Hn(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?je:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":cs?Hn(""[Symbol.iterator]()):je,"%Symbol%":cs?Symbol:je,"%SyntaxError%":fs,"%ThrowTypeError%":bP,"%TypedArray%":gP,"%TypeError%":ls,"%Uint8Array%":typeof Uint8Array>"u"?je:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?je:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?je:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?je:Uint32Array,"%URIError%":URIError,"%WeakMap%":typeof WeakMap>"u"?je:WeakMap,"%WeakRef%":typeof WeakRef>"u"?je:WeakRef,"%WeakSet%":typeof WeakSet>"u"?je:WeakSet};try{null.error}catch(t){Qy=Hn(Hn(t)),co["%Error.prototype%"]=Qy}var Qy,xP=function t(e){var r;if(e==="%AsyncFunction%")r=Th("async function () {}");else if(e==="%GeneratorFunction%")r=Th("function* () {}");else if(e==="%AsyncGeneratorFunction%")r=Th("async function* () {}");else if(e==="%AsyncGenerator%"){var n=t("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if(e==="%AsyncIteratorPrototype%"){var i=t("%AsyncGenerator%");i&&(r=Hn(i.prototype))}return co[e]=r,r},Wy={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},uu=yf(),wf=Zy(),yP=uu.call(Function.call,Array.prototype.concat),wP=uu.call(Function.apply,Array.prototype.splice),Yy=uu.call(Function.call,String.prototype.replace),Af=uu.call(Function.call,String.prototype.slice),AP=uu.call(Function.call,RegExp.prototype.exec),EP=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,SP=/\\(\\)?/g,_P=function(e){var r=Af(e,0,1),n=Af(e,-1);if(r==="%"&&n!=="%")throw new fs("invalid intrinsic syntax, expected closing `%`");if(n==="%"&&r!=="%")throw new fs("invalid intrinsic syntax, expected opening `%`");var i=[];return Yy(e,EP,function(a,o,c,u){i[i.length]=c?Yy(u,SP,"$1"):o||a}),i},TP=function(e,r){var n=e,i;if(wf(Wy,n)&&(i=Wy[n],n="%"+i[0]+"%"),wf(co,n)){var a=co[n];if(a===us&&(a=xP(n)),typeof a>"u"&&!r)throw new ls("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:i,name:n,value:a}}throw new fs("intrinsic "+e+" does not exist!")};e2.exports=function(e,r){if(typeof e!="string"||e.length===0)throw new ls("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new ls('"allowMissing" argument must be a boolean');if(AP(/^%?[^%]*%?$/,e)===null)throw new fs("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=_P(e),i=n.length>0?n[0]:"",a=TP("%"+i+"%",r),o=a.name,c=a.value,u=!1,s=a.alias;s&&(i=s[0],wP(n,yP([0,1],s)));for(var f=1,m=!0;f=n.length){var O=so(c,w);m=!!O,m&&"get"in O&&!("originalValue"in O.get)?c=O.get:c=c[w]}else m=wf(c,w),c=c[w];m&&!u&&(co[o]=c)}}return c}});var o2=P((EY,Sf)=>{"use strict";var Ch=yf(),ds=Ef(),n2=ds("%Function.prototype.apply%"),i2=ds("%Function.prototype.call%"),a2=ds("%Reflect.apply%",!0)||Ch.call(i2,n2),r2=ds("%Object.getOwnPropertyDescriptor%",!0),uo=ds("%Object.defineProperty%",!0),kP=ds("%Math.max%");if(uo)try{uo({},"a",{value:1})}catch{uo=null}Sf.exports=function(e){var r=a2(Ch,i2,arguments);if(r2&&uo){var n=r2(r,"length");n.configurable&&uo(r,"length",{value:1+kP(0,e.length-(arguments.length-1))})}return r};var t2=function(){return a2(Ch,n2,arguments)};uo?uo(Sf.exports,"apply",{value:t2}):Sf.exports.apply=t2});var l2=P((SY,u2)=>{"use strict";var s2=Ef(),c2=o2(),CP=c2(s2("String.prototype.indexOf"));u2.exports=function(e,r){var n=s2(e,!!r);return typeof n=="function"&&CP(e,".prototype.")>-1?c2(n):n}});var d2=P((_Y,f2)=>{f2.exports=require("util").inspect});var B2=P((TY,M2)=>{var Dh=typeof Map=="function"&&Map.prototype,Oh=Object.getOwnPropertyDescriptor&&Dh?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,Tf=Dh&&Oh&&typeof Oh.get=="function"?Oh.get:null,p2=Dh&&Map.prototype.forEach,Jh=typeof Set=="function"&&Set.prototype,Ph=Object.getOwnPropertyDescriptor&&Jh?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,kf=Jh&&Ph&&typeof Ph.get=="function"?Ph.get:null,h2=Jh&&Set.prototype.forEach,OP=typeof WeakMap=="function"&&WeakMap.prototype,fu=OP?WeakMap.prototype.has:null,PP=typeof WeakSet=="function"&&WeakSet.prototype,du=PP?WeakSet.prototype.has:null,MP=typeof WeakRef=="function"&&WeakRef.prototype,v2=MP?WeakRef.prototype.deref:null,BP=Boolean.prototype.valueOf,FP=Object.prototype.toString,LP=Function.prototype.toString,RP=String.prototype.match,qh=String.prototype.slice,ta=String.prototype.replace,IP=String.prototype.toUpperCase,m2=String.prototype.toLowerCase,_2=RegExp.prototype.test,b2=Array.prototype.concat,zn=Array.prototype.join,NP=Array.prototype.slice,g2=Math.floor,Fh=typeof BigInt=="function"?BigInt.prototype.valueOf:null,Mh=Object.getOwnPropertySymbols,Lh=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Symbol.prototype.toString:null,ps=typeof Symbol=="function"&&typeof Symbol.iterator=="object",nt=typeof Symbol=="function"&&Symbol.toStringTag&&(typeof Symbol.toStringTag===ps?"object":"symbol")?Symbol.toStringTag:null,T2=Object.prototype.propertyIsEnumerable,x2=(typeof Reflect=="function"?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function y2(t,e){if(t===1/0||t===-1/0||t!==t||t&&t>-1e3&&t<1e3||_2.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof t=="number"){var n=t<0?-g2(-t):g2(t);if(n!==t){var i=String(n),a=qh.call(e,i.length+1);return ta.call(i,r,"$&_")+"."+ta.call(ta.call(a,/([0-9]{3})/g,"$&_"),/_$/,"")}}return ta.call(e,r,"$&_")}var Rh=d2(),w2=Rh.custom,A2=C2(w2)?w2:null;M2.exports=function t(e,r,n,i){var a=r||{};if(ra(a,"quoteStyle")&&a.quoteStyle!=="single"&&a.quoteStyle!=="double")throw new TypeError('option "quoteStyle" must be "single" or "double"');if(ra(a,"maxStringLength")&&(typeof a.maxStringLength=="number"?a.maxStringLength<0&&a.maxStringLength!==1/0:a.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var o=ra(a,"customInspect")?a.customInspect:!0;if(typeof o!="boolean"&&o!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(ra(a,"indent")&&a.indent!==null&&a.indent!==" "&&!(parseInt(a.indent,10)===a.indent&&a.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(ra(a,"numericSeparator")&&typeof a.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var c=a.numericSeparator;if(typeof e>"u")return"undefined";if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="string")return P2(e,a);if(typeof e=="number"){if(e===0)return 1/0/e>0?"0":"-0";var u=String(e);return c?y2(e,u):u}if(typeof e=="bigint"){var s=String(e)+"n";return c?y2(e,s):s}var f=typeof a.depth>"u"?5:a.depth;if(typeof n>"u"&&(n=0),n>=f&&f>0&&typeof e=="object")return Ih(e)?"[Array]":"[Object]";var m=rM(a,n);if(typeof i>"u")i=[];else if(O2(i,e)>=0)return"[Circular]";function w(b,l,p){if(l&&(i=NP.call(i),i.push(l)),p){var g={depth:a.depth};return ra(a,"quoteStyle")&&(g.quoteStyle=a.quoteStyle),t(b,g,n+1,i)}return t(b,a,n+1,i)}if(typeof e=="function"&&!E2(e)){var T=XP(e),A=_f(e,w);return"[Function"+(T?": "+T:" (anonymous)")+"]"+(A.length>0?" { "+zn.call(A,", ")+" }":"")}if(C2(e)){var O=ps?ta.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):Lh.call(e);return typeof e=="object"&&!ps?lu(O):O}if(YP(e)){for(var B="<"+m2.call(String(e.nodeName)),F=e.attributes||[],I=0;I",B}if(Ih(e)){if(e.length===0)return"[]";var D=_f(e,w);return m&&!eM(D)?"["+Nh(D,m)+"]":"[ "+zn.call(D,", ")+" ]"}if(qP(e)){var z=_f(e,w);return!("cause"in Error.prototype)&&"cause"in e&&!T2.call(e,"cause")?"{ ["+String(e)+"] "+zn.call(b2.call("[cause]: "+w(e.cause),z),", ")+" }":z.length===0?"["+String(e)+"]":"{ ["+String(e)+"] "+zn.call(z,", ")+" }"}if(typeof e=="object"&&o){if(A2&&typeof e[A2]=="function"&&Rh)return Rh(e,{depth:f-n});if(o!=="symbol"&&typeof e.inspect=="function")return e.inspect()}if(KP(e)){var G=[];return p2&&p2.call(e,function(b,l){G.push(w(l,e,!0)+" => "+w(b,e))}),S2("Map",Tf.call(e),G,m)}if(QP(e)){var j=[];return h2&&h2.call(e,function(b){j.push(w(b,e))}),S2("Set",kf.call(e),j,m)}if(VP(e))return Bh("WeakMap");if(WP(e))return Bh("WeakSet");if(ZP(e))return Bh("WeakRef");if(UP(e))return lu(w(Number(e)));if(zP(e))return lu(w(Fh.call(e)));if(HP(e))return lu(BP.call(e));if(jP(e))return lu(w(String(e)));if(!JP(e)&&!E2(e)){var Z=_f(e,w),X=x2?x2(e)===Object.prototype:e instanceof Object||e.constructor===Object,U=e instanceof Object?"":"null prototype",M=!X&&nt&&Object(e)===e&&nt in e?qh.call(na(e),8,-1):U?"Object":"",v=X||typeof e.constructor!="function"?"":e.constructor.name?e.constructor.name+" ":"",E=v+(M||U?"["+zn.call(b2.call([],M||[],U||[]),": ")+"] ":"");return Z.length===0?E+"{}":m?E+"{"+Nh(Z,m)+"}":E+"{ "+zn.call(Z,", ")+" }"}return String(e)};function k2(t,e,r){var n=(r.quoteStyle||e)==="double"?'"':"'";return n+t+n}function DP(t){return ta.call(String(t),/"/g,""")}function Ih(t){return na(t)==="[object Array]"&&(!nt||!(typeof t=="object"&&nt in t))}function JP(t){return na(t)==="[object Date]"&&(!nt||!(typeof t=="object"&&nt in t))}function E2(t){return na(t)==="[object RegExp]"&&(!nt||!(typeof t=="object"&&nt in t))}function qP(t){return na(t)==="[object Error]"&&(!nt||!(typeof t=="object"&&nt in t))}function jP(t){return na(t)==="[object String]"&&(!nt||!(typeof t=="object"&&nt in t))}function UP(t){return na(t)==="[object Number]"&&(!nt||!(typeof t=="object"&&nt in t))}function HP(t){return na(t)==="[object Boolean]"&&(!nt||!(typeof t=="object"&&nt in t))}function C2(t){if(ps)return t&&typeof t=="object"&&t instanceof Symbol;if(typeof t=="symbol")return!0;if(!t||typeof t!="object"||!Lh)return!1;try{return Lh.call(t),!0}catch{}return!1}function zP(t){if(!t||typeof t!="object"||!Fh)return!1;try{return Fh.call(t),!0}catch{}return!1}var GP=Object.prototype.hasOwnProperty||function(t){return t in this};function ra(t,e){return GP.call(t,e)}function na(t){return FP.call(t)}function XP(t){if(t.name)return t.name;var e=RP.call(LP.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}function O2(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return P2(qh.call(t,0,e.maxStringLength),e)+n}var i=ta.call(ta.call(t,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,$P);return k2(i,"single",e)}function $P(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+IP.call(e.toString(16))}function lu(t){return"Object("+t+")"}function Bh(t){return t+" { ? }"}function S2(t,e,r,n){var i=n?Nh(r,n):zn.call(r,", ");return t+" ("+e+") {"+i+"}"}function eM(t){for(var e=0;e=0)return!1;return!0}function rM(t,e){var r;if(t.indent===" ")r=" ";else if(typeof t.indent=="number"&&t.indent>0)r=zn.call(Array(t.indent+1)," ");else return null;return{base:r,prev:zn.call(Array(e+1),r)}}function Nh(t,e){if(t.length===0)return"";var r=` -`+e.prev+e.base;return r+zn.call(t,","+r)+` -`+e.prev}function _f(t,e){var r=Ih(t),n=[];if(r){n.length=t.length;for(var i=0;i{"use strict";var jh=Ef(),hs=l2(),tM=B2(),nM=jh("%TypeError%"),Cf=jh("%WeakMap%",!0),Of=jh("%Map%",!0),iM=hs("WeakMap.prototype.get",!0),aM=hs("WeakMap.prototype.set",!0),oM=hs("WeakMap.prototype.has",!0),sM=hs("Map.prototype.get",!0),cM=hs("Map.prototype.set",!0),uM=hs("Map.prototype.has",!0),Uh=function(t,e){for(var r=t,n;(n=r.next)!==null;r=n)if(n.key===e)return r.next=n.next,n.next=t.next,t.next=n,n},lM=function(t,e){var r=Uh(t,e);return r&&r.value},fM=function(t,e,r){var n=Uh(t,e);n?n.value=r:t.next={key:e,next:t.next,value:r}},dM=function(t,e){return!!Uh(t,e)};F2.exports=function(){var e,r,n,i={assert:function(a){if(!i.has(a))throw new nM("Side channel does not contain "+tM(a))},get:function(a){if(Cf&&a&&(typeof a=="object"||typeof a=="function")){if(e)return iM(e,a)}else if(Of){if(r)return sM(r,a)}else if(n)return lM(n,a)},has:function(a){if(Cf&&a&&(typeof a=="object"||typeof a=="function")){if(e)return oM(e,a)}else if(Of){if(r)return uM(r,a)}else if(n)return dM(n,a);return!1},set:function(a,o){Cf&&a&&(typeof a=="object"||typeof a=="function")?(e||(e=new Cf),aM(e,a,o)):Of?(r||(r=new Of),cM(r,a,o)):(n||(n={key:{},next:null}),fM(n,a,o))}};return i}});var Pf=P((CY,R2)=>{"use strict";var pM=String.prototype.replace,hM=/%20/g,Hh={RFC1738:"RFC1738",RFC3986:"RFC3986"};R2.exports={default:Hh.RFC3986,formatters:{RFC1738:function(t){return pM.call(t,hM,"+")},RFC3986:function(t){return String(t)}},RFC1738:Hh.RFC1738,RFC3986:Hh.RFC3986}});var Gh=P((OY,N2)=>{"use strict";var vM=Pf(),zh=Object.prototype.hasOwnProperty,lo=Array.isArray,Gn=function(){for(var t=[],e=0;e<256;++e)t.push("%"+((e<16?"0":"")+e.toString(16)).toUpperCase());return t}(),mM=function(e){for(;e.length>1;){var r=e.pop(),n=r.obj[r.prop];if(lo(n)){for(var i=[],a=0;a=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122||a===vM.RFC1738&&(s===40||s===41)){c+=o.charAt(u);continue}if(s<128){c=c+Gn[s];continue}if(s<2048){c=c+(Gn[192|s>>6]+Gn[128|s&63]);continue}if(s<55296||s>=57344){c=c+(Gn[224|s>>12]+Gn[128|s>>6&63]+Gn[128|s&63]);continue}u+=1,s=65536+((s&1023)<<10|o.charCodeAt(u)&1023),c+=Gn[240|s>>18]+Gn[128|s>>12&63]+Gn[128|s>>6&63]+Gn[128|s&63]}return c},wM=function(e){for(var r=[{obj:{o:e},prop:"o"}],n=[],i=0;i{"use strict";var q2=L2(),Kh=Gh(),pu=Pf(),TM=Object.prototype.hasOwnProperty,D2={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,r){return e+"["+r+"]"},repeat:function(e){return e}},Ci=Array.isArray,kM=String.prototype.split,CM=Array.prototype.push,j2=function(t,e){CM.apply(t,Ci(e)?e:[e])},OM=Date.prototype.toISOString,J2=pu.default,Vr={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:Kh.encode,encodeValuesOnly:!1,format:J2,formatter:pu.formatters[J2],indices:!1,serializeDate:function(e){return OM.call(e)},skipNulls:!1,strictNullHandling:!1},PM=function(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="symbol"||typeof e=="bigint"},Xh={},MM=function t(e,r,n,i,a,o,c,u,s,f,m,w,T,A,O,B){for(var F=e,I=B,D=0,z=!1;(I=I.get(Xh))!==void 0&&!z;){var G=I.get(e);if(D+=1,typeof G<"u"){if(G===D)throw new RangeError("Cyclic object value");z=!0}typeof I.get(Xh)>"u"&&(D=0)}if(typeof u=="function"?F=u(r,F):F instanceof Date?F=m(F):n==="comma"&&Ci(F)&&(F=Kh.maybeMap(F,function(d){return d instanceof Date?m(d):d})),F===null){if(a)return c&&!A?c(r,Vr.encoder,O,"key",w):r;F=""}if(PM(F)||Kh.isBuffer(F)){if(c){var j=A?r:c(r,Vr.encoder,O,"key",w);if(n==="comma"&&A){for(var Z=kM.call(String(F),","),X="",U=0;U"u")return M;var v;if(n==="comma"&&Ci(F))v=[{value:F.length>0?F.join(",")||null:void 0}];else if(Ci(u))v=u;else{var E=Object.keys(F);v=s?E.sort(s):E}for(var b=i&&Ci(F)&&F.length===1?r+"[]":r,l=0;l"u"?Vr.allowDots:!!e.allowDots,charset:r,charsetSentinel:typeof e.charsetSentinel=="boolean"?e.charsetSentinel:Vr.charsetSentinel,delimiter:typeof e.delimiter>"u"?Vr.delimiter:e.delimiter,encode:typeof e.encode=="boolean"?e.encode:Vr.encode,encoder:typeof e.encoder=="function"?e.encoder:Vr.encoder,encodeValuesOnly:typeof e.encodeValuesOnly=="boolean"?e.encodeValuesOnly:Vr.encodeValuesOnly,filter:a,format:n,formatter:i,serializeDate:typeof e.serializeDate=="function"?e.serializeDate:Vr.serializeDate,skipNulls:typeof e.skipNulls=="boolean"?e.skipNulls:Vr.skipNulls,sort:typeof e.sort=="function"?e.sort:null,strictNullHandling:typeof e.strictNullHandling=="boolean"?e.strictNullHandling:Vr.strictNullHandling}};U2.exports=function(t,e){var r=t,n=BM(e),i,a;typeof n.filter=="function"?(a=n.filter,r=a("",r)):Ci(n.filter)&&(a=n.filter,i=a);var o=[];if(typeof r!="object"||r===null)return"";var c;e&&e.arrayFormat in D2?c=e.arrayFormat:e&&"indices"in e?c=e.indices?"indices":"repeat":c="indices";var u=D2[c];if(e&&"commaRoundTrip"in e&&typeof e.commaRoundTrip!="boolean")throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var s=u==="comma"&&e&&e.commaRoundTrip;i||(i=Object.keys(r)),n.sort&&i.sort(n.sort);for(var f=q2(),m=0;m0?A+T:""}});var X2=P((MY,G2)=>{"use strict";var vs=Gh(),Vh=Object.prototype.hasOwnProperty,FM=Array.isArray,Ir={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:vs.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},LM=function(t){return t.replace(/&#(\d+);/g,function(e,r){return String.fromCharCode(parseInt(r,10))})},z2=function(t,e){return t&&typeof t=="string"&&e.comma&&t.indexOf(",")>-1?t.split(","):t},RM="utf8=%26%2310003%3B",IM="utf8=%E2%9C%93",NM=function(e,r){var n={},i=r.ignoreQueryPrefix?e.replace(/^\?/,""):e,a=r.parameterLimit===1/0?void 0:r.parameterLimit,o=i.split(r.delimiter,a),c=-1,u,s=r.charset;if(r.charsetSentinel)for(u=0;u-1&&(A=FM(A)?[A]:A),Vh.call(n,T)?n[T]=vs.combine(n[T],A):n[T]=A}return n},DM=function(t,e,r,n){for(var i=n?e:z2(e,r),a=t.length-1;a>=0;--a){var o,c=t[a];if(c==="[]"&&r.parseArrays)o=[].concat(i);else{o=r.plainObjects?Object.create(null):{};var u=c.charAt(0)==="["&&c.charAt(c.length-1)==="]"?c.slice(1,-1):c,s=parseInt(u,10);!r.parseArrays&&u===""?o={0:i}:!isNaN(s)&&c!==u&&String(s)===u&&s>=0&&r.parseArrays&&s<=r.arrayLimit?(o=[],o[s]=i):u!=="__proto__"&&(o[u]=i)}i=o}return i},JM=function(e,r,n,i){if(!!e){var a=n.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,o=/(\[[^[\]]*])/,c=/(\[[^[\]]*])/g,u=n.depth>0&&o.exec(a),s=u?a.slice(0,u.index):a,f=[];if(s){if(!n.plainObjects&&Vh.call(Object.prototype,s)&&!n.allowPrototypes)return;f.push(s)}for(var m=0;n.depth>0&&(u=c.exec(a))!==null&&m"u"?Ir.charset:e.charset;return{allowDots:typeof e.allowDots>"u"?Ir.allowDots:!!e.allowDots,allowPrototypes:typeof e.allowPrototypes=="boolean"?e.allowPrototypes:Ir.allowPrototypes,allowSparse:typeof e.allowSparse=="boolean"?e.allowSparse:Ir.allowSparse,arrayLimit:typeof e.arrayLimit=="number"?e.arrayLimit:Ir.arrayLimit,charset:r,charsetSentinel:typeof e.charsetSentinel=="boolean"?e.charsetSentinel:Ir.charsetSentinel,comma:typeof e.comma=="boolean"?e.comma:Ir.comma,decoder:typeof e.decoder=="function"?e.decoder:Ir.decoder,delimiter:typeof e.delimiter=="string"||vs.isRegExp(e.delimiter)?e.delimiter:Ir.delimiter,depth:typeof e.depth=="number"||e.depth===!1?+e.depth:Ir.depth,ignoreQueryPrefix:e.ignoreQueryPrefix===!0,interpretNumericEntities:typeof e.interpretNumericEntities=="boolean"?e.interpretNumericEntities:Ir.interpretNumericEntities,parameterLimit:typeof e.parameterLimit=="number"?e.parameterLimit:Ir.parameterLimit,parseArrays:e.parseArrays!==!1,plainObjects:typeof e.plainObjects=="boolean"?e.plainObjects:Ir.plainObjects,strictNullHandling:typeof e.strictNullHandling=="boolean"?e.strictNullHandling:Ir.strictNullHandling}};G2.exports=function(t,e){var r=qM(e);if(t===""||t===null||typeof t>"u")return r.plainObjects?Object.create(null):{};for(var n=typeof t=="string"?NM(t,r):t,i=r.plainObjects?Object.create(null):{},a=Object.keys(n),o=0;o{"use strict";var jM=H2(),UM=X2(),HM=Pf();K2.exports={formats:HM,parse:UM,stringify:jM}});var $2=P((FY,Y2)=>{"use strict";var zM=Wo(),GM=Kc(),Zh=ro(),dn=ru()("body-parser:urlencoded"),XM=qn()("body-parser"),KM=ou(),Z2=ss();Y2.exports=VM;var V2=Object.create(null);function VM(t){var e=t||{};e.extended===void 0&&XM("undefined extended: provide extended option");var r=e.extended!==!1,n=e.inflate!==!1,i=typeof e.limit!="number"?zM.parse(e.limit||"100kb"):e.limit,a=e.type||"application/x-www-form-urlencoded",o=e.verify||!1;if(o!==!1&&typeof o!="function")throw new TypeError("option verify must be function");var c=r?ZM(e):WM(e),u=typeof a!="function"?YM(a):a;function s(f){return f.length?c(f):{}}return function(m,w,T){if(m._body){dn("body already parsed"),T();return}if(m.body=m.body||{},!Z2.hasBody(m)){dn("skip empty body"),T();return}if(dn("content-type %j",m.headers["content-type"]),!u(m)){dn("skip parsing"),T();return}var A=QM(m)||"utf-8";if(A!=="utf-8"){dn("invalid charset"),T(Zh(415,'unsupported charset "'+A.toUpperCase()+'"',{charset:A,type:"charset.unsupported"}));return}KM(m,w,T,s,dn,{debug:dn,encoding:A,inflate:n,limit:i,verify:o})}}function ZM(t){var e=t.parameterLimit!==void 0?t.parameterLimit:1e3,r=W2("qs");if(isNaN(e)||e<1)throw new TypeError("option parameterLimit must be a positive number");return isFinite(e)&&(e=e|0),function(i){var a=Q2(i,e);if(a===void 0)throw dn("too many parameters"),Zh(413,"too many parameters",{type:"parameters.too.many"});var o=Math.max(100,a);return dn("parse extended urlencoding"),r(i,{allowPrototypes:!0,arrayLimit:o,depth:1/0,parameterLimit:e})}}function QM(t){try{return(GM.parse(t).parameters.charset||"").toLowerCase()}catch{return}}function Q2(t,e){for(var r=0,n=0;(n=t.indexOf("&",n))!==-1;)if(r++,n++,r===e)return;return r}function W2(t){var e=V2[t];if(e!==void 0)return e.parse;switch(t){case"qs":e=Mf();break;case"querystring":e=require("querystring");break}return V2[t]=e,e.parse}function WM(t){var e=t.parameterLimit!==void 0?t.parameterLimit:1e3,r=W2("querystring");if(isNaN(e)||e<1)throw new TypeError("option parameterLimit must be a positive number");return isFinite(e)&&(e=e|0),function(i){var a=Q2(i,e);if(a===void 0)throw dn("too many parameters"),Zh(413,"too many parameters",{type:"parameters.too.many"});return dn("parse urlencoding"),r(i,void 0,void 0,{maxKeys:e})}}function YM(t){return function(r){return Boolean(Z2(r,t))}}});var t8=P((ia,r8)=>{"use strict";var $M=qn()("body-parser"),e8=Object.create(null);ia=r8.exports=$M.function(eB,"bodyParser: use individual json/urlencoded middlewares");Object.defineProperty(ia,"json",{configurable:!0,enumerable:!0,get:Bf("json")});Object.defineProperty(ia,"raw",{configurable:!0,enumerable:!0,get:Bf("raw")});Object.defineProperty(ia,"text",{configurable:!0,enumerable:!0,get:Bf("text")});Object.defineProperty(ia,"urlencoded",{configurable:!0,enumerable:!0,get:Bf("urlencoded")});function eB(t){var e=Object.create(t||null,{type:{configurable:!0,enumerable:!0,value:void 0,writable:!0}}),r=ia.urlencoded(e),n=ia.json(e);return function(a,o,c){n(a,o,function(u){if(u)return c(u);r(a,o,c)})}}function Bf(t){return function(){return rB(t)}}function rB(t){var e=e8[t];if(e!==void 0)return e;switch(t){case"json":e=Fy();break;case"raw":e=Iy();break;case"text":e=Jy();break;case"urlencoded":e=$2();break}return e8[t]=e}});var i8=P((LY,n8)=>{"use strict";n8.exports=nB;var tB=Object.prototype.hasOwnProperty;function nB(t,e,r){if(!t)throw new TypeError("argument dest is required");if(!e)throw new TypeError("argument src is required");return r===void 0&&(r=!0),Object.getOwnPropertyNames(e).forEach(function(i){if(!(!r&&tB.call(t,i))){var a=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,a)}}),t}});var o8=P((RY,a8)=>{var hu=1e3,vu=hu*60,mu=vu*60,bu=mu*24,iB=bu*365.25;a8.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return aB(t);if(r==="number"&&isNaN(t)===!1)return e.long?sB(t):oB(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function aB(t){if(t=String(t),!(t.length>100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(!!e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*iB;case"days":case"day":case"d":return r*bu;case"hours":case"hour":case"hrs":case"hr":case"h":return r*mu;case"minutes":case"minute":case"mins":case"min":case"m":return r*vu;case"seconds":case"second":case"secs":case"sec":case"s":return r*hu;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function oB(t){return t>=bu?Math.round(t/bu)+"d":t>=mu?Math.round(t/mu)+"h":t>=vu?Math.round(t/vu)+"m":t>=hu?Math.round(t/hu)+"s":t+"ms"}function sB(t){return Ff(t,bu,"day")||Ff(t,mu,"hour")||Ff(t,vu,"minute")||Ff(t,hu,"second")||t+" ms"}function Ff(t,e,r){if(!(t{We=s8.exports=Wh.debug=Wh.default=Wh;We.coerce=dB;We.disable=lB;We.enable=uB;We.enabled=fB;We.humanize=o8();We.names=[];We.skips=[];We.formatters={};var Qh;function cB(t){var e=0,r;for(r in t)e=(e<<5)-e+t.charCodeAt(r),e|=0;return We.colors[Math.abs(e)%We.colors.length]}function Wh(t){function e(){if(!!e.enabled){var r=e,n=+new Date,i=n-(Qh||n);r.diff=i,r.prev=Qh,r.curr=n,Qh=n;for(var a=new Array(arguments.length),o=0;o{bt=u8.exports=Yh();bt.log=vB;bt.formatArgs=hB;bt.save=mB;bt.load=c8;bt.useColors=pB;bt.storage=typeof chrome<"u"&&typeof chrome.storage<"u"?chrome.storage.local:bB();bt.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"];function pB(){return typeof window<"u"&&window.process&&window.process.type==="renderer"?!0:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}bt.formatters.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}};function hB(t){var e=this.useColors;if(t[0]=(e?"%c":"")+this.namespace+(e?" %c":" ")+t[0]+(e?"%c ":" ")+"+"+bt.humanize(this.diff),!!e){var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var n=0,i=0;t[0].replace(/%[a-zA-Z%]/g,function(a){a!=="%%"&&(n++,a==="%c"&&(i=n))}),t.splice(i,0,r)}}function vB(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function mB(t){try{t==null?bt.storage.removeItem("debug"):bt.storage.debug=t}catch{}}function c8(){var t;try{t=bt.storage.debug}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}bt.enable(c8());function bB(){try{return window.localStorage}catch{}}});var h8=P((Nr,p8)=>{var f8=require("tty"),gu=require("util");Nr=p8.exports=Yh();Nr.init=SB;Nr.log=wB;Nr.formatArgs=yB;Nr.save=AB;Nr.load=d8;Nr.useColors=xB;Nr.colors=[6,2,3,4,5,1];Nr.inspectOpts=Object.keys(process.env).filter(function(t){return/^debug_/i.test(t)}).reduce(function(t,e){var r=e.substring(6).toLowerCase().replace(/_([a-z])/g,function(i,a){return a.toUpperCase()}),n=process.env[e];return/^(yes|on|true|enabled)$/i.test(n)?n=!0:/^(no|off|false|disabled)$/i.test(n)?n=!1:n==="null"?n=null:n=Number(n),t[r]=n,t},{});var ms=parseInt(process.env.DEBUG_FD,10)||2;ms!==1&&ms!==2&&gu.deprecate(function(){},"except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")();var gB=ms===1?process.stdout:ms===2?process.stderr:EB(ms);function xB(){return"colors"in Nr.inspectOpts?Boolean(Nr.inspectOpts.colors):f8.isatty(ms)}Nr.formatters.o=function(t){return this.inspectOpts.colors=this.useColors,gu.inspect(t,this.inspectOpts).split(` -`).map(function(e){return e.trim()}).join(" ")};Nr.formatters.O=function(t){return this.inspectOpts.colors=this.useColors,gu.inspect(t,this.inspectOpts)};function yB(t){var e=this.namespace,r=this.useColors;if(r){var n=this.color,i=" \x1B[3"+n+";1m"+e+" \x1B[0m";t[0]=i+t[0].split(` -`).join(` -`+i),t.push("\x1B[3"+n+"m+"+Nr.humanize(this.diff)+"\x1B[0m")}else t[0]=new Date().toUTCString()+" "+e+" "+t[0]}function wB(){return gB.write(gu.format.apply(gu,arguments)+` -`)}function AB(t){t==null?delete process.env.DEBUG:process.env.DEBUG=t}function d8(){return process.env.DEBUG}function EB(t){var e,r=process.binding("tty_wrap");switch(r.guessHandleType(t)){case"TTY":e=new f8.WriteStream(t),e._type="tty",e._handle&&e._handle.unref&&e._handle.unref();break;case"FILE":var n=require("fs");e=new n.SyncWriteStream(t,{autoClose:!1}),e._type="fs";break;case"PIPE":case"TCP":var i=require("net");e=new i.Socket({fd:t,readable:!1,writable:!0}),e.readable=!1,e.read=null,e._type="pipe",e._handle&&e._handle.unref&&e._handle.unref();break;default:throw new Error("Implement me. Unknown stream file type!")}return e.fd=t,e._isStdio=!0,e}function SB(t){t.inspectOpts={};for(var e=Object.keys(Nr.inspectOpts),r=0;r{typeof process<"u"&&process.type==="renderer"?$h.exports=l8():$h.exports=h8()});var xu=P((NY,m8)=>{"use strict";m8.exports=CB;var _B=/(?:[^\x21\x25\x26-\x3B\x3D\x3F-\x5B\x5D\x5F\x61-\x7A\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g,TB=/(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g,kB="$1\uFFFD$2";function CB(t){return String(t).replace(TB,kB).replace(_B,encodeURI)}});var yu=P((DY,b8)=>{"use strict";var OB=/["'&<>]/;b8.exports=PB;function PB(t){var e=""+t,r=OB.exec(e);if(!r)return e;var n,i="",a=0,o=0;for(a=r.index;a{"use strict";var x8=require("url"),g8=x8.parse,Lf=x8.Url;ev.exports=y8;ev.exports.original=MB;function y8(t){var e=t.url;if(e!==void 0){var r=t._parsedUrl;return A8(e,r)?r:(r=w8(e),r._raw=e,t._parsedUrl=r)}}function MB(t){var e=t.originalUrl;if(typeof e!="string")return y8(t);var r=t._parsedOriginalUrl;return A8(e,r)?r:(r=w8(e),r._raw=e,t._parsedOriginalUrl=r)}function w8(t){if(typeof t!="string"||t.charCodeAt(0)!==47)return g8(t);for(var e=t,r=null,n=null,i=1;i{"use strict";var rv=v8()("finalhandler"),BB=xu(),FB=yu(),S8=au(),LB=bs(),_8=Zc(),RB=gf(),IB=/\x20{2}/g,NB=/\n/g,DB=typeof setImmediate=="function"?setImmediate:function(t){process.nextTick(t.bind.apply(t,arguments))},JB=S8.isFinished;function qB(t){var e=FB(t).replace(NB,"
").replace(IB,"  ");return` - - - -Error - - -
`+e+`
- - -`}T8.exports=jB;function jB(t,e,r){var n=r||{},i=n.env||process.env.NODE_ENV||"development",a=n.onerror;return function(o){var c,u,s;if(!o&&E8(e)){rv("cannot 404 after headers sent");return}if(o?(s=zB(o),s===void 0?s=XB(e):c=UB(o),u=HB(o,s,i)):(s=404,u="Cannot "+t.method+" "+BB(GB(t))),rv("default %s",s),o&&a&&DB(a,o,t,e),E8(e)){rv("cannot %d after headers sent",s),t.socket.destroy();return}KB(t,e,s,c,u)}}function UB(t){if(!(!t.headers||typeof t.headers!="object")){for(var e=Object.create(null),r=Object.keys(t.headers),n=0;n=400&&t.status<600)return t.status;if(typeof t.statusCode=="number"&&t.statusCode>=400&&t.statusCode<600)return t.statusCode}function GB(t){try{return LB.original(t).pathname}catch{return"resource"}}function XB(t){var e=t.statusCode;return(typeof e!="number"||e<400||e>599)&&(e=500),e}function E8(t){return typeof t.headersSent!="boolean"?Boolean(t._header):t.headersSent}function KB(t,e,r,n,i){function a(){var o=qB(i);if(e.statusCode=r,e.statusMessage=_8.message[r],e.removeHeader("Content-Encoding"),e.removeHeader("Content-Language"),e.removeHeader("Content-Range"),VB(e,n),e.setHeader("Content-Security-Policy","default-src 'none'"),e.setHeader("X-Content-Type-Options","nosniff"),e.setHeader("Content-Type","text/html; charset=utf-8"),e.setHeader("Content-Length",Buffer.byteLength(o,"utf8")),t.method==="HEAD"){e.end();return}e.end(o,"utf8")}if(JB(t)){a();return}RB(t),S8(t,a),t.resume()}function VB(t,e){if(!!e)for(var r=Object.keys(e),n=0;n{var wu=1e3,Au=wu*60,Eu=Au*60,Su=Eu*24,ZB=Su*365.25;C8.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return QB(t);if(r==="number"&&isNaN(t)===!1)return e.long?YB(t):WB(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function QB(t){if(t=String(t),!(t.length>100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(!!e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*ZB;case"days":case"day":case"d":return r*Su;case"hours":case"hour":case"hrs":case"hr":case"h":return r*Eu;case"minutes":case"minute":case"mins":case"min":case"m":return r*Au;case"seconds":case"second":case"secs":case"sec":case"s":return r*wu;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function WB(t){return t>=Su?Math.round(t/Su)+"d":t>=Eu?Math.round(t/Eu)+"h":t>=Au?Math.round(t/Au)+"m":t>=wu?Math.round(t/wu)+"s":t+"ms"}function YB(t){return Rf(t,Su,"day")||Rf(t,Eu,"hour")||Rf(t,Au,"minute")||Rf(t,wu,"second")||t+" ms"}function Rf(t,e,r){if(!(t{Ye=P8.exports=nv.debug=nv.default=nv;Ye.coerce=nF;Ye.disable=rF;Ye.enable=eF;Ye.enabled=tF;Ye.humanize=O8();Ye.names=[];Ye.skips=[];Ye.formatters={};var tv;function $B(t){var e=0,r;for(r in t)e=(e<<5)-e+t.charCodeAt(r),e|=0;return Ye.colors[Math.abs(e)%Ye.colors.length]}function nv(t){function e(){if(!!e.enabled){var r=e,n=+new Date,i=n-(tv||n);r.diff=i,r.prev=tv,r.curr=n,tv=n;for(var a=new Array(arguments.length),o=0;o{gt=B8.exports=iv();gt.log=oF;gt.formatArgs=aF;gt.save=sF;gt.load=M8;gt.useColors=iF;gt.storage=typeof chrome<"u"&&typeof chrome.storage<"u"?chrome.storage.local:cF();gt.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"];function iF(){return typeof window<"u"&&window.process&&window.process.type==="renderer"?!0:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}gt.formatters.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}};function aF(t){var e=this.useColors;if(t[0]=(e?"%c":"")+this.namespace+(e?" %c":" ")+t[0]+(e?"%c ":" ")+"+"+gt.humanize(this.diff),!!e){var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var n=0,i=0;t[0].replace(/%[a-zA-Z%]/g,function(a){a!=="%%"&&(n++,a==="%c"&&(i=n))}),t.splice(i,0,r)}}function oF(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function sF(t){try{t==null?gt.storage.removeItem("debug"):gt.storage.debug=t}catch{}}function M8(){var t;try{t=gt.storage.debug}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}gt.enable(M8());function cF(){try{return window.localStorage}catch{}}});var N8=P((Dr,I8)=>{var L8=require("tty"),_u=require("util");Dr=I8.exports=iv();Dr.init=vF;Dr.log=dF;Dr.formatArgs=fF;Dr.save=pF;Dr.load=R8;Dr.useColors=lF;Dr.colors=[6,2,3,4,5,1];Dr.inspectOpts=Object.keys(process.env).filter(function(t){return/^debug_/i.test(t)}).reduce(function(t,e){var r=e.substring(6).toLowerCase().replace(/_([a-z])/g,function(i,a){return a.toUpperCase()}),n=process.env[e];return/^(yes|on|true|enabled)$/i.test(n)?n=!0:/^(no|off|false|disabled)$/i.test(n)?n=!1:n==="null"?n=null:n=Number(n),t[r]=n,t},{});var gs=parseInt(process.env.DEBUG_FD,10)||2;gs!==1&&gs!==2&&_u.deprecate(function(){},"except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")();var uF=gs===1?process.stdout:gs===2?process.stderr:hF(gs);function lF(){return"colors"in Dr.inspectOpts?Boolean(Dr.inspectOpts.colors):L8.isatty(gs)}Dr.formatters.o=function(t){return this.inspectOpts.colors=this.useColors,_u.inspect(t,this.inspectOpts).split(` -`).map(function(e){return e.trim()}).join(" ")};Dr.formatters.O=function(t){return this.inspectOpts.colors=this.useColors,_u.inspect(t,this.inspectOpts)};function fF(t){var e=this.namespace,r=this.useColors;if(r){var n=this.color,i=" \x1B[3"+n+";1m"+e+" \x1B[0m";t[0]=i+t[0].split(` -`).join(` -`+i),t.push("\x1B[3"+n+"m+"+Dr.humanize(this.diff)+"\x1B[0m")}else t[0]=new Date().toUTCString()+" "+e+" "+t[0]}function dF(){return uF.write(_u.format.apply(_u,arguments)+` -`)}function pF(t){t==null?delete process.env.DEBUG:process.env.DEBUG=t}function R8(){return process.env.DEBUG}function hF(t){var e,r=process.binding("tty_wrap");switch(r.guessHandleType(t)){case"TTY":e=new L8.WriteStream(t),e._type="tty",e._handle&&e._handle.unref&&e._handle.unref();break;case"FILE":var n=require("fs");e=new n.SyncWriteStream(t,{autoClose:!1}),e._type="fs";break;case"PIPE":case"TCP":var i=require("net");e=new i.Socket({fd:t,readable:!1,writable:!0}),e.readable=!1,e.read=null,e._type="pipe",e._handle&&e._handle.unref&&e._handle.unref();break;default:throw new Error("Implement me. Unknown stream file type!")}return e.fd=t,e._isStdio=!0,e}function vF(t){t.inspectOpts={};for(var e=Object.keys(Dr.inspectOpts),r=0;r{typeof process<"u"&&process.type==="renderer"?av.exports=F8():av.exports=N8()});var Tu=P((HY,q8)=>{"use strict";q8.exports=mF;function D8(t,e,r){for(var n=0;n0&&Array.isArray(i)?D8(i,e,r-1):e.push(i)}return e}function J8(t,e){for(var r=0;r{H8.exports=U8;var j8=/\((?!\?)/g;function U8(t,e,r){r=r||{},e=e||[];var n=r.strict,i=r.end!==!1,a=r.sensitive?"":"i",o=0,c=e.length,u=0,s=0,f;if(t instanceof RegExp){for(;f=j8.exec(t.source);)e.push({name:s++,optional:!1,offset:f.index});return t}if(Array.isArray(t))return t=t.map(function(T){return U8(T,e,r).source}),new RegExp("(?:"+t.join("|")+")",a);for(t=("^"+t+(n?"":t[t.length-1]==="/"?"?":"/?")).replace(/\/\(/g,"/(?:").replace(/([\/\.])/g,"\\$1").replace(/(\\\/)?(\\\.)?:(\w+)(\(.*?\))?(\*)?(\?)?/g,function(T,A,O,B,F,I,D,z){A=A||"",O=O||"",F=F||"([^\\/"+O+"]+?)",D=D||"",e.push({name:B,optional:!!D,offset:z+o});var G=""+(D?"":A)+"(?:"+O+(D?A:"")+F+(I?"((?:[\\/"+O+"].+?)?)":"")+")"+D;return o+=G.length-T.length,G}).replace(/\*/g,function(T,A){for(var O=e.length;O-- >c&&e[O].offset>A;)e[O].offset+=3;return"(.*)"});f=j8.exec(t);){for(var m=0,w=f.index;t.charAt(--w)==="\\";)m++;m%2!==1&&((c+u===e.length||e[c+u].offset>f.index)&&e.splice(c+u,0,{name:s++,optional:!1,offset:f.index}),u++)}return t+=i?"$":t[t.length-1]==="/"?"":"(?=\\/|$)",new RegExp(t,a)}});var ov=P((GY,X8)=>{"use strict";var bF=z8(),gF=xs()("express:router:layer"),xF=Object.prototype.hasOwnProperty;X8.exports=ys;function ys(t,e,r){if(!(this instanceof ys))return new ys(t,e,r);gF("new %o",t);var n=e||{};this.handle=r,this.name=r.name||"",this.params=void 0,this.path=void 0,this.regexp=bF(t,this.keys=[],n),this.regexp.fast_star=t==="*",this.regexp.fast_slash=t==="/"&&n.end===!1}ys.prototype.handle_error=function(e,r,n,i){var a=this.handle;if(a.length!==4)return i(e);try{a(e,r,n,i)}catch(o){i(o)}};ys.prototype.handle_request=function(e,r,n){var i=this.handle;if(i.length>3)return n();try{i(e,r,n)}catch(a){n(a)}};ys.prototype.match=function(e){var r;if(e!=null){if(this.regexp.fast_slash)return this.params={},this.path="",!0;if(this.regexp.fast_star)return this.params={0:G8(e)},this.path=e,!0;r=this.regexp.exec(e)}if(!r)return this.params=void 0,this.path=void 0,!1;this.params={},this.path=r[0];for(var n=this.keys,i=this.params,a=1;a{"use strict";var K8=require("http");V8.exports=yF()||wF();function yF(){return K8.METHODS&&K8.METHODS.map(function(e){return e.toLowerCase()})}function wF(){return["get","post","put","head","delete","options","trace","copy","lock","mkcol","move","purge","propfind","proppatch","unlock","report","mkactivity","checkout","merge","m-search","notify","subscribe","unsubscribe","patch","search","connect"]}});var sv=P((KY,e3)=>{"use strict";var Z8=xs()("express:router:route"),Q8=Tu(),W8=ov(),AF=If(),Y8=Array.prototype.slice,$8=Object.prototype.toString;e3.exports=ws;function ws(t){this.path=t,this.stack=[],Z8("new %o",t),this.methods={}}ws.prototype._handles_method=function(e){if(this.methods._all)return!0;var r=e.toLowerCase();return r==="head"&&!this.methods.head&&(r="get"),Boolean(this.methods[r])};ws.prototype._options=function(){var e=Object.keys(this.methods);this.methods.get&&!this.methods.head&&e.push("head");for(var r=0;r100)return setImmediate(u,s);var f=a[i++];if(!f)return n(s);f.method&&f.method!==c?u(s):s?f.handle_error(s,e,r,u):f.handle_request(e,r,u),o=0}};ws.prototype.all=function(){for(var e=Q8(Y8.call(arguments)),r=0;r{r3=t3.exports=function(t,e){if(t&&e)for(var r in e)t[r]=e[r];return t}});var uv=P((VY,o3)=>{"use strict";var EF=sv(),i3=ov(),SF=If(),cv=ku(),Nf=xs()("express:router"),n3=qn()("express"),_F=Tu(),TF=bs(),kF=Vc(),CF=/^\[object (\S+)\]$/,a3=Array.prototype.slice,OF=Object.prototype.toString,fo=o3.exports=function(t){var e=t||{};function r(n,i,a){r.handle(n,i,a)}return kF(r,fo),r.params={},r._params=[],r.caseSensitive=e.caseSensitive,r.mergeParams=e.mergeParams,r.strict=e.strict,r.stack=[],r};fo.param=function(e,r){if(typeof e=="function"){n3("router.param(fn): Refactor to use path params"),this._params.push(e);return}var n=this._params,i=n.length,a;e[0]===":"&&(n3("router.param("+JSON.stringify(e)+", fn): Use router.param("+JSON.stringify(e.slice(1))+", fn) instead"),e=e.slice(1));for(var o=0;o=w.length){setImmediate(O,D);return}if(++s>100)return setImmediate(B,I);var z=MF(e);if(z==null)return O(D);for(var G,j,Z;j!==!0&&a=c.length)return a();if(f=0,m=c[u++],s=m.name,w=n.params[s],T=o[s],A=r[s],w===void 0||!T)return O();if(A&&(A.match===w||A.error&&A.error!=="route"))return n.params[s]=A.value,O(A.error);r[s]=A={error:null,match:w,value:w},B()}function B(F){var I=T[f++];if(A.value=n.params[m.name],F){A.error=F,O(F);return}if(!I)return O();try{I(n,i,B,w,m.name)}catch(D){B(D)}}O()};fo.use=function(e){var r=0,n="/";if(typeof e!="function"){for(var i=e;Array.isArray(i)&&i.length!==0;)i=i[0];typeof i!="function"&&(r=1,n=e)}var a=_F(a3.call(arguments,r));if(a.length===0)throw new TypeError("Router.use() requires a middleware function");for(var o=0;o");var c=new i3(n,{sensitive:this.caseSensitive,strict:!1,end:!1},e);c.route=void 0,this.stack.push(c)}return this};fo.route=function(e){var r=new EF(e),n=new i3(e,{sensitive:this.caseSensitive,strict:this.strict,end:!0},r.dispatch.bind(r));return n.route=r,this.stack.push(n),r};SF.concat("all").forEach(function(t){fo[t]=function(e){var r=this.route(e);return r[t].apply(r,a3.call(arguments,1)),this}});function PF(t,e){for(var r=0;r=0;n--)t[n+i]=t[n],n{"use strict";var s3=Vc();c3.init=function(t){return function(r,n,i){t.enabled("x-powered-by")&&n.setHeader("X-Powered-By","Express"),r.res=n,n.req=r,r.next=i,s3(r,t.request),s3(n,t.response),n.locals=n.locals||Object.create(null),i()}}});var lv=P((QY,l3)=>{"use strict";var JF=ku(),qF=bs(),jF=Mf();l3.exports=function(e){var r=JF({},e),n=jF.parse;return typeof e=="function"&&(n=e,r=void 0),r!==void 0&&r.allowPrototypes===void 0&&(r.allowPrototypes=!0),function(a,o,c){if(!a.query){var u=qF(a).query;a.query=n(u,r)}c()}}});var v3=P((WY,h3)=>{"use strict";var Df=xs()("express:view"),Cu=require("path"),UF=require("fs"),HF=Cu.dirname,p3=Cu.basename,zF=Cu.extname,f3=Cu.join,GF=Cu.resolve;h3.exports=Jf;function Jf(t,e){var r=e||{};if(this.defaultEngine=r.defaultEngine,this.ext=zF(t),this.name=t,this.root=r.root,!this.ext&&!this.defaultEngine)throw new Error("No default engine was specified and no extension was provided.");var n=t;if(this.ext||(this.ext=this.defaultEngine[0]!=="."?"."+this.defaultEngine:this.defaultEngine,n+=this.ext),!r.engines[this.ext]){var i=this.ext.slice(1);Df('require "%s"',i);var a=require(i).__express;if(typeof a!="function")throw new Error('Module "'+i+'" does not provide a view engine.');r.engines[this.ext]=a}this.engine=r.engines[this.ext],this.path=this.lookup(n)}Jf.prototype.lookup=function(e){var r,n=[].concat(this.root);Df('lookup "%s"',e);for(var i=0;i{var qf=require("buffer"),Xn=qf.Buffer;function m3(t,e){for(var r in t)e[r]=t[r]}Xn.from&&Xn.alloc&&Xn.allocUnsafe&&Xn.allocUnsafeSlow?b3.exports=qf:(m3(qf,fv),fv.Buffer=po);function po(t,e,r){return Xn(t,e,r)}po.prototype=Object.create(Xn.prototype);m3(Xn,po);po.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return Xn(t,e,r)};po.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var n=Xn(t);return e!==void 0?typeof r=="string"?n.fill(e,r):n.fill(e):n.fill(0),n};po.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return Xn(t)};po.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return qf.SlowBuffer(t)}});var pv=P((YY,dv)=>{"use strict";dv.exports=tL;dv.exports.parse=oL;var g3=require("path").basename,XF=jf().Buffer,KF=/[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g,VF=/%[0-9A-Fa-f]{2}/,ZF=/%([0-9A-Fa-f]{2})/g,y3=/[^\x20-\x7e\xa0-\xff]/g,QF=/\\([\u0000-\u007f])/g,WF=/([\\"])/g,x3=/;[\x09\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*=[\x09\x20]*("(?:[\x20!\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*/g,YF=/^[\x20-\x7e\x80-\xff]+$/,$F=/^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/,eL=/^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/,rL=/^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*(?:$|;)/;function tL(t,e){var r=e||{},n=r.type||"attachment",i=nL(t,r.fallback);return iL(new A3(n,i))}function nL(t,e){if(t!==void 0){var r={};if(typeof t!="string")throw new TypeError("filename must be a string");if(e===void 0&&(e=!0),typeof e!="string"&&typeof e!="boolean")throw new TypeError("fallback must be a string or boolean");if(typeof e=="string"&&y3.test(e))throw new TypeError("fallback must be ISO-8859-1 string");var n=g3(t),i=YF.test(n),a=typeof e!="string"?e&&w3(n):g3(e),o=typeof a=="string"&&a!==n;return(o||!i||VF.test(n))&&(r["filename*"]=n),(i||o)&&(r.filename=o?a:n),r}}function iL(t){var e=t.parameters,r=t.type;if(!r||typeof r!="string"||!$F.test(r))throw new TypeError("invalid type");var n=String(r).toLowerCase();if(e&&typeof e=="object")for(var i,a=Object.keys(e).sort(),o=0;o{var Ou=1e3,Pu=Ou*60,Mu=Pu*60,Bu=Mu*24,fL=Bu*365.25;E3.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return dL(t);if(r==="number"&&isNaN(t)===!1)return e.long?hL(t):pL(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function dL(t){if(t=String(t),!(t.length>100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(!!e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*fL;case"days":case"day":case"d":return r*Bu;case"hours":case"hour":case"hrs":case"hr":case"h":return r*Mu;case"minutes":case"minute":case"mins":case"min":case"m":return r*Pu;case"seconds":case"second":case"secs":case"sec":case"s":return r*Ou;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function pL(t){return t>=Bu?Math.round(t/Bu)+"d":t>=Mu?Math.round(t/Mu)+"h":t>=Pu?Math.round(t/Pu)+"m":t>=Ou?Math.round(t/Ou)+"s":t+"ms"}function hL(t){return Uf(t,Bu,"day")||Uf(t,Mu,"hour")||Uf(t,Pu,"minute")||Uf(t,Ou,"second")||t+" ms"}function Uf(t,e,r){if(!(t{$e=_3.exports=vv.debug=vv.default=vv;$e.coerce=xL;$e.disable=bL;$e.enable=mL;$e.enabled=gL;$e.humanize=S3();$e.names=[];$e.skips=[];$e.formatters={};var hv;function vL(t){var e=0,r;for(r in t)e=(e<<5)-e+t.charCodeAt(r),e|=0;return $e.colors[Math.abs(e)%$e.colors.length]}function vv(t){function e(){if(!!e.enabled){var r=e,n=+new Date,i=n-(hv||n);r.diff=i,r.prev=hv,r.curr=n,hv=n;for(var a=new Array(arguments.length),o=0;o{xt=k3.exports=mv();xt.log=AL;xt.formatArgs=wL;xt.save=EL;xt.load=T3;xt.useColors=yL;xt.storage=typeof chrome<"u"&&typeof chrome.storage<"u"?chrome.storage.local:SL();xt.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"];function yL(){return typeof window<"u"&&window.process&&window.process.type==="renderer"?!0:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}xt.formatters.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}};function wL(t){var e=this.useColors;if(t[0]=(e?"%c":"")+this.namespace+(e?" %c":" ")+t[0]+(e?"%c ":" ")+"+"+xt.humanize(this.diff),!!e){var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var n=0,i=0;t[0].replace(/%[a-zA-Z%]/g,function(a){a!=="%%"&&(n++,a==="%c"&&(i=n))}),t.splice(i,0,r)}}function AL(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function EL(t){try{t==null?xt.storage.removeItem("debug"):xt.storage.debug=t}catch{}}function T3(){var t;try{t=xt.storage.debug}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}xt.enable(T3());function SL(){try{return window.localStorage}catch{}}});var B3=P((Jr,M3)=>{var O3=require("tty"),Fu=require("util");Jr=M3.exports=mv();Jr.init=ML;Jr.log=CL;Jr.formatArgs=kL;Jr.save=OL;Jr.load=P3;Jr.useColors=TL;Jr.colors=[6,2,3,4,5,1];Jr.inspectOpts=Object.keys(process.env).filter(function(t){return/^debug_/i.test(t)}).reduce(function(t,e){var r=e.substring(6).toLowerCase().replace(/_([a-z])/g,function(i,a){return a.toUpperCase()}),n=process.env[e];return/^(yes|on|true|enabled)$/i.test(n)?n=!0:/^(no|off|false|disabled)$/i.test(n)?n=!1:n==="null"?n=null:n=Number(n),t[r]=n,t},{});var As=parseInt(process.env.DEBUG_FD,10)||2;As!==1&&As!==2&&Fu.deprecate(function(){},"except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")();var _L=As===1?process.stdout:As===2?process.stderr:PL(As);function TL(){return"colors"in Jr.inspectOpts?Boolean(Jr.inspectOpts.colors):O3.isatty(As)}Jr.formatters.o=function(t){return this.inspectOpts.colors=this.useColors,Fu.inspect(t,this.inspectOpts).split(` -`).map(function(e){return e.trim()}).join(" ")};Jr.formatters.O=function(t){return this.inspectOpts.colors=this.useColors,Fu.inspect(t,this.inspectOpts)};function kL(t){var e=this.namespace,r=this.useColors;if(r){var n=this.color,i=" \x1B[3"+n+";1m"+e+" \x1B[0m";t[0]=i+t[0].split(` -`).join(` -`+i),t.push("\x1B[3"+n+"m+"+Jr.humanize(this.diff)+"\x1B[0m")}else t[0]=new Date().toUTCString()+" "+e+" "+t[0]}function CL(){return _L.write(Fu.format.apply(Fu,arguments)+` -`)}function OL(t){t==null?delete process.env.DEBUG:process.env.DEBUG=t}function P3(){return process.env.DEBUG}function PL(t){var e,r=process.binding("tty_wrap");switch(r.guessHandleType(t)){case"TTY":e=new O3.WriteStream(t),e._type="tty",e._handle&&e._handle.unref&&e._handle.unref();break;case"FILE":var n=require("fs");e=new n.SyncWriteStream(t,{autoClose:!1}),e._type="fs";break;case"PIPE":case"TCP":var i=require("net");e=new i.Socket({fd:t,readable:!1,writable:!0}),e.readable=!1,e.read=null,e._type="pipe",e._handle&&e._handle.unref&&e._handle.unref();break;default:throw new Error("Implement me. Unknown stream file type!")}return e.fd=t,e._isStdio=!0,e}function ML(t){t.inspectOpts={};for(var e=Object.keys(Jr.inspectOpts),r=0;r{typeof process<"u"&&process.type==="renderer"?bv.exports=C3():bv.exports=B3()});var gv=P((r$,I3)=>{"use strict";I3.exports=LL;var BL=require("crypto"),L3=require("fs").Stats,R3=Object.prototype.toString;function FL(t){if(t.length===0)return'"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk"';var e=BL.createHash("sha1").update(t,"utf8").digest("base64").substring(0,27),r=typeof t=="string"?Buffer.byteLength(t,"utf8"):t.length;return'"'+r.toString(16)+"-"+e+'"'}function LL(t,e){if(t==null)throw new TypeError("argument entity is required");var r=RL(t),n=e&&typeof e.weak=="boolean"?e.weak:r;if(!r&&typeof t!="string"&&!Buffer.isBuffer(t))throw new TypeError("argument entity must be string, Buffer, or fs.Stats");var i=r?IL(t):FL(t);return n?"W/"+i:i}function RL(t){return typeof L3=="function"&&t instanceof L3?!0:t&&typeof t=="object"&&"ctime"in t&&R3.call(t.ctime)==="[object Date]"&&"mtime"in t&&R3.call(t.mtime)==="[object Date]"&&"ino"in t&&typeof t.ino=="number"&&"size"in t&&typeof t.size=="number"}function IL(t){var e=t.mtime.getTime().toString(16),r=t.size.toString(16);return'"'+r+"-"+e+'"'}});var xv=P((t$,D3)=>{"use strict";var NL=/(?:^|,)\s*?no-cache\s*?(?:,|$)/;D3.exports=DL;function DL(t,e){var r=t["if-modified-since"],n=t["if-none-match"];if(!r&&!n)return!1;var i=t["cache-control"];if(i&&NL.test(i))return!1;if(n&&n!=="*"){var a=e.etag;if(!a)return!1;for(var o=!0,c=JL(n),u=0;u{qL.exports={"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomsvc+xml":["atomsvc"],"application/bdoc":["bdoc"],"application/ccxml+xml":["ccxml"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["ecma"],"application/emma+xml":["emma"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/font-tdpfr":["pfr"],"application/font-woff":[],"application/font-woff2":[],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/gzip":["gz"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js","mjs"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/prs.cww":["cww"],"application/pskc+xml":["pskcxml"],"application/raml+yaml":["raml"],"application/rdf+xml":["rdf"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/vnd.3gpp.pic-bw-large":["plb"],"application/vnd.3gpp.pic-bw-small":["psb"],"application/vnd.3gpp.pic-bw-var":["pvb"],"application/vnd.3gpp2.tcap":["tcap"],"application/vnd.3m.post-it-notes":["pwn"],"application/vnd.accpac.simply.aso":["aso"],"application/vnd.accpac.simply.imp":["imp"],"application/vnd.acucobol":["acu"],"application/vnd.acucorp":["atc","acutc"],"application/vnd.adobe.air-application-installer-package+zip":["air"],"application/vnd.adobe.formscentral.fcdt":["fcdt"],"application/vnd.adobe.fxp":["fxp","fxpl"],"application/vnd.adobe.xdp+xml":["xdp"],"application/vnd.adobe.xfdf":["xfdf"],"application/vnd.ahead.space":["ahead"],"application/vnd.airzip.filesecure.azf":["azf"],"application/vnd.airzip.filesecure.azs":["azs"],"application/vnd.amazon.ebook":["azw"],"application/vnd.americandynamics.acc":["acc"],"application/vnd.amiga.ami":["ami"],"application/vnd.android.package-archive":["apk"],"application/vnd.anser-web-certificate-issue-initiation":["cii"],"application/vnd.anser-web-funds-transfer-initiation":["fti"],"application/vnd.antix.game-component":["atx"],"application/vnd.apple.installer+xml":["mpkg"],"application/vnd.apple.mpegurl":["m3u8"],"application/vnd.apple.pkpass":["pkpass"],"application/vnd.aristanetworks.swi":["swi"],"application/vnd.astraea-software.iota":["iota"],"application/vnd.audiograph":["aep"],"application/vnd.blueice.multipass":["mpm"],"application/vnd.bmi":["bmi"],"application/vnd.businessobjects":["rep"],"application/vnd.chemdraw+xml":["cdxml"],"application/vnd.chipnuts.karaoke-mmd":["mmd"],"application/vnd.cinderella":["cdy"],"application/vnd.claymore":["cla"],"application/vnd.cloanto.rp9":["rp9"],"application/vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"application/vnd.cluetrust.cartomobile-config":["c11amc"],"application/vnd.cluetrust.cartomobile-config-pkg":["c11amz"],"application/vnd.commonspace":["csp"],"application/vnd.contact.cmsg":["cdbcmsg"],"application/vnd.cosmocaller":["cmc"],"application/vnd.crick.clicker":["clkx"],"application/vnd.crick.clicker.keyboard":["clkk"],"application/vnd.crick.clicker.palette":["clkp"],"application/vnd.crick.clicker.template":["clkt"],"application/vnd.crick.clicker.wordbank":["clkw"],"application/vnd.criticaltools.wbs+xml":["wbs"],"application/vnd.ctc-posml":["pml"],"application/vnd.cups-ppd":["ppd"],"application/vnd.curl.car":["car"],"application/vnd.curl.pcurl":["pcurl"],"application/vnd.dart":["dart"],"application/vnd.data-vision.rdz":["rdz"],"application/vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"application/vnd.dece.ttml+xml":["uvt","uvvt"],"application/vnd.dece.unspecified":["uvx","uvvx"],"application/vnd.dece.zip":["uvz","uvvz"],"application/vnd.denovo.fcselayout-link":["fe_launch"],"application/vnd.dna":["dna"],"application/vnd.dolby.mlp":["mlp"],"application/vnd.dpgraph":["dpg"],"application/vnd.dreamfactory":["dfac"],"application/vnd.ds-keypoint":["kpxx"],"application/vnd.dvb.ait":["ait"],"application/vnd.dvb.service":["svc"],"application/vnd.dynageo":["geo"],"application/vnd.ecowin.chart":["mag"],"application/vnd.enliven":["nml"],"application/vnd.epson.esf":["esf"],"application/vnd.epson.msf":["msf"],"application/vnd.epson.quickanime":["qam"],"application/vnd.epson.salt":["slt"],"application/vnd.epson.ssf":["ssf"],"application/vnd.eszigno3+xml":["es3","et3"],"application/vnd.ezpix-album":["ez2"],"application/vnd.ezpix-package":["ez3"],"application/vnd.fdf":["fdf"],"application/vnd.fdsn.mseed":["mseed"],"application/vnd.fdsn.seed":["seed","dataless"],"application/vnd.flographit":["gph"],"application/vnd.fluxtime.clip":["ftc"],"application/vnd.framemaker":["fm","frame","maker","book"],"application/vnd.frogans.fnc":["fnc"],"application/vnd.frogans.ltf":["ltf"],"application/vnd.fsc.weblaunch":["fsc"],"application/vnd.fujitsu.oasys":["oas"],"application/vnd.fujitsu.oasys2":["oa2"],"application/vnd.fujitsu.oasys3":["oa3"],"application/vnd.fujitsu.oasysgp":["fg5"],"application/vnd.fujitsu.oasysprs":["bh2"],"application/vnd.fujixerox.ddd":["ddd"],"application/vnd.fujixerox.docuworks":["xdw"],"application/vnd.fujixerox.docuworks.binder":["xbd"],"application/vnd.fuzzysheet":["fzs"],"application/vnd.genomatix.tuxedo":["txd"],"application/vnd.geogebra.file":["ggb"],"application/vnd.geogebra.tool":["ggt"],"application/vnd.geometry-explorer":["gex","gre"],"application/vnd.geonext":["gxt"],"application/vnd.geoplan":["g2w"],"application/vnd.geospace":["g3w"],"application/vnd.gmx":["gmx"],"application/vnd.google-apps.document":["gdoc"],"application/vnd.google-apps.presentation":["gslides"],"application/vnd.google-apps.spreadsheet":["gsheet"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/vnd.grafeq":["gqf","gqs"],"application/vnd.groove-account":["gac"],"application/vnd.groove-help":["ghf"],"application/vnd.groove-identity-message":["gim"],"application/vnd.groove-injector":["grv"],"application/vnd.groove-tool-message":["gtm"],"application/vnd.groove-tool-template":["tpl"],"application/vnd.groove-vcard":["vcg"],"application/vnd.hal+xml":["hal"],"application/vnd.handheld-entertainment+xml":["zmm"],"application/vnd.hbci":["hbci"],"application/vnd.hhe.lesson-player":["les"],"application/vnd.hp-hpgl":["hpgl"],"application/vnd.hp-hpid":["hpid"],"application/vnd.hp-hps":["hps"],"application/vnd.hp-jlyt":["jlt"],"application/vnd.hp-pcl":["pcl"],"application/vnd.hp-pclxl":["pclxl"],"application/vnd.hydrostatix.sof-data":["sfd-hdstx"],"application/vnd.ibm.minipay":["mpy"],"application/vnd.ibm.modcap":["afp","listafp","list3820"],"application/vnd.ibm.rights-management":["irm"],"application/vnd.ibm.secure-container":["sc"],"application/vnd.iccprofile":["icc","icm"],"application/vnd.igloader":["igl"],"application/vnd.immervision-ivp":["ivp"],"application/vnd.immervision-ivu":["ivu"],"application/vnd.insors.igm":["igm"],"application/vnd.intercon.formnet":["xpw","xpx"],"application/vnd.intergeo":["i2g"],"application/vnd.intu.qbo":["qbo"],"application/vnd.intu.qfx":["qfx"],"application/vnd.ipunplugged.rcprofile":["rcprofile"],"application/vnd.irepository.package+xml":["irp"],"application/vnd.is-xpr":["xpr"],"application/vnd.isac.fcs":["fcs"],"application/vnd.jam":["jam"],"application/vnd.jcp.javame.midlet-rms":["rms"],"application/vnd.jisp":["jisp"],"application/vnd.joost.joda-archive":["joda"],"application/vnd.kahootz":["ktz","ktr"],"application/vnd.kde.karbon":["karbon"],"application/vnd.kde.kchart":["chrt"],"application/vnd.kde.kformula":["kfo"],"application/vnd.kde.kivio":["flw"],"application/vnd.kde.kontour":["kon"],"application/vnd.kde.kpresenter":["kpr","kpt"],"application/vnd.kde.kspread":["ksp"],"application/vnd.kde.kword":["kwd","kwt"],"application/vnd.kenameaapp":["htke"],"application/vnd.kidspiration":["kia"],"application/vnd.kinar":["kne","knp"],"application/vnd.koan":["skp","skd","skt","skm"],"application/vnd.kodak-descriptor":["sse"],"application/vnd.las.las+xml":["lasxml"],"application/vnd.llamagraphics.life-balance.desktop":["lbd"],"application/vnd.llamagraphics.life-balance.exchange+xml":["lbe"],"application/vnd.lotus-1-2-3":["123"],"application/vnd.lotus-approach":["apr"],"application/vnd.lotus-freelance":["pre"],"application/vnd.lotus-notes":["nsf"],"application/vnd.lotus-organizer":["org"],"application/vnd.lotus-screencam":["scm"],"application/vnd.lotus-wordpro":["lwp"],"application/vnd.macports.portpkg":["portpkg"],"application/vnd.mcd":["mcd"],"application/vnd.medcalcdata":["mc1"],"application/vnd.mediastation.cdkey":["cdkey"],"application/vnd.mfer":["mwf"],"application/vnd.mfmp":["mfm"],"application/vnd.micrografx.flo":["flo"],"application/vnd.micrografx.igx":["igx"],"application/vnd.mif":["mif"],"application/vnd.mobius.daf":["daf"],"application/vnd.mobius.dis":["dis"],"application/vnd.mobius.mbk":["mbk"],"application/vnd.mobius.mqy":["mqy"],"application/vnd.mobius.msl":["msl"],"application/vnd.mobius.plc":["plc"],"application/vnd.mobius.txf":["txf"],"application/vnd.mophun.application":["mpn"],"application/vnd.mophun.certificate":["mpc"],"application/vnd.mozilla.xul+xml":["xul"],"application/vnd.ms-artgalry":["cil"],"application/vnd.ms-cab-compressed":["cab"],"application/vnd.ms-excel":["xls","xlm","xla","xlc","xlt","xlw"],"application/vnd.ms-excel.addin.macroenabled.12":["xlam"],"application/vnd.ms-excel.sheet.binary.macroenabled.12":["xlsb"],"application/vnd.ms-excel.sheet.macroenabled.12":["xlsm"],"application/vnd.ms-excel.template.macroenabled.12":["xltm"],"application/vnd.ms-fontobject":["eot"],"application/vnd.ms-htmlhelp":["chm"],"application/vnd.ms-ims":["ims"],"application/vnd.ms-lrm":["lrm"],"application/vnd.ms-officetheme":["thmx"],"application/vnd.ms-outlook":["msg"],"application/vnd.ms-pki.seccat":["cat"],"application/vnd.ms-pki.stl":["stl"],"application/vnd.ms-powerpoint":["ppt","pps","pot"],"application/vnd.ms-powerpoint.addin.macroenabled.12":["ppam"],"application/vnd.ms-powerpoint.presentation.macroenabled.12":["pptm"],"application/vnd.ms-powerpoint.slide.macroenabled.12":["sldm"],"application/vnd.ms-powerpoint.slideshow.macroenabled.12":["ppsm"],"application/vnd.ms-powerpoint.template.macroenabled.12":["potm"],"application/vnd.ms-project":["mpp","mpt"],"application/vnd.ms-word.document.macroenabled.12":["docm"],"application/vnd.ms-word.template.macroenabled.12":["dotm"],"application/vnd.ms-works":["wps","wks","wcm","wdb"],"application/vnd.ms-wpl":["wpl"],"application/vnd.ms-xpsdocument":["xps"],"application/vnd.mseq":["mseq"],"application/vnd.musician":["mus"],"application/vnd.muvee.style":["msty"],"application/vnd.mynfc":["taglet"],"application/vnd.neurolanguage.nlu":["nlu"],"application/vnd.nitf":["ntf","nitf"],"application/vnd.noblenet-directory":["nnd"],"application/vnd.noblenet-sealer":["nns"],"application/vnd.noblenet-web":["nnw"],"application/vnd.nokia.n-gage.data":["ngdat"],"application/vnd.nokia.n-gage.symbian.install":["n-gage"],"application/vnd.nokia.radio-preset":["rpst"],"application/vnd.nokia.radio-presets":["rpss"],"application/vnd.novadigm.edm":["edm"],"application/vnd.novadigm.edx":["edx"],"application/vnd.novadigm.ext":["ext"],"application/vnd.oasis.opendocument.chart":["odc"],"application/vnd.oasis.opendocument.chart-template":["otc"],"application/vnd.oasis.opendocument.database":["odb"],"application/vnd.oasis.opendocument.formula":["odf"],"application/vnd.oasis.opendocument.formula-template":["odft"],"application/vnd.oasis.opendocument.graphics":["odg"],"application/vnd.oasis.opendocument.graphics-template":["otg"],"application/vnd.oasis.opendocument.image":["odi"],"application/vnd.oasis.opendocument.image-template":["oti"],"application/vnd.oasis.opendocument.presentation":["odp"],"application/vnd.oasis.opendocument.presentation-template":["otp"],"application/vnd.oasis.opendocument.spreadsheet":["ods"],"application/vnd.oasis.opendocument.spreadsheet-template":["ots"],"application/vnd.oasis.opendocument.text":["odt"],"application/vnd.oasis.opendocument.text-master":["odm"],"application/vnd.oasis.opendocument.text-template":["ott"],"application/vnd.oasis.opendocument.text-web":["oth"],"application/vnd.olpc-sugar":["xo"],"application/vnd.oma.dd2+xml":["dd2"],"application/vnd.openofficeorg.extension":["oxt"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":["pptx"],"application/vnd.openxmlformats-officedocument.presentationml.slide":["sldx"],"application/vnd.openxmlformats-officedocument.presentationml.slideshow":["ppsx"],"application/vnd.openxmlformats-officedocument.presentationml.template":["potx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":["xlsx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.template":["xltx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":["docx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.template":["dotx"],"application/vnd.osgeo.mapguide.package":["mgp"],"application/vnd.osgi.dp":["dp"],"application/vnd.osgi.subsystem":["esa"],"application/vnd.palm":["pdb","pqa","oprc"],"application/vnd.pawaafile":["paw"],"application/vnd.pg.format":["str"],"application/vnd.pg.osasli":["ei6"],"application/vnd.picsel":["efif"],"application/vnd.pmi.widget":["wg"],"application/vnd.pocketlearn":["plf"],"application/vnd.powerbuilder6":["pbd"],"application/vnd.previewsystems.box":["box"],"application/vnd.proteus.magazine":["mgz"],"application/vnd.publishare-delta-tree":["qps"],"application/vnd.pvi.ptid1":["ptid"],"application/vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"application/vnd.realvnc.bed":["bed"],"application/vnd.recordare.musicxml":["mxl"],"application/vnd.recordare.musicxml+xml":["musicxml"],"application/vnd.rig.cryptonote":["cryptonote"],"application/vnd.rim.cod":["cod"],"application/vnd.rn-realmedia":["rm"],"application/vnd.rn-realmedia-vbr":["rmvb"],"application/vnd.route66.link66+xml":["link66"],"application/vnd.sailingtracker.track":["st"],"application/vnd.seemail":["see"],"application/vnd.sema":["sema"],"application/vnd.semd":["semd"],"application/vnd.semf":["semf"],"application/vnd.shana.informed.formdata":["ifm"],"application/vnd.shana.informed.formtemplate":["itp"],"application/vnd.shana.informed.interchange":["iif"],"application/vnd.shana.informed.package":["ipk"],"application/vnd.simtech-mindmapper":["twd","twds"],"application/vnd.smaf":["mmf"],"application/vnd.smart.teacher":["teacher"],"application/vnd.solent.sdkm+xml":["sdkm","sdkd"],"application/vnd.spotfire.dxp":["dxp"],"application/vnd.spotfire.sfs":["sfs"],"application/vnd.stardivision.calc":["sdc"],"application/vnd.stardivision.draw":["sda"],"application/vnd.stardivision.impress":["sdd"],"application/vnd.stardivision.math":["smf"],"application/vnd.stardivision.writer":["sdw","vor"],"application/vnd.stardivision.writer-global":["sgl"],"application/vnd.stepmania.package":["smzip"],"application/vnd.stepmania.stepchart":["sm"],"application/vnd.sun.wadl+xml":["wadl"],"application/vnd.sun.xml.calc":["sxc"],"application/vnd.sun.xml.calc.template":["stc"],"application/vnd.sun.xml.draw":["sxd"],"application/vnd.sun.xml.draw.template":["std"],"application/vnd.sun.xml.impress":["sxi"],"application/vnd.sun.xml.impress.template":["sti"],"application/vnd.sun.xml.math":["sxm"],"application/vnd.sun.xml.writer":["sxw"],"application/vnd.sun.xml.writer.global":["sxg"],"application/vnd.sun.xml.writer.template":["stw"],"application/vnd.sus-calendar":["sus","susp"],"application/vnd.svd":["svd"],"application/vnd.symbian.install":["sis","sisx"],"application/vnd.syncml+xml":["xsm"],"application/vnd.syncml.dm+wbxml":["bdm"],"application/vnd.syncml.dm+xml":["xdm"],"application/vnd.tao.intent-module-archive":["tao"],"application/vnd.tcpdump.pcap":["pcap","cap","dmp"],"application/vnd.tmobile-livetv":["tmo"],"application/vnd.trid.tpt":["tpt"],"application/vnd.triscape.mxs":["mxs"],"application/vnd.trueapp":["tra"],"application/vnd.ufdl":["ufd","ufdl"],"application/vnd.uiq.theme":["utz"],"application/vnd.umajin":["umj"],"application/vnd.unity":["unityweb"],"application/vnd.uoml+xml":["uoml"],"application/vnd.vcx":["vcx"],"application/vnd.visio":["vsd","vst","vss","vsw"],"application/vnd.visionary":["vis"],"application/vnd.vsf":["vsf"],"application/vnd.wap.wbxml":["wbxml"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.wap.wmlscriptc":["wmlsc"],"application/vnd.webturbo":["wtb"],"application/vnd.wolfram.player":["nbp"],"application/vnd.wordperfect":["wpd"],"application/vnd.wqd":["wqd"],"application/vnd.wt.stf":["stf"],"application/vnd.xara":["xar"],"application/vnd.xfdl":["xfdl"],"application/vnd.yamaha.hv-dic":["hvd"],"application/vnd.yamaha.hv-script":["hvs"],"application/vnd.yamaha.hv-voice":["hvp"],"application/vnd.yamaha.openscoreformat":["osf"],"application/vnd.yamaha.openscoreformat.osfpvg+xml":["osfpvg"],"application/vnd.yamaha.smaf-audio":["saf"],"application/vnd.yamaha.smaf-phrase":["spf"],"application/vnd.yellowriver-custom-menu":["cmp"],"application/vnd.zul":["zir","zirz"],"application/vnd.zzazz.deck+xml":["zaz"],"application/voicexml+xml":["vxml"],"application/wasm":["wasm"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/x-7z-compressed":["7z"],"application/x-abiword":["abw"],"application/x-ace-compressed":["ace"],"application/x-apple-diskimage":[],"application/x-arj":["arj"],"application/x-authorware-bin":["aab","x32","u32","vox"],"application/x-authorware-map":["aam"],"application/x-authorware-seg":["aas"],"application/x-bcpio":["bcpio"],"application/x-bdoc":[],"application/x-bittorrent":["torrent"],"application/x-blorb":["blb","blorb"],"application/x-bzip":["bz"],"application/x-bzip2":["bz2","boz"],"application/x-cbr":["cbr","cba","cbt","cbz","cb7"],"application/x-cdlink":["vcd"],"application/x-cfs-compressed":["cfs"],"application/x-chat":["chat"],"application/x-chess-pgn":["pgn"],"application/x-chrome-extension":["crx"],"application/x-cocoa":["cco"],"application/x-conference":["nsc"],"application/x-cpio":["cpio"],"application/x-csh":["csh"],"application/x-debian-package":["udeb"],"application/x-dgc-compressed":["dgc"],"application/x-director":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"],"application/x-doom":["wad"],"application/x-dtbncx+xml":["ncx"],"application/x-dtbook+xml":["dtb"],"application/x-dtbresource+xml":["res"],"application/x-dvi":["dvi"],"application/x-envoy":["evy"],"application/x-eva":["eva"],"application/x-font-bdf":["bdf"],"application/x-font-ghostscript":["gsf"],"application/x-font-linux-psf":["psf"],"application/x-font-pcf":["pcf"],"application/x-font-snf":["snf"],"application/x-font-type1":["pfa","pfb","pfm","afm"],"application/x-freearc":["arc"],"application/x-futuresplash":["spl"],"application/x-gca-compressed":["gca"],"application/x-glulx":["ulx"],"application/x-gnumeric":["gnumeric"],"application/x-gramps-xml":["gramps"],"application/x-gtar":["gtar"],"application/x-hdf":["hdf"],"application/x-httpd-php":["php"],"application/x-install-instructions":["install"],"application/x-iso9660-image":[],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-latex":["latex"],"application/x-lua-bytecode":["luac"],"application/x-lzh-compressed":["lzh","lha"],"application/x-makeself":["run"],"application/x-mie":["mie"],"application/x-mobipocket-ebook":["prc","mobi"],"application/x-ms-application":["application"],"application/x-ms-shortcut":["lnk"],"application/x-ms-wmd":["wmd"],"application/x-ms-wmz":["wmz"],"application/x-ms-xbap":["xbap"],"application/x-msaccess":["mdb"],"application/x-msbinder":["obd"],"application/x-mscardfile":["crd"],"application/x-msclip":["clp"],"application/x-msdos-program":[],"application/x-msdownload":["com","bat"],"application/x-msmediaview":["mvb","m13","m14"],"application/x-msmetafile":["wmf","emf","emz"],"application/x-msmoney":["mny"],"application/x-mspublisher":["pub"],"application/x-msschedule":["scd"],"application/x-msterminal":["trm"],"application/x-mswrite":["wri"],"application/x-netcdf":["nc","cdf"],"application/x-ns-proxy-autoconfig":["pac"],"application/x-nzb":["nzb"],"application/x-perl":["pl","pm"],"application/x-pilot":[],"application/x-pkcs12":["p12","pfx"],"application/x-pkcs7-certificates":["p7b","spc"],"application/x-pkcs7-certreqresp":["p7r"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-research-info-systems":["ris"],"application/x-sea":["sea"],"application/x-sh":["sh"],"application/x-shar":["shar"],"application/x-shockwave-flash":["swf"],"application/x-silverlight-app":["xap"],"application/x-sql":["sql"],"application/x-stuffit":["sit"],"application/x-stuffitx":["sitx"],"application/x-subrip":["srt"],"application/x-sv4cpio":["sv4cpio"],"application/x-sv4crc":["sv4crc"],"application/x-t3vm-image":["t3"],"application/x-tads":["gam"],"application/x-tar":["tar"],"application/x-tcl":["tcl","tk"],"application/x-tex":["tex"],"application/x-tex-tfm":["tfm"],"application/x-texinfo":["texinfo","texi"],"application/x-tgif":["obj"],"application/x-ustar":["ustar"],"application/x-virtualbox-hdd":["hdd"],"application/x-virtualbox-ova":["ova"],"application/x-virtualbox-ovf":["ovf"],"application/x-virtualbox-vbox":["vbox"],"application/x-virtualbox-vbox-extpack":["vbox-extpack"],"application/x-virtualbox-vdi":["vdi"],"application/x-virtualbox-vhd":["vhd"],"application/x-virtualbox-vmdk":["vmdk"],"application/x-wais-source":["src"],"application/x-web-app-manifest+json":["webapp"],"application/x-x509-ca-cert":["der","crt","pem"],"application/x-xfig":["fig"],"application/x-xliff+xml":["xlf"],"application/x-xpinstall":["xpi"],"application/x-xz":["xz"],"application/x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"application/xaml+xml":["xaml"],"application/xcap-diff+xml":["xdf"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":[],"audio/adpcm":["adp"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mp3":[],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/vnd.dece.audio":["uva","uvva"],"audio/vnd.digital-winds":["eol"],"audio/vnd.dra":["dra"],"audio/vnd.dts":["dts"],"audio/vnd.dts.hd":["dtshd"],"audio/vnd.lucent.voice":["lvp"],"audio/vnd.ms-playready.media.pya":["pya"],"audio/vnd.nuera.ecelp4800":["ecelp4800"],"audio/vnd.nuera.ecelp7470":["ecelp7470"],"audio/vnd.nuera.ecelp9600":["ecelp9600"],"audio/vnd.rip":["rip"],"audio/wav":["wav"],"audio/wave":[],"audio/webm":["weba"],"audio/x-aac":["aac"],"audio/x-aiff":["aif","aiff","aifc"],"audio/x-caf":["caf"],"audio/x-flac":["flac"],"audio/x-m4a":[],"audio/x-matroska":["mka"],"audio/x-mpegurl":["m3u"],"audio/x-ms-wax":["wax"],"audio/x-ms-wma":["wma"],"audio/x-pn-realaudio":["ram","ra"],"audio/x-pn-realaudio-plugin":["rmp"],"audio/x-realaudio":[],"audio/x-wav":[],"audio/xm":["xm"],"chemical/x-cdx":["cdx"],"chemical/x-cif":["cif"],"chemical/x-cmdf":["cmdf"],"chemical/x-cml":["cml"],"chemical/x-csml":["csml"],"chemical/x-xyz":["xyz"],"font/collection":["ttc"],"font/otf":["otf"],"font/ttf":["ttf"],"font/woff":["woff"],"font/woff2":["woff2"],"image/apng":["apng"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/g3fax":["g3"],"image/gif":["gif"],"image/ief":["ief"],"image/jp2":["jp2","jpg2"],"image/jpeg":["jpeg","jpg","jpe"],"image/jpm":["jpm"],"image/jpx":["jpx","jpf"],"image/ktx":["ktx"],"image/png":["png"],"image/prs.btif":["btif"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/tiff":["tiff","tif"],"image/vnd.adobe.photoshop":["psd"],"image/vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"image/vnd.djvu":["djvu","djv"],"image/vnd.dvb.subtitle":[],"image/vnd.dwg":["dwg"],"image/vnd.dxf":["dxf"],"image/vnd.fastbidsheet":["fbs"],"image/vnd.fpx":["fpx"],"image/vnd.fst":["fst"],"image/vnd.fujixerox.edmics-mmr":["mmr"],"image/vnd.fujixerox.edmics-rlc":["rlc"],"image/vnd.ms-modi":["mdi"],"image/vnd.ms-photo":["wdp"],"image/vnd.net-fpx":["npx"],"image/vnd.wap.wbmp":["wbmp"],"image/vnd.xiff":["xif"],"image/webp":["webp"],"image/x-3ds":["3ds"],"image/x-cmu-raster":["ras"],"image/x-cmx":["cmx"],"image/x-freehand":["fh","fhc","fh4","fh5","fh7"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-mrsid-image":["sid"],"image/x-ms-bmp":[],"image/x-pcx":["pcx"],"image/x-pict":["pic","pct"],"image/x-portable-anymap":["pnm"],"image/x-portable-bitmap":["pbm"],"image/x-portable-graymap":["pgm"],"image/x-portable-pixmap":["ppm"],"image/x-rgb":["rgb"],"image/x-tga":["tga"],"image/x-xbitmap":["xbm"],"image/x-xpixmap":["xpm"],"image/x-xwindowdump":["xwd"],"message/rfc822":["eml","mime"],"model/gltf+json":["gltf"],"model/gltf-binary":["glb"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/vnd.collada+xml":["dae"],"model/vnd.dwf":["dwf"],"model/vnd.gdl":["gdl"],"model/vnd.gtw":["gtw"],"model/vnd.mts":["mts"],"model/vnd.vtu":["vtu"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["x3db","x3dbz"],"model/x3d+vrml":["x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/hjson":["hjson"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/markdown":["markdown","md"],"text/mathml":["mml"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/prs.lines.tag":["dsc"],"text/richtext":["rtx"],"text/rtf":[],"text/sgml":["sgml","sgm"],"text/slim":["slim","slm"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vnd.curl":["curl"],"text/vnd.curl.dcurl":["dcurl"],"text/vnd.curl.mcurl":["mcurl"],"text/vnd.curl.scurl":["scurl"],"text/vnd.dvb.subtitle":["sub"],"text/vnd.fly":["fly"],"text/vnd.fmi.flexstor":["flx"],"text/vnd.graphviz":["gv"],"text/vnd.in3d.3dml":["3dml"],"text/vnd.in3d.spot":["spot"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/vnd.wap.wmlscript":["wmls"],"text/vtt":["vtt"],"text/x-asm":["s","asm"],"text/x-c":["c","cc","cxx","cpp","h","hh","dic"],"text/x-component":["htc"],"text/x-fortran":["f","for","f77","f90"],"text/x-handlebars-template":["hbs"],"text/x-java-source":["java"],"text/x-lua":["lua"],"text/x-markdown":["mkd"],"text/x-nfo":["nfo"],"text/x-opml":["opml"],"text/x-org":[],"text/x-pascal":["p","pas"],"text/x-processing":["pde"],"text/x-sass":["sass"],"text/x-scss":["scss"],"text/x-setext":["etx"],"text/x-sfv":["sfv"],"text/x-suse-ymp":["ymp"],"text/x-uuencode":["uu"],"text/x-vcalendar":["vcs"],"text/x-vcard":["vcf"],"text/xml":[],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/jpeg":["jpgv"],"video/jpm":["jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/vnd.dece.hd":["uvh","uvvh"],"video/vnd.dece.mobile":["uvm","uvvm"],"video/vnd.dece.pd":["uvp","uvvp"],"video/vnd.dece.sd":["uvs","uvvs"],"video/vnd.dece.video":["uvv","uvvv"],"video/vnd.dvb.file":["dvb"],"video/vnd.fvt":["fvt"],"video/vnd.mpegurl":["mxu","m4u"],"video/vnd.ms-playready.media.pyv":["pyv"],"video/vnd.uvvu.mp4":["uvu","uvvu"],"video/vnd.vivo":["viv"],"video/webm":["webm"],"video/x-f4v":["f4v"],"video/x-fli":["fli"],"video/x-flv":["flv"],"video/x-m4v":["m4v"],"video/x-matroska":["mkv","mk3d","mks"],"video/x-mng":["mng"],"video/x-ms-asf":["asf","asx"],"video/x-ms-vob":["vob"],"video/x-ms-wm":["wm"],"video/x-ms-wmv":["wmv"],"video/x-ms-wmx":["wmx"],"video/x-ms-wvx":["wvx"],"video/x-msvideo":["avi"],"video/x-sgi-movie":["movie"],"video/x-smv":["smv"],"x-conference/x-cooltalk":["ice"]}});var j3=P((a$,q3)=>{var i$=require("path"),jL=require("fs");function Ss(){this.types=Object.create(null),this.extensions=Object.create(null)}Ss.prototype.define=function(t){for(var e in t){for(var r=t[e],n=0;n{var _s=1e3,Ts=_s*60,ks=Ts*60,ho=ks*24,UL=ho*7,HL=ho*365.25;U3.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return zL(t);if(r==="number"&&isFinite(t))return e.long?XL(t):GL(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function zL(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(!!e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*HL;case"weeks":case"week":case"w":return r*UL;case"days":case"day":case"d":return r*ho;case"hours":case"hour":case"hrs":case"hr":case"h":return r*ks;case"minutes":case"minute":case"mins":case"min":case"m":return r*Ts;case"seconds":case"second":case"secs":case"sec":case"s":return r*_s;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function GL(t){var e=Math.abs(t);return e>=ho?Math.round(t/ho)+"d":e>=ks?Math.round(t/ks)+"h":e>=Ts?Math.round(t/Ts)+"m":e>=_s?Math.round(t/_s)+"s":t+"ms"}function XL(t){var e=Math.abs(t);return e>=ho?Hf(t,e,ho,"day"):e>=ks?Hf(t,e,ks,"hour"):e>=Ts?Hf(t,e,Ts,"minute"):e>=_s?Hf(t,e,_s,"second"):t+" ms"}function Hf(t,e,r,n){var i=e>=r*1.5;return Math.round(t/r)+" "+n+(i?"s":"")}});var yv=P((s$,z3)=>{"use strict";z3.exports=KL;function KL(t,e,r){if(typeof e!="string")throw new TypeError("argument str must be a string");var n=e.indexOf("=");if(n===-1)return-2;var i=e.slice(n+1).split(","),a=[];a.type=e.slice(0,n);for(var o=0;ot-1&&(s=t-1),!(isNaN(u)||isNaN(s)||u>s||u<0)&&a.push({start:u,end:s})}return a.length<1?-1:r&&r.combine?VL(a):a}function VL(t){for(var e=t.map(ZL).sort(YL),r=0,n=1;na.end+1?e[++r]=i:i.end>a.end&&(a.end=i.end,a.index=Math.min(a.index,i.index))}e.length=r+1;var o=e.sort(WL).map(QL);return o.type=t.type,o}function ZL(t,e){return{start:t.start,end:t.end,index:e}}function QL(t){return{start:t.start,end:t.end}}function WL(t,e){return t.index-e.index}function YL(t,e){return t.start-e.start}});var Kf=P((c$,kv)=>{"use strict";var wv=ro(),hr=F3()("send"),vo=qn()("send"),$L=X0(),eR=xu(),Ev=yu(),rR=gv(),tR=xv(),Gf=require("fs"),Sv=j3(),K3=H3(),nR=au(),iR=yv(),Lu=require("path"),aR=Zc(),V3=require("stream"),oR=require("util"),sR=Lu.extname,Z3=Lu.join,Av=Lu.normalize,Tv=Lu.resolve,zf=Lu.sep,cR=/^ *bytes=/,Q3=60*60*24*365*1e3,G3=/(?:^|[\\/])\.\.(?:[\\/]|$)/;kv.exports=uR;kv.exports.mime=Sv;function uR(t,e,r){return new er(t,e,r)}function er(t,e,r){V3.call(this);var n=r||{};if(this.options=n,this.path=e,this.req=t,this._acceptRanges=n.acceptRanges!==void 0?Boolean(n.acceptRanges):!0,this._cacheControl=n.cacheControl!==void 0?Boolean(n.cacheControl):!0,this._etag=n.etag!==void 0?Boolean(n.etag):!0,this._dotfiles=n.dotfiles!==void 0?n.dotfiles:"ignore",this._dotfiles!=="ignore"&&this._dotfiles!=="allow"&&this._dotfiles!=="deny")throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"');this._hidden=Boolean(n.hidden),n.hidden!==void 0&&vo("hidden: use dotfiles: '"+(this._hidden?"allow":"ignore")+"' instead"),n.dotfiles===void 0&&(this._dotfiles=void 0),this._extensions=n.extensions!==void 0?_v(n.extensions,"extensions option"):[],this._immutable=n.immutable!==void 0?Boolean(n.immutable):!1,this._index=n.index!==void 0?_v(n.index,"index option"):["index.html"],this._lastModified=n.lastModified!==void 0?Boolean(n.lastModified):!0,this._maxage=n.maxAge||n.maxage,this._maxage=typeof this._maxage=="string"?K3(this._maxage):Number(this._maxage),this._maxage=isNaN(this._maxage)?0:Math.min(Math.max(0,this._maxage),Q3),this._root=n.root?Tv(n.root):null,!this._root&&n.from&&this.from(n.from)}oR.inherits(er,V3);er.prototype.etag=vo.function(function(e){return this._etag=Boolean(e),hr("etag %s",this._etag),this},"send.etag: pass etag as option");er.prototype.hidden=vo.function(function(e){return this._hidden=Boolean(e),this._dotfiles=void 0,hr("hidden %s",this._hidden),this},"send.hidden: use dotfiles option");er.prototype.index=vo.function(function(e){var r=e?_v(e,"paths argument"):[];return hr("index %o",e),this._index=r,this},"send.index: pass index as option");er.prototype.root=function(e){return this._root=Tv(String(e)),hr("root %s",this._root),this};er.prototype.from=vo.function(er.prototype.root,"send.from: pass root as option");er.prototype.root=vo.function(er.prototype.root,"send.root: pass root as option");er.prototype.maxage=vo.function(function(e){return this._maxage=typeof e=="string"?K3(e):Number(e),this._maxage=isNaN(this._maxage)?0:Math.min(Math.max(0,this._maxage),Q3),hr("max-age %d",this._maxage),this},"send.maxage: pass maxAge as option");er.prototype.error=function(e,r){if(Y3(this,"error"))return this.emit("error",pR(e,r));var n=this.res,i=aR.message[e]||String(e),a=W3("Error",Ev(i));lR(n),r&&r.headers&&gR(n,r.headers),n.statusCode=e,n.setHeader("Content-Type","text/html; charset=UTF-8"),n.setHeader("Content-Length",Buffer.byteLength(a)),n.setHeader("Content-Security-Policy","default-src 'none'"),n.setHeader("X-Content-Type-Options","nosniff"),n.end(a)};er.prototype.hasTrailingSlash=function(){return this.path[this.path.length-1]==="/"};er.prototype.isConditionalGET=function(){return this.req.headers["if-match"]||this.req.headers["if-unmodified-since"]||this.req.headers["if-none-match"]||this.req.headers["if-modified-since"]};er.prototype.isPreconditionFailure=function(){var e=this.req,r=this.res,n=e.headers["if-match"];if(n){var i=r.getHeader("ETag");return!i||n!=="*"&&bR(n).every(function(c){return c!==i&&c!=="W/"+i&&"W/"+c!==i})}var a=Xf(e.headers["if-unmodified-since"]);if(!isNaN(a)){var o=Xf(r.getHeader("Last-Modified"));return isNaN(o)||o>a}return!1};er.prototype.removeContentHeaderFields=function(){var e=this.res;e.removeHeader("Content-Encoding"),e.removeHeader("Content-Language"),e.removeHeader("Content-Length"),e.removeHeader("Content-Range"),e.removeHeader("Content-Type")};er.prototype.notModified=function(){var e=this.res;hr("not modified"),this.removeContentHeaderFields(),e.statusCode=304,e.end()};er.prototype.headersAlreadySent=function(){var e=new Error("Can't set headers after they are sent.");hr("headers already sent"),this.error(500,e)};er.prototype.isCachable=function(){var e=this.res.statusCode;return e>=200&&e<300||e===304};er.prototype.onStatError=function(e){switch(e.code){case"ENAMETOOLONG":case"ENOENT":case"ENOTDIR":this.error(404,e);break;default:this.error(500,e);break}};er.prototype.isFresh=function(){return tR(this.req.headers,{etag:this.res.getHeader("ETag"),"last-modified":this.res.getHeader("Last-Modified")})};er.prototype.isRangeFresh=function(){var e=this.req.headers["if-range"];if(!e)return!0;if(e.indexOf('"')!==-1){var r=this.res.getHeader("ETag");return Boolean(r&&e.indexOf(r)!==-1)}var n=this.res.getHeader("Last-Modified");return Xf(n)<=Xf(e)};er.prototype.redirect=function(e){var r=this.res;if(Y3(this,"directory")){this.emit("directory",r,e);return}if(this.hasTrailingSlash()){this.error(403);return}var n=eR(fR(this.path+"/")),i=W3("Redirecting",'Redirecting to '+Ev(n)+"");r.statusCode=301,r.setHeader("Content-Type","text/html; charset=UTF-8"),r.setHeader("Content-Length",Buffer.byteLength(i)),r.setHeader("Content-Security-Policy","default-src 'none'"),r.setHeader("X-Content-Type-Options","nosniff"),r.setHeader("Location",n),r.end(i)};er.prototype.pipe=function(e){var r=this._root;this.res=e;var n=hR(this.path);if(n===-1)return this.error(400),e;if(~n.indexOf("\0"))return this.error(400),e;var i;if(r!==null){if(n&&(n=Av("."+zf+n)),G3.test(n))return hr('malicious path "%s"',n),this.error(403),e;i=n.split(zf),n=Av(Z3(r,n))}else{if(G3.test(n))return hr('malicious path "%s"',n),this.error(403),e;i=Av(n).split(zf),n=Tv(n)}if(dR(i)){var a=this._dotfiles;switch(a===void 0&&(a=i[i.length-1][0]==="."?this._hidden?"allow":"ignore":"allow"),hr('%s dotfile "%s"',a,n),a){case"allow":break;case"deny":return this.error(403),e;case"ignore":default:return this.error(404),e}}return this._index.length&&this.hasTrailingSlash()?(this.sendIndex(n),e):(this.sendFile(n),e)};er.prototype.send=function(e,r){var n=r.size,i=this.options,a={},o=this.res,c=this.req,u=c.headers.range,s=i.start||0;if(mR(o)){this.headersAlreadySent();return}if(hr('pipe "%s"',e),this.setHeader(e,r),this.type(e),this.isConditionalGET()){if(this.isPreconditionFailure()){this.error(412);return}if(this.isCachable()&&this.isFresh()){this.notModified();return}}if(n=Math.max(0,n-s),i.end!==void 0){var f=i.end-s+1;n>f&&(n=f)}if(this._acceptRanges&&cR.test(u)){if(u=iR(n,u,{combine:!0}),this.isRangeFresh()||(hr("range stale"),u=-2),u===-1)return hr("range unsatisfiable"),o.setHeader("Content-Range",X3("bytes",n)),this.error(416,{headers:{"Content-Range":o.getHeader("Content-Range")}});u!==-2&&u.length===1&&(hr("range %j",u),o.statusCode=206,o.setHeader("Content-Range",X3("bytes",n,u[0])),s+=u[0].start,n=u[0].end-u[0].start+1)}for(var m in i)a[m]=i[m];if(a.start=s,a.end=Math.max(s,s+n-1),o.setHeader("Content-Length",n),c.method==="HEAD"){o.end();return}this.stream(e,a)};er.prototype.sendFile=function(e){var r=0,n=this;hr('stat "%s"',e),Gf.stat(e,function(o,c){if(o&&o.code==="ENOENT"&&!sR(e)&&e[e.length-1]!==zf)return i(o);if(o)return n.onStatError(o);if(c.isDirectory())return n.redirect(e);n.emit("file",e,c),n.send(e,c)});function i(a){if(n._extensions.length<=r)return a?n.onStatError(a):n.error(404);var o=e+"."+n._extensions[r++];hr('stat "%s"',o),Gf.stat(o,function(c,u){if(c)return i(c);if(u.isDirectory())return i();n.emit("file",o,u),n.send(o,u)})}};er.prototype.sendIndex=function(e){var r=-1,n=this;function i(a){if(++r>=n._index.length)return a?n.onStatError(a):n.error(404);var o=Z3(e,n._index[r]);hr('stat "%s"',o),Gf.stat(o,function(c,u){if(c)return i(c);if(u.isDirectory())return i();n.emit("file",o,u),n.send(o,u)})}i()};er.prototype.stream=function(e,r){var n=this,i=this.res,a=Gf.createReadStream(e,r);this.emit("stream",a),a.pipe(i);function o(){$L(a,!0)}nR(i,o),a.on("error",function(u){o(),n.onStatError(u)}),a.on("end",function(){n.emit("end")})};er.prototype.type=function(e){var r=this.res;if(!r.getHeader("Content-Type")){var n=Sv.lookup(e);if(!n){hr("no content-type");return}var i=Sv.charsets.lookup(n);hr("content-type %s",n),r.setHeader("Content-Type",n+(i?"; charset="+i:""))}};er.prototype.setHeader=function(e,r){var n=this.res;if(this.emit("headers",n,e,r),this._acceptRanges&&!n.getHeader("Accept-Ranges")&&(hr("accept ranges"),n.setHeader("Accept-Ranges","bytes")),this._cacheControl&&!n.getHeader("Cache-Control")){var i="public, max-age="+Math.floor(this._maxage/1e3);this._immutable&&(i+=", immutable"),hr("cache-control %s",i),n.setHeader("Cache-Control",i)}if(this._lastModified&&!n.getHeader("Last-Modified")){var a=r.mtime.toUTCString();hr("modified %s",a),n.setHeader("Last-Modified",a)}if(this._etag&&!n.getHeader("ETag")){var o=rR(r);hr("etag %s",o),n.setHeader("ETag",o)}};function lR(t){for(var e=vR(t),r=0;r1?"/"+t.substr(e):t}function dR(t){for(var e=0;e1&&r[0]===".")return!0}return!1}function X3(t,e,r){return t+" "+(r?r.start+"-"+r.end:"*")+"/"+e}function W3(t,e){return` - - - -`+t+` - - -
`+e+`
- - -`}function pR(t,e){return e?e instanceof Error?wv(t,e,{expose:!1}):wv(t,e):wv(t)}function hR(t){try{return decodeURIComponent(t)}catch{return-1}}function vR(t){return typeof t.getHeaderNames!="function"?Object.keys(t._headers||{}):t.getHeaderNames()}function Y3(t,e){var r=typeof t.listenerCount!="function"?t.listeners(e).length:t.listenerCount(e);return r>0}function mR(t){return typeof t.headersSent!="boolean"?Boolean(t._header):t.headersSent}function _v(t,e){for(var r=[].concat(t||[]),n=0;n{"use strict";$3.exports=xR;function xR(t){if(!t)throw new TypeError("argument req is required");var e=wR(t.headers["x-forwarded-for"]||""),r=yR(t),n=[r].concat(e);return n}function yR(t){return t.socket?t.socket.remoteAddress:t.connection.remoteAddress}function wR(t){for(var e=t.length,r=[],n=t.length,i=t.length-1;i>=0;i--)switch(t.charCodeAt(i)){case 32:n===e&&(n=e=i);break;case 44:n!==e&&r.push(t.substring(n,e)),n=e=i;break;default:n=i;break}return n!==e&&r.push(t.substring(n,e)),r}});var t4=P((r4,Ru)=>{(function(){var t,e,r,n,i,a,o,c,u;e={},c=this,typeof Ru<"u"&&Ru!==null&&Ru.exports?Ru.exports=e:c.ipaddr=e,o=function(s,f,m,w){var T,A;if(s.length!==f.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(T=0;w>0;){if(A=m-w,A<0&&(A=0),s[T]>>A!==f[T]>>A)return!1;w-=m,T+=1}return!0},e.subnetMatch=function(s,f,m){var w,T,A,O,B;m==null&&(m="unicast");for(A in f)for(O=f[A],O[0]&&!(O[0]instanceof Array)&&(O=[O]),w=0,T=O.length;w=0;m=w+=-1)if(T=this.octets[m],T in B){if(O=B[T],A&&O!==0)return null;O!==8&&(A=!0),f+=O}else return null;return 32-f},s}(),r="(0?\\d+|0x[a-f0-9]+)",n={fourOctet:new RegExp("^"+r+"\\."+r+"\\."+r+"\\."+r+"$","i"),longValue:new RegExp("^"+r+"$","i")},e.IPv4.parser=function(s){var f,m,w,T,A;if(m=function(O){return O[0]==="0"&&O[1]!=="x"?parseInt(O,8):parseInt(O)},f=s.match(n.fourOctet))return function(){var O,B,F,I;for(F=f.slice(1,6),I=[],O=0,B=F.length;O4294967295||A<0)throw new Error("ipaddr: address outside defined range");return function(){var O,B;for(B=[],T=O=0;O<=24;T=O+=8)B.push(A>>T&255);return B}().reverse()}else return null},e.IPv6=function(){function s(f,m){var w,T,A,O,B,F;if(f.length===16)for(this.parts=[],w=T=0;T<=14;w=T+=2)this.parts.push(f[w]<<8|f[w+1]);else if(f.length===8)this.parts=f;else throw new Error("ipaddr: ipv6 part count should be 8 or 16");for(F=this.parts,A=0,O=F.length;Am&&(f=w.index,m=w[0].length);return m<0?A:A.substring(0,f)+"::"+A.substring(f+m)},s.prototype.toByteArray=function(){var f,m,w,T,A;for(f=[],A=this.parts,m=0,w=A.length;m>8),f.push(T&255);return f},s.prototype.toNormalizedString=function(){var f,m,w;return f=function(){var T,A,O,B;for(O=this.parts,B=[],T=0,A=O.length;T>8,f&255,m>>8,m&255])},s.prototype.prefixLengthFromSubnetMask=function(){var f,m,w,T,A,O,B;for(B={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},f=0,A=!1,m=w=7;w>=0;m=w+=-1)if(T=this.parts[m],T in B){if(O=B[T],A&&O!==0)return null;O!==16&&(A=!0),f+=O}else return null;return 128-f},s}(),i="(?:[0-9a-f]+::?)+",u="%[0-9a-z]{1,}",a={zoneIndex:new RegExp(u,"i"),native:new RegExp("^(::)?("+i+")?([0-9a-f]+)?(::)?("+u+")?$","i"),transitional:new RegExp("^((?:"+i+")|(?:::)(?:"+i+")?)"+(r+"\\."+r+"\\."+r+"\\."+r)+("("+u+")?$"),"i")},t=function(s,f){var m,w,T,A,O,B;if(s.indexOf("::")!==s.lastIndexOf("::"))return null;for(B=(s.match(a.zoneIndex)||[])[0],B&&(B=B.substring(1),s=s.replace(/%.+$/,"")),m=0,w=-1;(w=s.indexOf(":",w+1))>=0;)m++;if(s.substr(0,2)==="::"&&m--,s.substr(-2,2)==="::"&&m--,m>f)return null;for(O=f-m,A=":";O--;)A+="0:";return s=s.replace("::",A),s[0]===":"&&(s=s.slice(1)),s[s.length-1]===":"&&(s=s.slice(0,-1)),f=function(){var F,I,D,z;for(D=s.split(":"),z=[],F=0,I=D.length;F=0&&f<=32))return w=[this.parse(m[1]),f],Object.defineProperty(w,"toString",{value:function(){return this.join("/")}}),w;throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},e.IPv4.subnetMaskFromPrefixLength=function(s){var f,m,w;if(s=parseInt(s),s<0||s>32)throw new Error("ipaddr: invalid IPv4 prefix length");for(w=[0,0,0,0],m=0,f=Math.floor(s/8);m=0&&f<=128))return w=[this.parse(m[1]),f],Object.defineProperty(w,"toString",{value:function(){return this.join("/")}}),w;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},e.isValid=function(s){return e.IPv6.isValid(s)||e.IPv4.isValid(s)},e.parse=function(s){if(e.IPv6.isValid(s))return e.IPv6.parse(s);if(e.IPv4.isValid(s))return e.IPv4.parse(s);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},e.parseCIDR=function(s){var f;try{return e.IPv6.parseCIDR(s)}catch(m){f=m;try{return e.IPv4.parseCIDR(s)}catch(w){throw f=w,new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},e.fromByteArray=function(s){var f;if(f=s.length,f===4)return new e.IPv4(s);if(f===16)return new e.IPv6(s);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},e.process=function(s){var f;return f=this.parse(s),f.kind()==="ipv6"&&f.isIPv4MappedAddress()?f.toIPv4Address():f}}).call(r4)});var Cv=P((l$,Qf)=>{"use strict";Qf.exports=CR;Qf.exports.all=a4;Qf.exports.compile=o4;var AR=e4(),i4=t4(),ER=/^[0-9]+$/,Vf=i4.isValid,Zf=i4.parse,n4={linklocal:["169.254.0.0/16","fe80::/10"],loopback:["127.0.0.1/8","::1/128"],uniquelocal:["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16","fc00::/7"]};function a4(t,e){var r=AR(t);if(!e)return r;typeof e!="function"&&(e=o4(e));for(var n=0;ni)throw new TypeError("invalid range on address: "+t);return[n,a]}function kR(t){var e=Zf(t),r=e.kind();return r==="ipv4"?e.prefixLengthFromSubnetMask():null}function CR(t,e){if(!t)throw new TypeError("req argument is required");if(!e)throw new TypeError("trust argument is required");var r=a4(t,e),n=r[r.length-1];return n}function OR(){return!1}function PR(t){return function(r){if(!Vf(r))return!1;for(var n=Zf(r),i,a=n.kind(),o=0;o{"use strict";var s4=jf().Buffer,BR=pv(),c4=Kc(),u4=qn()("express"),FR=Tu(),LR=Kf().mime,RR=gv(),IR=Cv(),NR=Mf(),DR=require("querystring");yt.etag=l4({weak:!1});yt.wetag=l4({weak:!0});yt.isAbsolute=function(t){if(t[0]==="/"||t[1]===":"&&(t[2]==="\\"||t[2]==="/")||t.substring(0,2)==="\\\\")return!0};yt.flatten=u4.function(FR,"utils.flatten: use array-flatten npm module instead");yt.normalizeType=function(t){return~t.indexOf("/")?JR(t):{value:LR.lookup(t),params:{}}};yt.normalizeTypes=function(t){for(var e=[],r=0;r{"use strict";var UR=k8(),HR=uv(),Pv=If(),zR=u3(),GR=lv(),Wf=xs()("express:application"),XR=v3(),KR=require("http"),VR=aa().compileETag,ZR=aa().compileQueryParser,QR=aa().compileTrust,WR=qn()("express"),YR=Tu(),Ov=ku(),$R=require("path").resolve,Cs=Vc(),eI=Object.prototype.hasOwnProperty,Bv=Array.prototype.slice,_r=f4=d4.exports={},Mv="@@symbol:trust_proxy_default";_r.init=function(){this.cache={},this.engines={},this.settings={},this.defaultConfiguration()};_r.defaultConfiguration=function(){var e=process.env.NODE_ENV||"development";this.enable("x-powered-by"),this.set("etag","weak"),this.set("env",e),this.set("query parser","extended"),this.set("subdomain offset",2),this.set("trust proxy",!1),Object.defineProperty(this.settings,Mv,{configurable:!0,value:!0}),Wf("booting in %s mode",e),this.on("mount",function(n){this.settings[Mv]===!0&&typeof n.settings["trust proxy fn"]=="function"&&(delete this.settings["trust proxy"],delete this.settings["trust proxy fn"]),Cs(this.request,n.request),Cs(this.response,n.response),Cs(this.engines,n.engines),Cs(this.settings,n.settings)}),this.locals=Object.create(null),this.mountpath="/",this.locals.settings=this.settings,this.set("view",XR),this.set("views",$R("views")),this.set("jsonp callback name","callback"),e==="production"&&this.enable("view cache"),Object.defineProperty(this,"router",{get:function(){throw new Error(`'app.router' is deprecated! -Please see the 3.x to 4.x migration guide for details on how to update your app.`)}})};_r.lazyrouter=function(){this._router||(this._router=new HR({caseSensitive:this.enabled("case sensitive routing"),strict:this.enabled("strict routing")}),this._router.use(GR(this.get("query parser fn"))),this._router.use(zR.init(this)))};_r.handle=function(e,r,n){var i=this._router,a=n||UR(e,r,{env:this.get("env"),onerror:rI.bind(this)});if(!i){Wf("no routes defined on app"),a();return}i.handle(e,r,a)};_r.use=function(e){var r=0,n="/";if(typeof e!="function"){for(var i=e;Array.isArray(i)&&i.length!==0;)i=i[0];typeof i!="function"&&(r=1,n=e)}var a=YR(Bv.call(arguments,r));if(a.length===0)throw new TypeError("app.use() requires a middleware function");this.lazyrouter();var o=this._router;return a.forEach(function(c){if(!c||!c.handle||!c.set)return o.use(n,c);Wf(".use app under %s",n),c.mountpath=n,c.parent=this,o.use(n,function(s,f,m){var w=s.app;c.handle(s,f,function(T){Cs(s,w.request),Cs(f,w.response),m(T)})}),c.emit("mount",this)},this),this};_r.route=function(e){return this.lazyrouter(),this._router.route(e)};_r.engine=function(e,r){if(typeof r!="function")throw new Error("callback function required");var n=e[0]!=="."?"."+e:e;return this.engines[n]=r,this};_r.param=function(e,r){if(this.lazyrouter(),Array.isArray(e)){for(var n=0;n1?'directories "'+s.root.slice(0,-1).join('", "')+'" or "'+s.root[s.root.length-1]+'"':'directory "'+s.root+'"',w=new Error('Failed to lookup view "'+e+'" in views '+m);return w.view=s,a(w)}u.cache&&(i[e]=s)}tI(s,u,a)};_r.listen=function(){var e=KR.createServer(this);return e.listen.apply(e,arguments)};function rI(t){this.get("env")!=="test"&&console.error(t.stack||t.toString())}function tI(t,e,r){try{t.render(e,r)}catch(n){r(n)}}});var b4=P((d$,Fv)=>{"use strict";Fv.exports=m4;Fv.exports.preferredCharsets=m4;var nI=/^\s*([^\s;]+)\s*(?:;(.*))?$/;function iI(t){for(var e=t.split(","),r=0,n=0;r0}});var A4=P((p$,Lv)=>{"use strict";Lv.exports=w4;Lv.exports.preferredEncodings=w4;var uI=/^\s*([^\s;]+)\s*(?:;(.*))?$/;function lI(t){for(var e=t.split(","),r=!1,n=1,i=0,a=0;i0}});var k4=P((h$,Rv)=>{"use strict";Rv.exports=T4;Rv.exports.preferredLanguages=T4;var hI=/^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/;function vI(t){for(var e=t.split(","),r=0,n=0;r0}});var F4=P((v$,Iv)=>{"use strict";Iv.exports=M4;Iv.exports.preferredMediaTypes=M4;var xI=/^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/;function yI(t){for(var e=_I(t),r=0,n=0;r0)if(a.every(function(o){return e.params[o]=="*"||(e.params[o]||"").toLowerCase()==(n.params[o]||"").toLowerCase()}))i|=1;else return null;return{i:r,o:e.i,q:e.q,s:i}}function M4(t,e){var r=yI(t===void 0?"*/*":t||"");if(!e)return r.filter(O4).sort(C4).map(EI);var n=e.map(function(a,o){return wI(a,r,o)});return n.filter(O4).sort(C4).map(function(a){return e[n.indexOf(a)]})}function C4(t,e){return e.q-t.q||e.s-t.s||t.o-e.o||t.i-e.i||0}function EI(t){return t.type+"/"+t.subtype}function O4(t){return t.q>0}function B4(t){for(var e=0,r=0;(r=t.indexOf('"',r))!==-1;)e++,r++;return e}function SI(t){var e=t.indexOf("="),r,n;return e===-1?r=t:(r=t.substr(0,e),n=t.substr(e+1)),[r,n]}function _I(t){for(var e=t.split(","),r=1,n=0;r{"use strict";var kI=b4(),CI=A4(),OI=k4(),PI=F4();Nv.exports=ir;Nv.exports.Negotiator=ir;function ir(t){if(!(this instanceof ir))return new ir(t);this.request=t}ir.prototype.charset=function(e){var r=this.charsets(e);return r&&r[0]};ir.prototype.charsets=function(e){return kI(this.request.headers["accept-charset"],e)};ir.prototype.encoding=function(e){var r=this.encodings(e);return r&&r[0]};ir.prototype.encodings=function(e){return CI(this.request.headers["accept-encoding"],e)};ir.prototype.language=function(e){var r=this.languages(e);return r&&r[0]};ir.prototype.languages=function(e){return OI(this.request.headers["accept-language"],e)};ir.prototype.mediaType=function(e){var r=this.mediaTypes(e);return r&&r[0]};ir.prototype.mediaTypes=function(e){return PI(this.request.headers.accept,e)};ir.prototype.preferredCharset=ir.prototype.charset;ir.prototype.preferredCharsets=ir.prototype.charsets;ir.prototype.preferredEncoding=ir.prototype.encoding;ir.prototype.preferredEncodings=ir.prototype.encodings;ir.prototype.preferredLanguage=ir.prototype.language;ir.prototype.preferredLanguages=ir.prototype.languages;ir.prototype.preferredMediaType=ir.prototype.mediaType;ir.prototype.preferredMediaTypes=ir.prototype.mediaTypes});var I4=P((b$,R4)=>{"use strict";var MI=L4(),BI=Sh();R4.exports=Mt;function Mt(t){if(!(this instanceof Mt))return new Mt(t);this.headers=t.headers,this.negotiator=new MI(t)}Mt.prototype.type=Mt.prototype.types=function(t){var e=t;if(e&&!Array.isArray(e)){e=new Array(arguments.length);for(var r=0;r{"use strict";var Yf=I4(),Iu=qn()("express"),RI=require("net").isIP,II=ss(),NI=require("http"),DI=xv(),JI=yv(),qI=bs(),N4=Cv(),sr=Object.create(NI.IncomingMessage.prototype);D4.exports=sr;sr.get=sr.header=function(e){if(!e)throw new TypeError("name argument is required to req.get");if(typeof e!="string")throw new TypeError("name must be a string to req.get");var r=e.toLowerCase();switch(r){case"referer":case"referrer":return this.headers.referrer||this.headers.referer;default:return this.headers[r]}};sr.accepts=function(){var t=Yf(this);return t.types.apply(t,arguments)};sr.acceptsEncodings=function(){var t=Yf(this);return t.encodings.apply(t,arguments)};sr.acceptsEncoding=Iu.function(sr.acceptsEncodings,"req.acceptsEncoding: Use acceptsEncodings instead");sr.acceptsCharsets=function(){var t=Yf(this);return t.charsets.apply(t,arguments)};sr.acceptsCharset=Iu.function(sr.acceptsCharsets,"req.acceptsCharset: Use acceptsCharsets instead");sr.acceptsLanguages=function(){var t=Yf(this);return t.languages.apply(t,arguments)};sr.acceptsLanguage=Iu.function(sr.acceptsLanguages,"req.acceptsLanguage: Use acceptsLanguages instead");sr.range=function(e,r){var n=this.get("Range");if(!!n)return JI(e,n,r)};sr.param=function(e,r){var n=this.params||{},i=this.body||{},a=this.query||{},o=arguments.length===1?"name":"name, default";return Iu("req.param("+o+"): Use req.params, req.body, or req.query instead"),n[e]!=null&&n.hasOwnProperty(e)?n[e]:i[e]!=null?i[e]:a[e]!=null?a[e]:r};sr.is=function(e){var r=e;if(!Array.isArray(e)){r=new Array(arguments.length);for(var n=0;n=200&&r<300||r===304?DI(this.headers,{etag:e.get("ETag"),"last-modified":e.get("Last-Modified")}):!1});pn(sr,"stale",function(){return!this.fresh});pn(sr,"xhr",function(){var e=this.get("X-Requested-With")||"";return e.toLowerCase()==="xmlhttprequest"});function pn(t,e,r){Object.defineProperty(t,e,{configurable:!0,enumerable:!0,get:r})}});var U4=P($f=>{var j4=require("crypto");$f.sign=function(t,e){if(typeof t!="string")throw new TypeError("Cookie value must be provided as a string.");if(typeof e!="string")throw new TypeError("Secret string must be provided.");return t+"."+j4.createHmac("sha256",e).update(t).digest("base64").replace(/\=+$/,"")};$f.unsign=function(t,e){if(typeof t!="string")throw new TypeError("Signed cookie string must be provided.");if(typeof e!="string")throw new TypeError("Secret string must be provided.");var r=t.slice(0,t.lastIndexOf(".")),n=$f.sign(r,e);return q4(n)==q4(t)?r:!1};function q4(t){return j4.createHash("sha1").update(t).digest("hex")}});var H4=P(Dv=>{"use strict";Dv.parse=UI;Dv.serialize=HI;var jI=Object.prototype.toString,ed=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;function UI(t,e){if(typeof t!="string")throw new TypeError("argument str must be a string");for(var r={},n=e||{},i=n.decode||zI,a=0;a{"use strict";Jv.exports=ZI;Jv.exports.append=G4;var VI=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;function G4(t,e){if(typeof t!="string")throw new TypeError("header argument is required");if(!e)throw new TypeError("field argument is required");for(var r=Array.isArray(e)?e:z4(String(e)),n=0;n{"use strict";var Nu=jf().Buffer,X4=pv(),QI=ro(),hn=qn()("express"),WI=xu(),YI=yu(),$I=require("http"),eN=aa().isAbsolute,rN=au(),K4=require("path"),rd=Zc(),V4=ku(),tN=U4().sign,nN=aa().normalizeType,iN=aa().normalizeTypes,aN=aa().setCharset,oN=H4(),jv=Kf(),sN=K4.extname,Z4=jv.mime,cN=K4.resolve,uN=qv(),lr=Object.create($I.ServerResponse.prototype);Y4.exports=lr;var lN=/;\s*charset\s*=/;lr.status=function(e){return(typeof e=="string"||Math.floor(e)!==e)&&e>99&&e<1e3&&hn("res.status("+JSON.stringify(e)+"): use res.status("+Math.floor(e)+") instead"),this.statusCode=e,this};lr.links=function(t){var e=this.get("Link")||"";return e&&(e+=", "),this.set("Link",e+Object.keys(t).map(function(r){return"<"+t[r]+'>; rel="'+r+'"'}).join(", "))};lr.send=function(e){var r=e,n,i=this.req,a,o=this.app;switch(arguments.length===2&&(typeof arguments[0]!="number"&&typeof arguments[1]=="number"?(hn("res.send(body, status): Use res.status(status).send(body) instead"),this.statusCode=arguments[1]):(hn("res.send(status, body): Use res.status(status).send(body) instead"),this.statusCode=arguments[0],r=arguments[1])),typeof r=="number"&&arguments.length===1&&(this.get("Content-Type")||this.type("txt"),hn("res.send(status): Use res.sendStatus(status) instead"),this.statusCode=r,r=rd.message[r]),typeof r){case"string":this.get("Content-Type")||this.type("html");break;case"boolean":case"number":case"object":if(r===null)r="";else if(Nu.isBuffer(r))this.get("Content-Type")||this.type("bin");else return this.json(r);break}typeof r=="string"&&(n="utf8",a=this.get("Content-Type"),typeof a=="string"&&this.set("Content-Type",aN(a,"utf-8")));var c=o.get("etag fn"),u=!this.get("ETag")&&typeof c=="function",s;r!==void 0&&(Nu.isBuffer(r)?s=r.length:!u&&r.length<1e3?s=Nu.byteLength(r,n):(r=Nu.from(r,n),n=void 0,s=r.length),this.set("Content-Length",s));var f;return u&&s!==void 0&&(f=c(r,n))&&this.set("ETag",f),i.fresh&&(this.statusCode=304),(this.statusCode===204||this.statusCode===304)&&(this.removeHeader("Content-Type"),this.removeHeader("Content-Length"),this.removeHeader("Transfer-Encoding"),r=""),this.statusCode===205&&(this.set("Content-Length","0"),this.removeHeader("Transfer-Encoding"),r=""),i.method==="HEAD"?this.end():this.end(r,n),this};lr.json=function(e){var r=e;arguments.length===2&&(typeof arguments[1]=="number"?(hn("res.json(obj, status): Use res.status(status).json(obj) instead"),this.statusCode=arguments[1]):(hn("res.json(status, obj): Use res.status(status).json(obj) instead"),this.statusCode=arguments[0],r=arguments[1]));var n=this.app,i=n.get("json escape"),a=n.get("json replacer"),o=n.get("json spaces"),c=W4(r,a,o,i);return this.get("Content-Type")||this.set("Content-Type","application/json"),this.send(c)};lr.jsonp=function(e){var r=e;arguments.length===2&&(typeof arguments[1]=="number"?(hn("res.jsonp(obj, status): Use res.status(status).jsonp(obj) instead"),this.statusCode=arguments[1]):(hn("res.jsonp(status, obj): Use res.status(status).jsonp(obj) instead"),this.statusCode=arguments[0],r=arguments[1]));var n=this.app,i=n.get("json escape"),a=n.get("json replacer"),o=n.get("json spaces"),c=W4(r,a,o,i),u=this.req.query[n.get("jsonp callback name")];return this.get("Content-Type")||(this.set("X-Content-Type-Options","nosniff"),this.set("Content-Type","application/json")),Array.isArray(u)&&(u=u[0]),typeof u=="string"&&u.length!==0&&(this.set("X-Content-Type-Options","nosniff"),this.set("Content-Type","text/javascript"),u=u.replace(/[^\[\]\w$.]/g,""),c===void 0?c="":typeof c=="string"&&(c=c.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")),c="/**/ typeof "+u+" === 'function' && "+u+"("+c+");"),this.send(c)};lr.sendStatus=function(e){var r=rd.message[e]||String(e);return this.statusCode=e,this.type("txt"),this.send(r)};lr.sendFile=function(e,r,n){var i=n,a=this.req,o=this,c=a.next,u=r||{};if(!e)throw new TypeError("path argument is required to res.sendFile");if(typeof e!="string")throw new TypeError("path must be a string to res.sendFile");if(typeof r=="function"&&(i=r,u={}),!u.root&&!eN(e))throw new TypeError("path must be absolute or specify root to res.sendFile");var s=encodeURI(e),f=jv(a,s,u);Q4(o,f,u,function(m){if(i)return i(m);if(m&&m.code==="EISDIR")return c();m&&m.code!=="ECONNABORTED"&&m.syscall!=="write"&&c(m)})};lr.sendfile=function(t,e,r){var n=r,i=this.req,a=this,o=i.next,c=e||{};typeof e=="function"&&(n=e,c={});var u=jv(i,t,c);Q4(a,u,c,function(s){if(n)return n(s);if(s&&s.code==="EISDIR")return o();s&&s.code!=="ECONNABORTED"&&s.syscall!=="write"&&o(s)})};lr.sendfile=hn.function(lr.sendfile,"res.sendfile: Use res.sendFile instead");lr.download=function(e,r,n,i){var a=i,o=r,c=n||null;typeof r=="function"?(a=r,o=null,c=null):typeof n=="function"&&(a=n,c=null),typeof r=="object"&&(typeof n=="function"||n===void 0)&&(o=null,c=r);var u={"Content-Disposition":X4(o||e)};if(c&&c.headers)for(var s=Object.keys(c.headers),f=0;f0?e.accepts(n):!1;return this.vary("Accept"),i?(this.set("Content-Type",nN(i).value),t[i](e,this,r)):t.default?t.default(e,this,r):r(QI(406,{types:iN(n).map(function(a){return a.value})})),this};lr.attachment=function(e){return e&&this.type(sN(e)),this.set("Content-Disposition",X4(e)),this};lr.append=function(e,r){var n=this.get(e),i=r;return n&&(i=Array.isArray(n)?n.concat(r):Array.isArray(r)?[n].concat(r):[n,r]),this.set(e,i)};lr.set=lr.header=function(e,r){if(arguments.length===2){var n=Array.isArray(r)?r.map(String):String(r);if(e.toLowerCase()==="content-type"){if(Array.isArray(n))throw new TypeError("Content-Type cannot be set to an Array");if(!lN.test(n)){var i=Z4.charsets.lookup(n.split(";")[0]);i&&(n+="; charset="+i.toLowerCase())}}this.setHeader(e,n)}else for(var a in e)this.set(a,e[a]);return this};lr.get=function(t){return this.getHeader(t)};lr.clearCookie=function(e,r){var n=V4({expires:new Date(1),path:"/"},r);return this.cookie(e,"",n)};lr.cookie=function(t,e,r){var n=V4({},r),i=this.req.secret,a=n.signed;if(a&&!i)throw new Error('cookieParser("secret") required for signed cookies');var o=typeof e=="object"?"j:"+JSON.stringify(e):String(e);if(a&&(o="s:"+tN(o,i)),n.maxAge!=null){var c=n.maxAge-0;isNaN(c)||(n.expires=new Date(Date.now()+c),n.maxAge=Math.floor(c/1e3))}return n.path==null&&(n.path="/"),this.append("Set-Cookie",oN.serialize(t,String(o),n)),this};lr.location=function(e){var r=e;return e==="back"&&(r=this.req.get("Referrer")||"/"),this.set("Location",WI(r))};lr.redirect=function(e){var r=e,n,i=302;arguments.length===2&&(typeof arguments[0]=="number"?(i=arguments[0],r=arguments[1]):(hn("res.redirect(url, status): Use res.redirect(status, url) instead"),i=arguments[1])),r=this.location(r).get("Location"),this.format({text:function(){n=rd.message[i]+". Redirecting to "+r},html:function(){var a=YI(r);n="

"+rd.message[i]+'. Redirecting to '+a+"

"},default:function(){n=""}}),this.statusCode=i,this.set("Content-Length",Nu.byteLength(n)),this.req.method==="HEAD"?this.end():this.end(n)};lr.vary=function(t){return!t||Array.isArray(t)&&!t.length?(hn("res.vary(): Provide a field name"),this):(uN(this,t),this)};lr.render=function(e,r,n){var i=this.req.app,a=n,o=r||{},c=this.req,u=this;typeof r=="function"&&(a=r,o={}),o._locals=u.locals,a=a||function(s,f){if(s)return c.next(s);u.send(f)},i.render(e,o,a)};function Q4(t,e,r,n){var i=!1,a;function o(){if(!i){i=!0;var T=new Error("Request aborted");T.code="ECONNABORTED",n(T)}}function c(){if(!i){i=!0;var T=new Error("EISDIR, read");T.code="EISDIR",n(T)}}function u(T){i||(i=!0,n(T))}function s(){i||(i=!0,n())}function f(){a=!1}function m(T){if(T&&T.code==="ECONNRESET")return o();if(T)return u(T);i||setImmediate(function(){if(a!==!1&&!i){o();return}i||(i=!0,n())})}function w(){a=!0}e.on("directory",c),e.on("end",s),e.on("error",u),e.on("file",f),e.on("stream",w),rN(t,m),r.headers&&e.on("headers",function(A){for(var O=r.headers,B=Object.keys(O),F=0;F&]/g,function(a){switch(a.charCodeAt(0)){case 60:return"\\u003c";case 62:return"\\u003e";case 38:return"\\u0026";default:return a}})),i}});var t6=P((E$,Hv)=>{"use strict";var fN=xu(),e6=yu(),Uv=bs(),dN=require("path").resolve,r6=Kf(),pN=require("url");Hv.exports=hN;Hv.exports.mime=r6.mime;function hN(t,e){if(!t)throw new TypeError("root path required");if(typeof t!="string")throw new TypeError("root path must be a string");var r=Object.create(e||null),n=r.fallthrough!==!1,i=r.redirect!==!1,a=r.setHeaders;if(a&&typeof a!="function")throw new TypeError("option setHeaders must be function");r.maxage=r.maxage||r.maxAge||0,r.root=dN(t);var o=i?gN():bN();return function(u,s,f){if(u.method!=="GET"&&u.method!=="HEAD"){if(n)return f();s.statusCode=405,s.setHeader("Allow","GET, HEAD"),s.setHeader("Content-Length","0"),s.end();return}var m=!n,w=Uv.original(u),T=Uv(u).pathname;T==="/"&&w.pathname.substr(-1)!=="/"&&(T="");var A=r6(u,T,r);A.on("directory",o),a&&A.on("headers",a),n&&A.on("file",function(){m=!0}),A.on("error",function(B){if(m||!(B.statusCode<500)){f(B);return}f()}),A.pipe(s)}}function vN(t){for(var e=0;e1?"/"+t.substr(e):t}function mN(t,e){return` - - - -`+t+` - - -
`+e+`
- - -`}function bN(){return function(){this.error(404)}}function gN(){return function(e){if(this.hasTrailingSlash()){this.error(404);return}var r=Uv.original(this.req);r.path=null,r.pathname=vN(r.pathname+"/");var n=fN(pN.format(r)),i=mN("Redirecting",'Redirecting to '+e6(n)+"");e.statusCode=301,e.setHeader("Content-Type","text/html; charset=UTF-8"),e.setHeader("Content-Length",Buffer.byteLength(i)),e.setHeader("Content-Security-Policy","default-src 'none'"),e.setHeader("X-Content-Type-Options","nosniff"),e.setHeader("Location",n),e.end(i)}}});var c6=P((St,s6)=>{"use strict";var td=t8(),xN=require("events").EventEmitter,n6=i8(),i6=p4(),yN=sv(),wN=uv(),a6=J4(),o6=$4();St=s6.exports=AN;function AN(){var t=function(e,r,n){t.handle(e,r,n)};return n6(t,xN.prototype,!1),n6(t,i6,!1),t.request=Object.create(a6,{app:{configurable:!0,enumerable:!0,writable:!0,value:t}}),t.response=Object.create(o6,{app:{configurable:!0,enumerable:!0,writable:!0,value:t}}),t.init(),t}St.application=i6;St.request=a6;St.response=o6;St.Route=yN;St.Router=wN;St.json=td.json;St.query=lv();St.raw=td.raw;St.static=t6();St.text=td.text;St.urlencoded=td.urlencoded;var EN=["bodyParser","compress","cookieSession","session","logger","cookieParser","favicon","responseTime","errorHandler","timeout","methodOverride","vhost","csrf","directory","limit","multipart","staticCache"];EN.forEach(function(t){Object.defineProperty(St,t,{get:function(){throw new Error("Most middleware (like "+t+") is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.")},configurable:!0})})});var mo=P((S$,u6)=>{"use strict";u6.exports=c6()});var d6=P((_$,f6)=>{"use strict";var l6=Object.getOwnPropertySymbols,SN=Object.prototype.hasOwnProperty,_N=Object.prototype.propertyIsEnumerable;function TN(t){if(t==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function kN(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de",Object.getOwnPropertyNames(t)[0]==="5")return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;var n=Object.getOwnPropertyNames(e).map(function(a){return e[a]});if(n.join("")!=="0123456789")return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach(function(a){i[a]=a}),Object.keys(Object.assign({},i)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}f6.exports=kN()?Object.assign:function(t,e){for(var r,n=TN(t),i,a=1;a{(function(){"use strict";var t=d6(),e=qv(),r={origin:"*",methods:"GET,HEAD,PUT,PATCH,POST,DELETE",preflightContinue:!1,optionsSuccessStatus:204};function n(A){return typeof A=="string"||A instanceof String}function i(A,O){if(Array.isArray(O)){for(var B=0;B{(function(t,e){"use strict";function r(b,l){if(!b)throw new Error(l||"Assertion failed")}function n(b,l){b.super_=l;var p=function(){};p.prototype=l.prototype,b.prototype=new p,b.prototype.constructor=b}function i(b,l,p){if(i.isBN(b))return b;this.negative=0,this.words=null,this.length=0,this.red=null,b!==null&&((l==="le"||l==="be")&&(p=l,l=10),this._init(b||0,l||10,p||"be"))}typeof t=="object"?t.exports=i:e.BN=i,i.BN=i,i.wordSize=26;var a;try{typeof window<"u"&&typeof window.Buffer<"u"?a=window.Buffer:a=require("buffer").Buffer}catch{}i.isBN=function(l){return l instanceof i?!0:l!==null&&typeof l=="object"&&l.constructor.wordSize===i.wordSize&&Array.isArray(l.words)},i.max=function(l,p){return l.cmp(p)>0?l:p},i.min=function(l,p){return l.cmp(p)<0?l:p},i.prototype._init=function(l,p,g){if(typeof l=="number")return this._initNumber(l,p,g);if(typeof l=="object")return this._initArray(l,p,g);p==="hex"&&(p=16),r(p===(p|0)&&p>=2&&p<=36),l=l.toString().replace(/\s+/g,"");var S=0;l[0]==="-"&&(S++,this.negative=1),S=0;S-=3)d=l[S]|l[S-1]<<8|l[S-2]<<16,this.words[x]|=d<>>26-y&67108863,y+=24,y>=26&&(y-=26,x++);else if(g==="le")for(S=0,x=0;S>>26-y&67108863,y+=24,y>=26&&(y-=26,x++);return this._strip()};function o(b,l){var p=b.charCodeAt(l);if(p>=48&&p<=57)return p-48;if(p>=65&&p<=70)return p-55;if(p>=97&&p<=102)return p-87;r(!1,"Invalid character in "+b)}function c(b,l,p){var g=o(b,p);return p-1>=l&&(g|=o(b,p-1)<<4),g}i.prototype._parseHex=function(l,p,g){this.length=Math.ceil((l.length-p)/6),this.words=new Array(this.length);for(var S=0;S=p;S-=2)y=c(l,p,S)<=18?(x-=18,d+=1,this.words[d]|=y>>>26):x+=8;else{var C=l.length-p;for(S=C%2===0?p+1:p;S=18?(x-=18,d+=1,this.words[d]|=y>>>26):x+=8}this._strip()};function u(b,l,p,g){for(var S=0,x=0,d=Math.min(b.length,p),y=l;y=49?x=C-49+10:C>=17?x=C-17+10:x=C,r(C>=0&&x1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},i.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{i.prototype[Symbol.for("nodejs.util.inspect.custom")]=f}catch{i.prototype.inspect=f}else i.prototype.inspect=f;function f(){return(this.red?""}var m=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],w=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],T=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];i.prototype.toString=function(l,p){l=l||10,p=p|0||1;var g;if(l===16||l==="hex"){g="";for(var S=0,x=0,d=0;d>>24-S&16777215,S+=2,S>=26&&(S-=26,d--),x!==0||d!==this.length-1?g=m[6-C.length]+C+g:g=C+g}for(x!==0&&(g=x.toString(16)+g);g.length%p!==0;)g="0"+g;return this.negative!==0&&(g="-"+g),g}if(l===(l|0)&&l>=2&&l<=36){var h=w[l],k=T[l];g="";var J=this.clone();for(J.negative=0;!J.isZero();){var _=J.modrn(k).toString(l);J=J.idivn(k),J.isZero()?g=_+g:g=m[h-_.length]+_+g}for(this.isZero()&&(g="0"+g);g.length%p!==0;)g="0"+g;return this.negative!==0&&(g="-"+g),g}r(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var l=this.words[0];return this.length===2?l+=this.words[1]*67108864:this.length===3&&this.words[2]===1?l+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-l:l},i.prototype.toJSON=function(){return this.toString(16,2)},a&&(i.prototype.toBuffer=function(l,p){return this.toArrayLike(a,l,p)}),i.prototype.toArray=function(l,p){return this.toArrayLike(Array,l,p)};var A=function(l,p){return l.allocUnsafe?l.allocUnsafe(p):new l(p)};i.prototype.toArrayLike=function(l,p,g){this._strip();var S=this.byteLength(),x=g||Math.max(1,S);r(S<=x,"byte array longer than desired length"),r(x>0,"Requested array length <= 0");var d=A(l,x),y=p==="le"?"LE":"BE";return this["_toArrayLike"+y](d,S),d},i.prototype._toArrayLikeLE=function(l,p){for(var g=0,S=0,x=0,d=0;x>8&255),g>16&255),d===6?(g>24&255),S=0,d=0):(S=y>>>24,d+=2)}if(g=0&&(l[g--]=y>>8&255),g>=0&&(l[g--]=y>>16&255),d===6?(g>=0&&(l[g--]=y>>24&255),S=0,d=0):(S=y>>>24,d+=2)}if(g>=0)for(l[g--]=S;g>=0;)l[g--]=0},Math.clz32?i.prototype._countBits=function(l){return 32-Math.clz32(l)}:i.prototype._countBits=function(l){var p=l,g=0;return p>=4096&&(g+=13,p>>>=13),p>=64&&(g+=7,p>>>=7),p>=8&&(g+=4,p>>>=4),p>=2&&(g+=2,p>>>=2),g+p},i.prototype._zeroBits=function(l){if(l===0)return 26;var p=l,g=0;return(p&8191)===0&&(g+=13,p>>>=13),(p&127)===0&&(g+=7,p>>>=7),(p&15)===0&&(g+=4,p>>>=4),(p&3)===0&&(g+=2,p>>>=2),(p&1)===0&&g++,g},i.prototype.bitLength=function(){var l=this.words[this.length-1],p=this._countBits(l);return(this.length-1)*26+p};function O(b){for(var l=new Array(b.bitLength()),p=0;p>>S&1}return l}i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var l=0,p=0;pl.length?this.clone().ior(l):l.clone().ior(this)},i.prototype.uor=function(l){return this.length>l.length?this.clone().iuor(l):l.clone().iuor(this)},i.prototype.iuand=function(l){var p;this.length>l.length?p=l:p=this;for(var g=0;gl.length?this.clone().iand(l):l.clone().iand(this)},i.prototype.uand=function(l){return this.length>l.length?this.clone().iuand(l):l.clone().iuand(this)},i.prototype.iuxor=function(l){var p,g;this.length>l.length?(p=this,g=l):(p=l,g=this);for(var S=0;Sl.length?this.clone().ixor(l):l.clone().ixor(this)},i.prototype.uxor=function(l){return this.length>l.length?this.clone().iuxor(l):l.clone().iuxor(this)},i.prototype.inotn=function(l){r(typeof l=="number"&&l>=0);var p=Math.ceil(l/26)|0,g=l%26;this._expand(p),g>0&&p--;for(var S=0;S0&&(this.words[S]=~this.words[S]&67108863>>26-g),this._strip()},i.prototype.notn=function(l){return this.clone().inotn(l)},i.prototype.setn=function(l,p){r(typeof l=="number"&&l>=0);var g=l/26|0,S=l%26;return this._expand(g+1),p?this.words[g]=this.words[g]|1<l.length?(g=this,S=l):(g=l,S=this);for(var x=0,d=0;d>>26;for(;x!==0&&d>>26;if(this.length=g.length,x!==0)this.words[this.length]=x,this.length++;else if(g!==this)for(;dl.length?this.clone().iadd(l):l.clone().iadd(this)},i.prototype.isub=function(l){if(l.negative!==0){l.negative=0;var p=this.iadd(l);return l.negative=1,p._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(l),this.negative=1,this._normSign();var g=this.cmp(l);if(g===0)return this.negative=0,this.length=1,this.words[0]=0,this;var S,x;g>0?(S=this,x=l):(S=l,x=this);for(var d=0,y=0;y>26,this.words[y]=p&67108863;for(;d!==0&&y>26,this.words[y]=p&67108863;if(d===0&&y>>26,J=C&67108863,_=Math.min(h,l.length-1),L=Math.max(0,h-b.length+1);L<=_;L++){var N=h-L|0;S=b.words[N]|0,x=l.words[L]|0,d=S*x+J,k+=d/67108864|0,J=d&67108863}p.words[h]=J|0,C=k|0}return C!==0?p.words[h]=C|0:p.length--,p._strip()}var F=function(l,p,g){var S=l.words,x=p.words,d=g.words,y=0,C,h,k,J=S[0]|0,_=J&8191,L=J>>>13,N=S[1]|0,q=N&8191,H=N>>>13,W=S[2]|0,V=W&8191,K=W>>>13,ur=S[3]|0,Q=ur&8191,Y=ur>>>13,_n=S[4]|0,ne=_n&8191,ie=_n>>>13,Tn=S[5]|0,ae=Tn&8191,oe=Tn>>>13,kn=S[6]|0,se=kn&8191,ce=kn>>>13,Cn=S[7]|0,ue=Cn&8191,le=Cn>>>13,On=S[8]|0,fe=On&8191,de=On>>>13,Pn=S[9]|0,pe=Pn&8191,he=Pn>>>13,Mn=x[0]|0,ve=Mn&8191,me=Mn>>>13,Bn=x[1]|0,be=Bn&8191,ge=Bn>>>13,Fn=x[2]|0,xe=Fn&8191,ye=Fn>>>13,Ln=x[3]|0,we=Ln&8191,Ae=Ln>>>13,Rn=x[4]|0,Ee=Rn&8191,Se=Rn>>>13,In=x[5]|0,_e=In&8191,Te=In>>>13,Nn=x[6]|0,ke=Nn&8191,Ce=Nn>>>13,Dn=x[7]|0,Oe=Dn&8191,Pe=Dn>>>13,Jn=x[8]|0,Me=Jn&8191,Be=Jn>>>13,ln=x[9]|0,tr=ln&8191,nr=ln>>>13;g.negative=l.negative^p.negative,g.length=19,C=Math.imul(_,ve),h=Math.imul(_,me),h=h+Math.imul(L,ve)|0,k=Math.imul(L,me);var It=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(It>>>26)|0,It&=67108863,C=Math.imul(q,ve),h=Math.imul(q,me),h=h+Math.imul(H,ve)|0,k=Math.imul(H,me),C=C+Math.imul(_,be)|0,h=h+Math.imul(_,ge)|0,h=h+Math.imul(L,be)|0,k=k+Math.imul(L,ge)|0;var Nt=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,C=Math.imul(V,ve),h=Math.imul(V,me),h=h+Math.imul(K,ve)|0,k=Math.imul(K,me),C=C+Math.imul(q,be)|0,h=h+Math.imul(q,ge)|0,h=h+Math.imul(H,be)|0,k=k+Math.imul(H,ge)|0,C=C+Math.imul(_,xe)|0,h=h+Math.imul(_,ye)|0,h=h+Math.imul(L,xe)|0,k=k+Math.imul(L,ye)|0;var Dt=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,C=Math.imul(Q,ve),h=Math.imul(Q,me),h=h+Math.imul(Y,ve)|0,k=Math.imul(Y,me),C=C+Math.imul(V,be)|0,h=h+Math.imul(V,ge)|0,h=h+Math.imul(K,be)|0,k=k+Math.imul(K,ge)|0,C=C+Math.imul(q,xe)|0,h=h+Math.imul(q,ye)|0,h=h+Math.imul(H,xe)|0,k=k+Math.imul(H,ye)|0,C=C+Math.imul(_,we)|0,h=h+Math.imul(_,Ae)|0,h=h+Math.imul(L,we)|0,k=k+Math.imul(L,Ae)|0;var Jt=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Jt>>>26)|0,Jt&=67108863,C=Math.imul(ne,ve),h=Math.imul(ne,me),h=h+Math.imul(ie,ve)|0,k=Math.imul(ie,me),C=C+Math.imul(Q,be)|0,h=h+Math.imul(Q,ge)|0,h=h+Math.imul(Y,be)|0,k=k+Math.imul(Y,ge)|0,C=C+Math.imul(V,xe)|0,h=h+Math.imul(V,ye)|0,h=h+Math.imul(K,xe)|0,k=k+Math.imul(K,ye)|0,C=C+Math.imul(q,we)|0,h=h+Math.imul(q,Ae)|0,h=h+Math.imul(H,we)|0,k=k+Math.imul(H,Ae)|0,C=C+Math.imul(_,Ee)|0,h=h+Math.imul(_,Se)|0,h=h+Math.imul(L,Ee)|0,k=k+Math.imul(L,Se)|0;var qt=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(qt>>>26)|0,qt&=67108863,C=Math.imul(ae,ve),h=Math.imul(ae,me),h=h+Math.imul(oe,ve)|0,k=Math.imul(oe,me),C=C+Math.imul(ne,be)|0,h=h+Math.imul(ne,ge)|0,h=h+Math.imul(ie,be)|0,k=k+Math.imul(ie,ge)|0,C=C+Math.imul(Q,xe)|0,h=h+Math.imul(Q,ye)|0,h=h+Math.imul(Y,xe)|0,k=k+Math.imul(Y,ye)|0,C=C+Math.imul(V,we)|0,h=h+Math.imul(V,Ae)|0,h=h+Math.imul(K,we)|0,k=k+Math.imul(K,Ae)|0,C=C+Math.imul(q,Ee)|0,h=h+Math.imul(q,Se)|0,h=h+Math.imul(H,Ee)|0,k=k+Math.imul(H,Se)|0,C=C+Math.imul(_,_e)|0,h=h+Math.imul(_,Te)|0,h=h+Math.imul(L,_e)|0,k=k+Math.imul(L,Te)|0;var Ha=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Ha>>>26)|0,Ha&=67108863,C=Math.imul(se,ve),h=Math.imul(se,me),h=h+Math.imul(ce,ve)|0,k=Math.imul(ce,me),C=C+Math.imul(ae,be)|0,h=h+Math.imul(ae,ge)|0,h=h+Math.imul(oe,be)|0,k=k+Math.imul(oe,ge)|0,C=C+Math.imul(ne,xe)|0,h=h+Math.imul(ne,ye)|0,h=h+Math.imul(ie,xe)|0,k=k+Math.imul(ie,ye)|0,C=C+Math.imul(Q,we)|0,h=h+Math.imul(Q,Ae)|0,h=h+Math.imul(Y,we)|0,k=k+Math.imul(Y,Ae)|0,C=C+Math.imul(V,Ee)|0,h=h+Math.imul(V,Se)|0,h=h+Math.imul(K,Ee)|0,k=k+Math.imul(K,Se)|0,C=C+Math.imul(q,_e)|0,h=h+Math.imul(q,Te)|0,h=h+Math.imul(H,_e)|0,k=k+Math.imul(H,Te)|0,C=C+Math.imul(_,ke)|0,h=h+Math.imul(_,Ce)|0,h=h+Math.imul(L,ke)|0,k=k+Math.imul(L,Ce)|0;var za=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(za>>>26)|0,za&=67108863,C=Math.imul(ue,ve),h=Math.imul(ue,me),h=h+Math.imul(le,ve)|0,k=Math.imul(le,me),C=C+Math.imul(se,be)|0,h=h+Math.imul(se,ge)|0,h=h+Math.imul(ce,be)|0,k=k+Math.imul(ce,ge)|0,C=C+Math.imul(ae,xe)|0,h=h+Math.imul(ae,ye)|0,h=h+Math.imul(oe,xe)|0,k=k+Math.imul(oe,ye)|0,C=C+Math.imul(ne,we)|0,h=h+Math.imul(ne,Ae)|0,h=h+Math.imul(ie,we)|0,k=k+Math.imul(ie,Ae)|0,C=C+Math.imul(Q,Ee)|0,h=h+Math.imul(Q,Se)|0,h=h+Math.imul(Y,Ee)|0,k=k+Math.imul(Y,Se)|0,C=C+Math.imul(V,_e)|0,h=h+Math.imul(V,Te)|0,h=h+Math.imul(K,_e)|0,k=k+Math.imul(K,Te)|0,C=C+Math.imul(q,ke)|0,h=h+Math.imul(q,Ce)|0,h=h+Math.imul(H,ke)|0,k=k+Math.imul(H,Ce)|0,C=C+Math.imul(_,Oe)|0,h=h+Math.imul(_,Pe)|0,h=h+Math.imul(L,Oe)|0,k=k+Math.imul(L,Pe)|0;var Ga=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Ga>>>26)|0,Ga&=67108863,C=Math.imul(fe,ve),h=Math.imul(fe,me),h=h+Math.imul(de,ve)|0,k=Math.imul(de,me),C=C+Math.imul(ue,be)|0,h=h+Math.imul(ue,ge)|0,h=h+Math.imul(le,be)|0,k=k+Math.imul(le,ge)|0,C=C+Math.imul(se,xe)|0,h=h+Math.imul(se,ye)|0,h=h+Math.imul(ce,xe)|0,k=k+Math.imul(ce,ye)|0,C=C+Math.imul(ae,we)|0,h=h+Math.imul(ae,Ae)|0,h=h+Math.imul(oe,we)|0,k=k+Math.imul(oe,Ae)|0,C=C+Math.imul(ne,Ee)|0,h=h+Math.imul(ne,Se)|0,h=h+Math.imul(ie,Ee)|0,k=k+Math.imul(ie,Se)|0,C=C+Math.imul(Q,_e)|0,h=h+Math.imul(Q,Te)|0,h=h+Math.imul(Y,_e)|0,k=k+Math.imul(Y,Te)|0,C=C+Math.imul(V,ke)|0,h=h+Math.imul(V,Ce)|0,h=h+Math.imul(K,ke)|0,k=k+Math.imul(K,Ce)|0,C=C+Math.imul(q,Oe)|0,h=h+Math.imul(q,Pe)|0,h=h+Math.imul(H,Oe)|0,k=k+Math.imul(H,Pe)|0,C=C+Math.imul(_,Me)|0,h=h+Math.imul(_,Be)|0,h=h+Math.imul(L,Me)|0,k=k+Math.imul(L,Be)|0;var Xa=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Xa>>>26)|0,Xa&=67108863,C=Math.imul(pe,ve),h=Math.imul(pe,me),h=h+Math.imul(he,ve)|0,k=Math.imul(he,me),C=C+Math.imul(fe,be)|0,h=h+Math.imul(fe,ge)|0,h=h+Math.imul(de,be)|0,k=k+Math.imul(de,ge)|0,C=C+Math.imul(ue,xe)|0,h=h+Math.imul(ue,ye)|0,h=h+Math.imul(le,xe)|0,k=k+Math.imul(le,ye)|0,C=C+Math.imul(se,we)|0,h=h+Math.imul(se,Ae)|0,h=h+Math.imul(ce,we)|0,k=k+Math.imul(ce,Ae)|0,C=C+Math.imul(ae,Ee)|0,h=h+Math.imul(ae,Se)|0,h=h+Math.imul(oe,Ee)|0,k=k+Math.imul(oe,Se)|0,C=C+Math.imul(ne,_e)|0,h=h+Math.imul(ne,Te)|0,h=h+Math.imul(ie,_e)|0,k=k+Math.imul(ie,Te)|0,C=C+Math.imul(Q,ke)|0,h=h+Math.imul(Q,Ce)|0,h=h+Math.imul(Y,ke)|0,k=k+Math.imul(Y,Ce)|0,C=C+Math.imul(V,Oe)|0,h=h+Math.imul(V,Pe)|0,h=h+Math.imul(K,Oe)|0,k=k+Math.imul(K,Pe)|0,C=C+Math.imul(q,Me)|0,h=h+Math.imul(q,Be)|0,h=h+Math.imul(H,Me)|0,k=k+Math.imul(H,Be)|0,C=C+Math.imul(_,tr)|0,h=h+Math.imul(_,nr)|0,h=h+Math.imul(L,tr)|0,k=k+Math.imul(L,nr)|0;var Ka=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Ka>>>26)|0,Ka&=67108863,C=Math.imul(pe,be),h=Math.imul(pe,ge),h=h+Math.imul(he,be)|0,k=Math.imul(he,ge),C=C+Math.imul(fe,xe)|0,h=h+Math.imul(fe,ye)|0,h=h+Math.imul(de,xe)|0,k=k+Math.imul(de,ye)|0,C=C+Math.imul(ue,we)|0,h=h+Math.imul(ue,Ae)|0,h=h+Math.imul(le,we)|0,k=k+Math.imul(le,Ae)|0,C=C+Math.imul(se,Ee)|0,h=h+Math.imul(se,Se)|0,h=h+Math.imul(ce,Ee)|0,k=k+Math.imul(ce,Se)|0,C=C+Math.imul(ae,_e)|0,h=h+Math.imul(ae,Te)|0,h=h+Math.imul(oe,_e)|0,k=k+Math.imul(oe,Te)|0,C=C+Math.imul(ne,ke)|0,h=h+Math.imul(ne,Ce)|0,h=h+Math.imul(ie,ke)|0,k=k+Math.imul(ie,Ce)|0,C=C+Math.imul(Q,Oe)|0,h=h+Math.imul(Q,Pe)|0,h=h+Math.imul(Y,Oe)|0,k=k+Math.imul(Y,Pe)|0,C=C+Math.imul(V,Me)|0,h=h+Math.imul(V,Be)|0,h=h+Math.imul(K,Me)|0,k=k+Math.imul(K,Be)|0,C=C+Math.imul(q,tr)|0,h=h+Math.imul(q,nr)|0,h=h+Math.imul(H,tr)|0,k=k+Math.imul(H,nr)|0;var Va=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Va>>>26)|0,Va&=67108863,C=Math.imul(pe,xe),h=Math.imul(pe,ye),h=h+Math.imul(he,xe)|0,k=Math.imul(he,ye),C=C+Math.imul(fe,we)|0,h=h+Math.imul(fe,Ae)|0,h=h+Math.imul(de,we)|0,k=k+Math.imul(de,Ae)|0,C=C+Math.imul(ue,Ee)|0,h=h+Math.imul(ue,Se)|0,h=h+Math.imul(le,Ee)|0,k=k+Math.imul(le,Se)|0,C=C+Math.imul(se,_e)|0,h=h+Math.imul(se,Te)|0,h=h+Math.imul(ce,_e)|0,k=k+Math.imul(ce,Te)|0,C=C+Math.imul(ae,ke)|0,h=h+Math.imul(ae,Ce)|0,h=h+Math.imul(oe,ke)|0,k=k+Math.imul(oe,Ce)|0,C=C+Math.imul(ne,Oe)|0,h=h+Math.imul(ne,Pe)|0,h=h+Math.imul(ie,Oe)|0,k=k+Math.imul(ie,Pe)|0,C=C+Math.imul(Q,Me)|0,h=h+Math.imul(Q,Be)|0,h=h+Math.imul(Y,Me)|0,k=k+Math.imul(Y,Be)|0,C=C+Math.imul(V,tr)|0,h=h+Math.imul(V,nr)|0,h=h+Math.imul(K,tr)|0,k=k+Math.imul(K,nr)|0;var Za=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Za>>>26)|0,Za&=67108863,C=Math.imul(pe,we),h=Math.imul(pe,Ae),h=h+Math.imul(he,we)|0,k=Math.imul(he,Ae),C=C+Math.imul(fe,Ee)|0,h=h+Math.imul(fe,Se)|0,h=h+Math.imul(de,Ee)|0,k=k+Math.imul(de,Se)|0,C=C+Math.imul(ue,_e)|0,h=h+Math.imul(ue,Te)|0,h=h+Math.imul(le,_e)|0,k=k+Math.imul(le,Te)|0,C=C+Math.imul(se,ke)|0,h=h+Math.imul(se,Ce)|0,h=h+Math.imul(ce,ke)|0,k=k+Math.imul(ce,Ce)|0,C=C+Math.imul(ae,Oe)|0,h=h+Math.imul(ae,Pe)|0,h=h+Math.imul(oe,Oe)|0,k=k+Math.imul(oe,Pe)|0,C=C+Math.imul(ne,Me)|0,h=h+Math.imul(ne,Be)|0,h=h+Math.imul(ie,Me)|0,k=k+Math.imul(ie,Be)|0,C=C+Math.imul(Q,tr)|0,h=h+Math.imul(Q,nr)|0,h=h+Math.imul(Y,tr)|0,k=k+Math.imul(Y,nr)|0;var Qa=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Qa>>>26)|0,Qa&=67108863,C=Math.imul(pe,Ee),h=Math.imul(pe,Se),h=h+Math.imul(he,Ee)|0,k=Math.imul(he,Se),C=C+Math.imul(fe,_e)|0,h=h+Math.imul(fe,Te)|0,h=h+Math.imul(de,_e)|0,k=k+Math.imul(de,Te)|0,C=C+Math.imul(ue,ke)|0,h=h+Math.imul(ue,Ce)|0,h=h+Math.imul(le,ke)|0,k=k+Math.imul(le,Ce)|0,C=C+Math.imul(se,Oe)|0,h=h+Math.imul(se,Pe)|0,h=h+Math.imul(ce,Oe)|0,k=k+Math.imul(ce,Pe)|0,C=C+Math.imul(ae,Me)|0,h=h+Math.imul(ae,Be)|0,h=h+Math.imul(oe,Me)|0,k=k+Math.imul(oe,Be)|0,C=C+Math.imul(ne,tr)|0,h=h+Math.imul(ne,nr)|0,h=h+Math.imul(ie,tr)|0,k=k+Math.imul(ie,nr)|0;var Wa=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Wa>>>26)|0,Wa&=67108863,C=Math.imul(pe,_e),h=Math.imul(pe,Te),h=h+Math.imul(he,_e)|0,k=Math.imul(he,Te),C=C+Math.imul(fe,ke)|0,h=h+Math.imul(fe,Ce)|0,h=h+Math.imul(de,ke)|0,k=k+Math.imul(de,Ce)|0,C=C+Math.imul(ue,Oe)|0,h=h+Math.imul(ue,Pe)|0,h=h+Math.imul(le,Oe)|0,k=k+Math.imul(le,Pe)|0,C=C+Math.imul(se,Me)|0,h=h+Math.imul(se,Be)|0,h=h+Math.imul(ce,Me)|0,k=k+Math.imul(ce,Be)|0,C=C+Math.imul(ae,tr)|0,h=h+Math.imul(ae,nr)|0,h=h+Math.imul(oe,tr)|0,k=k+Math.imul(oe,nr)|0;var Ya=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(Ya>>>26)|0,Ya&=67108863,C=Math.imul(pe,ke),h=Math.imul(pe,Ce),h=h+Math.imul(he,ke)|0,k=Math.imul(he,Ce),C=C+Math.imul(fe,Oe)|0,h=h+Math.imul(fe,Pe)|0,h=h+Math.imul(de,Oe)|0,k=k+Math.imul(de,Pe)|0,C=C+Math.imul(ue,Me)|0,h=h+Math.imul(ue,Be)|0,h=h+Math.imul(le,Me)|0,k=k+Math.imul(le,Be)|0,C=C+Math.imul(se,tr)|0,h=h+Math.imul(se,nr)|0,h=h+Math.imul(ce,tr)|0,k=k+Math.imul(ce,nr)|0;var $a=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+($a>>>26)|0,$a&=67108863,C=Math.imul(pe,Oe),h=Math.imul(pe,Pe),h=h+Math.imul(he,Oe)|0,k=Math.imul(he,Pe),C=C+Math.imul(fe,Me)|0,h=h+Math.imul(fe,Be)|0,h=h+Math.imul(de,Me)|0,k=k+Math.imul(de,Be)|0,C=C+Math.imul(ue,tr)|0,h=h+Math.imul(ue,nr)|0,h=h+Math.imul(le,tr)|0,k=k+Math.imul(le,nr)|0;var O0=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(O0>>>26)|0,O0&=67108863,C=Math.imul(pe,Me),h=Math.imul(pe,Be),h=h+Math.imul(he,Me)|0,k=Math.imul(he,Be),C=C+Math.imul(fe,tr)|0,h=h+Math.imul(fe,nr)|0,h=h+Math.imul(de,tr)|0,k=k+Math.imul(de,nr)|0;var P0=(y+C|0)+((h&8191)<<13)|0;y=(k+(h>>>13)|0)+(P0>>>26)|0,P0&=67108863,C=Math.imul(pe,tr),h=Math.imul(pe,nr),h=h+Math.imul(he,tr)|0,k=Math.imul(he,nr);var M0=(y+C|0)+((h&8191)<<13)|0;return y=(k+(h>>>13)|0)+(M0>>>26)|0,M0&=67108863,d[0]=It,d[1]=Nt,d[2]=Dt,d[3]=Jt,d[4]=qt,d[5]=Ha,d[6]=za,d[7]=Ga,d[8]=Xa,d[9]=Ka,d[10]=Va,d[11]=Za,d[12]=Qa,d[13]=Wa,d[14]=Ya,d[15]=$a,d[16]=O0,d[17]=P0,d[18]=M0,y!==0&&(d[19]=y,g.length++),g};Math.imul||(F=B);function I(b,l,p){p.negative=l.negative^b.negative,p.length=b.length+l.length;for(var g=0,S=0,x=0;x>>26)|0,S+=d>>>26,d&=67108863}p.words[x]=y,g=d,d=S}return g!==0?p.words[x]=g:p.length--,p._strip()}function D(b,l,p){return I(b,l,p)}i.prototype.mulTo=function(l,p){var g,S=this.length+l.length;return this.length===10&&l.length===10?g=F(this,l,p):S<63?g=B(this,l,p):S<1024?g=I(this,l,p):g=D(this,l,p),g};function z(b,l){this.x=b,this.y=l}z.prototype.makeRBT=function(l){for(var p=new Array(l),g=i.prototype._countBits(l)-1,S=0;S>=1;return S},z.prototype.permute=function(l,p,g,S,x,d){for(var y=0;y>>1)x++;return 1<>>13,g[2*d+1]=x&8191,x=x>>>13;for(d=2*p;d>=26,g+=x/67108864|0,g+=d>>>26,this.words[S]=d&67108863}return g!==0&&(this.words[S]=g,this.length++),p?this.ineg():this},i.prototype.muln=function(l){return this.clone().imuln(l)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(l){var p=O(l);if(p.length===0)return new i(1);for(var g=this,S=0;S=0);var p=l%26,g=(l-p)/26,S=67108863>>>26-p<<26-p,x;if(p!==0){var d=0;for(x=0;x>>26-p}d&&(this.words[x]=d,this.length++)}if(g!==0){for(x=this.length-1;x>=0;x--)this.words[x+g]=this.words[x];for(x=0;x=0);var S;p?S=(p-p%26)/26:S=0;var x=l%26,d=Math.min((l-x)/26,this.length),y=67108863^67108863>>>x<d)for(this.length-=d,h=0;h=0&&(k!==0||h>=S);h--){var J=this.words[h]|0;this.words[h]=k<<26-x|J>>>x,k=J&y}return C&&k!==0&&(C.words[C.length++]=k),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},i.prototype.ishrn=function(l,p,g){return r(this.negative===0),this.iushrn(l,p,g)},i.prototype.shln=function(l){return this.clone().ishln(l)},i.prototype.ushln=function(l){return this.clone().iushln(l)},i.prototype.shrn=function(l){return this.clone().ishrn(l)},i.prototype.ushrn=function(l){return this.clone().iushrn(l)},i.prototype.testn=function(l){r(typeof l=="number"&&l>=0);var p=l%26,g=(l-p)/26,S=1<=0);var p=l%26,g=(l-p)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=g)return this;if(p!==0&&g++,this.length=Math.min(g,this.length),p!==0){var S=67108863^67108863>>>p<=67108864;p++)this.words[p]-=67108864,p===this.length-1?this.words[p+1]=1:this.words[p+1]++;return this.length=Math.max(this.length,p+1),this},i.prototype.isubn=function(l){if(r(typeof l=="number"),r(l<67108864),l<0)return this.iaddn(-l);if(this.negative!==0)return this.negative=0,this.iaddn(l),this.negative=1,this;if(this.words[0]-=l,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var p=0;p>26)-(C/67108864|0),this.words[x+g]=d&67108863}for(;x>26,this.words[x+g]=d&67108863;if(y===0)return this._strip();for(r(y===-1),y=0,x=0;x>26,this.words[x]=d&67108863;return this.negative=1,this._strip()},i.prototype._wordDiv=function(l,p){var g=this.length-l.length,S=this.clone(),x=l,d=x.words[x.length-1]|0,y=this._countBits(d);g=26-y,g!==0&&(x=x.ushln(g),S.iushln(g),d=x.words[x.length-1]|0);var C=S.length-x.length,h;if(p!=="mod"){h=new i(null),h.length=C+1,h.words=new Array(h.length);for(var k=0;k=0;_--){var L=(S.words[x.length+_]|0)*67108864+(S.words[x.length+_-1]|0);for(L=Math.min(L/d|0,67108863),S._ishlnsubmul(x,L,_);S.negative!==0;)L--,S.negative=0,S._ishlnsubmul(x,1,_),S.isZero()||(S.negative^=1);h&&(h.words[_]=L)}return h&&h._strip(),S._strip(),p!=="div"&&g!==0&&S.iushrn(g),{div:h||null,mod:S}},i.prototype.divmod=function(l,p,g){if(r(!l.isZero()),this.isZero())return{div:new i(0),mod:new i(0)};var S,x,d;return this.negative!==0&&l.negative===0?(d=this.neg().divmod(l,p),p!=="mod"&&(S=d.div.neg()),p!=="div"&&(x=d.mod.neg(),g&&x.negative!==0&&x.iadd(l)),{div:S,mod:x}):this.negative===0&&l.negative!==0?(d=this.divmod(l.neg(),p),p!=="mod"&&(S=d.div.neg()),{div:S,mod:d.mod}):(this.negative&l.negative)!==0?(d=this.neg().divmod(l.neg(),p),p!=="div"&&(x=d.mod.neg(),g&&x.negative!==0&&x.isub(l)),{div:d.div,mod:x}):l.length>this.length||this.cmp(l)<0?{div:new i(0),mod:this}:l.length===1?p==="div"?{div:this.divn(l.words[0]),mod:null}:p==="mod"?{div:null,mod:new i(this.modrn(l.words[0]))}:{div:this.divn(l.words[0]),mod:new i(this.modrn(l.words[0]))}:this._wordDiv(l,p)},i.prototype.div=function(l){return this.divmod(l,"div",!1).div},i.prototype.mod=function(l){return this.divmod(l,"mod",!1).mod},i.prototype.umod=function(l){return this.divmod(l,"mod",!0).mod},i.prototype.divRound=function(l){var p=this.divmod(l);if(p.mod.isZero())return p.div;var g=p.div.negative!==0?p.mod.isub(l):p.mod,S=l.ushrn(1),x=l.andln(1),d=g.cmp(S);return d<0||x===1&&d===0?p.div:p.div.negative!==0?p.div.isubn(1):p.div.iaddn(1)},i.prototype.modrn=function(l){var p=l<0;p&&(l=-l),r(l<=67108863);for(var g=(1<<26)%l,S=0,x=this.length-1;x>=0;x--)S=(g*S+(this.words[x]|0))%l;return p?-S:S},i.prototype.modn=function(l){return this.modrn(l)},i.prototype.idivn=function(l){var p=l<0;p&&(l=-l),r(l<=67108863);for(var g=0,S=this.length-1;S>=0;S--){var x=(this.words[S]|0)+g*67108864;this.words[S]=x/l|0,g=x%l}return this._strip(),p?this.ineg():this},i.prototype.divn=function(l){return this.clone().idivn(l)},i.prototype.egcd=function(l){r(l.negative===0),r(!l.isZero());var p=this,g=l.clone();p.negative!==0?p=p.umod(l):p=p.clone();for(var S=new i(1),x=new i(0),d=new i(0),y=new i(1),C=0;p.isEven()&&g.isEven();)p.iushrn(1),g.iushrn(1),++C;for(var h=g.clone(),k=p.clone();!p.isZero();){for(var J=0,_=1;(p.words[0]&_)===0&&J<26;++J,_<<=1);if(J>0)for(p.iushrn(J);J-- >0;)(S.isOdd()||x.isOdd())&&(S.iadd(h),x.isub(k)),S.iushrn(1),x.iushrn(1);for(var L=0,N=1;(g.words[0]&N)===0&&L<26;++L,N<<=1);if(L>0)for(g.iushrn(L);L-- >0;)(d.isOdd()||y.isOdd())&&(d.iadd(h),y.isub(k)),d.iushrn(1),y.iushrn(1);p.cmp(g)>=0?(p.isub(g),S.isub(d),x.isub(y)):(g.isub(p),d.isub(S),y.isub(x))}return{a:d,b:y,gcd:g.iushln(C)}},i.prototype._invmp=function(l){r(l.negative===0),r(!l.isZero());var p=this,g=l.clone();p.negative!==0?p=p.umod(l):p=p.clone();for(var S=new i(1),x=new i(0),d=g.clone();p.cmpn(1)>0&&g.cmpn(1)>0;){for(var y=0,C=1;(p.words[0]&C)===0&&y<26;++y,C<<=1);if(y>0)for(p.iushrn(y);y-- >0;)S.isOdd()&&S.iadd(d),S.iushrn(1);for(var h=0,k=1;(g.words[0]&k)===0&&h<26;++h,k<<=1);if(h>0)for(g.iushrn(h);h-- >0;)x.isOdd()&&x.iadd(d),x.iushrn(1);p.cmp(g)>=0?(p.isub(g),S.isub(x)):(g.isub(p),x.isub(S))}var J;return p.cmpn(1)===0?J=S:J=x,J.cmpn(0)<0&&J.iadd(l),J},i.prototype.gcd=function(l){if(this.isZero())return l.abs();if(l.isZero())return this.abs();var p=this.clone(),g=l.clone();p.negative=0,g.negative=0;for(var S=0;p.isEven()&&g.isEven();S++)p.iushrn(1),g.iushrn(1);do{for(;p.isEven();)p.iushrn(1);for(;g.isEven();)g.iushrn(1);var x=p.cmp(g);if(x<0){var d=p;p=g,g=d}else if(x===0||g.cmpn(1)===0)break;p.isub(g)}while(!0);return g.iushln(S)},i.prototype.invm=function(l){return this.egcd(l).a.umod(l)},i.prototype.isEven=function(){return(this.words[0]&1)===0},i.prototype.isOdd=function(){return(this.words[0]&1)===1},i.prototype.andln=function(l){return this.words[0]&l},i.prototype.bincn=function(l){r(typeof l=="number");var p=l%26,g=(l-p)/26,S=1<>>26,y&=67108863,this.words[d]=y}return x!==0&&(this.words[d]=x,this.length++),this},i.prototype.isZero=function(){return this.length===1&&this.words[0]===0},i.prototype.cmpn=function(l){var p=l<0;if(this.negative!==0&&!p)return-1;if(this.negative===0&&p)return 1;this._strip();var g;if(this.length>1)g=1;else{p&&(l=-l),r(l<=67108863,"Number is too big");var S=this.words[0]|0;g=S===l?0:Sl.length)return 1;if(this.length=0;g--){var S=this.words[g]|0,x=l.words[g]|0;if(S!==x){Sx&&(p=1);break}}return p},i.prototype.gtn=function(l){return this.cmpn(l)===1},i.prototype.gt=function(l){return this.cmp(l)===1},i.prototype.gten=function(l){return this.cmpn(l)>=0},i.prototype.gte=function(l){return this.cmp(l)>=0},i.prototype.ltn=function(l){return this.cmpn(l)===-1},i.prototype.lt=function(l){return this.cmp(l)===-1},i.prototype.lten=function(l){return this.cmpn(l)<=0},i.prototype.lte=function(l){return this.cmp(l)<=0},i.prototype.eqn=function(l){return this.cmpn(l)===0},i.prototype.eq=function(l){return this.cmp(l)===0},i.red=function(l){return new v(l)},i.prototype.toRed=function(l){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),l.convertTo(this)._forceRed(l)},i.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(l){return this.red=l,this},i.prototype.forceRed=function(l){return r(!this.red,"Already a number in reduction context"),this._forceRed(l)},i.prototype.redAdd=function(l){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,l)},i.prototype.redIAdd=function(l){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,l)},i.prototype.redSub=function(l){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,l)},i.prototype.redISub=function(l){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,l)},i.prototype.redShl=function(l){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,l)},i.prototype.redMul=function(l){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.mul(this,l)},i.prototype.redIMul=function(l){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.imul(this,l)},i.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(l){return r(this.red&&!l.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,l)};var G={k256:null,p224:null,p192:null,p25519:null};function j(b,l){this.name=b,this.p=new i(l,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}j.prototype._tmp=function(){var l=new i(null);return l.words=new Array(Math.ceil(this.n/13)),l},j.prototype.ireduce=function(l){var p=l,g;do this.split(p,this.tmp),p=this.imulK(p),p=p.iadd(this.tmp),g=p.bitLength();while(g>this.n);var S=g0?p.isub(this.p):p.strip!==void 0?p.strip():p._strip(),p},j.prototype.split=function(l,p){l.iushrn(this.n,0,p)},j.prototype.imulK=function(l){return l.imul(this.k)};function Z(){j.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(Z,j),Z.prototype.split=function(l,p){for(var g=4194303,S=Math.min(l.length,9),x=0;x>>22,d=y}d>>>=22,l.words[x-10]=d,d===0&&l.length>10?l.length-=10:l.length-=9},Z.prototype.imulK=function(l){l.words[l.length]=0,l.words[l.length+1]=0,l.length+=2;for(var p=0,g=0;g>>=26,l.words[g]=x,p=S}return p!==0&&(l.words[l.length++]=p),l},i._prime=function(l){if(G[l])return G[l];var p;if(l==="k256")p=new Z;else if(l==="p224")p=new X;else if(l==="p192")p=new U;else if(l==="p25519")p=new M;else throw new Error("Unknown prime "+l);return G[l]=p,p};function v(b){if(typeof b=="string"){var l=i._prime(b);this.m=l.p,this.prime=l}else r(b.gtn(1),"modulus must be greater than 1"),this.m=b,this.prime=null}v.prototype._verify1=function(l){r(l.negative===0,"red works only with positives"),r(l.red,"red works only with red numbers")},v.prototype._verify2=function(l,p){r((l.negative|p.negative)===0,"red works only with positives"),r(l.red&&l.red===p.red,"red works only with red numbers")},v.prototype.imod=function(l){return this.prime?this.prime.ireduce(l)._forceRed(this):(s(l,l.umod(this.m)._forceRed(this)),l)},v.prototype.neg=function(l){return l.isZero()?l.clone():this.m.sub(l)._forceRed(this)},v.prototype.add=function(l,p){this._verify2(l,p);var g=l.add(p);return g.cmp(this.m)>=0&&g.isub(this.m),g._forceRed(this)},v.prototype.iadd=function(l,p){this._verify2(l,p);var g=l.iadd(p);return g.cmp(this.m)>=0&&g.isub(this.m),g},v.prototype.sub=function(l,p){this._verify2(l,p);var g=l.sub(p);return g.cmpn(0)<0&&g.iadd(this.m),g._forceRed(this)},v.prototype.isub=function(l,p){this._verify2(l,p);var g=l.isub(p);return g.cmpn(0)<0&&g.iadd(this.m),g},v.prototype.shl=function(l,p){return this._verify1(l),this.imod(l.ushln(p))},v.prototype.imul=function(l,p){return this._verify2(l,p),this.imod(l.imul(p))},v.prototype.mul=function(l,p){return this._verify2(l,p),this.imod(l.mul(p))},v.prototype.isqr=function(l){return this.imul(l,l.clone())},v.prototype.sqr=function(l){return this.mul(l,l)},v.prototype.sqrt=function(l){if(l.isZero())return l.clone();var p=this.m.andln(3);if(r(p%2===1),p===3){var g=this.m.add(new i(1)).iushrn(2);return this.pow(l,g)}for(var S=this.m.subn(1),x=0;!S.isZero()&&S.andln(1)===0;)x++,S.iushrn(1);r(!S.isZero());var d=new i(1).toRed(this),y=d.redNeg(),C=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new i(2*h*h).toRed(this);this.pow(h,C).cmp(y)!==0;)h.redIAdd(y);for(var k=this.pow(h,S),J=this.pow(l,S.addn(1).iushrn(1)),_=this.pow(l,S),L=x;_.cmp(d)!==0;){for(var N=_,q=0;N.cmp(d)!==0;q++)N=N.redSqr();r(q=0;x--){for(var k=p.words[x],J=h-1;J>=0;J--){var _=k>>J&1;if(d!==S[0]&&(d=this.sqr(d)),_===0&&y===0){C=0;continue}y<<=1,y|=_,C++,!(C!==g&&(x!==0||J!==0))&&(d=this.mul(d,S[y]),C=0,y=0)}h=26}return d},v.prototype.convertTo=function(l){var p=l.umod(this.m);return p===l?p.clone():p},v.prototype.convertFrom=function(l){var p=l.clone();return p.red=null,p},i.mont=function(l){return new E(l)};function E(b){v.call(this,b),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}n(E,v),E.prototype.convertTo=function(l){return this.imod(l.ushln(this.shift))},E.prototype.convertFrom=function(l){var p=this.imod(l.mul(this.rinv));return p.red=null,p},E.prototype.imul=function(l,p){if(l.isZero()||p.isZero())return l.words[0]=0,l.length=1,l;var g=l.imul(p),S=g.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),x=g.isub(S).iushrn(this.shift),d=x;return x.cmp(this.m)>=0?d=x.isub(this.m):x.cmpn(0)<0&&(d=x.iadd(this.m)),d._forceRed(this)},E.prototype.mul=function(l,p){if(l.isZero()||p.isZero())return new i(0)._forceRed(this);var g=l.mul(p),S=g.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),x=g.isub(S).iushrn(this.shift),d=x;return x.cmp(this.m)>=0?d=x.isub(this.m):x.cmpn(0)<0&&(d=x.iadd(this.m)),d._forceRed(this)},E.prototype.invm=function(l){var p=this.imod(l._invmp(this.m).mul(this.r2));return p._forceRed(this)}})(typeof zv>"u"||zv,v6)});var b6=P(nd=>{"use strict";Object.defineProperty(nd,"__esModule",{value:!0});nd.version=void 0;nd.version="logger/5.7.0"});var re=P(Vn=>{"use strict";Object.defineProperty(Vn,"__esModule",{value:!0});Vn.Logger=Vn.ErrorCode=Vn.LogLevel=void 0;var g6=!1,x6=!1,id={debug:1,default:2,info:2,warning:3,error:4,off:5},y6=id.default,CN=b6(),Gv=null;function ON(){try{var t=[];if(["NFD","NFC","NFKD","NFKC"].forEach(function(e){try{if("test".normalize(e)!=="test")throw new Error("bad normalize")}catch{t.push(e)}}),t.length)throw new Error("missing "+t.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(e){return e.message}return null}var w6=ON(),E6;(function(t){t.DEBUG="DEBUG",t.INFO="INFO",t.WARNING="WARNING",t.ERROR="ERROR",t.OFF="OFF"})(E6=Vn.LogLevel||(Vn.LogLevel={}));var Kn;(function(t){t.UNKNOWN_ERROR="UNKNOWN_ERROR",t.NOT_IMPLEMENTED="NOT_IMPLEMENTED",t.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",t.NETWORK_ERROR="NETWORK_ERROR",t.SERVER_ERROR="SERVER_ERROR",t.TIMEOUT="TIMEOUT",t.BUFFER_OVERRUN="BUFFER_OVERRUN",t.NUMERIC_FAULT="NUMERIC_FAULT",t.MISSING_NEW="MISSING_NEW",t.INVALID_ARGUMENT="INVALID_ARGUMENT",t.MISSING_ARGUMENT="MISSING_ARGUMENT",t.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",t.CALL_EXCEPTION="CALL_EXCEPTION",t.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",t.NONCE_EXPIRED="NONCE_EXPIRED",t.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",t.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",t.TRANSACTION_REPLACED="TRANSACTION_REPLACED",t.ACTION_REJECTED="ACTION_REJECTED"})(Kn=Vn.ErrorCode||(Vn.ErrorCode={}));var A6="0123456789abcdef",PN=function(){function t(e){Object.defineProperty(this,"version",{enumerable:!0,value:e,writable:!1})}return t.prototype._log=function(e,r){var n=e.toLowerCase();id[n]==null&&this.throwArgumentError("invalid log level name","logLevel",e),!(y6>id[n])&&console.log.apply(console,r)},t.prototype.debug=function(){for(var e=[],r=0;r>4],m+=A6[f[w]&15];i.push(s+"=Uint8Array(0x"+m+")")}else i.push(s+"="+JSON.stringify(f))}catch{i.push(s+"="+JSON.stringify(n[s].toString()))}}),i.push("code="+r),i.push("version="+this.version);var a=e,o="";switch(r){case Kn.NUMERIC_FAULT:{o="NUMERIC_FAULT";var c=e;switch(c){case"overflow":case"underflow":case"division-by-zero":o+="-"+c;break;case"negative-power":case"negative-width":o+="-unsupported";break;case"unbound-bitwise-result":o+="-unbound-result";break}break}case Kn.CALL_EXCEPTION:case Kn.INSUFFICIENT_FUNDS:case Kn.MISSING_NEW:case Kn.NONCE_EXPIRED:case Kn.REPLACEMENT_UNDERPRICED:case Kn.TRANSACTION_REPLACED:case Kn.UNPREDICTABLE_GAS_LIMIT:o=r;break}o&&(e+=" [ See: https://links.ethers.org/v5-errors-"+o+" ]"),i.length&&(e+=" ("+i.join(", ")+")");var u=new Error(e);return u.reason=a,u.code=r,Object.keys(n).forEach(function(s){u[s]=n[s]}),u},t.prototype.throwError=function(e,r,n){throw this.makeError(e,r,n)},t.prototype.throwArgumentError=function(e,r,n){return this.throwError(e,t.errors.INVALID_ARGUMENT,{argument:r,value:n})},t.prototype.assert=function(e,r,n,i){e||this.throwError(r,n,i)},t.prototype.assertArgument=function(e,r,n,i){e||this.throwArgumentError(r,n,i)},t.prototype.checkNormalize=function(e){e==null&&(e="platform missing String.prototype.normalize"),w6&&this.throwError("platform missing String.prototype.normalize",t.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:w6})},t.prototype.checkSafeUint53=function(e,r){typeof e=="number"&&(r==null&&(r="value not safe"),(e<0||e>=9007199254740991)&&this.throwError(r,t.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:e}),e%1&&this.throwError(r,t.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:e}))},t.prototype.checkArgumentCount=function(e,r,n){n?n=": "+n:n="",er&&this.throwError("too many arguments"+n,t.errors.UNEXPECTED_ARGUMENT,{count:e,expectedCount:r})},t.prototype.checkNew=function(e,r){(e===Object||e==null)&&this.throwError("missing new",t.errors.MISSING_NEW,{name:r.name})},t.prototype.checkAbstract=function(e,r){e===r?this.throwError("cannot instantiate abstract class "+JSON.stringify(r.name)+" directly; use a sub-class",t.errors.UNSUPPORTED_OPERATION,{name:e.name,operation:"new"}):(e===Object||e==null)&&this.throwError("missing new",t.errors.MISSING_NEW,{name:r.name})},t.globalLogger=function(){return Gv||(Gv=new t(CN.version)),Gv},t.setCensorship=function(e,r){if(!e&&r&&this.globalLogger().throwError("cannot permanently disable censorship",t.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),g6){if(!e)return;this.globalLogger().throwError("error censorship permanent",t.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}x6=!!e,g6=!!r},t.setLogLevel=function(e){var r=id[e.toLowerCase()];if(r==null){t.globalLogger().warn("invalid log level - "+e);return}y6=r},t.from=function(e){return new t(e)},t.errors=Kn,t.levels=E6,t}();Vn.Logger=PN});var S6=P(ad=>{"use strict";Object.defineProperty(ad,"__esModule",{value:!0});ad.version=void 0;ad.version="bytes/5.7.0"});var De=P(Ge=>{"use strict";Object.defineProperty(Ge,"__esModule",{value:!0});Ge.joinSignature=Ge.splitSignature=Ge.hexZeroPad=Ge.hexStripZeros=Ge.hexValue=Ge.hexConcat=Ge.hexDataSlice=Ge.hexDataLength=Ge.hexlify=Ge.isHexString=Ge.zeroPad=Ge.stripZeros=Ge.concat=Ge.arrayify=Ge.isBytes=Ge.isBytesLike=void 0;var MN=re(),BN=S6(),gr=new MN.Logger(BN.version);function T6(t){return!!t.toHexString}function Os(t){return t.slice||(t.slice=function(){var e=Array.prototype.slice.call(arguments);return Os(new Uint8Array(Array.prototype.slice.apply(t,e)))}),t}function k6(t){return vn(t)&&!(t.length%2)||sd(t)}Ge.isBytesLike=k6;function _6(t){return typeof t=="number"&&t==t&&t%1===0}function sd(t){if(t==null)return!1;if(t.constructor===Uint8Array)return!0;if(typeof t=="string"||!_6(t.length)||t.length<0)return!1;for(var e=0;e=256)return!1}return!0}Ge.isBytes=sd;function bo(t,e){if(e||(e={}),typeof t=="number"){gr.checkSafeUint53(t,"invalid arrayify value");for(var r=[];t;)r.unshift(t&255),t=parseInt(String(t/256));return r.length===0&&r.push(0),Os(new Uint8Array(r))}if(e.allowMissingPrefix&&typeof t=="string"&&t.substring(0,2)!=="0x"&&(t="0x"+t),T6(t)&&(t=t.toHexString()),vn(t)){var n=t.substring(2);n.length%2&&(e.hexPad==="left"?n="0"+n:e.hexPad==="right"?n+="0":gr.throwArgumentError("hex data is odd-length","value",t));for(var r=[],i=0;ie&&gr.throwArgumentError("value out of range","value",arguments[0]);var r=new Uint8Array(e);return r.set(t,e-t.length),Os(r)}Ge.zeroPad=O6;function vn(t,e){return!(typeof t!="string"||!t.match(/^0x[0-9A-Fa-f]*$/)||e&&t.length!==2+2*e)}Ge.isHexString=vn;var Xv="0123456789abcdef";function it(t,e){if(e||(e={}),typeof t=="number"){gr.checkSafeUint53(t,"invalid hexlify value");for(var r="";t;)r=Xv[t&15]+r,t=Math.floor(t/16);return r.length?(r.length%2&&(r="0"+r),"0x"+r):"0x00"}if(typeof t=="bigint")return t=t.toString(16),t.length%2?"0x0"+t:"0x"+t;if(e.allowMissingPrefix&&typeof t=="string"&&t.substring(0,2)!=="0x"&&(t="0x"+t),T6(t))return t.toHexString();if(vn(t))return t.length%2&&(e.hexPad==="left"?t="0x0"+t.substring(2):e.hexPad==="right"?t+="0":gr.throwArgumentError("hex data is odd-length","value",t)),t.toLowerCase();if(sd(t)){for(var n="0x",i=0;i>4]+Xv[a&15]}return n}return gr.throwArgumentError("invalid hexlify value","value",t)}Ge.hexlify=it;function LN(t){if(typeof t!="string")t=it(t);else if(!vn(t)||t.length%2)return null;return(t.length-2)/2}Ge.hexDataLength=LN;function RN(t,e,r){return typeof t!="string"?t=it(t):(!vn(t)||t.length%2)&&gr.throwArgumentError("invalid hexData","value",t),e=2+2*e,r!=null?"0x"+t.substring(e,2+2*r):"0x"+t.substring(e)}Ge.hexDataSlice=RN;function IN(t){var e="0x";return t.forEach(function(r){e+=it(r).substring(2)}),e}Ge.hexConcat=IN;function NN(t){var e=P6(it(t,{hexPad:"left"}));return e==="0x"?"0x0":e}Ge.hexValue=NN;function P6(t){typeof t!="string"&&(t=it(t)),vn(t)||gr.throwArgumentError("invalid hex string","value",t),t=t.substring(2);for(var e=0;e2*e+2&&gr.throwArgumentError("value out of range","value",arguments[1]);t.length<2*e+2;)t="0x0"+t.substring(2);return t}Ge.hexZeroPad=od;function M6(t){var e={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(k6(t)){var r=bo(t);r.length===64?(e.v=27+(r[32]>>7),r[32]&=127,e.r=it(r.slice(0,32)),e.s=it(r.slice(32,64))):r.length===65?(e.r=it(r.slice(0,32)),e.s=it(r.slice(32,64)),e.v=r[64]):gr.throwArgumentError("invalid signature string","signature",t),e.v<27&&(e.v===0||e.v===1?e.v+=27:gr.throwArgumentError("signature invalid v byte","signature",t)),e.recoveryParam=1-e.v%2,e.recoveryParam&&(r[32]|=128),e._vs=it(r.slice(32,64))}else{if(e.r=t.r,e.s=t.s,e.v=t.v,e.recoveryParam=t.recoveryParam,e._vs=t._vs,e._vs!=null){var n=O6(bo(e._vs),32);e._vs=it(n);var i=n[0]>=128?1:0;e.recoveryParam==null?e.recoveryParam=i:e.recoveryParam!==i&&gr.throwArgumentError("signature recoveryParam mismatch _vs","signature",t),n[0]&=127;var a=it(n);e.s==null?e.s=a:e.s!==a&&gr.throwArgumentError("signature v mismatch _vs","signature",t)}if(e.recoveryParam==null)e.v==null?gr.throwArgumentError("signature missing v and recoveryParam","signature",t):e.v===0||e.v===1?e.recoveryParam=e.v:e.recoveryParam=1-e.v%2;else if(e.v==null)e.v=27+e.recoveryParam;else{var o=e.v===0||e.v===1?e.v:1-e.v%2;e.recoveryParam!==o&&gr.throwArgumentError("signature recoveryParam mismatch v","signature",t)}e.r==null||!vn(e.r)?gr.throwArgumentError("signature missing or invalid r","signature",t):e.r=od(e.r,32),e.s==null||!vn(e.s)?gr.throwArgumentError("signature missing or invalid s","signature",t):e.s=od(e.s,32);var c=bo(e.s);c[0]>=128&&gr.throwArgumentError("signature s out of range","signature",t),e.recoveryParam&&(c[0]|=128);var u=it(c);e._vs&&(vn(e._vs)||gr.throwArgumentError("signature invalid _vs","signature",t),e._vs=od(e._vs,32)),e._vs==null?e._vs=u:e._vs!==u&&gr.throwArgumentError("signature _vs mismatch v and s","signature",t)}return e.yParityAndS=e._vs,e.compact=e.r+e.yParityAndS.substring(2),e}Ge.splitSignature=M6;function DN(t){return t=M6(t),it(C6([t.r,t.s,t.recoveryParam?"0x1c":"0x1b"]))}Ge.joinSignature=DN});var Kv=P(cd=>{"use strict";Object.defineProperty(cd,"__esModule",{value:!0});cd.version=void 0;cd.version="bignumber/5.7.0"});var ld=P(Gt=>{"use strict";var JN=Gt&&Gt.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Gt,"__esModule",{value:!0});Gt._base16To36=Gt._base36To16=Gt.BigNumber=Gt.isBigNumberish=void 0;var qN=JN(m6()),Du=qN.default.BN,Ps=De(),Ms=re(),jN=Kv(),Oi=new Ms.Logger(jN.version),Vv={},B6=9007199254740991;function UN(t){return t!=null&&(ud.isBigNumber(t)||typeof t=="number"&&t%1===0||typeof t=="string"&&!!t.match(/^-?[0-9]+$/)||(0,Ps.isHexString)(t)||typeof t=="bigint"||(0,Ps.isBytes)(t))}Gt.isBigNumberish=UN;var F6=!1,ud=function(){function t(e,r){e!==Vv&&Oi.throwError("cannot call constructor directly; use BigNumber.from",Ms.Logger.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=r,this._isBigNumber=!0,Object.freeze(this)}return t.prototype.fromTwos=function(e){return _t(Ue(this).fromTwos(e))},t.prototype.toTwos=function(e){return _t(Ue(this).toTwos(e))},t.prototype.abs=function(){return this._hex[0]==="-"?t.from(this._hex.substring(1)):this},t.prototype.add=function(e){return _t(Ue(this).add(Ue(e)))},t.prototype.sub=function(e){return _t(Ue(this).sub(Ue(e)))},t.prototype.div=function(e){var r=t.from(e);return r.isZero()&&zt("division-by-zero","div"),_t(Ue(this).div(Ue(e)))},t.prototype.mul=function(e){return _t(Ue(this).mul(Ue(e)))},t.prototype.mod=function(e){var r=Ue(e);return r.isNeg()&&zt("division-by-zero","mod"),_t(Ue(this).umod(r))},t.prototype.pow=function(e){var r=Ue(e);return r.isNeg()&&zt("negative-power","pow"),_t(Ue(this).pow(r))},t.prototype.and=function(e){var r=Ue(e);return(this.isNegative()||r.isNeg())&&zt("unbound-bitwise-result","and"),_t(Ue(this).and(r))},t.prototype.or=function(e){var r=Ue(e);return(this.isNegative()||r.isNeg())&&zt("unbound-bitwise-result","or"),_t(Ue(this).or(r))},t.prototype.xor=function(e){var r=Ue(e);return(this.isNegative()||r.isNeg())&&zt("unbound-bitwise-result","xor"),_t(Ue(this).xor(r))},t.prototype.mask=function(e){return(this.isNegative()||e<0)&&zt("negative-width","mask"),_t(Ue(this).maskn(e))},t.prototype.shl=function(e){return(this.isNegative()||e<0)&&zt("negative-width","shl"),_t(Ue(this).shln(e))},t.prototype.shr=function(e){return(this.isNegative()||e<0)&&zt("negative-width","shr"),_t(Ue(this).shrn(e))},t.prototype.eq=function(e){return Ue(this).eq(Ue(e))},t.prototype.lt=function(e){return Ue(this).lt(Ue(e))},t.prototype.lte=function(e){return Ue(this).lte(Ue(e))},t.prototype.gt=function(e){return Ue(this).gt(Ue(e))},t.prototype.gte=function(e){return Ue(this).gte(Ue(e))},t.prototype.isNegative=function(){return this._hex[0]==="-"},t.prototype.isZero=function(){return Ue(this).isZero()},t.prototype.toNumber=function(){try{return Ue(this).toNumber()}catch{zt("overflow","toNumber",this.toString())}return null},t.prototype.toBigInt=function(){try{return BigInt(this.toString())}catch{}return Oi.throwError("this platform does not support BigInt",Ms.Logger.errors.UNSUPPORTED_OPERATION,{value:this.toString()})},t.prototype.toString=function(){return arguments.length>0&&(arguments[0]===10?F6||(F6=!0,Oi.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?Oi.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",Ms.Logger.errors.UNEXPECTED_ARGUMENT,{}):Oi.throwError("BigNumber.toString does not accept parameters",Ms.Logger.errors.UNEXPECTED_ARGUMENT,{})),Ue(this).toString(10)},t.prototype.toHexString=function(){return this._hex},t.prototype.toJSON=function(e){return{type:"BigNumber",hex:this.toHexString()}},t.from=function(e){if(e instanceof t)return e;if(typeof e=="string")return e.match(/^-?0x[0-9a-f]+$/i)?new t(Vv,Ju(e)):e.match(/^-?[0-9]+$/)?new t(Vv,Ju(new Du(e))):Oi.throwArgumentError("invalid BigNumber string","value",e);if(typeof e=="number")return e%1&&zt("underflow","BigNumber.from",e),(e>=B6||e<=-B6)&&zt("overflow","BigNumber.from",e),t.from(String(e));var r=e;if(typeof r=="bigint")return t.from(r.toString());if((0,Ps.isBytes)(r))return t.from((0,Ps.hexlify)(r));if(r)if(r.toHexString){var n=r.toHexString();if(typeof n=="string")return t.from(n)}else{var n=r._hex;if(n==null&&r.type==="BigNumber"&&(n=r.hex),typeof n=="string"&&((0,Ps.isHexString)(n)||n[0]==="-"&&(0,Ps.isHexString)(n.substring(1))))return t.from(n)}return Oi.throwArgumentError("invalid BigNumber value","value",e)},t.isBigNumber=function(e){return!!(e&&e._isBigNumber)},t}();Gt.BigNumber=ud;function Ju(t){if(typeof t!="string")return Ju(t.toString(16));if(t[0]==="-")return t=t.substring(1),t[0]==="-"&&Oi.throwArgumentError("invalid hex","value",t),t=Ju(t),t==="0x00"?t:"-"+t;if(t.substring(0,2)!=="0x"&&(t="0x"+t),t==="0x")return"0x00";for(t.length%2&&(t="0x0"+t.substring(2));t.length>4&&t.substring(0,4)==="0x00";)t="0x"+t.substring(4);return t}function _t(t){return ud.from(Ju(t))}function Ue(t){var e=ud.from(t).toHexString();return e[0]==="-"?new Du("-"+e.substring(3),16):new Du(e.substring(2),16)}function zt(t,e,r){var n={fault:t,operation:e};return r!=null&&(n.value=r),Oi.throwError(t,Ms.Logger.errors.NUMERIC_FAULT,n)}function HN(t){return new Du(t,36).toString(16)}Gt._base36To16=HN;function zN(t){return new Du(t,16).toString(36)}Gt._base16To36=zN});var D6=P(Qn=>{"use strict";Object.defineProperty(Qn,"__esModule",{value:!0});Qn.FixedNumber=Qn.FixedFormat=Qn.parseFixed=Qn.formatFixed=void 0;var fd=De(),Uu=re(),GN=Kv(),wt=new Uu.Logger(GN.version),Pi=ld(),qu={},R6=Pi.BigNumber.from(0),I6=Pi.BigNumber.from(-1);function N6(t,e,r,n){var i={fault:e,operation:r};return n!==void 0&&(i.value=n),wt.throwError(t,Uu.Logger.errors.NUMERIC_FAULT,i)}var ju="0";for(;ju.length<256;)ju+=ju;function Zv(t){if(typeof t!="number")try{t=Pi.BigNumber.from(t).toNumber()}catch{}return typeof t=="number"&&t>=0&&t<=256&&!(t%1)?"1"+ju.substring(0,t):wt.throwArgumentError("invalid decimal size","decimals",t)}function dd(t,e){e==null&&(e=0);var r=Zv(e);t=Pi.BigNumber.from(t);var n=t.lt(R6);n&&(t=t.mul(I6));for(var i=t.mod(r).toString();i.length2&&wt.throwArgumentError("too many decimal points","value",t);var a=i[0],o=i[1];for(a||(a="0"),o||(o="0");o[o.length-1]==="0";)o=o.substring(0,o.length-1);for(o.length>r.length-1&&N6("fractional component exceeds decimals","underflow","parseFixed"),o===""&&(o="0");o.length80&&wt.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",i),new t(qu,r,n,i)},t}();Qn.FixedFormat=pd;var Qv=function(){function t(e,r,n,i){e!==qu&&wt.throwError("cannot use FixedNumber constructor; use FixedNumber.from",Uu.Logger.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=i,this._hex=r,this._value=n,this._isFixedNumber=!0,Object.freeze(this)}return t.prototype._checkFormat=function(e){this.format.name!==e.format.name&&wt.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",e)},t.prototype.addUnsafe=function(e){this._checkFormat(e);var r=Zn(this._value,this.format.decimals),n=Zn(e._value,e.format.decimals);return t.fromValue(r.add(n),this.format.decimals,this.format)},t.prototype.subUnsafe=function(e){this._checkFormat(e);var r=Zn(this._value,this.format.decimals),n=Zn(e._value,e.format.decimals);return t.fromValue(r.sub(n),this.format.decimals,this.format)},t.prototype.mulUnsafe=function(e){this._checkFormat(e);var r=Zn(this._value,this.format.decimals),n=Zn(e._value,e.format.decimals);return t.fromValue(r.mul(n).div(this.format._multiplier),this.format.decimals,this.format)},t.prototype.divUnsafe=function(e){this._checkFormat(e);var r=Zn(this._value,this.format.decimals),n=Zn(e._value,e.format.decimals);return t.fromValue(r.mul(this.format._multiplier).div(n),this.format.decimals,this.format)},t.prototype.floor=function(){var e=this.toString().split(".");e.length===1&&e.push("0");var r=t.from(e[0],this.format),n=!e[1].match(/^(0*)$/);return this.isNegative()&&n&&(r=r.subUnsafe(L6.toFormat(r.format))),r},t.prototype.ceiling=function(){var e=this.toString().split(".");e.length===1&&e.push("0");var r=t.from(e[0],this.format),n=!e[1].match(/^(0*)$/);return!this.isNegative()&&n&&(r=r.addUnsafe(L6.toFormat(r.format))),r},t.prototype.round=function(e){e==null&&(e=0);var r=this.toString().split(".");if(r.length===1&&r.push("0"),(e<0||e>80||e%1)&&wt.throwArgumentError("invalid decimal count","decimals",e),r[1].length<=e)return this;var n=t.from("1"+ju.substring(0,e),this.format),i=XN.toFormat(this.format);return this.mulUnsafe(n).addUnsafe(i).floor().divUnsafe(n)},t.prototype.isZero=function(){return this._value==="0.0"||this._value==="0"},t.prototype.isNegative=function(){return this._value[0]==="-"},t.prototype.toString=function(){return this._value},t.prototype.toHexString=function(e){if(e==null)return this._hex;e%8&&wt.throwArgumentError("invalid byte width","width",e);var r=Pi.BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(e).toHexString();return(0,fd.hexZeroPad)(r,e/8)},t.prototype.toUnsafeFloat=function(){return parseFloat(this.toString())},t.prototype.toFormat=function(e){return t.fromString(this._value,e)},t.fromValue=function(e,r,n){return n==null&&r!=null&&!(0,Pi.isBigNumberish)(r)&&(n=r,r=null),r==null&&(r=0),n==null&&(n="fixed"),t.fromString(dd(e,r),pd.from(n))},t.fromString=function(e,r){r==null&&(r="fixed");var n=pd.from(r),i=Zn(e,n.decimals);!n.signed&&i.lt(R6)&&N6("unsigned value cannot be negative","overflow","value",e);var a=null;n.signed?a=i.toTwos(n.width).toHexString():(a=i.toHexString(),a=(0,fd.hexZeroPad)(a,n.width/8));var o=dd(i,n.decimals);return new t(qu,a,o,n)},t.fromBytes=function(e,r){r==null&&(r="fixed");var n=pd.from(r);if((0,fd.arrayify)(e).length>n.width/8)throw new Error("overflow");var i=Pi.BigNumber.from(e);n.signed&&(i=i.fromTwos(n.width));var a=i.toTwos((n.signed?0:1)+n.width).toHexString(),o=dd(i,n.decimals);return new t(qu,a,o,n)},t.from=function(e,r){if(typeof e=="string")return t.fromString(e,r);if((0,fd.isBytes)(e))return t.fromBytes(e,r);try{return t.fromValue(e,0,r)}catch(n){if(n.code!==Uu.Logger.errors.INVALID_ARGUMENT)throw n}return wt.throwArgumentError("invalid FixedNumber value","value",e)},t.isFixedNumber=function(e){return!!(e&&e._isFixedNumber)},t}();Qn.FixedNumber=Qv;var L6=Qv.from(1),XN=Qv.from("0.5")});var Tr=P(at=>{"use strict";Object.defineProperty(at,"__esModule",{value:!0});at._base36To16=at._base16To36=at.parseFixed=at.FixedNumber=at.FixedFormat=at.formatFixed=at.BigNumber=void 0;var KN=ld();Object.defineProperty(at,"BigNumber",{enumerable:!0,get:function(){return KN.BigNumber}});var hd=D6();Object.defineProperty(at,"formatFixed",{enumerable:!0,get:function(){return hd.formatFixed}});Object.defineProperty(at,"FixedFormat",{enumerable:!0,get:function(){return hd.FixedFormat}});Object.defineProperty(at,"FixedNumber",{enumerable:!0,get:function(){return hd.FixedNumber}});Object.defineProperty(at,"parseFixed",{enumerable:!0,get:function(){return hd.parseFixed}});var J6=ld();Object.defineProperty(at,"_base16To36",{enumerable:!0,get:function(){return J6._base16To36}});Object.defineProperty(at,"_base36To16",{enumerable:!0,get:function(){return J6._base36To16}})});var q6=P(vd=>{"use strict";Object.defineProperty(vd,"__esModule",{value:!0});vd.version=void 0;vd.version="properties/5.7.0"});var Ve=P(kr=>{"use strict";var VN=kr&&kr.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},ZN=kr&&kr.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]{"use strict";Object.defineProperty(gd,"__esModule",{value:!0});gd.version=void 0;gd.version="abi/5.7.0"});var _d=P(te=>{"use strict";var Ad=te&&te.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(te,"__esModule",{value:!0});te.ErrorFragment=te.FunctionFragment=te.ConstructorFragment=te.EventFragment=te.Fragment=te.ParamType=te.FormatTypes=void 0;var em=Tr(),aD=Ve(),Ed=re(),oD=Bs(),He=new Ed.Logger(oD.version),go={},H6={calldata:!0,memory:!0,storage:!0},sD={calldata:!0,memory:!0};function xd(t,e){if(t==="bytes"||t==="string"){if(H6[e])return!0}else if(t==="address"){if(e==="payable")return!0}else if((t.indexOf("[")>=0||t==="tuple")&&sD[e])return!0;return(H6[e]||e==="payable")&&He.throwArgumentError("invalid modifier","name",e),!1}function cD(t,e){var r=t;function n(m){He.throwArgumentError("unexpected character at position "+m,"param",t)}t=t.replace(/\s/g," ");function i(m){var w={type:"",name:"",parent:m,state:{allowType:!0}};return e&&(w.indexed=!1),w}for(var a={type:"",name:"",state:{allowType:!0}},o=a,c=0;c2&&He.throwArgumentError("invalid human-readable ABI signature","value",t),r[1].match(/^[0-9]+$/)||He.throwArgumentError("invalid human-readable ABI signature gas","value",t),e.gas=em.BigNumber.from(r[1]),r[0]):t}function X6(t,e){e.constant=!1,e.payable=!1,e.stateMutability="nonpayable",t.split(" ").forEach(function(r){switch(r.trim()){case"constant":e.constant=!0;break;case"payable":e.payable=!0,e.stateMutability="payable";break;case"nonpayable":e.payable=!1,e.stateMutability="nonpayable";break;case"pure":e.constant=!0,e.stateMutability="pure";break;case"view":e.constant=!0,e.stateMutability="view";break;case"external":case"public":case"":break;default:console.log("unknown modifier: "+r)}})}function K6(t){var e={constant:!1,payable:!0,stateMutability:"payable"};return t.stateMutability!=null?(e.stateMutability=t.stateMutability,e.constant=e.stateMutability==="view"||e.stateMutability==="pure",t.constant!=null&&!!t.constant!==e.constant&&He.throwArgumentError("cannot have constant function with mutability "+e.stateMutability,"value",t),e.payable=e.stateMutability==="payable",t.payable!=null&&!!t.payable!==e.payable&&He.throwArgumentError("cannot have payable function with mutability "+e.stateMutability,"value",t)):t.payable!=null?(e.payable=!!t.payable,t.constant==null&&!e.payable&&t.type!=="constructor"&&He.throwArgumentError("unable to determine stateMutability","value",t),e.constant=!!t.constant,e.constant?e.stateMutability="view":e.stateMutability=e.payable?"payable":"nonpayable",e.payable&&e.constant&&He.throwArgumentError("cannot have constant payable function","value",t)):t.constant!=null?(e.constant=!!t.constant,e.payable=!e.constant,e.stateMutability=e.constant?"view":"payable"):t.type!=="constructor"&&He.throwArgumentError("unable to determine stateMutability","value",t),e}var wd=function(t){Ad(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.format=function(r){if(r||(r=te.FormatTypes.sighash),te.FormatTypes[r]||He.throwArgumentError("invalid format type","format",r),r===te.FormatTypes.json)return JSON.stringify({type:"constructor",stateMutability:this.stateMutability!=="nonpayable"?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(function(i){return JSON.parse(i.format(r))})});r===te.FormatTypes.sighash&&He.throwError("cannot format a constructor for sighash",Ed.Logger.errors.UNSUPPORTED_OPERATION,{operation:"format(sighash)"});var n="constructor("+this.inputs.map(function(i){return i.format(r)}).join(r===te.FormatTypes.full?", ":",")+") ";return this.stateMutability&&this.stateMutability!=="nonpayable"&&(n+=this.stateMutability+" "),n.trim()},e.from=function(r){return typeof r=="string"?e.fromString(r):e.fromObject(r)},e.fromObject=function(r){if(e.isConstructorFragment(r))return r;r.type!=="constructor"&&He.throwArgumentError("invalid constructor object","value",r);var n=K6(r);n.constant&&He.throwArgumentError("constructor cannot be constant","value",r);var i={name:null,type:r.type,inputs:r.inputs?r.inputs.map(xo.fromObject):[],payable:n.payable,stateMutability:n.stateMutability,gas:r.gas?em.BigNumber.from(r.gas):null};return new e(go,i)},e.fromString=function(r){var n={type:"constructor"};r=G6(r,n);var i=r.match(Gu);return(!i||i[1].trim()!=="constructor")&&He.throwArgumentError("invalid constructor string","value",r),n.inputs=Hu(i[2].trim(),!1),X6(i[3].trim(),n),e.fromObject(n)},e.isConstructorFragment=function(r){return r&&r._isFragment&&r.type==="constructor"},e}(Sd);te.ConstructorFragment=wd;var Yv=function(t){Ad(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.format=function(r){if(r||(r=te.FormatTypes.sighash),te.FormatTypes[r]||He.throwArgumentError("invalid format type","format",r),r===te.FormatTypes.json)return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:this.stateMutability!=="nonpayable"?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(function(i){return JSON.parse(i.format(r))}),outputs:this.outputs.map(function(i){return JSON.parse(i.format(r))})});var n="";return r!==te.FormatTypes.sighash&&(n+="function "),n+=this.name+"("+this.inputs.map(function(i){return i.format(r)}).join(r===te.FormatTypes.full?", ":",")+") ",r!==te.FormatTypes.sighash&&(this.stateMutability?this.stateMutability!=="nonpayable"&&(n+=this.stateMutability+" "):this.constant&&(n+="view "),this.outputs&&this.outputs.length&&(n+="returns ("+this.outputs.map(function(i){return i.format(r)}).join(", ")+") "),this.gas!=null&&(n+="@"+this.gas.toString()+" ")),n.trim()},e.from=function(r){return typeof r=="string"?e.fromString(r):e.fromObject(r)},e.fromObject=function(r){if(e.isFunctionFragment(r))return r;r.type!=="function"&&He.throwArgumentError("invalid function object","value",r);var n=K6(r),i={type:r.type,name:zu(r.name),constant:n.constant,inputs:r.inputs?r.inputs.map(xo.fromObject):[],outputs:r.outputs?r.outputs.map(xo.fromObject):[],payable:n.payable,stateMutability:n.stateMutability,gas:r.gas?em.BigNumber.from(r.gas):null};return new e(go,i)},e.fromString=function(r){var n={type:"function"};r=G6(r,n);var i=r.split(" returns ");i.length>2&&He.throwArgumentError("invalid function string","value",r);var a=i[0].match(Gu);if(a||He.throwArgumentError("invalid function signature","value",r),n.name=a[1].trim(),n.name&&zu(n.name),n.inputs=Hu(a[2],!1),X6(a[3].trim(),n),i.length>1){var o=i[1].match(Gu);(o[1].trim()!=""||o[3].trim()!="")&&He.throwArgumentError("unexpected tokens","value",r),n.outputs=Hu(o[2],!1)}else n.outputs=[];return e.fromObject(n)},e.isFunctionFragment=function(r){return r&&r._isFragment&&r.type==="function"},e}(wd);te.FunctionFragment=Yv;function z6(t){var e=t.format();return(e==="Error(string)"||e==="Panic(uint256)")&&He.throwArgumentError("cannot specify user defined "+e+" error","fragment",t),t}var $v=function(t){Ad(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.format=function(r){if(r||(r=te.FormatTypes.sighash),te.FormatTypes[r]||He.throwArgumentError("invalid format type","format",r),r===te.FormatTypes.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map(function(i){return JSON.parse(i.format(r))})});var n="";return r!==te.FormatTypes.sighash&&(n+="error "),n+=this.name+"("+this.inputs.map(function(i){return i.format(r)}).join(r===te.FormatTypes.full?", ":",")+") ",n.trim()},e.from=function(r){return typeof r=="string"?e.fromString(r):e.fromObject(r)},e.fromObject=function(r){if(e.isErrorFragment(r))return r;r.type!=="error"&&He.throwArgumentError("invalid error object","value",r);var n={type:r.type,name:zu(r.name),inputs:r.inputs?r.inputs.map(xo.fromObject):[]};return z6(new e(go,n))},e.fromString=function(r){var n={type:"error"},i=r.match(Gu);return i||He.throwArgumentError("invalid error signature","value",r),n.name=i[1].trim(),n.name&&zu(n.name),n.inputs=Hu(i[2],!1),z6(e.fromObject(n))},e.isErrorFragment=function(r){return r&&r._isFragment&&r.type==="error"},e}(Sd);te.ErrorFragment=$v;function Fs(t){return t.match(/^uint($|[^1-9])/)?t="uint256"+t.substring(4):t.match(/^int($|[^1-9])/)&&(t="int256"+t.substring(3)),t}var lD=new RegExp("^[a-zA-Z$_][a-zA-Z0-9$_]*$");function zu(t){return(!t||!t.match(lD))&&He.throwArgumentError('invalid identifier "'+t+'"',"value",t),t}var Gu=new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$");function fD(t){t=t.trim();for(var e=[],r="",n=0,i=0;i{"use strict";Object.defineProperty(Wn,"__esModule",{value:!0});Wn.Reader=Wn.Writer=Wn.Coder=Wn.checkResultErrors=void 0;var oa=De(),V6=Tr(),Xu=Ve(),rm=re(),dD=Bs(),tm=new rm.Logger(dD.version);function pD(t){var e=[],r=function(n,i){if(!!Array.isArray(i))for(var a in i){var o=n.slice();o.push(a);try{r(o,i[a])}catch(c){e.push({path:o,error:c})}}};return r([],t),e}Wn.checkResultErrors=pD;var hD=function(){function t(e,r,n,i){this.name=e,this.type=r,this.localName=n,this.dynamic=i}return t.prototype._throwError=function(e,r){tm.throwArgumentError(e,this.localName,r)},t}();Wn.Coder=hD;var vD=function(){function t(e){(0,Xu.defineReadOnly)(this,"wordSize",e||32),this._data=[],this._dataLength=0,this._padding=new Uint8Array(e)}return Object.defineProperty(t.prototype,"data",{get:function(){return(0,oa.hexConcat)(this._data)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"length",{get:function(){return this._dataLength},enumerable:!1,configurable:!0}),t.prototype._writeData=function(e){return this._data.push(e),this._dataLength+=e.length,e.length},t.prototype.appendWriter=function(e){return this._writeData((0,oa.concat)(e._data))},t.prototype.writeBytes=function(e){var r=(0,oa.arrayify)(e),n=r.length%this.wordSize;return n&&(r=(0,oa.concat)([r,this._padding.slice(n)])),this._writeData(r)},t.prototype._getValue=function(e){var r=(0,oa.arrayify)(V6.BigNumber.from(e));return r.length>this.wordSize&&tm.throwError("value out-of-bounds",rm.Logger.errors.BUFFER_OVERRUN,{length:this.wordSize,offset:r.length}),r.length%this.wordSize&&(r=(0,oa.concat)([this._padding.slice(r.length%this.wordSize),r])),r},t.prototype.writeValue=function(e){return this._writeData(this._getValue(e))},t.prototype.writeUpdatableValue=function(){var e=this,r=this._data.length;return this._data.push(this._padding),this._dataLength+=this.wordSize,function(n){e._data[r]=e._getValue(n)}},t}();Wn.Writer=vD;var mD=function(){function t(e,r,n,i){(0,Xu.defineReadOnly)(this,"_data",(0,oa.arrayify)(e)),(0,Xu.defineReadOnly)(this,"wordSize",r||32),(0,Xu.defineReadOnly)(this,"_coerceFunc",n),(0,Xu.defineReadOnly)(this,"allowLoose",i),this._offset=0}return Object.defineProperty(t.prototype,"data",{get:function(){return(0,oa.hexlify)(this._data)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"consumed",{get:function(){return this._offset},enumerable:!1,configurable:!0}),t.coerce=function(e,r){var n=e.match("^u?int([0-9]+)$");return n&&parseInt(n[1])<=48&&(r=r.toNumber()),r},t.prototype.coerce=function(e,r){return this._coerceFunc?this._coerceFunc(e,r):t.coerce(e,r)},t.prototype._peekBytes=function(e,r,n){var i=Math.ceil(r/this.wordSize)*this.wordSize;return this._offset+i>this._data.length&&(this.allowLoose&&n&&this._offset+r<=this._data.length?i=r:tm.throwError("data out-of-bounds",rm.Logger.errors.BUFFER_OVERRUN,{length:this._data.length,offset:this._offset+i})),this._data.slice(this._offset,this._offset+i)},t.prototype.subReader=function(e){return new t(this._data.slice(this._offset+e),this.wordSize,this._coerceFunc,this.allowLoose)},t.prototype.readBytes=function(e,r){var n=this._peekBytes(0,e,!!r);return this._offset+=n.length,n.slice(0,e)},t.prototype.readValue=function(){return V6.BigNumber.from(this.readBytes(this.wordSize))},t}();Wn.Reader=mD});var Z6=P((q$,Td)=>{(function(){"use strict";var t="input is invalid type",e="finalize already called",r=typeof window=="object",n=r?window:{};n.JS_SHA3_NO_WINDOW&&(r=!1);var i=!r&&typeof self=="object",a=!n.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;a?n=global:i&&(n=self);var o=!n.JS_SHA3_NO_COMMON_JS&&typeof Td=="object"&&Td.exports,c=typeof define=="function"&&define.amd,u=!n.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",s="0123456789abcdef".split(""),f=[31,7936,2031616,520093696],m=[4,1024,262144,67108864],w=[1,256,65536,16777216],T=[6,1536,393216,100663296],A=[0,8,16,24],O=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],B=[224,256,384,512],F=[128,256],I=["hex","buffer","arrayBuffer","array","digest"],D={128:168,256:136};(n.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(_){return Object.prototype.toString.call(_)==="[object Array]"}),u&&(n.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(_){return typeof _=="object"&&_.buffer&&_.buffer.constructor===ArrayBuffer});for(var z=function(_,L,N){return function(q){return new h(_,L,_).update(q)[N]()}},G=function(_,L,N){return function(q,H){return new h(_,L,H).update(q)[N]()}},j=function(_,L,N){return function(q,H,W,V){return l["cshake"+_].update(q,H,W,V)[N]()}},Z=function(_,L,N){return function(q,H,W,V){return l["kmac"+_].update(q,H,W,V)[N]()}},X=function(_,L,N,q){for(var H=0;H>5,this.byteCount=this.blockCount<<2,this.outputBlocks=N>>5,this.extraBytes=(N&31)>>3;for(var q=0;q<50;++q)this.s[q]=0}h.prototype.update=function(_){if(this.finalized)throw new Error(e);var L,N=typeof _;if(N!=="string"){if(N==="object"){if(_===null)throw new Error(t);if(u&&_.constructor===ArrayBuffer)_=new Uint8Array(_);else if(!Array.isArray(_)&&(!u||!ArrayBuffer.isView(_)))throw new Error(t)}else throw new Error(t);L=!0}for(var q=this.blocks,H=this.byteCount,W=_.length,V=this.blockCount,K=0,ur=this.s,Q,Y;K>2]|=_[K]<>2]|=Y<>2]|=(192|Y>>6)<>2]|=(128|Y&63)<=57344?(q[Q>>2]|=(224|Y>>12)<>2]|=(128|Y>>6&63)<>2]|=(128|Y&63)<>2]|=(240|Y>>18)<>2]|=(128|Y>>12&63)<>2]|=(128|Y>>6&63)<>2]|=(128|Y&63)<=H){for(this.start=Q-H,this.block=q[V],Q=0;Q>8,N=_&255;N>0;)H.unshift(N),_=_>>8,N=_&255,++q;return L?H.push(q):H.unshift(q),this.update(H),H.length},h.prototype.encodeString=function(_){var L,N=typeof _;if(N!=="string"){if(N==="object"){if(_===null)throw new Error(t);if(u&&_.constructor===ArrayBuffer)_=new Uint8Array(_);else if(!Array.isArray(_)&&(!u||!ArrayBuffer.isView(_)))throw new Error(t)}else throw new Error(t);L=!0}var q=0,H=_.length;if(L)q=H;else for(var W=0;W<_.length;++W){var V=_.charCodeAt(W);V<128?q+=1:V<2048?q+=2:V<55296||V>=57344?q+=3:(V=65536+((V&1023)<<10|_.charCodeAt(++W)&1023),q+=4)}return q+=this.encode(q*8),this.update(_),q},h.prototype.bytepad=function(_,L){for(var N=this.encode(L),q=0;q<_.length;++q)N+=this.encodeString(_[q]);var H=L-N%L,W=[];return W.length=H,this.update(W),this},h.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var _=this.blocks,L=this.lastByteIndex,N=this.blockCount,q=this.s;if(_[L>>2]|=this.padding[L&3],this.lastByteIndex===this.byteCount)for(_[0]=_[N],L=1;L>4&15]+s[K&15]+s[K>>12&15]+s[K>>8&15]+s[K>>20&15]+s[K>>16&15]+s[K>>28&15]+s[K>>24&15];W%_===0&&(J(L),H=0)}return q&&(K=L[H],V+=s[K>>4&15]+s[K&15],q>1&&(V+=s[K>>12&15]+s[K>>8&15]),q>2&&(V+=s[K>>20&15]+s[K>>16&15])),V},h.prototype.arrayBuffer=function(){this.finalize();var _=this.blockCount,L=this.s,N=this.outputBlocks,q=this.extraBytes,H=0,W=0,V=this.outputBits>>3,K;q?K=new ArrayBuffer(N+1<<2):K=new ArrayBuffer(V);for(var ur=new Uint32Array(K);W>8&255,V[K+2]=ur>>16&255,V[K+3]=ur>>24&255;W%_===0&&J(L)}return q&&(K=W<<2,ur=L[H],V[K]=ur&255,q>1&&(V[K+1]=ur>>8&255),q>2&&(V[K+2]=ur>>16&255)),V};function k(_,L,N){h.call(this,_,L,N)}k.prototype=new h,k.prototype.finalize=function(){return this.encode(this.outputBits,!0),h.prototype.finalize.call(this)};var J=function(_){var L,N,q,H,W,V,K,ur,Q,Y,_n,ne,ie,Tn,ae,oe,kn,se,ce,Cn,ue,le,On,fe,de,Pn,pe,he,Mn,ve,me,Bn,be,ge,Fn,xe,ye,Ln,we,Ae,Rn,Ee,Se,In,_e,Te,Nn,ke,Ce,Dn,Oe,Pe,Jn,Me,Be,ln,tr,nr,It,Nt,Dt,Jt,qt;for(q=0;q<48;q+=2)H=_[0]^_[10]^_[20]^_[30]^_[40],W=_[1]^_[11]^_[21]^_[31]^_[41],V=_[2]^_[12]^_[22]^_[32]^_[42],K=_[3]^_[13]^_[23]^_[33]^_[43],ur=_[4]^_[14]^_[24]^_[34]^_[44],Q=_[5]^_[15]^_[25]^_[35]^_[45],Y=_[6]^_[16]^_[26]^_[36]^_[46],_n=_[7]^_[17]^_[27]^_[37]^_[47],ne=_[8]^_[18]^_[28]^_[38]^_[48],ie=_[9]^_[19]^_[29]^_[39]^_[49],L=ne^(V<<1|K>>>31),N=ie^(K<<1|V>>>31),_[0]^=L,_[1]^=N,_[10]^=L,_[11]^=N,_[20]^=L,_[21]^=N,_[30]^=L,_[31]^=N,_[40]^=L,_[41]^=N,L=H^(ur<<1|Q>>>31),N=W^(Q<<1|ur>>>31),_[2]^=L,_[3]^=N,_[12]^=L,_[13]^=N,_[22]^=L,_[23]^=N,_[32]^=L,_[33]^=N,_[42]^=L,_[43]^=N,L=V^(Y<<1|_n>>>31),N=K^(_n<<1|Y>>>31),_[4]^=L,_[5]^=N,_[14]^=L,_[15]^=N,_[24]^=L,_[25]^=N,_[34]^=L,_[35]^=N,_[44]^=L,_[45]^=N,L=ur^(ne<<1|ie>>>31),N=Q^(ie<<1|ne>>>31),_[6]^=L,_[7]^=N,_[16]^=L,_[17]^=N,_[26]^=L,_[27]^=N,_[36]^=L,_[37]^=N,_[46]^=L,_[47]^=N,L=Y^(H<<1|W>>>31),N=_n^(W<<1|H>>>31),_[8]^=L,_[9]^=N,_[18]^=L,_[19]^=N,_[28]^=L,_[29]^=N,_[38]^=L,_[39]^=N,_[48]^=L,_[49]^=N,Tn=_[0],ae=_[1],Te=_[11]<<4|_[10]>>>28,Nn=_[10]<<4|_[11]>>>28,he=_[20]<<3|_[21]>>>29,Mn=_[21]<<3|_[20]>>>29,Nt=_[31]<<9|_[30]>>>23,Dt=_[30]<<9|_[31]>>>23,Ee=_[40]<<18|_[41]>>>14,Se=_[41]<<18|_[40]>>>14,ge=_[2]<<1|_[3]>>>31,Fn=_[3]<<1|_[2]>>>31,oe=_[13]<<12|_[12]>>>20,kn=_[12]<<12|_[13]>>>20,ke=_[22]<<10|_[23]>>>22,Ce=_[23]<<10|_[22]>>>22,ve=_[33]<<13|_[32]>>>19,me=_[32]<<13|_[33]>>>19,Jt=_[42]<<2|_[43]>>>30,qt=_[43]<<2|_[42]>>>30,Me=_[5]<<30|_[4]>>>2,Be=_[4]<<30|_[5]>>>2,xe=_[14]<<6|_[15]>>>26,ye=_[15]<<6|_[14]>>>26,se=_[25]<<11|_[24]>>>21,ce=_[24]<<11|_[25]>>>21,Dn=_[34]<<15|_[35]>>>17,Oe=_[35]<<15|_[34]>>>17,Bn=_[45]<<29|_[44]>>>3,be=_[44]<<29|_[45]>>>3,fe=_[6]<<28|_[7]>>>4,de=_[7]<<28|_[6]>>>4,ln=_[17]<<23|_[16]>>>9,tr=_[16]<<23|_[17]>>>9,Ln=_[26]<<25|_[27]>>>7,we=_[27]<<25|_[26]>>>7,Cn=_[36]<<21|_[37]>>>11,ue=_[37]<<21|_[36]>>>11,Pe=_[47]<<24|_[46]>>>8,Jn=_[46]<<24|_[47]>>>8,In=_[8]<<27|_[9]>>>5,_e=_[9]<<27|_[8]>>>5,Pn=_[18]<<20|_[19]>>>12,pe=_[19]<<20|_[18]>>>12,nr=_[29]<<7|_[28]>>>25,It=_[28]<<7|_[29]>>>25,Ae=_[38]<<8|_[39]>>>24,Rn=_[39]<<8|_[38]>>>24,le=_[48]<<14|_[49]>>>18,On=_[49]<<14|_[48]>>>18,_[0]=Tn^~oe&se,_[1]=ae^~kn&ce,_[10]=fe^~Pn&he,_[11]=de^~pe&Mn,_[20]=ge^~xe&Ln,_[21]=Fn^~ye&we,_[30]=In^~Te&ke,_[31]=_e^~Nn&Ce,_[40]=Me^~ln&nr,_[41]=Be^~tr&It,_[2]=oe^~se&Cn,_[3]=kn^~ce&ue,_[12]=Pn^~he&ve,_[13]=pe^~Mn&me,_[22]=xe^~Ln&Ae,_[23]=ye^~we&Rn,_[32]=Te^~ke&Dn,_[33]=Nn^~Ce&Oe,_[42]=ln^~nr&Nt,_[43]=tr^~It&Dt,_[4]=se^~Cn&le,_[5]=ce^~ue&On,_[14]=he^~ve&Bn,_[15]=Mn^~me&be,_[24]=Ln^~Ae&Ee,_[25]=we^~Rn&Se,_[34]=ke^~Dn&Pe,_[35]=Ce^~Oe&Jn,_[44]=nr^~Nt&Jt,_[45]=It^~Dt&qt,_[6]=Cn^~le&Tn,_[7]=ue^~On&ae,_[16]=ve^~Bn&fe,_[17]=me^~be&de,_[26]=Ae^~Ee&ge,_[27]=Rn^~Se&Fn,_[36]=Dn^~Pe&In,_[37]=Oe^~Jn&_e,_[46]=Nt^~Jt&Me,_[47]=Dt^~qt&Be,_[8]=le^~Tn&oe,_[9]=On^~ae&kn,_[18]=Bn^~fe&Pn,_[19]=be^~de&pe,_[28]=Ee^~ge&xe,_[29]=Se^~Fn&ye,_[38]=Pe^~In&Te,_[39]=Jn^~_e&Nn,_[48]=Jt^~Me&ln,_[49]=qt^~Be&tr,_[0]^=O[q],_[1]^=O[q+1]};if(o)Td.exports=l;else{for(g=0;g{"use strict";var bD=Ls&&Ls.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Ls,"__esModule",{value:!0});Ls.keccak256=void 0;var gD=bD(Z6()),xD=De();function yD(t){return"0x"+gD.default.keccak_256((0,xD.arrayify)(t))}Ls.keccak256=yD});var Q6=P(kd=>{"use strict";Object.defineProperty(kd,"__esModule",{value:!0});kd.version=void 0;kd.version="rlp/5.7.0"});var Cd=P(Rs=>{"use strict";Object.defineProperty(Rs,"__esModule",{value:!0});Rs.decode=Rs.encode=void 0;var yo=De(),Mi=re(),wD=Q6(),Yn=new Mi.Logger(wD.version);function W6(t){for(var e=[];t;)e.unshift(t&255),t>>=8;return e}function Y6(t,e,r){for(var n=0,i=0;ie+1+n&&Yn.throwError("child data too short",Mi.Logger.errors.BUFFER_OVERRUN,{})}return{consumed:1+n,result:i}}function r5(t,e){if(t.length===0&&Yn.throwError("data too short",Mi.Logger.errors.BUFFER_OVERRUN,{}),t[e]>=248){var r=t[e]-247;e+1+r>t.length&&Yn.throwError("data short segment too short",Mi.Logger.errors.BUFFER_OVERRUN,{});var n=Y6(t,e+1,r);return e+1+r+n>t.length&&Yn.throwError("data long segment too short",Mi.Logger.errors.BUFFER_OVERRUN,{}),$6(t,e,e+1+r,r+n)}else if(t[e]>=192){var i=t[e]-192;return e+1+i>t.length&&Yn.throwError("data array too short",Mi.Logger.errors.BUFFER_OVERRUN,{}),$6(t,e,e+1,i)}else if(t[e]>=184){var r=t[e]-183;e+1+r>t.length&&Yn.throwError("data array too short",Mi.Logger.errors.BUFFER_OVERRUN,{});var a=Y6(t,e+1,r);e+1+r+a>t.length&&Yn.throwError("data array too short",Mi.Logger.errors.BUFFER_OVERRUN,{});var o=(0,yo.hexlify)(t.slice(e+1+r,e+1+r+a));return{consumed:1+r+a,result:o}}else if(t[e]>=128){var c=t[e]-128;e+1+c>t.length&&Yn.throwError("data too short",Mi.Logger.errors.BUFFER_OVERRUN,{});var o=(0,yo.hexlify)(t.slice(e+1,e+1+c));return{consumed:1+c,result:o}}return{consumed:1,result:(0,yo.hexlify)(t[e])}}function ED(t){var e=(0,yo.arrayify)(t),r=r5(e,0);return r.consumed!==e.length&&Yn.throwArgumentError("invalid rlp data","data",t),r.result}Rs.decode=ED});var t5=P(Od=>{"use strict";Object.defineProperty(Od,"__esModule",{value:!0});Od.version=void 0;Od.version="address/5.7.0"});var Vt=P(Kt=>{"use strict";Object.defineProperty(Kt,"__esModule",{value:!0});Kt.getCreate2Address=Kt.getContractAddress=Kt.getIcapAddress=Kt.isAddress=Kt.getAddress=void 0;var Bi=De(),nm=Tr(),im=Bt(),SD=Cd(),_D=re(),TD=t5(),sa=new _D.Logger(TD.version);function n5(t){(0,Bi.isHexString)(t,20)||sa.throwArgumentError("invalid address","address",t),t=t.toLowerCase();for(var e=t.substring(2).split(""),r=new Uint8Array(40),n=0;n<40;n++)r[n]=e[n].charCodeAt(0);for(var i=(0,Bi.arrayify)((0,im.keccak256)(r)),n=0;n<40;n+=2)i[n>>1]>>4>=8&&(e[n]=e[n].toUpperCase()),(i[n>>1]&15)>=8&&(e[n+1]=e[n+1].toUpperCase());return"0x"+e.join("")}var kD=9007199254740991;function CD(t){return Math.log10?Math.log10(t):Math.log(t)/Math.LN10}var am={};for(mn=0;mn<10;mn++)am[String(mn)]=String(mn);var mn;for(mn=0;mn<26;mn++)am[String.fromCharCode(65+mn)]=String(10+mn);var mn,i5=Math.floor(CD(kD));function a5(t){t=t.toUpperCase(),t=t.substring(4)+t.substring(0,2)+"00";for(var e=t.split("").map(function(i){return am[i]}).join("");e.length>=i5;){var r=e.substring(0,i5);e=parseInt(r,10)%97+e.substring(r.length)}for(var n=String(98-parseInt(e,10)%97);n.length<2;)n="0"+n;return n}function wo(t){var e=null;if(typeof t!="string"&&sa.throwArgumentError("invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/))t.substring(0,2)!=="0x"&&(t="0x"+t),e=n5(t),t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&sa.throwArgumentError("bad address checksum","address",t);else if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(t.substring(2,4)!==a5(t)&&sa.throwArgumentError("bad icap checksum","address",t),e=(0,nm._base36To16)(t.substring(4));e.length<40;)e="0"+e;e=n5("0x"+e)}else sa.throwArgumentError("invalid address","address",t);return e}Kt.getAddress=wo;function OD(t){try{return wo(t),!0}catch{}return!1}Kt.isAddress=OD;function PD(t){for(var e=(0,nm._base16To36)(wo(t).substring(2)).toUpperCase();e.length<30;)e="0"+e;return"XE"+a5("XE00"+e)+e}Kt.getIcapAddress=PD;function MD(t){var e=null;try{e=wo(t.from)}catch{sa.throwArgumentError("missing from address","transaction",t)}var r=(0,Bi.stripZeros)((0,Bi.arrayify)(nm.BigNumber.from(t.nonce).toHexString()));return wo((0,Bi.hexDataSlice)((0,im.keccak256)((0,SD.encode)([e,r])),12))}Kt.getContractAddress=MD;function BD(t,e,r){return(0,Bi.hexDataLength)(e)!==32&&sa.throwArgumentError("salt must be 32 bytes","salt",e),(0,Bi.hexDataLength)(r)!==32&&sa.throwArgumentError("initCodeHash must be 32 bytes","initCodeHash",r),wo((0,Bi.hexDataSlice)((0,im.keccak256)((0,Bi.concat)(["0xff",wo(t),e,r])),12))}Kt.getCreate2Address=BD});var s5=P(Is=>{"use strict";var FD=Is&&Is.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Is,"__esModule",{value:!0});Is.AddressCoder=void 0;var o5=Vt(),LD=De(),RD=Xt(),ID=function(t){FD(e,t);function e(r){return t.call(this,"address","address",r,!1)||this}return e.prototype.defaultValue=function(){return"0x0000000000000000000000000000000000000000"},e.prototype.encode=function(r,n){try{n=(0,o5.getAddress)(n)}catch(i){this._throwError(i.message,n)}return r.writeValue(n)},e.prototype.decode=function(r){return(0,o5.getAddress)((0,LD.hexZeroPad)(r.readValue().toHexString(),20))},e}(RD.Coder);Is.AddressCoder=ID});var c5=P(Ns=>{"use strict";var ND=Ns&&Ns.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Ns,"__esModule",{value:!0});Ns.AnonymousCoder=void 0;var DD=Xt(),JD=function(t){ND(e,t);function e(r){var n=t.call(this,r.name,r.type,void 0,r.dynamic)||this;return n.coder=r,n}return e.prototype.defaultValue=function(){return this.coder.defaultValue()},e.prototype.encode=function(r,n){return this.coder.encode(r,n)},e.prototype.decode=function(r){return this.coder.decode(r)},e}(DD.Coder);Ns.AnonymousCoder=JD});var sm=P($n=>{"use strict";var qD=$n&&$n.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty($n,"__esModule",{value:!0});$n.ArrayCoder=$n.unpack=$n.pack=void 0;var Js=re(),jD=Bs(),Ds=new Js.Logger(jD.version),om=Xt(),UD=c5();function u5(t,e,r){var n=null;if(Array.isArray(r))n=r;else if(r&&typeof r=="object"){var i={};n=e.map(function(s){var f=s.localName;return f||Ds.throwError("cannot encode object for signature with missing names",Js.Logger.errors.INVALID_ARGUMENT,{argument:"values",coder:s,value:r}),i[f]&&Ds.throwError("cannot encode object for signature with duplicate names",Js.Logger.errors.INVALID_ARGUMENT,{argument:"values",coder:s,value:r}),i[f]=!0,r[f]})}else Ds.throwArgumentError("invalid tuple value","tuple",r);e.length!==n.length&&Ds.throwArgumentError("types/value length mismatch","tuple",r);var a=new om.Writer(t.wordSize),o=new om.Writer(t.wordSize),c=[];e.forEach(function(s,f){var m=n[f];if(s.dynamic){var w=o.length;s.encode(o,m);var T=a.writeUpdatableValue();c.push(function(A){T(A+w)})}else s.encode(a,m)}),c.forEach(function(s){s(a.length)});var u=t.appendWriter(a);return u+=t.appendWriter(o),u}$n.pack=u5;function l5(t,e){var r=[],n=t.subReader(0);e.forEach(function(c){var u=null;if(c.dynamic){var s=t.readValue(),f=n.subReader(s.toNumber());try{u=c.decode(f)}catch(m){if(m.code===Js.Logger.errors.BUFFER_OVERRUN)throw m;u=m,u.baseType=c.name,u.name=c.localName,u.type=c.type}}else try{u=c.decode(t)}catch(m){if(m.code===Js.Logger.errors.BUFFER_OVERRUN)throw m;u=m,u.baseType=c.name,u.name=c.localName,u.type=c.type}u!=null&&r.push(u)});var i=e.reduce(function(c,u){var s=u.localName;return s&&(c[s]||(c[s]=0),c[s]++),c},{});e.forEach(function(c,u){var s=c.localName;if(!(!s||i[s]!==1)&&(s==="length"&&(s="_length"),r[s]==null)){var f=r[u];f instanceof Error?Object.defineProperty(r,s,{enumerable:!0,get:function(){throw f}}):r[s]=f}});for(var a=function(c){var u=r[c];u instanceof Error&&Object.defineProperty(r,c,{enumerable:!0,get:function(){throw u}})},o=0;o=0?n:"")+"]",c=n===-1||r.dynamic;return a=t.call(this,"array",o,i,c)||this,a.coder=r,a.length=n,a}return e.prototype.defaultValue=function(){for(var r=this.coder.defaultValue(),n=[],i=0;ir._data.length&&Ds.throwError("insufficient data length",Js.Logger.errors.BUFFER_OVERRUN,{length:r._data.length,count:n}));for(var i=[],a=0;a{"use strict";var zD=qs&&qs.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(qs,"__esModule",{value:!0});qs.BooleanCoder=void 0;var GD=Xt(),XD=function(t){zD(e,t);function e(r){return t.call(this,"bool","bool",r,!1)||this}return e.prototype.defaultValue=function(){return!1},e.prototype.encode=function(r,n){return r.writeValue(n?1:0)},e.prototype.decode=function(r){return r.coerce(this.type,!r.readValue().isZero())},e}(GD.Coder);qs.BooleanCoder=XD});var cm=P(ca=>{"use strict";var d5=ca&&ca.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(ca,"__esModule",{value:!0});ca.BytesCoder=ca.DynamicBytesCoder=void 0;var p5=De(),KD=Xt(),h5=function(t){d5(e,t);function e(r,n){return t.call(this,r,r,n,!0)||this}return e.prototype.defaultValue=function(){return"0x"},e.prototype.encode=function(r,n){n=(0,p5.arrayify)(n);var i=r.writeValue(n.length);return i+=r.writeBytes(n),i},e.prototype.decode=function(r){return r.readBytes(r.readValue().toNumber(),!0)},e}(KD.Coder);ca.DynamicBytesCoder=h5;var VD=function(t){d5(e,t);function e(r){return t.call(this,"bytes",r)||this}return e.prototype.decode=function(r){return r.coerce(this.name,(0,p5.hexlify)(t.prototype.decode.call(this,r)))},e}(h5);ca.BytesCoder=VD});var m5=P(js=>{"use strict";var ZD=js&&js.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(js,"__esModule",{value:!0});js.FixedBytesCoder=void 0;var v5=De(),QD=Xt(),WD=function(t){ZD(e,t);function e(r,n){var i=this,a="bytes"+String(r);return i=t.call(this,a,a,n,!1)||this,i.size=r,i}return e.prototype.defaultValue=function(){return"0x0000000000000000000000000000000000000000000000000000000000000000".substring(0,2+this.size*2)},e.prototype.encode=function(r,n){var i=(0,v5.arrayify)(n);return i.length!==this.size&&this._throwError("incorrect data length",n),r.writeBytes(i)},e.prototype.decode=function(r){return r.coerce(this.name,(0,v5.hexlify)(r.readBytes(this.size)))},e}(QD.Coder);js.FixedBytesCoder=WD});var b5=P(Us=>{"use strict";var YD=Us&&Us.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Us,"__esModule",{value:!0});Us.NullCoder=void 0;var $D=Xt(),eJ=function(t){YD(e,t);function e(r){return t.call(this,"null","",r,!1)||this}return e.prototype.defaultValue=function(){return null},e.prototype.encode=function(r,n){return n!=null&&this._throwError("not null",n),r.writeBytes([])},e.prototype.decode=function(r){return r.readBytes(0),r.coerce(this.name,null)},e}($D.Coder);Us.NullCoder=eJ});var g5=P(Pd=>{"use strict";Object.defineProperty(Pd,"__esModule",{value:!0});Pd.AddressZero=void 0;Pd.AddressZero="0x0000000000000000000000000000000000000000"});var x5=P(qr=>{"use strict";Object.defineProperty(qr,"__esModule",{value:!0});qr.MaxInt256=qr.MinInt256=qr.MaxUint256=qr.WeiPerEther=qr.Two=qr.One=qr.Zero=qr.NegativeOne=void 0;var ua=Tr(),rJ=ua.BigNumber.from(-1);qr.NegativeOne=rJ;var tJ=ua.BigNumber.from(0);qr.Zero=tJ;var nJ=ua.BigNumber.from(1);qr.One=nJ;var iJ=ua.BigNumber.from(2);qr.Two=iJ;var aJ=ua.BigNumber.from("1000000000000000000");qr.WeiPerEther=aJ;var oJ=ua.BigNumber.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");qr.MaxUint256=oJ;var sJ=ua.BigNumber.from("-0x8000000000000000000000000000000000000000000000000000000000000000");qr.MinInt256=sJ;var cJ=ua.BigNumber.from("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");qr.MaxInt256=cJ});var y5=P(Md=>{"use strict";Object.defineProperty(Md,"__esModule",{value:!0});Md.HashZero=void 0;Md.HashZero="0x0000000000000000000000000000000000000000000000000000000000000000"});var w5=P(Bd=>{"use strict";Object.defineProperty(Bd,"__esModule",{value:!0});Bd.EtherSymbol=void 0;Bd.EtherSymbol="\u039E"});var Ao=P(dr=>{"use strict";Object.defineProperty(dr,"__esModule",{value:!0});dr.EtherSymbol=dr.HashZero=dr.MaxInt256=dr.MinInt256=dr.MaxUint256=dr.WeiPerEther=dr.Two=dr.One=dr.Zero=dr.NegativeOne=dr.AddressZero=void 0;var uJ=g5();Object.defineProperty(dr,"AddressZero",{enumerable:!0,get:function(){return uJ.AddressZero}});var la=x5();Object.defineProperty(dr,"NegativeOne",{enumerable:!0,get:function(){return la.NegativeOne}});Object.defineProperty(dr,"Zero",{enumerable:!0,get:function(){return la.Zero}});Object.defineProperty(dr,"One",{enumerable:!0,get:function(){return la.One}});Object.defineProperty(dr,"Two",{enumerable:!0,get:function(){return la.Two}});Object.defineProperty(dr,"WeiPerEther",{enumerable:!0,get:function(){return la.WeiPerEther}});Object.defineProperty(dr,"MaxUint256",{enumerable:!0,get:function(){return la.MaxUint256}});Object.defineProperty(dr,"MinInt256",{enumerable:!0,get:function(){return la.MinInt256}});Object.defineProperty(dr,"MaxInt256",{enumerable:!0,get:function(){return la.MaxInt256}});var lJ=y5();Object.defineProperty(dr,"HashZero",{enumerable:!0,get:function(){return lJ.HashZero}});var fJ=w5();Object.defineProperty(dr,"EtherSymbol",{enumerable:!0,get:function(){return fJ.EtherSymbol}})});var A5=P(Hs=>{"use strict";var dJ=Hs&&Hs.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Hs,"__esModule",{value:!0});Hs.NumberCoder=void 0;var pJ=Tr(),Fd=Ao(),hJ=Xt(),vJ=function(t){dJ(e,t);function e(r,n,i){var a=this,o=(n?"int":"uint")+r*8;return a=t.call(this,o,o,i,!1)||this,a.size=r,a.signed=n,a}return e.prototype.defaultValue=function(){return 0},e.prototype.encode=function(r,n){var i=pJ.BigNumber.from(n),a=Fd.MaxUint256.mask(r.wordSize*8);if(this.signed){var o=a.mask(this.size*8-1);(i.gt(o)||i.lt(o.add(Fd.One).mul(Fd.NegativeOne)))&&this._throwError("value out-of-bounds",n)}else(i.lt(Fd.Zero)||i.gt(a.mask(this.size*8)))&&this._throwError("value out-of-bounds",n);return i=i.toTwos(this.size*8).mask(this.size*8),this.signed&&(i=i.fromTwos(this.size*8).toTwos(8*r.wordSize)),r.writeValue(i)},e.prototype.decode=function(r){var n=r.readValue().mask(this.size*8);return this.signed&&(n=n.fromTwos(this.size*8)),r.coerce(this.name,n)},e}(hJ.Coder);Hs.NumberCoder=vJ});var E5=P(Ld=>{"use strict";Object.defineProperty(Ld,"__esModule",{value:!0});Ld.version=void 0;Ld.version="strings/5.7.0"});var Id=P(wr=>{"use strict";Object.defineProperty(wr,"__esModule",{value:!0});wr.toUtf8CodePoints=wr.toUtf8String=wr._toUtf8String=wr._toEscapedUtf8String=wr.toUtf8Bytes=wr.Utf8ErrorFuncs=wr.Utf8ErrorReason=wr.UnicodeNormalizationForm=void 0;var S5=De(),mJ=re(),bJ=E5(),_5=new mJ.Logger(bJ.version),Rd;(function(t){t.current="",t.NFC="NFC",t.NFD="NFD",t.NFKC="NFKC",t.NFKD="NFKD"})(Rd=wr.UnicodeNormalizationForm||(wr.UnicodeNormalizationForm={}));var Zt;(function(t){t.UNEXPECTED_CONTINUE="unexpected continuation byte",t.BAD_PREFIX="bad codepoint prefix",t.OVERRUN="string overrun",t.MISSING_CONTINUE="missing continuation byte",t.OUT_OF_RANGE="out of UTF-8 range",t.UTF16_SURROGATE="UTF-16 surrogate",t.OVERLONG="overlong representation"})(Zt=wr.Utf8ErrorReason||(wr.Utf8ErrorReason={}));function gJ(t,e,r,n,i){return _5.throwArgumentError("invalid codepoint at offset "+e+"; "+t,"bytes",r)}function T5(t,e,r,n,i){if(t===Zt.BAD_PREFIX||t===Zt.UNEXPECTED_CONTINUE){for(var a=0,o=e+1;o>6===2;o++)a++;return a}return t===Zt.OVERRUN?r.length-e-1:0}function xJ(t,e,r,n,i){return t===Zt.OVERLONG?(n.push(i),0):(n.push(65533),T5(t,e,r,n,i))}wr.Utf8ErrorFuncs=Object.freeze({error:gJ,ignore:T5,replace:xJ});function lm(t,e){e==null&&(e=wr.Utf8ErrorFuncs.error),t=(0,S5.arrayify)(t);for(var r=[],n=0;n>7===0){r.push(i);continue}var a=null,o=null;if((i&224)===192)a=1,o=127;else if((i&240)===224)a=2,o=2047;else if((i&248)===240)a=3,o=65535;else{(i&192)===128?n+=e(Zt.UNEXPECTED_CONTINUE,n-1,t,r):n+=e(Zt.BAD_PREFIX,n-1,t,r);continue}if(n-1+a>=t.length){n+=e(Zt.OVERRUN,n-1,t,r);continue}for(var c=i&(1<<8-a-1)-1,u=0;u1114111){n+=e(Zt.OUT_OF_RANGE,n-1-a,t,r,c);continue}if(c>=55296&&c<=57343){n+=e(Zt.UTF16_SURROGATE,n-1-a,t,r,c);continue}if(c<=o){n+=e(Zt.OVERLONG,n-1-a,t,r,c);continue}r.push(c)}}return r}function k5(t,e){e===void 0&&(e=Rd.current),e!=Rd.current&&(_5.checkNormalize(),t=t.normalize(e));for(var r=[],n=0;n>6|192),r.push(i&63|128);else if((i&64512)==55296){n++;var a=t.charCodeAt(n);if(n>=t.length||(a&64512)!==56320)throw new Error("invalid utf-8 string");var o=65536+((i&1023)<<10)+(a&1023);r.push(o>>18|240),r.push(o>>12&63|128),r.push(o>>6&63|128),r.push(o&63|128)}else r.push(i>>12|224),r.push(i>>6&63|128),r.push(i&63|128)}return(0,S5.arrayify)(r)}wr.toUtf8Bytes=k5;function um(t){var e="0000"+t.toString(16);return"\\u"+e.substring(e.length-4)}function yJ(t,e){return'"'+lm(t,e).map(function(r){if(r<256){switch(r){case 8:return"\\b";case 9:return"\\t";case 10:return"\\n";case 13:return"\\r";case 34:return'\\"';case 92:return"\\\\"}if(r>=32&&r<127)return String.fromCharCode(r)}return r<=65535?um(r):(r-=65536,um((r>>10&1023)+55296)+um((r&1023)+56320))}).join("")+'"'}wr._toEscapedUtf8String=yJ;function C5(t){return t.map(function(e){return e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode((e>>10&1023)+55296,(e&1023)+56320))}).join("")}wr._toUtf8String=C5;function wJ(t,e){return C5(lm(t,e))}wr.toUtf8String=wJ;function AJ(t,e){return e===void 0&&(e=Rd.current),lm(k5(t,e))}wr.toUtf8CodePoints=AJ});var P5=P(zs=>{"use strict";Object.defineProperty(zs,"__esModule",{value:!0});zs.parseBytes32String=zs.formatBytes32String=void 0;var EJ=Ao(),fm=De(),O5=Id();function SJ(t){var e=(0,O5.toUtf8Bytes)(t);if(e.length>31)throw new Error("bytes32 string must be less than 32 bytes");return(0,fm.hexlify)((0,fm.concat)([e,EJ.HashZero]).slice(0,32))}zs.formatBytes32String=SJ;function _J(t){var e=(0,fm.arrayify)(t);if(e.length!==32)throw new Error("invalid bytes32 - not 32 bytes long");if(e[31]!==0)throw new Error("invalid bytes32 string - no null terminator");for(var r=31;e[r-1]===0;)r--;return(0,O5.toUtf8String)(e.slice(0,r))}zs.parseBytes32String=_J});var R5=P(ei=>{"use strict";Object.defineProperty(ei,"__esModule",{value:!0});ei.nameprep=ei._nameprepTableC=ei._nameprepTableB2=ei._nameprepTableA1=void 0;var Ku=Id();function TJ(t){if(t.length%4!==0)throw new Error("bad data");for(var e=[],r=0;r=r&&t<=r+i.h&&(t-r)%(i.d||1)===0){if(i.e&&i.e.indexOf(t-r)!==-1)continue;return i}}return null}var kJ=M5("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),CJ="ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(function(t){return parseInt(t,16)}),OJ=[{h:25,s:32,l:65},{h:30,s:32,e:[23],l:127},{h:54,s:1,e:[48],l:64,d:2},{h:14,s:1,l:57,d:2},{h:44,s:1,l:17,d:2},{h:10,s:1,e:[2,6,8],l:61,d:2},{h:16,s:1,l:68,d:2},{h:84,s:1,e:[18,24,66],l:19,d:2},{h:26,s:32,e:[17],l:435},{h:22,s:1,l:71,d:2},{h:15,s:80,l:40},{h:31,s:32,l:16},{h:32,s:1,l:80,d:2},{h:52,s:1,l:42,d:2},{h:12,s:1,l:55,d:2},{h:40,s:1,e:[38],l:15,d:2},{h:14,s:1,l:48,d:2},{h:37,s:48,l:49},{h:148,s:1,l:6351,d:2},{h:88,s:1,l:160,d:2},{h:15,s:16,l:704},{h:25,s:26,l:854},{h:25,s:32,l:55915},{h:37,s:40,l:1247},{h:25,s:-119711,l:53248},{h:25,s:-119763,l:52},{h:25,s:-119815,l:52},{h:25,s:-119867,e:[1,4,5,7,8,11,12,17],l:52},{h:25,s:-119919,l:52},{h:24,s:-119971,e:[2,7,8,17],l:52},{h:24,s:-120023,e:[2,7,13,15,16,17],l:52},{h:25,s:-120075,l:52},{h:25,s:-120127,l:52},{h:25,s:-120179,l:52},{h:25,s:-120231,l:52},{h:25,s:-120283,l:52},{h:25,s:-120335,l:52},{h:24,s:-119543,e:[17],l:56},{h:24,s:-119601,e:[17],l:58},{h:24,s:-119659,e:[17],l:58},{h:24,s:-119717,e:[17],l:58},{h:24,s:-119775,e:[17],l:58}],PJ=dm("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),MJ=dm("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),BJ=dm("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",TJ),FJ=M5("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");function LJ(t){return t.reduce(function(e,r){return r.forEach(function(n){e.push(n)}),e},[])}function B5(t){return!!pm(t,kJ)}ei._nameprepTableA1=B5;function F5(t){var e=pm(t,OJ);if(e)return[t+e.s];var r=PJ[t];if(r)return r;var n=MJ[t];if(n)return[t+n[0]];var i=BJ[t];return i||null}ei._nameprepTableB2=F5;function L5(t){return!!pm(t,FJ)}ei._nameprepTableC=L5;function RJ(t){if(t.match(/^[a-z0-9-]*$/i)&&t.length<=59)return t.toLowerCase();var e=(0,Ku.toUtf8CodePoints)(t);e=LJ(e.map(function(n){if(CJ.indexOf(n)>=0)return[];if(n>=65024&&n<=65039)return[];var i=F5(n);return i||[n]})),e=(0,Ku.toUtf8CodePoints)((0,Ku._toUtf8String)(e),Ku.UnicodeNormalizationForm.NFKC),e.forEach(function(n){if(L5(n))throw new Error("STRINGPREP_CONTAINS_PROHIBITED")}),e.forEach(function(n){if(B5(n))throw new Error("STRINGPREP_CONTAINS_UNASSIGNED")});var r=(0,Ku._toUtf8String)(e);if(r.substring(0,1)==="-"||r.substring(2,4)==="--"||r.substring(r.length-1)==="-")throw new Error("invalid hyphen");return r}ei.nameprep=RJ});var Cr=P(xr=>{"use strict";Object.defineProperty(xr,"__esModule",{value:!0});xr.nameprep=xr.parseBytes32String=xr.formatBytes32String=xr.UnicodeNormalizationForm=xr.Utf8ErrorReason=xr.Utf8ErrorFuncs=xr.toUtf8String=xr.toUtf8CodePoints=xr.toUtf8Bytes=xr._toEscapedUtf8String=void 0;var I5=P5();Object.defineProperty(xr,"formatBytes32String",{enumerable:!0,get:function(){return I5.formatBytes32String}});Object.defineProperty(xr,"parseBytes32String",{enumerable:!0,get:function(){return I5.parseBytes32String}});var IJ=R5();Object.defineProperty(xr,"nameprep",{enumerable:!0,get:function(){return IJ.nameprep}});var Eo=Id();Object.defineProperty(xr,"_toEscapedUtf8String",{enumerable:!0,get:function(){return Eo._toEscapedUtf8String}});Object.defineProperty(xr,"toUtf8Bytes",{enumerable:!0,get:function(){return Eo.toUtf8Bytes}});Object.defineProperty(xr,"toUtf8CodePoints",{enumerable:!0,get:function(){return Eo.toUtf8CodePoints}});Object.defineProperty(xr,"toUtf8String",{enumerable:!0,get:function(){return Eo.toUtf8String}});Object.defineProperty(xr,"UnicodeNormalizationForm",{enumerable:!0,get:function(){return Eo.UnicodeNormalizationForm}});Object.defineProperty(xr,"Utf8ErrorFuncs",{enumerable:!0,get:function(){return Eo.Utf8ErrorFuncs}});Object.defineProperty(xr,"Utf8ErrorReason",{enumerable:!0,get:function(){return Eo.Utf8ErrorReason}})});var D5=P(Gs=>{"use strict";var NJ=Gs&&Gs.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Gs,"__esModule",{value:!0});Gs.StringCoder=void 0;var N5=Cr(),DJ=cm(),JJ=function(t){NJ(e,t);function e(r){return t.call(this,"string",r)||this}return e.prototype.defaultValue=function(){return""},e.prototype.encode=function(r,n){return t.prototype.encode.call(this,r,(0,N5.toUtf8Bytes)(n))},e.prototype.decode=function(r){return(0,N5.toUtf8String)(t.prototype.decode.call(this,r))},e}(DJ.DynamicBytesCoder);Gs.StringCoder=JJ});var q5=P(Xs=>{"use strict";var qJ=Xs&&Xs.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Xs,"__esModule",{value:!0});Xs.TupleCoder=void 0;var jJ=Xt(),J5=sm(),UJ=function(t){qJ(e,t);function e(r,n){var i=this,a=!1,o=[];r.forEach(function(u){u.dynamic&&(a=!0),o.push(u.type)});var c="tuple("+o.join(",")+")";return i=t.call(this,"tuple",c,n,a)||this,i.coders=r,i}return e.prototype.defaultValue=function(){var r=[];this.coders.forEach(function(i){r.push(i.defaultValue())});var n=this.coders.reduce(function(i,a){var o=a.localName;return o&&(i[o]||(i[o]=0),i[o]++),i},{});return this.coders.forEach(function(i,a){var o=i.localName;!o||n[o]!==1||(o==="length"&&(o="_length"),r[o]==null&&(r[o]=r[a]))}),Object.freeze(r)},e.prototype.encode=function(r,n){return(0,J5.pack)(r,this.coders,n)},e.prototype.decode=function(r){return r.coerce(this.name,(0,J5.unpack)(r,this.coders))},e}(jJ.Coder);Xs.TupleCoder=UJ});var vm=P(Ks=>{"use strict";Object.defineProperty(Ks,"__esModule",{value:!0});Ks.defaultAbiCoder=Ks.AbiCoder=void 0;var HJ=De(),zJ=Ve(),U5=re(),GJ=Bs(),Nd=new U5.Logger(GJ.version),j5=Xt(),XJ=s5(),KJ=sm(),VJ=f5(),ZJ=cm(),QJ=m5(),WJ=b5(),YJ=A5(),$J=D5(),Dd=q5(),hm=_d(),eq=new RegExp(/^bytes([0-9]*)$/),rq=new RegExp(/^(u?int)([0-9]*)$/),H5=function(){function t(e){(0,zJ.defineReadOnly)(this,"coerceFunc",e||null)}return t.prototype._getCoder=function(e){var r=this;switch(e.baseType){case"address":return new XJ.AddressCoder(e.name);case"bool":return new VJ.BooleanCoder(e.name);case"string":return new $J.StringCoder(e.name);case"bytes":return new ZJ.BytesCoder(e.name);case"array":return new KJ.ArrayCoder(this._getCoder(e.arrayChildren),e.arrayLength,e.name);case"tuple":return new Dd.TupleCoder((e.components||[]).map(function(a){return r._getCoder(a)}),e.name);case"":return new WJ.NullCoder(e.name)}var n=e.type.match(rq);if(n){var i=parseInt(n[2]||"256");return(i===0||i>256||i%8!==0)&&Nd.throwArgumentError("invalid "+n[1]+" bit length","param",e),new YJ.NumberCoder(i/8,n[1]==="int",e.name)}if(n=e.type.match(eq),n){var i=parseInt(n[1]);return(i===0||i>32)&&Nd.throwArgumentError("invalid bytes length","param",e),new QJ.FixedBytesCoder(i,e.name)}return Nd.throwArgumentError("invalid type","type",e.type)},t.prototype._getWordSize=function(){return 32},t.prototype._getReader=function(e,r){return new j5.Reader(e,this._getWordSize(),this.coerceFunc,r)},t.prototype._getWriter=function(){return new j5.Writer(this._getWordSize())},t.prototype.getDefaultValue=function(e){var r=this,n=e.map(function(a){return r._getCoder(hm.ParamType.from(a))}),i=new Dd.TupleCoder(n,"_");return i.defaultValue()},t.prototype.encode=function(e,r){var n=this;e.length!==r.length&&Nd.throwError("types/values length mismatch",U5.Logger.errors.INVALID_ARGUMENT,{count:{types:e.length,values:r.length},value:{types:e,values:r}});var i=e.map(function(c){return n._getCoder(hm.ParamType.from(c))}),a=new Dd.TupleCoder(i,"_"),o=this._getWriter();return a.encode(o,r),o.data},t.prototype.decode=function(e,r,n){var i=this,a=e.map(function(c){return i._getCoder(hm.ParamType.from(c))}),o=new Dd.TupleCoder(a,"_");return o.decode(this._getReader((0,HJ.arrayify)(r),n))},t}();Ks.AbiCoder=H5;Ks.defaultAbiCoder=new H5});var mm=P(Jd=>{"use strict";Object.defineProperty(Jd,"__esModule",{value:!0});Jd.id=void 0;var tq=Bt(),nq=Cr();function iq(t){return(0,tq.keccak256)((0,nq.toUtf8Bytes)(t))}Jd.id=iq});var bm=P(qd=>{"use strict";Object.defineProperty(qd,"__esModule",{value:!0});qd.version=void 0;qd.version="hash/5.7.0"});var G5=P(Vs=>{"use strict";Object.defineProperty(Vs,"__esModule",{value:!0});Vs.encode=Vs.decode=void 0;var z5=De();function aq(t){return(0,z5.arrayify)(new Uint8Array(Buffer.from(t,"base64")))}Vs.decode=aq;function oq(t){return Buffer.from((0,z5.arrayify)(t)).toString("base64")}Vs.encode=oq});var Vu=P(Zs=>{"use strict";Object.defineProperty(Zs,"__esModule",{value:!0});Zs.encode=Zs.decode=void 0;var X5=G5();Object.defineProperty(Zs,"decode",{enumerable:!0,get:function(){return X5.decode}});Object.defineProperty(Zs,"encode",{enumerable:!0,get:function(){return X5.encode}})});var xm=P(jr=>{"use strict";Object.defineProperty(jr,"__esModule",{value:!0});jr.read_emoji_trie=jr.read_zero_terminated_array=jr.read_mapped_map=jr.read_member_array=jr.signed=jr.read_compressed_payload=jr.read_payload=jr.decode_arithmetic=void 0;function V5(t,e){e==null&&(e=1);var r=[],n=r.forEach,i=function(a,o){n.call(a,function(c){o>0&&Array.isArray(c)?i(c,o-1):r.push(c)})};return i(t,e),r}function sq(t){for(var e={},r=0;r>--s&1}for(var w=31,T=Math.pow(2,w),A=T>>>1,O=A>>1,B=T-1,F=0,o=0;o1;){var X=j+Z>>>1;G>>1|m(),U=U<<1^A,M=(M^A)<<1|A|1;D=U,z=1+M-U}var v=n-4;return I.map(function(E){switch(E-v){case 3:return v+65792+(t[u++]<<16|t[u++]<<8|t[u++]);case 2:return v+256+(t[u++]<<8|t[u++]);case 1:return v+t[u++];default:return E-1}})}jr.decode_arithmetic=Z5;function Q5(t){var e=0;return function(){return t[e++]}}jr.read_payload=Q5;function cq(t){return Q5(Z5(t))}jr.read_compressed_payload=cq;function W5(t){return t&1?~t>>1:t>>1}jr.signed=W5;function uq(t,e){for(var r=Array(t),n=0;n>=1;var u=a==1,s=a==2;return{branches:n,valid:o,fe0f:c,save:u,check:s}}}jr.read_emoji_trie=hq});var ew=P(jd=>{"use strict";Object.defineProperty(jd,"__esModule",{value:!0});jd.getData=void 0;var vq=Vu(),mq=xm();function bq(){return(0,mq.read_compressed_payload)((0,vq.decode)("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"))}jd.getData=bq});var iw=P(Qs=>{"use strict";Object.defineProperty(Qs,"__esModule",{value:!0});Qs.ens_normalize=Qs.ens_normalize_post_check=void 0;var gq=Cr(),xq=ew(),Ud=(0,xq.getData)(),Hd=xm(),yq=new Set((0,Hd.read_member_array)(Ud)),wq=new Set((0,Hd.read_member_array)(Ud)),Aq=(0,Hd.read_mapped_map)(Ud),Eq=(0,Hd.read_emoji_trie)(Ud),rw=45,tw=95;function nw(t){return(0,gq.toUtf8CodePoints)(t)}function Sq(t){return t.filter(function(e){return e!=65039})}function ym(t){for(var e=0,r=t.split(".");e=0;a--)if(i[a]!==tw)throw new Error("underscore only allowed at start");if(i.length>=4&&i.every(function(o){return o<128})&&i[2]===rw&&i[3]===rw)throw new Error("invalid label extension")}catch(o){throw new Error('Invalid label "'+n+'": '+o.message)}}return t}Qs.ens_normalize_post_check=ym;function _q(t){return ym(Tq(t,Sq))}Qs.ens_normalize=_q;function Tq(t,e){for(var r=nw(t).reverse(),n=[];r.length;){var i=Cq(r);if(i){n.push.apply(n,e(i));continue}var a=r.pop();if(yq.has(a)){n.push(a);continue}if(!wq.has(a)){var o=Aq[a];if(o){n.push.apply(n,o);continue}throw new Error("Disallowed codepoint: 0x"+a.toString(16).toUpperCase())}}return ym(kq(String.fromCodePoint.apply(String,n)))}function kq(t){return t.normalize("NFC")}function Cq(t,e){var r,n=Eq,i,a,o=[],c=t.length;e&&(e.length=0);for(var u=function(){var f=t[--c];if(n=(r=n.branches.find(function(m){return m.set.has(f)}))===null||r===void 0?void 0:r.node,!n)return"break";if(n.save)a=f;else if(n.check&&f===a)return"break";o.push(f),n.fe0f&&(o.push(65039),c>0&&t[c-1]==65039&&c--),n.valid&&(i=o.slice(),n.valid==2&&i.splice(1,1),e&&e.push.apply(e,t.slice(c).reverse()),t.length=c)};c;){var s=u();if(s==="break")break}return i}});var wm=P(ri=>{"use strict";Object.defineProperty(ri,"__esModule",{value:!0});ri.dnsEncode=ri.namehash=ri.isValidName=ri.ensNormalize=void 0;var zd=De(),sw=Cr(),aw=Bt(),Oq=re(),Pq=bm(),Mq=new Oq.Logger(Pq.version),Bq=iw(),cw=new Uint8Array(32);cw.fill(0);function ow(t){if(t.length===0)throw new Error("invalid ENS name; empty component");return t}function Gd(t){var e=(0,sw.toUtf8Bytes)((0,Bq.ens_normalize)(t)),r=[];if(t.length===0)return r;for(var n=0,i=0;i=e.length)throw new Error("invalid ENS name; empty component");return r.push(ow(e.slice(n))),r}function Fq(t){return Gd(t).map(function(e){return(0,sw.toUtf8String)(e)}).join(".")}ri.ensNormalize=Fq;function Lq(t){try{return Gd(t).length!==0}catch{}return!1}ri.isValidName=Lq;function Rq(t){typeof t!="string"&&Mq.throwArgumentError("invalid ENS name; not a string","name",t);for(var e=cw,r=Gd(t);r.length;)e=(0,aw.keccak256)((0,zd.concat)([e,(0,aw.keccak256)(r.pop())]));return(0,zd.hexlify)(e)}ri.namehash=Rq;function Iq(t){return(0,zd.hexlify)((0,zd.concat)(Gd(t).map(function(e){if(e.length>63)throw new Error("invalid DNS encoded entry; length exceeds 63 bytes");var r=new Uint8Array(e.length+1);return r.set(e,1),r[0]=r.length-1,r})))+"00"}ri.dnsEncode=Iq});var uw=P(So=>{"use strict";Object.defineProperty(So,"__esModule",{value:!0});So.hashMessage=So.messagePrefix=void 0;var Nq=De(),Dq=Bt(),Am=Cr();So.messagePrefix=`Ethereum Signed Message: -`;function Jq(t){return typeof t=="string"&&(t=(0,Am.toUtf8Bytes)(t)),(0,Dq.keccak256)((0,Nq.concat)([(0,Am.toUtf8Bytes)(So.messagePrefix),(0,Am.toUtf8Bytes)(String(t.length)),t]))}So.hashMessage=Jq});var gw=P(fa=>{"use strict";var qq=fa&&fa.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},jq=fa&&fa.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]256||e[2]&&e[2]!==String(n))&&vr.throwArgumentError("invalid numeric width","type",t);var i=Gq.mask(r?n-1:n),a=r?i.add(bw).mul(zq):mw;return function(c){var u=To.BigNumber.from(c);return(u.lt(a)||u.gt(i))&&vr.throwArgumentError("value out-of-bounds for "+t,"value",c),(0,Zr.hexZeroPad)(u.toTwos(256).toHexString(),32)}}}{var e=t.match(/^bytes(\d+)$/);if(e){var o=parseInt(e[1]);return(o===0||o>32||e[1]!==String(o))&&vr.throwArgumentError("invalid bytes width","type",t),function(u){var s=(0,Zr.arrayify)(u);return s.length!==o&&vr.throwArgumentError("invalid length for "+t,"value",u),Xq(u)}}}switch(t){case"address":return function(c){return(0,Zr.hexZeroPad)((0,pw.getAddress)(c),32)};case"bool":return function(c){return c?Kq:Vq};case"bytes":return function(c){return(0,Ws.keccak256)(c)};case"string":return function(c){return(0,hw.id)(c)}}return null}function dw(t,e){return t+"("+e.map(function(r){var n=r.name,i=r.type;return i+" "+n}).join(",")+")"}var Qq=function(){function t(e){(0,_o.defineReadOnly)(this,"types",Object.freeze((0,_o.deepCopy)(e))),(0,_o.defineReadOnly)(this,"_encoderCache",{}),(0,_o.defineReadOnly)(this,"_types",{});var r={},n={},i={};Object.keys(e).forEach(function(m){r[m]={},n[m]=[],i[m]={}});var a=function(m){var w={};e[m].forEach(function(T){w[T.name]&&vr.throwArgumentError("duplicate variable name "+JSON.stringify(T.name)+" in "+JSON.stringify(m),"types",e),w[T.name]=!0;var A=T.type.match(/^([^\x5b]*)(\x5b|$)/)[1];A===m&&vr.throwArgumentError("circular type reference to "+JSON.stringify(A),"types",e);var O=Sm(A);O||(n[A]||vr.throwArgumentError("unknown type "+JSON.stringify(A),"types",e),n[A].push(m),r[m][A]=!0)})};for(var o in e)a(o);var c=Object.keys(n).filter(function(m){return n[m].length===0});c.length===0?vr.throwArgumentError("missing primary type","types",e):c.length>1&&vr.throwArgumentError("ambiguous primary types or unused types: "+c.map(function(m){return JSON.stringify(m)}).join(", "),"types",e),(0,_o.defineReadOnly)(this,"primaryType",c[0]);function u(m,w){w[m]&&vr.throwArgumentError("circular type reference to "+JSON.stringify(m),"types",e),w[m]=!0,Object.keys(r[m]).forEach(function(T){!n[T]||(u(T,w),Object.keys(w).forEach(function(A){i[A][T]=!0}))}),delete w[m]}u(this.primaryType,{});for(var s in i){var f=Object.keys(i[s]);f.sort(),this._types[s]=dw(s,e[s])+f.map(function(m){return dw(m,e[m])}).join("")}}return t.prototype.getEncoder=function(e){var r=this._encoderCache[e];return r||(r=this._encoderCache[e]=this._getEncoder(e)),r},t.prototype._getEncoder=function(e){var r=this;{var n=Sm(e);if(n)return n}var i=e.match(/^(.*)(\x5b(\d*)\x5d)$/);if(i){var a=i[1],o=this.getEncoder(a),c=parseInt(i[3]);return function(f){c>=0&&f.length!==c&&vr.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",f);var m=f.map(o);return r._types[a]&&(m=m.map(Ws.keccak256)),(0,Ws.keccak256)((0,Zr.hexConcat)(m))}}var u=this.types[e];if(u){var s=(0,hw.id)(this._types[e]);return function(f){var m=u.map(function(w){var T=w.name,A=w.type,O=r.getEncoder(A)(f[T]);return r._types[A]?(0,Ws.keccak256)(O):O});return m.unshift(s),(0,Zr.hexConcat)(m)}}return vr.throwArgumentError("unknown type: "+e,"type",e)},t.prototype.encodeType=function(e){var r=this._types[e];return r||vr.throwArgumentError("unknown type: "+JSON.stringify(e),"name",e),r},t.prototype.encodeData=function(e,r){return this.getEncoder(e)(r)},t.prototype.hashStruct=function(e,r){return(0,Ws.keccak256)(this.encodeData(e,r))},t.prototype.encode=function(e){return this.encodeData(this.primaryType,e)},t.prototype.hash=function(e){return this.hashStruct(this.primaryType,e)},t.prototype._visit=function(e,r,n){var i=this;{var a=Sm(e);if(a)return n(e,r)}var o=e.match(/^(.*)(\x5b(\d*)\x5d)$/);if(o){var c=o[1],u=parseInt(o[3]);return u>=0&&r.length!==u&&vr.throwArgumentError("array length mismatch; expected length ${ arrayLength }","value",r),r.map(function(f){return i._visit(c,f,n)})}var s=this.types[e];return s?s.reduce(function(f,m){var w=m.name,T=m.type;return f[w]=i._visit(T,r[w],n),f},{}):vr.throwArgumentError("unknown type: "+e,"type",e)},t.prototype.visit=function(e,r){return this._visit(this.primaryType,e,r)},t.from=function(e){return new t(e)},t.getPrimaryType=function(e){return t.from(e).primaryType},t.hashStruct=function(e,r,n){return t.from(r).hashStruct(e,n)},t.hashDomain=function(e){var r=[];for(var n in e){var i=lw[n];i||vr.throwArgumentError("invalid typed-data domain key: "+JSON.stringify(n),"domain",e),r.push({name:n,type:i})}return r.sort(function(a,o){return Em.indexOf(a.name)-Em.indexOf(o.name)}),t.hashStruct("EIP712Domain",{EIP712Domain:r},e)},t.encode=function(e,r,n){return(0,Zr.hexConcat)(["0x1901",t.hashDomain(e),t.from(r).hash(n)])},t.hash=function(e,r,n){return(0,Ws.keccak256)(t.encode(e,r,n))},t.resolveNames=function(e,r,n,i){return qq(this,void 0,void 0,function(){var a,o,c,u,s,f,m,w;return jq(this,function(T){switch(T.label){case 0:e=(0,_o.shallowCopy)(e),a={},e.verifyingContract&&!(0,Zr.isHexString)(e.verifyingContract,20)&&(a[e.verifyingContract]="0x"),o=t.from(r),o.visit(n,function(A,O){return A==="address"&&!(0,Zr.isHexString)(O,20)&&(a[O]="0x"),O}),c=[];for(u in a)c.push(u);s=0,T.label=1;case 1:return s{"use strict";Object.defineProperty(Ur,"__esModule",{value:!0});Ur._TypedDataEncoder=Ur.hashMessage=Ur.messagePrefix=Ur.ensNormalize=Ur.isValidName=Ur.namehash=Ur.dnsEncode=Ur.id=void 0;var Wq=mm();Object.defineProperty(Ur,"id",{enumerable:!0,get:function(){return Wq.id}});var _m=wm();Object.defineProperty(Ur,"dnsEncode",{enumerable:!0,get:function(){return _m.dnsEncode}});Object.defineProperty(Ur,"isValidName",{enumerable:!0,get:function(){return _m.isValidName}});Object.defineProperty(Ur,"namehash",{enumerable:!0,get:function(){return _m.namehash}});var xw=uw();Object.defineProperty(Ur,"hashMessage",{enumerable:!0,get:function(){return xw.hashMessage}});Object.defineProperty(Ur,"messagePrefix",{enumerable:!0,get:function(){return xw.messagePrefix}});var Yq=wm();Object.defineProperty(Ur,"ensNormalize",{enumerable:!0,get:function(){return Yq.ensNormalize}});var $q=gw();Object.defineProperty(Ur,"_TypedDataEncoder",{enumerable:!0,get:function(){return $q.TypedDataEncoder}})});var Tw=P(ot=>{"use strict";var Vd=ot&&ot.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(ot,"__esModule",{value:!0});ot.Interface=ot.Indexed=ot.ErrorDescription=ot.TransactionDescription=ot.LogDescription=ot.checkResultErrors=void 0;var ej=Vt(),yw=Tr(),pr=De(),Xd=ko(),ww=Bt(),Qr=Ve(),rj=vm(),tj=Xt();Object.defineProperty(ot,"checkResultErrors",{enumerable:!0,get:function(){return tj.checkResultErrors}});var Fi=_d(),Kd=re(),nj=Bs(),mr=new Kd.Logger(nj.version),Ew=function(t){Vd(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e}(Qr.Description);ot.LogDescription=Ew;var Sw=function(t){Vd(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e}(Qr.Description);ot.TransactionDescription=Sw;var _w=function(t){Vd(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e}(Qr.Description);ot.ErrorDescription=_w;var Tm=function(t){Vd(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.isIndexed=function(r){return!!(r&&r._isIndexed)},e}(Qr.Description);ot.Indexed=Tm;var ij={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:!0},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"]}};function Aw(t,e){var r=new Error("deferred error during ABI decoding triggered accessing "+t);return r.error=e,r}var aj=function(){function t(e){var r=this.constructor,n=this,i=[];typeof e=="string"?i=JSON.parse(e):i=e,(0,Qr.defineReadOnly)(this,"fragments",i.map(function(a){return Fi.Fragment.from(a)}).filter(function(a){return a!=null})),(0,Qr.defineReadOnly)(this,"_abiCoder",(0,Qr.getStatic)(r,"getAbiCoder")()),(0,Qr.defineReadOnly)(this,"functions",{}),(0,Qr.defineReadOnly)(this,"errors",{}),(0,Qr.defineReadOnly)(this,"events",{}),(0,Qr.defineReadOnly)(this,"structs",{}),this.fragments.forEach(function(a){var o=null;switch(a.type){case"constructor":if(n.deploy){mr.warn("duplicate definition - constructor");return}(0,Qr.defineReadOnly)(n,"deploy",a);return;case"function":o=n.functions;break;case"event":o=n.events;break;case"error":o=n.errors;break;default:return}var c=a.format();if(o[c]){mr.warn("duplicate definition - "+c);return}o[c]=a}),this.deploy||(0,Qr.defineReadOnly)(this,"deploy",Fi.ConstructorFragment.from({payable:!1,type:"constructor"})),(0,Qr.defineReadOnly)(this,"_isInterface",!0)}return t.prototype.format=function(e){e||(e=Fi.FormatTypes.full),e===Fi.FormatTypes.sighash&&mr.throwArgumentError("interface does not support formatting sighash","format",e);var r=this.fragments.map(function(n){return n.format(e)});return e===Fi.FormatTypes.json?JSON.stringify(r.map(function(n){return JSON.parse(n)})):r},t.getAbiCoder=function(){return rj.defaultAbiCoder},t.getAddress=function(e){return(0,ej.getAddress)(e)},t.getSighash=function(e){return(0,pr.hexDataSlice)((0,Xd.id)(e.format()),0,4)},t.getEventTopic=function(e){return(0,Xd.id)(e.format())},t.prototype.getFunction=function(e){if((0,pr.isHexString)(e)){for(var r in this.functions)if(e===this.getSighash(r))return this.functions[r];mr.throwArgumentError("no matching function","sighash",e)}if(e.indexOf("(")===-1){var n=e.trim(),i=Object.keys(this.functions).filter(function(o){return o.split("(")[0]===n});return i.length===0?mr.throwArgumentError("no matching function","name",n):i.length>1&&mr.throwArgumentError("multiple matching functions","name",n),this.functions[i[0]]}var a=this.functions[Fi.FunctionFragment.fromString(e).format()];return a||mr.throwArgumentError("no matching function","signature",e),a},t.prototype.getEvent=function(e){if((0,pr.isHexString)(e)){var r=e.toLowerCase();for(var n in this.events)if(r===this.getEventTopic(n))return this.events[n];mr.throwArgumentError("no matching event","topichash",r)}if(e.indexOf("(")===-1){var i=e.trim(),a=Object.keys(this.events).filter(function(c){return c.split("(")[0]===i});return a.length===0?mr.throwArgumentError("no matching event","name",i):a.length>1&&mr.throwArgumentError("multiple matching events","name",i),this.events[a[0]]}var o=this.events[Fi.EventFragment.fromString(e).format()];return o||mr.throwArgumentError("no matching event","signature",e),o},t.prototype.getError=function(e){if((0,pr.isHexString)(e)){var r=(0,Qr.getStatic)(this.constructor,"getSighash");for(var n in this.errors){var i=this.errors[n];if(e===r(i))return this.errors[n]}mr.throwArgumentError("no matching error","sighash",e)}if(e.indexOf("(")===-1){var a=e.trim(),o=Object.keys(this.errors).filter(function(u){return u.split("(")[0]===a});return o.length===0?mr.throwArgumentError("no matching error","name",a):o.length>1&&mr.throwArgumentError("multiple matching errors","name",a),this.errors[o[0]]}var c=this.errors[Fi.FunctionFragment.fromString(e).format()];return c||mr.throwArgumentError("no matching error","signature",e),c},t.prototype.getSighash=function(e){if(typeof e=="string")try{e=this.getFunction(e)}catch(r){try{e=this.getError(e)}catch{throw r}}return(0,Qr.getStatic)(this.constructor,"getSighash")(e)},t.prototype.getEventTopic=function(e){return typeof e=="string"&&(e=this.getEvent(e)),(0,Qr.getStatic)(this.constructor,"getEventTopic")(e)},t.prototype._decodeParams=function(e,r){return this._abiCoder.decode(e,r)},t.prototype._encodeParams=function(e,r){return this._abiCoder.encode(e,r)},t.prototype.encodeDeploy=function(e){return this._encodeParams(this.deploy.inputs,e||[])},t.prototype.decodeErrorResult=function(e,r){typeof e=="string"&&(e=this.getError(e));var n=(0,pr.arrayify)(r);return(0,pr.hexlify)(n.slice(0,4))!==this.getSighash(e)&&mr.throwArgumentError("data signature does not match error "+e.name+".","data",(0,pr.hexlify)(n)),this._decodeParams(e.inputs,n.slice(4))},t.prototype.encodeErrorResult=function(e,r){return typeof e=="string"&&(e=this.getError(e)),(0,pr.hexlify)((0,pr.concat)([this.getSighash(e),this._encodeParams(e.inputs,r||[])]))},t.prototype.decodeFunctionData=function(e,r){typeof e=="string"&&(e=this.getFunction(e));var n=(0,pr.arrayify)(r);return(0,pr.hexlify)(n.slice(0,4))!==this.getSighash(e)&&mr.throwArgumentError("data signature does not match function "+e.name+".","data",(0,pr.hexlify)(n)),this._decodeParams(e.inputs,n.slice(4))},t.prototype.encodeFunctionData=function(e,r){return typeof e=="string"&&(e=this.getFunction(e)),(0,pr.hexlify)((0,pr.concat)([this.getSighash(e),this._encodeParams(e.inputs,r||[])]))},t.prototype.decodeFunctionResult=function(e,r){typeof e=="string"&&(e=this.getFunction(e));var n=(0,pr.arrayify)(r),i=null,a="",o=null,c=null,u=null;switch(n.length%this._abiCoder._getWordSize()){case 0:try{return this._abiCoder.decode(e.outputs,n)}catch{}break;case 4:{var s=(0,pr.hexlify)(n.slice(0,4)),f=ij[s];if(f)o=this._abiCoder.decode(f.inputs,n.slice(4)),c=f.name,u=f.signature,f.reason&&(i=o[0]),c==="Error"?a="; VM Exception while processing transaction: reverted with reason string "+JSON.stringify(o[0]):c==="Panic"&&(a="; VM Exception while processing transaction: reverted with panic code "+o[0]);else try{var m=this.getError(s);o=this._abiCoder.decode(m.inputs,n.slice(4)),c=m.name,u=m.format()}catch{}break}}return mr.throwError("call revert exception"+a,Kd.Logger.errors.CALL_EXCEPTION,{method:e.format(),data:(0,pr.hexlify)(r),errorArgs:o,errorName:c,errorSignature:u,reason:i})},t.prototype.encodeFunctionResult=function(e,r){return typeof e=="string"&&(e=this.getFunction(e)),(0,pr.hexlify)(this._abiCoder.encode(e.outputs,r||[]))},t.prototype.encodeFilterTopics=function(e,r){var n=this;typeof e=="string"&&(e=this.getEvent(e)),r.length>e.inputs.length&&mr.throwError("too many arguments for "+e.format(),Kd.Logger.errors.UNEXPECTED_ARGUMENT,{argument:"values",value:r});var i=[];e.anonymous||i.push(this.getEventTopic(e));var a=function(o,c){return o.type==="string"?(0,Xd.id)(c):o.type==="bytes"?(0,ww.keccak256)((0,pr.hexlify)(c)):(o.type==="bool"&&typeof c=="boolean"&&(c=c?"0x01":"0x00"),o.type.match(/^u?int/)&&(c=yw.BigNumber.from(c).toHexString()),o.type==="address"&&n._abiCoder.encode(["address"],[c]),(0,pr.hexZeroPad)((0,pr.hexlify)(c),32))};for(r.forEach(function(o,c){var u=e.inputs[c];if(!u.indexed){o!=null&&mr.throwArgumentError("cannot filter non-indexed parameters; must be null","contract."+u.name,o);return}o==null?i.push(null):u.baseType==="array"||u.baseType==="tuple"?mr.throwArgumentError("filtering with tuples or arrays not supported","contract."+u.name,o):Array.isArray(o)?i.push(o.map(function(s){return a(u,s)})):i.push(a(u,o))});i.length&&i[i.length-1]===null;)i.pop();return i},t.prototype.encodeEventLog=function(e,r){var n=this;typeof e=="string"&&(e=this.getEvent(e));var i=[],a=[],o=[];return e.anonymous||i.push(this.getEventTopic(e)),r.length!==e.inputs.length&&mr.throwArgumentError("event arguments/values mismatch","values",r),e.inputs.forEach(function(c,u){var s=r[u];if(c.indexed)if(c.type==="string")i.push((0,Xd.id)(s));else if(c.type==="bytes")i.push((0,ww.keccak256)(s));else{if(c.baseType==="tuple"||c.baseType==="array")throw new Error("not implemented");i.push(n._abiCoder.encode([c.type],[s]))}else a.push(c),o.push(s)}),{data:this._abiCoder.encode(a,o),topics:i}},t.prototype.decodeEventLog=function(e,r,n){if(typeof e=="string"&&(e=this.getEvent(e)),n!=null&&!e.anonymous){var i=this.getEventTopic(e);(!(0,pr.isHexString)(n[0],32)||n[0].toLowerCase()!==i)&&mr.throwError("fragment/topic mismatch",Kd.Logger.errors.INVALID_ARGUMENT,{argument:"topics[0]",expected:i,value:n[0]}),n=n.slice(1)}var a=[],o=[],c=[];e.inputs.forEach(function(O,B){O.indexed?O.type==="string"||O.type==="bytes"||O.baseType==="tuple"||O.baseType==="array"?(a.push(Fi.ParamType.fromObject({type:"bytes32",name:O.name})),c.push(!0)):(a.push(O),c.push(!1)):(o.push(O),c.push(!1))});var u=n!=null?this._abiCoder.decode(a,(0,pr.concat)(n)):null,s=this._abiCoder.decode(o,r,!0),f=[],m=0,w=0;e.inputs.forEach(function(O,B){if(O.indexed)if(u==null)f[B]=new Tm({_isIndexed:!0,hash:null});else if(c[B])f[B]=new Tm({_isIndexed:!0,hash:u[w++]});else try{f[B]=u[w++]}catch(I){f[B]=I}else try{f[B]=s[m++]}catch(I){f[B]=I}if(O.name&&f[O.name]==null){var F=f[B];F instanceof Error?Object.defineProperty(f,O.name,{enumerable:!0,get:function(){throw Aw("property "+JSON.stringify(O.name),F)}}):f[O.name]=F}});for(var T=function(O){var B=f[O];B instanceof Error&&Object.defineProperty(f,O,{enumerable:!0,get:function(){throw Aw("index "+O,B)}})},A=0;A{"use strict";Object.defineProperty(rr,"__esModule",{value:!0});rr.TransactionDescription=rr.LogDescription=rr.checkResultErrors=rr.Indexed=rr.Interface=rr.defaultAbiCoder=rr.AbiCoder=rr.FormatTypes=rr.ParamType=rr.FunctionFragment=rr.Fragment=rr.EventFragment=rr.ErrorFragment=rr.ConstructorFragment=void 0;var Co=_d();Object.defineProperty(rr,"ConstructorFragment",{enumerable:!0,get:function(){return Co.ConstructorFragment}});Object.defineProperty(rr,"ErrorFragment",{enumerable:!0,get:function(){return Co.ErrorFragment}});Object.defineProperty(rr,"EventFragment",{enumerable:!0,get:function(){return Co.EventFragment}});Object.defineProperty(rr,"FormatTypes",{enumerable:!0,get:function(){return Co.FormatTypes}});Object.defineProperty(rr,"Fragment",{enumerable:!0,get:function(){return Co.Fragment}});Object.defineProperty(rr,"FunctionFragment",{enumerable:!0,get:function(){return Co.FunctionFragment}});Object.defineProperty(rr,"ParamType",{enumerable:!0,get:function(){return Co.ParamType}});var kw=vm();Object.defineProperty(rr,"AbiCoder",{enumerable:!0,get:function(){return kw.AbiCoder}});Object.defineProperty(rr,"defaultAbiCoder",{enumerable:!0,get:function(){return kw.defaultAbiCoder}});var Zu=Tw();Object.defineProperty(rr,"checkResultErrors",{enumerable:!0,get:function(){return Zu.checkResultErrors}});Object.defineProperty(rr,"Indexed",{enumerable:!0,get:function(){return Zu.Indexed}});Object.defineProperty(rr,"Interface",{enumerable:!0,get:function(){return Zu.Interface}});Object.defineProperty(rr,"LogDescription",{enumerable:!0,get:function(){return Zu.LogDescription}});Object.defineProperty(rr,"TransactionDescription",{enumerable:!0,get:function(){return Zu.TransactionDescription}})});var Cw=P(Zd=>{"use strict";Object.defineProperty(Zd,"__esModule",{value:!0});Zd.version=void 0;Zd.version="abstract-provider/5.7.0"});var Ys=P(Hr=>{"use strict";var Wd=Hr&&Hr.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),oj=Hr&&Hr.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},sj=Hr&&Hr.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]{"use strict";Object.defineProperty($d,"__esModule",{value:!0});$d.version=void 0;$d.version="abstract-signer/5.7.0"});var Wu=P(Wt=>{"use strict";var vj=Wt&&Wt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),bn=Wt&&Wt.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},gn=Wt&&Wt.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]=0)throw u;return Qt.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",Li.Logger.errors.UNPREDICTABLE_GAS_LIMIT,{error:u,tx:r})})),r.chainId==null?r.chainId=this.getChainId():r.chainId=Promise.all([Promise.resolve(r.chainId),this.getChainId()]).then(function(u){return u[1]!==0&&u[0]!==u[1]&&Qt.throwArgumentError("chainId address mismatch","transaction",e),u[0]}),[4,(0,da.resolveProperties)(r)];case 6:return[2,c.sent()]}})})},t.prototype._checkProvider=function(e){this.provider||Qt.throwError("missing provider",Li.Logger.errors.UNSUPPORTED_OPERATION,{operation:e||"_checkProvider"})},t.isSigner=function(e){return!!(e&&e._isSigner)},t}();Wt.Signer=Pw;var xj=function(t){vj(e,t);function e(r,n){var i=t.call(this)||this;return(0,da.defineReadOnly)(i,"address",r),(0,da.defineReadOnly)(i,"provider",n||null),i}return e.prototype.getAddress=function(){return Promise.resolve(this.address)},e.prototype._fail=function(r,n){return Promise.resolve().then(function(){Qt.throwError(r,Li.Logger.errors.UNSUPPORTED_OPERATION,{operation:n})})},e.prototype.signMessage=function(r){return this._fail("VoidSigner cannot sign messages","signMessage")},e.prototype.signTransaction=function(r){return this._fail("VoidSigner cannot sign transactions","signTransaction")},e.prototype._signTypedData=function(r,n,i){return this._fail("VoidSigner cannot sign typed data","signTypedData")},e.prototype.connect=function(r){return new e(this.address,r)},e}(Pw);Wt.VoidSigner=xj});var Mw=P((Pee,yj)=>{yj.exports={name:"elliptic",version:"6.5.4",description:"EC cryptography",main:"lib/elliptic.js",files:["lib"],scripts:{lint:"eslint lib test","lint:fix":"npm run lint -- --fix",unit:"istanbul test _mocha --reporter=spec test/index.js",test:"npm run lint && npm run unit",version:"grunt dist && git add dist/"},repository:{type:"git",url:"git@github.com:indutny/elliptic"},keywords:["EC","Elliptic","curve","Cryptography"],author:"Fedor Indutny ",license:"MIT",bugs:{url:"https://github.com/indutny/elliptic/issues"},homepage:"https://github.com/indutny/elliptic",devDependencies:{brfs:"^2.0.2",coveralls:"^3.1.0",eslint:"^7.6.0",grunt:"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.5",mocha:"^8.0.1"},dependencies:{"bn.js":"^4.11.9",brorand:"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1",inherits:"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"}}});var ti=P((Bw,Om)=>{(function(t,e){"use strict";function r(M,v){if(!M)throw new Error(v||"Assertion failed")}function n(M,v){M.super_=v;var E=function(){};E.prototype=v.prototype,M.prototype=new E,M.prototype.constructor=M}function i(M,v,E){if(i.isBN(M))return M;this.negative=0,this.words=null,this.length=0,this.red=null,M!==null&&((v==="le"||v==="be")&&(E=v,v=10),this._init(M||0,v||10,E||"be"))}typeof t=="object"?t.exports=i:e.BN=i,i.BN=i,i.wordSize=26;var a;try{typeof window<"u"&&typeof window.Buffer<"u"?a=window.Buffer:a=require("buffer").Buffer}catch{}i.isBN=function(v){return v instanceof i?!0:v!==null&&typeof v=="object"&&v.constructor.wordSize===i.wordSize&&Array.isArray(v.words)},i.max=function(v,E){return v.cmp(E)>0?v:E},i.min=function(v,E){return v.cmp(E)<0?v:E},i.prototype._init=function(v,E,b){if(typeof v=="number")return this._initNumber(v,E,b);if(typeof v=="object")return this._initArray(v,E,b);E==="hex"&&(E=16),r(E===(E|0)&&E>=2&&E<=36),v=v.toString().replace(/\s+/g,"");var l=0;v[0]==="-"&&(l++,this.negative=1),l=0;l-=3)g=v[l]|v[l-1]<<8|v[l-2]<<16,this.words[p]|=g<>>26-S&67108863,S+=24,S>=26&&(S-=26,p++);else if(b==="le")for(l=0,p=0;l>>26-S&67108863,S+=24,S>=26&&(S-=26,p++);return this.strip()};function o(M,v){var E=M.charCodeAt(v);return E>=65&&E<=70?E-55:E>=97&&E<=102?E-87:E-48&15}function c(M,v,E){var b=o(M,E);return E-1>=v&&(b|=o(M,E-1)<<4),b}i.prototype._parseHex=function(v,E,b){this.length=Math.ceil((v.length-E)/6),this.words=new Array(this.length);for(var l=0;l=E;l-=2)S=c(v,E,l)<=18?(p-=18,g+=1,this.words[g]|=S>>>26):p+=8;else{var x=v.length-E;for(l=x%2===0?E+1:E;l=18?(p-=18,g+=1,this.words[g]|=S>>>26):p+=8}this.strip()};function u(M,v,E,b){for(var l=0,p=Math.min(M.length,E),g=v;g=49?l+=S-49+10:S>=17?l+=S-17+10:l+=S}return l}i.prototype._parseBase=function(v,E,b){this.words=[0],this.length=1;for(var l=0,p=1;p<=67108863;p*=E)l++;l--,p=p/E|0;for(var g=v.length-b,S=g%l,x=Math.min(g,g-S)+b,d=0,y=b;y1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},i.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},i.prototype.inspect=function(){return(this.red?""};var s=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],f=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],m=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];i.prototype.toString=function(v,E){v=v||10,E=E|0||1;var b;if(v===16||v==="hex"){b="";for(var l=0,p=0,g=0;g>>24-l&16777215,p!==0||g!==this.length-1?b=s[6-x.length]+x+b:b=x+b,l+=2,l>=26&&(l-=26,g--)}for(p!==0&&(b=p.toString(16)+b);b.length%E!==0;)b="0"+b;return this.negative!==0&&(b="-"+b),b}if(v===(v|0)&&v>=2&&v<=36){var d=f[v],y=m[v];b="";var C=this.clone();for(C.negative=0;!C.isZero();){var h=C.modn(y).toString(v);C=C.idivn(y),C.isZero()?b=h+b:b=s[d-h.length]+h+b}for(this.isZero()&&(b="0"+b);b.length%E!==0;)b="0"+b;return this.negative!==0&&(b="-"+b),b}r(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var v=this.words[0];return this.length===2?v+=this.words[1]*67108864:this.length===3&&this.words[2]===1?v+=4503599627370496+this.words[1]*67108864:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-v:v},i.prototype.toJSON=function(){return this.toString(16)},i.prototype.toBuffer=function(v,E){return r(typeof a<"u"),this.toArrayLike(a,v,E)},i.prototype.toArray=function(v,E){return this.toArrayLike(Array,v,E)},i.prototype.toArrayLike=function(v,E,b){var l=this.byteLength(),p=b||Math.max(1,l);r(l<=p,"byte array longer than desired length"),r(p>0,"Requested array length <= 0"),this.strip();var g=E==="le",S=new v(p),x,d,y=this.clone();if(g){for(d=0;!y.isZero();d++)x=y.andln(255),y.iushrn(8),S[d]=x;for(;d=4096&&(b+=13,E>>>=13),E>=64&&(b+=7,E>>>=7),E>=8&&(b+=4,E>>>=4),E>=2&&(b+=2,E>>>=2),b+E},i.prototype._zeroBits=function(v){if(v===0)return 26;var E=v,b=0;return(E&8191)===0&&(b+=13,E>>>=13),(E&127)===0&&(b+=7,E>>>=7),(E&15)===0&&(b+=4,E>>>=4),(E&3)===0&&(b+=2,E>>>=2),(E&1)===0&&b++,b},i.prototype.bitLength=function(){var v=this.words[this.length-1],E=this._countBits(v);return(this.length-1)*26+E};function w(M){for(var v=new Array(M.bitLength()),E=0;E>>l}return v}i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var v=0,E=0;Ev.length?this.clone().ior(v):v.clone().ior(this)},i.prototype.uor=function(v){return this.length>v.length?this.clone().iuor(v):v.clone().iuor(this)},i.prototype.iuand=function(v){var E;this.length>v.length?E=v:E=this;for(var b=0;bv.length?this.clone().iand(v):v.clone().iand(this)},i.prototype.uand=function(v){return this.length>v.length?this.clone().iuand(v):v.clone().iuand(this)},i.prototype.iuxor=function(v){var E,b;this.length>v.length?(E=this,b=v):(E=v,b=this);for(var l=0;lv.length?this.clone().ixor(v):v.clone().ixor(this)},i.prototype.uxor=function(v){return this.length>v.length?this.clone().iuxor(v):v.clone().iuxor(this)},i.prototype.inotn=function(v){r(typeof v=="number"&&v>=0);var E=Math.ceil(v/26)|0,b=v%26;this._expand(E),b>0&&E--;for(var l=0;l0&&(this.words[l]=~this.words[l]&67108863>>26-b),this.strip()},i.prototype.notn=function(v){return this.clone().inotn(v)},i.prototype.setn=function(v,E){r(typeof v=="number"&&v>=0);var b=v/26|0,l=v%26;return this._expand(b+1),E?this.words[b]=this.words[b]|1<v.length?(b=this,l=v):(b=v,l=this);for(var p=0,g=0;g>>26;for(;p!==0&&g>>26;if(this.length=b.length,p!==0)this.words[this.length]=p,this.length++;else if(b!==this)for(;gv.length?this.clone().iadd(v):v.clone().iadd(this)},i.prototype.isub=function(v){if(v.negative!==0){v.negative=0;var E=this.iadd(v);return v.negative=1,E._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(v),this.negative=1,this._normSign();var b=this.cmp(v);if(b===0)return this.negative=0,this.length=1,this.words[0]=0,this;var l,p;b>0?(l=this,p=v):(l=v,p=this);for(var g=0,S=0;S>26,this.words[S]=E&67108863;for(;g!==0&&S>26,this.words[S]=E&67108863;if(g===0&&S>>26,C=x&67108863,h=Math.min(d,v.length-1),k=Math.max(0,d-M.length+1);k<=h;k++){var J=d-k|0;l=M.words[J]|0,p=v.words[k]|0,g=l*p+C,y+=g/67108864|0,C=g&67108863}E.words[d]=C|0,x=y|0}return x!==0?E.words[d]=x|0:E.length--,E.strip()}var A=function(v,E,b){var l=v.words,p=E.words,g=b.words,S=0,x,d,y,C=l[0]|0,h=C&8191,k=C>>>13,J=l[1]|0,_=J&8191,L=J>>>13,N=l[2]|0,q=N&8191,H=N>>>13,W=l[3]|0,V=W&8191,K=W>>>13,ur=l[4]|0,Q=ur&8191,Y=ur>>>13,_n=l[5]|0,ne=_n&8191,ie=_n>>>13,Tn=l[6]|0,ae=Tn&8191,oe=Tn>>>13,kn=l[7]|0,se=kn&8191,ce=kn>>>13,Cn=l[8]|0,ue=Cn&8191,le=Cn>>>13,On=l[9]|0,fe=On&8191,de=On>>>13,Pn=p[0]|0,pe=Pn&8191,he=Pn>>>13,Mn=p[1]|0,ve=Mn&8191,me=Mn>>>13,Bn=p[2]|0,be=Bn&8191,ge=Bn>>>13,Fn=p[3]|0,xe=Fn&8191,ye=Fn>>>13,Ln=p[4]|0,we=Ln&8191,Ae=Ln>>>13,Rn=p[5]|0,Ee=Rn&8191,Se=Rn>>>13,In=p[6]|0,_e=In&8191,Te=In>>>13,Nn=p[7]|0,ke=Nn&8191,Ce=Nn>>>13,Dn=p[8]|0,Oe=Dn&8191,Pe=Dn>>>13,Jn=p[9]|0,Me=Jn&8191,Be=Jn>>>13;b.negative=v.negative^E.negative,b.length=19,x=Math.imul(h,pe),d=Math.imul(h,he),d=d+Math.imul(k,pe)|0,y=Math.imul(k,he);var ln=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(ln>>>26)|0,ln&=67108863,x=Math.imul(_,pe),d=Math.imul(_,he),d=d+Math.imul(L,pe)|0,y=Math.imul(L,he),x=x+Math.imul(h,ve)|0,d=d+Math.imul(h,me)|0,d=d+Math.imul(k,ve)|0,y=y+Math.imul(k,me)|0;var tr=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(tr>>>26)|0,tr&=67108863,x=Math.imul(q,pe),d=Math.imul(q,he),d=d+Math.imul(H,pe)|0,y=Math.imul(H,he),x=x+Math.imul(_,ve)|0,d=d+Math.imul(_,me)|0,d=d+Math.imul(L,ve)|0,y=y+Math.imul(L,me)|0,x=x+Math.imul(h,be)|0,d=d+Math.imul(h,ge)|0,d=d+Math.imul(k,be)|0,y=y+Math.imul(k,ge)|0;var nr=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(nr>>>26)|0,nr&=67108863,x=Math.imul(V,pe),d=Math.imul(V,he),d=d+Math.imul(K,pe)|0,y=Math.imul(K,he),x=x+Math.imul(q,ve)|0,d=d+Math.imul(q,me)|0,d=d+Math.imul(H,ve)|0,y=y+Math.imul(H,me)|0,x=x+Math.imul(_,be)|0,d=d+Math.imul(_,ge)|0,d=d+Math.imul(L,be)|0,y=y+Math.imul(L,ge)|0,x=x+Math.imul(h,xe)|0,d=d+Math.imul(h,ye)|0,d=d+Math.imul(k,xe)|0,y=y+Math.imul(k,ye)|0;var It=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(It>>>26)|0,It&=67108863,x=Math.imul(Q,pe),d=Math.imul(Q,he),d=d+Math.imul(Y,pe)|0,y=Math.imul(Y,he),x=x+Math.imul(V,ve)|0,d=d+Math.imul(V,me)|0,d=d+Math.imul(K,ve)|0,y=y+Math.imul(K,me)|0,x=x+Math.imul(q,be)|0,d=d+Math.imul(q,ge)|0,d=d+Math.imul(H,be)|0,y=y+Math.imul(H,ge)|0,x=x+Math.imul(_,xe)|0,d=d+Math.imul(_,ye)|0,d=d+Math.imul(L,xe)|0,y=y+Math.imul(L,ye)|0,x=x+Math.imul(h,we)|0,d=d+Math.imul(h,Ae)|0,d=d+Math.imul(k,we)|0,y=y+Math.imul(k,Ae)|0;var Nt=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,x=Math.imul(ne,pe),d=Math.imul(ne,he),d=d+Math.imul(ie,pe)|0,y=Math.imul(ie,he),x=x+Math.imul(Q,ve)|0,d=d+Math.imul(Q,me)|0,d=d+Math.imul(Y,ve)|0,y=y+Math.imul(Y,me)|0,x=x+Math.imul(V,be)|0,d=d+Math.imul(V,ge)|0,d=d+Math.imul(K,be)|0,y=y+Math.imul(K,ge)|0,x=x+Math.imul(q,xe)|0,d=d+Math.imul(q,ye)|0,d=d+Math.imul(H,xe)|0,y=y+Math.imul(H,ye)|0,x=x+Math.imul(_,we)|0,d=d+Math.imul(_,Ae)|0,d=d+Math.imul(L,we)|0,y=y+Math.imul(L,Ae)|0,x=x+Math.imul(h,Ee)|0,d=d+Math.imul(h,Se)|0,d=d+Math.imul(k,Ee)|0,y=y+Math.imul(k,Se)|0;var Dt=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,x=Math.imul(ae,pe),d=Math.imul(ae,he),d=d+Math.imul(oe,pe)|0,y=Math.imul(oe,he),x=x+Math.imul(ne,ve)|0,d=d+Math.imul(ne,me)|0,d=d+Math.imul(ie,ve)|0,y=y+Math.imul(ie,me)|0,x=x+Math.imul(Q,be)|0,d=d+Math.imul(Q,ge)|0,d=d+Math.imul(Y,be)|0,y=y+Math.imul(Y,ge)|0,x=x+Math.imul(V,xe)|0,d=d+Math.imul(V,ye)|0,d=d+Math.imul(K,xe)|0,y=y+Math.imul(K,ye)|0,x=x+Math.imul(q,we)|0,d=d+Math.imul(q,Ae)|0,d=d+Math.imul(H,we)|0,y=y+Math.imul(H,Ae)|0,x=x+Math.imul(_,Ee)|0,d=d+Math.imul(_,Se)|0,d=d+Math.imul(L,Ee)|0,y=y+Math.imul(L,Se)|0,x=x+Math.imul(h,_e)|0,d=d+Math.imul(h,Te)|0,d=d+Math.imul(k,_e)|0,y=y+Math.imul(k,Te)|0;var Jt=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Jt>>>26)|0,Jt&=67108863,x=Math.imul(se,pe),d=Math.imul(se,he),d=d+Math.imul(ce,pe)|0,y=Math.imul(ce,he),x=x+Math.imul(ae,ve)|0,d=d+Math.imul(ae,me)|0,d=d+Math.imul(oe,ve)|0,y=y+Math.imul(oe,me)|0,x=x+Math.imul(ne,be)|0,d=d+Math.imul(ne,ge)|0,d=d+Math.imul(ie,be)|0,y=y+Math.imul(ie,ge)|0,x=x+Math.imul(Q,xe)|0,d=d+Math.imul(Q,ye)|0,d=d+Math.imul(Y,xe)|0,y=y+Math.imul(Y,ye)|0,x=x+Math.imul(V,we)|0,d=d+Math.imul(V,Ae)|0,d=d+Math.imul(K,we)|0,y=y+Math.imul(K,Ae)|0,x=x+Math.imul(q,Ee)|0,d=d+Math.imul(q,Se)|0,d=d+Math.imul(H,Ee)|0,y=y+Math.imul(H,Se)|0,x=x+Math.imul(_,_e)|0,d=d+Math.imul(_,Te)|0,d=d+Math.imul(L,_e)|0,y=y+Math.imul(L,Te)|0,x=x+Math.imul(h,ke)|0,d=d+Math.imul(h,Ce)|0,d=d+Math.imul(k,ke)|0,y=y+Math.imul(k,Ce)|0;var qt=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(qt>>>26)|0,qt&=67108863,x=Math.imul(ue,pe),d=Math.imul(ue,he),d=d+Math.imul(le,pe)|0,y=Math.imul(le,he),x=x+Math.imul(se,ve)|0,d=d+Math.imul(se,me)|0,d=d+Math.imul(ce,ve)|0,y=y+Math.imul(ce,me)|0,x=x+Math.imul(ae,be)|0,d=d+Math.imul(ae,ge)|0,d=d+Math.imul(oe,be)|0,y=y+Math.imul(oe,ge)|0,x=x+Math.imul(ne,xe)|0,d=d+Math.imul(ne,ye)|0,d=d+Math.imul(ie,xe)|0,y=y+Math.imul(ie,ye)|0,x=x+Math.imul(Q,we)|0,d=d+Math.imul(Q,Ae)|0,d=d+Math.imul(Y,we)|0,y=y+Math.imul(Y,Ae)|0,x=x+Math.imul(V,Ee)|0,d=d+Math.imul(V,Se)|0,d=d+Math.imul(K,Ee)|0,y=y+Math.imul(K,Se)|0,x=x+Math.imul(q,_e)|0,d=d+Math.imul(q,Te)|0,d=d+Math.imul(H,_e)|0,y=y+Math.imul(H,Te)|0,x=x+Math.imul(_,ke)|0,d=d+Math.imul(_,Ce)|0,d=d+Math.imul(L,ke)|0,y=y+Math.imul(L,Ce)|0,x=x+Math.imul(h,Oe)|0,d=d+Math.imul(h,Pe)|0,d=d+Math.imul(k,Oe)|0,y=y+Math.imul(k,Pe)|0;var Ha=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Ha>>>26)|0,Ha&=67108863,x=Math.imul(fe,pe),d=Math.imul(fe,he),d=d+Math.imul(de,pe)|0,y=Math.imul(de,he),x=x+Math.imul(ue,ve)|0,d=d+Math.imul(ue,me)|0,d=d+Math.imul(le,ve)|0,y=y+Math.imul(le,me)|0,x=x+Math.imul(se,be)|0,d=d+Math.imul(se,ge)|0,d=d+Math.imul(ce,be)|0,y=y+Math.imul(ce,ge)|0,x=x+Math.imul(ae,xe)|0,d=d+Math.imul(ae,ye)|0,d=d+Math.imul(oe,xe)|0,y=y+Math.imul(oe,ye)|0,x=x+Math.imul(ne,we)|0,d=d+Math.imul(ne,Ae)|0,d=d+Math.imul(ie,we)|0,y=y+Math.imul(ie,Ae)|0,x=x+Math.imul(Q,Ee)|0,d=d+Math.imul(Q,Se)|0,d=d+Math.imul(Y,Ee)|0,y=y+Math.imul(Y,Se)|0,x=x+Math.imul(V,_e)|0,d=d+Math.imul(V,Te)|0,d=d+Math.imul(K,_e)|0,y=y+Math.imul(K,Te)|0,x=x+Math.imul(q,ke)|0,d=d+Math.imul(q,Ce)|0,d=d+Math.imul(H,ke)|0,y=y+Math.imul(H,Ce)|0,x=x+Math.imul(_,Oe)|0,d=d+Math.imul(_,Pe)|0,d=d+Math.imul(L,Oe)|0,y=y+Math.imul(L,Pe)|0,x=x+Math.imul(h,Me)|0,d=d+Math.imul(h,Be)|0,d=d+Math.imul(k,Me)|0,y=y+Math.imul(k,Be)|0;var za=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(za>>>26)|0,za&=67108863,x=Math.imul(fe,ve),d=Math.imul(fe,me),d=d+Math.imul(de,ve)|0,y=Math.imul(de,me),x=x+Math.imul(ue,be)|0,d=d+Math.imul(ue,ge)|0,d=d+Math.imul(le,be)|0,y=y+Math.imul(le,ge)|0,x=x+Math.imul(se,xe)|0,d=d+Math.imul(se,ye)|0,d=d+Math.imul(ce,xe)|0,y=y+Math.imul(ce,ye)|0,x=x+Math.imul(ae,we)|0,d=d+Math.imul(ae,Ae)|0,d=d+Math.imul(oe,we)|0,y=y+Math.imul(oe,Ae)|0,x=x+Math.imul(ne,Ee)|0,d=d+Math.imul(ne,Se)|0,d=d+Math.imul(ie,Ee)|0,y=y+Math.imul(ie,Se)|0,x=x+Math.imul(Q,_e)|0,d=d+Math.imul(Q,Te)|0,d=d+Math.imul(Y,_e)|0,y=y+Math.imul(Y,Te)|0,x=x+Math.imul(V,ke)|0,d=d+Math.imul(V,Ce)|0,d=d+Math.imul(K,ke)|0,y=y+Math.imul(K,Ce)|0,x=x+Math.imul(q,Oe)|0,d=d+Math.imul(q,Pe)|0,d=d+Math.imul(H,Oe)|0,y=y+Math.imul(H,Pe)|0,x=x+Math.imul(_,Me)|0,d=d+Math.imul(_,Be)|0,d=d+Math.imul(L,Me)|0,y=y+Math.imul(L,Be)|0;var Ga=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Ga>>>26)|0,Ga&=67108863,x=Math.imul(fe,be),d=Math.imul(fe,ge),d=d+Math.imul(de,be)|0,y=Math.imul(de,ge),x=x+Math.imul(ue,xe)|0,d=d+Math.imul(ue,ye)|0,d=d+Math.imul(le,xe)|0,y=y+Math.imul(le,ye)|0,x=x+Math.imul(se,we)|0,d=d+Math.imul(se,Ae)|0,d=d+Math.imul(ce,we)|0,y=y+Math.imul(ce,Ae)|0,x=x+Math.imul(ae,Ee)|0,d=d+Math.imul(ae,Se)|0,d=d+Math.imul(oe,Ee)|0,y=y+Math.imul(oe,Se)|0,x=x+Math.imul(ne,_e)|0,d=d+Math.imul(ne,Te)|0,d=d+Math.imul(ie,_e)|0,y=y+Math.imul(ie,Te)|0,x=x+Math.imul(Q,ke)|0,d=d+Math.imul(Q,Ce)|0,d=d+Math.imul(Y,ke)|0,y=y+Math.imul(Y,Ce)|0,x=x+Math.imul(V,Oe)|0,d=d+Math.imul(V,Pe)|0,d=d+Math.imul(K,Oe)|0,y=y+Math.imul(K,Pe)|0,x=x+Math.imul(q,Me)|0,d=d+Math.imul(q,Be)|0,d=d+Math.imul(H,Me)|0,y=y+Math.imul(H,Be)|0;var Xa=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Xa>>>26)|0,Xa&=67108863,x=Math.imul(fe,xe),d=Math.imul(fe,ye),d=d+Math.imul(de,xe)|0,y=Math.imul(de,ye),x=x+Math.imul(ue,we)|0,d=d+Math.imul(ue,Ae)|0,d=d+Math.imul(le,we)|0,y=y+Math.imul(le,Ae)|0,x=x+Math.imul(se,Ee)|0,d=d+Math.imul(se,Se)|0,d=d+Math.imul(ce,Ee)|0,y=y+Math.imul(ce,Se)|0,x=x+Math.imul(ae,_e)|0,d=d+Math.imul(ae,Te)|0,d=d+Math.imul(oe,_e)|0,y=y+Math.imul(oe,Te)|0,x=x+Math.imul(ne,ke)|0,d=d+Math.imul(ne,Ce)|0,d=d+Math.imul(ie,ke)|0,y=y+Math.imul(ie,Ce)|0,x=x+Math.imul(Q,Oe)|0,d=d+Math.imul(Q,Pe)|0,d=d+Math.imul(Y,Oe)|0,y=y+Math.imul(Y,Pe)|0,x=x+Math.imul(V,Me)|0,d=d+Math.imul(V,Be)|0,d=d+Math.imul(K,Me)|0,y=y+Math.imul(K,Be)|0;var Ka=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Ka>>>26)|0,Ka&=67108863,x=Math.imul(fe,we),d=Math.imul(fe,Ae),d=d+Math.imul(de,we)|0,y=Math.imul(de,Ae),x=x+Math.imul(ue,Ee)|0,d=d+Math.imul(ue,Se)|0,d=d+Math.imul(le,Ee)|0,y=y+Math.imul(le,Se)|0,x=x+Math.imul(se,_e)|0,d=d+Math.imul(se,Te)|0,d=d+Math.imul(ce,_e)|0,y=y+Math.imul(ce,Te)|0,x=x+Math.imul(ae,ke)|0,d=d+Math.imul(ae,Ce)|0,d=d+Math.imul(oe,ke)|0,y=y+Math.imul(oe,Ce)|0,x=x+Math.imul(ne,Oe)|0,d=d+Math.imul(ne,Pe)|0,d=d+Math.imul(ie,Oe)|0,y=y+Math.imul(ie,Pe)|0,x=x+Math.imul(Q,Me)|0,d=d+Math.imul(Q,Be)|0,d=d+Math.imul(Y,Me)|0,y=y+Math.imul(Y,Be)|0;var Va=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Va>>>26)|0,Va&=67108863,x=Math.imul(fe,Ee),d=Math.imul(fe,Se),d=d+Math.imul(de,Ee)|0,y=Math.imul(de,Se),x=x+Math.imul(ue,_e)|0,d=d+Math.imul(ue,Te)|0,d=d+Math.imul(le,_e)|0,y=y+Math.imul(le,Te)|0,x=x+Math.imul(se,ke)|0,d=d+Math.imul(se,Ce)|0,d=d+Math.imul(ce,ke)|0,y=y+Math.imul(ce,Ce)|0,x=x+Math.imul(ae,Oe)|0,d=d+Math.imul(ae,Pe)|0,d=d+Math.imul(oe,Oe)|0,y=y+Math.imul(oe,Pe)|0,x=x+Math.imul(ne,Me)|0,d=d+Math.imul(ne,Be)|0,d=d+Math.imul(ie,Me)|0,y=y+Math.imul(ie,Be)|0;var Za=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Za>>>26)|0,Za&=67108863,x=Math.imul(fe,_e),d=Math.imul(fe,Te),d=d+Math.imul(de,_e)|0,y=Math.imul(de,Te),x=x+Math.imul(ue,ke)|0,d=d+Math.imul(ue,Ce)|0,d=d+Math.imul(le,ke)|0,y=y+Math.imul(le,Ce)|0,x=x+Math.imul(se,Oe)|0,d=d+Math.imul(se,Pe)|0,d=d+Math.imul(ce,Oe)|0,y=y+Math.imul(ce,Pe)|0,x=x+Math.imul(ae,Me)|0,d=d+Math.imul(ae,Be)|0,d=d+Math.imul(oe,Me)|0,y=y+Math.imul(oe,Be)|0;var Qa=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Qa>>>26)|0,Qa&=67108863,x=Math.imul(fe,ke),d=Math.imul(fe,Ce),d=d+Math.imul(de,ke)|0,y=Math.imul(de,Ce),x=x+Math.imul(ue,Oe)|0,d=d+Math.imul(ue,Pe)|0,d=d+Math.imul(le,Oe)|0,y=y+Math.imul(le,Pe)|0,x=x+Math.imul(se,Me)|0,d=d+Math.imul(se,Be)|0,d=d+Math.imul(ce,Me)|0,y=y+Math.imul(ce,Be)|0;var Wa=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Wa>>>26)|0,Wa&=67108863,x=Math.imul(fe,Oe),d=Math.imul(fe,Pe),d=d+Math.imul(de,Oe)|0,y=Math.imul(de,Pe),x=x+Math.imul(ue,Me)|0,d=d+Math.imul(ue,Be)|0,d=d+Math.imul(le,Me)|0,y=y+Math.imul(le,Be)|0;var Ya=(S+x|0)+((d&8191)<<13)|0;S=(y+(d>>>13)|0)+(Ya>>>26)|0,Ya&=67108863,x=Math.imul(fe,Me),d=Math.imul(fe,Be),d=d+Math.imul(de,Me)|0,y=Math.imul(de,Be);var $a=(S+x|0)+((d&8191)<<13)|0;return S=(y+(d>>>13)|0)+($a>>>26)|0,$a&=67108863,g[0]=ln,g[1]=tr,g[2]=nr,g[3]=It,g[4]=Nt,g[5]=Dt,g[6]=Jt,g[7]=qt,g[8]=Ha,g[9]=za,g[10]=Ga,g[11]=Xa,g[12]=Ka,g[13]=Va,g[14]=Za,g[15]=Qa,g[16]=Wa,g[17]=Ya,g[18]=$a,S!==0&&(g[19]=S,b.length++),b};Math.imul||(A=T);function O(M,v,E){E.negative=v.negative^M.negative,E.length=M.length+v.length;for(var b=0,l=0,p=0;p>>26)|0,l+=g>>>26,g&=67108863}E.words[p]=S,b=g,g=l}return b!==0?E.words[p]=b:E.length--,E.strip()}function B(M,v,E){var b=new F;return b.mulp(M,v,E)}i.prototype.mulTo=function(v,E){var b,l=this.length+v.length;return this.length===10&&v.length===10?b=A(this,v,E):l<63?b=T(this,v,E):l<1024?b=O(this,v,E):b=B(this,v,E),b};function F(M,v){this.x=M,this.y=v}F.prototype.makeRBT=function(v){for(var E=new Array(v),b=i.prototype._countBits(v)-1,l=0;l>=1;return l},F.prototype.permute=function(v,E,b,l,p,g){for(var S=0;S>>1)p++;return 1<>>13,b[2*g+1]=p&8191,p=p>>>13;for(g=2*E;g>=26,E+=l/67108864|0,E+=p>>>26,this.words[b]=p&67108863}return E!==0&&(this.words[b]=E,this.length++),this},i.prototype.muln=function(v){return this.clone().imuln(v)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(v){var E=w(v);if(E.length===0)return new i(1);for(var b=this,l=0;l=0);var E=v%26,b=(v-E)/26,l=67108863>>>26-E<<26-E,p;if(E!==0){var g=0;for(p=0;p>>26-E}g&&(this.words[p]=g,this.length++)}if(b!==0){for(p=this.length-1;p>=0;p--)this.words[p+b]=this.words[p];for(p=0;p=0);var l;E?l=(E-E%26)/26:l=0;var p=v%26,g=Math.min((v-p)/26,this.length),S=67108863^67108863>>>p<g)for(this.length-=g,d=0;d=0&&(y!==0||d>=l);d--){var C=this.words[d]|0;this.words[d]=y<<26-p|C>>>p,y=C&S}return x&&y!==0&&(x.words[x.length++]=y),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},i.prototype.ishrn=function(v,E,b){return r(this.negative===0),this.iushrn(v,E,b)},i.prototype.shln=function(v){return this.clone().ishln(v)},i.prototype.ushln=function(v){return this.clone().iushln(v)},i.prototype.shrn=function(v){return this.clone().ishrn(v)},i.prototype.ushrn=function(v){return this.clone().iushrn(v)},i.prototype.testn=function(v){r(typeof v=="number"&&v>=0);var E=v%26,b=(v-E)/26,l=1<=0);var E=v%26,b=(v-E)/26;if(r(this.negative===0,"imaskn works only with positive numbers"),this.length<=b)return this;if(E!==0&&b++,this.length=Math.min(b,this.length),E!==0){var l=67108863^67108863>>>E<=67108864;E++)this.words[E]-=67108864,E===this.length-1?this.words[E+1]=1:this.words[E+1]++;return this.length=Math.max(this.length,E+1),this},i.prototype.isubn=function(v){if(r(typeof v=="number"),r(v<67108864),v<0)return this.iaddn(-v);if(this.negative!==0)return this.negative=0,this.iaddn(v),this.negative=1,this;if(this.words[0]-=v,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var E=0;E>26)-(x/67108864|0),this.words[p+b]=g&67108863}for(;p>26,this.words[p+b]=g&67108863;if(S===0)return this.strip();for(r(S===-1),S=0,p=0;p>26,this.words[p]=g&67108863;return this.negative=1,this.strip()},i.prototype._wordDiv=function(v,E){var b=this.length-v.length,l=this.clone(),p=v,g=p.words[p.length-1]|0,S=this._countBits(g);b=26-S,b!==0&&(p=p.ushln(b),l.iushln(b),g=p.words[p.length-1]|0);var x=l.length-p.length,d;if(E!=="mod"){d=new i(null),d.length=x+1,d.words=new Array(d.length);for(var y=0;y=0;h--){var k=(l.words[p.length+h]|0)*67108864+(l.words[p.length+h-1]|0);for(k=Math.min(k/g|0,67108863),l._ishlnsubmul(p,k,h);l.negative!==0;)k--,l.negative=0,l._ishlnsubmul(p,1,h),l.isZero()||(l.negative^=1);d&&(d.words[h]=k)}return d&&d.strip(),l.strip(),E!=="div"&&b!==0&&l.iushrn(b),{div:d||null,mod:l}},i.prototype.divmod=function(v,E,b){if(r(!v.isZero()),this.isZero())return{div:new i(0),mod:new i(0)};var l,p,g;return this.negative!==0&&v.negative===0?(g=this.neg().divmod(v,E),E!=="mod"&&(l=g.div.neg()),E!=="div"&&(p=g.mod.neg(),b&&p.negative!==0&&p.iadd(v)),{div:l,mod:p}):this.negative===0&&v.negative!==0?(g=this.divmod(v.neg(),E),E!=="mod"&&(l=g.div.neg()),{div:l,mod:g.mod}):(this.negative&v.negative)!==0?(g=this.neg().divmod(v.neg(),E),E!=="div"&&(p=g.mod.neg(),b&&p.negative!==0&&p.isub(v)),{div:g.div,mod:p}):v.length>this.length||this.cmp(v)<0?{div:new i(0),mod:this}:v.length===1?E==="div"?{div:this.divn(v.words[0]),mod:null}:E==="mod"?{div:null,mod:new i(this.modn(v.words[0]))}:{div:this.divn(v.words[0]),mod:new i(this.modn(v.words[0]))}:this._wordDiv(v,E)},i.prototype.div=function(v){return this.divmod(v,"div",!1).div},i.prototype.mod=function(v){return this.divmod(v,"mod",!1).mod},i.prototype.umod=function(v){return this.divmod(v,"mod",!0).mod},i.prototype.divRound=function(v){var E=this.divmod(v);if(E.mod.isZero())return E.div;var b=E.div.negative!==0?E.mod.isub(v):E.mod,l=v.ushrn(1),p=v.andln(1),g=b.cmp(l);return g<0||p===1&&g===0?E.div:E.div.negative!==0?E.div.isubn(1):E.div.iaddn(1)},i.prototype.modn=function(v){r(v<=67108863);for(var E=(1<<26)%v,b=0,l=this.length-1;l>=0;l--)b=(E*b+(this.words[l]|0))%v;return b},i.prototype.idivn=function(v){r(v<=67108863);for(var E=0,b=this.length-1;b>=0;b--){var l=(this.words[b]|0)+E*67108864;this.words[b]=l/v|0,E=l%v}return this.strip()},i.prototype.divn=function(v){return this.clone().idivn(v)},i.prototype.egcd=function(v){r(v.negative===0),r(!v.isZero());var E=this,b=v.clone();E.negative!==0?E=E.umod(v):E=E.clone();for(var l=new i(1),p=new i(0),g=new i(0),S=new i(1),x=0;E.isEven()&&b.isEven();)E.iushrn(1),b.iushrn(1),++x;for(var d=b.clone(),y=E.clone();!E.isZero();){for(var C=0,h=1;(E.words[0]&h)===0&&C<26;++C,h<<=1);if(C>0)for(E.iushrn(C);C-- >0;)(l.isOdd()||p.isOdd())&&(l.iadd(d),p.isub(y)),l.iushrn(1),p.iushrn(1);for(var k=0,J=1;(b.words[0]&J)===0&&k<26;++k,J<<=1);if(k>0)for(b.iushrn(k);k-- >0;)(g.isOdd()||S.isOdd())&&(g.iadd(d),S.isub(y)),g.iushrn(1),S.iushrn(1);E.cmp(b)>=0?(E.isub(b),l.isub(g),p.isub(S)):(b.isub(E),g.isub(l),S.isub(p))}return{a:g,b:S,gcd:b.iushln(x)}},i.prototype._invmp=function(v){r(v.negative===0),r(!v.isZero());var E=this,b=v.clone();E.negative!==0?E=E.umod(v):E=E.clone();for(var l=new i(1),p=new i(0),g=b.clone();E.cmpn(1)>0&&b.cmpn(1)>0;){for(var S=0,x=1;(E.words[0]&x)===0&&S<26;++S,x<<=1);if(S>0)for(E.iushrn(S);S-- >0;)l.isOdd()&&l.iadd(g),l.iushrn(1);for(var d=0,y=1;(b.words[0]&y)===0&&d<26;++d,y<<=1);if(d>0)for(b.iushrn(d);d-- >0;)p.isOdd()&&p.iadd(g),p.iushrn(1);E.cmp(b)>=0?(E.isub(b),l.isub(p)):(b.isub(E),p.isub(l))}var C;return E.cmpn(1)===0?C=l:C=p,C.cmpn(0)<0&&C.iadd(v),C},i.prototype.gcd=function(v){if(this.isZero())return v.abs();if(v.isZero())return this.abs();var E=this.clone(),b=v.clone();E.negative=0,b.negative=0;for(var l=0;E.isEven()&&b.isEven();l++)E.iushrn(1),b.iushrn(1);do{for(;E.isEven();)E.iushrn(1);for(;b.isEven();)b.iushrn(1);var p=E.cmp(b);if(p<0){var g=E;E=b,b=g}else if(p===0||b.cmpn(1)===0)break;E.isub(b)}while(!0);return b.iushln(l)},i.prototype.invm=function(v){return this.egcd(v).a.umod(v)},i.prototype.isEven=function(){return(this.words[0]&1)===0},i.prototype.isOdd=function(){return(this.words[0]&1)===1},i.prototype.andln=function(v){return this.words[0]&v},i.prototype.bincn=function(v){r(typeof v=="number");var E=v%26,b=(v-E)/26,l=1<>>26,S&=67108863,this.words[g]=S}return p!==0&&(this.words[g]=p,this.length++),this},i.prototype.isZero=function(){return this.length===1&&this.words[0]===0},i.prototype.cmpn=function(v){var E=v<0;if(this.negative!==0&&!E)return-1;if(this.negative===0&&E)return 1;this.strip();var b;if(this.length>1)b=1;else{E&&(v=-v),r(v<=67108863,"Number is too big");var l=this.words[0]|0;b=l===v?0:lv.length)return 1;if(this.length=0;b--){var l=this.words[b]|0,p=v.words[b]|0;if(l!==p){lp&&(E=1);break}}return E},i.prototype.gtn=function(v){return this.cmpn(v)===1},i.prototype.gt=function(v){return this.cmp(v)===1},i.prototype.gten=function(v){return this.cmpn(v)>=0},i.prototype.gte=function(v){return this.cmp(v)>=0},i.prototype.ltn=function(v){return this.cmpn(v)===-1},i.prototype.lt=function(v){return this.cmp(v)===-1},i.prototype.lten=function(v){return this.cmpn(v)<=0},i.prototype.lte=function(v){return this.cmp(v)<=0},i.prototype.eqn=function(v){return this.cmpn(v)===0},i.prototype.eq=function(v){return this.cmp(v)===0},i.red=function(v){return new X(v)},i.prototype.toRed=function(v){return r(!this.red,"Already a number in reduction context"),r(this.negative===0,"red works only with positives"),v.convertTo(this)._forceRed(v)},i.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(v){return this.red=v,this},i.prototype.forceRed=function(v){return r(!this.red,"Already a number in reduction context"),this._forceRed(v)},i.prototype.redAdd=function(v){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,v)},i.prototype.redIAdd=function(v){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,v)},i.prototype.redSub=function(v){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,v)},i.prototype.redISub=function(v){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,v)},i.prototype.redShl=function(v){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,v)},i.prototype.redMul=function(v){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,v),this.red.mul(this,v)},i.prototype.redIMul=function(v){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,v),this.red.imul(this,v)},i.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(v){return r(this.red&&!v.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,v)};var I={k256:null,p224:null,p192:null,p25519:null};function D(M,v){this.name=M,this.p=new i(v,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}D.prototype._tmp=function(){var v=new i(null);return v.words=new Array(Math.ceil(this.n/13)),v},D.prototype.ireduce=function(v){var E=v,b;do this.split(E,this.tmp),E=this.imulK(E),E=E.iadd(this.tmp),b=E.bitLength();while(b>this.n);var l=b0?E.isub(this.p):E.strip!==void 0?E.strip():E._strip(),E},D.prototype.split=function(v,E){v.iushrn(this.n,0,E)},D.prototype.imulK=function(v){return v.imul(this.k)};function z(){D.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(z,D),z.prototype.split=function(v,E){for(var b=4194303,l=Math.min(v.length,9),p=0;p>>22,g=S}g>>>=22,v.words[p-10]=g,g===0&&v.length>10?v.length-=10:v.length-=9},z.prototype.imulK=function(v){v.words[v.length]=0,v.words[v.length+1]=0,v.length+=2;for(var E=0,b=0;b>>=26,v.words[b]=p,E=l}return E!==0&&(v.words[v.length++]=E),v},i._prime=function(v){if(I[v])return I[v];var E;if(v==="k256")E=new z;else if(v==="p224")E=new G;else if(v==="p192")E=new j;else if(v==="p25519")E=new Z;else throw new Error("Unknown prime "+v);return I[v]=E,E};function X(M){if(typeof M=="string"){var v=i._prime(M);this.m=v.p,this.prime=v}else r(M.gtn(1),"modulus must be greater than 1"),this.m=M,this.prime=null}X.prototype._verify1=function(v){r(v.negative===0,"red works only with positives"),r(v.red,"red works only with red numbers")},X.prototype._verify2=function(v,E){r((v.negative|E.negative)===0,"red works only with positives"),r(v.red&&v.red===E.red,"red works only with red numbers")},X.prototype.imod=function(v){return this.prime?this.prime.ireduce(v)._forceRed(this):v.umod(this.m)._forceRed(this)},X.prototype.neg=function(v){return v.isZero()?v.clone():this.m.sub(v)._forceRed(this)},X.prototype.add=function(v,E){this._verify2(v,E);var b=v.add(E);return b.cmp(this.m)>=0&&b.isub(this.m),b._forceRed(this)},X.prototype.iadd=function(v,E){this._verify2(v,E);var b=v.iadd(E);return b.cmp(this.m)>=0&&b.isub(this.m),b},X.prototype.sub=function(v,E){this._verify2(v,E);var b=v.sub(E);return b.cmpn(0)<0&&b.iadd(this.m),b._forceRed(this)},X.prototype.isub=function(v,E){this._verify2(v,E);var b=v.isub(E);return b.cmpn(0)<0&&b.iadd(this.m),b},X.prototype.shl=function(v,E){return this._verify1(v),this.imod(v.ushln(E))},X.prototype.imul=function(v,E){return this._verify2(v,E),this.imod(v.imul(E))},X.prototype.mul=function(v,E){return this._verify2(v,E),this.imod(v.mul(E))},X.prototype.isqr=function(v){return this.imul(v,v.clone())},X.prototype.sqr=function(v){return this.mul(v,v)},X.prototype.sqrt=function(v){if(v.isZero())return v.clone();var E=this.m.andln(3);if(r(E%2===1),E===3){var b=this.m.add(new i(1)).iushrn(2);return this.pow(v,b)}for(var l=this.m.subn(1),p=0;!l.isZero()&&l.andln(1)===0;)p++,l.iushrn(1);r(!l.isZero());var g=new i(1).toRed(this),S=g.redNeg(),x=this.m.subn(1).iushrn(1),d=this.m.bitLength();for(d=new i(2*d*d).toRed(this);this.pow(d,x).cmp(S)!==0;)d.redIAdd(S);for(var y=this.pow(d,l),C=this.pow(v,l.addn(1).iushrn(1)),h=this.pow(v,l),k=p;h.cmp(g)!==0;){for(var J=h,_=0;J.cmp(g)!==0;_++)J=J.redSqr();r(_=0;p--){for(var y=E.words[p],C=d-1;C>=0;C--){var h=y>>C&1;if(g!==l[0]&&(g=this.sqr(g)),h===0&&S===0){x=0;continue}S<<=1,S|=h,x++,!(x!==b&&(p!==0||C!==0))&&(g=this.mul(g,l[S]),x=0,S=0)}d=26}return g},X.prototype.convertTo=function(v){var E=v.umod(this.m);return E===v?E.clone():E},X.prototype.convertFrom=function(v){var E=v.clone();return E.red=null,E},i.mont=function(v){return new U(v)};function U(M){X.call(this,M),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}n(U,X),U.prototype.convertTo=function(v){return this.imod(v.ushln(this.shift))},U.prototype.convertFrom=function(v){var E=this.imod(v.mul(this.rinv));return E.red=null,E},U.prototype.imul=function(v,E){if(v.isZero()||E.isZero())return v.words[0]=0,v.length=1,v;var b=v.imul(E),l=b.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=b.isub(l).iushrn(this.shift),g=p;return p.cmp(this.m)>=0?g=p.isub(this.m):p.cmpn(0)<0&&(g=p.iadd(this.m)),g._forceRed(this)},U.prototype.mul=function(v,E){if(v.isZero()||E.isZero())return new i(0)._forceRed(this);var b=v.mul(E),l=b.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),p=b.isub(l).iushrn(this.shift),g=p;return p.cmp(this.m)>=0?g=p.isub(this.m):p.cmpn(0)<0&&(g=p.iadd(this.m)),g._forceRed(this)},U.prototype.invm=function(v){var E=this.imod(v._invmp(this.m).mul(this.r2));return E._forceRed(this)}})(typeof Om>"u"||Om,Bw)});var pa=P((Mee,Lw)=>{Lw.exports=Fw;function Fw(t,e){if(!t)throw new Error(e||"Assertion failed")}Fw.equal=function(e,r,n){if(e!=r)throw new Error(n||"Assertion failed: "+e+" != "+r)}});var Pm=P(Nw=>{"use strict";var ep=Nw;function wj(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if(typeof t!="string"){for(var n=0;n>8,o=i&255;a?r.push(a,o):r.push(o)}return r}ep.toArray=wj;function Rw(t){return t.length===1?"0"+t:t}ep.zero2=Rw;function Iw(t){for(var e="",r=0;r{"use strict";var xn=Dw,Aj=ti(),Ej=pa(),rp=Pm();xn.assert=Ej;xn.toArray=rp.toArray;xn.zero2=rp.zero2;xn.toHex=rp.toHex;xn.encode=rp.encode;function Sj(t,e,r){var n=new Array(Math.max(t.bitLength(),r)+1);n.fill(0);for(var i=1<(i>>1)-1?c=(i>>1)-u:c=u,a.isubn(c)):c=0,n[o]=c,a.iushrn(1)}return n}xn.getNAF=Sj;function _j(t,e){var r=[[],[]];t=t.clone(),e=e.clone();for(var n=0,i=0,a;t.cmpn(-n)>0||e.cmpn(-i)>0;){var o=t.andln(3)+n&3,c=e.andln(3)+i&3;o===3&&(o=-1),c===3&&(c=-1);var u;(o&1)===0?u=0:(a=t.andln(7)+n&7,(a===3||a===5)&&c===2?u=-o:u=o),r[0].push(u);var s;(c&1)===0?s=0:(a=e.andln(7)+i&7,(a===3||a===5)&&o===2?s=-c:s=c),r[1].push(s),2*n===u+1&&(n=1-n),2*i===s+1&&(i=1-i),t.iushrn(1),e.iushrn(1)}return r}xn.getJSF=_j;function Tj(t,e,r){var n="_"+e;t.prototype[e]=function(){return this[n]!==void 0?this[n]:this[n]=r.call(this)}}xn.cachedProperty=Tj;function kj(t){return typeof t=="string"?xn.toArray(t,"hex"):t}xn.parseBytes=kj;function Cj(t){return new Aj(t,"hex","le")}xn.intFromLE=Cj});var Lm=P((Lee,Fm)=>{var Mm;Fm.exports=function(e){return Mm||(Mm=new ha(null)),Mm.generate(e)};function ha(t){this.rand=t}Fm.exports.Rand=ha;ha.prototype.generate=function(e){return this._rand(e)};ha.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var r=new Uint8Array(e),n=0;n{"use strict";var Oo=ti(),Yu=Ft(),tp=Yu.getNAF,Oj=Yu.getJSF,np=Yu.assert;function va(t,e){this.type=t,this.p=new Oo(e.p,16),this.red=e.prime?Oo.red(e.prime):Oo.mont(this.p),this.zero=new Oo(0).toRed(this.red),this.one=new Oo(1).toRed(this.red),this.two=new Oo(2).toRed(this.red),this.n=e.n&&new Oo(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}Jw.exports=va;va.prototype.point=function(){throw new Error("Not implemented")};va.prototype.validate=function(){throw new Error("Not implemented")};va.prototype._fixedNafMul=function(e,r){np(e.precomputed);var n=e._getDoubles(),i=tp(r,1,this._bitLength),a=(1<=c;s--)u=(u<<1)+i[s];o.push(u)}for(var f=this.jpoint(null,null,null),m=this.jpoint(null,null,null),w=a;w>0;w--){for(c=0;c=0;u--){for(var s=0;u>=0&&o[u]===0;u--)s++;if(u>=0&&s++,c=c.dblp(s),u<0)break;var f=o[u];np(f!==0),e.type==="affine"?f>0?c=c.mixedAdd(a[f-1>>1]):c=c.mixedAdd(a[-f-1>>1].neg()):f>0?c=c.add(a[f-1>>1]):c=c.add(a[-f-1>>1].neg())}return e.type==="affine"?c.toP():c};va.prototype._wnafMulAdd=function(e,r,n,i,a){var o=this._wnafT1,c=this._wnafT2,u=this._wnafT3,s=0,f,m,w;for(f=0;f=1;f-=2){var A=f-1,O=f;if(o[A]!==1||o[O]!==1){u[A]=tp(n[A],o[A],this._bitLength),u[O]=tp(n[O],o[O],this._bitLength),s=Math.max(u[A].length,s),s=Math.max(u[O].length,s);continue}var B=[r[A],null,null,r[O]];r[A].y.cmp(r[O].y)===0?(B[1]=r[A].add(r[O]),B[2]=r[A].toJ().mixedAdd(r[O].neg())):r[A].y.cmp(r[O].y.redNeg())===0?(B[1]=r[A].toJ().mixedAdd(r[O]),B[2]=r[A].add(r[O].neg())):(B[1]=r[A].toJ().mixedAdd(r[O]),B[2]=r[A].toJ().mixedAdd(r[O].neg()));var F=[-3,-1,-5,-7,0,7,5,1,3],I=Oj(n[A],n[O]);for(s=Math.max(I[0].length,s),u[A]=new Array(s),u[O]=new Array(s),m=0;m=0;f--){for(var Z=0;f>=0;){var X=!0;for(m=0;m=0&&Z++,G=G.dblp(Z),f<0)break;for(m=0;m0?w=c[m][U-1>>1]:U<0&&(w=c[m][-U-1>>1].neg()),w.type==="affine"?G=G.mixedAdd(w):G=G.add(w))}}for(f=0;f=Math.ceil((e.bitLength()+1)/r.step):!1};Yt.prototype._getDoubles=function(e,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var n=[this],i=this,a=0;a{"use strict";var Pj=Ft(),yr=ti(),Rm=Yo(),$s=$u(),Mj=Pj.assert;function $t(t){$s.call(this,"short",t),this.a=new yr(t.a,16).toRed(this.red),this.b=new yr(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=this.a.fromRed().cmpn(0)===0,this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0,this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}Rm($t,$s);qw.exports=$t;$t.prototype._getEndomorphism=function(e){if(!(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)){var r,n;if(e.beta)r=new yr(e.beta,16).toRed(this.red);else{var i=this._getEndoRoots(this.p);r=i[0].cmp(i[1])<0?i[0]:i[1],r=r.toRed(this.red)}if(e.lambda)n=new yr(e.lambda,16);else{var a=this._getEndoRoots(this.n);this.g.mul(a[0]).x.cmp(this.g.x.redMul(r))===0?n=a[0]:(n=a[1],Mj(this.g.mul(n).x.cmp(this.g.x.redMul(r))===0))}var o;return e.basis?o=e.basis.map(function(c){return{a:new yr(c.a,16),b:new yr(c.b,16)}}):o=this._getEndoBasis(n),{beta:r,lambda:n,basis:o}}};$t.prototype._getEndoRoots=function(e){var r=e===this.p?this.red:yr.mont(e),n=new yr(2).toRed(r).redInvm(),i=n.redNeg(),a=new yr(3).toRed(r).redNeg().redSqrt().redMul(n),o=i.redAdd(a).fromRed(),c=i.redSub(a).fromRed();return[o,c]};$t.prototype._getEndoBasis=function(e){for(var r=this.n.ushrn(Math.floor(this.n.bitLength()/2)),n=e,i=this.n.clone(),a=new yr(1),o=new yr(0),c=new yr(0),u=new yr(1),s,f,m,w,T,A,O,B=0,F,I;n.cmpn(0)!==0;){var D=i.div(n);F=i.sub(D.mul(n)),I=c.sub(D.mul(a));var z=u.sub(D.mul(o));if(!m&&F.cmp(r)<0)s=O.neg(),f=a,m=F.neg(),w=I;else if(m&&++B===2)break;O=F,i=n,n=F,c=a,a=I,u=o,o=z}T=F.neg(),A=I;var G=m.sqr().add(w.sqr()),j=T.sqr().add(A.sqr());return j.cmp(G)>=0&&(T=s,A=f),m.negative&&(m=m.neg(),w=w.neg()),T.negative&&(T=T.neg(),A=A.neg()),[{a:m,b:w},{a:T,b:A}]};$t.prototype._endoSplit=function(e){var r=this.endo.basis,n=r[0],i=r[1],a=i.b.mul(e).divRound(this.n),o=n.b.neg().mul(e).divRound(this.n),c=a.mul(n.a),u=o.mul(i.a),s=a.mul(n.b),f=o.mul(i.b),m=e.sub(c).sub(u),w=s.add(f).neg();return{k1:m,k2:w}};$t.prototype.pointFromX=function(e,r){e=new yr(e,16),e.red||(e=e.toRed(this.red));var n=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),i=n.redSqrt();if(i.redSqr().redSub(n).cmp(this.zero)!==0)throw new Error("invalid point");var a=i.fromRed().isOdd();return(r&&!a||!r&&a)&&(i=i.redNeg()),this.point(e,i)};$t.prototype.validate=function(e){if(e.inf)return!0;var r=e.x,n=e.y,i=this.a.redMul(r),a=r.redSqr().redMul(r).redIAdd(i).redIAdd(this.b);return n.redSqr().redISub(a).cmpn(0)===0};$t.prototype._endoWnafMulAdd=function(e,r,n){for(var i=this._endoWnafT1,a=this._endoWnafT2,o=0;o":""};zr.prototype.isInfinity=function(){return this.inf};zr.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(this.x.cmp(e.x)===0)return this.curve.point(null,null);var r=this.y.redSub(e.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(e.x).redInvm()));var n=r.redSqr().redISub(this.x).redISub(e.x),i=r.redMul(this.x.redSub(n)).redISub(this.y);return this.curve.point(n,i)};zr.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(e.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,n=this.x.redSqr(),i=e.redInvm(),a=n.redAdd(n).redIAdd(n).redIAdd(r).redMul(i),o=a.redSqr().redISub(this.x.redAdd(this.x)),c=a.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,c)};zr.prototype.getX=function(){return this.x.fromRed()};zr.prototype.getY=function(){return this.y.fromRed()};zr.prototype.mul=function(e){return e=new yr(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)};zr.prototype.mulAdd=function(e,r,n){var i=[this,r],a=[e,n];return this.curve.endo?this.curve._endoWnafMulAdd(i,a):this.curve._wnafMulAdd(1,i,a,2)};zr.prototype.jmulAdd=function(e,r,n){var i=[this,r],a=[e,n];return this.curve.endo?this.curve._endoWnafMulAdd(i,a,!0):this.curve._wnafMulAdd(1,i,a,2,!0)};zr.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||this.x.cmp(e.x)===0&&this.y.cmp(e.y)===0)};zr.prototype.neg=function(e){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var n=this.precomputed,i=function(a){return a.neg()};r.precomputed={naf:n.naf&&{wnd:n.naf.wnd,points:n.naf.points.map(i)},doubles:n.doubles&&{step:n.doubles.step,points:n.doubles.points.map(i)}}}return r};zr.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var e=this.curve.jpoint(this.x,this.y,this.curve.one);return e};function Wr(t,e,r,n){$s.BasePoint.call(this,t,"jacobian"),e===null&&r===null&&n===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new yr(0)):(this.x=new yr(e,16),this.y=new yr(r,16),this.z=new yr(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}Rm(Wr,$s.BasePoint);$t.prototype.jpoint=function(e,r,n){return new Wr(this,e,r,n)};Wr.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),r=e.redSqr(),n=this.x.redMul(r),i=this.y.redMul(r).redMul(e);return this.curve.point(n,i)};Wr.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)};Wr.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var r=e.z.redSqr(),n=this.z.redSqr(),i=this.x.redMul(r),a=e.x.redMul(n),o=this.y.redMul(r.redMul(e.z)),c=e.y.redMul(n.redMul(this.z)),u=i.redSub(a),s=o.redSub(c);if(u.cmpn(0)===0)return s.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var f=u.redSqr(),m=f.redMul(u),w=i.redMul(f),T=s.redSqr().redIAdd(m).redISub(w).redISub(w),A=s.redMul(w.redISub(T)).redISub(o.redMul(m)),O=this.z.redMul(e.z).redMul(u);return this.curve.jpoint(T,A,O)};Wr.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var r=this.z.redSqr(),n=this.x,i=e.x.redMul(r),a=this.y,o=e.y.redMul(r).redMul(this.z),c=n.redSub(i),u=a.redSub(o);if(c.cmpn(0)===0)return u.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var s=c.redSqr(),f=s.redMul(c),m=n.redMul(s),w=u.redSqr().redIAdd(f).redISub(m).redISub(m),T=u.redMul(m.redISub(w)).redISub(a.redMul(f)),A=this.z.redMul(c);return this.curve.jpoint(w,T,A)};Wr.prototype.dblp=function(e){if(e===0)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var n=this;for(r=0;r=0)return!1;if(n.redIAdd(a),this.x.cmp(n)===0)return!0}};Wr.prototype.inspect=function(){return this.isInfinity()?"":""};Wr.prototype.isInfinity=function(){return this.z.cmpn(0)===0}});var zw=P((Nee,Hw)=>{"use strict";var ec=ti(),Uw=Yo(),ip=$u(),Bj=Ft();function rc(t){ip.call(this,"mont",t),this.a=new ec(t.a,16).toRed(this.red),this.b=new ec(t.b,16).toRed(this.red),this.i4=new ec(4).toRed(this.red).redInvm(),this.two=new ec(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}Uw(rc,ip);Hw.exports=rc;rc.prototype.validate=function(e){var r=e.normalize().x,n=r.redSqr(),i=n.redMul(r).redAdd(n.redMul(this.a)).redAdd(r),a=i.redSqrt();return a.redSqr().cmp(i)===0};function Gr(t,e,r){ip.BasePoint.call(this,t,"projective"),e===null&&r===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new ec(e,16),this.z=new ec(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}Uw(Gr,ip.BasePoint);rc.prototype.decodePoint=function(e,r){return this.point(Bj.toArray(e,r),1)};rc.prototype.point=function(e,r){return new Gr(this,e,r)};rc.prototype.pointFromJSON=function(e){return Gr.fromJSON(this,e)};Gr.prototype.precompute=function(){};Gr.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())};Gr.fromJSON=function(e,r){return new Gr(e,r[0],r[1]||e.one)};Gr.prototype.inspect=function(){return this.isInfinity()?"":""};Gr.prototype.isInfinity=function(){return this.z.cmpn(0)===0};Gr.prototype.dbl=function(){var e=this.x.redAdd(this.z),r=e.redSqr(),n=this.x.redSub(this.z),i=n.redSqr(),a=r.redSub(i),o=r.redMul(i),c=a.redMul(i.redAdd(this.curve.a24.redMul(a)));return this.curve.point(o,c)};Gr.prototype.add=function(){throw new Error("Not supported on Montgomery curve")};Gr.prototype.diffAdd=function(e,r){var n=this.x.redAdd(this.z),i=this.x.redSub(this.z),a=e.x.redAdd(e.z),o=e.x.redSub(e.z),c=o.redMul(n),u=a.redMul(i),s=r.z.redMul(c.redAdd(u).redSqr()),f=r.x.redMul(c.redISub(u).redSqr());return this.curve.point(s,f)};Gr.prototype.mul=function(e){for(var r=e.clone(),n=this,i=this.curve.point(null,null),a=this,o=[];r.cmpn(0)!==0;r.iushrn(1))o.push(r.andln(1));for(var c=o.length-1;c>=0;c--)o[c]===0?(n=n.diffAdd(i,a),i=i.dbl()):(i=n.diffAdd(i,a),n=n.dbl());return i};Gr.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")};Gr.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")};Gr.prototype.eq=function(e){return this.getX().cmp(e.getX())===0};Gr.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this};Gr.prototype.getX=function(){return this.normalize(),this.x.fromRed()}});var Kw=P((Dee,Xw)=>{"use strict";var Fj=Ft(),Ri=ti(),Gw=Yo(),ap=$u(),Lj=Fj.assert;function ni(t){this.twisted=(t.a|0)!==1,this.mOneA=this.twisted&&(t.a|0)===-1,this.extended=this.mOneA,ap.call(this,"edwards",t),this.a=new Ri(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new Ri(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new Ri(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),Lj(!this.twisted||this.c.fromRed().cmpn(1)===0),this.oneC=(t.c|0)===1}Gw(ni,ap);Xw.exports=ni;ni.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)};ni.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)};ni.prototype.jpoint=function(e,r,n,i){return this.point(e,r,n,i)};ni.prototype.pointFromX=function(e,r){e=new Ri(e,16),e.red||(e=e.toRed(this.red));var n=e.redSqr(),i=this.c2.redSub(this.a.redMul(n)),a=this.one.redSub(this.c2.redMul(this.d).redMul(n)),o=i.redMul(a.redInvm()),c=o.redSqrt();if(c.redSqr().redSub(o).cmp(this.zero)!==0)throw new Error("invalid point");var u=c.fromRed().isOdd();return(r&&!u||!r&&u)&&(c=c.redNeg()),this.point(e,c)};ni.prototype.pointFromY=function(e,r){e=new Ri(e,16),e.red||(e=e.toRed(this.red));var n=e.redSqr(),i=n.redSub(this.c2),a=n.redMul(this.d).redMul(this.c2).redSub(this.a),o=i.redMul(a.redInvm());if(o.cmp(this.zero)===0){if(r)throw new Error("invalid point");return this.point(this.zero,e)}var c=o.redSqrt();if(c.redSqr().redSub(o).cmp(this.zero)!==0)throw new Error("invalid point");return c.fromRed().isOdd()!==r&&(c=c.redNeg()),this.point(c,e)};ni.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var r=e.x.redSqr(),n=e.y.redSqr(),i=r.redMul(this.a).redAdd(n),a=this.c2.redMul(this.one.redAdd(this.d.redMul(r).redMul(n)));return i.cmp(a)===0};function fr(t,e,r,n,i){ap.BasePoint.call(this,t,"projective"),e===null&&r===null&&n===null?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new Ri(e,16),this.y=new Ri(r,16),this.z=n?new Ri(n,16):this.curve.one,this.t=i&&new Ri(i,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}Gw(fr,ap.BasePoint);ni.prototype.pointFromJSON=function(e){return fr.fromJSON(this,e)};ni.prototype.point=function(e,r,n,i){return new fr(this,e,r,n,i)};fr.fromJSON=function(e,r){return new fr(e,r[0],r[1],r[2])};fr.prototype.inspect=function(){return this.isInfinity()?"":""};fr.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)};fr.prototype._extDbl=function(){var e=this.x.redSqr(),r=this.y.redSqr(),n=this.z.redSqr();n=n.redIAdd(n);var i=this.curve._mulA(e),a=this.x.redAdd(this.y).redSqr().redISub(e).redISub(r),o=i.redAdd(r),c=o.redSub(n),u=i.redSub(r),s=a.redMul(c),f=o.redMul(u),m=a.redMul(u),w=c.redMul(o);return this.curve.point(s,f,w,m)};fr.prototype._projDbl=function(){var e=this.x.redAdd(this.y).redSqr(),r=this.x.redSqr(),n=this.y.redSqr(),i,a,o,c,u,s;if(this.curve.twisted){c=this.curve._mulA(r);var f=c.redAdd(n);this.zOne?(i=e.redSub(r).redSub(n).redMul(f.redSub(this.curve.two)),a=f.redMul(c.redSub(n)),o=f.redSqr().redSub(f).redSub(f)):(u=this.z.redSqr(),s=f.redSub(u).redISub(u),i=e.redSub(r).redISub(n).redMul(s),a=f.redMul(c.redSub(n)),o=f.redMul(s))}else c=r.redAdd(n),u=this.curve._mulC(this.z).redSqr(),s=c.redSub(u).redSub(u),i=this.curve._mulC(e.redISub(c)).redMul(s),a=this.curve._mulC(c).redMul(r.redISub(n)),o=c.redMul(s);return this.curve.point(i,a,o)};fr.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()};fr.prototype._extAdd=function(e){var r=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),n=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),i=this.t.redMul(this.curve.dd).redMul(e.t),a=this.z.redMul(e.z.redAdd(e.z)),o=n.redSub(r),c=a.redSub(i),u=a.redAdd(i),s=n.redAdd(r),f=o.redMul(c),m=u.redMul(s),w=o.redMul(s),T=c.redMul(u);return this.curve.point(f,m,T,w)};fr.prototype._projAdd=function(e){var r=this.z.redMul(e.z),n=r.redSqr(),i=this.x.redMul(e.x),a=this.y.redMul(e.y),o=this.curve.d.redMul(i).redMul(a),c=n.redSub(o),u=n.redAdd(o),s=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(i).redISub(a),f=r.redMul(c).redMul(s),m,w;return this.curve.twisted?(m=r.redMul(u).redMul(a.redSub(this.curve._mulA(i))),w=c.redMul(u)):(m=r.redMul(u).redMul(a.redSub(i)),w=this.curve._mulC(c).redMul(u)),this.curve.point(f,m,w)};fr.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)};fr.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)};fr.prototype.mulAdd=function(e,r,n){return this.curve._wnafMulAdd(1,[this,r],[e,n],2,!1)};fr.prototype.jmulAdd=function(e,r,n){return this.curve._wnafMulAdd(1,[this,r],[e,n],2,!0)};fr.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this};fr.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())};fr.prototype.getX=function(){return this.normalize(),this.x.fromRed()};fr.prototype.getY=function(){return this.normalize(),this.y.fromRed()};fr.prototype.eq=function(e){return this===e||this.getX().cmp(e.getX())===0&&this.getY().cmp(e.getY())===0};fr.prototype.eqXToP=function(e){var r=e.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(r)===0)return!0;for(var n=e.clone(),i=this.curve.redN.redMul(this.z);;){if(n.iadd(this.curve.n),n.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(i),this.x.cmp(r)===0)return!0}};fr.prototype.toP=fr.prototype.normalize;fr.prototype.mixedAdd=fr.prototype.add});var Im=P(Vw=>{"use strict";var op=Vw;op.base=$u();op.short=jw();op.mont=zw();op.edwards=Kw()});var yn=P(cr=>{"use strict";var Rj=pa(),Ij=Yo();cr.inherits=Ij;function Nj(t,e){return(t.charCodeAt(e)&64512)!==55296||e<0||e+1>=t.length?!1:(t.charCodeAt(e+1)&64512)===56320}function Dj(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if(typeof t=="string")if(e){if(e==="hex")for(t=t.replace(/[^a-z0-9]+/ig,""),t.length%2!==0&&(t="0"+t),i=0;i>6|192,r[n++]=a&63|128):Nj(t,i)?(a=65536+((a&1023)<<10)+(t.charCodeAt(++i)&1023),r[n++]=a>>18|240,r[n++]=a>>12&63|128,r[n++]=a>>6&63|128,r[n++]=a&63|128):(r[n++]=a>>12|224,r[n++]=a>>6&63|128,r[n++]=a&63|128)}else for(i=0;i>>24|t>>>8&65280|t<<8&16711680|(t&255)<<24;return e>>>0}cr.htonl=Zw;function qj(t,e){for(var r="",n=0;n>>0}return a}cr.join32=jj;function Uj(t,e){for(var r=new Array(t.length*4),n=0,i=0;n>>24,r[i+1]=a>>>16&255,r[i+2]=a>>>8&255,r[i+3]=a&255):(r[i+3]=a>>>24,r[i+2]=a>>>16&255,r[i+1]=a>>>8&255,r[i]=a&255)}return r}cr.split32=Uj;function Hj(t,e){return t>>>e|t<<32-e}cr.rotr32=Hj;function zj(t,e){return t<>>32-e}cr.rotl32=zj;function Gj(t,e){return t+e>>>0}cr.sum32=Gj;function Xj(t,e,r){return t+e+r>>>0}cr.sum32_3=Xj;function Kj(t,e,r,n){return t+e+r+n>>>0}cr.sum32_4=Kj;function Vj(t,e,r,n,i){return t+e+r+n+i>>>0}cr.sum32_5=Vj;function Zj(t,e,r,n){var i=t[e],a=t[e+1],o=n+a>>>0,c=(o>>0,t[e+1]=o}cr.sum64=Zj;function Qj(t,e,r,n){var i=e+n>>>0,a=(i>>0}cr.sum64_hi=Qj;function Wj(t,e,r,n){var i=e+n;return i>>>0}cr.sum64_lo=Wj;function Yj(t,e,r,n,i,a,o,c){var u=0,s=e;s=s+n>>>0,u+=s>>0,u+=s>>0,u+=s>>0}cr.sum64_4_hi=Yj;function $j(t,e,r,n,i,a,o,c){var u=e+n+a+c;return u>>>0}cr.sum64_4_lo=$j;function eU(t,e,r,n,i,a,o,c,u,s){var f=0,m=e;m=m+n>>>0,f+=m>>0,f+=m>>0,f+=m>>0,f+=m>>0}cr.sum64_5_hi=eU;function rU(t,e,r,n,i,a,o,c,u,s){var f=e+n+a+c+s;return f>>>0}cr.sum64_5_lo=rU;function tU(t,e,r){var n=e<<32-r|t>>>r;return n>>>0}cr.rotr64_hi=tU;function nU(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}cr.rotr64_lo=nU;function iU(t,e,r){return t>>>r}cr.shr64_hi=iU;function aU(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}cr.shr64_lo=aU});var tc=P($w=>{"use strict";var Yw=yn(),oU=pa();function sp(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}$w.BlockHash=sp;sp.prototype.update=function(e,r){if(e=Yw.toArray(e,r),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){e=this.pending;var n=e.length%this._delta8;this.pending=e.slice(e.length-n,e.length),this.pending.length===0&&(this.pending=null),e=Yw.join32(e,0,e.length-n,this.endian);for(var i=0;i>>24&255,i[a++]=e>>>16&255,i[a++]=e>>>8&255,i[a++]=e&255}else for(i[a++]=e&255,i[a++]=e>>>8&255,i[a++]=e>>>16&255,i[a++]=e>>>24&255,i[a++]=0,i[a++]=0,i[a++]=0,i[a++]=0,o=8;o{"use strict";var sU=yn(),ii=sU.rotr32;function cU(t,e,r,n){if(t===0)return e9(e,r,n);if(t===1||t===3)return t9(e,r,n);if(t===2)return r9(e,r,n)}Ii.ft_1=cU;function e9(t,e,r){return t&e^~t&r}Ii.ch32=e9;function r9(t,e,r){return t&e^t&r^e&r}Ii.maj32=r9;function t9(t,e,r){return t^e^r}Ii.p32=t9;function uU(t){return ii(t,2)^ii(t,13)^ii(t,22)}Ii.s0_256=uU;function lU(t){return ii(t,6)^ii(t,11)^ii(t,25)}Ii.s1_256=lU;function fU(t){return ii(t,7)^ii(t,18)^t>>>3}Ii.g0_256=fU;function dU(t){return ii(t,17)^ii(t,19)^t>>>10}Ii.g1_256=dU});var a9=P((Hee,i9)=>{"use strict";var nc=yn(),pU=tc(),hU=Nm(),Dm=nc.rotl32,el=nc.sum32,vU=nc.sum32_5,mU=hU.ft_1,n9=pU.BlockHash,bU=[1518500249,1859775393,2400959708,3395469782];function ai(){if(!(this instanceof ai))return new ai;n9.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}nc.inherits(ai,n9);i9.exports=ai;ai.blockSize=512;ai.outSize=160;ai.hmacStrength=80;ai.padLength=64;ai.prototype._update=function(e,r){for(var n=this.W,i=0;i<16;i++)n[i]=e[r+i];for(;i{"use strict";var ic=yn(),gU=tc(),ac=Nm(),xU=pa(),wn=ic.sum32,yU=ic.sum32_4,wU=ic.sum32_5,AU=ac.ch32,EU=ac.maj32,SU=ac.s0_256,_U=ac.s1_256,TU=ac.g0_256,kU=ac.g1_256,o9=gU.BlockHash,CU=[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];function oi(){if(!(this instanceof oi))return new oi;o9.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=CU,this.W=new Array(64)}ic.inherits(oi,o9);s9.exports=oi;oi.blockSize=512;oi.outSize=256;oi.hmacStrength=192;oi.padLength=64;oi.prototype._update=function(e,r){for(var n=this.W,i=0;i<16;i++)n[i]=e[r+i];for(;i{"use strict";var qm=yn(),c9=Jm();function Ni(){if(!(this instanceof Ni))return new Ni;c9.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}qm.inherits(Ni,c9);u9.exports=Ni;Ni.blockSize=512;Ni.outSize=224;Ni.hmacStrength=192;Ni.padLength=64;Ni.prototype._digest=function(e){return e==="hex"?qm.toHex32(this.h.slice(0,7),"big"):qm.split32(this.h.slice(0,7),"big")}});var Hm=P((Xee,h9)=>{"use strict";var Tt=yn(),OU=tc(),PU=pa(),si=Tt.rotr64_hi,ci=Tt.rotr64_lo,f9=Tt.shr64_hi,d9=Tt.shr64_lo,ma=Tt.sum64,jm=Tt.sum64_hi,Um=Tt.sum64_lo,MU=Tt.sum64_4_hi,BU=Tt.sum64_4_lo,FU=Tt.sum64_5_hi,LU=Tt.sum64_5_lo,p9=OU.BlockHash,RU=[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];function An(){if(!(this instanceof An))return new An;p9.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=RU,this.W=new Array(160)}Tt.inherits(An,p9);h9.exports=An;An.blockSize=1024;An.outSize=512;An.hmacStrength=192;An.padLength=128;An.prototype._prepareBlock=function(e,r){for(var n=this.W,i=0;i<32;i++)n[i]=e[r+i];for(;i{"use strict";var zm=yn(),v9=Hm();function Di(){if(!(this instanceof Di))return new Di;v9.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}zm.inherits(Di,v9);m9.exports=Di;Di.blockSize=1024;Di.outSize=384;Di.hmacStrength=192;Di.padLength=128;Di.prototype._digest=function(e){return e==="hex"?zm.toHex32(this.h.slice(0,12),"big"):zm.split32(this.h.slice(0,12),"big")}});var g9=P(oc=>{"use strict";oc.sha1=a9();oc.sha224=l9();oc.sha256=Jm();oc.sha384=b9();oc.sha512=Hm()});var S9=P(E9=>{"use strict";var Po=yn(),VU=tc(),cp=Po.rotl32,x9=Po.sum32,rl=Po.sum32_3,y9=Po.sum32_4,A9=VU.BlockHash;function ui(){if(!(this instanceof ui))return new ui;A9.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}Po.inherits(ui,A9);E9.ripemd160=ui;ui.blockSize=512;ui.outSize=160;ui.hmacStrength=192;ui.padLength=64;ui.prototype._update=function(e,r){for(var n=this.h[0],i=this.h[1],a=this.h[2],o=this.h[3],c=this.h[4],u=n,s=i,f=a,m=o,w=c,T=0;T<80;T++){var A=x9(cp(y9(n,w9(T,i,a,o),e[WU[T]+r],ZU(T)),$U[T]),c);n=c,c=o,o=cp(a,10),a=i,i=A,A=x9(cp(y9(u,w9(79-T,s,f,m),e[YU[T]+r],QU(T)),eH[T]),w),u=w,w=m,m=cp(f,10),f=s,s=A}A=rl(this.h[1],a,m),this.h[1]=rl(this.h[2],o,w),this.h[2]=rl(this.h[3],c,u),this.h[3]=rl(this.h[4],n,s),this.h[4]=rl(this.h[0],i,f),this.h[0]=A};ui.prototype._digest=function(e){return e==="hex"?Po.toHex32(this.h,"little"):Po.split32(this.h,"little")};function w9(t,e,r,n){return t<=15?e^r^n:t<=31?e&r|~e&n:t<=47?(e|~r)^n:t<=63?e&n|r&~n:e^(r|~n)}function ZU(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function QU(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}var WU=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],YU=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],$U=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],eH=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]});var T9=P((Qee,_9)=>{"use strict";var rH=yn(),tH=pa();function sc(t,e,r){if(!(this instanceof sc))return new sc(t,e,r);this.Hash=t,this.blockSize=t.blockSize/8,this.outSize=t.outSize/8,this.inner=null,this.outer=null,this._init(rH.toArray(e,r))}_9.exports=sc;sc.prototype._init=function(e){e.length>this.blockSize&&(e=new this.Hash().update(e).digest()),tH(e.length<=this.blockSize);for(var r=e.length;r{var Yr=k9;Yr.utils=yn();Yr.common=tc();Yr.sha=g9();Yr.ripemd=S9();Yr.hmac=T9();Yr.sha1=Yr.sha.sha1;Yr.sha256=Yr.sha.sha256;Yr.sha224=Yr.sha.sha224;Yr.sha384=Yr.sha.sha384;Yr.sha512=Yr.sha.sha512;Yr.ripemd160=Yr.ripemd.ripemd160});var O9=P((Yee,C9)=>{C9.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}});var up=P(B9=>{"use strict";var Xm=B9,ba=tl(),Gm=Im(),nH=Ft(),P9=nH.assert;function M9(t){t.type==="short"?this.curve=new Gm.short(t):t.type==="edwards"?this.curve=new Gm.edwards(t):this.curve=new Gm.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,P9(this.g.validate(),"Invalid curve"),P9(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}Xm.PresetCurve=M9;function ga(t,e){Object.defineProperty(Xm,t,{configurable:!0,enumerable:!0,get:function(){var r=new M9(e);return Object.defineProperty(Xm,t,{configurable:!0,enumerable:!0,value:r}),r}})}ga("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:ba.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]});ga("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:ba.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]});ga("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:ba.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]});ga("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:ba.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]});ga("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:ba.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]});ga("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:ba.sha256,gRed:!1,g:["9"]});ga("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:ba.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var Km;try{Km=O9()}catch{Km=void 0}ga("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:ba.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",Km]})});var R9=P((ere,L9)=>{"use strict";var iH=tl(),Mo=Pm(),F9=pa();function xa(t){if(!(this instanceof xa))return new xa(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=Mo.toArray(t.entropy,t.entropyEnc||"hex"),r=Mo.toArray(t.nonce,t.nonceEnc||"hex"),n=Mo.toArray(t.pers,t.persEnc||"hex");F9(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,n)}L9.exports=xa;xa.prototype._init=function(e,r,n){var i=e.concat(r).concat(n);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var a=0;a=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(n||[])),this._reseed=1};xa.prototype.generate=function(e,r,n,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(i=n,n=r,r=null),n&&(n=Mo.toArray(n,i||"hex"),this._update(n));for(var a=[];a.length{"use strict";var aH=ti(),oH=Ft(),Vm=oH.assert;function st(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}I9.exports=st;st.fromPublic=function(e,r,n){return r instanceof st?r:new st(e,{pub:r,pubEnc:n})};st.fromPrivate=function(e,r,n){return r instanceof st?r:new st(e,{priv:r,privEnc:n})};st.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}};st.prototype.getPublic=function(e,r){return typeof e=="string"&&(r=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),r?this.pub.encode(r,e):this.pub};st.prototype.getPrivate=function(e){return e==="hex"?this.priv.toString(16,2):this.priv};st.prototype._importPrivate=function(e,r){this.priv=new aH(e,r||16),this.priv=this.priv.umod(this.ec.curve.n)};st.prototype._importPublic=function(e,r){if(e.x||e.y){this.ec.curve.type==="mont"?Vm(e.x,"Need x coordinate"):(this.ec.curve.type==="short"||this.ec.curve.type==="edwards")&&Vm(e.x&&e.y,"Need both x and y coordinate"),this.pub=this.ec.curve.point(e.x,e.y);return}this.pub=this.ec.curve.decodePoint(e,r)};st.prototype.derive=function(e){return e.validate()||Vm(e.validate(),"public point not validated"),e.mul(this.priv).getX()};st.prototype.sign=function(e,r,n){return this.ec.sign(e,this,r,n)};st.prototype.verify=function(e,r){return this.ec.verify(e,r,this)};st.prototype.inspect=function(){return""}});var q9=P((tre,J9)=>{"use strict";var lp=ti(),Wm=Ft(),sH=Wm.assert;function fp(t,e){if(t instanceof fp)return t;this._importDER(t,e)||(sH(t.r&&t.s,"Signature without r or s"),this.r=new lp(t.r,16),this.s=new lp(t.s,16),t.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}J9.exports=fp;function cH(){this.place=0}function Zm(t,e){var r=t[e.place++];if(!(r&128))return r;var n=r&15;if(n===0||n>4)return!1;for(var i=0,a=0,o=e.place;a>>=0;return i<=127?!1:(e.place=o,i)}function D9(t){for(var e=0,r=t.length-1;!t[e]&&!(t[e+1]&128)&&e>>3);for(t.push(r|128);--r;)t.push(e>>>(r<<3)&255);t.push(e)}fp.prototype.toDER=function(e){var r=this.r.toArray(),n=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),n[0]&128&&(n=[0].concat(n)),r=D9(r),n=D9(n);!n[0]&&!(n[1]&128);)n=n.slice(1);var i=[2];Qm(i,r.length),i=i.concat(r),i.push(2),Qm(i,n.length);var a=i.concat(n),o=[48];return Qm(o,a.length),o=o.concat(a),Wm.encode(o,e)}});var z9=P((nre,H9)=>{"use strict";var Bo=ti(),j9=R9(),uH=Ft(),Ym=up(),lH=Lm(),U9=uH.assert,$m=N9(),dp=q9();function en(t){if(!(this instanceof en))return new en(t);typeof t=="string"&&(U9(Object.prototype.hasOwnProperty.call(Ym,t),"Unknown curve "+t),t=Ym[t]),t instanceof Ym.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}H9.exports=en;en.prototype.keyPair=function(e){return new $m(this,e)};en.prototype.keyFromPrivate=function(e,r){return $m.fromPrivate(this,e,r)};en.prototype.keyFromPublic=function(e,r){return $m.fromPublic(this,e,r)};en.prototype.genKeyPair=function(e){e||(e={});for(var r=new j9({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||lH(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),n=this.n.byteLength(),i=this.n.sub(new Bo(2));;){var a=new Bo(r.generate(n));if(!(a.cmp(i)>0))return a.iaddn(1),this.keyFromPrivate(a)}};en.prototype._truncateToN=function(e,r){var n=e.byteLength()*8-this.n.bitLength();return n>0&&(e=e.ushrn(n)),!r&&e.cmp(this.n)>=0?e.sub(this.n):e};en.prototype.sign=function(e,r,n,i){typeof n=="object"&&(i=n,n=null),i||(i={}),r=this.keyFromPrivate(r,n),e=this._truncateToN(new Bo(e,16));for(var a=this.n.byteLength(),o=r.getPrivate().toArray("be",a),c=e.toArray("be",a),u=new j9({hash:this.hash,entropy:o,nonce:c,pers:i.pers,persEnc:i.persEnc||"utf8"}),s=this.n.sub(new Bo(1)),f=0;;f++){var m=i.k?i.k(f):new Bo(u.generate(this.n.byteLength()));if(m=this._truncateToN(m,!0),!(m.cmpn(1)<=0||m.cmp(s)>=0)){var w=this.g.mul(m);if(!w.isInfinity()){var T=w.getX(),A=T.umod(this.n);if(A.cmpn(0)!==0){var O=m.invm(this.n).mul(A.mul(r.getPrivate()).iadd(e));if(O=O.umod(this.n),O.cmpn(0)!==0){var B=(w.getY().isOdd()?1:0)|(T.cmp(A)!==0?2:0);return i.canonical&&O.cmp(this.nh)>0&&(O=this.n.sub(O),B^=1),new dp({r:A,s:O,recoveryParam:B})}}}}}};en.prototype.verify=function(e,r,n,i){e=this._truncateToN(new Bo(e,16)),n=this.keyFromPublic(n,i),r=new dp(r,"hex");var a=r.r,o=r.s;if(a.cmpn(1)<0||a.cmp(this.n)>=0||o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;var c=o.invm(this.n),u=c.mul(e).umod(this.n),s=c.mul(a).umod(this.n),f;return this.curve._maxwellTrick?(f=this.g.jmulAdd(u,n.getPublic(),s),f.isInfinity()?!1:f.eqXToP(a)):(f=this.g.mulAdd(u,n.getPublic(),s),f.isInfinity()?!1:f.getX().umod(this.n).cmp(a)===0)};en.prototype.recoverPubKey=function(t,e,r,n){U9((3&r)===r,"The recovery param is more than two bits"),e=new dp(e,n);var i=this.n,a=new Bo(t),o=e.r,c=e.s,u=r&1,s=r>>1;if(o.cmp(this.curve.p.umod(this.curve.n))>=0&&s)throw new Error("Unable to find sencond key candinate");s?o=this.curve.pointFromX(o.add(this.curve.n),u):o=this.curve.pointFromX(o,u);var f=e.r.invm(i),m=i.sub(a).mul(f).umod(i),w=c.mul(f).umod(i);return this.g.mulAdd(m,o,w)};en.prototype.getKeyRecoveryParam=function(t,e,r,n){if(e=new dp(e,n),e.recoveryParam!==null)return e.recoveryParam;for(var i=0;i<4;i++){var a;try{a=this.recoverPubKey(t,e,i)}catch{continue}if(a.eq(r))return i}throw new Error("Unable to find valid recovery factor")}});var V9=P((ire,K9)=>{"use strict";var nl=Ft(),X9=nl.assert,G9=nl.parseBytes,cc=nl.cachedProperty;function Xr(t,e){this.eddsa=t,this._secret=G9(e.secret),t.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=G9(e.pub)}Xr.fromPublic=function(e,r){return r instanceof Xr?r:new Xr(e,{pub:r})};Xr.fromSecret=function(e,r){return r instanceof Xr?r:new Xr(e,{secret:r})};Xr.prototype.secret=function(){return this._secret};cc(Xr,"pubBytes",function(){return this.eddsa.encodePoint(this.pub())});cc(Xr,"pub",function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())});cc(Xr,"privBytes",function(){var e=this.eddsa,r=this.hash(),n=e.encodingLength-1,i=r.slice(0,e.encodingLength);return i[0]&=248,i[n]&=127,i[n]|=64,i});cc(Xr,"priv",function(){return this.eddsa.decodeInt(this.privBytes())});cc(Xr,"hash",function(){return this.eddsa.hash().update(this.secret()).digest()});cc(Xr,"messagePrefix",function(){return this.hash().slice(this.eddsa.encodingLength)});Xr.prototype.sign=function(e){return X9(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)};Xr.prototype.verify=function(e,r){return this.eddsa.verify(e,r,this)};Xr.prototype.getSecret=function(e){return X9(this._secret,"KeyPair is public only"),nl.encode(this.secret(),e)};Xr.prototype.getPublic=function(e){return nl.encode(this.pubBytes(),e)};K9.exports=Xr});var Q9=P((are,Z9)=>{"use strict";var fH=ti(),pp=Ft(),dH=pp.assert,hp=pp.cachedProperty,pH=pp.parseBytes;function Fo(t,e){this.eddsa=t,typeof e!="object"&&(e=pH(e)),Array.isArray(e)&&(e={R:e.slice(0,t.encodingLength),S:e.slice(t.encodingLength)}),dH(e.R&&e.S,"Signature without R or S"),t.isPoint(e.R)&&(this._R=e.R),e.S instanceof fH&&(this._S=e.S),this._Rencoded=Array.isArray(e.R)?e.R:e.Rencoded,this._Sencoded=Array.isArray(e.S)?e.S:e.Sencoded}hp(Fo,"S",function(){return this.eddsa.decodeInt(this.Sencoded())});hp(Fo,"R",function(){return this.eddsa.decodePoint(this.Rencoded())});hp(Fo,"Rencoded",function(){return this.eddsa.encodePoint(this.R())});hp(Fo,"Sencoded",function(){return this.eddsa.encodeInt(this.S())});Fo.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())};Fo.prototype.toHex=function(){return pp.encode(this.toBytes(),"hex").toUpperCase()};Z9.exports=Fo});var r7=P((ore,e7)=>{"use strict";var hH=tl(),vH=up(),uc=Ft(),mH=uc.assert,Y9=uc.parseBytes,$9=V9(),W9=Q9();function kt(t){if(mH(t==="ed25519","only tested with ed25519 so far"),!(this instanceof kt))return new kt(t);t=vH[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=hH.sha512}e7.exports=kt;kt.prototype.sign=function(e,r){e=Y9(e);var n=this.keyFromSecret(r),i=this.hashInt(n.messagePrefix(),e),a=this.g.mul(i),o=this.encodePoint(a),c=this.hashInt(o,n.pubBytes(),e).mul(n.priv()),u=i.add(c).umod(this.curve.n);return this.makeSignature({R:a,S:u,Rencoded:o})};kt.prototype.verify=function(e,r,n){e=Y9(e),r=this.makeSignature(r);var i=this.keyFromPublic(n),a=this.hashInt(r.Rencoded(),i.pubBytes(),e),o=this.g.mul(r.S()),c=r.R().add(i.pub().mul(a));return c.eq(o)};kt.prototype.hashInt=function(){for(var e=this.hash(),r=0;r{"use strict";var Lo=t7;Lo.version=Mw().version;Lo.utils=Ft();Lo.rand=Lm();Lo.curve=Im();Lo.curves=up();Lo.ec=z9();Lo.eddsa=r7()});var i7=P(lc=>{"use strict";var bH=lc&&lc.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(lc,"__esModule",{value:!0});lc.EC=void 0;var gH=bH(n7()),xH=gH.default.ec;lc.EC=xH});var a7=P(vp=>{"use strict";Object.defineProperty(vp,"__esModule",{value:!0});vp.version=void 0;vp.version="signing-key/5.7.0"});var al=P(ya=>{"use strict";Object.defineProperty(ya,"__esModule",{value:!0});ya.computePublicKey=ya.recoverPublicKey=ya.SigningKey=void 0;var yH=i7(),Or=De(),il=Ve(),wH=re(),AH=a7(),rb=new wH.Logger(AH.version),eb=null;function li(){return eb||(eb=new yH.EC("secp256k1")),eb}var o7=function(){function t(e){(0,il.defineReadOnly)(this,"curve","secp256k1"),(0,il.defineReadOnly)(this,"privateKey",(0,Or.hexlify)(e)),(0,Or.hexDataLength)(this.privateKey)!==32&&rb.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");var r=li().keyFromPrivate((0,Or.arrayify)(this.privateKey));(0,il.defineReadOnly)(this,"publicKey","0x"+r.getPublic(!1,"hex")),(0,il.defineReadOnly)(this,"compressedPublicKey","0x"+r.getPublic(!0,"hex")),(0,il.defineReadOnly)(this,"_isSigningKey",!0)}return t.prototype._addPoint=function(e){var r=li().keyFromPublic((0,Or.arrayify)(this.publicKey)),n=li().keyFromPublic((0,Or.arrayify)(e));return"0x"+r.pub.add(n.pub).encodeCompressed("hex")},t.prototype.signDigest=function(e){var r=li().keyFromPrivate((0,Or.arrayify)(this.privateKey)),n=(0,Or.arrayify)(e);n.length!==32&&rb.throwArgumentError("bad digest length","digest",e);var i=r.sign(n,{canonical:!0});return(0,Or.splitSignature)({recoveryParam:i.recoveryParam,r:(0,Or.hexZeroPad)("0x"+i.r.toString(16),32),s:(0,Or.hexZeroPad)("0x"+i.s.toString(16),32)})},t.prototype.computeSharedSecret=function(e){var r=li().keyFromPrivate((0,Or.arrayify)(this.privateKey)),n=li().keyFromPublic((0,Or.arrayify)(s7(e)));return(0,Or.hexZeroPad)("0x"+r.derive(n.getPublic()).toString(16),32)},t.isSigningKey=function(e){return!!(e&&e._isSigningKey)},t}();ya.SigningKey=o7;function EH(t,e){var r=(0,Or.splitSignature)(e),n={r:(0,Or.arrayify)(r.r),s:(0,Or.arrayify)(r.s)};return"0x"+li().recoverPubKey((0,Or.arrayify)(t),n,r.recoveryParam).encode("hex",!1)}ya.recoverPublicKey=EH;function s7(t,e){var r=(0,Or.arrayify)(t);if(r.length===32){var n=new o7(r);return e?"0x"+li().keyFromPrivate(r).getPublic(!0,"hex"):n.publicKey}else{if(r.length===33)return e?(0,Or.hexlify)(r):"0x"+li().keyFromPublic(r).getPublic(!1,"hex");if(r.length===65)return e?"0x"+li().keyFromPublic(r).getPublic(!0,"hex"):(0,Or.hexlify)(r)}return rb.throwArgumentError("invalid public or private key","key","[REDACTED]")}ya.computePublicKey=s7});var c7=P(mp=>{"use strict";Object.defineProperty(mp,"__esModule",{value:!0});mp.version=void 0;mp.version="transactions/5.7.0"});var Ji=P(Ar=>{"use strict";var SH=Ar&&Ar.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r),Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),_H=Ar&&Ar.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),TH=Ar&&Ar.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&SH(e,t,r);return _H(e,t),e};Object.defineProperty(Ar,"__esModule",{value:!0});Ar.parse=Ar.serialize=Ar.accessListify=Ar.recoverAddress=Ar.computeAddress=Ar.TransactionTypes=void 0;var ol=Vt(),Ro=Tr(),ze=De(),kH=Ao(),fc=Bt(),CH=Ve(),wa=TH(Cd()),u7=al(),nb=re(),OH=c7(),ut=new nb.Logger(OH.version),PH;(function(t){t[t.legacy=0]="legacy",t[t.eip2930=1]="eip2930",t[t.eip1559=2]="eip1559"})(PH=Ar.TransactionTypes||(Ar.TransactionTypes={}));function ib(t){return t==="0x"?null:(0,ol.getAddress)(t)}function ct(t){return t==="0x"?kH.Zero:Ro.BigNumber.from(t)}var MH=[{name:"nonce",maxLength:32,numeric:!0},{name:"gasPrice",maxLength:32,numeric:!0},{name:"gasLimit",maxLength:32,numeric:!0},{name:"to",length:20},{name:"value",maxLength:32,numeric:!0},{name:"data"}],BH={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,type:!0,value:!0};function l7(t){var e=(0,u7.computePublicKey)(t);return(0,ol.getAddress)((0,ze.hexDataSlice)((0,fc.keccak256)((0,ze.hexDataSlice)(e,1)),12))}Ar.computeAddress=l7;function ab(t,e){return l7((0,u7.recoverPublicKey)((0,ze.arrayify)(t),e))}Ar.recoverAddress=ab;function Lt(t,e){var r=(0,ze.stripZeros)(Ro.BigNumber.from(t).toHexString());return r.length>32&&ut.throwArgumentError("invalid length for "+e,"transaction:"+e,t),r}function tb(t,e){return{address:(0,ol.getAddress)(t),storageKeys:(e||[]).map(function(r,n){return(0,ze.hexDataLength)(r)!==32&&ut.throwArgumentError("invalid access list storageKey","accessList["+t+":"+n+"]",r),r.toLowerCase()})}}function bp(t){if(Array.isArray(t))return t.map(function(r,n){return Array.isArray(r)?(r.length>2&&ut.throwArgumentError("access list expected to be [ address, storageKeys[] ]","value["+n+"]",r),tb(r[0],r[1])):tb(r.address,r.storageKeys)});var e=Object.keys(t).map(function(r){var n=t[r].reduce(function(i,a){return i[a]=!0,i},{});return tb(r,Object.keys(n).sort())});return e.sort(function(r,n){return r.address.localeCompare(n.address)}),e}Ar.accessListify=bp;function f7(t){return bp(t).map(function(e){return[e.address,e.storageKeys]})}function d7(t,e){if(t.gasPrice!=null){var r=Ro.BigNumber.from(t.gasPrice),n=Ro.BigNumber.from(t.maxFeePerGas||0);r.eq(n)||ut.throwArgumentError("mismatch EIP-1559 gasPrice != maxFeePerGas","tx",{gasPrice:r,maxFeePerGas:n})}var i=[Lt(t.chainId||0,"chainId"),Lt(t.nonce||0,"nonce"),Lt(t.maxPriorityFeePerGas||0,"maxPriorityFeePerGas"),Lt(t.maxFeePerGas||0,"maxFeePerGas"),Lt(t.gasLimit||0,"gasLimit"),t.to!=null?(0,ol.getAddress)(t.to):"0x",Lt(t.value||0,"value"),t.data||"0x",f7(t.accessList||[])];if(e){var a=(0,ze.splitSignature)(e);i.push(Lt(a.recoveryParam,"recoveryParam")),i.push((0,ze.stripZeros)(a.r)),i.push((0,ze.stripZeros)(a.s))}return(0,ze.hexConcat)(["0x02",wa.encode(i)])}function p7(t,e){var r=[Lt(t.chainId||0,"chainId"),Lt(t.nonce||0,"nonce"),Lt(t.gasPrice||0,"gasPrice"),Lt(t.gasLimit||0,"gasLimit"),t.to!=null?(0,ol.getAddress)(t.to):"0x",Lt(t.value||0,"value"),t.data||"0x",f7(t.accessList||[])];if(e){var n=(0,ze.splitSignature)(e);r.push(Lt(n.recoveryParam,"recoveryParam")),r.push((0,ze.stripZeros)(n.r)),r.push((0,ze.stripZeros)(n.s))}return(0,ze.hexConcat)(["0x01",wa.encode(r)])}function FH(t,e){(0,CH.checkProperties)(t,BH);var r=[];MH.forEach(function(o){var c=t[o.name]||[],u={};o.numeric&&(u.hexPad="left"),c=(0,ze.arrayify)((0,ze.hexlify)(c,u)),o.length&&c.length!==o.length&&c.length>0&&ut.throwArgumentError("invalid length for "+o.name,"transaction:"+o.name,c),o.maxLength&&(c=(0,ze.stripZeros)(c),c.length>o.maxLength&&ut.throwArgumentError("invalid length for "+o.name,"transaction:"+o.name,c)),r.push((0,ze.hexlify)(c))});var n=0;if(t.chainId!=null?(n=t.chainId,typeof n!="number"&&ut.throwArgumentError("invalid transaction.chainId","transaction",t)):e&&!(0,ze.isBytesLike)(e)&&e.v>28&&(n=Math.floor((e.v-35)/2)),n!==0&&(r.push((0,ze.hexlify)(n)),r.push("0x"),r.push("0x")),!e)return wa.encode(r);var i=(0,ze.splitSignature)(e),a=27+i.recoveryParam;return n!==0?(r.pop(),r.pop(),r.pop(),a+=n*2+8,i.v>28&&i.v!==a&&ut.throwArgumentError("transaction.chainId/signature.v mismatch","signature",e)):i.v!==a&&ut.throwArgumentError("transaction.chainId/signature.v mismatch","signature",e),r.push((0,ze.hexlify)(a)),r.push((0,ze.stripZeros)((0,ze.arrayify)(i.r))),r.push((0,ze.stripZeros)((0,ze.arrayify)(i.s))),wa.encode(r)}function LH(t,e){if(t.type==null||t.type===0)return t.accessList!=null&&ut.throwArgumentError("untyped transactions do not support accessList; include type: 1","transaction",t),FH(t,e);switch(t.type){case 1:return p7(t,e);case 2:return d7(t,e);default:break}return ut.throwError("unsupported transaction type: "+t.type,nb.Logger.errors.UNSUPPORTED_OPERATION,{operation:"serializeTransaction",transactionType:t.type})}Ar.serialize=LH;function h7(t,e,r){try{var n=ct(e[0]).toNumber();if(n!==0&&n!==1)throw new Error("bad recid");t.v=n}catch{ut.throwArgumentError("invalid v for transaction type: 1","v",e[0])}t.r=(0,ze.hexZeroPad)(e[1],32),t.s=(0,ze.hexZeroPad)(e[2],32);try{var i=(0,fc.keccak256)(r(t));t.from=ab(i,{r:t.r,s:t.s,recoveryParam:t.v})}catch{}}function RH(t){var e=wa.decode(t.slice(1));e.length!==9&&e.length!==12&&ut.throwArgumentError("invalid component count for transaction type: 2","payload",(0,ze.hexlify)(t));var r=ct(e[2]),n=ct(e[3]),i={type:2,chainId:ct(e[0]).toNumber(),nonce:ct(e[1]).toNumber(),maxPriorityFeePerGas:r,maxFeePerGas:n,gasPrice:null,gasLimit:ct(e[4]),to:ib(e[5]),value:ct(e[6]),data:e[7],accessList:bp(e[8])};return e.length===9||(i.hash=(0,fc.keccak256)(t),h7(i,e.slice(9),d7)),i}function IH(t){var e=wa.decode(t.slice(1));e.length!==8&&e.length!==11&&ut.throwArgumentError("invalid component count for transaction type: 1","payload",(0,ze.hexlify)(t));var r={type:1,chainId:ct(e[0]).toNumber(),nonce:ct(e[1]).toNumber(),gasPrice:ct(e[2]),gasLimit:ct(e[3]),to:ib(e[4]),value:ct(e[5]),data:e[6],accessList:bp(e[7])};return e.length===8||(r.hash=(0,fc.keccak256)(t),h7(r,e.slice(8),p7)),r}function NH(t){var e=wa.decode(t);e.length!==9&&e.length!==6&&ut.throwArgumentError("invalid raw transaction","rawTransaction",t);var r={nonce:ct(e[0]).toNumber(),gasPrice:ct(e[1]),gasLimit:ct(e[2]),to:ib(e[3]),value:ct(e[4]),data:e[5],chainId:0};if(e.length===6)return r;try{r.v=Ro.BigNumber.from(e[6]).toNumber()}catch{return r}if(r.r=(0,ze.hexZeroPad)(e[7],32),r.s=(0,ze.hexZeroPad)(e[8],32),Ro.BigNumber.from(r.r).isZero()&&Ro.BigNumber.from(r.s).isZero())r.chainId=r.v,r.v=0;else{r.chainId=Math.floor((r.v-35)/2),r.chainId<0&&(r.chainId=0);var n=r.v-27,i=e.slice(0,6);r.chainId!==0&&(i.push((0,ze.hexlify)(r.chainId)),i.push("0x"),i.push("0x"),n-=r.chainId*2+8);var a=(0,fc.keccak256)(wa.encode(i));try{r.from=ab(a,{r:(0,ze.hexlify)(r.r),s:(0,ze.hexlify)(r.s),recoveryParam:n})}catch{}r.hash=(0,fc.keccak256)(t)}return r.type=null,r}function DH(t){var e=(0,ze.arrayify)(t);if(e[0]>127)return NH(e);switch(e[0]){case 1:return IH(e);case 2:return RH(e);default:break}return ut.throwError("unsupported transaction type: "+e[0],nb.Logger.errors.UNSUPPORTED_OPERATION,{operation:"parseTransaction",transactionType:e[0]})}Ar.parse=DH});var v7=P(gp=>{"use strict";Object.defineProperty(gp,"__esModule",{value:!0});gp.version=void 0;gp.version="contracts/5.7.0"});var E7=P(lt=>{"use strict";var wp=lt&<.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ea=lt&<.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},Sa=lt&<.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]1)){s=s.substring(1);var m=f[0];try{a[s]==null&&(0,$.defineReadOnly)(a,s,a[m])}catch{}a.functions[s]==null&&(0,$.defineReadOnly)(a.functions,s,a.functions[m]),a.callStatic[s]==null&&(0,$.defineReadOnly)(a.callStatic,s,a.callStatic[m]),a.populateTransaction[s]==null&&(0,$.defineReadOnly)(a.populateTransaction,s,a.populateTransaction[m]),a.estimateGas[s]==null&&(0,$.defineReadOnly)(a.estimateGas,s,a.estimateGas[m])}})}return t.getContractAddress=function(e){return(0,cl.getContractAddress)(e)},t.getInterface=function(e){return xp.Interface.isInterface(e)?e:new xp.Interface(e)},t.prototype.deployed=function(){return this._deployed()},t.prototype._deployed=function(e){var r=this;return this._deployedPromise||(this.deployTransaction?this._deployedPromise=this.deployTransaction.wait().then(function(){return r}):this._deployedPromise=this.provider.getCode(this.address,e).then(function(n){return n==="0x"&&ar.throwError("contract not deployed",$r.Logger.errors.UNSUPPORTED_OPERATION,{contractAddress:r.address,operation:"getDeployed"}),r})),this._deployedPromise},t.prototype.fallback=function(e){var r=this;this.signer||ar.throwError("sending a transactions require a signer",$r.Logger.errors.UNSUPPORTED_OPERATION,{operation:"sendTransaction(fallback)"});var n=(0,$.shallowCopy)(e||{});return["from","to"].forEach(function(i){n[i]!=null&&ar.throwError("cannot override "+i,$r.Logger.errors.UNSUPPORTED_OPERATION,{operation:i})}),n.to=this.resolvedAddress,this.deployed().then(function(){return r.signer.sendTransaction(n)})},t.prototype.connect=function(e){typeof e=="string"&&(e=new ob.VoidSigner(e,this.provider));var r=new this.constructor(this.address,this.interface,e);return this.deployTransaction&&(0,$.defineReadOnly)(r,"deployTransaction",this.deployTransaction),r},t.prototype.attach=function(e){return new this.constructor(e,this.interface,this.signer||this.provider)},t.isIndexed=function(e){return xp.Indexed.isIndexed(e)},t.prototype._normalizeRunningEvent=function(e){return this._runningEvents[e.tag]?this._runningEvents[e.tag]:e},t.prototype._getRunningEvent=function(e){if(typeof e=="string"){if(e==="error")return this._normalizeRunningEvent(new KH);if(e==="event")return this._normalizeRunningEvent(new ul("event",null));if(e==="*")return this._normalizeRunningEvent(new g7(this.address,this.interface));var r=this.interface.getEvent(e);return this._normalizeRunningEvent(new b7(this.address,this.interface,r))}if(e.topics&&e.topics.length>0){try{var n=e.topics[0];if(typeof n!="string")throw new Error("invalid topic");var r=this.interface.getEvent(n);return this._normalizeRunningEvent(new b7(this.address,this.interface,r,e.topics))}catch{}var i={address:this.address,topics:e.topics};return this._normalizeRunningEvent(new ul(w7(i),i))}return this._normalizeRunningEvent(new g7(this.address,this.interface))},t.prototype._checkRunningEvents=function(e){if(e.listenerCount()===0){delete this._runningEvents[e.tag];var r=this._wrappedEmits[e.tag];r&&e.filter&&(this.provider.off(e.filter,r),delete this._wrappedEmits[e.tag])}},t.prototype._wrapEvent=function(e,r,n){var i=this,a=(0,$.deepCopy)(r);return a.removeListener=function(){!n||(e.removeListener(n),i._checkRunningEvents(e))},a.getBlock=function(){return i.provider.getBlock(r.blockHash)},a.getTransaction=function(){return i.provider.getTransaction(r.transactionHash)},a.getTransactionReceipt=function(){return i.provider.getTransactionReceipt(r.transactionHash)},e.prepareEvent(a),a},t.prototype._addEventListener=function(e,r,n){var i=this;if(this.provider||ar.throwError("events require a provider or a signer with a provider",$r.Logger.errors.UNSUPPORTED_OPERATION,{operation:"once"}),e.addListener(r,n),this._runningEvents[e.tag]=e,!this._wrappedEmits[e.tag]){var a=function(o){var c=i._wrapEvent(e,o,r);if(c.decodeError==null)try{var u=e.getEmit(c);i.emit.apply(i,JH([e.filter],u,!1))}catch(s){c.decodeError=s.error}e.filter!=null&&i.emit("event",c),c.decodeError!=null&&i.emit("error",c.decodeError,c)};this._wrappedEmits[e.tag]=a,e.filter!=null&&this.provider.on(e.filter,a)}},t.prototype.queryFilter=function(e,r,n){var i=this,a=this._getRunningEvent(e),o=(0,$.shallowCopy)(a.filter);return typeof r=="string"&&(0,Io.isHexString)(r,32)?(n!=null&&ar.throwArgumentError("cannot specify toBlock with blockhash","toBlock",n),o.blockHash=r):(o.fromBlock=r??0,o.toBlock=n??"latest"),this.provider.getLogs(o).then(function(c){return c.map(function(u){return i._wrapEvent(a,u,null)})})},t.prototype.on=function(e,r){return this._addEventListener(this._getRunningEvent(e),r,!1),this},t.prototype.once=function(e,r){return this._addEventListener(this._getRunningEvent(e),r,!0),this},t.prototype.emit=function(e){for(var r=[],n=1;n0;return this._checkRunningEvents(i),a},t.prototype.listenerCount=function(e){var r=this;return this.provider?e==null?Object.keys(this._runningEvents).reduce(function(n,i){return n+r._runningEvents[i].listenerCount()},0):this._getRunningEvent(e).listenerCount():0},t.prototype.listeners=function(e){if(!this.provider)return[];if(e==null){var r=[];for(var n in this._runningEvents)this._runningEvents[n].listeners().forEach(function(i){r.push(i)});return r}return this._getRunningEvent(e).listeners()},t.prototype.removeAllListeners=function(e){if(!this.provider)return this;if(e==null){for(var r in this._runningEvents){var n=this._runningEvents[r];n.removeAllListeners(),this._checkRunningEvents(n)}return this}var i=this._getRunningEvent(e);return i.removeAllListeners(),this._checkRunningEvents(i),this},t.prototype.off=function(e,r){if(!this.provider)return this;var n=this._getRunningEvent(e);return n.removeListener(r),this._checkRunningEvents(n),this},t.prototype.removeListener=function(e,r){return this.off(e,r)},t}();lt.BaseContract=A7;var sb=function(t){wp(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e}(A7);lt.Contract=sb;var VH=function(){function t(e,r,n){var i=this.constructor,a=null;typeof r=="string"?a=r:(0,Io.isBytes)(r)?a=(0,Io.hexlify)(r):r&&typeof r.object=="string"?a=r.object:a="!",a.substring(0,2)!=="0x"&&(a="0x"+a),(!(0,Io.isHexString)(a)||a.length%2)&&ar.throwArgumentError("invalid bytecode","bytecode",r),n&&!ob.Signer.isSigner(n)&&ar.throwArgumentError("invalid signer","signer",n),(0,$.defineReadOnly)(this,"bytecode",a),(0,$.defineReadOnly)(this,"interface",(0,$.getStatic)(i,"getInterface")(e)),(0,$.defineReadOnly)(this,"signer",n||null)}return t.prototype.getDeployTransaction=function(){for(var e=[],r=0;r{"use strict";Object.defineProperty(_a,"__esModule",{value:!0});_a.Base58=_a.Base32=_a.BaseX=void 0;var S7=De(),Ep=Ve(),cb=function(){function t(e){(0,Ep.defineReadOnly)(this,"alphabet",e),(0,Ep.defineReadOnly)(this,"base",e.length),(0,Ep.defineReadOnly)(this,"_alphabetMap",{}),(0,Ep.defineReadOnly)(this,"_leader",e.charAt(0));for(var r=0;r0;)n.push(a%this.base),a=a/this.base|0}for(var c="",u=0;r[u]===0&&u=0;--s)c+=this.alphabet[n[s]];return c},t.prototype.decode=function(e){if(typeof e!="string")throw new TypeError("Expected String");var r=[];if(e.length===0)return new Uint8Array(r);r.push(0);for(var n=0;n>=8;for(;a>0;)r.push(a&255),a>>=8}for(var c=0;e[c]===this._leader&&c{"use strict";Object.defineProperty(_p,"__esModule",{value:!0});_p.pbkdf2=void 0;var WH=require("crypto"),T7=De();function _7(t){return Buffer.from((0,T7.arrayify)(t))}function YH(t,e,r,n,i){return(0,T7.hexlify)((0,WH.pbkdf2Sync)(_7(t),_7(e),r,n,i))}_p.pbkdf2=YH});var kp=P(Tp=>{"use strict";Object.defineProperty(Tp,"__esModule",{value:!0});Tp.pbkdf2=void 0;var $H=k7();Object.defineProperty(Tp,"pbkdf2",{enumerable:!0,get:function(){return $H.pbkdf2}})});var ub=P(ll=>{"use strict";Object.defineProperty(ll,"__esModule",{value:!0});ll.SupportedAlgorithm=void 0;var ez;(function(t){t.sha256="sha256",t.sha512="sha512"})(ez=ll.SupportedAlgorithm||(ll.SupportedAlgorithm={}))});var C7=P(Cp=>{"use strict";Object.defineProperty(Cp,"__esModule",{value:!0});Cp.version=void 0;Cp.version="sha2/5.7.0"});var P7=P(rn=>{"use strict";var rz=rn&&rn.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(rn,"__esModule",{value:!0});rn.computeHmac=rn.sha512=rn.sha256=rn.ripemd160=void 0;var lb=require("crypto"),tz=rz(tl()),fl=De(),nz=ub(),O7=re(),iz=C7(),az=new O7.Logger(iz.version);function oz(t){return"0x"+tz.default.ripemd160().update((0,fl.arrayify)(t)).digest("hex")}rn.ripemd160=oz;function sz(t){return"0x"+(0,lb.createHash)("sha256").update(Buffer.from((0,fl.arrayify)(t))).digest("hex")}rn.sha256=sz;function cz(t){return"0x"+(0,lb.createHash)("sha512").update(Buffer.from((0,fl.arrayify)(t))).digest("hex")}rn.sha512=cz;function uz(t,e,r){return nz.SupportedAlgorithm[t]||az.throwError("unsupported algorithm - "+t,O7.Logger.errors.UNSUPPORTED_OPERATION,{operation:"computeHmac",algorithm:t}),"0x"+(0,lb.createHmac)(t,Buffer.from((0,fl.arrayify)(e))).update(Buffer.from((0,fl.arrayify)(r))).digest("hex")}rn.computeHmac=uz});var dc=P(tn=>{"use strict";Object.defineProperty(tn,"__esModule",{value:!0});tn.SupportedAlgorithm=tn.sha512=tn.sha256=tn.ripemd160=tn.computeHmac=void 0;var Op=P7();Object.defineProperty(tn,"computeHmac",{enumerable:!0,get:function(){return Op.computeHmac}});Object.defineProperty(tn,"ripemd160",{enumerable:!0,get:function(){return Op.ripemd160}});Object.defineProperty(tn,"sha256",{enumerable:!0,get:function(){return Op.sha256}});Object.defineProperty(tn,"sha512",{enumerable:!0,get:function(){return Op.sha512}});var lz=ub();Object.defineProperty(tn,"SupportedAlgorithm",{enumerable:!0,get:function(){return lz.SupportedAlgorithm}})});var M7=P(Pp=>{"use strict";Object.defineProperty(Pp,"__esModule",{value:!0});Pp.version=void 0;Pp.version="wordlists/5.7.0"});var fi=P(No=>{"use strict";Object.defineProperty(No,"__esModule",{value:!0});No.Wordlist=No.logger=void 0;var fz=!1,dz=ko(),B7=Ve(),pz=re(),hz=M7();No.logger=new pz.Logger(hz.version);var vz=function(){function t(e){var r=this.constructor;No.logger.checkAbstract(r,t),(0,B7.defineReadOnly)(this,"locale",e)}return t.prototype.split=function(e){return e.toLowerCase().split(/ +/g)},t.prototype.join=function(e){return e.join(" ")},t.check=function(e){for(var r=[],n=0;n<2048;n++){var i=e.getWord(n);if(n!==e.getWordIndex(i))return"0x";r.push(i)}return(0,dz.id)(r.join(` -`)+` -`)},t.register=function(e,r){if(r||(r=e.locale),fz)try{var n=window;n._ethers&&n._ethers.wordlists&&(n._ethers.wordlists[r]||(0,B7.defineReadOnly)(n._ethers.wordlists,r,e))}catch{}},t}();No.Wordlist=vz});var R7=P(pc=>{"use strict";var mz=pc&&pc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(pc,"__esModule",{value:!0});pc.langCz=void 0;var fb=fi(),bz="AbdikaceAbecedaAdresaAgreseAkceAktovkaAlejAlkoholAmputaceAnanasAndulkaAnekdotaAnketaAntikaAnulovatArchaAroganceAsfaltAsistentAspiraceAstmaAstronomAtlasAtletikaAtolAutobusAzylBabkaBachorBacilBaculkaBadatelBagetaBagrBahnoBakterieBaladaBaletkaBalkonBalonekBalvanBalzaBambusBankomatBarbarBaretBarmanBarokoBarvaBaterkaBatohBavlnaBazalkaBazilikaBazukaBednaBeranBesedaBestieBetonBezinkaBezmocBeztakBicyklBidloBiftekBikinyBilanceBiografBiologBitvaBizonBlahobytBlatouchBlechaBleduleBleskBlikatBliznaBlokovatBlouditBludBobekBobrBodlinaBodnoutBohatostBojkotBojovatBokorysBolestBorecBoroviceBotaBoubelBouchatBoudaBouleBouratBoxerBradavkaBramboraBrankaBratrBreptaBriketaBrkoBrlohBronzBroskevBrunetkaBrusinkaBrzdaBrzyBublinaBubnovatBuchtaBuditelBudkaBudovaBufetBujarostBukviceBuldokBulvaBundaBunkrBurzaButikBuvolBuzolaBydletBylinaBytovkaBzukotCapartCarevnaCedrCeduleCejchCejnCelaCelerCelkemCelniceCeninaCennostCenovkaCentrumCenzorCestopisCetkaChalupaChapadloCharitaChataChechtatChemieChichotChirurgChladChlebaChlubitChmelChmuraChobotChocholChodbaCholeraChomoutChopitChorobaChovChrapotChrlitChrtChrupChtivostChudinaChutnatChvatChvilkaChvostChybaChystatChytitCibuleCigaretaCihelnaCihlaCinkotCirkusCisternaCitaceCitrusCizinecCizostClonaCokolivCouvatCtitelCtnostCudnostCuketaCukrCupotCvaknoutCvalCvikCvrkotCyklistaDalekoDarebaDatelDatumDceraDebataDechovkaDecibelDeficitDeflaceDeklDekretDemokratDepreseDerbyDeskaDetektivDikobrazDiktovatDiodaDiplomDiskDisplejDivadloDivochDlahaDlouhoDluhopisDnesDobroDobytekDocentDochutitDodnesDohledDohodaDohraDojemDojniceDokladDokolaDoktorDokumentDolarDolevaDolinaDomaDominantDomluvitDomovDonutitDopadDopisDoplnitDoposudDoprovodDopustitDorazitDorostDortDosahDoslovDostatekDosudDosytaDotazDotekDotknoutDoufatDoutnatDovozceDozaduDoznatDozorceDrahotaDrakDramatikDravecDrazeDrdolDrobnostDrogerieDrozdDrsnostDrtitDrzostDubenDuchovnoDudekDuhaDuhovkaDusitDusnoDutostDvojiceDvorecDynamitEkologEkonomieElektronElipsaEmailEmiseEmoceEmpatieEpizodaEpochaEpopejEposEsejEsenceEskortaEskymoEtiketaEuforieEvoluceExekuceExkurzeExpediceExplozeExportExtraktFackaFajfkaFakultaFanatikFantazieFarmacieFavoritFazoleFederaceFejetonFenkaFialkaFigurantFilozofFiltrFinanceFintaFixaceFjordFlanelFlirtFlotilaFondFosforFotbalFotkaFotonFrakceFreskaFrontaFukarFunkceFyzikaGalejeGarantGenetikaGeologGilotinaGlazuraGlejtGolemGolfistaGotikaGrafGramofonGranuleGrepGrilGrogGroteskaGumaHadiceHadrHalaHalenkaHanbaHanopisHarfaHarpunaHavranHebkostHejkalHejnoHejtmanHektarHelmaHematomHerecHernaHesloHezkyHistorikHladovkaHlasivkyHlavaHledatHlenHlodavecHlohHloupostHltatHlubinaHluchotaHmatHmotaHmyzHnisHnojivoHnoutHoblinaHobojHochHodinyHodlatHodnotaHodovatHojnostHokejHolinkaHolkaHolubHomoleHonitbaHonoraceHoralHordaHorizontHorkoHorlivecHormonHorninaHoroskopHorstvoHospodaHostinaHotovostHoubaHoufHoupatHouskaHovorHradbaHraniceHravostHrazdaHrbolekHrdinaHrdloHrdostHrnekHrobkaHromadaHrotHroudaHrozenHrstkaHrubostHryzatHubenostHubnoutHudbaHukotHumrHusitaHustotaHvozdHybnostHydrantHygienaHymnaHysterikIdylkaIhnedIkonaIluzeImunitaInfekceInflaceInkasoInovaceInspekceInternetInvalidaInvestorInzerceIronieJablkoJachtaJahodaJakmileJakostJalovecJantarJarmarkJaroJasanJasnoJatkaJavorJazykJedinecJedleJednatelJehlanJekotJelenJelitoJemnostJenomJepiceJeseterJevitJezdecJezeroJinakJindyJinochJiskraJistotaJitrniceJizvaJmenovatJogurtJurtaKabaretKabelKabinetKachnaKadetKadidloKahanKajakKajutaKakaoKaktusKalamitaKalhotyKalibrKalnostKameraKamkolivKamnaKanibalKanoeKantorKapalinaKapelaKapitolaKapkaKapleKapotaKaprKapustaKapybaraKaramelKarotkaKartonKasaKatalogKatedraKauceKauzaKavalecKazajkaKazetaKazivostKdekolivKdesiKedlubenKempKeramikaKinoKlacekKladivoKlamKlapotKlasikaKlaunKlecKlenbaKlepatKlesnoutKlidKlimaKlisnaKloboukKlokanKlopaKloubKlubovnaKlusatKluzkostKmenKmitatKmotrKnihaKnotKoaliceKoberecKobkaKoblihaKobylaKocourKohoutKojenecKokosKoktejlKolapsKoledaKolizeKoloKomandoKometaKomikKomnataKomoraKompasKomunitaKonatKonceptKondiceKonecKonfeseKongresKoninaKonkursKontaktKonzervaKopanecKopieKopnoutKoprovkaKorbelKorektorKormidloKoroptevKorpusKorunaKorytoKorzetKosatecKostkaKotelKotletaKotoulKoukatKoupelnaKousekKouzloKovbojKozaKozorohKrabiceKrachKrajinaKralovatKrasopisKravataKreditKrejcarKresbaKrevetaKriketKritikKrizeKrkavecKrmelecKrmivoKrocanKrokKronikaKropitKroupaKrovkaKrtekKruhadloKrupiceKrutostKrvinkaKrychleKryptaKrystalKrytKudlankaKufrKujnostKuklaKulajdaKulichKulkaKulometKulturaKunaKupodivuKurtKurzorKutilKvalitaKvasinkaKvestorKynologKyselinaKytaraKyticeKytkaKytovecKyvadloLabradorLachtanLadnostLaikLakomecLamelaLampaLanovkaLasiceLasoLasturaLatinkaLavinaLebkaLeckdyLedenLedniceLedovkaLedvinaLegendaLegieLegraceLehceLehkostLehnoutLektvarLenochodLentilkaLepenkaLepidloLetadloLetecLetmoLetokruhLevhartLevitaceLevobokLibraLichotkaLidojedLidskostLihovinaLijavecLilekLimetkaLinieLinkaLinoleumListopadLitinaLitovatLobistaLodivodLogikaLogopedLokalitaLoketLomcovatLopataLopuchLordLososLotrLoudalLouhLoukaLouskatLovecLstivostLucernaLuciferLumpLuskLustraceLviceLyraLyrikaLysinaMadamMadloMagistrMahagonMajetekMajitelMajoritaMakakMakoviceMakrelaMalbaMalinaMalovatMalviceMaminkaMandleMankoMarnostMasakrMaskotMasopustMaticeMatrikaMaturitaMazanecMazivoMazlitMazurkaMdlobaMechanikMeditaceMedovinaMelasaMelounMentolkaMetlaMetodaMetrMezeraMigraceMihnoutMihuleMikinaMikrofonMilenecMilimetrMilostMimikaMincovnaMinibarMinometMinulostMiskaMistrMixovatMladostMlhaMlhovinaMlokMlsatMluvitMnichMnohemMobilMocnostModelkaModlitbaMohylaMokroMolekulaMomentkaMonarchaMonoklMonstrumMontovatMonzunMosazMoskytMostMotivaceMotorkaMotykaMouchaMoudrostMozaikaMozekMozolMramorMravenecMrkevMrtvolaMrzetMrzutostMstitelMudrcMuflonMulatMumieMuniceMusetMutaceMuzeumMuzikantMyslivecMzdaNabouratNachytatNadaceNadbytekNadhozNadobroNadpisNahlasNahnatNahodileNahraditNaivitaNajednouNajistoNajmoutNaklonitNakonecNakrmitNalevoNamazatNamluvitNanometrNaokoNaopakNaostroNapadatNapevnoNaplnitNapnoutNaposledNaprostoNaroditNarubyNarychloNasaditNasekatNaslepoNastatNatolikNavenekNavrchNavzdoryNazvatNebeNechatNeckyNedalekoNedbatNeduhNegaceNehetNehodaNejenNejprveNeklidNelibostNemilostNemocNeochotaNeonkaNepokojNerostNervNesmyslNesouladNetvorNeuronNevinaNezvykleNicotaNijakNikamNikdyNiklNikterakNitroNoclehNohaviceNominaceNoraNorekNositelNosnostNouzeNovinyNovotaNozdraNudaNudleNugetNutitNutnostNutrieNymfaObalObarvitObavaObdivObecObehnatObejmoutObezitaObhajobaObilniceObjasnitObjektObklopitOblastOblekOblibaOblohaObludaObnosObohatitObojekOboutObrazecObrnaObrubaObrysObsahObsluhaObstaratObuvObvazObvinitObvodObvykleObyvatelObzorOcasOcelOcenitOchladitOchotaOchranaOcitnoutOdbojOdbytOdchodOdcizitOdebratOdeslatOdevzdatOdezvaOdhadceOdhoditOdjetOdjinudOdkazOdkoupitOdlivOdlukaOdmlkaOdolnostOdpadOdpisOdploutOdporOdpustitOdpykatOdrazkaOdsouditOdstupOdsunOdtokOdtudOdvahaOdvetaOdvolatOdvracetOdznakOfinaOfsajdOhlasOhniskoOhradaOhrozitOhryzekOkapOkeniceOklikaOknoOkouzlitOkovyOkrasaOkresOkrsekOkruhOkupantOkurkaOkusitOlejninaOlizovatOmakOmeletaOmezitOmladinaOmlouvatOmluvaOmylOnehdyOpakovatOpasekOperaceOpiceOpilostOpisovatOporaOpoziceOpravduOprotiOrbitalOrchestrOrgieOrliceOrlojOrtelOsadaOschnoutOsikaOsivoOslavaOslepitOslnitOslovitOsnovaOsobaOsolitOspalecOstenOstrahaOstudaOstychOsvojitOteplitOtiskOtopOtrhatOtrlostOtrokOtrubyOtvorOvanoutOvarOvesOvlivnitOvoceOxidOzdobaPachatelPacientPadouchPahorekPaktPalandaPalecPalivoPalubaPamfletPamlsekPanenkaPanikaPannaPanovatPanstvoPantoflePaprikaParketaParodiePartaParukaParybaPasekaPasivitaPastelkaPatentPatronaPavoukPaznehtPazourekPeckaPedagogPejsekPekloPelotonPenaltaPendrekPenzePeriskopPeroPestrostPetardaPeticePetrolejPevninaPexesoPianistaPihaPijavicePiklePiknikPilinaPilnostPilulkaPinzetaPipetaPisatelPistolePitevnaPivnicePivovarPlacentaPlakatPlamenPlanetaPlastikaPlatitPlavidloPlazPlechPlemenoPlentaPlesPletivoPlevelPlivatPlnitPlnoPlochaPlodinaPlombaPloutPlukPlynPobavitPobytPochodPocitPoctivecPodatPodcenitPodepsatPodhledPodivitPodkladPodmanitPodnikPodobaPodporaPodrazPodstataPodvodPodzimPoeziePohankaPohnutkaPohovorPohromaPohybPointaPojistkaPojmoutPokazitPoklesPokojPokrokPokutaPokynPolednePolibekPolknoutPolohaPolynomPomaluPominoutPomlkaPomocPomstaPomysletPonechatPonorkaPonurostPopadatPopelPopisekPoplachPoprositPopsatPopudPoradcePorcePorodPoruchaPoryvPosaditPosedPosilaPoskokPoslanecPosouditPospoluPostavaPosudekPosypPotahPotkanPotleskPotomekPotravaPotupaPotvoraPoukazPoutoPouzdroPovahaPovidlaPovlakPovozPovrchPovstatPovykPovzdechPozdravPozemekPoznatekPozorPozvatPracovatPrahoryPraktikaPralesPraotecPraporekPrasePravdaPrincipPrknoProbuditProcentoProdejProfeseProhraProjektProlomitPromilePronikatPropadProrokProsbaProtonProutekProvazPrskavkaPrstenPrudkostPrutPrvekPrvohoryPsanecPsovodPstruhPtactvoPubertaPuchPudlPukavecPuklinaPukrlePultPumpaPuncPupenPusaPusinkaPustinaPutovatPutykaPyramidaPyskPytelRacekRachotRadiaceRadniceRadonRaftRagbyRaketaRakovinaRamenoRampouchRandeRarachRaritaRasovnaRastrRatolestRazanceRazidloReagovatReakceReceptRedaktorReferentReflexRejnokReklamaRekordRekrutRektorReputaceRevizeRevmaRevolverRezervaRiskovatRizikoRobotikaRodokmenRohovkaRokleRokokoRomanetoRopovodRopuchaRorejsRosolRostlinaRotmistrRotopedRotundaRoubenkaRouchoRoupRouraRovinaRovniceRozborRozchodRozdatRozeznatRozhodceRozinkaRozjezdRozkazRozlohaRozmarRozpadRozruchRozsahRoztokRozumRozvodRubrikaRuchadloRukaviceRukopisRybaRybolovRychlostRydloRypadloRytinaRyzostSadistaSahatSakoSamecSamizdatSamotaSanitkaSardinkaSasankaSatelitSazbaSazeniceSborSchovatSebrankaSeceseSedadloSedimentSedloSehnatSejmoutSekeraSektaSekundaSekvojeSemenoSenoServisSesaditSeshoraSeskokSeslatSestraSesuvSesypatSetbaSetinaSetkatSetnoutSetrvatSeverSeznamShodaShrnoutSifonSilniceSirkaSirotekSirupSituaceSkafandrSkaliskoSkanzenSkautSkeptikSkicaSkladbaSkleniceSkloSkluzSkobaSkokanSkoroSkriptaSkrzSkupinaSkvostSkvrnaSlabikaSladidloSlaninaSlastSlavnostSledovatSlepecSlevaSlezinaSlibSlinaSlizniceSlonSloupekSlovoSluchSluhaSlunceSlupkaSlzaSmaragdSmetanaSmilstvoSmlouvaSmogSmradSmrkSmrtkaSmutekSmyslSnadSnahaSnobSobotaSochaSodovkaSokolSopkaSotvaSoubojSoucitSoudceSouhlasSouladSoumrakSoupravaSousedSoutokSouvisetSpalovnaSpasitelSpisSplavSpodekSpojenecSpoluSponzorSpornostSpoustaSprchaSpustitSrandaSrazSrdceSrnaSrnecSrovnatSrpenSrstSrubStaniceStarostaStatikaStavbaStehnoStezkaStodolaStolekStopaStornoStoupatStrachStresStrhnoutStromStrunaStudnaStupniceStvolStykSubjektSubtropySucharSudostSuknoSundatSunoutSurikataSurovinaSvahSvalstvoSvetrSvatbaSvazekSvisleSvitekSvobodaSvodidloSvorkaSvrabSykavkaSykotSynekSynovecSypatSypkostSyrovostSyselSytostTabletkaTabuleTahounTajemnoTajfunTajgaTajitTajnostTaktikaTamhleTamponTancovatTanecTankerTapetaTaveninaTazatelTechnikaTehdyTekutinaTelefonTemnotaTendenceTenistaTenorTeplotaTepnaTeprveTerapieTermoskaTextilTichoTiskopisTitulekTkadlecTkaninaTlapkaTleskatTlukotTlupaTmelToaletaTopinkaTopolTorzoTouhaToulecTradiceTraktorTrampTrasaTraverzaTrefitTrestTrezorTrhavinaTrhlinaTrochuTrojiceTroskaTroubaTrpceTrpitelTrpkostTrubecTruchlitTruhliceTrusTrvatTudyTuhnoutTuhostTundraTuristaTurnajTuzemskoTvarohTvorbaTvrdostTvrzTygrTykevUbohostUbozeUbratUbrousekUbrusUbytovnaUchoUctivostUdivitUhraditUjednatUjistitUjmoutUkazatelUklidnitUklonitUkotvitUkrojitUliceUlitaUlovitUmyvadloUnavitUniformaUniknoutUpadnoutUplatnitUplynoutUpoutatUpravitUranUrazitUsednoutUsilovatUsmrtitUsnadnitUsnoutUsouditUstlatUstrnoutUtahovatUtkatUtlumitUtonoutUtopenecUtrousitUvalitUvolnitUvozovkaUzdravitUzelUzeninaUzlinaUznatVagonValchaValounVanaVandalVanilkaVaranVarhanyVarovatVcelkuVchodVdovaVedroVegetaceVejceVelbloudVeletrhVelitelVelmocVelrybaVenkovVerandaVerzeVeselkaVeskrzeVesniceVespoduVestaVeterinaVeverkaVibraceVichrVideohraVidinaVidleVilaViniceVisetVitalitaVizeVizitkaVjezdVkladVkusVlajkaVlakVlasecVlevoVlhkostVlivVlnovkaVloupatVnucovatVnukVodaVodivostVodoznakVodstvoVojenskyVojnaVojskoVolantVolbaVolitVolnoVoskovkaVozidloVozovnaVpravoVrabecVracetVrahVrataVrbaVrcholekVrhatVrstvaVrtuleVsaditVstoupitVstupVtipVybavitVybratVychovatVydatVydraVyfotitVyhledatVyhnoutVyhoditVyhraditVyhubitVyjasnitVyjetVyjmoutVyklopitVykonatVylekatVymazatVymezitVymizetVymysletVynechatVynikatVynutitVypadatVyplatitVypravitVypustitVyrazitVyrovnatVyrvatVyslovitVysokoVystavitVysunoutVysypatVytasitVytesatVytratitVyvinoutVyvolatVyvrhelVyzdobitVyznatVzaduVzbuditVzchopitVzdorVzduchVzdychatVzestupVzhledemVzkazVzlykatVznikVzorekVzpouraVztahVztekXylofonZabratZabydletZachovatZadarmoZadusitZafoukatZahltitZahoditZahradaZahynoutZajatecZajetZajistitZaklepatZakoupitZalepitZamezitZamotatZamysletZanechatZanikatZaplatitZapojitZapsatZarazitZastavitZasunoutZatajitZatemnitZatknoutZaujmoutZavalitZaveletZavinitZavolatZavrtatZazvonitZbavitZbrusuZbudovatZbytekZdalekaZdarmaZdatnostZdivoZdobitZdrojZdvihZdymadloZeleninaZemanZeminaZeptatZezaduZezdolaZhatitZhltnoutZhlubokaZhotovitZhrubaZimaZimniceZjemnitZklamatZkoumatZkratkaZkumavkaZlatoZlehkaZlobaZlomZlostZlozvykZmapovatZmarZmatekZmijeZmizetZmocnitZmodratZmrzlinaZmutovatZnakZnalostZnamenatZnovuZobrazitZotavitZoubekZoufaleZploditZpomalitZpravaZprostitZprudkaZprvuZradaZranitZrcadloZrnitostZrnoZrovnaZrychlitZrzavostZtichaZtratitZubovinaZubrZvednoutZvenkuZveselaZvonZvratZvukovodZvyk",dl=null;function F7(t){if(dl==null&&(dl=bz.replace(/([A-Z])/g," $1").toLowerCase().substring(1).split(" "),fb.Wordlist.check(t)!=="0x25f44555f4af25b51a711136e1c7d6e50ce9f8917d39d6b1f076b2bb4d2fac1a"))throw dl=null,new Error("BIP39 Wordlist for en (English) FAILED")}var gz=function(t){mz(e,t);function e(){return t.call(this,"cz")||this}return e.prototype.getWord=function(r){return F7(this),dl[r]},e.prototype.getWordIndex=function(r){return F7(this),dl.indexOf(r)},e}(fb.Wordlist),L7=new gz;pc.langCz=L7;fb.Wordlist.register(L7)});var D7=P(hc=>{"use strict";var xz=hc&&hc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(hc,"__esModule",{value:!0});hc.langEn=void 0;var db=fi(),yz="AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo",pl=null;function I7(t){if(pl==null&&(pl=yz.replace(/([A-Z])/g," $1").toLowerCase().substring(1).split(" "),db.Wordlist.check(t)!=="0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60"))throw pl=null,new Error("BIP39 Wordlist for en (English) FAILED")}var wz=function(t){xz(e,t);function e(){return t.call(this,"en")||this}return e.prototype.getWord=function(r){return I7(this),pl[r]},e.prototype.getWordIndex=function(r){return I7(this),pl.indexOf(r)},e}(db.Wordlist),N7=new wz;hc.langEn=N7;db.Wordlist.register(N7)});var H7=P(vc=>{"use strict";var Az=vc&&vc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(vc,"__esModule",{value:!0});vc.langEs=void 0;var Mp=Cr(),Bp=fi(),Ez="A/bacoAbdomenAbejaAbiertoAbogadoAbonoAbortoAbrazoAbrirAbueloAbusoAcabarAcademiaAccesoAccio/nAceiteAcelgaAcentoAceptarA/cidoAclararAcne/AcogerAcosoActivoActoActrizActuarAcudirAcuerdoAcusarAdictoAdmitirAdoptarAdornoAduanaAdultoAe/reoAfectarAficio/nAfinarAfirmarA/gilAgitarAgoni/aAgostoAgotarAgregarAgrioAguaAgudoA/guilaAgujaAhogoAhorroAireAislarAjedrezAjenoAjusteAlacra/nAlambreAlarmaAlbaA/lbumAlcaldeAldeaAlegreAlejarAlertaAletaAlfilerAlgaAlgodo/nAliadoAlientoAlivioAlmaAlmejaAlmi/barAltarAltezaAltivoAltoAlturaAlumnoAlzarAmableAmanteAmapolaAmargoAmasarA/mbarA/mbitoAmenoAmigoAmistadAmorAmparoAmplioAnchoAncianoAnclaAndarAnde/nAnemiaA/nguloAnilloA/nimoAni/sAnotarAntenaAntiguoAntojoAnualAnularAnuncioA~adirA~ejoA~oApagarAparatoApetitoApioAplicarApodoAporteApoyoAprenderAprobarApuestaApuroAradoAra~aArarA/rbitroA/rbolArbustoArchivoArcoArderArdillaArduoA/reaA/ridoAriesArmoni/aArne/sAromaArpaArpo/nArregloArrozArrugaArteArtistaAsaAsadoAsaltoAscensoAsegurarAseoAsesorAsientoAsiloAsistirAsnoAsombroA/speroAstillaAstroAstutoAsumirAsuntoAtajoAtaqueAtarAtentoAteoA/ticoAtletaA/tomoAtraerAtrozAtu/nAudazAudioAugeAulaAumentoAusenteAutorAvalAvanceAvaroAveAvellanaAvenaAvestruzAvio/nAvisoAyerAyudaAyunoAzafra/nAzarAzoteAzu/carAzufreAzulBabaBaborBacheBahi/aBaileBajarBalanzaBalco/nBaldeBambu/BancoBandaBa~oBarbaBarcoBarnizBarroBa/sculaBasto/nBasuraBatallaBateri/aBatirBatutaBau/lBazarBebe/BebidaBelloBesarBesoBestiaBichoBienBingoBlancoBloqueBlusaBoaBobinaBoboBocaBocinaBodaBodegaBoinaBolaBoleroBolsaBombaBondadBonitoBonoBonsa/iBordeBorrarBosqueBoteBoti/nBo/vedaBozalBravoBrazoBrechaBreveBrilloBrincoBrisaBrocaBromaBronceBroteBrujaBruscoBrutoBuceoBucleBuenoBueyBufandaBufo/nBu/hoBuitreBultoBurbujaBurlaBurroBuscarButacaBuzo/nCaballoCabezaCabinaCabraCacaoCada/verCadenaCaerCafe/Cai/daCaima/nCajaCajo/nCalCalamarCalcioCaldoCalidadCalleCalmaCalorCalvoCamaCambioCamelloCaminoCampoCa/ncerCandilCanelaCanguroCanicaCantoCa~aCa~o/nCaobaCaosCapazCapita/nCapoteCaptarCapuchaCaraCarbo/nCa/rcelCaretaCargaCari~oCarneCarpetaCarroCartaCasaCascoCaseroCaspaCastorCatorceCatreCaudalCausaCazoCebollaCederCedroCeldaCe/lebreCelosoCe/lulaCementoCenizaCentroCercaCerdoCerezaCeroCerrarCertezaCe/spedCetroChacalChalecoChampu/ChanclaChapaCharlaChicoChisteChivoChoqueChozaChuletaChuparCiclo/nCiegoCieloCienCiertoCifraCigarroCimaCincoCineCintaCipre/sCircoCiruelaCisneCitaCiudadClamorClanClaroClaseClaveClienteClimaCli/nicaCobreCoccio/nCochinoCocinaCocoCo/digoCodoCofreCogerCoheteCoji/nCojoColaColchaColegioColgarColinaCollarColmoColumnaCombateComerComidaCo/modoCompraCondeConejoCongaConocerConsejoContarCopaCopiaCorazo/nCorbataCorchoCordo/nCoronaCorrerCoserCosmosCostaCra/neoCra/terCrearCrecerCrei/doCremaCri/aCrimenCriptaCrisisCromoCro/nicaCroquetaCrudoCruzCuadroCuartoCuatroCuboCubrirCucharaCuelloCuentoCuerdaCuestaCuevaCuidarCulebraCulpaCultoCumbreCumplirCunaCunetaCuotaCupo/nCu/pulaCurarCuriosoCursoCurvaCutisDamaDanzaDarDardoDa/tilDeberDe/bilDe/cadaDecirDedoDefensaDefinirDejarDelfi/nDelgadoDelitoDemoraDensoDentalDeporteDerechoDerrotaDesayunoDeseoDesfileDesnudoDestinoDesvi/oDetalleDetenerDeudaDi/aDiabloDiademaDiamanteDianaDiarioDibujoDictarDienteDietaDiezDifi/cilDignoDilemaDiluirDineroDirectoDirigirDiscoDise~oDisfrazDivaDivinoDobleDoceDolorDomingoDonDonarDoradoDormirDorsoDosDosisDrago/nDrogaDuchaDudaDueloDue~oDulceDu/oDuqueDurarDurezaDuroE/banoEbrioEcharEcoEcuadorEdadEdicio/nEdificioEditorEducarEfectoEficazEjeEjemploElefanteElegirElementoElevarElipseE/liteElixirElogioEludirEmbudoEmitirEmocio/nEmpateEmpe~oEmpleoEmpresaEnanoEncargoEnchufeEnci/aEnemigoEneroEnfadoEnfermoEnga~oEnigmaEnlaceEnormeEnredoEnsayoEnse~arEnteroEntrarEnvaseEnvi/oE/pocaEquipoErizoEscalaEscenaEscolarEscribirEscudoEsenciaEsferaEsfuerzoEspadaEspejoEspi/aEsposaEspumaEsqui/EstarEsteEstiloEstufaEtapaEternoE/ticaEtniaEvadirEvaluarEventoEvitarExactoExamenExcesoExcusaExentoExigirExilioExistirE/xitoExpertoExplicarExponerExtremoFa/bricaFa/bulaFachadaFa/cilFactorFaenaFajaFaldaFalloFalsoFaltarFamaFamiliaFamosoFarao/nFarmaciaFarolFarsaFaseFatigaFaunaFavorFaxFebreroFechaFelizFeoFeriaFerozFe/rtilFervorFesti/nFiableFianzaFiarFibraFiccio/nFichaFideoFiebreFielFieraFiestaFiguraFijarFijoFilaFileteFilialFiltroFinFincaFingirFinitoFirmaFlacoFlautaFlechaFlorFlotaFluirFlujoFlu/orFobiaFocaFogataFogo/nFolioFolletoFondoFormaForroFortunaForzarFosaFotoFracasoFra/gilFranjaFraseFraudeFrei/rFrenoFresaFri/oFritoFrutaFuegoFuenteFuerzaFugaFumarFuncio/nFundaFurgo/nFuriaFusilFu/tbolFuturoGacelaGafasGaitaGajoGalaGaleri/aGalloGambaGanarGanchoGangaGansoGarajeGarzaGasolinaGastarGatoGavila/nGemeloGemirGenGe/neroGenioGenteGeranioGerenteGermenGestoGiganteGimnasioGirarGiroGlaciarGloboGloriaGolGolfoGolosoGolpeGomaGordoGorilaGorraGotaGoteoGozarGradaGra/ficoGranoGrasaGratisGraveGrietaGrilloGripeGrisGritoGrosorGru/aGruesoGrumoGrupoGuanteGuapoGuardiaGuerraGui/aGui~oGuionGuisoGuitarraGusanoGustarHaberHa/bilHablarHacerHachaHadaHallarHamacaHarinaHazHaza~aHebillaHebraHechoHeladoHelioHembraHerirHermanoHe/roeHervirHieloHierroHi/gadoHigieneHijoHimnoHistoriaHocicoHogarHogueraHojaHombreHongoHonorHonraHoraHormigaHornoHostilHoyoHuecoHuelgaHuertaHuesoHuevoHuidaHuirHumanoHu/medoHumildeHumoHundirHuraca/nHurtoIconoIdealIdiomaI/doloIglesiaIglu/IgualIlegalIlusio/nImagenIma/nImitarImparImperioImponerImpulsoIncapazI/ndiceInerteInfielInformeIngenioInicioInmensoInmuneInnatoInsectoInstanteIntere/sI/ntimoIntuirInu/tilInviernoIraIrisIroni/aIslaIsloteJabali/Jabo/nJamo/nJarabeJardi/nJarraJaulaJazmi/nJefeJeringaJineteJornadaJorobaJovenJoyaJuergaJuevesJuezJugadorJugoJugueteJuicioJuncoJunglaJunioJuntarJu/piterJurarJustoJuvenilJuzgarKiloKoalaLabioLacioLacraLadoLadro/nLagartoLa/grimaLagunaLaicoLamerLa/minaLa/mparaLanaLanchaLangostaLanzaLa/pizLargoLarvaLa/stimaLataLa/texLatirLaurelLavarLazoLealLeccio/nLecheLectorLeerLegio/nLegumbreLejanoLenguaLentoLe~aLeo/nLeopardoLesio/nLetalLetraLeveLeyendaLibertadLibroLicorLi/derLidiarLienzoLigaLigeroLimaLi/miteLimo/nLimpioLinceLindoLi/neaLingoteLinoLinternaLi/quidoLisoListaLiteraLitioLitroLlagaLlamaLlantoLlaveLlegarLlenarLlevarLlorarLloverLluviaLoboLocio/nLocoLocuraLo/gicaLogroLombrizLomoLonjaLoteLuchaLucirLugarLujoLunaLunesLupaLustroLutoLuzMacetaMachoMaderaMadreMaduroMaestroMafiaMagiaMagoMai/zMaldadMaletaMallaMaloMama/MamboMamutMancoMandoManejarMangaManiqui/ManjarManoMansoMantaMa~anaMapaMa/quinaMarMarcoMareaMarfilMargenMaridoMa/rmolMarro/nMartesMarzoMasaMa/scaraMasivoMatarMateriaMatizMatrizMa/ximoMayorMazorcaMechaMedallaMedioMe/dulaMejillaMejorMelenaMelo/nMemoriaMenorMensajeMenteMenu/MercadoMerengueMe/ritoMesMeso/nMetaMeterMe/todoMetroMezclaMiedoMielMiembroMigaMilMilagroMilitarMillo/nMimoMinaMineroMi/nimoMinutoMiopeMirarMisaMiseriaMisilMismoMitadMitoMochilaMocio/nModaModeloMohoMojarMoldeMolerMolinoMomentoMomiaMonarcaMonedaMonjaMontoMo~oMoradaMorderMorenoMorirMorroMorsaMortalMoscaMostrarMotivoMoverMo/vilMozoMuchoMudarMuebleMuelaMuerteMuestraMugreMujerMulaMuletaMultaMundoMu~ecaMuralMuroMu/sculoMuseoMusgoMu/sicaMusloNa/carNacio/nNadarNaipeNaranjaNarizNarrarNasalNatalNativoNaturalNa/useaNavalNaveNavidadNecioNe/ctarNegarNegocioNegroNeo/nNervioNetoNeutroNevarNeveraNichoNidoNieblaNietoNi~ezNi~oNi/tidoNivelNoblezaNocheNo/minaNoriaNormaNorteNotaNoticiaNovatoNovelaNovioNubeNucaNu/cleoNudilloNudoNueraNueveNuezNuloNu/meroNutriaOasisObesoObispoObjetoObraObreroObservarObtenerObvioOcaOcasoOce/anoOchentaOchoOcioOcreOctavoOctubreOcultoOcuparOcurrirOdiarOdioOdiseaOesteOfensaOfertaOficioOfrecerOgroOi/doOi/rOjoOlaOleadaOlfatoOlivoOllaOlmoOlorOlvidoOmbligoOndaOnzaOpacoOpcio/nO/peraOpinarOponerOptarO/pticaOpuestoOracio/nOradorOralO/rbitaOrcaOrdenOrejaO/rganoOrgi/aOrgulloOrienteOrigenOrillaOroOrquestaOrugaOsadi/aOscuroOseznoOsoOstraOto~oOtroOvejaO/vuloO/xidoOxi/genoOyenteOzonoPactoPadrePaellaPa/ginaPagoPai/sPa/jaroPalabraPalcoPaletaPa/lidoPalmaPalomaPalparPanPanalPa/nicoPanteraPa~ueloPapa/PapelPapillaPaquetePararParcelaParedParirParoPa/rpadoParquePa/rrafoPartePasarPaseoPasio/nPasoPastaPataPatioPatriaPausaPautaPavoPayasoPeato/nPecadoPeceraPechoPedalPedirPegarPeinePelarPelda~oPeleaPeligroPellejoPeloPelucaPenaPensarPe~o/nPeo/nPeorPepinoPeque~oPeraPerchaPerderPerezaPerfilPericoPerlaPermisoPerroPersonaPesaPescaPe/simoPesta~aPe/taloPetro/leoPezPezu~aPicarPicho/nPiePiedraPiernaPiezaPijamaPilarPilotoPimientaPinoPintorPinzaPi~aPiojoPipaPirataPisarPiscinaPisoPistaPito/nPizcaPlacaPlanPlataPlayaPlazaPleitoPlenoPlomoPlumaPluralPobrePocoPoderPodioPoemaPoesi/aPoetaPolenPolici/aPolloPolvoPomadaPomeloPomoPompaPonerPorcio/nPortalPosadaPoseerPosiblePostePotenciaPotroPozoPradoPrecozPreguntaPremioPrensaPresoPrevioPrimoPri/ncipePrisio/nPrivarProaProbarProcesoProductoProezaProfesorProgramaProlePromesaProntoPropioPro/ximoPruebaPu/blicoPucheroPudorPuebloPuertaPuestoPulgaPulirPulmo/nPulpoPulsoPumaPuntoPu~alPu~oPupaPupilaPure/QuedarQuejaQuemarQuererQuesoQuietoQui/micaQuinceQuitarRa/banoRabiaRaboRacio/nRadicalRai/zRamaRampaRanchoRangoRapazRa/pidoRaptoRasgoRaspaRatoRayoRazaRazo/nReaccio/nRealidadReba~oReboteRecaerRecetaRechazoRecogerRecreoRectoRecursoRedRedondoReducirReflejoReformaRefra/nRefugioRegaloRegirReglaRegresoRehe/nReinoRei/rRejaRelatoRelevoRelieveRellenoRelojRemarRemedioRemoRencorRendirRentaRepartoRepetirReposoReptilResRescateResinaRespetoRestoResumenRetiroRetornoRetratoReunirReve/sRevistaReyRezarRicoRiegoRiendaRiesgoRifaRi/gidoRigorRinco/nRi~o/nRi/oRiquezaRisaRitmoRitoRizoRobleRoceRociarRodarRodeoRodillaRoerRojizoRojoRomeroRomperRonRoncoRondaRopaRoperoRosaRoscaRostroRotarRubi/RuborRudoRuedaRugirRuidoRuinaRuletaRuloRumboRumorRupturaRutaRutinaSa/badoSaberSabioSableSacarSagazSagradoSalaSaldoSaleroSalirSalmo/nSalo/nSalsaSaltoSaludSalvarSambaSancio/nSandi/aSanearSangreSanidadSanoSantoSapoSaqueSardinaSarte/nSastreSata/nSaunaSaxofo/nSeccio/nSecoSecretoSectaSedSeguirSeisSelloSelvaSemanaSemillaSendaSensorSe~alSe~orSepararSepiaSequi/aSerSerieSermo/nServirSesentaSesio/nSetaSetentaSeveroSexoSextoSidraSiestaSieteSigloSignoSi/labaSilbarSilencioSillaSi/mboloSimioSirenaSistemaSitioSituarSobreSocioSodioSolSolapaSoldadoSoledadSo/lidoSoltarSolucio/nSombraSondeoSonidoSonoroSonrisaSopaSoplarSoporteSordoSorpresaSorteoSoste/nSo/tanoSuaveSubirSucesoSudorSuegraSueloSue~oSuerteSufrirSujetoSulta/nSumarSuperarSuplirSuponerSupremoSurSurcoSure~oSurgirSustoSutilTabacoTabiqueTablaTabu/TacoTactoTajoTalarTalcoTalentoTallaTalo/nTama~oTamborTangoTanqueTapaTapeteTapiaTapo/nTaquillaTardeTareaTarifaTarjetaTarotTarroTartaTatuajeTauroTazaTazo/nTeatroTechoTeclaTe/cnicaTejadoTejerTejidoTelaTele/fonoTemaTemorTemploTenazTenderTenerTenisTensoTeori/aTerapiaTercoTe/rminoTernuraTerrorTesisTesoroTestigoTeteraTextoTezTibioTiburo/nTiempoTiendaTierraTiesoTigreTijeraTildeTimbreTi/midoTimoTintaTi/oTi/picoTipoTiraTiro/nTita/nTi/tereTi/tuloTizaToallaTobilloTocarTocinoTodoTogaToldoTomarTonoTontoToparTopeToqueTo/raxToreroTormentaTorneoToroTorpedoTorreTorsoTortugaTosToscoToserTo/xicoTrabajoTractorTraerTra/ficoTragoTrajeTramoTranceTratoTraumaTrazarTre/bolTreguaTreintaTrenTreparTresTribuTrigoTripaTristeTriunfoTrofeoTrompaTroncoTropaTroteTrozoTrucoTruenoTrufaTuberi/aTuboTuertoTumbaTumorTu/nelTu/nicaTurbinaTurismoTurnoTutorUbicarU/lceraUmbralUnidadUnirUniversoUnoUntarU~aUrbanoUrbeUrgenteUrnaUsarUsuarioU/tilUtopi/aUvaVacaVaci/oVacunaVagarVagoVainaVajillaValeVa/lidoValleValorVa/lvulaVampiroVaraVariarVaro/nVasoVecinoVectorVehi/culoVeinteVejezVelaVeleroVelozVenaVencerVendaVenenoVengarVenirVentaVenusVerVeranoVerboVerdeVeredaVerjaVersoVerterVi/aViajeVibrarVicioVi/ctimaVidaVi/deoVidrioViejoViernesVigorVilVillaVinagreVinoVi~edoVioli/nViralVirgoVirtudVisorVi/speraVistaVitaminaViudoVivazViveroVivirVivoVolca/nVolumenVolverVorazVotarVotoVozVueloVulgarYacerYateYeguaYemaYernoYesoYodoYogaYogurZafiroZanjaZapatoZarzaZonaZorroZumoZurdo",q7={},hl=null;function j7(t){return Bp.logger.checkNormalize(),(0,Mp.toUtf8String)(Array.prototype.filter.call((0,Mp.toUtf8Bytes)(t.normalize("NFD").toLowerCase()),function(e){return e>=65&&e<=90||e>=97&&e<=123}))}function Sz(t){var e=[];return Array.prototype.forEach.call((0,Mp.toUtf8Bytes)(t),function(r){r===47?(e.push(204),e.push(129)):r===126?(e.push(110),e.push(204),e.push(131)):e.push(r)}),(0,Mp.toUtf8String)(e)}function J7(t){if(hl==null&&(hl=Ez.replace(/([A-Z])/g," $1").toLowerCase().substring(1).split(" ").map(function(e){return Sz(e)}),hl.forEach(function(e,r){q7[j7(e)]=r}),Bp.Wordlist.check(t)!=="0xf74fb7092aeacdfbf8959557de22098da512207fb9f109cb526994938cf40300"))throw hl=null,new Error("BIP39 Wordlist for es (Spanish) FAILED")}var _z=function(t){Az(e,t);function e(){return t.call(this,"es")||this}return e.prototype.getWord=function(r){return J7(this),hl[r]},e.prototype.getWordIndex=function(r){return J7(this),q7[j7(r)]},e}(Bp.Wordlist),U7=new _z;vc.langEs=U7;Bp.Wordlist.register(U7)});var V7=P(mc=>{"use strict";var Tz=mc&&mc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(mc,"__esModule",{value:!0});mc.langFr=void 0;var Fp=Cr(),Lp=fi(),kz="AbaisserAbandonAbdiquerAbeilleAbolirAborderAboutirAboyerAbrasifAbreuverAbriterAbrogerAbruptAbsenceAbsoluAbsurdeAbusifAbyssalAcade/mieAcajouAcarienAccablerAccepterAcclamerAccoladeAccrocheAccuserAcerbeAchatAcheterAcidulerAcierAcompteAcque/rirAcronymeActeurActifActuelAdepteAde/quatAdhe/sifAdjectifAdjugerAdmettreAdmirerAdopterAdorerAdoucirAdresseAdroitAdulteAdverbeAe/rerAe/ronefAffaireAffecterAfficheAffreuxAffublerAgacerAgencerAgileAgiterAgraferAgre/ableAgrumeAiderAiguilleAilierAimableAisanceAjouterAjusterAlarmerAlchimieAlerteAlge-breAlgueAlie/nerAlimentAlle/gerAlliageAllouerAllumerAlourdirAlpagaAltesseAlve/oleAmateurAmbiguAmbreAme/nagerAmertumeAmidonAmiralAmorcerAmourAmovibleAmphibieAmpleurAmusantAnalyseAnaphoreAnarchieAnatomieAncienAne/antirAngleAngoisseAnguleuxAnimalAnnexerAnnonceAnnuelAnodinAnomalieAnonymeAnormalAntenneAntidoteAnxieuxApaiserApe/ritifAplanirApologieAppareilAppelerApporterAppuyerAquariumAqueducArbitreArbusteArdeurArdoiseArgentArlequinArmatureArmementArmoireArmureArpenterArracherArriverArroserArsenicArte/rielArticleAspectAsphalteAspirerAssautAsservirAssietteAssocierAssurerAsticotAstreAstuceAtelierAtomeAtriumAtroceAttaqueAttentifAttirerAttraperAubaineAubergeAudaceAudibleAugurerAuroreAutomneAutrucheAvalerAvancerAvariceAvenirAverseAveugleAviateurAvideAvionAviserAvoineAvouerAvrilAxialAxiomeBadgeBafouerBagageBaguetteBaignadeBalancerBalconBaleineBalisageBambinBancaireBandageBanlieueBannie-reBanquierBarbierBarilBaronBarqueBarrageBassinBastionBatailleBateauBatterieBaudrierBavarderBeletteBe/lierBeloteBe/ne/ficeBerceauBergerBerlineBermudaBesaceBesogneBe/tailBeurreBiberonBicycleBiduleBijouBilanBilingueBillardBinaireBiologieBiopsieBiotypeBiscuitBisonBistouriBitumeBizarreBlafardBlagueBlanchirBlessantBlinderBlondBloquerBlousonBobardBobineBoireBoiserBolideBonbonBondirBonheurBonifierBonusBordureBorneBotteBoucleBoueuxBougieBoulonBouquinBourseBoussoleBoutiqueBoxeurBrancheBrasierBraveBrebisBre-cheBreuvageBricolerBrigadeBrillantBriocheBriqueBrochureBroderBronzerBrousseBroyeurBrumeBrusqueBrutalBruyantBuffleBuissonBulletinBureauBurinBustierButinerButoirBuvableBuvetteCabanonCabineCachetteCadeauCadreCafe/ineCaillouCaissonCalculerCalepinCalibreCalmerCalomnieCalvaireCamaradeCame/raCamionCampagneCanalCanetonCanonCantineCanularCapableCaporalCapriceCapsuleCapterCapucheCarabineCarboneCaresserCaribouCarnageCarotteCarreauCartonCascadeCasierCasqueCassureCauserCautionCavalierCaverneCaviarCe/dilleCeintureCe/lesteCelluleCendrierCensurerCentralCercleCe/re/bralCeriseCernerCerveauCesserChagrinChaiseChaleurChambreChanceChapitreCharbonChasseurChatonChaussonChavirerChemiseChenilleChe/quierChercherChevalChienChiffreChignonChime-reChiotChlorureChocolatChoisirChoseChouetteChromeChuteCigareCigogneCimenterCine/maCintrerCirculerCirerCirqueCiterneCitoyenCitronCivilClaironClameurClaquerClasseClavierClientClignerClimatClivageClocheClonageCloporteCobaltCobraCocasseCocotierCoderCodifierCoffreCognerCohe/sionCoifferCoincerCole-reColibriCollineColmaterColonelCombatCome/dieCommandeCompactConcertConduireConfierCongelerConnoterConsonneContactConvexeCopainCopieCorailCorbeauCordageCornicheCorpusCorrectCorte-geCosmiqueCostumeCotonCoudeCoupureCourageCouteauCouvrirCoyoteCrabeCrainteCravateCrayonCre/atureCre/diterCre/meuxCreuserCrevetteCriblerCrierCristalCrite-reCroireCroquerCrotaleCrucialCruelCrypterCubiqueCueillirCuille-reCuisineCuivreCulminerCultiverCumulerCupideCuratifCurseurCyanureCycleCylindreCyniqueDaignerDamierDangerDanseurDauphinDe/battreDe/biterDe/borderDe/briderDe/butantDe/calerDe/cembreDe/chirerDe/ciderDe/clarerDe/corerDe/crireDe/cuplerDe/daleDe/ductifDe/esseDe/fensifDe/filerDe/frayerDe/gagerDe/givrerDe/glutirDe/graferDe/jeunerDe/liceDe/logerDemanderDemeurerDe/molirDe/nicherDe/nouerDentelleDe/nuderDe/partDe/penserDe/phaserDe/placerDe/poserDe/rangerDe/roberDe/sastreDescenteDe/sertDe/signerDe/sobe/irDessinerDestrierDe/tacherDe/testerDe/tourerDe/tresseDevancerDevenirDevinerDevoirDiableDialogueDiamantDicterDiffe/rerDige/rerDigitalDigneDiluerDimancheDiminuerDioxydeDirectifDirigerDiscuterDisposerDissiperDistanceDivertirDiviserDocileDocteurDogmeDoigtDomaineDomicileDompterDonateurDonjonDonnerDopamineDortoirDorureDosageDoseurDossierDotationDouanierDoubleDouceurDouterDoyenDragonDraperDresserDribblerDroitureDuperieDuplexeDurableDurcirDynastieE/blouirE/carterE/charpeE/chelleE/clairerE/clipseE/cloreE/cluseE/coleE/conomieE/corceE/couterE/craserE/cre/merE/crivainE/crouE/cumeE/cureuilE/difierE/duquerEffacerEffectifEffigieEffortEffrayerEffusionE/galiserE/garerE/jecterE/laborerE/largirE/lectronE/le/gantE/le/phantE/le-veE/ligibleE/litismeE/logeE/luciderE/luderEmballerEmbellirEmbryonE/meraudeE/missionEmmenerE/motionE/mouvoirEmpereurEmployerEmporterEmpriseE/mulsionEncadrerEnche-reEnclaveEncocheEndiguerEndosserEndroitEnduireE/nergieEnfanceEnfermerEnfouirEngagerEnginEngloberE/nigmeEnjamberEnjeuEnleverEnnemiEnnuyeuxEnrichirEnrobageEnseigneEntasserEntendreEntierEntourerEntraverE/nume/rerEnvahirEnviableEnvoyerEnzymeE/olienE/paissirE/pargneE/patantE/pauleE/picerieE/pide/mieE/pierE/pilogueE/pineE/pisodeE/pitapheE/poqueE/preuveE/prouverE/puisantE/querreE/quipeE/rigerE/rosionErreurE/ruptionEscalierEspadonEspe-ceEspie-gleEspoirEspritEsquiverEssayerEssenceEssieuEssorerEstimeEstomacEstradeE/tage-reE/talerE/tancheE/tatiqueE/teindreE/tendoirE/ternelE/thanolE/thiqueEthnieE/tirerE/tofferE/toileE/tonnantE/tourdirE/trangeE/troitE/tudeEuphorieE/valuerE/vasionE/ventailE/videnceE/viterE/volutifE/voquerExactExage/rerExaucerExcellerExcitantExclusifExcuseExe/cuterExempleExercerExhalerExhorterExigenceExilerExisterExotiqueExpe/dierExplorerExposerExprimerExquisExtensifExtraireExulterFableFabuleuxFacetteFacileFactureFaiblirFalaiseFameuxFamilleFarceurFarfeluFarineFaroucheFascinerFatalFatigueFauconFautifFaveurFavoriFe/brileFe/conderFe/de/rerFe/linFemmeFe/murFendoirFe/odalFermerFe/roceFerveurFestivalFeuilleFeutreFe/vrierFiascoFicelerFictifFide-leFigureFilatureFiletageFilie-reFilleulFilmerFilouFiltrerFinancerFinirFioleFirmeFissureFixerFlairerFlammeFlasqueFlatteurFle/auFle-cheFleurFlexionFloconFloreFluctuerFluideFluvialFolieFonderieFongibleFontaineForcerForgeronFormulerFortuneFossileFoudreFouge-reFouillerFoulureFourmiFragileFraiseFranchirFrapperFrayeurFre/gateFreinerFrelonFre/mirFre/ne/sieFre-reFriableFrictionFrissonFrivoleFroidFromageFrontalFrotterFruitFugitifFuiteFureurFurieuxFurtifFusionFuturGagnerGalaxieGalerieGambaderGarantirGardienGarnirGarrigueGazelleGazonGe/antGe/latineGe/luleGendarmeGe/ne/ralGe/nieGenouGentilGe/ologieGe/ome-treGe/raniumGermeGestuelGeyserGibierGiclerGirafeGivreGlaceGlaiveGlisserGlobeGloireGlorieuxGolfeurGommeGonflerGorgeGorilleGoudronGouffreGoulotGoupilleGourmandGoutteGraduelGraffitiGraineGrandGrappinGratuitGravirGrenatGriffureGrillerGrimperGrognerGronderGrotteGroupeGrugerGrutierGruye-reGue/pardGuerrierGuideGuimauveGuitareGustatifGymnasteGyrostatHabitudeHachoirHalteHameauHangarHannetonHaricotHarmonieHarponHasardHe/liumHe/matomeHerbeHe/rissonHermineHe/ronHe/siterHeureuxHibernerHibouHilarantHistoireHiverHomardHommageHomoge-neHonneurHonorerHonteuxHordeHorizonHorlogeHormoneHorribleHouleuxHousseHublotHuileuxHumainHumbleHumideHumourHurlerHydromelHygie-neHymneHypnoseIdylleIgnorerIguaneIlliciteIllusionImageImbiberImiterImmenseImmobileImmuableImpactImpe/rialImplorerImposerImprimerImputerIncarnerIncendieIncidentInclinerIncoloreIndexerIndiceInductifIne/ditIneptieInexactInfiniInfligerInformerInfusionInge/rerInhalerInhiberInjecterInjureInnocentInoculerInonderInscrireInsecteInsigneInsoliteInspirerInstinctInsulterIntactIntenseIntimeIntrigueIntuitifInutileInvasionInventerInviterInvoquerIroniqueIrradierIrre/elIrriterIsolerIvoireIvresseJaguarJaillirJambeJanvierJardinJaugerJauneJavelotJetableJetonJeudiJeunesseJoindreJoncherJonglerJoueurJouissifJournalJovialJoyauJoyeuxJubilerJugementJuniorJuponJuristeJusticeJuteuxJuve/nileKayakKimonoKiosqueLabelLabialLabourerLace/rerLactoseLaguneLaineLaisserLaitierLambeauLamelleLampeLanceurLangageLanterneLapinLargeurLarmeLaurierLavaboLavoirLectureLe/galLe/gerLe/gumeLessiveLettreLevierLexiqueLe/zardLiasseLibe/rerLibreLicenceLicorneLie-geLie-vreLigatureLigoterLigueLimerLimiteLimonadeLimpideLine/aireLingotLionceauLiquideLisie-reListerLithiumLitigeLittoralLivreurLogiqueLointainLoisirLombricLoterieLouerLourdLoutreLouveLoyalLubieLucideLucratifLueurLugubreLuisantLumie-reLunaireLundiLuronLutterLuxueuxMachineMagasinMagentaMagiqueMaigreMaillonMaintienMairieMaisonMajorerMalaxerMale/ficeMalheurMaliceMalletteMammouthMandaterManiableManquantManteauManuelMarathonMarbreMarchandMardiMaritimeMarqueurMarronMartelerMascotteMassifMate/rielMatie-reMatraqueMaudireMaussadeMauveMaximalMe/chantMe/connuMe/dailleMe/decinMe/diterMe/duseMeilleurMe/langeMe/lodieMembreMe/moireMenacerMenerMenhirMensongeMentorMercrediMe/riteMerleMessagerMesureMe/talMe/te/oreMe/thodeMe/tierMeubleMiaulerMicrobeMietteMignonMigrerMilieuMillionMimiqueMinceMine/ralMinimalMinorerMinuteMiracleMiroiterMissileMixteMobileModerneMoelleuxMondialMoniteurMonnaieMonotoneMonstreMontagneMonumentMoqueurMorceauMorsureMortierMoteurMotifMoucheMoufleMoulinMoussonMoutonMouvantMultipleMunitionMurailleMure-neMurmureMuscleMuse/umMusicienMutationMuterMutuelMyriadeMyrtilleMyste-reMythiqueNageurNappeNarquoisNarrerNatationNationNatureNaufrageNautiqueNavireNe/buleuxNectarNe/fasteNe/gationNe/gligerNe/gocierNeigeNerveuxNettoyerNeuroneNeutronNeveuNicheNickelNitrateNiveauNobleNocifNocturneNoirceurNoisetteNomadeNombreuxNommerNormatifNotableNotifierNotoireNourrirNouveauNovateurNovembreNoviceNuageNuancerNuireNuisibleNume/roNuptialNuqueNutritifObe/irObjectifObligerObscurObserverObstacleObtenirObturerOccasionOccuperOce/anOctobreOctroyerOctuplerOculaireOdeurOdorantOffenserOfficierOffrirOgiveOiseauOisillonOlfactifOlivierOmbrageOmettreOnctueuxOndulerOne/reuxOniriqueOpaleOpaqueOpe/rerOpinionOpportunOpprimerOpterOptiqueOrageuxOrangeOrbiteOrdonnerOreilleOrganeOrgueilOrificeOrnementOrqueOrtieOscillerOsmoseOssatureOtarieOuraganOursonOutilOutragerOuvrageOvationOxydeOxyge-neOzonePaisiblePalacePalmare-sPalourdePalperPanachePandaPangolinPaniquerPanneauPanoramaPantalonPapayePapierPapoterPapyrusParadoxeParcelleParesseParfumerParlerParoleParrainParsemerPartagerParureParvenirPassionPaste-quePaternelPatiencePatronPavillonPavoiserPayerPaysagePeignePeintrePelagePe/licanPellePelousePeluchePendulePe/ne/trerPe/niblePensifPe/nuriePe/pitePe/plumPerdrixPerforerPe/riodePermuterPerplexePersilPertePeserPe/talePetitPe/trirPeuplePharaonPhobiePhoquePhotonPhrasePhysiquePianoPicturalPie-cePierrePieuvrePilotePinceauPipettePiquerPiroguePiscinePistonPivoterPixelPizzaPlacardPlafondPlaisirPlanerPlaquePlastronPlateauPleurerPlexusPliagePlombPlongerPluiePlumagePochettePoe/siePoe-tePointePoirierPoissonPoivrePolairePolicierPollenPolygonePommadePompierPonctuelPonde/rerPoneyPortiquePositionPosse/derPosturePotagerPoteauPotionPoucePoulainPoumonPourprePoussinPouvoirPrairiePratiquePre/cieuxPre/direPre/fixePre/ludePre/nomPre/sencePre/textePre/voirPrimitifPrincePrisonPriverProble-meProce/derProdigeProfondProgre-sProieProjeterProloguePromenerPropreProspe-reProte/gerProuesseProverbePrudencePruneauPsychosePublicPuceronPuiserPulpePulsarPunaisePunitifPupitrePurifierPuzzlePyramideQuasarQuerelleQuestionQuie/tudeQuitterQuotientRacineRaconterRadieuxRagondinRaideurRaisinRalentirRallongeRamasserRapideRasageRatisserRavagerRavinRayonnerRe/actifRe/agirRe/aliserRe/animerRecevoirRe/citerRe/clamerRe/colterRecruterReculerRecyclerRe/digerRedouterRefaireRe/flexeRe/formerRefrainRefugeRe/galienRe/gionRe/glageRe/gulierRe/ite/rerRejeterRejouerRelatifReleverReliefRemarqueReme-deRemiseRemonterRemplirRemuerRenardRenfortReniflerRenoncerRentrerRenvoiReplierReporterRepriseReptileRequinRe/serveRe/sineuxRe/soudreRespectResterRe/sultatRe/tablirRetenirRe/ticuleRetomberRetracerRe/unionRe/ussirRevancheRevivreRe/volteRe/vulsifRichesseRideauRieurRigideRigolerRincerRiposterRisibleRisqueRituelRivalRivie-reRocheuxRomanceRompreRonceRondinRoseauRosierRotatifRotorRotuleRougeRouilleRouleauRoutineRoyaumeRubanRubisRucheRuelleRugueuxRuinerRuisseauRuserRustiqueRythmeSablerSaboterSabreSacocheSafariSagesseSaisirSaladeSaliveSalonSaluerSamediSanctionSanglierSarcasmeSardineSaturerSaugrenuSaumonSauterSauvageSavantSavonnerScalpelScandaleSce/le/ratSce/narioSceptreSche/maScienceScinderScoreScrutinSculpterSe/anceSe/cableSe/cherSecouerSe/cre/terSe/datifSe/duireSeigneurSe/jourSe/lectifSemaineSemblerSemenceSe/minalSe/nateurSensibleSentenceSe/parerSe/quenceSereinSergentSe/rieuxSerrureSe/rumServiceSe/sameSe/virSevrageSextupleSide/ralSie-cleSie/gerSifflerSigleSignalSilenceSiliciumSimpleSince-reSinistreSiphonSiropSismiqueSituerSkierSocialSocleSodiumSoigneuxSoldatSoleilSolitudeSolubleSombreSommeilSomnolerSondeSongeurSonnetteSonoreSorcierSortirSosieSottiseSoucieuxSoudureSouffleSouleverSoupapeSourceSoutirerSouvenirSpacieuxSpatialSpe/cialSphe-reSpiralStableStationSternumStimulusStipulerStrictStudieuxStupeurStylisteSublimeSubstratSubtilSubvenirSucce-sSucreSuffixeSugge/rerSuiveurSulfateSuperbeSupplierSurfaceSuricateSurmenerSurpriseSursautSurvieSuspectSyllabeSymboleSyme/trieSynapseSyntaxeSyste-meTabacTablierTactileTaillerTalentTalismanTalonnerTambourTamiserTangibleTapisTaquinerTarderTarifTartineTasseTatamiTatouageTaupeTaureauTaxerTe/moinTemporelTenailleTendreTeneurTenirTensionTerminerTerneTerribleTe/tineTexteThe-meThe/orieThe/rapieThoraxTibiaTie-deTimideTirelireTiroirTissuTitaneTitreTituberTobogganTole/rantTomateToniqueTonneauToponymeTorcheTordreTornadeTorpilleTorrentTorseTortueTotemToucherTournageTousserToxineTractionTraficTragiqueTrahirTrainTrancherTravailTre-fleTremperTre/sorTreuilTriageTribunalTricoterTrilogieTriompheTriplerTriturerTrivialTromboneTroncTropicalTroupeauTuileTulipeTumulteTunnelTurbineTuteurTutoyerTuyauTympanTyphonTypiqueTyranUbuesqueUltimeUltrasonUnanimeUnifierUnionUniqueUnitaireUniversUraniumUrbainUrticantUsageUsineUsuelUsureUtileUtopieVacarmeVaccinVagabondVagueVaillantVaincreVaisseauValableValiseVallonValveVampireVanilleVapeurVarierVaseuxVassalVasteVecteurVedetteVe/ge/talVe/hiculeVeinardVe/loceVendrediVe/ne/rerVengerVenimeuxVentouseVerdureVe/rinVernirVerrouVerserVertuVestonVe/te/ranVe/tusteVexantVexerViaducViandeVictoireVidangeVide/oVignetteVigueurVilainVillageVinaigreViolonVipe-reVirementVirtuoseVirusVisageViseurVisionVisqueuxVisuelVitalVitesseViticoleVitrineVivaceVivipareVocationVoguerVoileVoisinVoitureVolailleVolcanVoltigerVolumeVoraceVortexVoterVouloirVoyageVoyelleWagonXe/nonYachtZe-breZe/nithZesteZoologie",vl=null,G7={};function X7(t){return Lp.logger.checkNormalize(),(0,Fp.toUtf8String)(Array.prototype.filter.call((0,Fp.toUtf8Bytes)(t.normalize("NFD").toLowerCase()),function(e){return e>=65&&e<=90||e>=97&&e<=123}))}function Cz(t){var e=[];return Array.prototype.forEach.call((0,Fp.toUtf8Bytes)(t),function(r){r===47?(e.push(204),e.push(129)):r===45?(e.push(204),e.push(128)):e.push(r)}),(0,Fp.toUtf8String)(e)}function z7(t){if(vl==null&&(vl=kz.replace(/([A-Z])/g," $1").toLowerCase().substring(1).split(" ").map(function(e){return Cz(e)}),vl.forEach(function(e,r){G7[X7(e)]=r}),Lp.Wordlist.check(t)!=="0x51deb7ae009149dc61a6bd18a918eb7ac78d2775726c68e598b92d002519b045"))throw vl=null,new Error("BIP39 Wordlist for fr (French) FAILED")}var Oz=function(t){Tz(e,t);function e(){return t.call(this,"fr")||this}return e.prototype.getWord=function(r){return z7(this),vl[r]},e.prototype.getWordIndex=function(r){return z7(this),G7[X7(r)]},e}(Lp.Wordlist),K7=new Oz;mc.langFr=K7;Lp.Wordlist.register(K7)});var Y7=P(bc=>{"use strict";var Pz=bc&&bc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(bc,"__esModule",{value:!0});bc.langJa=void 0;var Mz=De(),nn=Cr(),Rp=fi(),Bz=["AQRASRAGBAGUAIRAHBAghAURAdBAdcAnoAMEAFBAFCBKFBQRBSFBCXBCDBCHBGFBEQBpBBpQBIkBHNBeOBgFBVCBhBBhNBmOBmRBiHBiFBUFBZDBvFBsXBkFBlcBjYBwDBMBBTBBTRBWBBWXXaQXaRXQWXSRXCFXYBXpHXOQXHRXhRXuRXmXXbRXlXXwDXTRXrCXWQXWGaBWaKcaYgasFadQalmaMBacAKaRKKBKKXKKjKQRKDRKCYKCRKIDKeVKHcKlXKjHKrYNAHNBWNaRNKcNIBNIONmXNsXNdXNnBNMBNRBNrXNWDNWMNFOQABQAHQBrQXBQXFQaRQKXQKDQKOQKFQNBQNDQQgQCXQCDQGBQGDQGdQYXQpBQpQQpHQLXQHuQgBQhBQhCQuFQmXQiDQUFQZDQsFQdRQkHQbRQlOQlmQPDQjDQwXQMBQMDQcFQTBQTHQrDDXQDNFDGBDGQDGRDpFDhFDmXDZXDbRDMYDRdDTRDrXSAhSBCSBrSGQSEQSHBSVRShYShkSyQSuFSiBSdcSoESocSlmSMBSFBSFKSFNSFdSFcCByCaRCKcCSBCSRCCrCGbCEHCYXCpBCpQCIBCIHCeNCgBCgFCVECVcCmkCmwCZXCZFCdRClOClmClFCjDCjdCnXCwBCwXCcRCFQCFjGXhGNhGDEGDMGCDGCHGIFGgBGVXGVEGVRGmXGsXGdYGoSGbRGnXGwXGwDGWRGFNGFLGFOGFdGFkEABEBDEBFEXOEaBEKSENBENDEYXEIgEIkEgBEgQEgHEhFEudEuFEiBEiHEiFEZDEvBEsXEsFEdXEdREkFEbBEbRElFEPCEfkEFNYAEYAhYBNYQdYDXYSRYCEYYoYgQYgRYuRYmCYZTYdBYbEYlXYjQYRbYWRpKXpQopQnpSFpCXpIBpISphNpdBpdRpbRpcZpFBpFNpFDpFopFrLADLBuLXQLXcLaFLCXLEhLpBLpFLHXLeVLhILdHLdRLoDLbRLrXIABIBQIBCIBsIBoIBMIBRIXaIaRIKYIKRINBINuICDIGBIIDIIkIgRIxFIyQIiHIdRIbYIbRIlHIwRIMYIcRIRVITRIFBIFNIFQOABOAFOBQOaFONBONMOQFOSFOCDOGBOEQOpBOLXOIBOIFOgQOgFOyQOycOmXOsXOdIOkHOMEOMkOWWHBNHXNHXWHNXHDuHDRHSuHSRHHoHhkHmRHdRHkQHlcHlRHwBHWcgAEgAggAkgBNgBQgBEgXOgYcgLXgHjgyQgiBgsFgdagMYgWSgFQgFEVBTVXEVKBVKNVKDVKYVKRVNBVNYVDBVDxVSBVSRVCjVGNVLXVIFVhBVhcVsXVdRVbRVlRhBYhKYhDYhGShxWhmNhdahdkhbRhjohMXhTRxAXxXSxKBxNBxEQxeNxeQxhXxsFxdbxlHxjcxFBxFNxFQxFOxFoyNYyYoybcyMYuBQuBRuBruDMuCouHBudQukkuoBulVuMXuFEmCYmCRmpRmeDmiMmjdmTFmFQiADiBOiaRiKRiNBiNRiSFiGkiGFiERipRiLFiIFihYibHijBijEiMXiWBiFBiFCUBQUXFUaRUNDUNcUNRUNFUDBUSHUCDUGBUGFUEqULNULoUIRUeEUeYUgBUhFUuRUiFUsXUdFUkHUbBUjSUjYUwXUMDUcHURdUTBUrBUrXUrQZAFZXZZaRZKFZNBZQFZCXZGBZYdZpBZLDZIFZHXZHNZeQZVRZVFZmXZiBZvFZdFZkFZbHZbFZwXZcCZcRZRBvBQvBGvBLvBWvCovMYsAFsBDsaRsKFsNFsDrsSHsSFsCXsCRsEBsEHsEfspBsLBsLDsIgsIRseGsbRsFBsFQsFSdNBdSRdCVdGHdYDdHcdVbdySduDdsXdlRdwXdWYdWcdWRkBMkXOkaRkNIkNFkSFkCFkYBkpRkeNkgBkhVkmXksFklVkMBkWDkFNoBNoaQoaFoNBoNXoNaoNEoSRoEroYXoYCoYbopRopFomXojkowXorFbBEbEIbdBbjYlaRlDElMXlFDjKjjSRjGBjYBjYkjpRjLXjIBjOFjeVjbRjwBnXQnSHnpFnLXnINnMBnTRwXBwXNwXYwNFwQFwSBwGFwLXwLDweNwgBwuHwjDwnXMBXMpFMIBMeNMTHcaQcNBcDHcSFcCXcpBcLXcLDcgFcuFcnXcwXccDcTQcrFTQErXNrCHrpFrgFrbFrTHrFcWNYWNbWEHWMXWTR","ABGHABIJAEAVAYJQALZJAIaRAHNXAHdcAHbRAZJMAZJRAZTRAdVJAklmAbcNAjdRAMnRAMWYAWpRAWgRAFgBAFhBAFdcBNJBBNJDBQKBBQhcBQlmBDEJBYJkBYJTBpNBBpJFBIJBBIJDBIcABOKXBOEJBOVJBOiJBOZJBepBBeLXBeIFBegBBgGJBVJXBuocBiJRBUJQBlXVBlITBwNFBMYVBcqXBTlmBWNFBWiJBWnRBFGHBFwXXKGJXNJBXNZJXDTTXSHSXSVRXSlHXCJDXGQJXEhXXYQJXYbRXOfXXeNcXVJFXhQJXhEJXdTRXjdXXMhBXcQTXRGBXTEBXTnQXFCXXFOFXFgFaBaFaBNJaBCJaBpBaBwXaNJKaNJDaQIBaDpRaEPDaHMFamDJalEJaMZJaFaFaFNBaFQJaFLDaFVHKBCYKBEBKBHDKXaFKXGdKXEJKXpHKXIBKXZDKXwXKKwLKNacKNYJKNJoKNWcKDGdKDTRKChXKGaRKGhBKGbRKEBTKEaRKEPTKLMDKLWRKOHDKVJcKdBcKlIBKlOPKFSBKFEPKFpFNBNJNJBQNBGHNBEPNBHXNBgFNBVXNBZDNBsXNBwXNNaRNNJDNNJENNJkNDCJNDVDNGJRNJiDNZJNNsCJNJFNNFSBNFCXNFEPNFLXNFIFQJBFQCaRQJEQQLJDQLJFQIaRQOqXQHaFQHHQQVJXQVJDQhNJQmEIQZJFQsJXQJrFQWbRDJABDBYJDXNFDXCXDXLXDXZDDXsJDQqXDSJFDJCXDEPkDEqXDYmQDpSJDOCkDOGQDHEIDVJDDuDuDWEBDJFgSBNDSBSFSBGHSBIBSBTQSKVYSJQNSJQiSJCXSEqXSJYVSIiJSOMYSHAHSHaQSeCFSepQSegBSHdHSHrFShSJSJuHSJUFSkNRSrSrSWEBSFaHSJFQSFCXSFGDSFYXSFODSFgBSFVXSFhBSFxFSFkFSFbBSFMFCADdCJXBCXaFCXKFCXNFCXCXCXGBCXEJCXYBCXLDCXIBCXOPCXHXCXgBCXhBCXiBCXlDCXcHCJNBCJNFCDCJCDGBCDVXCDhBCDiDCDJdCCmNCpJFCIaRCOqXCHCHCHZJCViJCuCuCmddCJiFCdNBCdHhClEJCnUJCreSCWlgCWTRCFBFCFNBCFYBCFVFCFhFCFdSCFTBCFWDGBNBGBQFGJBCGBEqGBpBGBgQGNBEGNJYGNkOGNJRGDUFGJpQGHaBGJeNGJeEGVBlGVKjGiJDGvJHGsVJGkEBGMIJGWjNGFBFGFCXGFGBGFYXGFpBGFMFEASJEAWpEJNFECJVEIXSEIQJEOqXEOcFEeNcEHEJEHlFEJgFEhlmEmDJEmZJEiMBEUqXEoSREPBFEPXFEPKFEPSFEPEFEPpFEPLXEPIBEJPdEPcFEPTBEJnXEqlHEMpREFCXEFODEFcFYASJYJAFYBaBYBVXYXpFYDhBYCJBYJGFYYbRYeNcYJeVYiIJYZJcYvJgYvJRYJsXYsJFYMYMYreVpBNHpBEJpBwXpQxFpYEJpeNDpJeDpeSFpeCHpHUJpHbBpHcHpmUJpiiJpUJrpsJuplITpFaBpFQqpFGBpFEfpFYBpFpBpFLJpFIDpFgBpFVXpFyQpFuFpFlFpFjDpFnXpFwXpJFMpFTBLXCJLXEFLXhFLXUJLXbFLalmLNJBLSJQLCLCLGJBLLDJLHaFLeNFLeSHLeCXLepFLhaRLZsJLsJDLsJrLocaLlLlLMdbLFNBLFSBLFEHLFkFIBBFIBXFIBaQIBKXIBSFIBpHIBLXIBgBIBhBIBuHIBmXIBiFIBZXIBvFIBbFIBjQIBwXIBWFIKTRIQUJIDGFICjQIYSRIINXIJeCIVaRImEkIZJFIvJRIsJXIdCJIJoRIbBQIjYBIcqXITFVIreVIFKFIFSFIFCJIFGFIFLDIFIBIJFOIFgBIFVXIJFhIFxFIFmXIFdHIFbBIJFrIJFWOBGBOQfXOOKjOUqXOfXBOqXEOcqXORVJOFIBOFlDHBIOHXiFHNTRHCJXHIaRHHJDHHEJHVbRHZJYHbIBHRsJHRkDHWlmgBKFgBSBgBCDgBGHgBpBgBIBgBVJgBuBgBvFgKDTgQVXgDUJgGSJgOqXgmUMgZIJgTUJgWIEgFBFgFNBgFDJgFSFgFGBgFYXgJFOgFgQgFVXgFhBgFbHgJFWVJABVQKcVDgFVOfXVeDFVhaRVmGdViJYVMaRVFNHhBNDhBCXhBEqhBpFhBLXhNJBhSJRheVXhhKEhxlmhZIJhdBQhkIJhbMNhMUJhMZJxNJgxQUJxDEkxDdFxSJRxplmxeSBxeCXxeGFxeYXxepQxegBxWVcxFEQxFLXxFIBxFgBxFxDxFZtxFdcxFbBxFwXyDJXyDlcuASJuDJpuDIBuCpJuGSJuIJFueEFuZIJusJXudWEuoIBuWGJuFBcuFKEuFNFuFQFuFDJuFGJuFVJuFUtuFdHuFTBmBYJmNJYmQhkmLJDmLJomIdXmiJYmvJRmsJRmklmmMBymMuCmclmmcnQiJABiJBNiJBDiBSFiBCJiBEFiBYBiBpFiBLXiBTHiJNciDEfiCZJiECJiJEqiOkHiHKFieNDiHJQieQcieDHieSFieCXieGFieEFieIHiegFihUJixNoioNXiFaBiFKFiFNDiFEPiFYXitFOitFHiFgBiFVEiFmXiFitiFbBiFMFiFrFUCXQUIoQUIJcUHQJUeCEUHwXUUJDUUqXUdWcUcqXUrnQUFNDUFSHUFCFUFEfUFLXUtFOZBXOZXSBZXpFZXVXZEQJZEJkZpDJZOqXZeNHZeCDZUqXZFBQZFEHZFLXvBAFvBKFvBCXvBEPvBpHvBIDvBgFvBuHvQNJvFNFvFGBvFIBvJFcsXCDsXLXsXsXsXlFsXcHsQqXsJQFsEqXseIFsFEHsFjDdBxOdNpRdNJRdEJbdpJRdhZJdnSJdrjNdFNJdFQHdFhNkNJDkYaRkHNRkHSRkVbRkuMRkjSJkcqDoSJFoEiJoYZJoOfXohEBoMGQocqXbBAFbBXFbBaFbBNDbBGBbBLXbBTBbBWDbGJYbIJHbFQqbFpQlDgQlOrFlVJRjGEBjZJRnXvJnXbBnEfHnOPDngJRnxfXnUJWwXEJwNpJwDpBwEfXwrEBMDCJMDGHMDIJMLJDcQGDcQpHcqXccqNFcqCXcFCJRBSBRBGBRBEJRBpQTBNFTBQJTBpBTBVXTFABTFSBTFCFTFGBTFMDrXCJrXLDrDNJrEfHrFQJrFitWNjdWNTR","AKLJMANOPFASNJIAEJWXAYJNRAIIbRAIcdaAeEfDAgidRAdjNYAMYEJAMIbRAFNJBAFpJFBBIJYBDZJFBSiJhBGdEBBEJfXBEJqXBEJWRBpaUJBLXrXBIYJMBOcfXBeEfFBestXBjNJRBcDJOBFEqXXNvJRXDMBhXCJNYXOAWpXONJWXHDEBXeIaRXhYJDXZJSJXMDJOXcASJXFVJXaBQqXaBZJFasXdQaFSJQaFEfXaFpJHaFOqXKBNSRKXvJBKQJhXKEJQJKEJGFKINJBKIJjNKgJNSKVElmKVhEBKiJGFKlBgJKjnUJKwsJYKMFIJKFNJDKFIJFKFOfXNJBSFNJBCXNBpJFNJBvQNJBMBNJLJXNJOqXNJeCXNJeGFNdsJCNbTKFNwXUJQNFEPQDiJcQDMSJQSFpBQGMQJQJeOcQyCJEQUJEBQJFBrQFEJqDXDJFDJXpBDJXIMDGiJhDIJGRDJeYcDHrDJDVXgFDkAWpDkIgRDjDEqDMvJRDJFNFDJFIBSKclmSJQOFSJQVHSJQjDSJGJBSJGJFSECJoSHEJqSJHTBSJVJDSViJYSZJNBSJsJDSFSJFSFEfXSJFLXCBUJVCJXSBCJXpBCXVJXCJXsXCJXdFCJNJHCLIJgCHiJFCVNJMChCJhCUHEJCsJTRCJdYcCoQJCCFEfXCFIJgCFUJxCFstFGJBaQGJBIDGQJqXGYJNRGJHKFGeQqDGHEJFGJeLXGHIiJGHdBlGUJEBGkIJTGFQPDGJFEqEAGegEJIJBEJVJXEhQJTEiJNcEJZJFEJoEqEjDEqEPDsXEPGJBEPOqXEPeQFEfDiDEJfEFEfepQEfMiJEqXNBEqDIDEqeSFEqVJXEMvJRYXNJDYXEJHYKVJcYYJEBYJeEcYJUqXYFpJFYFstXpAZJMpBSJFpNBNFpeQPDpHLJDpHIJFpHgJFpeitFpHZJFpJFADpFSJFpJFCJpFOqXpFitBpJFZJLXIJFLIJgRLVNJWLVHJMLwNpJLFGJBLFLJDLFOqXLJFUJIBDJXIBGJBIJBYQIJBIBIBOqXIBcqDIEGJFILNJTIIJEBIOiJhIJeNBIJeIBIhiJIIWoTRIJFAHIJFpBIJFuHIFUtFIJFTHOSBYJOEcqXOHEJqOvBpFOkVJrObBVJOncqDOcNJkHhNJRHuHJuHdMhBgBUqXgBsJXgONJBgHNJDgHHJQgJeitgHsJXgJyNagyDJBgZJDrgsVJQgkEJNgkjSJgJFAHgFCJDgFZtMVJXNFVXQfXVJXDJVXoQJVQVJQVDEfXVDvJHVEqNFVeQfXVHpJFVHxfXVVJSRVVmaRVlIJOhCXVJhHjYkhxCJVhWVUJhWiJcxBNJIxeEqDxfXBFxcFEPxFSJFxFYJXyBDQJydaUJyFOPDuYCJYuLvJRuHLJXuZJLDuFOPDuFZJHuFcqXmKHJdmCQJcmOsVJiJAGFitLCFieOfXiestXiZJMEikNJQirXzFiFQqXiFIJFiFZJFiFvtFUHpJFUteIcUteOcUVCJkUhdHcUbEJEUJqXQUMNJhURjYkUFitFZDGJHZJIxDZJVJXZJFDJZJFpQvBNJBvBSJFvJxBrseQqDsVFVJdFLJDkEJNBkmNJYkFLJDoQJOPoGsJRoEAHBoEJfFbBQqDbBZJHbFVJXlFIJBjYIrXjeitcjjCEBjWMNBwXQfXwXOaFwDsJXwCJTRwrCZJMDNJQcDDJFcqDOPRYiJFTBsJXTQIJBTFEfXTFLJDrXEJFrEJXMrFZJFWEJdEWYTlm","ABCDEFACNJTRAMBDJdAcNJVXBLNJEBXSIdWRXErNJkXYDJMBXZJCJaXMNJaYKKVJKcKDEJqXKDcNJhKVJrNYKbgJVXKFVJSBNBYBwDNJeQfXNJeEqXNhGJWENJFiJRQlIJbEQJfXxDQqXcfXQFNDEJQFwXUJDYcnUJDJIBgQDIUJTRDJFEqDSJQSJFSJQIJFSOPeZtSJFZJHCJXQfXCTDEqFGJBSJFGJBOfXGJBcqXGJHNJDGJRLiJEJfXEqEJFEJPEFpBEJYJBZJFYBwXUJYiJMEBYJZJyTYTONJXpQMFXFpeGIDdpJFstXpJFcPDLBVSJRLHQJqXLJFZJFIJBNJDIJBUqXIBkFDJIJEJPTIYJGWRIJeQPDIJeEfHIJFsJXOqGDSFHXEJqXgJCsJCgGQJqXgdQYJEgFMFNBgJFcqDVJwXUJVJFZJchIgJCCxOEJqXxOwXUJyDJBVRuscisciJBiJBieUtqXiJFDJkiFsJXQUGEZJcUJFsJXZtXIrXZDZJDrZJFNJDZJFstXvJFQqXvJFCJEsJXQJqkhkNGBbDJdTRbYJMEBlDwXUJMEFiJFcfXNJDRcNJWMTBLJXC","BraFUtHBFSJFdbNBLJXVJQoYJNEBSJBEJfHSJHwXUJCJdAZJMGjaFVJXEJPNJBlEJfFiJFpFbFEJqIJBVJCrIBdHiJhOPFChvJVJZJNJWxGFNIFLueIBQJqUHEJfUFstOZJDrlXEASJRlXVJXSFwVJNJWD","QJEJNNJDQJEJIBSFQJEJxegBQJEJfHEPSJBmXEJFSJCDEJqXLXNJFQqXIcQsFNJFIFEJqXUJgFsJXIJBUJEJfHNFvJxEqXNJnXUJFQqD","IJBEJqXZJ"],Fz="~~AzB~X~a~KN~Q~D~S~C~G~E~Y~p~L~I~O~eH~g~V~hxyumi~~U~~Z~~v~~s~~dkoblPjfnqwMcRTr~W~~~F~~~~~Jt",Rt=null;function Z7(t){return(0,Mz.hexlify)((0,nn.toUtf8Bytes)(t))}var Lz="0xe3818de38284e3818f",Rz="0xe3818de38283e3818f";function Q7(t){if(Rt!==null)return;Rt=[];var e={};e[(0,nn.toUtf8String)([227,130,154])]=!1,e[(0,nn.toUtf8String)([227,130,153])]=!1,e[(0,nn.toUtf8String)([227,130,133])]=(0,nn.toUtf8String)([227,130,134]),e[(0,nn.toUtf8String)([227,129,163])]=(0,nn.toUtf8String)([227,129,164]),e[(0,nn.toUtf8String)([227,130,131])]=(0,nn.toUtf8String)([227,130,132]),e[(0,nn.toUtf8String)([227,130,135])]=(0,nn.toUtf8String)([227,130,136]);function r(m){for(var w="",T=0;Tw?1:0}for(var i=3;i<=9;i++)for(var a=Bz[i-3],o=0;o{"use strict";var Nz=gc&&gc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(gc,"__esModule",{value:!0});gc.langKo=void 0;var Dz=Cr(),pb=fi(),Jz=["OYAa","ATAZoATBl3ATCTrATCl8ATDloATGg3ATHT8ATJT8ATJl3ATLlvATLn4ATMT8ATMX8ATMboATMgoAToLbAToMTATrHgATvHnAT3AnAT3JbAT3MTAT8DbAT8JTAT8LmAT8MYAT8MbAT#LnAUHT8AUHZvAUJXrAUJX8AULnrAXJnvAXLUoAXLgvAXMn6AXRg3AXrMbAX3JTAX3QbAYLn3AZLgvAZrSUAZvAcAZ8AaAZ8AbAZ8AnAZ8HnAZ8LgAZ8MYAZ8MgAZ8OnAaAboAaDTrAaFTrAaJTrAaJboAaLVoAaMXvAaOl8AaSeoAbAUoAbAg8AbAl4AbGnrAbMT8AbMXrAbMn4AbQb8AbSV8AbvRlAb8AUAb8AnAb8HgAb8JTAb8NTAb8RbAcGboAcLnvAcMT8AcMX8AcSToAcrAaAcrFnAc8AbAc8MgAfGgrAfHboAfJnvAfLV8AfLkoAfMT8AfMnoAfQb8AfScrAfSgrAgAZ8AgFl3AgGX8AgHZvAgHgrAgJXoAgJX8AgJboAgLZoAgLn4AgOX8AgoATAgoAnAgoCUAgoJgAgoLXAgoMYAgoSeAgrDUAgrJTAhrFnAhrLjAhrQgAjAgoAjJnrAkMX8AkOnoAlCTvAlCV8AlClvAlFg4AlFl6AlFn3AloSnAlrAXAlrAfAlrFUAlrFbAlrGgAlrOXAlvKnAlvMTAl3AbAl3MnAnATrAnAcrAnCZ3AnCl8AnDg8AnFboAnFl3AnHX4AnHbrAnHgrAnIl3AnJgvAnLXoAnLX4AnLbrAnLgrAnLhrAnMXoAnMgrAnOn3AnSbrAnSeoAnvLnAn3OnCTGgvCTSlvCTvAUCTvKnCTvNTCT3CZCT3GUCT3MTCT8HnCUCZrCULf8CULnvCU3HnCU3JUCY6NUCbDb8CbFZoCbLnrCboOTCboScCbrFnCbvLnCb8AgCb8HgCb$LnCkLfoClBn3CloDUDTHT8DTLl3DTSU8DTrAaDTrLXDTrLjDTrOYDTrOgDTvFXDTvFnDT3HUDT3LfDUCT9DUDT4DUFVoDUFV8DUFkoDUGgrDUJnrDULl8DUMT8DUMXrDUMX4DUMg8DUOUoDUOgvDUOg8DUSToDUSZ8DbDXoDbDgoDbGT8DbJn3DbLg3DbLn4DbMXrDbMg8DbOToDboJXGTClvGTDT8GTFZrGTLVoGTLlvGTLl3GTMg8GTOTvGTSlrGToCUGTrDgGTrJYGTrScGTtLnGTvAnGTvQgGUCZrGUDTvGUFZoGUHXrGULnvGUMT8GUoMgGXoLnGXrMXGXrMnGXvFnGYLnvGZOnvGZvOnGZ8LaGZ8LmGbAl3GbDYvGbDlrGbHX3GbJl4GbLV8GbLn3GbMn4GboJTGboRfGbvFUGb3GUGb4JnGgDX3GgFl$GgJlrGgLX6GgLZoGgLf8GgOXoGgrAgGgrJXGgrMYGgrScGgvATGgvOYGnAgoGnJgvGnLZoGnLg3GnLnrGnQn8GnSbrGnrMgHTClvHTDToHTFT3HTQT8HToJTHToJgHTrDUHTrMnHTvFYHTvRfHT8MnHT8SUHUAZ8HUBb4HUDTvHUoMYHXFl6HXJX6HXQlrHXrAUHXrMnHXrSbHXvFYHXvKXHX3LjHX3MeHYvQlHZrScHZvDbHbAcrHbFT3HbFl3HbJT8HbLTrHbMT8HbMXrHbMbrHbQb8HbSX3HboDbHboJTHbrFUHbrHgHbrJTHb8JTHb8MnHb8QgHgAlrHgDT3HgGgrHgHgrHgJTrHgJT8HgLX@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!Ln$CTGXMnCToLZ4CTrHT8CT3JTrCT3RZrCT#GTvCU6GgvCU8Db8CU8GZrCU8HT8CboLl3CbrGgrCbrMU8Cb8DT3Cb8GnrCb8LX4Cb8MT8Cb8ObrCgrGgvCgrKX4Cl8FZoDTrAbvDTrDboDTrGT6DTrJgrDTrMX3DTrRZrDTrRg8DTvAVvDTvFZoDT3DT8DT3Ln3DT4HZrDT4MT8DT8AlrDT8MT8DUAkGbDUDbJnDYLnQlDbDUOYDbMTAnDbMXSnDboAT3DboFn4DboLnvDj6JTrGTCgFTGTGgFnGTJTMnGTLnPlGToJT8GTrCT3GTrLVoGTrLnvGTrMX3GTrMboGTvKl3GZClFnGZrDT3GZ8DTrGZ8FZ8GZ8MXvGZ8On8GZ8ST3GbCnQXGbMbFnGboFboGboJg3GboMXoGb3JTvGb3JboGb3Mn6Gb3Qb8GgDXLjGgMnAUGgrDloGgrHX4GgrSToGgvAXrGgvAZvGgvFbrGgvLl3GgvMnvGnDnLXGnrATrGnrMboGnuLl3HTATMnHTAgCnHTCTCTHTrGTvHTrHTvHTrJX8HTrLl8HTrMT8HTrMgoHTrOTrHTuOn3HTvAZrHTvDTvHTvGboHTvJU8HTvLl3HTvMXrHTvQb4HT4GT6HT4JT8HT4Jb#HT8Al3HT8GZrHT8GgrHT8HX4HT8Jb8HT8JnoHT8LTrHT8LgvHT8SToHT8SV8HUoJUoHUoJX8HUoLnrHXrLZoHXvAl3HX3LnrHX4FkvHX4LhrHX4MXoHX4OnoHZrAZ8HZrDb8HZrGZ8HZrJnrHZvGZ8HZvLnvHZ8JnvHZ8LhrHbCXJlHbMTAnHboJl4HbpLl3HbrJX8HbrLnrHbrMnvHbvRYrHgoSTrHgrFV8HgrGZ8HgrJXoHgrRnvHgvBb!HgvGTrHgvHX4HgvHn!HgvLTrHgvSU8HnDnLbHnFbJbHnvDn8Hn6GgvHn!BTvJTCTLnJTQgFnJTrAnvJTrLX4JTrOUoJTvFn3JTvLnrJTvNToJT3AgoJT3Jn4JT3LhvJT3ObrJT8AcrJT8Al3JT8JT8JT8JnoJT8LX4JT8LnrJT8MX3JT8Rg3JT8Sc8JUoBTvJU8AToJU8GZ8JU8GgvJU8JTrJU8JXrJU8JnrJU8LnvJU8ScvJXHnJlJXrGgvJXrJU8JXrLhrJXrMT8JXrMXrJXrQUoJXvCTvJXvGZ8JXvGgrJXvQT8JX8Ab8JX8DT8JX8GZ8JX8HZvJX8LnrJX8MT8JX8MXoJX8MnvJX8ST3JYGnCTJbAkGbJbCTAnJbLTAcJboDT3JboLb6JbrAnvJbrCn3JbrDl8JbrGboJbrIZoJbrJnvJbrMnvJbrQb4Jb8RZrJeAbAnJgJnFbJgScAnJgrATrJgvHZ8JgvMn4JlJlFbJlLiQXJlLjOnJlRbOlJlvNXoJlvRl3Jl4AcrJl8AUoJl8MnrJnFnMlJnHgGbJnoDT8JnoFV8JnoGgvJnoIT8JnoQToJnoRg3JnrCZ3JnrGgrJnrHTvJnrLf8JnrOX8JnvAT3JnvFZoJnvGT8JnvJl4JnvMT8JnvMX8JnvOXrJnvPX6JnvSX3JnvSZrJn3MT8Jn3MX8Jn3RTrLTATKnLTJnLTLTMXKnLTRTQlLToGb8LTrAZ8LTrCZ8LTrDb8LTrHT8LT3PX6LT4FZoLT$CTvLT$GgrLUvHX3LVoATrLVoAgoLVoJboLVoMX3LVoRg3LV8CZ3LV8FZoLV8GTvLXrDXoLXrFbrLXvAgvLXvFlrLXvLl3LXvRn6LX4Mb8LX8GT8LYCXMnLYrMnrLZoSTvLZrAZvLZrAloLZrFToLZrJXvLZrJboLZrJl4LZrLnrLZrMT8LZrOgvLZrRnvLZrST4LZvMX8LZvSlvLZ8AgoLZ8CT3LZ8JT8LZ8LV8LZ8LZoLZ8Lg8LZ8SV8LZ8SbrLZ$HT8LZ$Mn4La6CTvLbFbMnLbRYFTLbSnFZLboJT8LbrAT9LbrGb3LbrQb8LcrJX8LcrMXrLerHTvLerJbrLerNboLgrDb8LgrGZ8LgrHTrLgrMXrLgrSU8LgvJTrLgvLl3Lg6Ll3LhrLnrLhrMT8LhvAl4LiLnQXLkoAgrLkoJT8LkoJn4LlrSU8Ll3FZoLl3HTrLl3JX8Ll3JnoLl3LToLmLeFbLnDUFbLnLVAnLnrATrLnrAZoLnrAb8LnrAlrLnrGgvLnrJU8LnrLZrLnrLhrLnrMb8LnrOXrLnrSZ8LnvAb4LnvDTrLnvDl8LnvHTrLnvHbrLnvJT8LnvJU8LnvJbrLnvLhvLnvMX8LnvMb8LnvNnoLnvSU8Ln3Al3Ln4FZoLn4GT6Ln4JgvLn4LhrLn4MT8Ln4SToMToCZrMToJX8MToLX4MToLf8MToRg3MTrEloMTvGb6MT3BTrMT3Lb6MT8AcrMT8AgrMT8GZrMT8JnoMT8LnrMT8MX3MUOUAnMXAbFnMXoAloMXoJX8MXoLf8MXoLl8MXrAb8MXrDTvMXrGT8MXrGgrMXrHTrMXrLf8MXrMU8MXrOXvMXrQb8MXvGT8MXvHTrMXvLVoMX3AX3MX3Jn3MX3LhrMX3MX3MX4AlrMX4OboMX8GTvMX8GZrMX8GgrMX8JT8MX8JX8MX8LhrMX8MT8MYDUFbMYMgDbMbGnFfMbvLX4MbvLl3Mb8Mb8Mb8ST4MgGXCnMg8ATrMg8AgoMg8CZrMg8DTrMg8DboMg8HTrMg8JgrMg8LT8MloJXoMl8AhrMl8JT8MnLgAUMnoJXrMnoLX4MnoLhrMnoMT8MnrAl4MnrDb8MnrOTvMnrOgvMnrQb8MnrSU8MnvGgrMnvHZ8Mn3MToMn4DTrMn4LTrMn4Mg8NnBXAnOTFTFnOToAToOTrGgvOTrJX8OT3JXoOT6MTrOT8GgrOT8HTpOT8MToOUoHT8OUoJT8OUoLn3OXrAgoOXrDg8OXrMT8OXvSToOX6CTvOX8CZrOX8OgrOb6HgvOb8AToOb8MT8OcvLZ8OgvAlrOgvHTvOgvJTrOgvJnrOgvLZrOgvLn4OgvMT8OgvRTrOg8AZoOg8DbvOnrOXoOnvJn4OnvLhvOnvRTrOn3GgoOn3JnvOn6JbvOn8OTrPTGYFTPbBnFnPbGnDnPgDYQTPlrAnvPlrETvPlrLnvPlrMXvPlvFX4QTMTAnQTrJU8QYCnJlQYJlQlQbGTQbQb8JnrQb8LZoQb8LnvQb8MT8Qb8Ml8Qb8ST4QloAl4QloHZvQloJX8QloMn8QnJZOlRTrAZvRTrDTrRTvJn4RTvLhvRT4Jb8RZrAZrRZ8AkrRZ8JU8RZ8LV8RZ8LnvRbJlQXRg3GboRg3MnvRg8AZ8Rg8JboRg8Jl4RnLTCbRnvFl3RnvQb8SToAl4SToCZrSToFZoSToHXrSToJU8SToJgvSToJl4SToLhrSToMX3STrAlvSTrCT9STrCgrSTrGgrSTrHXrSTrHboSTrJnoSTrNboSTvLnrST4AZoST8Ab8ST8JT8SUoJn3SU6HZ#SU6JTvSU8Db8SU8HboSU8LgrSV8JT8SZrAcrSZrAl3SZrJT8SZrJnvSZrMT8SZvLUoSZ4FZoSZ8JnoSZ8RZrScoLnrScoMT8ScoMX8ScrAT4ScrAZ8ScrLZ8ScrLkvScvDb8ScvLf8ScvNToSgrFZrShvKnrSloHUoSloLnrSlrMXoSl8HgrSmrJUoSn3BX6","ATFlOn3ATLgrDYAT4MTAnAT8LTMnAYJnRTrAbGgJnrAbLV8LnAbvNTAnAeFbLg3AgOYMXoAlQbFboAnDboAfAnJgoJTBToDgAnBUJbAl3BboDUAnCTDlvLnCTFTrSnCYoQTLnDTwAbAnDUDTrSnDUHgHgrDX8LXFnDbJXAcrETvLTLnGTFTQbrGTMnGToGT3DUFbGUJlPX3GbQg8LnGboJbFnGb3GgAYGgAg8ScGgMbAXrGgvAbAnGnJTLnvGnvATFgHTDT6ATHTrDlJnHYLnMn8HZrSbJTHZ8LTFnHbFTJUoHgSeMT8HgrLjAnHgvAbAnHlFUrDlHnDgvAnHnHTFT3HnQTGnrJTAaMXvJTGbCn3JTOgrAnJXvAXMnJbMg8SnJbMnRg3Jb8LTMnJnAl3OnJnGYrQlJnJlQY3LTDlCn3LTJjLg3LTLgvFXLTMg3GTLV8HUOgLXFZLg3LXNXrMnLX8QXFnLX9AlMYLYLXPXrLZAbJU8LZDUJU8LZMXrSnLZ$AgFnLaPXrDULbFYrMnLbMn8LXLboJgJgLeFbLg3LgLZrSnLgOYAgoLhrRnJlLkCTrSnLkOnLhrLnFX%AYLnFZoJXLnHTvJbLnLloAbMTATLf8MTHgJn3MTMXrAXMT3MTFnMUITvFnMXFX%AYMXMXvFbMXrFTDbMYAcMX3MbLf8SnMb8JbFnMgMXrMTMgvAXFnMgvGgCmMnAloSnMnFnJTrOXvMXSnOX8HTMnObJT8ScObLZFl3ObMXCZoPTLgrQXPUFnoQXPU3RXJlPX3RkQXPbrJXQlPlrJbFnQUAhrDbQXGnCXvQYLnHlvQbLfLnvRTOgvJbRXJYrQlRYLnrQlRbLnrQlRlFT8JlRlFnrQXSTClCn3STHTrAnSTLZQlrSTMnGTrSToHgGbSTrGTDnSTvGXCnST3HgFbSU3HXAXSbAnJn3SbFT8LnScLfLnv","AT3JgJX8AT8FZoSnAT8JgFV8AT8LhrDbAZ8JT8DbAb8GgLhrAb8SkLnvAe8MT8SnAlMYJXLVAl3GYDTvAl3LfLnvBUDTvLl3CTOn3HTrCT3DUGgrCU8MT8AbCbFTrJUoCgrDb8MTDTLV8JX8DTLnLXQlDT8LZrSnDUQb8FZ8DUST4JnvDb8ScOUoDj6GbJl4GTLfCYMlGToAXvFnGboAXvLnGgAcrJn3GgvFnSToGnLf8JnvGn#HTDToHTLnFXJlHTvATFToHTvHTDToHTvMTAgoHT3STClvHT4AlFl6HT8HTDToHUoDgJTrHUoScMX3HbRZrMXoHboJg8LTHgDb8JTrHgMToLf8HgvLnLnoHnHn3HT4Hn6MgvAnJTJU8ScvJT3AaQT8JT8HTrAnJXrRg8AnJbAloMXoJbrATFToJbvMnoSnJgDb6GgvJgDb8MXoJgSX3JU8JguATFToJlPYLnQlJlQkDnLbJlQlFYJlJl8Lf8OTJnCTFnLbJnLTHXMnJnLXGXCnJnoFfRg3JnrMYRg3Jn3HgFl3KT8Dg8LnLTRlFnPTLTvPbLbvLVoSbrCZLXMY6HT3LXNU7DlrLXNXDTATLX8DX8LnLZDb8JU8LZMnoLhrLZSToJU8LZrLaLnrLZvJn3SnLZ8LhrSnLaJnoMT8LbFlrHTvLbrFTLnrLbvATLlvLb6OTFn3LcLnJZOlLeAT6Mn4LeJT3ObrLg6LXFlrLhrJg8LnLhvDlPX4LhvLfLnvLj6JTFT3LnFbrMXoLnQluCTvLnrQXCY6LnvLfLnvLnvMgLnvLnvSeLf8MTMbrJn3MT3JgST3MT8AnATrMT8LULnrMUMToCZrMUScvLf8MXoDT8SnMX6ATFToMX8AXMT8MX8FkMT8MX8HTrDUMX8ScoSnMYJT6CTvMgAcrMXoMg8SToAfMlvAXLg3MnFl3AnvOT3AnFl3OUoATHT8OU3RnLXrOXrOXrSnObPbvFn6Og8HgrSnOg8OX8DbPTvAgoJgPU3RYLnrPXrDnJZrPb8CTGgvPlrLTDlvPlvFUJnoQUvFXrQlQeMnoAl3QlrQlrSnRTFTrJUoSTDlLiLXSTFg6HT3STJgoMn4STrFTJTrSTrLZFl3ST4FnMXoSUrDlHUoScvHTvSnSfLkvMXo","AUoAcrMXoAZ8HboAg8AbOg6ATFgAg8AloMXoAl3AT8JTrAl8MX8MXoCT3SToJU8Cl8Db8MXoDT8HgrATrDboOT8MXoGTOTrATMnGT8LhrAZ8GnvFnGnQXHToGgvAcrHTvAXvLl3HbrAZoMXoHgBlFXLg3HgMnFXrSnHgrSb8JUoHn6HT8LgvITvATrJUoJUoLZrRnvJU8HT8Jb8JXvFX8QT8JXvLToJTrJYrQnGnQXJgrJnoATrJnoJU8ScvJnvMnvMXoLTCTLgrJXLTJlRTvQlLbRnJlQYvLbrMb8LnvLbvFn3RnoLdCVSTGZrLeSTvGXCnLg3MnoLn3MToLlrETvMT8SToAl3MbrDU6GTvMb8LX4LhrPlrLXGXCnSToLf8Rg3STrDb8LTrSTvLTHXMnSb3RYLnMnSgOg6ATFg","HUDlGnrQXrJTrHgLnrAcJYMb8DULc8LTvFgGnCk3Mg8JbAnLX4QYvFYHnMXrRUoJnGnvFnRlvFTJlQnoSTrBXHXrLYSUJgLfoMT8Se8DTrHbDb","AbDl8SToJU8An3RbAb8ST8DUSTrGnrAgoLbFU6Db8LTrMg8AaHT8Jb8ObDl8SToJU8Pb3RlvFYoJl"],qz="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*";function jz(t){return t>=40?t=t+168-40:t>=19&&(t=t+97-19),(0,Dz.toUtf8String)([225,(t>>6)+132,(t&63)+128])}var Do=null;function $7(t){if(Do==null&&(Do=[],Jz.forEach(function(e,r){r+=4;for(var n=0;n{"use strict";var Hz=xc&&xc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(xc,"__esModule",{value:!0});xc.langIt=void 0;var hb=fi(),zz="AbacoAbbaglioAbbinatoAbeteAbissoAbolireAbrasivoAbrogatoAccadereAccennoAccusatoAcetoneAchilleAcidoAcquaAcreAcrilicoAcrobataAcutoAdagioAddebitoAddomeAdeguatoAderireAdipeAdottareAdulareAffabileAffettoAffissoAffrantoAforismaAfosoAfricanoAgaveAgenteAgevoleAggancioAgireAgitareAgonismoAgricoloAgrumetoAguzzoAlabardaAlatoAlbatroAlberatoAlboAlbumeAlceAlcolicoAlettoneAlfaAlgebraAlianteAlibiAlimentoAllagatoAllegroAllievoAllodolaAllusivoAlmenoAlogenoAlpacaAlpestreAltalenaAlternoAlticcioAltroveAlunnoAlveoloAlzareAmalgamaAmanitaAmarenaAmbitoAmbratoAmebaAmericaAmetistaAmicoAmmassoAmmendaAmmirareAmmonitoAmoreAmpioAmpliareAmuletoAnacardoAnagrafeAnalistaAnarchiaAnatraAncaAncellaAncoraAndareAndreaAnelloAngeloAngolareAngustoAnimaAnnegareAnnidatoAnnoAnnuncioAnonimoAnticipoAnziApaticoAperturaApodeApparireAppetitoAppoggioApprodoAppuntoAprileArabicaArachideAragostaAraldicaArancioAraturaArazzoArbitroArchivioArditoArenileArgentoArgineArgutoAriaArmoniaArneseArredatoArringaArrostoArsenicoArsoArteficeArzilloAsciuttoAscoltoAsepsiAsetticoAsfaltoAsinoAsolaAspiratoAsproAssaggioAsseAssolutoAssurdoAstaAstenutoAsticeAstrattoAtavicoAteismoAtomicoAtonoAttesaAttivareAttornoAttritoAttualeAusilioAustriaAutistaAutonomoAutunnoAvanzatoAvereAvvenireAvvisoAvvolgereAzioneAzotoAzzimoAzzurroBabeleBaccanoBacinoBacoBadessaBadilataBagnatoBaitaBalconeBaldoBalenaBallataBalzanoBambinoBandireBaraondaBarbaroBarcaBaritonoBarlumeBaroccoBasilicoBassoBatostaBattutoBauleBavaBavosaBeccoBeffaBelgioBelvaBendaBenevoleBenignoBenzinaBereBerlinaBetaBibitaBiciBidoneBifidoBigaBilanciaBimboBinocoloBiologoBipedeBipolareBirbanteBirraBiscottoBisestoBisnonnoBisonteBisturiBizzarroBlandoBlattaBollitoBonificoBordoBoscoBotanicoBottinoBozzoloBraccioBradipoBramaBrancaBravuraBretellaBrevettoBrezzaBrigliaBrillanteBrindareBroccoloBrodoBronzinaBrulloBrunoBubboneBucaBudinoBuffoneBuioBulboBuonoBurloneBurrascaBussolaBustaCadettoCaducoCalamaroCalcoloCalesseCalibroCalmoCaloriaCambusaCamerataCamiciaCamminoCamolaCampaleCanapaCandelaCaneCaninoCanottoCantinaCapaceCapelloCapitoloCapogiroCapperoCapraCapsulaCarapaceCarcassaCardoCarismaCarovanaCarrettoCartolinaCasaccioCascataCasermaCasoCassoneCastelloCasualeCatastaCatenaCatrameCautoCavilloCedibileCedrataCefaloCelebreCellulareCenaCenoneCentesimoCeramicaCercareCertoCerumeCervelloCesoiaCespoCetoChelaChiaroChiccaChiedereChimeraChinaChirurgoChitarraCiaoCiclismoCifrareCignoCilindroCiottoloCircaCirrosiCitricoCittadinoCiuffoCivettaCivileClassicoClinicaCloroCoccoCodardoCodiceCoerenteCognomeCollareColmatoColoreColposoColtivatoColzaComaCometaCommandoComodoComputerComuneConcisoCondurreConfermaCongelareConiugeConnessoConoscereConsumoContinuoConvegnoCopertoCopioneCoppiaCopricapoCorazzaCordataCoricatoCorniceCorollaCorpoCorredoCorsiaCorteseCosmicoCostanteCotturaCovatoCratereCravattaCreatoCredereCremosoCrescitaCretaCricetoCrinaleCrisiCriticoCroceCronacaCrostataCrucialeCruscaCucireCuculoCuginoCullatoCupolaCuratoreCursoreCurvoCuscinoCustodeDadoDainoDalmataDamerinoDanielaDannosoDanzareDatatoDavantiDavveroDebuttoDecennioDecisoDeclinoDecolloDecretoDedicatoDefinitoDeformeDegnoDelegareDelfinoDelirioDeltaDemenzaDenotatoDentroDepositoDerapataDerivareDerogaDescrittoDesertoDesiderioDesumereDetersivoDevotoDiametroDicembreDiedroDifesoDiffusoDigerireDigitaleDiluvioDinamicoDinnanziDipintoDiplomaDipoloDiradareDireDirottoDirupoDisagioDiscretoDisfareDisgeloDispostoDistanzaDisumanoDitoDivanoDiveltoDividereDivoratoDobloneDocenteDoganaleDogmaDolceDomatoDomenicaDominareDondoloDonoDormireDoteDottoreDovutoDozzinaDragoDruidoDubbioDubitareDucaleDunaDuomoDupliceDuraturoEbanoEccessoEccoEclissiEconomiaEderaEdicolaEdileEditoriaEducareEgemoniaEgliEgoismoEgregioElaboratoElargireEleganteElencatoElettoElevareElficoElicaElmoElsaElusoEmanatoEmblemaEmessoEmiroEmotivoEmozioneEmpiricoEmuloEndemicoEnduroEnergiaEnfasiEnotecaEntrareEnzimaEpatiteEpilogoEpisodioEpocaleEppureEquatoreErarioErbaErbosoEredeEremitaErigereErmeticoEroeErosivoErranteEsagonoEsameEsanimeEsaudireEscaEsempioEsercitoEsibitoEsigenteEsistereEsitoEsofagoEsortatoEsosoEspansoEspressoEssenzaEssoEstesoEstimareEstoniaEstrosoEsultareEtilicoEtnicoEtruscoEttoEuclideoEuropaEvasoEvidenzaEvitatoEvolutoEvvivaFabbricaFaccendaFachiroFalcoFamigliaFanaleFanfaraFangoFantasmaFareFarfallaFarinosoFarmacoFasciaFastosoFasulloFaticareFatoFavolosoFebbreFecolaFedeFegatoFelpaFeltroFemminaFendereFenomenoFermentoFerroFertileFessuraFestivoFettaFeudoFiabaFiduciaFifaFiguratoFiloFinanzaFinestraFinireFioreFiscaleFisicoFiumeFlaconeFlamencoFleboFlemmaFloridoFluenteFluoroFobicoFocacciaFocosoFoderatoFoglioFolataFolcloreFolgoreFondenteFoneticoFoniaFontanaForbitoForchettaForestaFormicaFornaioForoFortezzaForzareFosfatoFossoFracassoFranaFrassinoFratelloFreccettaFrenataFrescoFrigoFrollinoFrondeFrugaleFruttaFucilataFucsiaFuggenteFulmineFulvoFumanteFumettoFumosoFuneFunzioneFuocoFurboFurgoneFuroreFusoFutileGabbianoGaffeGalateoGallinaGaloppoGamberoGammaGaranziaGarboGarofanoGarzoneGasdottoGasolioGastricoGattoGaudioGazeboGazzellaGecoGelatinaGelsoGemelloGemmatoGeneGenitoreGennaioGenotipoGergoGhepardoGhiaccioGhisaGialloGildaGineproGiocareGioielloGiornoGioveGiratoGironeGittataGiudizioGiuratoGiustoGlobuloGlutineGnomoGobbaGolfGomitoGommoneGonfioGonnaGovernoGracileGradoGraficoGrammoGrandeGrattareGravosoGraziaGrecaGreggeGrifoneGrigioGrinzaGrottaGruppoGuadagnoGuaioGuantoGuardareGufoGuidareIbernatoIconaIdenticoIdillioIdoloIdraIdricoIdrogenoIgieneIgnaroIgnoratoIlareIllesoIllogicoIlludereImballoImbevutoImboccoImbutoImmaneImmersoImmolatoImpaccoImpetoImpiegoImportoImprontaInalareInarcareInattivoIncantoIncendioInchinoIncisivoInclusoIncontroIncrocioIncuboIndagineIndiaIndoleIneditoInfattiInfilareInflittoIngaggioIngegnoIngleseIngordoIngrossoInnescoInodoreInoltrareInondatoInsanoInsettoInsiemeInsonniaInsulinaIntasatoInteroIntonacoIntuitoInumidireInvalidoInveceInvitoIperboleIpnoticoIpotesiIppicaIrideIrlandaIronicoIrrigatoIrrorareIsolatoIsotopoIstericoIstitutoIstriceItaliaIterareLabbroLabirintoLaccaLaceratoLacrimaLacunaLaddoveLagoLampoLancettaLanternaLardosoLargaLaringeLastraLatenzaLatinoLattugaLavagnaLavoroLegaleLeggeroLemboLentezzaLenzaLeoneLepreLesivoLessatoLestoLetteraleLevaLevigatoLiberoLidoLievitoLillaLimaturaLimitareLimpidoLineareLinguaLiquidoLiraLiricaLiscaLiteLitigioLivreaLocandaLodeLogicaLombareLondraLongevoLoquaceLorenzoLotoLotteriaLuceLucidatoLumacaLuminosoLungoLupoLuppoloLusingaLussoLuttoMacabroMacchinaMaceroMacinatoMadamaMagicoMagliaMagneteMagroMaiolicaMalafedeMalgradoMalintesoMalsanoMaltoMalumoreManaManciaMandorlaMangiareManifestoMannaroManovraMansardaMantideManubrioMappaMaratonaMarcireMarettaMarmoMarsupioMascheraMassaiaMastinoMaterassoMatricolaMattoneMaturoMazurcaMeandroMeccanicoMecenateMedesimoMeditareMegaMelassaMelisMelodiaMeningeMenoMensolaMercurioMerendaMerloMeschinoMeseMessereMestoloMetalloMetodoMettereMiagolareMicaMicelioMicheleMicroboMidolloMieleMiglioreMilanoMiliteMimosaMineraleMiniMinoreMirinoMirtilloMiscelaMissivaMistoMisurareMitezzaMitigareMitraMittenteMnemonicoModelloModificaModuloMoganoMogioMoleMolossoMonasteroMoncoMondinaMonetarioMonileMonotonoMonsoneMontatoMonvisoMoraMordereMorsicatoMostroMotivatoMotosegaMottoMovenzaMovimentoMozzoMuccaMucosaMuffaMughettoMugnaioMulattoMulinelloMultiploMummiaMuntoMuovereMuraleMusaMuscoloMusicaMutevoleMutoNababboNaftaNanometroNarcisoNariceNarratoNascereNastrareNaturaleNauticaNaviglioNebulosaNecrosiNegativoNegozioNemmenoNeofitaNerettoNervoNessunoNettunoNeutraleNeveNevroticoNicchiaNinfaNitidoNobileNocivoNodoNomeNominaNordicoNormaleNorvegeseNostranoNotareNotiziaNotturnoNovellaNucleoNullaNumeroNuovoNutrireNuvolaNuzialeOasiObbedireObbligoObeliscoOblioOboloObsoletoOccasioneOcchioOccidenteOccorrereOccultareOcraOculatoOdiernoOdorareOffertaOffrireOffuscatoOggettoOggiOgnunoOlandeseOlfattoOliatoOlivaOlogrammaOltreOmaggioOmbelicoOmbraOmegaOmissioneOndosoOnereOniceOnnivoroOnorevoleOntaOperatoOpinioneOppostoOracoloOrafoOrdineOrecchinoOreficeOrfanoOrganicoOrigineOrizzonteOrmaOrmeggioOrnativoOrologioOrrendoOrribileOrtensiaOrticaOrzataOrzoOsareOscurareOsmosiOspedaleOspiteOssaOssidareOstacoloOsteOtiteOtreOttagonoOttimoOttobreOvaleOvestOvinoOviparoOvocitoOvunqueOvviareOzioPacchettoPacePacificoPadellaPadronePaesePagaPaginaPalazzinaPalesarePallidoPaloPaludePandoroPannelloPaoloPaonazzoPapricaParabolaParcellaParerePargoloPariParlatoParolaPartireParvenzaParzialePassivoPasticcaPataccaPatologiaPattumePavonePeccatoPedalarePedonalePeggioPelosoPenarePendicePenisolaPennutoPenombraPensarePentolaPepePepitaPerbenePercorsoPerdonatoPerforarePergamenaPeriodoPermessoPernoPerplessoPersuasoPertugioPervasoPesatorePesistaPesoPestiferoPetaloPettinePetulantePezzoPiacerePiantaPiattinoPiccinoPicozzaPiegaPietraPifferoPigiamaPigolioPigroPilaPiliferoPillolaPilotaPimpantePinetaPinnaPinoloPioggiaPiomboPiramidePireticoPiritePirolisiPitonePizzicoPlaceboPlanarePlasmaPlatanoPlenarioPochezzaPoderosoPodismoPoesiaPoggiarePolentaPoligonoPollicePolmonitePolpettaPolsoPoltronaPolverePomicePomodoroPontePopolosoPorfidoPorosoPorporaPorrePortataPosaPositivoPossessoPostulatoPotassioPoterePranzoPrassiPraticaPreclusoPredicaPrefissoPregiatoPrelievoPremerePrenotarePreparatoPresenzaPretestoPrevalsoPrimaPrincipePrivatoProblemaProcuraProdurreProfumoProgettoProlungaPromessaPronomePropostaProrogaProtesoProvaPrudentePrugnaPruritoPsichePubblicoPudicaPugilatoPugnoPulcePulitoPulsantePuntarePupazzoPupillaPuroQuadroQualcosaQuasiQuerelaQuotaRaccoltoRaddoppioRadicaleRadunatoRafficaRagazzoRagioneRagnoRamarroRamingoRamoRandagioRantolareRapatoRapinaRappresoRasaturaRaschiatoRasenteRassegnaRastrelloRataRavvedutoRealeRecepireRecintoReclutaReconditoRecuperoRedditoRedimereRegalatoRegistroRegolaRegressoRelazioneRemareRemotoRennaReplicaReprimereReputareResaResidenteResponsoRestauroReteRetinaRetoricaRettificaRevocatoRiassuntoRibadireRibelleRibrezzoRicaricaRiccoRicevereRiciclatoRicordoRicredutoRidicoloRidurreRifasareRiflessoRiformaRifugioRigareRigettatoRighelloRilassatoRilevatoRimanereRimbalzoRimedioRimorchioRinascitaRincaroRinforzoRinnovoRinomatoRinsavitoRintoccoRinunciaRinvenireRiparatoRipetutoRipienoRiportareRipresaRipulireRisataRischioRiservaRisibileRisoRispettoRistoroRisultatoRisvoltoRitardoRitegnoRitmicoRitrovoRiunioneRivaRiversoRivincitaRivoltoRizomaRobaRoboticoRobustoRocciaRocoRodaggioRodereRoditoreRogitoRollioRomanticoRompereRonzioRosolareRospoRotanteRotondoRotulaRovescioRubizzoRubricaRugaRullinoRumineRumorosoRuoloRupeRussareRusticoSabatoSabbiareSabotatoSagomaSalassoSaldaturaSalgemmaSalivareSalmoneSaloneSaltareSalutoSalvoSapereSapidoSaporitoSaracenoSarcasmoSartoSassosoSatelliteSatiraSatolloSaturnoSavanaSavioSaziatoSbadiglioSbalzoSbancatoSbarraSbattereSbavareSbendareSbirciareSbloccatoSbocciatoSbrinareSbruffoneSbuffareScabrosoScadenzaScalaScambiareScandaloScapolaScarsoScatenareScavatoSceltoScenicoScettroSchedaSchienaSciarpaScienzaScindereScippoSciroppoScivoloSclerareScodellaScolpitoScompartoSconfortoScoprireScortaScossoneScozzeseScribaScrollareScrutinioScuderiaScultoreScuolaScuroScusareSdebitareSdoganareSeccaturaSecondoSedanoSeggiolaSegnalatoSegregatoSeguitoSelciatoSelettivoSellaSelvaggioSemaforoSembrareSemeSeminatoSempreSensoSentireSepoltoSequenzaSerataSerbatoSerenoSerioSerpenteSerraglioServireSestinaSetolaSettimanaSfaceloSfaldareSfamatoSfarzosoSfaticatoSferaSfidaSfilatoSfingeSfocatoSfoderareSfogoSfoltireSforzatoSfrattoSfruttatoSfuggitoSfumareSfusoSgabelloSgarbatoSgonfiareSgorbioSgrassatoSguardoSibiloSiccomeSierraSiglaSignoreSilenzioSillabaSimboloSimpaticoSimulatoSinfoniaSingoloSinistroSinoSintesiSinusoideSiparioSismaSistoleSituatoSlittaSlogaturaSlovenoSmarritoSmemoratoSmentitoSmeraldoSmilzoSmontareSmottatoSmussatoSnellireSnervatoSnodoSobbalzoSobrioSoccorsoSocialeSodaleSoffittoSognoSoldatoSolenneSolidoSollazzoSoloSolubileSolventeSomaticoSommaSondaSonettoSonniferoSopireSoppesoSopraSorgereSorpassoSorrisoSorsoSorteggioSorvolatoSospiroSostaSottileSpadaSpallaSpargereSpatolaSpaventoSpazzolaSpecieSpedireSpegnereSpelaturaSperanzaSpessoreSpettraleSpezzatoSpiaSpigolosoSpillatoSpinosoSpiraleSplendidoSportivoSposoSprangaSprecareSpronatoSpruzzoSpuntinoSquilloSradicareSrotolatoStabileStaccoStaffaStagnareStampatoStantioStarnutoStaseraStatutoSteloSteppaSterzoStilettoStimaStirpeStivaleStizzosoStonatoStoricoStrappoStregatoStriduloStrozzareStruttoStuccareStufoStupendoSubentroSuccosoSudoreSuggeritoSugoSultanoSuonareSuperboSupportoSurgelatoSurrogatoSussurroSuturaSvagareSvedeseSveglioSvelareSvenutoSveziaSviluppoSvistaSvizzeraSvoltaSvuotareTabaccoTabulatoTacciareTaciturnoTaleTalismanoTamponeTanninoTaraTardivoTargatoTariffaTarpareTartarugaTastoTatticoTavernaTavolataTazzaTecaTecnicoTelefonoTemerarioTempoTemutoTendoneTeneroTensioneTentacoloTeoremaTermeTerrazzoTerzettoTesiTesseratoTestatoTetroTettoiaTifareTigellaTimbroTintoTipicoTipografoTiraggioTiroTitanioTitoloTitubanteTizioTizzoneToccareTollerareToltoTombolaTomoTonfoTonsillaTopazioTopologiaToppaTorbaTornareTorroneTortoraToscanoTossireTostaturaTotanoTraboccoTracheaTrafilaTragediaTralcioTramontoTransitoTrapanoTrarreTraslocoTrattatoTraveTrecciaTremolioTrespoloTributoTrichecoTrifoglioTrilloTrinceaTrioTristezzaTrituratoTrivellaTrombaTronoTroppoTrottolaTrovareTruccatoTubaturaTuffatoTulipanoTumultoTunisiaTurbareTurchinoTutaTutelaUbicatoUccelloUccisoreUdireUditivoUffaUfficioUgualeUlisseUltimatoUmanoUmileUmorismoUncinettoUngereUnghereseUnicornoUnificatoUnisonoUnitarioUnteUovoUpupaUraganoUrgenzaUrloUsanzaUsatoUscitoUsignoloUsuraioUtensileUtilizzoUtopiaVacanteVaccinatoVagabondoVagliatoValangaValgoValicoVallettaValorosoValutareValvolaVampataVangareVanitosoVanoVantaggioVanveraVaporeVaranoVarcatoVarianteVascaVedettaVedovaVedutoVegetaleVeicoloVelcroVelinaVellutoVeloceVenatoVendemmiaVentoVeraceVerbaleVergognaVerificaVeroVerrucaVerticaleVescicaVessilloVestaleVeteranoVetrinaVetustoViandanteVibranteVicendaVichingoVicinanzaVidimareVigiliaVignetoVigoreVileVillanoViminiVincitoreViolaViperaVirgolaVirologoVirulentoViscosoVisioneVispoVissutoVisuraVitaVitelloVittimaVivandaVividoViziareVoceVogaVolatileVolereVolpeVoragineVulcanoZampognaZannaZappatoZatteraZavorraZefiroZelanteZeloZenzeroZerbinoZibettoZincoZirconeZittoZollaZoticoZuccheroZufoloZuluZuppa",ml=null;function tA(t){if(ml==null&&(ml=zz.replace(/([A-Z])/g," $1").toLowerCase().substring(1).split(" "),hb.Wordlist.check(t)!=="0x5c1362d88fd4cf614a96f3234941d29f7d37c08c5292fde03bf62c2db6ff7620"))throw ml=null,new Error("BIP39 Wordlist for it (Italian) FAILED")}var Gz=function(t){Hz(e,t);function e(){return t.call(this,"it")||this}return e.prototype.getWord=function(r){return tA(this),ml[r]},e.prototype.getWordIndex=function(r){return tA(this),ml.indexOf(r)},e}(hb.Wordlist),nA=new Gz;xc.langIt=nA;hb.Wordlist.register(nA)});var cA=P(Ta=>{"use strict";var Xz=Ta&&Ta.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Ta,"__esModule",{value:!0});Ta.langZhTw=Ta.langZhCn=void 0;var Kz=Cr(),bl=fi(),vb="}aE#4A=Yv&co#4N#6G=cJ&SM#66|/Z#4t&kn~46#4K~4q%b9=IR#7l,mB#7W_X2*dl}Uo~7s}Uf&Iw#9c&cw~6O&H6&wx&IG%v5=IQ~8a&Pv#47$PR&50%Ko&QM&3l#5f,D9#4L|/H&tQ;v0~6n]nN?";function aA(t){if(yc[t.locale]===null){yc[t.locale]=[];for(var e=0,r=0;r<2048;r++){var n=Qz.indexOf(vb[r*3]),i=[228+(n>>2),128+mb.indexOf(vb[r*3+1]),128+mb.indexOf(vb[r*3+2])];if(t.locale==="zh_tw")for(var a=n%4,o=a;o<3;o++)i[o]=mb.indexOf(Vz[e++])+(o==0?228:128);yc[t.locale].push((0,Kz.toUtf8String)(i))}if(bl.Wordlist.check(t)!==Zz[t.locale])throw yc[t.locale]=null,new Error("BIP39 Wordlist for "+t.locale+" (Chinese) FAILED")}}var oA=function(t){Xz(e,t);function e(r){return t.call(this,"zh_"+r)||this}return e.prototype.getWord=function(r){return aA(this),yc[this.locale][r]},e.prototype.getWordIndex=function(r){return aA(this),yc[this.locale].indexOf(r)},e.prototype.split=function(r){return r=r.replace(/(?:\u3000| )+/g,""),r.split("")},e}(bl.Wordlist),bb=new oA("cn");Ta.langZhCn=bb;bl.Wordlist.register(bb);bl.Wordlist.register(bb,"zh");var sA=new oA("tw");Ta.langZhTw=sA;bl.Wordlist.register(sA)});var uA=P(Ip=>{"use strict";Object.defineProperty(Ip,"__esModule",{value:!0});Ip.wordlists=void 0;var Wz=R7(),Yz=D7(),$z=H7(),eG=V7(),rG=Y7(),tG=rA(),nG=iA(),gb=cA();Ip.wordlists={cz:Wz.langCz,en:Yz.langEn,es:$z.langEs,fr:eG.langFr,it:nG.langIt,ja:rG.langJa,ko:tG.langKo,zh:gb.langZhCn,zh_cn:gb.langZhCn,zh_tw:gb.langZhTw}});var xb=P(ka=>{"use strict";Object.defineProperty(ka,"__esModule",{value:!0});ka.wordlists=ka.Wordlist=ka.logger=void 0;var lA=fi();Object.defineProperty(ka,"logger",{enumerable:!0,get:function(){return lA.logger}});Object.defineProperty(ka,"Wordlist",{enumerable:!0,get:function(){return lA.Wordlist}});var iG=uA();Object.defineProperty(ka,"wordlists",{enumerable:!0,get:function(){return iG.wordlists}})});var fA=P(Np=>{"use strict";Object.defineProperty(Np,"__esModule",{value:!0});Np.version=void 0;Np.version="hdnode/5.7.0"});var Jp=P(dt=>{"use strict";Object.defineProperty(dt,"__esModule",{value:!0});dt.getAccountPath=dt.isValidMnemonic=dt.entropyToMnemonic=dt.mnemonicToEntropy=dt.mnemonicToSeed=dt.HDNode=dt.defaultPath=void 0;var vA=Sp(),or=De(),mA=Tr(),gl=Cr(),aG=kp(),ft=Ve(),dA=al(),di=dc(),oG=Ji(),pA=xb(),sG=re(),cG=fA(),xl=new sG.Logger(cG.version),uG=mA.BigNumber.from("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),lG=(0,gl.toUtf8Bytes)("Bitcoin seed"),Ac=2147483648;function bA(t){return(1<=256)throw new Error("Depth too large!");return hA((0,or.concat)([this.privateKey!=null?"0x0488ADE4":"0x0488B21E",(0,or.hexlify)(this.depth),this.parentFingerprint,(0,or.hexZeroPad)((0,or.hexlify)(this.index),4),this.chainCode,this.privateKey!=null?(0,or.concat)(["0x00",this.privateKey]):this.publicKey]))},enumerable:!1,configurable:!0}),t.prototype.neuter=function(){return new t(wc,null,this.publicKey,this.parentFingerprint,this.chainCode,this.index,this.depth,this.path)},t.prototype._derive=function(e){if(e>4294967295)throw new Error("invalid index - "+String(e));var r=this.path;r&&(r+="/"+(e&~Ac));var n=new Uint8Array(37);if(e&Ac){if(!this.privateKey)throw new Error("cannot derive child of neutered node");n.set((0,or.arrayify)(this.privateKey),1),r&&(r+="'")}else n.set((0,or.arrayify)(this.publicKey));for(var i=24;i>=0;i-=8)n[33+(i>>3)]=e>>24-i&255;var a=(0,or.arrayify)((0,di.computeHmac)(di.SupportedAlgorithm.sha512,this.chainCode,n)),o=a.slice(0,32),c=a.slice(32),u=null,s=null;if(this.privateKey)u=Dp(mA.BigNumber.from(o).add(this.privateKey).mod(uG));else{var f=new dA.SigningKey((0,or.hexlify)(o));s=f._addPoint(this.publicKey)}var m=r,w=this.mnemonic;return w&&(m=Object.freeze({phrase:w.phrase,path:r,locale:w.locale||"en"})),new t(wc,u,s,this.fingerprint,Dp(c),e,this.depth+1,m)},t.prototype.derivePath=function(e){var r=e.split("/");if(r.length===0||r[0]==="m"&&this.depth!==0)throw new Error("invalid path - "+e);r[0]==="m"&&r.shift();for(var n=this,i=0;i=Ac)throw new Error("invalid path index - "+a);n=n._derive(Ac+o)}else if(a.match(/^[0-9]+$/)){var o=parseInt(a);if(o>=Ac)throw new Error("invalid path index - "+a);n=n._derive(o)}else throw new Error("invalid path component - "+a)}return n},t._fromSeed=function(e,r){var n=(0,or.arrayify)(e);if(n.length<16||n.length>64)throw new Error("invalid seed");var i=(0,or.arrayify)((0,di.computeHmac)(di.SupportedAlgorithm.sha512,lG,n));return new t(wc,Dp(i.slice(0,32)),null,"0x00000000",Dp(i.slice(32)),0,0,r)},t.fromMnemonic=function(e,r,n){return n=yb(n),e=xA(wb(e,n),n),t._fromSeed(gA(e,r),{phrase:e,path:"m",locale:n.locale})},t.fromSeed=function(e){return t._fromSeed(e,null)},t.fromExtendedKey=function(e){var r=vA.Base58.decode(e);(r.length!==82||hA(r.slice(0,78))!==e)&&xl.throwArgumentError("invalid extended key","extendedKey","[REDACTED]");var n=r[4],i=(0,or.hexlify)(r.slice(5,9)),a=parseInt((0,or.hexlify)(r.slice(9,13)).substring(2),16),o=(0,or.hexlify)(r.slice(13,45)),c=r.slice(45,78);switch((0,or.hexlify)(r.slice(0,4))){case"0x0488b21e":case"0x043587cf":return new t(wc,null,(0,or.hexlify)(c),i,o,a,n,null);case"0x0488ade4":case"0x04358394 ":if(c[0]!==0)break;return new t(wc,(0,or.hexlify)(c.slice(1)),null,i,o,a,n,null)}return xl.throwArgumentError("invalid extended key","extendedKey","[REDACTED]")},t}();dt.HDNode=dG;function gA(t,e){e||(e="");var r=(0,gl.toUtf8Bytes)("mnemonic"+e,gl.UnicodeNormalizationForm.NFKD);return(0,aG.pbkdf2)((0,gl.toUtf8Bytes)(t,gl.UnicodeNormalizationForm.NFKD),r,2048,64,"sha512")}dt.mnemonicToSeed=gA;function wb(t,e){e=yb(e),xl.checkNormalize();var r=e.split(t);if(r.length%3!==0)throw new Error("invalid mnemonic");for(var n=(0,or.arrayify)(new Uint8Array(Math.ceil(11*r.length/8))),i=0,a=0;a>3]|=1<<7-i%8),i++}var u=32*r.length/3,s=r.length/3,f=bA(s),m=(0,or.arrayify)((0,di.sha256)(n.slice(0,u/8)))[0]&f;if(m!==(n[n.length-1]&f))throw new Error("invalid checksum");return(0,or.hexlify)(n.slice(0,u/8))}dt.mnemonicToEntropy=wb;function xA(t,e){if(e=yb(e),t=(0,or.arrayify)(t),t.length%4!==0||t.length<16||t.length>32)throw new Error("invalid entropy");for(var r=[0],n=11,i=0;i8?(r[r.length-1]<<=8,r[r.length-1]|=t[i],n-=8):(r[r.length-1]<<=n,r[r.length-1]|=t[i]>>8-n,r.push(t[i]&fG(8-n)),n+=3);var a=t.length/4,o=(0,or.arrayify)((0,di.sha256)(t))[0]&bA(a);return r[r.length-1]<<=a,r[r.length-1]|=o>>8-a,e.join(r.map(function(c){return e.getWord(c)}))}dt.entropyToMnemonic=xA;function pG(t,e){try{return wb(t,e),!0}catch{}return!1}dt.isValidMnemonic=pG;function hG(t){return(typeof t!="number"||t<0||t>=Ac||t%1)&&xl.throwArgumentError("invalid account index","index",t),"m/44'/60'/"+t+"'/0/0"}dt.getAccountPath=hG});var yA=P(qp=>{"use strict";Object.defineProperty(qp,"__esModule",{value:!0});qp.randomBytes=void 0;var vG=require("crypto"),mG=De();function bG(t){return(0,mG.arrayify)((0,vG.randomBytes)(t))}qp.randomBytes=bG});var wA=P(jp=>{"use strict";Object.defineProperty(jp,"__esModule",{value:!0});jp.shuffled=void 0;function gG(t){t=t.slice();for(var e=t.length-1;e>0;e--){var r=Math.floor(Math.random()*(e+1)),n=t[e];t[e]=t[r],t[r]=n}return t}jp.shuffled=gG});var yl=P(Ec=>{"use strict";Object.defineProperty(Ec,"__esModule",{value:!0});Ec.shuffled=Ec.randomBytes=void 0;var xG=yA();Object.defineProperty(Ec,"randomBytes",{enumerable:!0,get:function(){return xG.randomBytes}});var yG=wA();Object.defineProperty(Ec,"shuffled",{enumerable:!0,get:function(){return yG.shuffled}})});var Eb=P((Ab,AA)=>{"use strict";(function(t){function e(d){return parseInt(d)===d}function r(d){if(!e(d.length))return!1;for(var y=0;y255)return!1;return!0}function n(d,y){if(d.buffer&&ArrayBuffer.isView(d)&&d.name==="Uint8Array")return y&&(d.slice?d=d.slice():d=Array.prototype.slice.call(d)),d;if(Array.isArray(d)){if(!r(d))throw new Error("Array contains invalid value: "+d);return new Uint8Array(d)}if(e(d.length)&&r(d))return new Uint8Array(d);throw new Error("unsupported array-like object")}function i(d){return new Uint8Array(d)}function a(d,y,C,h,k){(h!=null||k!=null)&&(d.slice?d=d.slice(h,k):d=Array.prototype.slice.call(d,h,k)),y.set(d,C)}var o=function(){function d(C){var h=[],k=0;for(C=encodeURI(C);k191&&J<224?(h.push(String.fromCharCode((J&31)<<6|C[k+1]&63)),k+=2):(h.push(String.fromCharCode((J&15)<<12|(C[k+1]&63)<<6|C[k+2]&63)),k+=3)}return h.join("")}return{toBytes:d,fromBytes:y}}(),c=function(){function d(h){for(var k=[],J=0;J>4]+y[_&15])}return k.join("")}return{toBytes:d,fromBytes:C}}(),u={16:10,24:12,32:14},s=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],f=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],m=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],w=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],T=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],A=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],O=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],B=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],F=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],I=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],D=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],z=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],G=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],j=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],Z=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function X(d){for(var y=[],C=0;C>2,this._Ke[J][y%4]=k[y],this._Kd[d-J][y%4]=k[y];for(var _=0,L=h,N;L>16&255]<<24^f[N>>8&255]<<16^f[N&255]<<8^f[N>>24&255]^s[_]<<24,_+=1,h!=8)for(var y=1;y>8&255]<<8^f[N>>16&255]<<16^f[N>>24&255]<<24;for(var y=h/2+1;y>2,H=L%4,this._Ke[q][H]=k[y],this._Kd[d-q][H]=k[y++],L++}for(var q=1;q>24&255]^G[N>>16&255]^j[N>>8&255]^Z[N&255]},U.prototype.encrypt=function(d){if(d.length!=16)throw new Error("invalid plaintext size (must be 16 bytes)");for(var y=this._Ke.length-1,C=[0,0,0,0],h=X(d),k=0;k<4;k++)h[k]^=this._Ke[0][k];for(var J=1;J>24&255]^T[h[(k+1)%4]>>16&255]^A[h[(k+2)%4]>>8&255]^O[h[(k+3)%4]&255]^this._Ke[J][k];h=C.slice()}for(var _=i(16),L,k=0;k<4;k++)L=this._Ke[y][k],_[4*k]=(f[h[k]>>24&255]^L>>24)&255,_[4*k+1]=(f[h[(k+1)%4]>>16&255]^L>>16)&255,_[4*k+2]=(f[h[(k+2)%4]>>8&255]^L>>8)&255,_[4*k+3]=(f[h[(k+3)%4]&255]^L)&255;return _},U.prototype.decrypt=function(d){if(d.length!=16)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var y=this._Kd.length-1,C=[0,0,0,0],h=X(d),k=0;k<4;k++)h[k]^=this._Kd[0][k];for(var J=1;J>24&255]^F[h[(k+3)%4]>>16&255]^I[h[(k+2)%4]>>8&255]^D[h[(k+1)%4]&255]^this._Kd[J][k];h=C.slice()}for(var _=i(16),L,k=0;k<4;k++)L=this._Kd[y][k],_[4*k]=(m[h[k]>>24&255]^L>>24)&255,_[4*k+1]=(m[h[(k+3)%4]>>16&255]^L>>16)&255,_[4*k+2]=(m[h[(k+2)%4]>>8&255]^L>>8)&255,_[4*k+3]=(m[h[(k+1)%4]&255]^L)&255;return _};var M=function(d){if(!(this instanceof M))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new U(d)};M.prototype.encrypt=function(d){if(d=n(d),d.length%16!==0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var y=i(d.length),C=i(16),h=0;h=0;--y)this._counter[y]=d%256,d=d>>8},l.prototype.setBytes=function(d){if(d=n(d,!0),d.length!=16)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=d},l.prototype.increment=function(){for(var d=15;d>=0;d--)if(this._counter[d]===255)this._counter[d]=0;else{this._counter[d]++;break}};var p=function(d,y){if(!(this instanceof p))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",y instanceof l||(y=new l(y)),this._counter=y,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new U(d)};p.prototype.encrypt=function(d){for(var y=n(d,!0),C=0;C16)throw new Error("PKCS#7 padding byte out of range");for(var C=d.length-y,h=0;h{"use strict";Object.defineProperty(Up,"__esModule",{value:!0});Up.version=void 0;Up.version="json-wallets/5.7.0"});var _b=P(an=>{"use strict";Object.defineProperty(an,"__esModule",{value:!0});an.uuidV4=an.searchPath=an.getPassword=an.zpad=an.looseArrayify=void 0;var Hp=De(),EA=Cr();function wG(t){return typeof t=="string"&&t.substring(0,2)!=="0x"&&(t="0x"+t),(0,Hp.arrayify)(t)}an.looseArrayify=wG;function AG(t,e){for(t=String(t);t.length{"use strict";var TG=pi&&pi.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),kG=pi&&pi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(pi,"__esModule",{value:!0});pi.decrypt=pi.CrowdsaleAccount=void 0;var SA=kG(Eb()),CG=Vt(),_A=De(),OG=Bt(),PG=kp(),MG=Cr(),BG=Ve(),FG=re(),LG=Sb(),RG=new FG.Logger(LG.version),zp=_b(),TA=function(t){TG(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.isCrowdsaleAccount=function(r){return!!(r&&r._isCrowdsaleAccount)},e}(BG.Description);pi.CrowdsaleAccount=TA;function IG(t,e){var r=JSON.parse(t);e=(0,zp.getPassword)(e);var n=(0,CG.getAddress)((0,zp.searchPath)(r,"ethaddr")),i=(0,zp.looseArrayify)((0,zp.searchPath)(r,"encseed"));(!i||i.length%16!==0)&&RG.throwArgumentError("invalid encseed","json",t);for(var a=(0,_A.arrayify)((0,PG.pbkdf2)(e,e,2e3,32,"sha256")).slice(0,16),o=i.slice(0,16),c=i.slice(16),u=new SA.default.ModeOfOperation.cbc(a,o),s=SA.default.padding.pkcs7.strip((0,_A.arrayify)(u.decrypt(c))),f="",m=0;m{"use strict";Object.defineProperty(Ca,"__esModule",{value:!0});Ca.getJsonWalletAddress=Ca.isKeystoreWallet=Ca.isCrowdsaleWallet=void 0;var CA=Vt();function OA(t){var e=null;try{e=JSON.parse(t)}catch{return!1}return e.encseed&&e.ethaddr}Ca.isCrowdsaleWallet=OA;function PA(t){var e=null;try{e=JSON.parse(t)}catch{return!1}return!(!e.version||parseInt(e.version)!==e.version||parseInt(e.version)!==3)}Ca.isKeystoreWallet=PA;function NG(t){if(OA(t))try{return(0,CA.getAddress)(JSON.parse(t).ethaddr)}catch{return null}if(PA(t))try{return(0,CA.getAddress)(JSON.parse(t).address)}catch{return null}return null}Ca.getJsonWalletAddress=NG});var FA=P((Tb,BA)=>{"use strict";(function(t){function r(T){let A=new Uint32Array([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]),O=1779033703,B=3144134277,F=1013904242,I=2773480762,D=1359893119,z=2600822924,G=528734635,j=1541459225,Z=new Uint32Array(64);function X(p){let g=0,S=p.length;for(;S>=64;){let x=O,d=B,y=F,C=I,h=D,k=z,J=G,_=j,L,N,q,H,W;for(N=0;N<16;N++)q=g+N*4,Z[N]=(p[q]&255)<<24|(p[q+1]&255)<<16|(p[q+2]&255)<<8|p[q+3]&255;for(N=16;N<64;N++)L=Z[N-2],H=(L>>>17|L<<32-17)^(L>>>19|L<<32-19)^L>>>10,L=Z[N-15],W=(L>>>7|L<<32-7)^(L>>>18|L<<32-18)^L>>>3,Z[N]=(H+Z[N-7]|0)+(W+Z[N-16]|0)|0;for(N=0;N<64;N++)H=(((h>>>6|h<<32-6)^(h>>>11|h<<32-11)^(h>>>25|h<<32-25))+(h&k^~h&J)|0)+(_+(A[N]+Z[N]|0)|0)|0,W=((x>>>2|x<<32-2)^(x>>>13|x<<32-13)^(x>>>22|x<<32-22))+(x&d^x&y^d&y)|0,_=J,J=k,k=h,h=C+H|0,C=y,y=d,d=x,x=H+W|0;O=O+x|0,B=B+d|0,F=F+y|0,I=I+C|0,D=D+h|0,z=z+k|0,G=G+J|0,j=j+_|0,g+=64,S-=64}}X(T);let U,M=T.length%64,v=T.length/536870912|0,E=T.length<<3,b=M<56?56:120,l=T.slice(T.length-M,T.length);for(l.push(128),U=M+1;U>>24&255),l.push(v>>>16&255),l.push(v>>>8&255),l.push(v>>>0&255),l.push(E>>>24&255),l.push(E>>>16&255),l.push(E>>>8&255),l.push(E>>>0&255),X(l),[O>>>24&255,O>>>16&255,O>>>8&255,O>>>0&255,B>>>24&255,B>>>16&255,B>>>8&255,B>>>0&255,F>>>24&255,F>>>16&255,F>>>8&255,F>>>0&255,I>>>24&255,I>>>16&255,I>>>8&255,I>>>0&255,D>>>24&255,D>>>16&255,D>>>8&255,D>>>0&255,z>>>24&255,z>>>16&255,z>>>8&255,z>>>0&255,G>>>24&255,G>>>16&255,G>>>8&255,G>>>0&255,j>>>24&255,j>>>16&255,j>>>8&255,j>>>0&255]}function n(T,A,O){T=T.length<=64?T:r(T);let B=64+A.length+4,F=new Array(B),I=new Array(64),D,z=[];for(D=0;D<64;D++)F[D]=54;for(D=0;D=B-4;j--){if(F[j]++,F[j]<=255)return;F[j]=0}}for(;O>=32;)G(),z=z.concat(r(I.concat(r(F)))),O-=32;return O>0&&(G(),z=z.concat(r(I.concat(r(F))).slice(0,O))),z}function i(T,A,O,B,F){let I;for(u(T,(2*O-1)*16,F,0,16),I=0;I<2*O;I++)c(T,I*16,F,16),o(F,B),u(F,0,T,A+I*16,16);for(I=0;I>>32-A}function o(T,A){u(T,0,A,0,16);for(let O=8;O>0;O-=2)A[4]^=a(A[0]+A[12],7),A[8]^=a(A[4]+A[0],9),A[12]^=a(A[8]+A[4],13),A[0]^=a(A[12]+A[8],18),A[9]^=a(A[5]+A[1],7),A[13]^=a(A[9]+A[5],9),A[1]^=a(A[13]+A[9],13),A[5]^=a(A[1]+A[13],18),A[14]^=a(A[10]+A[6],7),A[2]^=a(A[14]+A[10],9),A[6]^=a(A[2]+A[14],13),A[10]^=a(A[6]+A[2],18),A[3]^=a(A[15]+A[11],7),A[7]^=a(A[3]+A[15],9),A[11]^=a(A[7]+A[3],13),A[15]^=a(A[11]+A[7],18),A[1]^=a(A[0]+A[3],7),A[2]^=a(A[1]+A[0],9),A[3]^=a(A[2]+A[1],13),A[0]^=a(A[3]+A[2],18),A[6]^=a(A[5]+A[4],7),A[7]^=a(A[6]+A[5],9),A[4]^=a(A[7]+A[6],13),A[5]^=a(A[4]+A[7],18),A[11]^=a(A[10]+A[9],7),A[8]^=a(A[11]+A[10],9),A[9]^=a(A[8]+A[11],13),A[10]^=a(A[9]+A[8],18),A[12]^=a(A[15]+A[14],7),A[13]^=a(A[12]+A[15],9),A[14]^=a(A[13]+A[12],13),A[15]^=a(A[14]+A[13],18);for(let O=0;O<16;++O)T[O]+=A[O]}function c(T,A,O,B){for(let F=0;F=256)return!1}return!0}function f(T,A){if(typeof T!="number"||T%1)throw new Error("invalid "+A);return T}function m(T,A,O,B,F,I,D){if(O=f(O,"N"),B=f(B,"r"),F=f(F,"p"),I=f(I,"dkLen"),O===0||(O&O-1)!==0)throw new Error("N must be power of 2");if(O>2147483647/128/B)throw new Error("N too large");if(B>2147483647/128/F)throw new Error("r too large");if(!s(T))throw new Error("password must be an array or buffer");if(T=Array.prototype.slice.call(T),!s(A))throw new Error("salt must be an array or buffer");A=Array.prototype.slice.call(A);let z=n(T,A,F*128*B),G=new Uint32Array(F*32*B);for(let h=0;hd&&(h=d);for(let J=0;Jd&&(h=d);for(let J=0;J>0&255),z.push(G[J]>>8&255),z.push(G[J]>>16&255),z.push(G[J]>>24&255);let k=n(T,z,I);return D&&D(null,1,k),k}D&&y(C)};if(!D)for(;;){let h=C();if(h!=null)return h}C()}let w={scrypt:function(T,A,O,B,F,I,D){return new Promise(function(z,G){let j=0;D&&D(0),m(T,A,O,B,F,I,function(Z,X,U){if(Z)G(Z);else if(U)D&&j!==1&&D(1),z(new Uint8Array(U));else if(D&&X!==j)return j=X,D(X)})})},syncScrypt:function(T,A,O,B,F,I){return new Uint8Array(m(T,A,O,B,F,I))}};typeof Tb<"u"?BA.exports=w:typeof define=="function"&&define.amd?define(w):t&&(t.scrypt&&(t._scrypt=t.scrypt),t.scrypt=w)})(Tb)});var HA=P(Kr=>{"use strict";var DG=Kr&&Kr.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),JG=Kr&&Kr.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},qG=Kr&&Kr.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]{"use strict";Object.defineProperty(Mr,"__esModule",{value:!0});Mr.decryptJsonWalletSync=Mr.decryptJsonWallet=Mr.getJsonWalletAddress=Mr.isKeystoreWallet=Mr.isCrowdsaleWallet=Mr.encryptKeystore=Mr.decryptKeystoreSync=Mr.decryptKeystore=Mr.decryptCrowdsale=void 0;var Pb=kA();Object.defineProperty(Mr,"decryptCrowdsale",{enumerable:!0,get:function(){return Pb.decrypt}});var qo=MA();Object.defineProperty(Mr,"getJsonWalletAddress",{enumerable:!0,get:function(){return qo.getJsonWalletAddress}});Object.defineProperty(Mr,"isCrowdsaleWallet",{enumerable:!0,get:function(){return qo.isCrowdsaleWallet}});Object.defineProperty(Mr,"isKeystoreWallet",{enumerable:!0,get:function(){return qo.isKeystoreWallet}});var wl=HA();Object.defineProperty(Mr,"decryptKeystore",{enumerable:!0,get:function(){return wl.decrypt}});Object.defineProperty(Mr,"decryptKeystoreSync",{enumerable:!0,get:function(){return wl.decryptSync}});Object.defineProperty(Mr,"encryptKeystore",{enumerable:!0,get:function(){return wl.encrypt}});function ZG(t,e,r){if((0,qo.isCrowdsaleWallet)(t)){r&&r(0);var n=(0,Pb.decrypt)(t,e);return r&&r(1),Promise.resolve(n)}return(0,qo.isKeystoreWallet)(t)?(0,wl.decrypt)(t,e,r):Promise.reject(new Error("invalid JSON wallet"))}Mr.decryptJsonWallet=ZG;function QG(t,e){if((0,qo.isCrowdsaleWallet)(t))return(0,Pb.decrypt)(t,e);if((0,qo.isKeystoreWallet)(t))return(0,wl.decryptSync)(t,e);throw new Error("invalid JSON wallet")}Mr.decryptJsonWalletSync=QG});var zA=P(Xp=>{"use strict";Object.defineProperty(Xp,"__esModule",{value:!0});Xp.version=void 0;Xp.version="wallet/5.7.0"});var Lb=P(Ct=>{"use strict";var WG=Ct&&Ct.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),GA=Ct&&Ct.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},XA=Ct&&Ct.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]{"use strict";Object.defineProperty(Kp,"__esModule",{value:!0});Kp.version=void 0;Kp.version="networks/5.7.1"});var Rb=P(Qp=>{"use strict";Object.defineProperty(Qp,"__esModule",{value:!0});Qp.getNetwork=void 0;var sX=re(),cX=QA(),WA=new sX.Logger(cX.version);function uX(t){return t&&typeof t.renetwork=="function"}function qi(t){var e=function(r,n){n==null&&(n={});var i=[];if(r.InfuraProvider&&n.infura!=="-")try{i.push(new r.InfuraProvider(t,n.infura))}catch{}if(r.EtherscanProvider&&n.etherscan!=="-")try{i.push(new r.EtherscanProvider(t,n.etherscan))}catch{}if(r.AlchemyProvider&&n.alchemy!=="-")try{i.push(new r.AlchemyProvider(t,n.alchemy))}catch{}if(r.PocketProvider&&n.pocket!=="-"){var a=["goerli","ropsten","rinkeby","sepolia"];try{var o=new r.PocketProvider(t,n.pocket);o.network&&a.indexOf(o.network.name)===-1&&i.push(o)}catch{}}if(r.CloudflareProvider&&n.cloudflare!=="-")try{i.push(new r.CloudflareProvider(t))}catch{}if(r.AnkrProvider&&n.ankr!=="-")try{var a=["ropsten"],o=new r.AnkrProvider(t,n.ankr);o.network&&a.indexOf(o.network.name)===-1&&i.push(o)}catch{}if(i.length===0)return null;if(r.FallbackProvider){var c=1;return n.quorum!=null?c=n.quorum:t==="homestead"&&(c=2),new r.FallbackProvider(i,c)}return i[0]};return e.renetwork=function(r){return qi(r)},e}function Zp(t,e){var r=function(n,i){return n.JsonRpcProvider?new n.JsonRpcProvider(t,e):null};return r.renetwork=function(n){return Zp(t,n)},r}var YA={chainId:1,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"homestead",_defaultProvider:qi("homestead")},$A={chainId:3,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"ropsten",_defaultProvider:qi("ropsten")},eE={chainId:63,name:"classicMordor",_defaultProvider:Zp("https://www.ethercluster.com/mordor","classicMordor")},Vp={unspecified:{chainId:0,name:"unspecified"},homestead:YA,mainnet:YA,morden:{chainId:2,name:"morden"},ropsten:$A,testnet:$A,rinkeby:{chainId:4,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"rinkeby",_defaultProvider:qi("rinkeby")},kovan:{chainId:42,name:"kovan",_defaultProvider:qi("kovan")},goerli:{chainId:5,ensAddress:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",name:"goerli",_defaultProvider:qi("goerli")},kintsugi:{chainId:1337702,name:"kintsugi"},sepolia:{chainId:11155111,name:"sepolia",_defaultProvider:qi("sepolia")},classic:{chainId:61,name:"classic",_defaultProvider:Zp("https://www.ethercluster.com/etc","classic")},classicMorden:{chainId:62,name:"classicMorden"},classicMordor:eE,classicTestnet:eE,classicKotti:{chainId:6,name:"classicKotti",_defaultProvider:Zp("https://www.ethercluster.com/kotti","classicKotti")},xdai:{chainId:100,name:"xdai"},matic:{chainId:137,name:"matic",_defaultProvider:qi("matic")},maticmum:{chainId:80001,name:"maticmum"},optimism:{chainId:10,name:"optimism",_defaultProvider:qi("optimism")},"optimism-kovan":{chainId:69,name:"optimism-kovan"},"optimism-goerli":{chainId:420,name:"optimism-goerli"},arbitrum:{chainId:42161,name:"arbitrum"},"arbitrum-rinkeby":{chainId:421611,name:"arbitrum-rinkeby"},"arbitrum-goerli":{chainId:421613,name:"arbitrum-goerli"},bnb:{chainId:56,name:"bnb"},bnbt:{chainId:97,name:"bnbt"}};function lX(t){if(t==null)return null;if(typeof t=="number"){for(var e in Vp){var r=Vp[e];if(r.chainId===t)return{name:r.name,chainId:r.chainId,ensAddress:r.ensAddress||null,_defaultProvider:r._defaultProvider||null}}return{chainId:t,name:"unknown"}}if(typeof t=="string"){var n=Vp[t];return n==null?null:{name:n.name,chainId:n.chainId,ensAddress:n.ensAddress,_defaultProvider:n._defaultProvider||null}}var i=Vp[t.name];if(!i)return typeof t.chainId!="number"&&WA.throwArgumentError("invalid network chainId","network",t),t;t.chainId!==0&&t.chainId!==i.chainId&&WA.throwArgumentError("network chainId mismatch","network",t);var a=t._defaultProvider||null;return a==null&&i._defaultProvider&&(uX(i._defaultProvider)?a=i._defaultProvider.renetwork(t):a=i._defaultProvider),{name:t.name,chainId:i.chainId,ensAddress:t.ensAddress||i.ensAddress||null,_defaultProvider:a}}Qp.getNetwork=lX});var Ib=P(Wp=>{"use strict";Object.defineProperty(Wp,"__esModule",{value:!0});Wp.version=void 0;Wp.version="web/5.7.1"});var iE=P(vi=>{"use strict";var fX=vi&&vi.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},dX=vi&&vi.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]{"use strict";var AX=on&&on.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},EX=on&&on.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]0&&n%1===0,"invalid connection throttle limit","connection.throttleLimit",n);var i=typeof t=="object"?t.throttleCallback:null,a=typeof t=="object"&&typeof t.throttleSlotInterval=="number"?t.throttleSlotInterval:100;En.assertArgument(a>0&&a%1===0,"invalid connection throttle slot interval","connection.throttleSlotInterval",a);var o=typeof t=="object"?!!t.errorPassThrough:!1,c={},u=null,s={method:"GET"},f=!1,m=2*60*1e3;if(typeof t=="string")u=t;else if(typeof t=="object"){if((t==null||t.url==null)&&En.throwArgumentError("missing URL","connection.url",t),u=t.url,typeof t.timeout=="number"&&t.timeout>0&&(m=t.timeout),t.headers)for(var w in t.headers)c[w.toLowerCase()]={key:w,value:String(t.headers[w])},["if-none-match","if-modified-since"].indexOf(w.toLowerCase())>=0&&(f=!0);if(s.allowGzip=!!t.allowGzip,t.user!=null&&t.password!=null){u.substring(0,6)!=="https:"&&t.allowInsecureAuthentication!==!0&&En.throwError("basic authentication requires a secure https url",ji.Logger.errors.INVALID_ARGUMENT,{argument:"url",url:u,user:t.user,password:"[REDACTED]"});var T=t.user+":"+t.password;c.authorization={key:"Authorization",value:"Basic "+(0,aE.encode)((0,Sl.toUtf8Bytes)(T))}}t.skipFetchSetup!=null&&(s.skipFetchSetup=!!t.skipFetchSetup),t.fetchOptions!=null&&(s.fetchOptions=(0,Yp.shallowCopy)(t.fetchOptions))}var A=new RegExp("^data:([^;:]*)?(;base64)?,(.*)$","i"),O=u?u.match(A):null;if(O)try{var B={statusCode:200,statusMessage:"OK",headers:{"content-type":O[1]||"text/plain"},body:O[2]?(0,aE.decode)(O[3]):TX(O[3])},F=B.body;return r&&(F=r(B.body,B)),Promise.resolve(F)}catch(G){En.throwError("processing response error",ji.Logger.errors.SERVER_ERROR,{body:Pa(O[1],O[2]),error:G,requestBody:null,requestMethod:"GET",url:u})}e&&(s.method="POST",s.body=e,c["content-type"]==null&&(c["content-type"]={key:"Content-Type",value:"application/octet-stream"}),c["content-length"]==null&&(c["content-length"]={key:"Content-Length",value:String(e.length)}));var I={};Object.keys(c).forEach(function(G){var j=c[G];I[j.key]=j.value}),s.headers=I;var D=function(){var G=null,j=new Promise(function(X,U){m&&(G=setTimeout(function(){G!=null&&(G=null,U(En.makeError("timeout",ji.Logger.errors.TIMEOUT,{requestBody:Pa(s.body,I["content-type"]),requestMethod:s.method,timeout:m,url:u})))},m))}),Z=function(){G!=null&&(clearTimeout(G),G=null)};return{promise:j,cancel:Z}}(),z=function(){return AX(this,void 0,void 0,function(){var G,j,Z,l,X,U,M,v,E,b,l,p;return EX(this,function(g){switch(g.label){case 0:G=0,g.label=1;case 1:if(!(G=300)&&(D.cancel(),En.throwError("bad response",ji.Logger.errors.SERVER_ERROR,{status:j.statusCode,headers:j.headers,body:Pa(v,j.headers?j.headers["content-type"]:null),requestBody:Pa(s.body,I["content-type"]),requestMethod:s.method,url:u})),!r)return[3,18];g.label=11;case 11:return g.trys.push([11,13,,18]),[4,r(v,j)];case 12:return E=g.sent(),D.cancel(),[2,E];case 13:return b=g.sent(),b.throttleRetry&&Gc){o()&&n(new Error("retry limit reached"));return}var m=e.interval*parseInt(String(Math.random()*Math.pow(2,u)));me.ceiling&&(m=e.ceiling),setTimeout(s,m)}return null},function(f){o()&&n(f)})}s()})}on.poll=CX});var dE=P((Yre,fE)=>{"use strict";var e0="qpzry9x8gf2tvdw0s3jn54khce6mua7l",Nb={};for(_l=0;_l>25;return(t&33554431)<<5^-(e>>0&1)&996825010^-(e>>1&1)&642813549^-(e>>2&1)&513874426^-(e>>3&1)&1027748829^-(e>>4&1)&705979059}function uE(t){for(var e=1,r=0;r126)return"Invalid prefix ("+t+")";e=kc(e)^n>>5}for(e=kc(e),r=0;rr)throw new TypeError("Exceeds length limit");t=t.toLowerCase();var n=uE(t);if(typeof n=="string")throw new Error(n);for(var i=t+"1",a=0;a>5!==0)throw new Error("Non 5-bit word");n=kc(n)^o,i+=e0.charAt(o)}for(a=0;a<6;++a)n=kc(n);for(n^=1,a=0;a<6;++a){var c=n>>(5-a)*5&31;i+=e0.charAt(c)}return i}function lE(t,e){if(e=e||90,t.length<8)return t+" too short";if(t.length>e)return"Exceeds length limit";var r=t.toLowerCase(),n=t.toUpperCase();if(t!==r&&t!==n)return"Mixed-case string "+t;t=r;var i=t.lastIndexOf("1");if(i===-1)return"No separator character for "+t;if(i===0)return"Missing prefix for "+t;var a=t.slice(0,i),o=t.slice(i+1);if(o.length<6)return"Data too short";var c=uE(a);if(typeof c=="string")return c;for(var u=[],s=0;s=o.length)&&u.push(m)}return c!==1?"Invalid checksum for "+t:{prefix:a,words:u}}function PX(){var t=lE.apply(null,arguments);if(typeof t=="object")return t}function MX(t){var e=lE.apply(null,arguments);if(typeof e=="object")return e;throw new Error(e)}function r0(t,e,r,n){for(var i=0,a=0,o=(1<=r;)a-=r,c.push(i>>a&o);if(n)a>0&&c.push(i<=e)return"Excess padding";if(i<{"use strict";Object.defineProperty(t0,"__esModule",{value:!0});t0.version=void 0;t0.version="providers/5.7.2"});var Ma=P(bi=>{"use strict";Object.defineProperty(bi,"__esModule",{value:!0});bi.showThrottleMessage=bi.isCommunityResource=bi.isCommunityResourcable=bi.Formatter=void 0;var Db=Vt(),Ui=Tr(),mi=De(),IX=Ao(),NX=Ve(),pE=Ji(),DX=re(),JX=et(),Tl=new DX.Logger(JX.version),qX=function(){function t(){this.formats=this.getDefaultFormats()}return t.prototype.getDefaultFormats=function(){var e=this,r={},n=this.address.bind(this),i=this.bigNumber.bind(this),a=this.blockTag.bind(this),o=this.data.bind(this),c=this.hash.bind(this),u=this.hex.bind(this),s=this.number.bind(this),f=this.type.bind(this),m=function(w){return e.data(w,!0)};return r.transaction={hash:c,type:f,accessList:t.allowNull(this.accessList.bind(this),null),blockHash:t.allowNull(c,null),blockNumber:t.allowNull(s,null),transactionIndex:t.allowNull(s,null),confirmations:t.allowNull(s,null),from:n,gasPrice:t.allowNull(i),maxPriorityFeePerGas:t.allowNull(i),maxFeePerGas:t.allowNull(i),gasLimit:i,to:t.allowNull(n,null),value:i,nonce:s,data:o,r:t.allowNull(this.uint256),s:t.allowNull(this.uint256),v:t.allowNull(s),creates:t.allowNull(n,null),raw:t.allowNull(o)},r.transactionRequest={from:t.allowNull(n),nonce:t.allowNull(s),gasLimit:t.allowNull(i),gasPrice:t.allowNull(i),maxPriorityFeePerGas:t.allowNull(i),maxFeePerGas:t.allowNull(i),to:t.allowNull(n),value:t.allowNull(i),data:t.allowNull(m),type:t.allowNull(s),accessList:t.allowNull(this.accessList.bind(this),null)},r.receiptLog={transactionIndex:s,blockNumber:s,transactionHash:c,address:n,topics:t.arrayOf(c),data:o,logIndex:s,blockHash:c},r.receipt={to:t.allowNull(this.address,null),from:t.allowNull(this.address,null),contractAddress:t.allowNull(n,null),transactionIndex:s,root:t.allowNull(u),gasUsed:i,logsBloom:t.allowNull(o),blockHash:c,transactionHash:c,logs:t.arrayOf(this.receiptLog.bind(this)),blockNumber:s,confirmations:t.allowNull(s,null),cumulativeGasUsed:i,effectiveGasPrice:t.allowNull(i),status:t.allowNull(s),type:f},r.block={hash:t.allowNull(c),parentHash:c,number:s,timestamp:s,nonce:t.allowNull(u),difficulty:this.difficulty.bind(this),gasLimit:i,gasUsed:i,miner:t.allowNull(n),extraData:o,transactions:t.allowNull(t.arrayOf(c)),baseFeePerGas:t.allowNull(i)},r.blockWithTransactions=(0,NX.shallowCopy)(r.block),r.blockWithTransactions.transactions=t.allowNull(t.arrayOf(this.transactionResponse.bind(this))),r.filter={fromBlock:t.allowNull(a,void 0),toBlock:t.allowNull(a,void 0),blockHash:t.allowNull(c,void 0),address:t.allowNull(n,void 0),topics:t.allowNull(this.topics.bind(this),void 0)},r.filterLog={blockNumber:t.allowNull(s),blockHash:t.allowNull(c),transactionIndex:s,removed:t.allowNull(this.boolean.bind(this)),address:n,data:t.allowFalsish(o,"0x"),topics:t.arrayOf(c),transactionHash:c,logIndex:s},r},t.prototype.accessList=function(e){return(0,pE.accessListify)(e||[])},t.prototype.number=function(e){return e==="0x"?0:Ui.BigNumber.from(e).toNumber()},t.prototype.type=function(e){return e==="0x"||e==null?0:Ui.BigNumber.from(e).toNumber()},t.prototype.bigNumber=function(e){return Ui.BigNumber.from(e)},t.prototype.boolean=function(e){if(typeof e=="boolean")return e;if(typeof e=="string"){if(e=e.toLowerCase(),e==="true")return!0;if(e==="false")return!1}throw new Error("invalid boolean - "+e)},t.prototype.hex=function(e,r){return typeof e=="string"&&(!r&&e.substring(0,2)!=="0x"&&(e="0x"+e),(0,mi.isHexString)(e))?e.toLowerCase():Tl.throwArgumentError("invalid hash","value",e)},t.prototype.data=function(e,r){var n=this.hex(e,r);if(n.length%2!==0)throw new Error("invalid data; odd-length - "+e);return n},t.prototype.address=function(e){return(0,Db.getAddress)(e)},t.prototype.callAddress=function(e){if(!(0,mi.isHexString)(e,32))return null;var r=(0,Db.getAddress)((0,mi.hexDataSlice)(e,12));return r===IX.AddressZero?null:r},t.prototype.contractAddress=function(e){return(0,Db.getContractAddress)(e)},t.prototype.blockTag=function(e){if(e==null)return"latest";if(e==="earliest")return"0x0";switch(e){case"earliest":return"0x0";case"latest":case"pending":case"safe":case"finalized":return e}if(typeof e=="number"||(0,mi.isHexString)(e))return(0,mi.hexValue)(e);throw new Error("invalid blockTag")},t.prototype.hash=function(e,r){var n=this.hex(e,r);return(0,mi.hexDataLength)(n)!==32?Tl.throwArgumentError("invalid hash","value",e):n},t.prototype.difficulty=function(e){if(e==null)return null;var r=Ui.BigNumber.from(e);try{return r.toNumber()}catch{}return null},t.prototype.uint256=function(e){if(!(0,mi.isHexString)(e))throw new Error("invalid uint256");return(0,mi.hexZeroPad)(e,32)},t.prototype._block=function(e,r){e.author!=null&&e.miner==null&&(e.miner=e.author);var n=e._difficulty!=null?e._difficulty:e.difficulty,i=t.check(r,e);return i._difficulty=n==null?null:Ui.BigNumber.from(n),i},t.prototype.block=function(e){return this._block(e,this.formats.block)},t.prototype.blockWithTransactions=function(e){return this._block(e,this.formats.blockWithTransactions)},t.prototype.transactionRequest=function(e){return t.check(this.formats.transactionRequest,e)},t.prototype.transactionResponse=function(e){e.gas!=null&&e.gasLimit==null&&(e.gasLimit=e.gas),e.to&&Ui.BigNumber.from(e.to).isZero()&&(e.to="0x0000000000000000000000000000000000000000"),e.input!=null&&e.data==null&&(e.data=e.input),e.to==null&&e.creates==null&&(e.creates=this.contractAddress(e)),(e.type===1||e.type===2)&&e.accessList==null&&(e.accessList=[]);var r=t.check(this.formats.transaction,e);if(e.chainId!=null){var n=e.chainId;(0,mi.isHexString)(n)&&(n=Ui.BigNumber.from(n).toNumber()),r.chainId=n}else{var n=e.networkId;n==null&&r.v==null&&(n=e.chainId),(0,mi.isHexString)(n)&&(n=Ui.BigNumber.from(n).toNumber()),typeof n!="number"&&r.v!=null&&(n=(r.v-35)/2,n<0&&(n=0),n=parseInt(n)),typeof n!="number"&&(n=0),r.chainId=n}return r.blockHash&&r.blockHash.replace(/0/g,"")==="x"&&(r.blockHash=null),r},t.prototype.transaction=function(e){return(0,pE.parse)(e)},t.prototype.receiptLog=function(e){return t.check(this.formats.receiptLog,e)},t.prototype.receipt=function(e){var r=t.check(this.formats.receipt,e);if(r.root!=null)if(r.root.length<=4){var n=Ui.BigNumber.from(r.root).toNumber();n===0||n===1?(r.status!=null&&r.status!==n&&Tl.throwArgumentError("alt-root-status/status mismatch","value",{root:r.root,status:r.status}),r.status=n,delete r.root):Tl.throwArgumentError("invalid alt-root-status","value.root",r.root)}else r.root.length!==66&&Tl.throwArgumentError("invalid root hash","value.root",r.root);return r.status!=null&&(r.byzantium=!0),r},t.prototype.topics=function(e){var r=this;return Array.isArray(e)?e.map(function(n){return r.topics(n)}):e!=null?this.hash(e,!0):null},t.prototype.filter=function(e){return t.check(this.formats.filter,e)},t.prototype.filterLog=function(e){return t.check(this.formats.filterLog,e)},t.check=function(e,r){var n={};for(var i in e)try{var a=e[i](r[i]);a!==void 0&&(n[i]=a)}catch(o){throw o.checkKey=i,o.checkValue=r[i],o}return n},t.allowNull=function(e,r){return function(n){return n==null?r:e(n)}},t.allowFalsish=function(e,r){return function(n){return n?e(n):r}},t.arrayOf=function(e){return function(r){if(!Array.isArray(r))throw new Error("not an array");var n=[];return r.forEach(function(i){n.push(e(i))}),n}},t}();bi.Formatter=qX;function vE(t){return t&&typeof t.isCommunityResource=="function"}bi.isCommunityResourcable=vE;function jX(t){return vE(t)&&t.isCommunityResource()}bi.isCommunityResource=jX;var hE=!1;function UX(){hE||(hE=!0,console.log("========= NOTICE ========="),console.log("Request-Rate Exceeded (this message will not be repeated)"),console.log(""),console.log("The default API keys for each service are provided as a highly-throttled,"),console.log("community resource for low-traffic projects and early prototyping."),console.log(""),console.log("While your application will continue to function, we highly recommended"),console.log("signing up for your own API keys to improve performance, increase your"),console.log("request rate/limit and enable other perks, such as metrics and advanced APIs."),console.log(""),console.log("For more details: https://docs.ethers.io/api-keys/"),console.log("=========================="))}bi.showThrottleMessage=UX});var Pl=P(ht=>{"use strict";var HX=ht&&ht.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),Le=ht&&ht.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},Re=ht&&ht.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]0&&t[t.length-1]==null;)t.pop();return t.map(function(e){if(Array.isArray(e)){var r={};e.forEach(function(i){r[xE(i)]=!0});var n=Object.keys(r);return n.sort(),n.join("|")}else return xE(e)}).join("&")}function QX(t){return t===""?[]:t.split(/&/g).map(function(e){if(e==="")return[];var r=e.split("|").map(function(n){return n==="null"?null:n});return r.length===1?r[0]:r})}function Cc(t){if(typeof t=="string"){if(t=t.toLowerCase(),(0,Fe.hexDataLength)(t)===32)return"tx:"+t;if(t.indexOf(":")===-1)return t}else{if(Array.isArray(t))return"filter:*:"+yE(t);if(_E.ForkEvent.isForkEvent(t))throw Je.warn("not implemented"),new Error("not implemented");if(t&&typeof t=="object")return"filter:"+(t.address||"*")+":"+yE(t.topics||[])}throw new Error("invalid event - "+t)}function kl(){return new Date().getTime()}function wE(t){return new Promise(function(e){setTimeout(e,t)})}var WX=["block","network","pending","poll"],TE=function(){function t(e,r,n){(0,Er.defineReadOnly)(this,"tag",e),(0,Er.defineReadOnly)(this,"listener",r),(0,Er.defineReadOnly)(this,"once",n),this._lastBlockNumber=-2,this._inflight=!1}return Object.defineProperty(t.prototype,"event",{get:function(){switch(this.type){case"tx":return this.hash;case"filter":return this.filter}return this.tag},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"type",{get:function(){return this.tag.split(":")[0]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hash",{get:function(){var e=this.tag.split(":");return e[0]!=="tx"?null:e[1]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"filter",{get:function(){var e=this.tag.split(":");if(e[0]!=="filter")return null;var r=e[1],n=QX(e[2]),i={};return n.length>0&&(i.topics=n),r&&r!=="*"&&(i.address=r),i},enumerable:!1,configurable:!0}),t.prototype.pollable=function(){return this.tag.indexOf(":")>=0||WX.indexOf(this.tag)>=0},t}();ht.Event=TE;var YX={0:{symbol:"btc",p2pkh:0,p2sh:5,prefix:"bc"},2:{symbol:"ltc",p2pkh:48,p2sh:50,prefix:"ltc"},3:{symbol:"doge",p2pkh:30,p2sh:22},60:{symbol:"eth",ilk:"eth"},61:{symbol:"etc",ilk:"eth"},700:{symbol:"xdai",ilk:"eth"}};function Jb(t){return(0,Fe.hexZeroPad)(pt.BigNumber.from(t).toHexString(),32)}function AE(t){return Ub.Base58.encode((0,Fe.concat)([t,(0,Fe.hexDataSlice)((0,mE.sha256)((0,mE.sha256)(t)),0,4)]))}var kE=new RegExp("^(ipfs)://(.*)$","i"),EE=[new RegExp("^(https)://(.*)$","i"),new RegExp("^(data):(.*)$","i"),kE,new RegExp("^eip155:[0-9]+/(erc[0-9]+):(.*)$","i")];function n0(t,e){try{return(0,Hb.toUtf8String)(Ol(t,e))}catch{}return null}function Ol(t,e){if(t==="0x")return null;var r=pt.BigNumber.from((0,Fe.hexDataSlice)(t,e,e+32)).toNumber(),n=pt.BigNumber.from((0,Fe.hexDataSlice)(t,r,r+32)).toNumber();return(0,Fe.hexDataSlice)(t,r+32,r+32+n)}function qb(t){return t.match(/^ipfs:\/\/ipfs\//i)?t=t.substring(12):t.match(/^ipfs:\/\//i)?t=t.substring(7):Je.throwArgumentError("unsupported IPFS format","link",t),"https://gateway.ipfs.io/ipfs/"+t}function SE(t){var e=(0,Fe.arrayify)(t);if(e.length>32)throw new Error("internal; should not happen");var r=new Uint8Array(32);return r.set(e,32-e.length),r}function $X(t){if(t.length%32===0)return t;var e=new Uint8Array(Math.ceil(t.length/32)*32);return e.set(t),e}function CE(t){for(var e=[],r=0,n=0;n=1&&o<=75)return AE((0,Fe.concat)([[n.p2pkh],"0x"+a[2]]))}}if(n.p2sh!=null){var c=r.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);if(c){var u=parseInt(c[1],16);if(c[2].length===u*2&&u>=1&&u<=75)return AE((0,Fe.concat)([[n.p2sh],"0x"+c[2]]))}}if(n.prefix!=null){var s=i[1],f=i[0];if(f===0?s!==20&&s!==32&&(f=-1):f=-1,f>=0&&i.length===2+s&&s>=1&&s<=75){var m=bE.default.toWords(i.slice(2));return m.unshift(f),bE.default.encode(n.prefix,m)}}return null},t.prototype.getAddress=function(e){return Le(this,void 0,void 0,function(){var r,n,i,a;return Re(this,function(o){switch(o.label){case 0:if(e==null&&(e=60),e!==60)return[3,4];o.label=1;case 1:return o.trys.push([1,3,,4]),[4,this._fetch("0x3b3b57de")];case 2:return r=o.sent(),r==="0x"||r===XX.HashZero?[2,null]:[2,this.provider.formatter.callAddress(r)];case 3:if(n=o.sent(),n.code===qe.Logger.errors.CALL_EXCEPTION)return[2,null];throw n;case 4:return[4,this._fetchBytes("0xf1cb7e06",Jb(e))];case 5:return i=o.sent(),i==null||i==="0x"?[2,null]:(a=this._getAddress(e,i),a==null&&Je.throwError("invalid or unsupported coin data",qe.Logger.errors.UNSUPPORTED_OPERATION,{operation:"getAddress("+e+")",coinType:e,data:i}),[2,a])}})})},t.prototype.getAvatar=function(){return Le(this,void 0,void 0,function(){var e,r,n,i,a,o,c,u,s,f,m,w,T,A,O,B,F,I,D,z,G,j,Z,X,U;return Re(this,function(M){switch(M.label){case 0:e=[{type:"name",content:this.name}],M.label=1;case 1:return M.trys.push([1,19,,20]),[4,this.getText("avatar")];case 2:if(r=M.sent(),r==null)return[2,null];n=0,M.label=3;case 3:if(!(n=0?null:JSON.stringify({data:o,sender:a}),[4,(0,Oc.fetchJson)({url:f,errorPassThrough:!0},m,function(O,B){return O.status=B.statusCode,O})]):[3,4];case 2:if(w=A.sent(),w.data)return[2,w.data];if(T=w.message||"unknown error",w.status>=400&&w.status<500)return[2,Je.throwError("response not found during CCIP fetch: "+T,qe.Logger.errors.SERVER_ERROR,{url:s,errorMessage:T})];c.push(T),A.label=3;case 3:return u++,[3,1];case 4:return[2,Je.throwError("error encountered during CCIP fetch: "+c.map(function(O){return JSON.stringify(O)}).join(", "),qe.Logger.errors.SERVER_ERROR,{urls:i,errorMessages:c})]}})})},e.prototype._getInternalBlockNumber=function(r){return Le(this,void 0,void 0,function(){var n,i,a,o,c,u=this;return Re(this,function(s){switch(s.label){case 0:return[4,this._ready()];case 1:if(s.sent(),!(r>0))return[3,7];s.label=2;case 2:if(!this._internalBlockNumber)return[3,7];n=this._internalBlockNumber,s.label=3;case 3:return s.trys.push([3,5,,6]),[4,n];case 4:return i=s.sent(),kl()-i.respTime<=r?[2,i.blockNumber]:[3,7];case 5:return a=s.sent(),this._internalBlockNumber===n?[3,7]:[3,6];case 6:return[3,2];case 7:return o=kl(),c=(0,Er.resolveProperties)({blockNumber:this.perform("getBlockNumber",{}),networkError:this.getNetwork().then(function(f){return null},function(f){return f})}).then(function(f){var m=f.blockNumber,w=f.networkError;if(w)throw u._internalBlockNumber===c&&(u._internalBlockNumber=null),w;var T=kl();return m=pt.BigNumber.from(m).toNumber(),m1e3)Je.warn("network block skew detected; skipping block events (emitted="+this._emitted.block+" blockNumber"+i+")"),this.emit("error",Je.makeError("network block skew detected",qe.Logger.errors.NETWORK_ERROR,{blockNumber:i,event:"blockSkew",previousBlockNumber:this._emitted.block})),this.emit("block",i);else for(o=this._emitted.block+1;o<=i;o++)this.emit("block",o);return this._emitted.block!==i&&(this._emitted.block=i,Object.keys(this._emitted).forEach(function(s){if(s!=="block"){var f=c._emitted[s];f!=="pending"&&i-f>12&&delete c._emitted[s]}})),this._lastBlockNumber===-2&&(this._lastBlockNumber=i-1),this._events.forEach(function(s){switch(s.type){case"tx":{var f=s.hash,m=c.getTransactionReceipt(f).then(function(A){return!A||A.blockNumber==null||(c._emitted["t:"+f]=A.blockNumber,c.emit(f,A)),null}).catch(function(A){c.emit("error",A)});n.push(m);break}case"filter":{if(!s._inflight){s._inflight=!0,s._lastBlockNumber===-2&&(s._lastBlockNumber=i-1);var w=s.filter;w.fromBlock=s._lastBlockNumber+1,w.toBlock=i;var T=w.toBlock-c._maxFilterBlockRange;T>w.fromBlock&&(w.fromBlock=T),w.fromBlock<0&&(w.fromBlock=0);var m=c.getLogs(w).then(function(O){s._inflight=!1,O.length!==0&&O.forEach(function(B){B.blockNumber>s._lastBlockNumber&&(s._lastBlockNumber=B.blockNumber),c._emitted["b:"+B.blockHash]=B.blockNumber,c._emitted["t:"+B.transactionHash]=B.blockNumber,c.emit(w,B)})}).catch(function(O){c.emit("error",O),s._inflight=!1});n.push(m)}break}}}),this._lastBlockNumber=i,Promise.all(n).then(function(){c.emit("didPoll",r)}).catch(function(s){c.emit("error",s)}),[2]}})})},e.prototype.resetEventsBlock=function(r){this._lastBlockNumber=r-1,this.polling&&this.poll()},Object.defineProperty(e.prototype,"network",{get:function(){return this._network},enumerable:!1,configurable:!0}),e.prototype.detectNetwork=function(){return Le(this,void 0,void 0,function(){return Re(this,function(r){return[2,Je.throwError("provider does not support network detection",qe.Logger.errors.UNSUPPORTED_OPERATION,{operation:"provider.detectNetwork"})]})})},e.prototype.getNetwork=function(){return Le(this,void 0,void 0,function(){var r,n,i;return Re(this,function(a){switch(a.label){case 0:return[4,this._ready()];case 1:return r=a.sent(),[4,this.detectNetwork()];case 2:return n=a.sent(),r.chainId===n.chainId?[3,5]:this.anyNetwork?(this._network=n,this._lastBlockNumber=-2,this._fastBlockNumber=null,this._fastBlockNumberPromise=null,this._fastQueryDate=0,this._emitted.block=-2,this._maxInternalBlockNumber=-1024,this._internalBlockNumber=null,this.emit("network",n,r),[4,wE(0)]):[3,4];case 3:return a.sent(),[2,this._network];case 4:throw i=Je.makeError("underlying network changed",qe.Logger.errors.NETWORK_ERROR,{event:"changed",network:r,detectedNetwork:n}),this.emit("error",i),i;case 5:return[2,r]}})})},Object.defineProperty(e.prototype,"blockNumber",{get:function(){var r=this;return this._getInternalBlockNumber(100+this.pollingInterval/2).then(function(n){r._setFastBlockNumber(n)},function(n){}),this._fastBlockNumber!=null?this._fastBlockNumber:-1},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"polling",{get:function(){return this._poller!=null},set:function(r){var n=this;r&&!this._poller?(this._poller=setInterval(function(){n.poll()},this.pollingInterval),this._bootstrapPoll||(this._bootstrapPoll=setTimeout(function(){n.poll(),n._bootstrapPoll=setTimeout(function(){n._poller||n.poll(),n._bootstrapPoll=null},n.pollingInterval)},0))):!r&&this._poller&&(clearInterval(this._poller),this._poller=null)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pollingInterval",{get:function(){return this._pollingInterval},set:function(r){var n=this;if(typeof r!="number"||r<=0||parseInt(String(r))!=r)throw new Error("invalid polling interval");this._pollingInterval=r,this._poller&&(clearInterval(this._poller),this._poller=setInterval(function(){n.poll()},this._pollingInterval))},enumerable:!1,configurable:!0}),e.prototype._getFastBlockNumber=function(){var r=this,n=kl();return n-this._fastQueryDate>2*this._pollingInterval&&(this._fastQueryDate=n,this._fastBlockNumberPromise=this.getBlockNumber().then(function(i){return(r._fastBlockNumber==null||i>r._fastBlockNumber)&&(r._fastBlockNumber=i),r._fastBlockNumber})),this._fastBlockNumberPromise},e.prototype._setFastBlockNumber=function(r){this._fastBlockNumber!=null&&rthis._fastBlockNumber)&&(this._fastBlockNumber=r,this._fastBlockNumberPromise=Promise.resolve(r)))},e.prototype.waitForTransaction=function(r,n,i){return Le(this,void 0,void 0,function(){return Re(this,function(a){return[2,this._waitForTransaction(r,n??1,i||0,null)]})})},e.prototype._waitForTransaction=function(r,n,i,a){return Le(this,void 0,void 0,function(){var o,c=this;return Re(this,function(u){switch(u.label){case 0:return[4,this.getTransactionReceipt(r)];case 1:return o=u.sent(),(o?o.confirmations:0)>=n?[2,o]:[2,new Promise(function(s,f){var m=[],w=!1,T=function(){return w?!0:(w=!0,m.forEach(function(D){D()}),!1)},A=function(D){D.confirmations0){var I=setTimeout(function(){T()||f(Je.makeError("timeout exceeded",qe.Logger.errors.TIMEOUT,{timeout:i}))},i);I.unref&&I.unref(),m.push(function(){clearTimeout(I)})}})]}})})},e.prototype.getBlockNumber=function(){return Le(this,void 0,void 0,function(){return Re(this,function(r){return[2,this._getInternalBlockNumber(0)]})})},e.prototype.getGasPrice=function(){return Le(this,void 0,void 0,function(){var r;return Re(this,function(n){switch(n.label){case 0:return[4,this.getNetwork()];case 1:return n.sent(),[4,this.perform("getGasPrice",{})];case 2:r=n.sent();try{return[2,pt.BigNumber.from(r)]}catch(i){return[2,Je.throwError("bad result from backend",qe.Logger.errors.SERVER_ERROR,{method:"getGasPrice",result:r,error:i})]}return[2]}})})},e.prototype.getBalance=function(r,n){return Le(this,void 0,void 0,function(){var i,a;return Re(this,function(o){switch(o.label){case 0:return[4,this.getNetwork()];case 1:return o.sent(),[4,(0,Er.resolveProperties)({address:this._getAddress(r),blockTag:this._getBlockTag(n)})];case 2:return i=o.sent(),[4,this.perform("getBalance",i)];case 3:a=o.sent();try{return[2,pt.BigNumber.from(a)]}catch(c){return[2,Je.throwError("bad result from backend",qe.Logger.errors.SERVER_ERROR,{method:"getBalance",params:i,result:a,error:c})]}return[2]}})})},e.prototype.getTransactionCount=function(r,n){return Le(this,void 0,void 0,function(){var i,a;return Re(this,function(o){switch(o.label){case 0:return[4,this.getNetwork()];case 1:return o.sent(),[4,(0,Er.resolveProperties)({address:this._getAddress(r),blockTag:this._getBlockTag(n)})];case 2:return i=o.sent(),[4,this.perform("getTransactionCount",i)];case 3:a=o.sent();try{return[2,pt.BigNumber.from(a).toNumber()]}catch(c){return[2,Je.throwError("bad result from backend",qe.Logger.errors.SERVER_ERROR,{method:"getTransactionCount",params:i,result:a,error:c})]}return[2]}})})},e.prototype.getCode=function(r,n){return Le(this,void 0,void 0,function(){var i,a;return Re(this,function(o){switch(o.label){case 0:return[4,this.getNetwork()];case 1:return o.sent(),[4,(0,Er.resolveProperties)({address:this._getAddress(r),blockTag:this._getBlockTag(n)})];case 2:return i=o.sent(),[4,this.perform("getCode",i)];case 3:a=o.sent();try{return[2,(0,Fe.hexlify)(a)]}catch(c){return[2,Je.throwError("bad result from backend",qe.Logger.errors.SERVER_ERROR,{method:"getCode",params:i,result:a,error:c})]}return[2]}})})},e.prototype.getStorageAt=function(r,n,i){return Le(this,void 0,void 0,function(){var a,o;return Re(this,function(c){switch(c.label){case 0:return[4,this.getNetwork()];case 1:return c.sent(),[4,(0,Er.resolveProperties)({address:this._getAddress(r),blockTag:this._getBlockTag(i),position:Promise.resolve(n).then(function(u){return(0,Fe.hexValue)(u)})})];case 2:return a=c.sent(),[4,this.perform("getStorageAt",a)];case 3:o=c.sent();try{return[2,(0,Fe.hexlify)(o)]}catch(u){return[2,Je.throwError("bad result from backend",qe.Logger.errors.SERVER_ERROR,{method:"getStorageAt",params:a,result:o,error:u})]}return[2]}})})},e.prototype._wrapTransaction=function(r,n,i){var a=this;if(n!=null&&(0,Fe.hexDataLength)(n)!==32)throw new Error("invalid response - sendTransaction");var o=r;return n!=null&&r.hash!==n&&Je.throwError("Transaction hash mismatch from Provider.sendTransaction.",qe.Logger.errors.UNKNOWN_ERROR,{expectedHash:r.hash,returnedHash:n}),o.wait=function(c,u){return Le(a,void 0,void 0,function(){var s,f;return Re(this,function(m){switch(m.label){case 0:return c==null&&(c=1),u==null&&(u=0),s=void 0,c!==0&&i!=null&&(s={data:r.data,from:r.from,nonce:r.nonce,to:r.to,value:r.value,startBlock:i}),[4,this._waitForTransaction(r.hash,c,u,s)];case 1:return f=m.sent(),f==null&&c===0?[2,null]:(this._emitted["t:"+r.hash]=f.blockNumber,f.status===0&&Je.throwError("transaction failed",qe.Logger.errors.CALL_EXCEPTION,{transactionHash:r.hash,transaction:r,receipt:f}),[2,f])}})})},o},e.prototype.sendTransaction=function(r){return Le(this,void 0,void 0,function(){var n,i,a,o,c;return Re(this,function(u){switch(u.label){case 0:return[4,this.getNetwork()];case 1:return u.sent(),[4,Promise.resolve(r).then(function(s){return(0,Fe.hexlify)(s)})];case 2:return n=u.sent(),i=this.formatter.transaction(r),i.confirmations==null&&(i.confirmations=0),[4,this._getInternalBlockNumber(100+2*this.pollingInterval)];case 3:a=u.sent(),u.label=4;case 4:return u.trys.push([4,6,,7]),[4,this.perform("sendTransaction",{signedTransaction:n})];case 5:return o=u.sent(),[2,this._wrapTransaction(i,o,a)];case 6:throw c=u.sent(),c.transaction=i,c.transactionHash=i.hash,c;case 7:return[2]}})})},e.prototype._getTransactionRequest=function(r){return Le(this,void 0,void 0,function(){var n,i,a,o,c=this;return Re(this,function(u){switch(u.label){case 0:return[4,r];case 1:return n=u.sent(),i={},["from","to"].forEach(function(s){n[s]!=null&&(i[s]=Promise.resolve(n[s]).then(function(f){return f?c._getAddress(f):null}))}),["gasLimit","gasPrice","maxFeePerGas","maxPriorityFeePerGas","value"].forEach(function(s){n[s]!=null&&(i[s]=Promise.resolve(n[s]).then(function(f){return f?pt.BigNumber.from(f):null}))}),["type"].forEach(function(s){n[s]!=null&&(i[s]=Promise.resolve(n[s]).then(function(f){return f??null}))}),n.accessList&&(i.accessList=this.formatter.accessList(n.accessList)),["data"].forEach(function(s){n[s]!=null&&(i[s]=Promise.resolve(n[s]).then(function(f){return f?(0,Fe.hexlify)(f):null}))}),o=(a=this.formatter).transactionRequest,[4,(0,Er.resolveProperties)(i)];case 2:return[2,o.apply(a,[u.sent()])]}})})},e.prototype._getFilter=function(r){return Le(this,void 0,void 0,function(){var n,i,a,o=this;return Re(this,function(c){switch(c.label){case 0:return[4,r];case 1:return r=c.sent(),n={},r.address!=null&&(n.address=this._getAddress(r.address)),["blockHash","topics"].forEach(function(u){r[u]!=null&&(n[u]=r[u])}),["fromBlock","toBlock"].forEach(function(u){r[u]!=null&&(n[u]=o._getBlockTag(r[u]))}),a=(i=this.formatter).filter,[4,(0,Er.resolveProperties)(n)];case 2:return[2,a.apply(i,[c.sent()])]}})})},e.prototype._call=function(r,n,i){return Le(this,void 0,void 0,function(){var a,o,c,u,s,f,m,w,T,A,O,B,F,I,D,z;return Re(this,function(G){switch(G.label){case 0:return i>=ZX&&Je.throwError("CCIP read exceeded maximum redirections",qe.Logger.errors.SERVER_ERROR,{redirects:i,transaction:r}),a=r.to,[4,this.perform("call",{transaction:r,blockTag:n})];case 1:if(o=G.sent(),!(i>=0&&n==="latest"&&a!=null&&o.substring(0,10)==="0x556f1830"&&(0,Fe.hexDataLength)(o)%32===4))return[3,5];G.label=2;case 2:for(G.trys.push([2,4,,5]),c=(0,Fe.hexDataSlice)(o,4),u=(0,Fe.hexDataSlice)(c,0,32),pt.BigNumber.from(u).eq(a)||Je.throwError("CCIP Read sender did not match",qe.Logger.errors.CALL_EXCEPTION,{name:"OffchainLookup",signature:"OffchainLookup(address,string[],bytes,bytes4,bytes)",transaction:r,data:o}),s=[],f=pt.BigNumber.from((0,Fe.hexDataSlice)(c,32,64)).toNumber(),m=pt.BigNumber.from((0,Fe.hexDataSlice)(c,f,f+32)).toNumber(),w=(0,Fe.hexDataSlice)(c,f+32),T=0;Tthis._emitted.block?[2,null]:[2,void 0];if(!n)return[3,8];m=null,w=0,F.label=2;case 2:return w0},e.prototype._stopEvent=function(r){this.polling=this._events.filter(function(n){return n.pollable()}).length>0},e.prototype._addEventListener=function(r,n,i){var a=new TE(Cc(r),n,i);return this._events.push(a),this._startEvent(a),this},e.prototype.on=function(r,n){return this._addEventListener(r,n,!1)},e.prototype.once=function(r,n){return this._addEventListener(r,n,!0)},e.prototype.emit=function(r){for(var n=this,i=[],a=1;a{"use strict";var Kb=sn&&sn.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),Hi=sn&&sn.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},zi=sn&&sn.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]=0&&a.match(/gas required exceeds allowance|always failing transaction|execution reverted|revert/)&&Br.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",Fr.Logger.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,method:t,transaction:n}),e}function ME(t){return new Promise(function(e){setTimeout(e,t)})}function sK(t){if(t.error){var e=new Error(t.error.message);throw e.code=t.error.code,e.data=t.error.data,e}return t.result}function Ml(t){return t&&t.toLowerCase()}var Xb={},Vb=function(t){Kb(e,t);function e(r,n,i){var a=t.call(this)||this;if(r!==Xb)throw new Error("do not call the JsonRpcSigner constructor directly; use provider.getSigner");return(0,Sr.defineReadOnly)(a,"provider",n),i==null&&(i=0),typeof i=="string"?((0,Sr.defineReadOnly)(a,"_address",a.provider.formatter.address(i)),(0,Sr.defineReadOnly)(a,"_index",null)):typeof i=="number"?((0,Sr.defineReadOnly)(a,"_index",i),(0,Sr.defineReadOnly)(a,"_address",null)):Br.throwArgumentError("invalid address or index","addressOrIndex",i),a}return e.prototype.connect=function(r){return Br.throwError("cannot alter JSON-RPC Signer connection",Fr.Logger.errors.UNSUPPORTED_OPERATION,{operation:"connect"})},e.prototype.connectUnchecked=function(){return new cK(Xb,this.provider,this._address||this._index)},e.prototype.getAddress=function(){var r=this;return this._address?Promise.resolve(this._address):this.provider.send("eth_accounts",[]).then(function(n){return n.length<=r._index&&Br.throwError("unknown account #"+r._index,Fr.Logger.errors.UNSUPPORTED_OPERATION,{operation:"getAddress"}),r.provider.formatter.address(n[r._index])})},e.prototype.sendUncheckedTransaction=function(r){var n=this;r=(0,Sr.shallowCopy)(r);var i=this.getAddress().then(function(o){return o&&(o=o.toLowerCase()),o});if(r.gasLimit==null){var a=(0,Sr.shallowCopy)(r);a.from=i,r.gasLimit=this.provider.estimateGas(a)}return r.to!=null&&(r.to=Promise.resolve(r.to).then(function(o){return Hi(n,void 0,void 0,function(){var c;return zi(this,function(u){switch(u.label){case 0:return o==null?[2,null]:[4,this.provider.resolveName(o)];case 1:return c=u.sent(),c==null&&Br.throwArgumentError("provided ENS name resolves to null","tx.to",o),[2,c]}})})})),(0,Sr.resolveProperties)({tx:(0,Sr.resolveProperties)(r),sender:i}).then(function(o){var c=o.tx,u=o.sender;c.from!=null?c.from.toLowerCase()!==u&&Br.throwArgumentError("from address mismatch","transaction",r):c.from=u;var s=n.provider.constructor.hexlifyTransaction(c,{from:!0});return n.provider.send("eth_sendTransaction",[s]).then(function(f){return f},function(f){return typeof f.message=="string"&&f.message.match(/user denied/i)&&Br.throwError("user rejected transaction",Fr.Logger.errors.ACTION_REJECTED,{action:"sendTransaction",transaction:c}),FE("sendTransaction",f,s)})})},e.prototype.signTransaction=function(r){return Br.throwError("signing transactions is unsupported",Fr.Logger.errors.UNSUPPORTED_OPERATION,{operation:"signTransaction"})},e.prototype.sendTransaction=function(r){return Hi(this,void 0,void 0,function(){var n,i,a,o=this;return zi(this,function(c){switch(c.label){case 0:return[4,this.provider._getInternalBlockNumber(100+2*this.provider.pollingInterval)];case 1:return n=c.sent(),[4,this.sendUncheckedTransaction(r)];case 2:i=c.sent(),c.label=3;case 3:return c.trys.push([3,5,,6]),[4,(0,BE.poll)(function(){return Hi(o,void 0,void 0,function(){var u;return zi(this,function(s){switch(s.label){case 0:return[4,this.provider.getTransaction(i)];case 1:return u=s.sent(),u===null?[2,void 0]:[2,this.provider._wrapTransaction(u,i,n)]}})})},{oncePoll:this.provider})];case 4:return[2,c.sent()];case 5:throw a=c.sent(),a.transactionHash=i,a;case 6:return[2]}})})},e.prototype.signMessage=function(r){return Hi(this,void 0,void 0,function(){var n,i,a;return zi(this,function(o){switch(o.label){case 0:return n=typeof r=="string"?(0,PE.toUtf8Bytes)(r):r,[4,this.getAddress()];case 1:i=o.sent(),o.label=2;case 2:return o.trys.push([2,4,,5]),[4,this.provider.send("personal_sign",[(0,Pc.hexlify)(n),i.toLowerCase()])];case 3:return[2,o.sent()];case 4:throw a=o.sent(),typeof a.message=="string"&&a.message.match(/user denied/i)&&Br.throwError("user rejected signing",Fr.Logger.errors.ACTION_REJECTED,{action:"signMessage",from:i,messageData:r}),a;case 5:return[2]}})})},e.prototype._legacySignMessage=function(r){return Hi(this,void 0,void 0,function(){var n,i,a;return zi(this,function(o){switch(o.label){case 0:return n=typeof r=="string"?(0,PE.toUtf8Bytes)(r):r,[4,this.getAddress()];case 1:i=o.sent(),o.label=2;case 2:return o.trys.push([2,4,,5]),[4,this.provider.send("eth_sign",[i.toLowerCase(),(0,Pc.hexlify)(n)])];case 3:return[2,o.sent()];case 4:throw a=o.sent(),typeof a.message=="string"&&a.message.match(/user denied/i)&&Br.throwError("user rejected signing",Fr.Logger.errors.ACTION_REJECTED,{action:"_legacySignMessage",from:i,messageData:r}),a;case 5:return[2]}})})},e.prototype._signTypedData=function(r,n,i){return Hi(this,void 0,void 0,function(){var a,o,c,u=this;return zi(this,function(s){switch(s.label){case 0:return[4,OE._TypedDataEncoder.resolveNames(r,n,i,function(f){return u.provider.resolveName(f)})];case 1:return a=s.sent(),[4,this.getAddress()];case 2:o=s.sent(),s.label=3;case 3:return s.trys.push([3,5,,6]),[4,this.provider.send("eth_signTypedData_v4",[o.toLowerCase(),JSON.stringify(OE._TypedDataEncoder.getPayload(a.domain,n,a.value))])];case 4:return[2,s.sent()];case 5:throw c=s.sent(),typeof c.message=="string"&&c.message.match(/user denied/i)&&Br.throwError("user rejected signing",Fr.Logger.errors.ACTION_REJECTED,{action:"_signTypedData",from:o,messageData:{domain:a.domain,types:n,value:a.value}}),c;case 6:return[2]}})})},e.prototype.unlock=function(r){return Hi(this,void 0,void 0,function(){var n,i;return zi(this,function(a){switch(a.label){case 0:return n=this.provider,[4,this.getAddress()];case 1:return i=a.sent(),[2,n.send("personal_unlockAccount",[i.toLowerCase(),r,null])]}})})},e}(tK.Signer);sn.JsonRpcSigner=Vb;var cK=function(t){Kb(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.sendTransaction=function(r){var n=this;return this.sendUncheckedTransaction(r).then(function(i){return{hash:i,nonce:null,gasLimit:null,gasPrice:null,data:null,value:null,chainId:null,confirmations:0,from:null,wait:function(a){return n.provider.waitForTransaction(i,a)}}})},e}(Vb),uK={chainId:!0,data:!0,gasLimit:!0,gasPrice:!0,nonce:!0,to:!0,value:!0,type:!0,accessList:!0,maxFeePerGas:!0,maxPriorityFeePerGas:!0},lK=function(t){Kb(e,t);function e(r,n){var i=this,a=n;return a==null&&(a=new Promise(function(o,c){setTimeout(function(){i.detectNetwork().then(function(u){o(u)},function(u){c(u)})},0)})),i=t.call(this,a)||this,r||(r=(0,Sr.getStatic)(i.constructor,"defaultUrl")()),typeof r=="string"?(0,Sr.defineReadOnly)(i,"connection",Object.freeze({url:r})):(0,Sr.defineReadOnly)(i,"connection",Object.freeze((0,Sr.shallowCopy)(r))),i._nextId=42,i}return Object.defineProperty(e.prototype,"_cache",{get:function(){return this._eventLoopCache==null&&(this._eventLoopCache={}),this._eventLoopCache},enumerable:!1,configurable:!0}),e.defaultUrl=function(){return"http://localhost:8545"},e.prototype.detectNetwork=function(){var r=this;return this._cache.detectNetwork||(this._cache.detectNetwork=this._uncachedDetectNetwork(),setTimeout(function(){r._cache.detectNetwork=null},0)),this._cache.detectNetwork},e.prototype._uncachedDetectNetwork=function(){return Hi(this,void 0,void 0,function(){var r,n,i,a;return zi(this,function(o){switch(o.label){case 0:return[4,ME(0)];case 1:o.sent(),r=null,o.label=2;case 2:return o.trys.push([2,4,,9]),[4,this.send("eth_chainId",[])];case 3:return r=o.sent(),[3,9];case 4:n=o.sent(),o.label=5;case 5:return o.trys.push([5,7,,8]),[4,this.send("net_version",[])];case 6:return r=o.sent(),[3,8];case 7:return i=o.sent(),[3,8];case 8:return[3,9];case 9:if(r!=null){a=(0,Sr.getStatic)(this.constructor,"getNetwork");try{return[2,a(Gb.BigNumber.from(r).toNumber())]}catch(c){return[2,Br.throwError("could not detect network",Fr.Logger.errors.NETWORK_ERROR,{chainId:r,event:"invalidNetwork",serverError:c})]}}return[2,Br.throwError("could not detect network",Fr.Logger.errors.NETWORK_ERROR,{event:"noNetwork"})]}})})},e.prototype.getSigner=function(r){return new Vb(Xb,this,r)},e.prototype.getUncheckedSigner=function(r){return this.getSigner(r).connectUnchecked()},e.prototype.listAccounts=function(){var r=this;return this.send("eth_accounts",[]).then(function(n){return n.map(function(i){return r.formatter.address(i)})})},e.prototype.send=function(r,n){var i=this,a={method:r,params:n,id:this._nextId++,jsonrpc:"2.0"};this.emit("debug",{action:"request",request:(0,Sr.deepCopy)(a),provider:this});var o=["eth_chainId","eth_blockNumber"].indexOf(r)>=0;if(o&&this._cache[r])return this._cache[r];var c=(0,BE.fetchJson)(this.connection,JSON.stringify(a),sK).then(function(u){return i.emit("debug",{action:"response",request:a,response:u,provider:i}),u},function(u){throw i.emit("debug",{action:"response",error:u,request:a,provider:i}),u});return o&&(this._cache[r]=c,setTimeout(function(){i._cache[r]=null},0)),c},e.prototype.prepareRequest=function(r,n){switch(r){case"getBlockNumber":return["eth_blockNumber",[]];case"getGasPrice":return["eth_gasPrice",[]];case"getBalance":return["eth_getBalance",[Ml(n.address),n.blockTag]];case"getTransactionCount":return["eth_getTransactionCount",[Ml(n.address),n.blockTag]];case"getCode":return["eth_getCode",[Ml(n.address),n.blockTag]];case"getStorageAt":return["eth_getStorageAt",[Ml(n.address),(0,Pc.hexZeroPad)(n.position,32),n.blockTag]];case"sendTransaction":return["eth_sendRawTransaction",[n.signedTransaction]];case"getBlock":return n.blockTag?["eth_getBlockByNumber",[n.blockTag,!!n.includeTransactions]]:n.blockHash?["eth_getBlockByHash",[n.blockHash,!!n.includeTransactions]]:null;case"getTransaction":return["eth_getTransactionByHash",[n.transactionHash]];case"getTransactionReceipt":return["eth_getTransactionReceipt",[n.transactionHash]];case"call":{var i=(0,Sr.getStatic)(this.constructor,"hexlifyTransaction");return["eth_call",[i(n.transaction,{from:!0}),n.blockTag]]}case"estimateGas":{var i=(0,Sr.getStatic)(this.constructor,"hexlifyTransaction");return["eth_estimateGas",[i(n.transaction,{from:!0})]]}case"getLogs":return n.filter&&n.filter.address!=null&&(n.filter.address=Ml(n.filter.address)),["eth_getLogs",[n.filter]];default:break}return null},e.prototype.perform=function(r,n){return Hi(this,void 0,void 0,function(){var i,a,o,c;return zi(this,function(u){switch(u.label){case 0:return r==="call"||r==="estimateGas"?(i=n.transaction,i&&i.type!=null&&Gb.BigNumber.from(i.type).isZero()?i.maxFeePerGas==null&&i.maxPriorityFeePerGas==null?[4,this.getFeeData()]:[3,2]:[3,2]):[3,2];case 1:a=u.sent(),a.maxFeePerGas==null&&a.maxPriorityFeePerGas==null&&(n=(0,Sr.shallowCopy)(n),n.transaction=(0,Sr.shallowCopy)(i),delete n.transaction.type),u.label=2;case 2:o=this.prepareRequest(r,n),o==null&&Br.throwError(r+" not implemented",Fr.Logger.errors.NOT_IMPLEMENTED,{operation:r}),u.label=3;case 3:return u.trys.push([3,5,,6]),[4,this.send(o[0],o[1])];case 4:return[2,u.sent()];case 5:return c=u.sent(),[2,FE(r,c,n)];case 6:return[2]}})})},e.prototype._startEvent=function(r){r.tag==="pending"&&this._startPending(),t.prototype._startEvent.call(this,r)},e.prototype._startPending=function(){if(this._pendingFilter==null){var r=this,n=this.send("eth_newPendingTransactionFilter",[]);this._pendingFilter=n,n.then(function(i){function a(){r.send("eth_getFilterChanges",[i]).then(function(o){if(r._pendingFilter!=n)return null;var c=Promise.resolve();return o.forEach(function(u){r._emitted["t:"+u.toLowerCase()]="pending",c=c.then(function(){return r.getTransaction(u).then(function(s){return r.emit("pending",s),null})})}),c.then(function(){return ME(1e3)})}).then(function(){if(r._pendingFilter!=n){r.send("eth_uninstallFilter",[i]);return}return setTimeout(function(){a()},0),null}).catch(function(o){})}return a(),i}).catch(function(i){})}},e.prototype._stopEvent=function(r){r.tag==="pending"&&this.listenerCount("pending")===0&&(this._pendingFilter=null),t.prototype._stopEvent.call(this,r)},e.hexlifyTransaction=function(r,n){var i=(0,Sr.shallowCopy)(uK);if(n)for(var a in n)n[a]&&(i[a]=!0);(0,Sr.checkProperties)(r,i);var o={};return["chainId","gasLimit","gasPrice","type","maxFeePerGas","maxPriorityFeePerGas","nonce","value"].forEach(function(c){if(r[c]!=null){var u=(0,Pc.hexValue)(Gb.BigNumber.from(r[c]));c==="gasLimit"&&(c="gas"),o[c]=u}}),["from","to","data"].forEach(function(c){r[c]!=null&&(o[c]=(0,Pc.hexlify)(r[c]))}),r.accessList&&(o.accessList=(0,nK.accessListify)(r.accessList)),o},e}(aK.BaseProvider);sn.JsonRpcProvider=lK});var zo=P((nte,LE)=>{"use strict";LE.exports={BINARY_TYPES:["nodebuffer","arraybuffer","fragments"],GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),EMPTY_BUFFER:Buffer.alloc(0),NOOP:()=>{}}});var eg=P((ite,ZE)=>{var DE=require("fs"),Gi=require("path"),JE=require("os"),qE=typeof __webpack_require__=="function"?__non_webpack_require__:require,fK=process.config&&process.config.variables||{},dK=!!process.env.PREBUILDS_ONLY,RE=process.versions.modules,Zb=hK()?"electron":"node",Qb=JE.arch(),Wb=JE.platform(),jE=process.env.LIBC||(vK(Wb)?"musl":"glibc"),Yb=process.env.ARM_VERSION||(Qb==="arm64"?"8":fK.arm_version)||"",UE=(process.versions.uv||"").split(".")[0];ZE.exports=Xi;function Xi(t){return qE(Xi.path(t))}Xi.path=function(t){t=Gi.resolve(t||".");try{var e=qE(Gi.join(t,"package.json")).name.toUpperCase().replace(/-/g,"_");process.env[e+"_PREBUILD"]&&(t=process.env[e+"_PREBUILD"])}catch{}if(!dK){var r=IE(Gi.join(t,"build/Release"),NE);if(r)return r;var n=IE(Gi.join(t,"build/Debug"),NE);if(n)return n}var i=c(t);if(i)return i;var a=c(Gi.dirname(process.execPath));if(a)return a;var o=["platform="+Wb,"arch="+Qb,"runtime="+Zb,"abi="+RE,"uv="+UE,Yb?"armv="+Yb:"","libc="+jE,"node="+process.versions.node,process.versions.electron?"electron="+process.versions.electron:"",typeof __webpack_require__=="function"?"webpack=true":""].filter(Boolean).join(" ");throw new Error("No native build was found for "+o+` - loaded from: `+t+` -`);function c(u){var s=$b(Gi.join(u,"prebuilds")).map(HE),f=s.filter(zE(Wb,Qb)).sort(GE)[0];if(!!f){var m=Gi.join(u,"prebuilds",f.name),w=$b(m).map(XE),T=w.filter(KE(Zb,RE)),A=T.sort(VE(Zb))[0];if(A)return Gi.join(m,A.file)}}};function $b(t){try{return DE.readdirSync(t)}catch{return[]}}function IE(t,e){var r=$b(t).filter(e);return r[0]&&Gi.join(t,r[0])}function NE(t){return/\.node$/.test(t)}function HE(t){var e=t.split("-");if(e.length===2){var r=e[0],n=e[1].split("+");if(!!r&&!!n.length&&!!n.every(Boolean))return{name:t,platform:r,architectures:n}}}function zE(t,e){return function(r){return r==null||r.platform!==t?!1:r.architectures.includes(e)}}function GE(t,e){return t.architectures.length-e.architectures.length}function XE(t){var e=t.split("."),r=e.pop(),n={file:t,specificity:0};if(r==="node"){for(var i=0;ir.specificity?-1:1:0}}function hK(){return process.versions&&process.versions.electron||process.env.ELECTRON_RUN_AS_NODE?!0:typeof window<"u"&&window.process&&window.process.type==="renderer"}function vK(t){return t==="linux"&&DE.existsSync("/etc/alpine-release")}Xi.parseTags=XE;Xi.matchTags=KE;Xi.compareTags=VE;Xi.parseTuple=HE;Xi.matchTuple=zE;Xi.compareTuples=GE});var WE=P((ate,QE)=>{"use strict";var mK=(t,e,r,n,i)=>{for(var a=0;a{let r=t.length;for(var n=0;n{"use strict";try{rg.exports=eg()(__dirname)}catch{rg.exports=WE()}});var Fl=P((ste,tg)=>{"use strict";var{EMPTY_BUFFER:gK}=zo();function $E(t,e){if(t.length===0)return gK;if(t.length===1)return t[0];let r=Buffer.allocUnsafe(e),n=0;for(let i=0;i{"use strict";var nS=Symbol("kDone"),ng=Symbol("kRun"),ig=class{constructor(e){this[nS]=()=>{this.pending--,this[ng]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[ng]()}[ng](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[nS])}}};iS.exports=ig});var Il=P((ute,uS)=>{"use strict";var Ll=require("zlib"),oS=Fl(),xK=aS(),{kStatusCode:sS,NOOP:yK}=zo(),wK=Buffer.from([0,0,255,255]),o0=Symbol("permessage-deflate"),Ki=Symbol("total-length"),Rl=Symbol("callback"),Ba=Symbol("buffers"),ag=Symbol("error"),a0,og=class{constructor(e,r,n){if(this._maxPayload=n|0,this._options=e||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!r,this._deflate=null,this._inflate=null,this.params=null,!a0){let i=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;a0=new xK(i)}}static get extensionName(){return"permessage-deflate"}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let e=this._deflate[Rl];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let r=this._options,n=e.find(i=>!(r.serverNoContextTakeover===!1&&i.server_no_context_takeover||i.server_max_window_bits&&(r.serverMaxWindowBits===!1||typeof r.serverMaxWindowBits=="number"&&r.serverMaxWindowBits>i.server_max_window_bits)||typeof r.clientMaxWindowBits=="number"&&!i.client_max_window_bits));if(!n)throw new Error("None of the extension offers can be accepted");return r.serverNoContextTakeover&&(n.server_no_context_takeover=!0),r.clientNoContextTakeover&&(n.client_no_context_takeover=!0),typeof r.serverMaxWindowBits=="number"&&(n.server_max_window_bits=r.serverMaxWindowBits),typeof r.clientMaxWindowBits=="number"?n.client_max_window_bits=r.clientMaxWindowBits:(n.client_max_window_bits===!0||r.clientMaxWindowBits===!1)&&delete n.client_max_window_bits,n}acceptAsClient(e){let r=e[0];if(this._options.clientNoContextTakeover===!1&&r.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!r.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(r.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&r.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return r}normalizeParams(e){return e.forEach(r=>{Object.keys(r).forEach(n=>{let i=r[n];if(i.length>1)throw new Error(`Parameter "${n}" must have only a single value`);if(i=i[0],n==="client_max_window_bits"){if(i!==!0){let a=+i;if(!Number.isInteger(a)||a<8||a>15)throw new TypeError(`Invalid value for parameter "${n}": ${i}`);i=a}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${n}": ${i}`)}else if(n==="server_max_window_bits"){let a=+i;if(!Number.isInteger(a)||a<8||a>15)throw new TypeError(`Invalid value for parameter "${n}": ${i}`);i=a}else if(n==="client_no_context_takeover"||n==="server_no_context_takeover"){if(i!==!0)throw new TypeError(`Invalid value for parameter "${n}": ${i}`)}else throw new Error(`Unknown parameter "${n}"`);r[n]=i})}),e}decompress(e,r,n){a0.add(i=>{this._decompress(e,r,(a,o)=>{i(),n(a,o)})})}compress(e,r,n){a0.add(i=>{this._compress(e,r,(a,o)=>{i(),n(a,o)})})}_decompress(e,r,n){let i=this._isServer?"client":"server";if(!this._inflate){let a=`${i}_max_window_bits`,o=typeof this.params[a]!="number"?Ll.Z_DEFAULT_WINDOWBITS:this.params[a];this._inflate=Ll.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[o0]=this,this._inflate[Ki]=0,this._inflate[Ba]=[],this._inflate.on("error",EK),this._inflate.on("data",cS)}this._inflate[Rl]=n,this._inflate.write(e),r&&this._inflate.write(wK),this._inflate.flush(()=>{let a=this._inflate[ag];if(a){this._inflate.close(),this._inflate=null,n(a);return}let o=oS.concat(this._inflate[Ba],this._inflate[Ki]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[Ki]=0,this._inflate[Ba]=[],r&&this.params[`${i}_no_context_takeover`]&&this._inflate.reset()),n(null,o)})}_compress(e,r,n){let i=this._isServer?"server":"client";if(!this._deflate){let a=`${i}_max_window_bits`,o=typeof this.params[a]!="number"?Ll.Z_DEFAULT_WINDOWBITS:this.params[a];this._deflate=Ll.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[Ki]=0,this._deflate[Ba]=[],this._deflate.on("error",yK),this._deflate.on("data",AK)}this._deflate[Rl]=n,this._deflate.write(e),this._deflate.flush(Ll.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let a=oS.concat(this._deflate[Ba],this._deflate[Ki]);r&&(a=a.slice(0,a.length-4)),this._deflate[Rl]=null,this._deflate[Ki]=0,this._deflate[Ba]=[],r&&this.params[`${i}_no_context_takeover`]&&this._deflate.reset(),n(null,a)})}};uS.exports=og;function AK(t){this[Ba].push(t),this[Ki]+=t.length}function cS(t){if(this[Ki]+=t.length,this[o0]._maxPayload<1||this[Ki]<=this[o0]._maxPayload){this[Ba].push(t);return}this[ag]=new RangeError("Max payload size exceeded"),this[ag][sS]=1009,this.removeListener("data",cS),this.reset()}function EK(t){this[o0]._inflate=null,t[sS]=1007,this[Rl](t)}});var fS=P((lte,lS)=>{"use strict";function SK(t){let e=t.length,r=0;for(;r=e||(t[r+1]&192)!==128||(t[r+2]&192)!==128||t[r]===224&&(t[r+1]&224)===128||t[r]===237&&(t[r+1]&224)===160)return!1;r+=3}else if((t[r]&248)===240){if(r+3>=e||(t[r+1]&192)!==128||(t[r+2]&192)!==128||(t[r+3]&192)!==128||t[r]===240&&(t[r+1]&240)===128||t[r]===244&&t[r+1]>143||t[r]>244)return!1;r+=4}else return!1;return!0}lS.exports=SK});var dS=P((fte,sg)=>{"use strict";try{sg.exports=eg()(__dirname)}catch{sg.exports=fS()}});var ug=P((dte,cg)=>{"use strict";function pS(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function hS(t){let e=t.length,r=0;for(;r=e||(t[r+1]&192)!==128||(t[r+2]&192)!==128||t[r]===224&&(t[r+1]&224)===128||t[r]===237&&(t[r+1]&224)===160)return!1;r+=3}else if((t[r]&248)===240){if(r+3>=e||(t[r+1]&192)!==128||(t[r+2]&192)!==128||(t[r+3]&192)!==128||t[r]===240&&(t[r+1]&240)===128||t[r]===244&&t[r+1]>143||t[r]>244)return!1;r+=4}else return!1;return!0}try{let t=dS();typeof t=="object"&&(t=t.Validation.isValidUTF8),cg.exports={isValidStatusCode:pS,isValidUTF8(e){return e.length<150?hS(e):t(e)}}}catch{cg.exports={isValidStatusCode:pS,isValidUTF8:hS}}});var pg=P((pte,yS)=>{"use strict";var{Writable:_K}=require("stream"),vS=Il(),{BINARY_TYPES:TK,EMPTY_BUFFER:kK,kStatusCode:CK,kWebSocket:OK}=zo(),{concat:lg,toArrayBuffer:PK,unmask:MK}=Fl(),{isValidStatusCode:BK,isValidUTF8:mS}=ug(),Nl=0,bS=1,gS=2,xS=3,fg=4,FK=5,dg=class extends _K{constructor(e,r,n,i){super(),this._binaryType=e||TK[0],this[OK]=void 0,this._extensions=r||{},this._isServer=!!n,this._maxPayload=i|0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._state=Nl,this._loop=!1}_write(e,r,n){if(this._opcode===8&&this._state==Nl)return n();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(n)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e=n.length?r.set(this._buffers.shift(),i):(r.set(new Uint8Array(n.buffer,n.byteOffset,e),i),this._buffers[0]=n.slice(e)),e-=n.length}while(e>0);return r}startLoop(e){let r;this._loop=!0;do switch(this._state){case Nl:r=this.getInfo();break;case bS:r=this.getPayloadLength16();break;case gS:r=this.getPayloadLength64();break;case xS:this.getMask();break;case fg:r=this.getData(e);break;default:this._loop=!1;return}while(this._loop);e(r)}getInfo(){if(this._bufferedBytes<2){this._loop=!1;return}let e=this.consume(2);if((e[0]&48)!==0)return this._loop=!1,Lr(RangeError,"RSV2 and RSV3 must be clear",!0,1002);let r=(e[0]&64)===64;if(r&&!this._extensions[vS.extensionName])return this._loop=!1,Lr(RangeError,"RSV1 must be clear",!0,1002);if(this._fin=(e[0]&128)===128,this._opcode=e[0]&15,this._payloadLength=e[1]&127,this._opcode===0){if(r)return this._loop=!1,Lr(RangeError,"RSV1 must be clear",!0,1002);if(!this._fragmented)return this._loop=!1,Lr(RangeError,"invalid opcode 0",!0,1002);this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented)return this._loop=!1,Lr(RangeError,`invalid opcode ${this._opcode}`,!0,1002);this._compressed=r}else if(this._opcode>7&&this._opcode<11){if(!this._fin)return this._loop=!1,Lr(RangeError,"FIN must be set",!0,1002);if(r)return this._loop=!1,Lr(RangeError,"RSV1 must be clear",!0,1002);if(this._payloadLength>125)return this._loop=!1,Lr(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002)}else return this._loop=!1,Lr(RangeError,`invalid opcode ${this._opcode}`,!0,1002);if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(e[1]&128)===128,this._isServer){if(!this._masked)return this._loop=!1,Lr(RangeError,"MASK must be set",!0,1002)}else if(this._masked)return this._loop=!1,Lr(RangeError,"MASK must be clear",!0,1002);if(this._payloadLength===126)this._state=bS;else if(this._payloadLength===127)this._state=gS;else return this.haveLength()}getPayloadLength16(){if(this._bufferedBytes<2){this._loop=!1;return}return this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength()}getPayloadLength64(){if(this._bufferedBytes<8){this._loop=!1;return}let e=this.consume(8),r=e.readUInt32BE(0);return r>Math.pow(2,53-32)-1?(this._loop=!1,Lr(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009)):(this._payloadLength=r*Math.pow(2,32)+e.readUInt32BE(4),this.haveLength())}haveLength(){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0))return this._loop=!1,Lr(RangeError,"Max payload size exceeded",!1,1009);this._masked?this._state=xS:this._state=fg}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=fg}getData(e){let r=kK;if(this._payloadLength){if(this._bufferedBytes7)return this.controlMessage(r);if(this._compressed){this._state=FK,this.decompress(r,e);return}return r.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(r)),this.dataMessage()}decompress(e,r){this._extensions[vS.extensionName].decompress(e,this._fin,(i,a)=>{if(i)return r(i);if(a.length){if(this._messageLength+=a.length,this._messageLength>this._maxPayload&&this._maxPayload>0)return r(Lr(RangeError,"Max payload size exceeded",!1,1009));this._fragments.push(a)}let o=this.dataMessage();if(o)return r(o);this.startLoop(r)})}dataMessage(){if(this._fin){let e=this._messageLength,r=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let n;this._binaryType==="nodebuffer"?n=lg(r,e):this._binaryType==="arraybuffer"?n=PK(lg(r,e)):n=r,this.emit("message",n)}else{let n=lg(r,e);if(!mS(n))return this._loop=!1,Lr(Error,"invalid UTF-8 sequence",!0,1007);this.emit("message",n.toString())}}this._state=Nl}controlMessage(e){if(this._opcode===8)if(this._loop=!1,e.length===0)this.emit("conclude",1005,""),this.end();else{if(e.length===1)return Lr(RangeError,"invalid payload length 1",!0,1002);{let r=e.readUInt16BE(0);if(!BK(r))return Lr(RangeError,`invalid status code ${r}`,!0,1002);let n=e.slice(2);if(!mS(n))return Lr(Error,"invalid UTF-8 sequence",!0,1007);this.emit("conclude",r,n.toString()),this.end()}}else this._opcode===9?this.emit("ping",e):this.emit("pong",e);this._state=Nl}};yS.exports=dg;function Lr(t,e,r,n){let i=new t(r?`Invalid WebSocket frame: ${e}`:e);return Error.captureStackTrace(i,Lr),i[CK]=n,i}});var hg=P((hte,ES)=>{"use strict";var{randomFillSync:LK}=require("crypto"),wS=Il(),{EMPTY_BUFFER:RK}=zo(),{isValidStatusCode:IK}=ug(),{mask:AS,toBuffer:Vi}=Fl(),Go=Buffer.alloc(4),gi=class{constructor(e,r){this._extensions=r||{},this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._deflating=!1,this._queue=[]}static frame(e,r){let n=r.mask&&r.readOnly,i=r.mask?6:2,a=e.length;e.length>=65536?(i+=8,a=127):e.length>125&&(i+=2,a=126);let o=Buffer.allocUnsafe(n?e.length+i:i);return o[0]=r.fin?r.opcode|128:r.opcode,r.rsv1&&(o[0]|=64),o[1]=a,a===126?o.writeUInt16BE(e.length,2):a===127&&(o.writeUInt32BE(0,2),o.writeUInt32BE(e.length,6)),r.mask?(LK(Go,0,4),o[1]|=128,o[i-4]=Go[0],o[i-3]=Go[1],o[i-2]=Go[2],o[i-1]=Go[3],n?(AS(e,Go,o,i,e.length),[o]):(AS(e,Go,e,0,e.length),[o,e])):[o,e]}close(e,r,n,i){let a;if(e===void 0)a=RK;else{if(typeof e!="number"||!IK(e))throw new TypeError("First argument must be a valid error code number");if(r===void 0||r==="")a=Buffer.allocUnsafe(2),a.writeUInt16BE(e,0);else{let o=Buffer.byteLength(r);if(o>123)throw new RangeError("The message must not be greater than 123 bytes");a=Buffer.allocUnsafe(2+o),a.writeUInt16BE(e,0),a.write(r,2)}}this._deflating?this.enqueue([this.doClose,a,n,i]):this.doClose(a,n,i)}doClose(e,r,n){this.sendFrame(gi.frame(e,{fin:!0,rsv1:!1,opcode:8,mask:r,readOnly:!1}),n)}ping(e,r,n){let i=Vi(e);if(i.length>125)throw new RangeError("The data size must not be greater than 125 bytes");this._deflating?this.enqueue([this.doPing,i,r,Vi.readOnly,n]):this.doPing(i,r,Vi.readOnly,n)}doPing(e,r,n,i){this.sendFrame(gi.frame(e,{fin:!0,rsv1:!1,opcode:9,mask:r,readOnly:n}),i)}pong(e,r,n){let i=Vi(e);if(i.length>125)throw new RangeError("The data size must not be greater than 125 bytes");this._deflating?this.enqueue([this.doPong,i,r,Vi.readOnly,n]):this.doPong(i,r,Vi.readOnly,n)}doPong(e,r,n,i){this.sendFrame(gi.frame(e,{fin:!0,rsv1:!1,opcode:10,mask:r,readOnly:n}),i)}send(e,r,n){let i=Vi(e),a=this._extensions[wS.extensionName],o=r.binary?2:1,c=r.compress;if(this._firstFragment?(this._firstFragment=!1,c&&a&&(c=i.length>=a._threshold),this._compress=c):(c=!1,o=0),r.fin&&(this._firstFragment=!0),a){let u={fin:r.fin,rsv1:c,opcode:o,mask:r.mask,readOnly:Vi.readOnly};this._deflating?this.enqueue([this.dispatch,i,this._compress,u,n]):this.dispatch(i,this._compress,u,n)}else this.sendFrame(gi.frame(i,{fin:r.fin,rsv1:!1,opcode:o,mask:r.mask,readOnly:Vi.readOnly}),n)}dispatch(e,r,n,i){if(!r){this.sendFrame(gi.frame(e,n),i);return}let a=this._extensions[wS.extensionName];this._bufferedBytes+=e.length,this._deflating=!0,a.compress(e,n.fin,(o,c)=>{if(this._socket.destroyed){let u=new Error("The socket was closed while data was being compressed");typeof i=="function"&&i(u);for(let s=0;s{"use strict";var Mc=class{constructor(e,r){this.target=r,this.type=e}},vg=class extends Mc{constructor(e,r){super("message",r),this.data=e}},mg=class extends Mc{constructor(e,r,n){super("close",n),this.wasClean=n._closeFrameReceived&&n._closeFrameSent,this.reason=r,this.code=e}},bg=class extends Mc{constructor(e){super("open",e)}},gg=class extends Mc{constructor(e,r){super("error",r),this.message=e.message,this.error=e}},NK={addEventListener(t,e,r){if(typeof e!="function")return;function n(u){e.call(this,new vg(u,this))}function i(u,s){e.call(this,new mg(u,s,this))}function a(u){e.call(this,new gg(u,this))}function o(){e.call(this,new bg(this))}let c=r&&r.once?"once":"on";t==="message"?(n._listener=e,this[c](t,n)):t==="close"?(i._listener=e,this[c](t,i)):t==="error"?(a._listener=e,this[c](t,a)):t==="open"?(o._listener=e,this[c](t,o)):this[c](t,e)},removeEventListener(t,e){let r=this.listeners(t);for(let n=0;n{"use strict";var Dl=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function xi(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function DK(t){let e=Object.create(null);if(t===void 0||t==="")return e;let r=Object.create(null),n=!1,i=!1,a=!1,o,c,u=-1,s=-1,f=0;for(;f{let r=t[e];return Array.isArray(r)||(r=[r]),r.map(n=>[e].concat(Object.keys(n).map(i=>{let a=n[i];return Array.isArray(a)||(a=[a]),a.map(o=>o===!0?i:`${i}=${o}`).join("; ")})).join("; ")).join(", ")}).join(", ")}TS.exports={format:JK,parse:DK}});var Sg=P((bte,IS)=>{"use strict";var qK=require("events"),jK=require("https"),UK=require("http"),OS=require("net"),HK=require("tls"),{randomBytes:zK,createHash:GK}=require("crypto"),{URL:yg}=require("url"),Fa=Il(),XK=pg(),KK=hg(),{BINARY_TYPES:kS,EMPTY_BUFFER:wg,GUID:VK,kStatusCode:ZK,kWebSocket:Ot,NOOP:PS}=zo(),{addEventListener:QK,removeEventListener:WK}=_S(),{format:YK,parse:$K}=xg(),{toBuffer:eV}=Fl(),MS=["CONNECTING","OPEN","CLOSING","CLOSED"],Ag=[8,13],rV=30*1e3,Xe=class extends qK{constructor(e,r,n){super(),this._binaryType=kS[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage="",this._closeTimer=null,this._extensions={},this._protocol="",this._readyState=Xe.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,Array.isArray(r)?r=r.join(", "):typeof r=="object"&&r!==null&&(n=r,r=void 0),BS(this,e,r,n)):this._isServer=!0}get binaryType(){return this._binaryType}set binaryType(e){!kS.includes(e)||(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,r,n){let i=new XK(this.binaryType,this._extensions,this._isServer,n);this._sender=new KK(e,this._extensions),this._receiver=i,this._socket=e,i[Ot]=this,e[Ot]=this,i.on("conclude",iV),i.on("drain",aV),i.on("error",oV),i.on("message",sV),i.on("ping",cV),i.on("pong",uV),e.setTimeout(0),e.setNoDelay(),r.length>0&&e.unshift(r),e.on("close",FS),e.on("data",s0),e.on("end",LS),e.on("error",RS),this._readyState=Xe.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=Xe.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[Fa.extensionName]&&this._extensions[Fa.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=Xe.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,r){if(this.readyState!==Xe.CLOSED){if(this.readyState===Xe.CONNECTING){let n="WebSocket was closed before the connection was established";return Zi(this,this._req,n)}if(this.readyState===Xe.CLOSING){this._closeFrameSent&&this._closeFrameReceived&&this._socket.end();return}this._readyState=Xe.CLOSING,this._sender.close(e,r,!this._isServer,n=>{n||(this._closeFrameSent=!0,this._closeFrameReceived&&this._socket.end())}),this._closeTimer=setTimeout(this._socket.destroy.bind(this._socket),rV)}}ping(e,r,n){if(this.readyState===Xe.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(n=e,e=r=void 0):typeof r=="function"&&(n=r,r=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==Xe.OPEN){Eg(this,e,n);return}r===void 0&&(r=!this._isServer),this._sender.ping(e||wg,r,n)}pong(e,r,n){if(this.readyState===Xe.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(n=e,e=r=void 0):typeof r=="function"&&(n=r,r=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==Xe.OPEN){Eg(this,e,n);return}r===void 0&&(r=!this._isServer),this._sender.pong(e||wg,r,n)}send(e,r,n){if(this.readyState===Xe.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof r=="function"&&(n=r,r={}),typeof e=="number"&&(e=e.toString()),this.readyState!==Xe.OPEN){Eg(this,e,n);return}let i={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...r};this._extensions[Fa.extensionName]||(i.compress=!1),this._sender.send(e||wg,i,n)}terminate(){if(this.readyState!==Xe.CLOSED){if(this.readyState===Xe.CONNECTING){let e="WebSocket was closed before the connection was established";return Zi(this,this._req,e)}this._socket&&(this._readyState=Xe.CLOSING,this._socket.destroy())}}};MS.forEach((t,e)=>{let r={enumerable:!0,value:e};Object.defineProperty(Xe.prototype,t,r),Object.defineProperty(Xe,t,r)});["binaryType","bufferedAmount","extensions","protocol","readyState","url"].forEach(t=>{Object.defineProperty(Xe.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(Xe.prototype,`on${t}`,{configurable:!0,enumerable:!0,get(){let e=this.listeners(t);for(let r=0;r{Zi(t,w,"Opening handshake has timed out")}),w.on("error",T=>{w===null||w.aborted||(w=t._req=null,t._readyState=Xe.CLOSING,t.emit("error",T),t.emitClose())}),w.on("response",T=>{let A=T.headers.location,O=T.statusCode;if(A&&i.followRedirects&&O>=300&&O<400){if(++t._redirects>i.maxRedirects){Zi(t,w,"Maximum redirects exceeded");return}w.abort();let B=new yg(A,e);BS(t,B,r,n)}else t.emit("unexpected-response",w,T)||Zi(t,w,`Unexpected server response: ${T.statusCode}`)}),w.on("upgrade",(T,A,O)=>{if(t.emit("upgrade",T),t.readyState!==Xe.CONNECTING)return;w=t._req=null;let B=GK("sha1").update(s+VK).digest("base64");if(T.headers["sec-websocket-accept"]!==B){Zi(t,A,"Invalid Sec-WebSocket-Accept header");return}let F=T.headers["sec-websocket-protocol"],I=(r||"").split(/, */),D;if(!r&&F?D="Server sent a subprotocol but none was requested":r&&!F?D="Server sent no subprotocol":F&&!I.includes(F)&&(D="Server sent an invalid subprotocol"),D){Zi(t,A,D);return}if(F&&(t._protocol=F),m)try{let z=$K(T.headers["sec-websocket-extensions"]);z[Fa.extensionName]&&(m.accept(z[Fa.extensionName]),t._extensions[Fa.extensionName]=m)}catch{Zi(t,A,"Invalid Sec-WebSocket-Extensions header");return}t.setSocket(A,O,i.maxPayload)})}function tV(t){return t.path=t.socketPath,OS.connect(t)}function nV(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=OS.isIP(t.host)?"":t.host),HK.connect(t)}function Zi(t,e,r){t._readyState=Xe.CLOSING;let n=new Error(r);Error.captureStackTrace(n,Zi),e.setHeader?(e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),e.once("abort",t.emitClose.bind(t)),t.emit("error",n)):(e.destroy(n),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Eg(t,e,r){if(e){let n=eV(e).length;t._socket?t._sender._bufferedBytes+=n:t._bufferedAmount+=n}if(r){let n=new Error(`WebSocket is not open: readyState ${t.readyState} (${MS[t.readyState]})`);r(n)}}function iV(t,e){let r=this[Ot];r._socket.removeListener("data",s0),r._socket.resume(),r._closeFrameReceived=!0,r._closeMessage=e,r._closeCode=t,t===1005?r.close():r.close(t,e)}function aV(){this[Ot]._socket.resume()}function oV(t){let e=this[Ot];e._socket.removeListener("data",s0),e._readyState=Xe.CLOSING,e._closeCode=t[ZK],e.emit("error",t),e._socket.destroy()}function CS(){this[Ot].emitClose()}function sV(t){this[Ot].emit("message",t)}function cV(t){let e=this[Ot];e.pong(t,!e._isServer,PS),e.emit("ping",t)}function uV(t){this[Ot].emit("pong",t)}function FS(){let t=this[Ot];this.removeListener("close",FS),this.removeListener("end",LS),t._readyState=Xe.CLOSING,t._socket.read(),t._receiver.end(),this.removeListener("data",s0),this[Ot]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",CS),t._receiver.on("finish",CS))}function s0(t){this[Ot]._receiver.write(t)||this.pause()}function LS(){let t=this[Ot];t._readyState=Xe.CLOSING,t._receiver.end(),this.end()}function RS(){let t=this[Ot];this.removeListener("error",RS),this.on("error",PS),t&&(t._readyState=Xe.CLOSING,this.destroy())}});var qS=P((gte,JS)=>{"use strict";var{Duplex:lV}=require("stream");function NS(t){t.emit("close")}function fV(){!this.destroyed&&this._writableState.finished&&this.destroy()}function DS(t){this.removeListener("error",DS),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function dV(t,e){let r=!0;function n(){r&&t._socket.resume()}t.readyState===t.CONNECTING?t.once("open",function(){t._receiver.removeAllListeners("drain"),t._receiver.on("drain",n)}):(t._receiver.removeAllListeners("drain"),t._receiver.on("drain",n));let i=new lV({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(o){i.push(o)||(r=!1,t._socket.pause())}),t.once("error",function(o){i.destroyed||i.destroy(o)}),t.once("close",function(){i.destroyed||i.push(null)}),i._destroy=function(a,o){if(t.readyState===t.CLOSED){o(a),process.nextTick(NS,i);return}let c=!1;t.once("error",function(s){c=!0,o(s)}),t.once("close",function(){c||o(a),process.nextTick(NS,i)}),t.terminate()},i._final=function(a){if(t.readyState===t.CONNECTING){t.once("open",function(){i._final(a)});return}t._socket!==null&&(t._socket._writableState.finished?(a(),i._readableState.endEmitted&&i.destroy()):(t._socket.once("finish",function(){a()}),t.close()))},i._read=function(){t.readyState===t.OPEN&&!r&&(r=!0,t._receiver._writableState.needDrain||t._socket.resume())},i._write=function(a,o,c){if(t.readyState===t.CONNECTING){t.once("open",function(){i._write(a,o,c)});return}t.send(a,c)},i.on("end",fV),i.on("error",DS),i}JS.exports=dV});var US=P((xte,jS)=>{"use strict";var pV=require("events"),{createHash:hV}=require("crypto"),{createServer:vV,STATUS_CODES:_g}=require("http"),Xo=Il(),mV=Sg(),{format:bV,parse:gV}=xg(),{GUID:xV,kWebSocket:yV}=zo(),wV=/^[+/0-9A-Za-z]{22}==$/,Tg=class extends pV{constructor(e,r){if(super(),e={maxPayload:100*1024*1024,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,...e},e.port==null&&!e.server&&!e.noServer)throw new TypeError('One of the "port", "server", or "noServer" options must be specified');if(e.port!=null?(this._server=vV((n,i)=>{let a=_g[426];i.writeHead(426,{"Content-Length":a.length,"Content-Type":"text/plain"}),i.end(a)}),this._server.listen(e.port,e.host,e.backlog,r)):e.server&&(this._server=e.server),this._server){let n=this.emit.bind(this,"connection");this._removeListeners=AV(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(i,a,o)=>{this.handleUpgrade(i,a,o,n)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set),this.options=e}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(e&&this.once("close",e),this.clients)for(let n of this.clients)n.terminate();let r=this._server;if(r&&(this._removeListeners(),this._removeListeners=this._server=null,this.options.port!=null)){r.close(()=>this.emit("close"));return}process.nextTick(EV,this)}shouldHandle(e){if(this.options.path){let r=e.url.indexOf("?");if((r!==-1?e.url.slice(0,r):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,r,n,i){r.on("error",kg);let a=e.headers["sec-websocket-key"]!==void 0?e.headers["sec-websocket-key"].trim():!1,o=+e.headers["sec-websocket-version"],c={};if(e.method!=="GET"||e.headers.upgrade.toLowerCase()!=="websocket"||!a||!wV.test(a)||o!==8&&o!==13||!this.shouldHandle(e))return c0(r,400);if(this.options.perMessageDeflate){let u=new Xo(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let s=gV(e.headers["sec-websocket-extensions"]);s[Xo.extensionName]&&(u.accept(s[Xo.extensionName]),c[Xo.extensionName]=u)}catch{return c0(r,400)}}if(this.options.verifyClient){let u={origin:e.headers[`${o===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(u,(s,f,m,w)=>{if(!s)return c0(r,f||401,m,w);this.completeUpgrade(a,c,e,r,n,i)});return}if(!this.options.verifyClient(u))return c0(r,401)}this.completeUpgrade(a,c,e,r,n,i)}completeUpgrade(e,r,n,i,a,o){if(!i.readable||!i.writable)return i.destroy();if(i[yV])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");let u=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${hV("sha1").update(e+xV).digest("base64")}`],s=new mV(null),f=n.headers["sec-websocket-protocol"];if(f&&(f=f.split(",").map(SV),this.options.handleProtocols?f=this.options.handleProtocols(f,n):f=f[0],f&&(u.push(`Sec-WebSocket-Protocol: ${f}`),s._protocol=f)),r[Xo.extensionName]){let m=r[Xo.extensionName].params,w=bV({[Xo.extensionName]:[m]});u.push(`Sec-WebSocket-Extensions: ${w}`),s._extensions=r}this.emit("headers",u,n),i.write(u.concat(`\r -`).join(`\r -`)),i.removeListener("error",kg),s.setSocket(i,a,this.options.maxPayload),this.clients&&(this.clients.add(s),s.on("close",()=>this.clients.delete(s))),o(s,n)}};jS.exports=Tg;function AV(t,e){for(let r of Object.keys(e))t.on(r,e[r]);return function(){for(let n of Object.keys(e))t.removeListener(n,e[n])}}function EV(t){t.emit("close")}function kg(){this.destroy()}function c0(t,e,r,n){t.writable&&(r=r||_g[e],n={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(r),...n},t.write(`HTTP/1.1 ${e} ${_g[e]}\r -`+Object.keys(n).map(i=>`${i}: ${n[i]}`).join(`\r -`)+`\r -\r -`+r)),t.removeListener("error",kg),t.destroy()}function SV(t){return t.trim()}});var zS=P((yte,HS)=>{"use strict";var Jl=Sg();Jl.createWebSocketStream=qS();Jl.Server=US();Jl.Receiver=pg();Jl.Sender=hg();HS.exports=Jl});var GS=P(Bc=>{"use strict";var _V=Bc&&Bc.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Bc,"__esModule",{value:!0});Bc.WebSocket=void 0;var TV=_V(zS());Bc.WebSocket=TV.default});var l0=P(yi=>{"use strict";var kV=yi&&yi.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),Cg=yi&&yi.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},Og=yi&&yi.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]{"use strict";var KS=cn&&cn.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),FV=cn&&cn.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},LV=cn&&cn.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]{"use strict";var QS=Ia&&Ia.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Ia,"__esModule",{value:!0});Ia.AlchemyProvider=Ia.AlchemyWebSocketProvider=void 0;var DV=Ve(),JV=Ma(),qV=l0(),jV=re(),UV=et(),ZS=new jV.Logger(UV.version),HV=Ra(),d0="_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC",WS=function(t){QS(e,t);function e(r,n){var i=this,a=new YS(r,n),o=a.connection.url.replace(/^http/i,"ws").replace(".alchemyapi.",".ws.alchemyapi.");return i=t.call(this,o,a.network)||this,(0,DV.defineReadOnly)(i,"apiKey",a.apiKey),i}return e.prototype.isCommunityResource=function(){return this.apiKey===d0},e}(qV.WebSocketProvider);Ia.AlchemyWebSocketProvider=WS;var YS=function(t){QS(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.getWebSocketProvider=function(r,n){return new WS(r,n)},e.getApiKey=function(r){return r==null?d0:(r&&typeof r!="string"&&ZS.throwArgumentError("invalid apiKey","apiKey",r),r)},e.getUrl=function(r,n){var i=null;switch(r.name){case"homestead":i="eth-mainnet.alchemyapi.io/v2/";break;case"goerli":i="eth-goerli.g.alchemy.com/v2/";break;case"matic":i="polygon-mainnet.g.alchemy.com/v2/";break;case"maticmum":i="polygon-mumbai.g.alchemy.com/v2/";break;case"arbitrum":i="arb-mainnet.g.alchemy.com/v2/";break;case"arbitrum-goerli":i="arb-goerli.g.alchemy.com/v2/";break;case"optimism":i="opt-mainnet.g.alchemy.com/v2/";break;case"optimism-goerli":i="opt-goerli.g.alchemy.com/v2/";break;default:ZS.throwArgumentError("unsupported network","network",arguments[0])}return{allowGzip:!0,url:"https://"+i+n,throttleCallback:function(a,o){return n===d0&&(0,JV.showThrottleMessage)(),Promise.resolve(!0)}}},e.prototype.isCommunityResource=function(){return this.apiKey===d0},e}(HV.UrlJsonRpcProvider);Ia.AlchemyProvider=YS});var e_=P(Lc=>{"use strict";var zV=Lc&&Lc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Lc,"__esModule",{value:!0});Lc.AnkrProvider=void 0;var GV=Ma(),XV=Ra(),KV=re(),VV=et(),ZV=new KV.Logger(VV.version),p0="9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972";function QV(t){switch(t){case"homestead":return"rpc.ankr.com/eth/";case"ropsten":return"rpc.ankr.com/eth_ropsten/";case"rinkeby":return"rpc.ankr.com/eth_rinkeby/";case"goerli":return"rpc.ankr.com/eth_goerli/";case"matic":return"rpc.ankr.com/polygon/";case"arbitrum":return"rpc.ankr.com/arbitrum/"}return ZV.throwArgumentError("unsupported network","name",t)}var WV=function(t){zV(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.isCommunityResource=function(){return this.apiKey===p0},e.getApiKey=function(r){return r??p0},e.getUrl=function(r,n){n==null&&(n=p0);var i={allowGzip:!0,url:"https://"+QV(r.name)+n,throttleCallback:function(a,o){return n.apiKey===p0&&(0,GV.showThrottleMessage)(),Promise.resolve(!0)}};return n.projectSecret!=null&&(i.user="",i.password=n.projectSecret),i},e}(XV.UrlJsonRpcProvider);Lc.AnkrProvider=WV});var t_=P(wi=>{"use strict";var YV=wi&&wi.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),$V=wi&&wi.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},eZ=wi&&wi.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]{"use strict";var aZ=Ei&&Ei.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),h0=Ei&&Ei.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},v0=Ei&&Ei.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]=0&&(e.throttleRetry=!0),e}return t.result}function i_(t){if(t&&t.status==0&&t.message=="NOTOK"&&(t.result||"").toLowerCase().indexOf("rate limit")>=0){var e=new Error("throttled response");throw e.result=JSON.stringify(t),e.throttleRetry=!0,e}if(t.jsonrpc!="2.0"){var e=new Error("invalid response");throw e.result=JSON.stringify(t),e}if(t.error){var e=new Error(t.error.message||"unknown error");throw t.error.code&&(e.code=t.error.code),t.error.data&&(e.data=t.error.data),e}return t.result}function a_(t){if(t==="pending")throw new Error("pending not supported");return t==="latest"?t:parseInt(t.substring(2),16)}function Mg(t,e,r){if(t==="call"&&e.code===Ai.Logger.errors.SERVER_ERROR){var n=e.error;if(n&&(n.message.match(/reverted/i)||n.message.match(/VM execution error/i))){var i=n.data;if(i&&(i="0x"+i.replace(/^.*0x/i,"")),(0,m0.isHexString)(i))return i;Na.throwError("missing revert data in call exception",Ai.Logger.errors.CALL_EXCEPTION,{error:e,data:"0x"})}}var a=e.message;throw e.code===Ai.Logger.errors.SERVER_ERROR&&(e.error&&typeof e.error.message=="string"?a=e.error.message:typeof e.body=="string"?a=e.body:typeof e.responseText=="string"&&(a=e.responseText)),a=(a||"").toLowerCase(),a.match(/insufficient funds/)&&Na.throwError("insufficient funds for intrinsic transaction cost",Ai.Logger.errors.INSUFFICIENT_FUNDS,{error:e,method:t,transaction:r}),a.match(/same hash was already imported|transaction nonce is too low|nonce too low/)&&Na.throwError("nonce has already been used",Ai.Logger.errors.NONCE_EXPIRED,{error:e,method:t,transaction:r}),a.match(/another transaction with same nonce/)&&Na.throwError("replacement fee too low",Ai.Logger.errors.REPLACEMENT_UNDERPRICED,{error:e,method:t,transaction:r}),a.match(/execution failed due to an exception|execution reverted/)&&Na.throwError("cannot estimate gas; transaction may fail or may require manual gas limit",Ai.Logger.errors.UNPREDICTABLE_GAS_LIMIT,{error:e,method:t,transaction:r}),e}var dZ=function(t){aZ(e,t);function e(r,n){var i=t.call(this,r)||this;return(0,Pg.defineReadOnly)(i,"baseUrl",i.getBaseUrl()),(0,Pg.defineReadOnly)(i,"apiKey",n||null),i}return e.prototype.getBaseUrl=function(){switch(this.network?this.network.name:"invalid"){case"homestead":return"https://api.etherscan.io";case"goerli":return"https://api-goerli.etherscan.io";case"sepolia":return"https://api-sepolia.etherscan.io";case"matic":return"https://api.polygonscan.com";case"maticmum":return"https://api-testnet.polygonscan.com";case"arbitrum":return"https://api.arbiscan.io";case"arbitrum-goerli":return"https://api-goerli.arbiscan.io";case"optimism":return"https://api-optimistic.etherscan.io";case"optimism-goerli":return"https://api-goerli-optimistic.etherscan.io";default:}return Na.throwArgumentError("unsupported network","network",this.network.name)},e.prototype.getUrl=function(r,n){var i=Object.keys(n).reduce(function(o,c){var u=n[c];return u!=null&&(o+="&"+c+"="+u),o},""),a=this.apiKey?"&apikey="+this.apiKey:"";return this.baseUrl+"/api?module="+r+i+a},e.prototype.getPostUrl=function(){return this.baseUrl+"/api"},e.prototype.getPostData=function(r,n){return n.module=r,n.apikey=this.apiKey,n},e.prototype.fetch=function(r,n,i){return h0(this,void 0,void 0,function(){var a,o,c,u,s,f,m=this;return v0(this,function(w){switch(w.label){case 0:return a=i?this.getPostUrl():this.getUrl(r,n),o=i?this.getPostData(r,n):null,c=r==="proxy"?i_:fZ,this.emit("debug",{action:"request",request:a,provider:this}),u={url:a,throttleSlotInterval:1e3,throttleCallback:function(T,A){return m.isCommunityResource()&&(0,cZ.showThrottleMessage)(),Promise.resolve(!0)}},s=null,o&&(u.headers={"content-type":"application/x-www-form-urlencoded; charset=UTF-8"},s=Object.keys(o).map(function(T){return T+"="+o[T]}).join("&")),[4,(0,sZ.fetchJson)(u,s,c||i_)];case 1:return f=w.sent(),this.emit("debug",{action:"response",request:a,response:(0,Pg.deepCopy)(f),provider:this}),[2,f]}})})},e.prototype.detectNetwork=function(){return h0(this,void 0,void 0,function(){return v0(this,function(r){return[2,this.network]})})},e.prototype.perform=function(r,n){return h0(this,void 0,void 0,function(){var i,o,a,o,c,u,s,f,m,w,T,A,O;return v0(this,function(B){switch(B.label){case 0:switch(i=r,i){case"getBlockNumber":return[3,1];case"getGasPrice":return[3,2];case"getBalance":return[3,3];case"getTransactionCount":return[3,4];case"getCode":return[3,5];case"getStorageAt":return[3,6];case"sendTransaction":return[3,7];case"getBlock":return[3,8];case"getTransaction":return[3,9];case"getTransactionReceipt":return[3,10];case"call":return[3,11];case"estimateGas":return[3,15];case"getLogs":return[3,19];case"getEtherPrice":return[3,26]}return[3,28];case 1:return[2,this.fetch("proxy",{action:"eth_blockNumber"})];case 2:return[2,this.fetch("proxy",{action:"eth_gasPrice"})];case 3:return[2,this.fetch("account",{action:"balance",address:n.address,tag:n.blockTag})];case 4:return[2,this.fetch("proxy",{action:"eth_getTransactionCount",address:n.address,tag:n.blockTag})];case 5:return[2,this.fetch("proxy",{action:"eth_getCode",address:n.address,tag:n.blockTag})];case 6:return[2,this.fetch("proxy",{action:"eth_getStorageAt",address:n.address,position:n.position,tag:n.blockTag})];case 7:return[2,this.fetch("proxy",{action:"eth_sendRawTransaction",hex:n.signedTransaction},!0).catch(function(F){return Mg("sendTransaction",F,n.signedTransaction)})];case 8:if(n.blockTag)return[2,this.fetch("proxy",{action:"eth_getBlockByNumber",tag:n.blockTag,boolean:n.includeTransactions?"true":"false"})];throw new Error("getBlock by blockHash not implemented");case 9:return[2,this.fetch("proxy",{action:"eth_getTransactionByHash",txhash:n.transactionHash})];case 10:return[2,this.fetch("proxy",{action:"eth_getTransactionReceipt",txhash:n.transactionHash})];case 11:if(n.blockTag!=="latest")throw new Error("EtherscanProvider does not support blockTag for call");o=n_(n.transaction),o.module="proxy",o.action="eth_call",B.label=12;case 12:return B.trys.push([12,14,,15]),[4,this.fetch("proxy",o,!0)];case 13:return[2,B.sent()];case 14:return a=B.sent(),[2,Mg("call",a,n.transaction)];case 15:o=n_(n.transaction),o.module="proxy",o.action="eth_estimateGas",B.label=16;case 16:return B.trys.push([16,18,,19]),[4,this.fetch("proxy",o,!0)];case 17:return[2,B.sent()];case 18:return c=B.sent(),[2,Mg("estimateGas",c,n.transaction)];case 19:return u={action:"getLogs"},n.filter.fromBlock&&(u.fromBlock=a_(n.filter.fromBlock)),n.filter.toBlock&&(u.toBlock=a_(n.filter.toBlock)),n.filter.address&&(u.address=n.filter.address),n.filter.topics&&n.filter.topics.length>0&&(n.filter.topics.length>1&&Na.throwError("unsupported topic count",Ai.Logger.errors.UNSUPPORTED_OPERATION,{topics:n.filter.topics}),n.filter.topics.length===1&&(s=n.filter.topics[0],(typeof s!="string"||s.length!==66)&&Na.throwError("unsupported topic format",Ai.Logger.errors.UNSUPPORTED_OPERATION,{topic0:s}),u.topic0=s)),[4,this.fetch("logs",u)];case 20:f=B.sent(),m={},w=0,B.label=21;case 21:return w{"use strict";var pZ=_i&&_i.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),x0=_i&&_i.__awaiter||function(t,e,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function c(f){try{s(n.next(f))}catch(m){o(m)}}function u(f){try{s(n.throw(f))}catch(m){o(m)}}function s(f){f.done?a(f.value):i(f.value).then(c,u)}s((n=n.apply(t,e||[])).next())})},Hl=_i&&_i.__generator||function(t,e){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,i,a,o;return o={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function c(s){return function(f){return u([s,f])}}function u(s){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,i=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]e?null:(n+i)/2}function Ic(t){if(t===null)return"null";if(typeof t=="number"||typeof t=="boolean")return JSON.stringify(t);if(typeof t=="string")return t;if(vZ.BigNumber.isBigNumber(t))return t.toString();if(Array.isArray(t))return JSON.stringify(t.map(function(r){return Ic(r)}));if(typeof t=="object"){var e=Object.keys(t);return e.sort(),"{"+e.map(function(r){var n=t[r];return typeof n=="function"?n="[function]":n=Ic(n),JSON.stringify(r)+":"+n}).join(",")+"}"}throw new Error("unknown value type: "+typeof t)}var yZ=1;function l_(t){var e=null,r=null,n=new Promise(function(o){e=function(){r&&(clearTimeout(r),r=null),o()},r=setTimeout(e,t)}),i=function(o){return n=n.then(o),n};function a(){return n}return{cancel:e,getPromise:a,wait:i}}var wZ=[Da.Logger.errors.CALL_EXCEPTION,Da.Logger.errors.INSUFFICIENT_FUNDS,Da.Logger.errors.NONCE_EXPIRED,Da.Logger.errors.REPLACEMENT_UNDERPRICED,Da.Logger.errors.UNPREDICTABLE_GAS_LIMIT],AZ=["address","args","errorArgs","errorSignature","method","transaction"];function g0(t,e){var r={weight:t.weight};return Object.defineProperty(r,"provider",{get:function(){return t.provider}}),t.start&&(r.start=t.start),e&&(r.duration=e-t.start),t.done&&(t.error?r.error=t.error:r.result=t.result||null),r}function EZ(t,e){return function(r){var n={};r.forEach(function(c){var u=t(c.result);n[u]||(n[u]={count:0,result:c.result}),n[u].count++});for(var i=Object.keys(n),a=0;a=e)return o.result}}}function SZ(t,e,r){var n=Ic;switch(e){case"getBlockNumber":return function(i){var a=i.map(function(c){return c.result}),o=u_(i.map(function(c){return c.result}),2);if(o!=null)return o=Math.ceil(o),a.indexOf(o+1)>=0&&o++,o>=t._highestBlockNumber&&(t._highestBlockNumber=o),t._highestBlockNumber};case"getGasPrice":return function(i){var a=i.map(function(o){return o.result});return a.sort(),a[Math.floor(a.length/2)]};case"getEtherPrice":return function(i){return u_(i.map(function(a){return a.result}))};case"getBalance":case"getTransactionCount":case"getCode":case"getStorageAt":case"call":case"estimateGas":case"getLogs":break;case"getTransaction":case"getTransactionReceipt":n=function(i){return i==null?null:(i=(0,Si.shallowCopy)(i),i.confirmations=-1,Ic(i))};break;case"getBlock":r.includeTransactions?n=function(i){return i==null?null:(i=(0,Si.shallowCopy)(i),i.transactions=i.transactions.map(function(a){return a=(0,Si.shallowCopy)(a),a.confirmations=-1,a}),Ic(i))}:n=function(i){return i==null?null:Ic(i)};break;default:throw new Error("unknown method: "+e)}return EZ(n,t.quorum)}function Ul(t,e){return x0(this,void 0,void 0,function(){var r;return Hl(this,function(n){return r=t.provider,r.blockNumber!=null&&r.blockNumber>=e||e===-1?[2,r]:[2,(0,bZ.poll)(function(){return new Promise(function(i,a){setTimeout(function(){return r.blockNumber>=e?i(r):t.cancelled?i(null):i(void 0)},0)})},{oncePoll:r})]})})}function _Z(t,e,r,n){return x0(this,void 0,void 0,function(){var i,a,o;return Hl(this,function(c){switch(c.label){case 0:switch(i=t.provider,a=r,a){case"getBlockNumber":return[3,1];case"getGasPrice":return[3,1];case"getEtherPrice":return[3,2];case"getBalance":return[3,3];case"getTransactionCount":return[3,3];case"getCode":return[3,3];case"getStorageAt":return[3,6];case"getBlock":return[3,9];case"call":return[3,12];case"estimateGas":return[3,12];case"getTransaction":return[3,15];case"getTransactionReceipt":return[3,15];case"getLogs":return[3,16]}return[3,19];case 1:return[2,i[r]()];case 2:return i.getEtherPrice?[2,i.getEtherPrice()]:[3,19];case 3:return n.blockTag&&(0,Rc.isHexString)(n.blockTag)?[4,Ul(t,e)]:[3,5];case 4:i=c.sent(),c.label=5;case 5:return[2,i[r](n.address,n.blockTag||"latest")];case 6:return n.blockTag&&(0,Rc.isHexString)(n.blockTag)?[4,Ul(t,e)]:[3,8];case 7:i=c.sent(),c.label=8;case 8:return[2,i.getStorageAt(n.address,n.position,n.blockTag||"latest")];case 9:return n.blockTag&&(0,Rc.isHexString)(n.blockTag)?[4,Ul(t,e)]:[3,11];case 10:i=c.sent(),c.label=11;case 11:return[2,i[n.includeTransactions?"getBlockWithTransactions":"getBlock"](n.blockTag||n.blockHash)];case 12:return n.blockTag&&(0,Rc.isHexString)(n.blockTag)?[4,Ul(t,e)]:[3,14];case 13:i=c.sent(),c.label=14;case 14:return r==="call"&&n.blockTag?[2,i[r](n.transaction,n.blockTag)]:[2,i[r](n.transaction)];case 15:return[2,i[r](n.transactionHash)];case 16:return o=n.filter,o.fromBlock&&(0,Rc.isHexString)(o.fromBlock)||o.toBlock&&(0,Rc.isHexString)(o.toBlock)?[4,Ul(t,e)]:[3,18];case 17:i=c.sent(),c.label=18;case 18:return[2,i.getLogs(o)];case 19:return[2,Ko.throwError("unknown method error",Da.Logger.errors.UNKNOWN_ERROR,{method:r,params:n})]}})})}var TZ=function(t){pZ(e,t);function e(r,n){var i=this;r.length===0&&Ko.throwArgumentError("missing providers","providers",r);var a=r.map(function(u,s){if(hZ.Provider.isProvider(u)){var f=(0,s_.isCommunityResource)(u)?2e3:750,m=1;return Object.freeze({provider:u,weight:1,stallTimeout:f,priority:m})}var w=(0,Si.shallowCopy)(u);w.priority==null&&(w.priority=1),w.stallTimeout==null&&(w.stallTimeout=(0,s_.isCommunityResource)(u)?2e3:750),w.weight==null&&(w.weight=1);var T=w.weight;return(T%1||T>512||T<1)&&Ko.throwArgumentError("invalid weight; must be integer in [1, 512]","providers["+s+"].weight",T),Object.freeze(w)}),o=a.reduce(function(u,s){return u+s.weight},0);n==null?n=o/2:n>o&&Ko.throwArgumentError("quorum will always fail; larger than total weight","quorum",n);var c=c_(a.map(function(u){return u.provider.network}));return c==null&&(c=new Promise(function(u,s){setTimeout(function(){i.detectNetwork().then(u,s)},0)})),i=t.call(this,c)||this,(0,Si.defineReadOnly)(i,"providerConfigs",Object.freeze(a)),(0,Si.defineReadOnly)(i,"quorum",n),i._highestBlockNumber=-1,i}return e.prototype.detectNetwork=function(){return x0(this,void 0,void 0,function(){var r;return Hl(this,function(n){switch(n.label){case 0:return[4,Promise.all(this.providerConfigs.map(function(i){return i.provider.getNetwork()}))];case 1:return r=n.sent(),[2,c_(r)]}})})},e.prototype.perform=function(r,n){return x0(this,void 0,void 0,function(){var i,a,o,c,u,s,f,m,w,T,A,O=this;return Hl(this,function(B){switch(B.label){case 0:return r!=="sendTransaction"?[3,2]:[4,Promise.all(this.providerConfigs.map(function(F){return F.provider.sendTransaction(n.signedTransaction).then(function(I){return I.hash},function(I){return I})}))];case 1:for(i=B.sent(),a=0;a=T.quorum?(j=c(G),j!==void 0?(u.forEach(function(U){U.staller&&U.staller.cancel(),U.cancelled=!0}),[2,{value:j}]):m?[3,4]:[4,l_(100).getPromise()]):[3,5];case 3:X.sent(),X.label=4;case 4:m=!1,X.label=5;case 5:return Z=u.reduce(function(U,M){if(!M.done||M.error==null)return U;var v=M.error.code;return wZ.indexOf(v)>=0&&(U[v]||(U[v]={error:M.error,weight:0}),U[v].weight+=M.weight),U},{}),Object.keys(Z).forEach(function(U){var M=Z[U];if(!(M.weight{"use strict";var kZ=Nc&&Nc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Nc,"__esModule",{value:!0});Nc.IpcProvider=void 0;var CZ=require("net"),OZ=Ve(),d_=re(),PZ=et(),MZ=new d_.Logger(PZ.version),BZ=Ho(),FZ=function(t){kZ(e,t);function e(r,n){var i=this;return r==null&&MZ.throwError("missing path",d_.Logger.errors.MISSING_ARGUMENT,{arg:"path"}),i=t.call(this,"ipc://"+r,n)||this,(0,OZ.defineReadOnly)(i,"path",r),i}return e.prototype.send=function(r,n){var i=this,a=JSON.stringify({method:r,params:n,id:42,jsonrpc:"2.0"});return new Promise(function(o,c){var u=Buffer.alloc(0),s=(0,CZ.connect)(i.path);s.on("data",function(f){u=Buffer.concat([u,f])}),s.on("end",function(){try{o(JSON.parse(u.toString()).result),s.destroy()}catch(f){c(f),s.destroy()}}),s.on("error",function(f){c(f),s.destroy()}),s.write(a),s.end()})},e}(BZ.JsonRpcProvider);Nc.IpcProvider=FZ});var b_=P(Ja=>{"use strict";var h_=Ja&&Ja.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Ja,"__esModule",{value:!0});Ja.InfuraProvider=Ja.InfuraWebSocketProvider=void 0;var Bg=Ve(),LZ=l0(),RZ=Ma(),Fg=re(),IZ=et(),y0=new Fg.Logger(IZ.version),NZ=Ra(),zl="84842078b09946638c03157f83405213",v_=function(t){h_(e,t);function e(r,n){var i=this,a=new m_(r,n),o=a.connection;o.password&&y0.throwError("INFURA WebSocket project secrets unsupported",Fg.Logger.errors.UNSUPPORTED_OPERATION,{operation:"InfuraProvider.getWebSocketProvider()"});var c=o.url.replace(/^http/i,"ws").replace("/v3/","/ws/v3/");return i=t.call(this,c,r)||this,(0,Bg.defineReadOnly)(i,"apiKey",a.projectId),(0,Bg.defineReadOnly)(i,"projectId",a.projectId),(0,Bg.defineReadOnly)(i,"projectSecret",a.projectSecret),i}return e.prototype.isCommunityResource=function(){return this.projectId===zl},e}(LZ.WebSocketProvider);Ja.InfuraWebSocketProvider=v_;var m_=function(t){h_(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.getWebSocketProvider=function(r,n){return new v_(r,n)},e.getApiKey=function(r){var n={apiKey:zl,projectId:zl,projectSecret:null};return r==null||(typeof r=="string"?n.projectId=r:r.projectSecret!=null?(y0.assertArgument(typeof r.projectId=="string","projectSecret requires a projectId","projectId",r.projectId),y0.assertArgument(typeof r.projectSecret=="string","invalid projectSecret","projectSecret","[REDACTED]"),n.projectId=r.projectId,n.projectSecret=r.projectSecret):r.projectId&&(n.projectId=r.projectId),n.apiKey=n.projectId),n},e.getUrl=function(r,n){var i=null;switch(r?r.name:"unknown"){case"homestead":i="mainnet.infura.io";break;case"goerli":i="goerli.infura.io";break;case"sepolia":i="sepolia.infura.io";break;case"matic":i="polygon-mainnet.infura.io";break;case"maticmum":i="polygon-mumbai.infura.io";break;case"optimism":i="optimism-mainnet.infura.io";break;case"optimism-goerli":i="optimism-goerli.infura.io";break;case"arbitrum":i="arbitrum-mainnet.infura.io";break;case"arbitrum-goerli":i="arbitrum-goerli.infura.io";break;default:y0.throwError("unsupported network",Fg.Logger.errors.INVALID_ARGUMENT,{argument:"network",value:r})}var a={allowGzip:!0,url:"https://"+i+"/v3/"+n.projectId,throttleCallback:function(o,c){return n.projectId===zl&&(0,RZ.showThrottleMessage)(),Promise.resolve(!0)}};return n.projectSecret!=null&&(a.user="",a.password=n.projectSecret),a},e.prototype.isCommunityResource=function(){return this.projectId===zl},e}(NZ.UrlJsonRpcProvider);Ja.InfuraProvider=m_});var g_=P(Dc=>{"use strict";var DZ=Dc&&Dc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Dc,"__esModule",{value:!0});Dc.JsonRpcBatchProvider=void 0;var JZ=Ve(),qZ=Uo(),jZ=Ho(),UZ=function(t){DZ(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.send=function(r,n){var i=this,a={method:r,params:n,id:this._nextId++,jsonrpc:"2.0"};this._pendingBatch==null&&(this._pendingBatch=[]);var o={request:a,resolve:null,reject:null},c=new Promise(function(u,s){o.resolve=u,o.reject=s});return this._pendingBatch.push(o),this._pendingBatchAggregator||(this._pendingBatchAggregator=setTimeout(function(){var u=i._pendingBatch;i._pendingBatch=null,i._pendingBatchAggregator=null;var s=u.map(function(f){return f.request});return i.emit("debug",{action:"requestBatch",request:(0,JZ.deepCopy)(s),provider:i}),(0,qZ.fetchJson)(i.connection,JSON.stringify(s)).then(function(f){i.emit("debug",{action:"response",request:s,response:f,provider:i}),u.forEach(function(m,w){var T=f[w];if(T.error){var A=new Error(T.error.message);A.code=T.error.code,A.data=T.error.data,m.reject(A)}else m.resolve(T.result)})},function(f){i.emit("debug",{action:"response",error:f,request:s,provider:i}),u.forEach(function(m){m.reject(f)})})},10)),c},e}(jZ.JsonRpcProvider);Dc.JsonRpcBatchProvider=UZ});var x_=P(Jc=>{"use strict";var HZ=Jc&&Jc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Jc,"__esModule",{value:!0});Jc.NodesmithProvider=void 0;var zZ=Ra(),GZ=re(),XZ=et(),Lg=new GZ.Logger(XZ.version),KZ="ETHERS_JS_SHARED",VZ=function(t){HZ(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.getApiKey=function(r){return r&&typeof r!="string"&&Lg.throwArgumentError("invalid apiKey","apiKey",r),r||KZ},e.getUrl=function(r,n){Lg.warn("NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.");var i=null;switch(r.name){case"homestead":i="https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc";break;case"ropsten":i="https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc";break;case"rinkeby":i="https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc";break;case"goerli":i="https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc";break;case"kovan":i="https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc";break;default:Lg.throwArgumentError("unsupported network","network",arguments[0])}return i+"?apiKey="+n},e}(zZ.UrlJsonRpcProvider);Jc.NodesmithProvider=VZ});var E_=P(qc=>{"use strict";var ZZ=qc&&qc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(qc,"__esModule",{value:!0});qc.PocketProvider=void 0;var A_=re(),QZ=et(),y_=new A_.Logger(QZ.version),WZ=Ra(),w_="62e1ad51b37b8e00394bda3b",YZ=function(t){ZZ(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.getApiKey=function(r){var n={applicationId:null,loadBalancer:!0,applicationSecretKey:null};return r==null?n.applicationId=w_:typeof r=="string"?n.applicationId=r:r.applicationSecretKey!=null?(n.applicationId=r.applicationId,n.applicationSecretKey=r.applicationSecretKey):r.applicationId?n.applicationId=r.applicationId:y_.throwArgumentError("unsupported PocketProvider apiKey","apiKey",r),n},e.getUrl=function(r,n){var i=null;switch(r?r.name:"unknown"){case"goerli":i="eth-goerli.gateway.pokt.network";break;case"homestead":i="eth-mainnet.gateway.pokt.network";break;case"kovan":i="poa-kovan.gateway.pokt.network";break;case"matic":i="poly-mainnet.gateway.pokt.network";break;case"maticmum":i="polygon-mumbai-rpc.gateway.pokt.network";break;case"rinkeby":i="eth-rinkeby.gateway.pokt.network";break;case"ropsten":i="eth-ropsten.gateway.pokt.network";break;default:y_.throwError("unsupported network",A_.Logger.errors.INVALID_ARGUMENT,{argument:"network",value:r})}var a="https://"+i+"/v1/lb/"+n.applicationId,o={headers:{},url:a};return n.applicationSecretKey!=null&&(o.user="",o.password=n.applicationSecretKey),o},e.prototype.isCommunityResource=function(){return this.applicationId===w_},e}(WZ.UrlJsonRpcProvider);qc.PocketProvider=YZ});var T_=P(jc=>{"use strict";var $Z=jc&&jc.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(jc,"__esModule",{value:!0});jc.Web3Provider=void 0;var w0=Ve(),eQ=re(),rQ=et(),S_=new eQ.Logger(rQ.version),tQ=Ho(),nQ=1;function __(t,e){var r="Web3LegacyFetcher";return function(n,i){var a=this,o={method:n,params:i,id:nQ++,jsonrpc:"2.0"};return new Promise(function(c,u){a.emit("debug",{action:"request",fetcher:r,request:(0,w0.deepCopy)(o),provider:a}),e(o,function(s,f){if(s)return a.emit("debug",{action:"response",fetcher:r,error:s,request:o,provider:a}),u(s);if(a.emit("debug",{action:"response",fetcher:r,request:o,response:f,provider:a}),f.error){var m=new Error(f.error.message);return m.code=f.error.code,m.data=f.error.data,u(m)}c(f.result)})})}}function iQ(t){return function(e,r){var n=this;r==null&&(r=[]);var i={method:e,params:r};return this.emit("debug",{action:"request",fetcher:"Eip1193Fetcher",request:(0,w0.deepCopy)(i),provider:this}),t.request(i).then(function(a){return n.emit("debug",{action:"response",fetcher:"Eip1193Fetcher",request:i,response:a,provider:n}),a},function(a){throw n.emit("debug",{action:"response",fetcher:"Eip1193Fetcher",request:i,error:a,provider:n}),a})}}var aQ=function(t){$Z(e,t);function e(r,n){var i=this;r==null&&S_.throwArgumentError("missing provider","provider",r);var a=null,o=null,c=null;return typeof r=="function"?(a="unknown:",o=r):(a=r.host||r.path||"",!a&&r.isMetaMask&&(a="metamask"),c=r,r.request?(a===""&&(a="eip-1193:"),o=iQ(r)):r.sendAsync?o=__(r,r.sendAsync.bind(r)):r.send?o=__(r,r.send.bind(r)):S_.throwArgumentError("unsupported provider","provider",r),a||(a="unknown:")),i=t.call(this,a,n)||this,(0,w0.defineReadOnly)(i,"jsonRpcFetchFunc",o),(0,w0.defineReadOnly)(i,"provider",c),i}return e.prototype.send=function(r,n){return this.jsonRpcFetchFunc(r,n)},e}(tQ.JsonRpcProvider);jc.Web3Provider=aQ});var Ng=P(ee=>{"use strict";Object.defineProperty(ee,"__esModule",{value:!0});ee.Formatter=ee.showThrottleMessage=ee.isCommunityResourcable=ee.isCommunityResource=ee.getNetwork=ee.getDefaultProvider=ee.JsonRpcSigner=ee.IpcProvider=ee.WebSocketProvider=ee.Web3Provider=ee.StaticJsonRpcProvider=ee.PocketProvider=ee.NodesmithProvider=ee.JsonRpcBatchProvider=ee.JsonRpcProvider=ee.InfuraWebSocketProvider=ee.InfuraProvider=ee.EtherscanProvider=ee.CloudflareProvider=ee.AnkrProvider=ee.AlchemyWebSocketProvider=ee.AlchemyProvider=ee.FallbackProvider=ee.UrlJsonRpcProvider=ee.Resolver=ee.BaseProvider=ee.Provider=void 0;var oQ=Ys();Object.defineProperty(ee,"Provider",{enumerable:!0,get:function(){return oQ.Provider}});var C_=Rb();Object.defineProperty(ee,"getNetwork",{enumerable:!0,get:function(){return C_.getNetwork}});var O_=Pl();Object.defineProperty(ee,"BaseProvider",{enumerable:!0,get:function(){return O_.BaseProvider}});Object.defineProperty(ee,"Resolver",{enumerable:!0,get:function(){return O_.Resolver}});var Rg=$S();Object.defineProperty(ee,"AlchemyProvider",{enumerable:!0,get:function(){return Rg.AlchemyProvider}});Object.defineProperty(ee,"AlchemyWebSocketProvider",{enumerable:!0,get:function(){return Rg.AlchemyWebSocketProvider}});var P_=e_();Object.defineProperty(ee,"AnkrProvider",{enumerable:!0,get:function(){return P_.AnkrProvider}});var M_=t_();Object.defineProperty(ee,"CloudflareProvider",{enumerable:!0,get:function(){return M_.CloudflareProvider}});var B_=o_();Object.defineProperty(ee,"EtherscanProvider",{enumerable:!0,get:function(){return B_.EtherscanProvider}});var F_=f_();Object.defineProperty(ee,"FallbackProvider",{enumerable:!0,get:function(){return F_.FallbackProvider}});var L_=p_();Object.defineProperty(ee,"IpcProvider",{enumerable:!0,get:function(){return L_.IpcProvider}});var Ig=b_();Object.defineProperty(ee,"InfuraProvider",{enumerable:!0,get:function(){return Ig.InfuraProvider}});Object.defineProperty(ee,"InfuraWebSocketProvider",{enumerable:!0,get:function(){return Ig.InfuraWebSocketProvider}});var A0=Ho();Object.defineProperty(ee,"JsonRpcProvider",{enumerable:!0,get:function(){return A0.JsonRpcProvider}});Object.defineProperty(ee,"JsonRpcSigner",{enumerable:!0,get:function(){return A0.JsonRpcSigner}});var sQ=g_();Object.defineProperty(ee,"JsonRpcBatchProvider",{enumerable:!0,get:function(){return sQ.JsonRpcBatchProvider}});var R_=x_();Object.defineProperty(ee,"NodesmithProvider",{enumerable:!0,get:function(){return R_.NodesmithProvider}});var I_=E_();Object.defineProperty(ee,"PocketProvider",{enumerable:!0,get:function(){return I_.PocketProvider}});var N_=Ra();Object.defineProperty(ee,"StaticJsonRpcProvider",{enumerable:!0,get:function(){return N_.StaticJsonRpcProvider}});Object.defineProperty(ee,"UrlJsonRpcProvider",{enumerable:!0,get:function(){return N_.UrlJsonRpcProvider}});var D_=T_();Object.defineProperty(ee,"Web3Provider",{enumerable:!0,get:function(){return D_.Web3Provider}});var J_=l0();Object.defineProperty(ee,"WebSocketProvider",{enumerable:!0,get:function(){return J_.WebSocketProvider}});var E0=Ma();Object.defineProperty(ee,"Formatter",{enumerable:!0,get:function(){return E0.Formatter}});Object.defineProperty(ee,"isCommunityResourcable",{enumerable:!0,get:function(){return E0.isCommunityResourcable}});Object.defineProperty(ee,"isCommunityResource",{enumerable:!0,get:function(){return E0.isCommunityResource}});Object.defineProperty(ee,"showThrottleMessage",{enumerable:!0,get:function(){return E0.showThrottleMessage}});var q_=re(),cQ=et(),k_=new q_.Logger(cQ.version);function uQ(t,e){if(t==null&&(t="homestead"),typeof t=="string"){var r=t.match(/^(ws|http)s?:/i);if(r)switch(r[1].toLowerCase()){case"http":case"https":return new A0.JsonRpcProvider(t);case"ws":case"wss":return new J_.WebSocketProvider(t);default:k_.throwArgumentError("unsupported URL scheme","network",t)}}var n=(0,C_.getNetwork)(t);return(!n||!n._defaultProvider)&&k_.throwError("unsupported getDefaultProvider network",q_.Logger.errors.NETWORK_ERROR,{operation:"getDefaultProvider",network:t}),n._defaultProvider({FallbackProvider:F_.FallbackProvider,AlchemyProvider:Rg.AlchemyProvider,AnkrProvider:P_.AnkrProvider,CloudflareProvider:M_.CloudflareProvider,EtherscanProvider:B_.EtherscanProvider,InfuraProvider:Ig.InfuraProvider,JsonRpcProvider:A0.JsonRpcProvider,NodesmithProvider:R_.NodesmithProvider,PocketProvider:I_.PocketProvider,Web3Provider:D_.Web3Provider,IpcProvider:L_.IpcProvider},e)}ee.getDefaultProvider=uQ});var j_=P(S0=>{"use strict";Object.defineProperty(S0,"__esModule",{value:!0});S0.version=void 0;S0.version="solidity/5.7.0"});var H_=P(qa=>{"use strict";Object.defineProperty(qa,"__esModule",{value:!0});qa.sha256=qa.keccak256=qa.pack=void 0;var lQ=Tr(),Sn=De(),fQ=Bt(),dQ=dc(),pQ=Cr(),hQ=new RegExp("^bytes([0-9]+)$"),vQ=new RegExp("^(u?int)([0-9]*)$"),mQ=new RegExp("^(.*)\\[([0-9]*)\\]$"),bQ="0000000000000000000000000000000000000000000000000000000000000000",gQ=re(),xQ=j_(),Uc=new gQ.Logger(xQ.version);function U_(t,e,r){switch(t){case"address":return r?(0,Sn.zeroPad)(e,32):(0,Sn.arrayify)(e);case"string":return(0,pQ.toUtf8Bytes)(e);case"bytes":return(0,Sn.arrayify)(e);case"bool":return e=e?"0x01":"0x00",r?(0,Sn.zeroPad)(e,32):(0,Sn.arrayify)(e)}var n=t.match(vQ);if(n){var i=parseInt(n[2]||"256");return(n[2]&&String(i)!==n[2]||i%8!==0||i===0||i>256)&&Uc.throwArgumentError("invalid number type","type",t),r&&(i=256),e=lQ.BigNumber.from(e).toTwos(i),(0,Sn.zeroPad)(e,i/8)}if(n=t.match(hQ),n){var i=parseInt(n[1]);return(String(i)!==n[1]||i===0||i>32)&&Uc.throwArgumentError("invalid bytes type","type",t),(0,Sn.arrayify)(e).byteLength!==i&&Uc.throwArgumentError("invalid value for "+t,"value",e),r?(0,Sn.arrayify)((e+bQ).substring(0,66)):e}if(n=t.match(mQ),n&&Array.isArray(e)){var a=n[1],o=parseInt(n[2]||String(e.length));o!=e.length&&Uc.throwArgumentError("invalid array length for "+t,"value",e);var c=[];return e.forEach(function(u){c.push(U_(a,u,!0))}),(0,Sn.concat)(c)}return Uc.throwArgumentError("invalid type","type",t)}function Dg(t,e){t.length!=e.length&&Uc.throwArgumentError("wrong number of values; expected ${ types.length }","values",e);var r=[];return t.forEach(function(n,i){r.push(U_(n,e[i]))}),(0,Sn.hexlify)((0,Sn.concat)(r))}qa.pack=Dg;function yQ(t,e){return(0,fQ.keccak256)(Dg(t,e))}qa.keccak256=yQ;function wQ(t,e){return(0,dQ.sha256)(Dg(t,e))}qa.sha256=wQ});var z_=P(_0=>{"use strict";Object.defineProperty(_0,"__esModule",{value:!0});_0.version=void 0;_0.version="units/5.7.0"});var Q_=P(un=>{"use strict";Object.defineProperty(un,"__esModule",{value:!0});un.parseEther=un.formatEther=un.parseUnits=un.formatUnits=un.commify=void 0;var G_=Tr(),AQ=re(),EQ=z_(),X_=new AQ.Logger(EQ.version),K_=["wei","kwei","mwei","gwei","szabo","finney","ether"];function SQ(t){var e=String(t).split(".");(e.length>2||!e[0].match(/^-?[0-9]*$/)||e[1]&&!e[1].match(/^[0-9]*$/)||t==="."||t==="-.")&&X_.throwArgumentError("invalid value","value",t);var r=e[0],n="";for(r.substring(0,1)==="-"&&(n="-",r=r.substring(1));r.substring(0,1)==="0";)r=r.substring(1);r===""&&(r="0");var i="";for(e.length===2&&(i="."+(e[1]||"0"));i.length>2&&i[i.length-1]==="0";)i=i.substring(0,i.length-1);for(var a=[];r.length;)if(r.length<=3){a.unshift(r);break}else{var o=r.length-3;a.unshift(r.substring(o)),r=r.substring(0,o)}return n+a.join(",")+i}un.commify=SQ;function V_(t,e){if(typeof e=="string"){var r=K_.indexOf(e);r!==-1&&(e=3*r)}return(0,G_.formatFixed)(t,e??18)}un.formatUnits=V_;function Z_(t,e){if(typeof t!="string"&&X_.throwArgumentError("value must be a string","value",t),typeof e=="string"){var r=K_.indexOf(e);r!==-1&&(e=3*r)}return(0,G_.parseFixed)(t,e??18)}un.parseUnits=Z_;function _Q(t){return V_(t,18)}un.formatEther=_Q;function TQ(t){return Z_(t,18)}un.parseEther=TQ});var rT=P(R=>{"use strict";var kQ=R&&R.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r),Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),CQ=R&&R.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),W_=R&&R.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&kQ(e,t,r);return CQ(e,t),e};Object.defineProperty(R,"__esModule",{value:!0});R.formatBytes32String=R.Utf8ErrorFuncs=R.toUtf8String=R.toUtf8CodePoints=R.toUtf8Bytes=R._toEscapedUtf8String=R.nameprep=R.hexDataSlice=R.hexDataLength=R.hexZeroPad=R.hexValue=R.hexStripZeros=R.hexConcat=R.isHexString=R.hexlify=R.base64=R.base58=R.TransactionDescription=R.LogDescription=R.Interface=R.SigningKey=R.HDNode=R.defaultPath=R.isBytesLike=R.isBytes=R.zeroPad=R.stripZeros=R.concat=R.arrayify=R.shallowCopy=R.resolveProperties=R.getStatic=R.defineReadOnly=R.deepCopy=R.checkProperties=R.poll=R.fetchJson=R._fetchData=R.RLP=R.Logger=R.checkResultErrors=R.FormatTypes=R.ParamType=R.FunctionFragment=R.EventFragment=R.ErrorFragment=R.ConstructorFragment=R.Fragment=R.defaultAbiCoder=R.AbiCoder=void 0;R.Indexed=R.Utf8ErrorReason=R.UnicodeNormalizationForm=R.SupportedAlgorithm=R.mnemonicToSeed=R.isValidMnemonic=R.entropyToMnemonic=R.mnemonicToEntropy=R.getAccountPath=R.verifyTypedData=R.verifyMessage=R.recoverPublicKey=R.computePublicKey=R.recoverAddress=R.computeAddress=R.getJsonWalletAddress=R.TransactionTypes=R.serializeTransaction=R.parseTransaction=R.accessListify=R.joinSignature=R.splitSignature=R.soliditySha256=R.solidityKeccak256=R.solidityPack=R.shuffled=R.randomBytes=R.sha512=R.sha256=R.ripemd160=R.keccak256=R.computeHmac=R.commify=R.parseUnits=R.formatUnits=R.parseEther=R.formatEther=R.isAddress=R.getCreate2Address=R.getContractAddress=R.getIcapAddress=R.getAddress=R._TypedDataEncoder=R.id=R.isValidName=R.namehash=R.hashMessage=R.dnsEncode=R.parseBytes32String=void 0;var Pt=km();Object.defineProperty(R,"AbiCoder",{enumerable:!0,get:function(){return Pt.AbiCoder}});Object.defineProperty(R,"checkResultErrors",{enumerable:!0,get:function(){return Pt.checkResultErrors}});Object.defineProperty(R,"ConstructorFragment",{enumerable:!0,get:function(){return Pt.ConstructorFragment}});Object.defineProperty(R,"defaultAbiCoder",{enumerable:!0,get:function(){return Pt.defaultAbiCoder}});Object.defineProperty(R,"ErrorFragment",{enumerable:!0,get:function(){return Pt.ErrorFragment}});Object.defineProperty(R,"EventFragment",{enumerable:!0,get:function(){return Pt.EventFragment}});Object.defineProperty(R,"FormatTypes",{enumerable:!0,get:function(){return Pt.FormatTypes}});Object.defineProperty(R,"Fragment",{enumerable:!0,get:function(){return Pt.Fragment}});Object.defineProperty(R,"FunctionFragment",{enumerable:!0,get:function(){return Pt.FunctionFragment}});Object.defineProperty(R,"Indexed",{enumerable:!0,get:function(){return Pt.Indexed}});Object.defineProperty(R,"Interface",{enumerable:!0,get:function(){return Pt.Interface}});Object.defineProperty(R,"LogDescription",{enumerable:!0,get:function(){return Pt.LogDescription}});Object.defineProperty(R,"ParamType",{enumerable:!0,get:function(){return Pt.ParamType}});Object.defineProperty(R,"TransactionDescription",{enumerable:!0,get:function(){return Pt.TransactionDescription}});var Gl=Vt();Object.defineProperty(R,"getAddress",{enumerable:!0,get:function(){return Gl.getAddress}});Object.defineProperty(R,"getCreate2Address",{enumerable:!0,get:function(){return Gl.getCreate2Address}});Object.defineProperty(R,"getContractAddress",{enumerable:!0,get:function(){return Gl.getContractAddress}});Object.defineProperty(R,"getIcapAddress",{enumerable:!0,get:function(){return Gl.getIcapAddress}});Object.defineProperty(R,"isAddress",{enumerable:!0,get:function(){return Gl.isAddress}});var OQ=W_(Vu());R.base64=OQ;var PQ=Sp();Object.defineProperty(R,"base58",{enumerable:!0,get:function(){return PQ.Base58}});var vt=De();Object.defineProperty(R,"arrayify",{enumerable:!0,get:function(){return vt.arrayify}});Object.defineProperty(R,"concat",{enumerable:!0,get:function(){return vt.concat}});Object.defineProperty(R,"hexConcat",{enumerable:!0,get:function(){return vt.hexConcat}});Object.defineProperty(R,"hexDataSlice",{enumerable:!0,get:function(){return vt.hexDataSlice}});Object.defineProperty(R,"hexDataLength",{enumerable:!0,get:function(){return vt.hexDataLength}});Object.defineProperty(R,"hexlify",{enumerable:!0,get:function(){return vt.hexlify}});Object.defineProperty(R,"hexStripZeros",{enumerable:!0,get:function(){return vt.hexStripZeros}});Object.defineProperty(R,"hexValue",{enumerable:!0,get:function(){return vt.hexValue}});Object.defineProperty(R,"hexZeroPad",{enumerable:!0,get:function(){return vt.hexZeroPad}});Object.defineProperty(R,"isBytes",{enumerable:!0,get:function(){return vt.isBytes}});Object.defineProperty(R,"isBytesLike",{enumerable:!0,get:function(){return vt.isBytesLike}});Object.defineProperty(R,"isHexString",{enumerable:!0,get:function(){return vt.isHexString}});Object.defineProperty(R,"joinSignature",{enumerable:!0,get:function(){return vt.joinSignature}});Object.defineProperty(R,"zeroPad",{enumerable:!0,get:function(){return vt.zeroPad}});Object.defineProperty(R,"splitSignature",{enumerable:!0,get:function(){return vt.splitSignature}});Object.defineProperty(R,"stripZeros",{enumerable:!0,get:function(){return vt.stripZeros}});var Hc=ko();Object.defineProperty(R,"_TypedDataEncoder",{enumerable:!0,get:function(){return Hc._TypedDataEncoder}});Object.defineProperty(R,"dnsEncode",{enumerable:!0,get:function(){return Hc.dnsEncode}});Object.defineProperty(R,"hashMessage",{enumerable:!0,get:function(){return Hc.hashMessage}});Object.defineProperty(R,"id",{enumerable:!0,get:function(){return Hc.id}});Object.defineProperty(R,"isValidName",{enumerable:!0,get:function(){return Hc.isValidName}});Object.defineProperty(R,"namehash",{enumerable:!0,get:function(){return Hc.namehash}});var Vo=Jp();Object.defineProperty(R,"defaultPath",{enumerable:!0,get:function(){return Vo.defaultPath}});Object.defineProperty(R,"entropyToMnemonic",{enumerable:!0,get:function(){return Vo.entropyToMnemonic}});Object.defineProperty(R,"getAccountPath",{enumerable:!0,get:function(){return Vo.getAccountPath}});Object.defineProperty(R,"HDNode",{enumerable:!0,get:function(){return Vo.HDNode}});Object.defineProperty(R,"isValidMnemonic",{enumerable:!0,get:function(){return Vo.isValidMnemonic}});Object.defineProperty(R,"mnemonicToEntropy",{enumerable:!0,get:function(){return Vo.mnemonicToEntropy}});Object.defineProperty(R,"mnemonicToSeed",{enumerable:!0,get:function(){return Vo.mnemonicToSeed}});var MQ=Mb();Object.defineProperty(R,"getJsonWalletAddress",{enumerable:!0,get:function(){return MQ.getJsonWalletAddress}});var BQ=Bt();Object.defineProperty(R,"keccak256",{enumerable:!0,get:function(){return BQ.keccak256}});var FQ=re();Object.defineProperty(R,"Logger",{enumerable:!0,get:function(){return FQ.Logger}});var T0=dc();Object.defineProperty(R,"computeHmac",{enumerable:!0,get:function(){return T0.computeHmac}});Object.defineProperty(R,"ripemd160",{enumerable:!0,get:function(){return T0.ripemd160}});Object.defineProperty(R,"sha256",{enumerable:!0,get:function(){return T0.sha256}});Object.defineProperty(R,"sha512",{enumerable:!0,get:function(){return T0.sha512}});var Jg=H_();Object.defineProperty(R,"solidityKeccak256",{enumerable:!0,get:function(){return Jg.keccak256}});Object.defineProperty(R,"solidityPack",{enumerable:!0,get:function(){return Jg.pack}});Object.defineProperty(R,"soliditySha256",{enumerable:!0,get:function(){return Jg.sha256}});var Y_=yl();Object.defineProperty(R,"randomBytes",{enumerable:!0,get:function(){return Y_.randomBytes}});Object.defineProperty(R,"shuffled",{enumerable:!0,get:function(){return Y_.shuffled}});var zc=Ve();Object.defineProperty(R,"checkProperties",{enumerable:!0,get:function(){return zc.checkProperties}});Object.defineProperty(R,"deepCopy",{enumerable:!0,get:function(){return zc.deepCopy}});Object.defineProperty(R,"defineReadOnly",{enumerable:!0,get:function(){return zc.defineReadOnly}});Object.defineProperty(R,"getStatic",{enumerable:!0,get:function(){return zc.getStatic}});Object.defineProperty(R,"resolveProperties",{enumerable:!0,get:function(){return zc.resolveProperties}});Object.defineProperty(R,"shallowCopy",{enumerable:!0,get:function(){return zc.shallowCopy}});var LQ=W_(Cd());R.RLP=LQ;var qg=al();Object.defineProperty(R,"computePublicKey",{enumerable:!0,get:function(){return qg.computePublicKey}});Object.defineProperty(R,"recoverPublicKey",{enumerable:!0,get:function(){return qg.recoverPublicKey}});Object.defineProperty(R,"SigningKey",{enumerable:!0,get:function(){return qg.SigningKey}});var ja=Cr();Object.defineProperty(R,"formatBytes32String",{enumerable:!0,get:function(){return ja.formatBytes32String}});Object.defineProperty(R,"nameprep",{enumerable:!0,get:function(){return ja.nameprep}});Object.defineProperty(R,"parseBytes32String",{enumerable:!0,get:function(){return ja.parseBytes32String}});Object.defineProperty(R,"_toEscapedUtf8String",{enumerable:!0,get:function(){return ja._toEscapedUtf8String}});Object.defineProperty(R,"toUtf8Bytes",{enumerable:!0,get:function(){return ja.toUtf8Bytes}});Object.defineProperty(R,"toUtf8CodePoints",{enumerable:!0,get:function(){return ja.toUtf8CodePoints}});Object.defineProperty(R,"toUtf8String",{enumerable:!0,get:function(){return ja.toUtf8String}});Object.defineProperty(R,"Utf8ErrorFuncs",{enumerable:!0,get:function(){return ja.Utf8ErrorFuncs}});var Gc=Ji();Object.defineProperty(R,"accessListify",{enumerable:!0,get:function(){return Gc.accessListify}});Object.defineProperty(R,"computeAddress",{enumerable:!0,get:function(){return Gc.computeAddress}});Object.defineProperty(R,"parseTransaction",{enumerable:!0,get:function(){return Gc.parse}});Object.defineProperty(R,"recoverAddress",{enumerable:!0,get:function(){return Gc.recoverAddress}});Object.defineProperty(R,"serializeTransaction",{enumerable:!0,get:function(){return Gc.serialize}});Object.defineProperty(R,"TransactionTypes",{enumerable:!0,get:function(){return Gc.TransactionTypes}});var Xl=Q_();Object.defineProperty(R,"commify",{enumerable:!0,get:function(){return Xl.commify}});Object.defineProperty(R,"formatEther",{enumerable:!0,get:function(){return Xl.formatEther}});Object.defineProperty(R,"parseEther",{enumerable:!0,get:function(){return Xl.parseEther}});Object.defineProperty(R,"formatUnits",{enumerable:!0,get:function(){return Xl.formatUnits}});Object.defineProperty(R,"parseUnits",{enumerable:!0,get:function(){return Xl.parseUnits}});var $_=Lb();Object.defineProperty(R,"verifyMessage",{enumerable:!0,get:function(){return $_.verifyMessage}});Object.defineProperty(R,"verifyTypedData",{enumerable:!0,get:function(){return $_.verifyTypedData}});var jg=Uo();Object.defineProperty(R,"_fetchData",{enumerable:!0,get:function(){return jg._fetchData}});Object.defineProperty(R,"fetchJson",{enumerable:!0,get:function(){return jg.fetchJson}});Object.defineProperty(R,"poll",{enumerable:!0,get:function(){return jg.poll}});var RQ=dc();Object.defineProperty(R,"SupportedAlgorithm",{enumerable:!0,get:function(){return RQ.SupportedAlgorithm}});var eT=Cr();Object.defineProperty(R,"UnicodeNormalizationForm",{enumerable:!0,get:function(){return eT.UnicodeNormalizationForm}});Object.defineProperty(R,"Utf8ErrorReason",{enumerable:!0,get:function(){return eT.Utf8ErrorReason}})});var tT=P(k0=>{"use strict";Object.defineProperty(k0,"__esModule",{value:!0});k0.version=void 0;k0.version="ethers/5.7.2"});var zg=P(Ne=>{"use strict";var IQ=Ne&&Ne.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r),Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),NQ=Ne&&Ne.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Ug=Ne&&Ne.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&IQ(e,t,r);return NQ(e,t),e};Object.defineProperty(Ne,"__esModule",{value:!0});Ne.Wordlist=Ne.version=Ne.wordlists=Ne.utils=Ne.logger=Ne.errors=Ne.constants=Ne.FixedNumber=Ne.BigNumber=Ne.ContractFactory=Ne.Contract=Ne.BaseContract=Ne.providers=Ne.getDefaultProvider=Ne.VoidSigner=Ne.Wallet=Ne.Signer=void 0;var Hg=E7();Object.defineProperty(Ne,"BaseContract",{enumerable:!0,get:function(){return Hg.BaseContract}});Object.defineProperty(Ne,"Contract",{enumerable:!0,get:function(){return Hg.Contract}});Object.defineProperty(Ne,"ContractFactory",{enumerable:!0,get:function(){return Hg.ContractFactory}});var nT=Tr();Object.defineProperty(Ne,"BigNumber",{enumerable:!0,get:function(){return nT.BigNumber}});Object.defineProperty(Ne,"FixedNumber",{enumerable:!0,get:function(){return nT.FixedNumber}});var iT=Wu();Object.defineProperty(Ne,"Signer",{enumerable:!0,get:function(){return iT.Signer}});Object.defineProperty(Ne,"VoidSigner",{enumerable:!0,get:function(){return iT.VoidSigner}});var DQ=Lb();Object.defineProperty(Ne,"Wallet",{enumerable:!0,get:function(){return DQ.Wallet}});var JQ=Ug(Ao());Ne.constants=JQ;var qQ=Ug(Ng());Ne.providers=qQ;var jQ=Ng();Object.defineProperty(Ne,"getDefaultProvider",{enumerable:!0,get:function(){return jQ.getDefaultProvider}});var aT=xb();Object.defineProperty(Ne,"Wordlist",{enumerable:!0,get:function(){return aT.Wordlist}});Object.defineProperty(Ne,"wordlists",{enumerable:!0,get:function(){return aT.wordlists}});var UQ=Ug(rT());Ne.utils=UQ;var oT=re();Object.defineProperty(Ne,"errors",{enumerable:!0,get:function(){return oT.ErrorCode}});var sT=tT();Object.defineProperty(Ne,"version",{enumerable:!0,get:function(){return sT.version}});var HQ=new oT.Logger(sT.version);Ne.logger=HQ});var uT=P(Ie=>{"use strict";var zQ=Ie&&Ie.__createBinding||(Object.create?function(t,e,r,n){n===void 0&&(n=r),Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}),GQ=Ie&&Ie.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),XQ=Ie&&Ie.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&zQ(e,t,r);return GQ(e,t),e};Object.defineProperty(Ie,"__esModule",{value:!0});Ie.Wordlist=Ie.version=Ie.wordlists=Ie.utils=Ie.logger=Ie.errors=Ie.constants=Ie.FixedNumber=Ie.BigNumber=Ie.ContractFactory=Ie.Contract=Ie.BaseContract=Ie.providers=Ie.getDefaultProvider=Ie.VoidSigner=Ie.Wallet=Ie.Signer=Ie.ethers=void 0;var cT=XQ(zg());Ie.ethers=cT;try{Gg=window,Gg._ethers==null&&(Gg._ethers=cT)}catch{}var Gg,rt=zg();Object.defineProperty(Ie,"Signer",{enumerable:!0,get:function(){return rt.Signer}});Object.defineProperty(Ie,"Wallet",{enumerable:!0,get:function(){return rt.Wallet}});Object.defineProperty(Ie,"VoidSigner",{enumerable:!0,get:function(){return rt.VoidSigner}});Object.defineProperty(Ie,"getDefaultProvider",{enumerable:!0,get:function(){return rt.getDefaultProvider}});Object.defineProperty(Ie,"providers",{enumerable:!0,get:function(){return rt.providers}});Object.defineProperty(Ie,"BaseContract",{enumerable:!0,get:function(){return rt.BaseContract}});Object.defineProperty(Ie,"Contract",{enumerable:!0,get:function(){return rt.Contract}});Object.defineProperty(Ie,"ContractFactory",{enumerable:!0,get:function(){return rt.ContractFactory}});Object.defineProperty(Ie,"BigNumber",{enumerable:!0,get:function(){return rt.BigNumber}});Object.defineProperty(Ie,"FixedNumber",{enumerable:!0,get:function(){return rt.FixedNumber}});Object.defineProperty(Ie,"constants",{enumerable:!0,get:function(){return rt.constants}});Object.defineProperty(Ie,"errors",{enumerable:!0,get:function(){return rt.errors}});Object.defineProperty(Ie,"logger",{enumerable:!0,get:function(){return rt.logger}});Object.defineProperty(Ie,"utils",{enumerable:!0,get:function(){return rt.utils}});Object.defineProperty(Ie,"wordlists",{enumerable:!0,get:function(){return rt.wordlists}});Object.defineProperty(Ie,"version",{enumerable:!0,get:function(){return rt.version}});Object.defineProperty(Ie,"Wordlist",{enumerable:!0,get:function(){return rt.Wordlist}})});var tW={};MT(tW,{handler:()=>rW});module.exports=BT(tW);var ST=Ti(J1()),Kg=Ti(mo()),_T=Ti(h6());var fT=Ti(mo());var lT=Ti(uT());function Kl(){function t(e){let{address:r,message:n,signedMessage:i}=e;try{if(!r.length||!n.length||!i.length)return!1;{let a=lT.ethers.utils.verifyMessage(n,i);return r.toLowerCase()===a.toLowerCase()}}catch(a){return console.log("error :>> ",a),!1}}return{verifyMessage:t}}var KQ={address:"0xd557a5745d4560B24D36A68b52351ffF9c86A212".toLowerCase(),accounts:[{address:"0xd557a5745d4560B24D36A68b52351ffF9c86A212".toLowerCase(),currency:"ETH",balance:"1000000000000000000",balanceSnapshots:[{date:"2023-02-06",balance:"1000000000000000000"},{date:"2023-02-05",balance:"100000000000000000"}],roi:.25,walletProvider:"MetaMask"},{address:"0x1dc336d94890b10e1a47b6e34cdee1009ee7b942".toLowerCase(),currency:"ETH",balance:"1000000000000000000",balanceSnapshots:[{date:"2023-02-06",balance:"1000000000000000000"},{date:"2023-02-05",balance:"100000000000000000"}],roi:.25,walletProvider:"CoinbaseWallet"},{address:"0x8222Ef172A2117D1C4739E35234E097630D94376".toLowerCase(),currency:"ETH",balance:"1000000000000000000",balanceSnapshots:[{date:"2023-02-06",balance:"1000000000000000000"},{date:"2023-02-05",balance:"100000000000000000"}],roi:.25,walletProvider:"Ledger"},{address:"bc1qpttwf0df8jkx54dl04anwgmyt27lj6vj885lyr".toLowerCase(),currency:"BTC",balance:"100000000",balanceSnapshots:[{date:"2023-02-06",balance:"100000000"},{date:"2023-02-05",balance:"100000000"}],roi:.25,walletProvider:"Ledger"},{address:"0x8222Ef172A2117D1C4739E35234E097630D94377".toLowerCase(),currency:"ETH",balance:"1000000000000000000",balanceSnapshots:[{date:"2023-02-06",balance:"1000000000000000000"},{date:"2023-02-05",balance:"100000000000000000"}],roi:.25,walletProvider:"Trezor"},{address:"0x8222Ef172A2117D1C4739E35234E097630D94378".toLowerCase(),currency:"ETH",balance:"1000000000000000000",balanceSnapshots:[{date:"2023-02-06",balance:"1000000000000000000"},{date:"2023-02-05",balance:"100000000000000000"}],roi:.25,walletProvider:"WalletConnect"}],nonce:"1234567890"},tt=[KQ];function Zo(){function t(n){let i=tt.find(a=>a.address===n);return i?i.nonce:""}function e(n,i){let a=tt.find(o=>o.address===i);if(console.log("user in updateMessage in users.ts :>> ",a),n=n.toLowerCase(),a)a.nonce=r();else{console.log("Create new user here?");let o={address:i,nonce:r()};tt.push(o)}}function r(){return(Math.floor(Math.random()*(Number.MAX_SAFE_INTEGER-1))+1).toString()}return{getMessage:t,updateMessage:e,generateNonce:r}}var{verifyMessage:VQ}=Kl(),{updateMessage:ZQ}=Zo(),dT=fT.default.Router();dT.use("/",async(t,e)=>{let{body:r}=t,{provider:n,address:i,currency:a,message:o,signedMessage:c}=r,u=tt.find(s=>s.address===i.toLowerCase());if(u&&!u?.accounts){console.log("got into this block in signupLogin.ts");let s=[{address:i,currency:a,balance:"1000000000000000000",balanceSnapshots:[{date:"2023-02-06",balance:"1000000000000000000"},{date:"2023-02-05",balance:"100000000000000000"}],roi:0,walletProvider:n}];u.accounts=s,console.log("user :>> ",u),e.setHeader("Content-Type","application/json"),e.status(200),e.json({message:u.accounts.length?"Sign Up Successful":"Problem creating new user",error:!1,data:u||null})}else{let s=VQ({address:i,message:o,signedMessage:c,provider:n});ZQ(n,i),e.setHeader("Content-Type","application/json"),e.status(200),e.json({message:s?"Login successful":"Login failed",error:!1,data:u})}});var pT=dT;var hT=Ti(mo());var vT=hT.default.Router();vT.use("/",async(t,e)=>{try{let{body:r}=t,{address:n,provider:i,currency:a}=r,o=tt.find(u=>u.address===n.toLowerCase());console.log("user :>> ",o);let c={address:n.toLowerCase(),accounts:[{address:n,currency:a,balance:"1000000000000000000",balanceSnapshots:[{date:"2023-02-06",balance:"1000000000000000000"},{date:"2023-02-05",balance:"100000000000000000"}],roi:0,walletProvider:i}],nonce:QQ()};o||(console.log("pushing in user"),tt.push(c)),e.setHeader("Content-Type","application/json"),e.status(200),e.json({message:o?"Account already exists at that address":"Sign Up Successful",error:!1,data:o||c})}catch(r){console.log("err :>> ",r),e.status(500),e.json({message:"Error signing up",error:!0})}});function QQ(){return(Math.floor(Math.random()*(Number.MAX_SAFE_INTEGER-1))+1).toString()}var mT=vT;var bT=Ti(mo());var{verifyMessage:WQ}=Kl(),{updateMessage:YQ}=Zo(),gT=bT.default.Router();gT.use("/",async(t,e)=>{let{body:r}=t,{address:n,message:i,signedMessage:a,provider:o}=r,c=WQ({address:n,message:i,signedMessage:a,provider:o});c&&YQ(o,n);let u=tt.find(s=>s.address===n.toLowerCase());e.setHeader("Content-Type","application/json"),e.status(200),e.json({message:c?"Login successful":"Login failed",error:!1,data:u})});var xT=gT;var yT=Ti(mo());var Xg=yT.default.Router(),{getMessage:$Q,updateMessage:eW}=Zo();Xg.get("/:provider/:address",async(t,e)=>{let{provider:r,address:n}=t.params;eW(r,n);let i=$Q(n);i?(e.setHeader("Content-Type","application/json"),e.status(200),e.json({message:i})):(e.status(404),e.send())});Xg.post("/:address",async(t,e)=>{let{address:r}=t.params,{message:n}=t.body,i=tt.find(a=>a.address===r);i?(i.nonce=n,e.setHeader("Content-Type","application/json"),e.status(200),e.json({message:`Message updated to: ${n}`,error:!1})):(e.status(404),e.json({message:"User not found",error:!0}))});var wT=Xg;var AT=Ti(mo());var C0=AT.default.Router();C0.put("/update-primary-account",async(t,e)=>{let{primaryAddress:r,updatedProvider:n,updatedAddress:i}=t.body;r=r.toLowerCase(),n=n.toLowerCase(),i=i.toLowerCase();let a=tt.find(o=>o.address===r);a&&(a.address=i),e.setHeader("Content-Type","application/json"),e.status(200),e.json({message:"Primary account updated",error:!1,data:a})});C0.post("/add-sub-account",async(t,e)=>{try{let{account:r}=t.body,{address:n}=t.body;n=n.toLowerCase();let i=tt.find(a=>a.address===n);i&&i.accounts?.push(r),e.setHeader("Content-Type","application/json"),e.status(200),e.json({message:"Account added",error:!1,data:i})}catch(r){console.log("err :>> ",r),e.status(500),e.json({message:"Error adding account",error:!0})}});C0.post("/remove-sub-account",async(t,e)=>{try{let{provider:r,address:n,currency:i}=t.body,{primaryAddress:a}=t.body;a=a.toLowerCase();let o=tt.find(u=>u.address===a),c=!1;o&&(o.accounts=o.accounts?.filter(u=>{if(!(u.walletProvider!==r||u.address!==n||u.currency!==i))c=!0;else return u})),c?(e.setHeader("Content-Type","application/json"),e.status(200),e.json({message:"Account removed",error:!1,data:o})):(e.setHeader("Content-Type","application/json"),e.status(200),e.json({message:"Account not found",error:!0,data:o}))}catch(r){console.log("err :>> ",r),e.status(500),e.json({message:"Error adding account",error:!0})}});var ET=C0;var Ua=(0,Kg.default)();Ua.use(Kg.default.json());Ua.use((0,_T.default)());Ua.use("/signupLogin",pT);Ua.use("/signup",mT);Ua.use("/login",xT);Ua.use("/auth",wT);Ua.use("/users",ET);var rW=async function(t,e){return await(0,ST.default)(Ua)(t,e)};0&&(module.exports={handler}); -/* -object-assign -(c) Sindre Sorhus -@license MIT -*/ -/*! - * accepts - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * body-parser - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * body-parser - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * bytes - * Copyright(c) 2012-2014 TJ Holowaychuk - * Copyright(c) 2015 Jed Watson - * MIT Licensed - */ -/*! - * content-disposition - * Copyright(c) 2014-2017 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * content-type - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * cookie - * Copyright(c) 2012-2014 Roman Shtylman - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * depd - * Copyright(c) 2014-2018 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * destroy - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015-2022 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * ee-first - * Copyright(c) 2014 Jonathan Ong - * MIT Licensed - */ -/*! - * encodeurl - * Copyright(c) 2016 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * escape-html - * Copyright(c) 2012-2013 TJ Holowaychuk - * Copyright(c) 2015 Andreas Lubbe - * Copyright(c) 2015 Tiancheng "Timothy" Gu - * MIT Licensed - */ -/*! - * etag - * Copyright(c) 2014-2016 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2013 Roman Shtylman - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * express - * Copyright(c) 2009-2013 TJ Holowaychuk - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * finalhandler - * Copyright(c) 2014-2022 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * forwarded - * Copyright(c) 2014-2017 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * fresh - * Copyright(c) 2012 TJ Holowaychuk - * Copyright(c) 2016-2017 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * http-errors - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2016 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * media-typer - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * merge-descriptors - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * methods - * Copyright(c) 2013-2014 TJ Holowaychuk - * Copyright(c) 2015-2016 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * mime-db - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015-2022 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * mime-types - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * negotiator - * Copyright(c) 2012 Federico Romero - * Copyright(c) 2012-2014 Isaac Z. Schlueter - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * on-finished - * Copyright(c) 2013 Jonathan Ong - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * parseurl - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2014-2017 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * proxy-addr - * Copyright(c) 2014-2016 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * range-parser - * Copyright(c) 2012-2014 TJ Holowaychuk - * Copyright(c) 2015-2016 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * raw-body - * Copyright(c) 2013-2014 Jonathan Ong - * Copyright(c) 2014-2022 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * send - * Copyright(c) 2012 TJ Holowaychuk - * Copyright(c) 2014-2022 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * serve-static - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * Copyright(c) 2014-2016 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * statuses - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2016 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * toidentifier - * Copyright(c) 2016 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * type-is - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * unpipe - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ -/*! - * vary - * Copyright(c) 2014-2017 Douglas Christopher Wilson - * MIT Licensed - */ -/*! safe-buffer. MIT License. Feross Aboukhadijeh */ -/** - * [js-sha3]{@link https://github.com/emn178/js-sha3} - * - * @version 0.8.0 - * @author Chen, Yi-Cyuan [emn178@gmail.com] - * @copyright Chen, Yi-Cyuan 2015-2018 - * @license MIT - */ -//# sourceMappingURL=index.js.map diff --git a/services/auth/dist/index.js.map b/services/auth/dist/index.js.map deleted file mode 100644 index 45893c0b7..000000000 --- a/services/auth/dist/index.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../node_modules/serverless-http/lib/finish.js", "../../../node_modules/serverless-http/lib/response.js", "../../../node_modules/serverless-http/lib/framework/get-framework.js", "../../../node_modules/serverless-http/lib/provider/aws/clean-up-event.js", "../../../node_modules/serverless-http/lib/request.js", "../../../node_modules/serverless-http/lib/provider/aws/create-request.js", "../../../node_modules/serverless-http/lib/provider/aws/is-binary.js", "../../../node_modules/serverless-http/lib/provider/aws/sanitize-headers.js", "../../../node_modules/serverless-http/lib/provider/aws/format-response.js", "../../../node_modules/serverless-http/lib/provider/aws/index.js", "../../../node_modules/serverless-http/lib/provider/azure/clean-up-request.js", "../../../node_modules/serverless-http/lib/provider/azure/create-request.js", "../../../node_modules/serverless-http/lib/provider/azure/is-binary.js", "../../../node_modules/serverless-http/lib/provider/azure/sanitize-headers.js", "../../../node_modules/serverless-http/lib/provider/azure/format-response.js", "../../../node_modules/serverless-http/lib/provider/azure/index.js", "../../../node_modules/serverless-http/lib/provider/get-provider.js", "../../../node_modules/serverless-http/serverless-http.js", "../../../node_modules/depd/index.js", "../../../node_modules/bytes/index.js", "../../../node_modules/content-type/index.js", "../../../node_modules/setprototypeof/index.js", "../../../node_modules/statuses/index.js", "../../../node_modules/inherits/inherits_browser.js", "../../../node_modules/inherits/inherits.js", "../../../node_modules/toidentifier/index.js", "../../../node_modules/http-errors/index.js", "../../../node_modules/body-parser/node_modules/ms/index.js", "../../../node_modules/body-parser/node_modules/debug/src/debug.js", "../../../node_modules/body-parser/node_modules/debug/src/browser.js", "../../../node_modules/body-parser/node_modules/debug/src/node.js", "../../../node_modules/body-parser/node_modules/debug/src/index.js", "../../../node_modules/destroy/index.js", "../../../node_modules/safer-buffer/safer.js", "../../../node_modules/iconv-lite/lib/bom-handling.js", "../../../node_modules/iconv-lite/encodings/internal.js", "../../../node_modules/iconv-lite/encodings/utf16.js", "../../../node_modules/iconv-lite/encodings/utf7.js", "../../../node_modules/iconv-lite/encodings/sbcs-codec.js", "../../../node_modules/iconv-lite/encodings/sbcs-data.js", "../../../node_modules/iconv-lite/encodings/sbcs-data-generated.js", "../../../node_modules/iconv-lite/encodings/dbcs-codec.js", "../../../node_modules/iconv-lite/encodings/dbcs-data.js", "../../../node_modules/iconv-lite/encodings/index.js", "../../../node_modules/iconv-lite/lib/streams.js", "../../../node_modules/iconv-lite/lib/extend-node.js", "../../../node_modules/iconv-lite/lib/index.js", "../../../node_modules/unpipe/index.js", "../../../node_modules/raw-body/index.js", "../../../node_modules/ee-first/index.js", "../../../node_modules/on-finished/index.js", "../../../node_modules/body-parser/lib/read.js", "../../../node_modules/media-typer/index.js", "../../../node_modules/mime-db/index.js", "../../../node_modules/mime-types/index.js", "../../../node_modules/type-is/index.js", "../../../node_modules/body-parser/lib/types/json.js", "../../../node_modules/body-parser/lib/types/raw.js", "../../../node_modules/body-parser/lib/types/text.js", "../../../node_modules/has-symbols/shams.js", "../../../node_modules/has-symbols/index.js", "../../../node_modules/function-bind/implementation.js", "../../../node_modules/function-bind/index.js", "../../../node_modules/has/src/index.js", "../../../node_modules/get-intrinsic/index.js", "../../../node_modules/call-bind/index.js", "../../../node_modules/call-bind/callBound.js", "../../../node_modules/object-inspect/util.inspect.js", "../../../node_modules/object-inspect/index.js", "../../../node_modules/side-channel/index.js", "../../../node_modules/qs/lib/formats.js", "../../../node_modules/qs/lib/utils.js", "../../../node_modules/qs/lib/stringify.js", "../../../node_modules/qs/lib/parse.js", "../../../node_modules/qs/lib/index.js", "../../../node_modules/body-parser/lib/types/urlencoded.js", "../../../node_modules/body-parser/index.js", "../../../node_modules/merge-descriptors/index.js", "../../../node_modules/finalhandler/node_modules/ms/index.js", "../../../node_modules/finalhandler/node_modules/debug/src/debug.js", "../../../node_modules/finalhandler/node_modules/debug/src/browser.js", "../../../node_modules/finalhandler/node_modules/debug/src/node.js", "../../../node_modules/finalhandler/node_modules/debug/src/index.js", "../../../node_modules/encodeurl/index.js", "../../../node_modules/escape-html/index.js", "../../../node_modules/parseurl/index.js", "../../../node_modules/finalhandler/index.js", "../../../node_modules/express/node_modules/ms/index.js", "../../../node_modules/express/node_modules/debug/src/debug.js", "../../../node_modules/express/node_modules/debug/src/browser.js", "../../../node_modules/express/node_modules/debug/src/node.js", "../../../node_modules/express/node_modules/debug/src/index.js", "../../../node_modules/array-flatten/array-flatten.js", "../../../node_modules/path-to-regexp/index.js", "../../../node_modules/express/lib/router/layer.js", "../../../node_modules/methods/index.js", "../../../node_modules/express/lib/router/route.js", "../../../node_modules/utils-merge/index.js", "../../../node_modules/express/lib/router/index.js", "../../../node_modules/express/lib/middleware/init.js", "../../../node_modules/express/lib/middleware/query.js", "../../../node_modules/express/lib/view.js", "../../../node_modules/safe-buffer/index.js", "../../../node_modules/content-disposition/index.js", "../../../node_modules/send/node_modules/debug/node_modules/ms/index.js", "../../../node_modules/send/node_modules/debug/src/debug.js", "../../../node_modules/send/node_modules/debug/src/browser.js", "../../../node_modules/send/node_modules/debug/src/node.js", "../../../node_modules/send/node_modules/debug/src/index.js", "../../../node_modules/etag/index.js", "../../../node_modules/fresh/index.js", "../../../node_modules/mime/mime.js", "../../../node_modules/send/node_modules/ms/index.js", "../../../node_modules/range-parser/index.js", "../../../node_modules/send/index.js", "../../../node_modules/forwarded/index.js", "../../../node_modules/ipaddr.js/lib/ipaddr.js", "../../../node_modules/proxy-addr/index.js", "../../../node_modules/express/lib/utils.js", "../../../node_modules/express/lib/application.js", "../../../node_modules/negotiator/lib/charset.js", "../../../node_modules/negotiator/lib/encoding.js", "../../../node_modules/negotiator/lib/language.js", "../../../node_modules/negotiator/lib/mediaType.js", "../../../node_modules/negotiator/index.js", "../../../node_modules/accepts/index.js", "../../../node_modules/express/lib/request.js", "../../../node_modules/cookie-signature/index.js", "../../../node_modules/cookie/index.js", "../../../node_modules/vary/index.js", "../../../node_modules/express/lib/response.js", "../../../node_modules/serve-static/index.js", "../../../node_modules/express/lib/express.js", "../../../node_modules/express/index.js", "../../../node_modules/object-assign/index.js", "../../../node_modules/cors/lib/index.js", "../../../node_modules/bn.js/lib/bn.js", "../../../node_modules/@ethersproject/logger/src.ts/_version.ts", "../../../node_modules/@ethersproject/logger/src.ts/index.ts", "../../../node_modules/@ethersproject/bytes/src.ts/_version.ts", "../../../node_modules/@ethersproject/bytes/src.ts/index.ts", "../../../node_modules/@ethersproject/bignumber/src.ts/_version.ts", "../../../node_modules/@ethersproject/bignumber/src.ts/bignumber.ts", "../../../node_modules/@ethersproject/bignumber/src.ts/fixednumber.ts", "../../../node_modules/@ethersproject/bignumber/src.ts/index.ts", "../../../node_modules/@ethersproject/properties/src.ts/_version.ts", "../../../node_modules/@ethersproject/properties/src.ts/index.ts", "../../../node_modules/@ethersproject/abi/src.ts/_version.ts", "../../../node_modules/@ethersproject/abi/src.ts/fragments.ts", "../../../node_modules/@ethersproject/abi/src.ts/coders/abstract-coder.ts", "../../../node_modules/js-sha3/src/sha3.js", "../../../node_modules/@ethersproject/keccak256/src.ts/index.ts", "../../../node_modules/@ethersproject/rlp/src.ts/_version.ts", "../../../node_modules/@ethersproject/rlp/src.ts/index.ts", "../../../node_modules/@ethersproject/address/src.ts/_version.ts", "../../../node_modules/@ethersproject/address/src.ts/index.ts", "../../../node_modules/@ethersproject/abi/src.ts/coders/address.ts", "../../../node_modules/@ethersproject/abi/src.ts/coders/anonymous.ts", "../../../node_modules/@ethersproject/abi/src.ts/coders/array.ts", "../../../node_modules/@ethersproject/abi/src.ts/coders/boolean.ts", "../../../node_modules/@ethersproject/abi/src.ts/coders/bytes.ts", "../../../node_modules/@ethersproject/abi/src.ts/coders/fixed-bytes.ts", "../../../node_modules/@ethersproject/abi/src.ts/coders/null.ts", "../../../node_modules/@ethersproject/constants/src.ts/addresses.ts", "../../../node_modules/@ethersproject/constants/src.ts/bignumbers.ts", "../../../node_modules/@ethersproject/constants/src.ts/hashes.ts", "../../../node_modules/@ethersproject/constants/src.ts/strings.ts", "../../../node_modules/@ethersproject/constants/src.ts/index.ts", "../../../node_modules/@ethersproject/abi/src.ts/coders/number.ts", "../../../node_modules/@ethersproject/strings/src.ts/_version.ts", "../../../node_modules/@ethersproject/strings/src.ts/utf8.ts", "../../../node_modules/@ethersproject/strings/src.ts/bytes32.ts", "../../../node_modules/@ethersproject/strings/src.ts/idna.ts", "../../../node_modules/@ethersproject/strings/src.ts/index.ts", "../../../node_modules/@ethersproject/abi/src.ts/coders/string.ts", "../../../node_modules/@ethersproject/abi/src.ts/coders/tuple.ts", "../../../node_modules/@ethersproject/abi/src.ts/abi-coder.ts", "../../../node_modules/@ethersproject/hash/src.ts/id.ts", "../../../node_modules/@ethersproject/hash/src.ts/_version.ts", "../../../node_modules/@ethersproject/base64/src.ts/base64.ts", "../../../node_modules/@ethersproject/base64/src.ts/index.ts", "../../../node_modules/@ethersproject/hash/src.ts/ens-normalize/decoder.ts", "../../../node_modules/@ethersproject/hash/src.ts/ens-normalize/include.ts", "../../../node_modules/@ethersproject/hash/src.ts/ens-normalize/lib.ts", "../../../node_modules/@ethersproject/hash/src.ts/namehash.ts", "../../../node_modules/@ethersproject/hash/src.ts/message.ts", "../../../node_modules/@ethersproject/hash/src.ts/typed-data.ts", "../../../node_modules/@ethersproject/hash/src.ts/index.ts", "../../../node_modules/@ethersproject/abi/src.ts/interface.ts", "../../../node_modules/@ethersproject/abi/src.ts/index.ts", "../../../node_modules/@ethersproject/abstract-provider/src.ts/_version.ts", "../../../node_modules/@ethersproject/abstract-provider/src.ts/index.ts", "../../../node_modules/@ethersproject/abstract-signer/src.ts/_version.ts", "../../../node_modules/@ethersproject/abstract-signer/src.ts/index.ts", "../../../node_modules/elliptic/node_modules/bn.js/lib/bn.js", "../../../node_modules/minimalistic-assert/index.js", "../../../node_modules/minimalistic-crypto-utils/lib/utils.js", "../../../node_modules/elliptic/lib/elliptic/utils.js", "../../../node_modules/brorand/index.js", "../../../node_modules/elliptic/lib/elliptic/curve/base.js", "../../../node_modules/elliptic/lib/elliptic/curve/short.js", "../../../node_modules/elliptic/lib/elliptic/curve/mont.js", "../../../node_modules/elliptic/lib/elliptic/curve/edwards.js", "../../../node_modules/elliptic/lib/elliptic/curve/index.js", "../../../node_modules/hash.js/lib/hash/utils.js", "../../../node_modules/hash.js/lib/hash/common.js", "../../../node_modules/hash.js/lib/hash/sha/common.js", "../../../node_modules/hash.js/lib/hash/sha/1.js", "../../../node_modules/hash.js/lib/hash/sha/256.js", "../../../node_modules/hash.js/lib/hash/sha/224.js", "../../../node_modules/hash.js/lib/hash/sha/512.js", "../../../node_modules/hash.js/lib/hash/sha/384.js", "../../../node_modules/hash.js/lib/hash/sha.js", "../../../node_modules/hash.js/lib/hash/ripemd.js", "../../../node_modules/hash.js/lib/hash/hmac.js", "../../../node_modules/hash.js/lib/hash.js", "../../../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js", "../../../node_modules/elliptic/lib/elliptic/curves.js", "../../../node_modules/hmac-drbg/lib/hmac-drbg.js", "../../../node_modules/elliptic/lib/elliptic/ec/key.js", "../../../node_modules/elliptic/lib/elliptic/ec/signature.js", "../../../node_modules/elliptic/lib/elliptic/ec/index.js", "../../../node_modules/elliptic/lib/elliptic/eddsa/key.js", "../../../node_modules/elliptic/lib/elliptic/eddsa/signature.js", "../../../node_modules/elliptic/lib/elliptic/eddsa/index.js", "../../../node_modules/elliptic/lib/elliptic.js", "../../../node_modules/@ethersproject/signing-key/src.ts/elliptic.ts", "../../../node_modules/@ethersproject/signing-key/src.ts/_version.ts", "../../../node_modules/@ethersproject/signing-key/src.ts/index.ts", "../../../node_modules/@ethersproject/transactions/src.ts/_version.ts", "../../../node_modules/@ethersproject/transactions/src.ts/index.ts", "../../../node_modules/@ethersproject/contracts/src.ts/_version.ts", "../../../node_modules/@ethersproject/contracts/src.ts/index.ts", "../../../node_modules/@ethersproject/basex/src.ts/index.ts", "../../../node_modules/@ethersproject/pbkdf2/src.ts/pbkdf2.ts", "../../../node_modules/@ethersproject/pbkdf2/src.ts/index.ts", "../../../node_modules/@ethersproject/sha2/src.ts/types.ts", "../../../node_modules/@ethersproject/sha2/src.ts/_version.ts", "../../../node_modules/@ethersproject/sha2/src.ts/sha2.ts", "../../../node_modules/@ethersproject/sha2/src.ts/index.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/_version.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/wordlist.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/lang-cz.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/lang-en.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/lang-es.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/lang-fr.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/lang-ja.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/lang-ko.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/lang-it.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/lang-zh.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/wordlists.ts", "../../../node_modules/@ethersproject/wordlists/src.ts/index.ts", "../../../node_modules/@ethersproject/hdnode/src.ts/_version.ts", "../../../node_modules/@ethersproject/hdnode/src.ts/index.ts", "../../../node_modules/@ethersproject/random/src.ts/random.ts", "../../../node_modules/@ethersproject/random/src.ts/shuffle.ts", "../../../node_modules/@ethersproject/random/src.ts/index.ts", "../../../node_modules/@ethersproject/json-wallets/node_modules/aes-js/index.js", "../../../node_modules/@ethersproject/json-wallets/src.ts/_version.ts", "../../../node_modules/@ethersproject/json-wallets/src.ts/utils.ts", "../../../node_modules/@ethersproject/json-wallets/src.ts/crowdsale.ts", "../../../node_modules/@ethersproject/json-wallets/src.ts/inspect.ts", "../../../node_modules/scrypt-js/scrypt.js", "../../../node_modules/@ethersproject/json-wallets/src.ts/keystore.ts", "../../../node_modules/@ethersproject/json-wallets/src.ts/index.ts", "../../../node_modules/@ethersproject/wallet/src.ts/_version.ts", "../../../node_modules/@ethersproject/wallet/src.ts/index.ts", "../../../node_modules/@ethersproject/networks/src.ts/_version.ts", "../../../node_modules/@ethersproject/networks/src.ts/index.ts", "../../../node_modules/@ethersproject/web/src.ts/_version.ts", "../../../node_modules/@ethersproject/web/src.ts/geturl.ts", "../../../node_modules/@ethersproject/web/src.ts/index.ts", "../../../node_modules/bech32/index.js", "../../../node_modules/@ethersproject/providers/src.ts/_version.ts", "../../../node_modules/@ethersproject/providers/src.ts/formatter.ts", "../../../node_modules/@ethersproject/providers/src.ts/base-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts", "../../../node_modules/ws/lib/constants.js", "../../../node_modules/node-gyp-build/index.js", "../../../node_modules/bufferutil/fallback.js", "../../../node_modules/bufferutil/index.js", "../../../node_modules/ws/lib/buffer-util.js", "../../../node_modules/ws/lib/limiter.js", "../../../node_modules/ws/lib/permessage-deflate.js", "../../../node_modules/utf-8-validate/fallback.js", "../../../node_modules/utf-8-validate/index.js", "../../../node_modules/ws/lib/validation.js", "../../../node_modules/ws/lib/receiver.js", "../../../node_modules/ws/lib/sender.js", "../../../node_modules/ws/lib/event-target.js", "../../../node_modules/ws/lib/extension.js", "../../../node_modules/ws/lib/websocket.js", "../../../node_modules/ws/lib/stream.js", "../../../node_modules/ws/lib/websocket-server.js", "../../../node_modules/ws/index.js", "../../../node_modules/@ethersproject/providers/src.ts/ws.ts", "../../../node_modules/@ethersproject/providers/src.ts/websocket-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/url-json-rpc-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/alchemy-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/ankr-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/cloudflare-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/etherscan-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/fallback-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/ipc-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/infura-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/json-rpc-batch-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/nodesmith-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/pocket-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/web3-provider.ts", "../../../node_modules/@ethersproject/providers/src.ts/index.ts", "../../../node_modules/@ethersproject/solidity/src.ts/_version.ts", "../../../node_modules/@ethersproject/solidity/src.ts/index.ts", "../../../node_modules/@ethersproject/units/src.ts/_version.ts", "../../../node_modules/@ethersproject/units/src.ts/index.ts", "../../../node_modules/ethers/src.ts/utils.ts", "../../../node_modules/ethers/src.ts/_version.ts", "../../../node_modules/ethers/src.ts/ethers.ts", "../../../node_modules/ethers/src.ts/index.ts", "../src/index.ts", "../src/routes/signupLogin.ts", "../src/providers/ethers.ts", "../src/collections/users.ts", "../src/providers/users.ts", "../src/routes/signup.ts", "../src/routes/login.ts", "../src/routes/auth.ts", "../src/routes/users.ts"], - "sourcesContent": ["'use strict';\n\nmodule.exports = async function finish(item, transform, ...details) {\n await new Promise((resolve, reject) => {\n if (item.finished || item.complete) {\n resolve();\n return;\n }\n\n let finished = false;\n\n function done(err) {\n if (finished) {\n return;\n }\n\n finished = true;\n\n item.removeListener('error', done);\n item.removeListener('end', done);\n item.removeListener('finish', done);\n\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n }\n\n item.once('error', done);\n item.once('end', done);\n item.once('finish', done);\n });\n\n if (typeof transform === 'function') {\n await transform(item, ...details);\n } else if (typeof transform === 'object' && transform !== null) {\n Object.assign(item, transform);\n }\n\n return item;\n};\n", "'use strict';\n\nconst http = require('http');\n\nconst headerEnd = '\\r\\n\\r\\n';\n\nconst BODY = Symbol();\nconst HEADERS = Symbol();\n\nfunction getString(data) {\n if (Buffer.isBuffer(data)) {\n return data.toString('utf8');\n } else if (typeof data === 'string') {\n return data;\n } else {\n throw new Error(`response.write() of unexpected type: ${typeof data}`);\n }\n}\n\nfunction addData(stream, data) {\n if (Buffer.isBuffer(data) || typeof data === 'string' || data instanceof Uint8Array) {\n stream[BODY].push(Buffer.from(data));\n } else {\n throw new Error(`response.write() of unexpected type: ${typeof data}`);\n }\n}\n\nmodule.exports = class ServerlessResponse extends http.ServerResponse {\n\n static from(res) {\n const response = new ServerlessResponse(res);\n\n response.statusCode = res.statusCode\n response[HEADERS] = res.headers;\n response[BODY] = [Buffer.from(res.body)];\n response.end();\n\n return response;\n }\n\n static body(res) {\n return Buffer.concat(res[BODY]);\n }\n\n static headers(res) {\n const headers = typeof res.getHeaders === 'function'\n ? res.getHeaders()\n : res._headers;\n\n return Object.assign(headers, res[HEADERS]);\n }\n\n get headers() {\n return this[HEADERS];\n }\n\n setHeader(key, value) {\n if (this._wroteHeader) {\n this[HEADERS][key] = value;\n } else {\n super.setHeader(key, value);\n }\n }\n\n writeHead(statusCode, reason, obj) {\n const headers = typeof reason === 'string'\n ? obj\n : reason\n\n for (const name in headers) {\n this.setHeader(name, headers[name])\n\n if (!this._wroteHeader) {\n // we only need to initiate super.headers once\n // writeHead will add the other headers itself\n break\n }\n }\n\n super.writeHead(statusCode, reason, obj);\n }\n\n constructor({ method }) {\n super({ method });\n\n this[BODY] = [];\n this[HEADERS] = {};\n\n this.useChunkedEncodingByDefault = false;\n this.chunkedEncoding = false;\n this._header = '';\n\n this.assignSocket({\n _writableState: {},\n writable: true,\n on: Function.prototype,\n removeListener: Function.prototype,\n destroy: Function.prototype,\n cork: Function.prototype,\n uncork: Function.prototype,\n write: (data, encoding, cb) => {\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (this._header === '' || this._wroteHeader) {\n addData(this, data);\n } else {\n const string = getString(data);\n const index = string.indexOf(headerEnd);\n\n if (index !== -1) {\n const remainder = string.slice(index + headerEnd.length);\n\n if (remainder) {\n addData(this, remainder);\n }\n\n this._wroteHeader = true;\n }\n }\n\n if (typeof cb === 'function') {\n cb();\n }\n },\n });\n\n this.once('finish', () => {\n this.emit('close')\n });\n }\n\n};\n", "'use strict';\n\nconst http = require('http')\nconst Response = require('../response');\n\nfunction common(cb) {\n return request => {\n const response = new Response(request);\n\n cb(request, response);\n\n return response;\n };\n}\n\nmodule.exports = function getFramework(app) {\n if (app instanceof http.Server) {\n return request => {\n const response = new Response(request);\n app.emit('request', request, response)\n return response\n }\n }\n\n if (typeof app.callback === 'function') {\n return common(app.callback());\n }\n\n if (typeof app.handle === 'function') {\n return common((request, response) => {\n app.handle(request, response);\n });\n }\n\n if (typeof app.handler === 'function') {\n return common((request, response) => {\n app.handler(request, response);\n });\n }\n\n if (typeof app._onRequest === 'function') {\n return common((request, response) => {\n app._onRequest(request, response);\n });\n }\n\n if (typeof app === 'function') {\n return common(app);\n }\n\n if (app.router && typeof app.router.route == 'function') {\n return common((req, res) => {\n const { url, method, headers, body } = req;\n app.router.route({ url, method, headers, body }, res);\n });\n }\n\n if (app._core && typeof app._core._dispatch === 'function') {\n return common(app._core._dispatch({\n app\n }));\n }\n\n if (typeof app.inject === 'function') {\n return async request => {\n const { method, url, headers, body } = request;\n\n const res = await app.inject({ method, url, headers, payload: body })\n\n return Response.from(res);\n };\n }\n\n if (typeof app.main === 'function') {\n return common(app.main);\n }\n\n throw new Error('Unsupported framework');\n};\n", "'use strict';\n\nfunction removeBasePath(path = '/', basePath) {\n if (basePath) {\n const basePathIndex = path.indexOf(basePath);\n\n if (basePathIndex > -1) {\n return path.substr(basePathIndex + basePath.length) || '/';\n }\n }\n\n return path;\n}\n\nfunction isString(value)\n{\n return (typeof value === 'string' || value instanceof String);\n}\n\n// ELBs will pass spaces as + symbols, and decodeURIComponent doesn't decode + symbols. So we need to convert them into something it can convert\nfunction specialDecodeURIComponent(value)\n{\n if(!isString(value))\n {\n return value;\n }\n\n let decoded;\n try {\n decoded = decodeURIComponent(value.replace(/[+]/g, \"%20\"));\n } catch (err) {\n decoded = value.replace(/[+]/g, \"%20\");\n }\n\n return decoded;\n}\n\nfunction recursiveURLDecode(value) {\n\n if (isString(value)) {\n return specialDecodeURIComponent(value);\n } else if (Array.isArray(value)) {\n\n const decodedArray = [];\n\n for (let index in value) {\n decodedArray.push(recursiveURLDecode(value[index]));\n }\n\n return decodedArray;\n\n } else if (value instanceof Object) {\n\n const decodedObject = {};\n\n for (let key of Object.keys(value)) {\n decodedObject[specialDecodeURIComponent(key)] = recursiveURLDecode(value[key]);\n }\n\n return decodedObject;\n }\n\n return value;\n}\n\nmodule.exports = function cleanupEvent(evt, options) {\n const event = evt || {};\n\n event.requestContext = event.requestContext || {};\n event.body = event.body || '';\n event.headers = event.headers || {};\n\n // Events coming from AWS Elastic Load Balancers do not automatically urldecode query parameters (unlike API Gateway). So we need to check for that and automatically decode them\n // to normalize the request between the two.\n if ('elb' in event.requestContext) {\n\n if (event.multiValueQueryStringParameters) {\n event.multiValueQueryStringParameters = recursiveURLDecode(event.multiValueQueryStringParameters);\n }\n\n if (event.queryStringParameters) {\n event.queryStringParameters = recursiveURLDecode(event.queryStringParameters);\n }\n\n }\n\n if (event.version === '2.0') {\n event.requestContext.authorizer = event.requestContext.authorizer || {};\n event.requestContext.http.method = event.requestContext.http.method || 'GET';\n event.rawPath = removeBasePath(event.requestPath || event.rawPath, options.basePath);\n } else {\n event.requestContext.identity = event.requestContext.identity || {};\n event.httpMethod = event.httpMethod || 'GET';\n event.path = removeBasePath(event.requestPath || event.path, options.basePath);\n }\n\n return event;\n};\n", "'use strict';\n\nconst http = require('http');\n\nmodule.exports = class ServerlessRequest extends http.IncomingMessage {\n constructor({ method, url, headers, body, remoteAddress }) {\n super({\n encrypted: true,\n readable: false,\n remoteAddress,\n address: () => ({ port: 443 }),\n end: Function.prototype,\n destroy: Function.prototype\n });\n\n if (typeof headers['content-length'] === 'undefined') {\n headers['content-length'] = Buffer.byteLength(body);\n }\n\n Object.assign(this, {\n ip: remoteAddress,\n complete: true,\n httpVersion: '1.1',\n httpVersionMajor: '1',\n httpVersionMinor: '1',\n method,\n headers,\n body,\n url,\n });\n\n this._read = () => {\n this.push(body);\n this.push(null);\n };\n }\n\n}\n", "\"use strict\";\n\nconst URL = require('url');\n\nconst Request = require('../../request');\n\nfunction requestMethod(event) {\n if (event.version === '2.0') {\n return event.requestContext.http.method;\n }\n return event.httpMethod;\n}\n\nfunction requestRemoteAddress(event) {\n if (event.version === '2.0') {\n return event.requestContext.http.sourceIp;\n }\n return event.requestContext.identity.sourceIp;\n}\n\nfunction requestHeaders(event) {\n const initialHeader = event.version === '2.0' && Array.isArray(event.cookies)\n ? { cookie: event.cookies.join('; ') }\n : {};\n\n if (event.multiValueHeaders) {\n return Object.keys(event.multiValueHeaders).reduce((headers, key) => {\n headers[key.toLowerCase()] = event.multiValueHeaders[key].join(\", \")\n return headers;\n }, initialHeader);\n }\n\n return Object.keys(event.headers).reduce((headers, key) => {\n headers[key.toLowerCase()] = event.headers[key];\n return headers;\n }, initialHeader);\n}\n\nfunction requestBody(event) {\n const type = typeof event.body;\n\n if (Buffer.isBuffer(event.body)) {\n return event.body;\n } else if (type === 'string') {\n return Buffer.from(event.body, event.isBase64Encoded ? 'base64' : 'utf8');\n } else if (type === 'object') {\n return Buffer.from(JSON.stringify(event.body));\n }\n\n throw new Error(`Unexpected event.body type: ${typeof event.body}`);\n}\n\nfunction requestUrl(event) {\n if (event.version === '2.0') {\n return URL.format({\n pathname: event.rawPath,\n search: event.rawQueryString,\n });\n }\n // Normalize all query params into a single query string.\n const query = event.multiValueQueryStringParameters || {};\n if (event.queryStringParameters) {\n Object.keys(event.queryStringParameters).forEach((key) => {\n if (Array.isArray(query[key])) {\n if (!query[key].includes(event.queryStringParameters[key])) {\n query[key].push(event.queryStringParameters[key]);\n }\n } else {\n query[key] = [event.queryStringParameters[key]];\n }\n });\n }\n return URL.format({\n pathname: event.path,\n query: query,\n });\n}\n\nmodule.exports = (event, context, options) => {\n const method = requestMethod(event);\n const remoteAddress = requestRemoteAddress(event);\n const headers = requestHeaders(event);\n const body = requestBody(event);\n const url = requestUrl(event);\n\n if (typeof options.requestId === 'string' && options.requestId.length > 0) {\n const header = options.requestId.toLowerCase();\n const requestId = headers[header] || event.requestContext.requestId;\n if (requestId) {\n headers[header] = requestId;\n }\n }\n\n const req = new Request({\n method,\n headers,\n body,\n remoteAddress,\n url,\n });\n\n req.requestContext = event.requestContext;\n req.apiGateway = {\n event,\n context,\n };\n\n return req;\n};\n", "'use strict';\n\nconst BINARY_ENCODINGS = ['gzip', 'deflate', 'br'];\nconst BINARY_CONTENT_TYPES = (process.env.BINARY_CONTENT_TYPES || '').split(',');\n\nfunction isBinaryEncoding(headers) {\n const contentEncoding = headers['content-encoding'];\n\n if (typeof contentEncoding === 'string') {\n return contentEncoding.split(',').some(value =>\n BINARY_ENCODINGS.some(binaryEncoding => value.indexOf(binaryEncoding) !== -1)\n );\n }\n}\n\nfunction isBinaryContent(headers, options) {\n const contentTypes = [].concat(options.binary\n ? options.binary\n : BINARY_CONTENT_TYPES\n ).map(candidate =>\n new RegExp(`^${candidate.replace(/\\*/g, '.*')}$`)\n );\n\n const contentType = (headers['content-type'] || '').split(';')[0];\n return !!contentType && contentTypes.some(candidate => candidate.test(contentType));\n}\n\nmodule.exports = function isBinary(headers, options) {\n if (options.binary === false) {\n return false;\n }\n\n if (options.binary === true) {\n return true\n }\n\n if (typeof options.binary === 'function') {\n return options.binary(headers);\n }\n\n return isBinaryEncoding(headers) || isBinaryContent(headers, options);\n};\n", "'use strict';\n\nmodule.exports = function sanitizeHeaders(headers) {\n return Object.keys(headers).reduce((memo, key) => {\n const value = headers[key];\n\n if (Array.isArray(value)) {\n memo.multiValueHeaders[key] = value;\n if (key.toLowerCase() !== 'set-cookie') {\n memo.headers[key] = value.join(\", \");\n }\n } else {\n memo.headers[key] = value == null ? '' : value.toString();\n }\n\n return memo;\n }, {\n headers: {},\n multiValueHeaders: {}\n });\n};\n", "'use strict';\n\nconst isBinary = require('./is-binary');\nconst Response = require('../../response');\nconst sanitizeHeaders = require('./sanitize-headers');\n\nmodule.exports = (event, response, options) => {\n const { statusCode } = response;\n const {headers, multiValueHeaders } = sanitizeHeaders(Response.headers(response));\n\n let cookies = [];\n\n if (multiValueHeaders['set-cookie']) {\n cookies = multiValueHeaders['set-cookie'];\n }\n\n const isBase64Encoded = isBinary(headers, options);\n const encoding = isBase64Encoded ? 'base64' : 'utf8';\n let body = Response.body(response).toString(encoding);\n\n if (headers['transfer-encoding'] === 'chunked' || response.chunkedEncoding) {\n const raw = Response.body(response).toString().split('\\r\\n');\n const parsed = [];\n for (let i = 0; i < raw.length; i +=2) {\n const size = parseInt(raw[i], 16);\n const value = raw[i + 1];\n if (value) {\n parsed.push(value.substring(0, size));\n }\n }\n body = parsed.join('')\n }\n\n let formattedResponse = { statusCode, headers, isBase64Encoded, body };\n\n if (event.version === '2.0' && cookies.length) {\n formattedResponse['cookies'] = cookies;\n }\n\n if ((!event.version || event.version === '1.0') && Object.keys(multiValueHeaders).length) {\n formattedResponse['multiValueHeaders'] = multiValueHeaders;\n }\n\n return formattedResponse;\n};\n", "const cleanUpEvent = require('./clean-up-event');\n\nconst createRequest = require('./create-request');\nconst formatResponse = require('./format-response');\n\nmodule.exports = options => {\n return getResponse => async (event_, context = {}) => {\n const event = cleanUpEvent(event_, options);\n\n const request = createRequest(event, context, options);\n const response = await getResponse(request, event, context);\n\n return formatResponse(event, response, options);\n };\n};\n", "'use strict';\n\nfunction getUrl({ requestPath, url }) {\n if (requestPath) {\n return requestPath;\n }\n\n return typeof url === 'string' ? url : '/';\n}\n\nfunction getRequestContext(request) {\n const requestContext = {};\n requestContext.identity = {};\n const forwardedIp = request.headers['x-forwarded-for'];\n const clientIp = request.headers['client-ip'];\n const ip = forwardedIp ? forwardedIp : (clientIp ? clientIp : '');\n if (ip) {\n requestContext.identity.sourceIp = ip.split(':')[0];\n }\n return requestContext;\n}\n\nmodule.exports = function cleanupRequest(req, options) {\n const request = req || {};\n\n request.requestContext = getRequestContext(req);\n request.method = request.method || 'GET';\n request.url = getUrl(request);\n request.body = request.body || '';\n request.headers = request.headers || {};\n\n if (options.basePath) {\n const basePathIndex = request.url.indexOf(options.basePath);\n\n if (basePathIndex > -1) {\n request.url = request.url.substr(basePathIndex + options.basePath.length);\n }\n }\n\n return request;\n}", "'use strict';\n\nconst url = require('url');\n\nconst Request = require('../../request');\n\nfunction requestHeaders(request) {\n return Object.keys(request.headers).reduce((headers, key) => {\n headers[key.toLowerCase()] = request.headers[key];\n return headers;\n }, {});\n}\n\nfunction requestBody(request) {\n const type = typeof request.rawBody;\n\n if (Buffer.isBuffer(request.rawBody)) {\n return request.rawBody;\n } else if (type === 'string') {\n return Buffer.from(request.rawBody, 'utf8');\n } else if (type === 'object') {\n return Buffer.from(JSON.stringify(request.rawBody));\n }\n\n throw new Error(`Unexpected request.body type: ${typeof request.rawBody}`);\n}\n\nmodule.exports = (request) => {\n const method = request.method;\n const query = request.query;\n const headers = requestHeaders(request);\n const body = requestBody(request);\n\n const req = new Request({\n method,\n headers,\n body,\n url: url.format({\n pathname: request.url,\n query\n })\n });\n req.requestContext = request.requestContext;\n return req;\n}\n", "'use strict';\n\nconst BINARY_ENCODINGS = ['gzip', 'deflate', 'br'];\nconst BINARY_CONTENT_TYPES = (process.env.BINARY_CONTENT_TYPES || '').split(',');\n\nfunction isBinaryEncoding(headers) {\n const contentEncoding = headers['content-encoding'];\n\n if (typeof contentEncoding === 'string') {\n return contentEncoding.split(',').some(value =>\n BINARY_ENCODINGS.some(binaryEncoding => value.indexOf(binaryEncoding) !== -1)\n );\n }\n}\n\nfunction isBinaryContent(headers, options) {\n const contentTypes = [].concat(options.binary\n ? options.binary\n : BINARY_CONTENT_TYPES\n ).map(candidate =>\n new RegExp(`^${candidate.replace(/\\*/g, '.*')}$`)\n );\n\n const contentType = (headers['content-type'] || '').split(';')[0];\n return !!contentType && contentTypes.some(candidate => candidate.test(contentType));\n}\n\nmodule.exports = function isBinary(headers, options) {\n if (options.binary === false) {\n return false;\n }\n\n if (options.binary === true) {\n return true\n }\n\n if (typeof options.binary === 'function') {\n return options.binary(headers);\n }\n\n return isBinaryEncoding(headers) || isBinaryContent(headers, options);\n};\n", "'use strict';\n\nconst setCookieVariations = require('./set-cookie.json').variations;\n\nmodule.exports = function sanitizeHeaders(headers) {\n return Object.keys(headers).reduce((memo, key) => {\n const value = headers[key];\n\n if (Array.isArray(value)) {\n if (key.toLowerCase() === 'set-cookie') {\n value.forEach((cookie, i) => {\n memo[setCookieVariations[i]] = cookie;\n });\n } else {\n memo[key] = value.join(', ');\n }\n } else {\n memo[key] = value == null ? '' : value.toString();\n }\n\n return memo;\n }, {});\n};\n", "const isBinary = require('./is-binary');\nconst Response = require('../../response');\nconst sanitizeHeaders = require('./sanitize-headers');\n\nmodule.exports = (response, options) => {\n const { statusCode } = response;\n const headers = sanitizeHeaders(Response.headers(response));\n\n if (headers['transfer-encoding'] === 'chunked' || response.chunkedEncoding) {\n throw new Error('chunked encoding not supported');\n }\n\n const isBase64Encoded = isBinary(headers, options);\n const encoding = isBase64Encoded ? 'base64' : 'utf8';\n const body = Response.body(response).toString(encoding);\n\n return { status: statusCode, headers, isBase64Encoded, body };\n}", "const cleanupRequest = require('./clean-up-request');\nconst createRequest = require('./create-request');\nconst formatResponse = require('./format-response');\n\nmodule.exports = options => {\n return getResponse => async (context, req) => {\n const event = cleanupRequest(req, options);\n const request = createRequest(event, options);\n const response = await getResponse(request, context, event);\n context.log(response);\n return formatResponse(response, options);\n }\n};", "const aws = require('./aws');\nconst azure = require('./azure');\n\nconst providers = {\n aws,\n azure\n};\n\nmodule.exports = function getProvider(options) {\n const { provider = 'aws' } = options;\n\n if (provider in providers) {\n return providers[provider](options);\n }\n\n throw new Error(`Unsupported provider ${provider}`);\n};\n", "'use strict';\n\nconst finish = require('./lib/finish');\nconst getFramework = require('./lib/framework/get-framework');\nconst getProvider = require('./lib/provider/get-provider');\n\nconst defaultOptions = {\n requestId: 'x-request-id'\n};\n\nmodule.exports = function (app, opts) {\n const options = Object.assign({}, defaultOptions, opts);\n\n const framework = getFramework(app);\n const provider = getProvider(options);\n\n return provider(async (request, ...context) => {\n await finish(request, options.request, ...context);\n const response = await framework(request);\n await finish(response, options.response, ...context);\n return response;\n });\n};\n", "/*!\n * depd\n * Copyright(c) 2014-2018 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\n\nvar relative = require('path').relative\n\n/**\n * Module exports.\n */\n\nmodule.exports = depd\n\n/**\n * Get the path to base files on.\n */\n\nvar basePath = process.cwd()\n\n/**\n * Determine if namespace is contained in the string.\n */\n\nfunction containsNamespace (str, namespace) {\n var vals = str.split(/[ ,]+/)\n var ns = String(namespace).toLowerCase()\n\n for (var i = 0; i < vals.length; i++) {\n var val = vals[i]\n\n // namespace contained\n if (val && (val === '*' || val.toLowerCase() === ns)) {\n return true\n }\n }\n\n return false\n}\n\n/**\n * Convert a data descriptor to accessor descriptor.\n */\n\nfunction convertDataDescriptorToAccessor (obj, prop, message) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop)\n var value = descriptor.value\n\n descriptor.get = function getter () { return value }\n\n if (descriptor.writable) {\n descriptor.set = function setter (val) { return (value = val) }\n }\n\n delete descriptor.value\n delete descriptor.writable\n\n Object.defineProperty(obj, prop, descriptor)\n\n return descriptor\n}\n\n/**\n * Create arguments string to keep arity.\n */\n\nfunction createArgumentsString (arity) {\n var str = ''\n\n for (var i = 0; i < arity; i++) {\n str += ', arg' + i\n }\n\n return str.substr(2)\n}\n\n/**\n * Create stack string from stack.\n */\n\nfunction createStackString (stack) {\n var str = this.name + ': ' + this.namespace\n\n if (this.message) {\n str += ' deprecated ' + this.message\n }\n\n for (var i = 0; i < stack.length; i++) {\n str += '\\n at ' + stack[i].toString()\n }\n\n return str\n}\n\n/**\n * Create deprecate for namespace in caller.\n */\n\nfunction depd (namespace) {\n if (!namespace) {\n throw new TypeError('argument namespace is required')\n }\n\n var stack = getStack()\n var site = callSiteLocation(stack[1])\n var file = site[0]\n\n function deprecate (message) {\n // call to self as log\n log.call(deprecate, message)\n }\n\n deprecate._file = file\n deprecate._ignored = isignored(namespace)\n deprecate._namespace = namespace\n deprecate._traced = istraced(namespace)\n deprecate._warned = Object.create(null)\n\n deprecate.function = wrapfunction\n deprecate.property = wrapproperty\n\n return deprecate\n}\n\n/**\n * Determine if event emitter has listeners of a given type.\n *\n * The way to do this check is done three different ways in Node.js >= 0.8\n * so this consolidates them into a minimal set using instance methods.\n *\n * @param {EventEmitter} emitter\n * @param {string} type\n * @returns {boolean}\n * @private\n */\n\nfunction eehaslisteners (emitter, type) {\n var count = typeof emitter.listenerCount !== 'function'\n ? emitter.listeners(type).length\n : emitter.listenerCount(type)\n\n return count > 0\n}\n\n/**\n * Determine if namespace is ignored.\n */\n\nfunction isignored (namespace) {\n if (process.noDeprecation) {\n // --no-deprecation support\n return true\n }\n\n var str = process.env.NO_DEPRECATION || ''\n\n // namespace ignored\n return containsNamespace(str, namespace)\n}\n\n/**\n * Determine if namespace is traced.\n */\n\nfunction istraced (namespace) {\n if (process.traceDeprecation) {\n // --trace-deprecation support\n return true\n }\n\n var str = process.env.TRACE_DEPRECATION || ''\n\n // namespace traced\n return containsNamespace(str, namespace)\n}\n\n/**\n * Display deprecation message.\n */\n\nfunction log (message, site) {\n var haslisteners = eehaslisteners(process, 'deprecation')\n\n // abort early if no destination\n if (!haslisteners && this._ignored) {\n return\n }\n\n var caller\n var callFile\n var callSite\n var depSite\n var i = 0\n var seen = false\n var stack = getStack()\n var file = this._file\n\n if (site) {\n // provided site\n depSite = site\n callSite = callSiteLocation(stack[1])\n callSite.name = depSite.name\n file = callSite[0]\n } else {\n // get call site\n i = 2\n depSite = callSiteLocation(stack[i])\n callSite = depSite\n }\n\n // get caller of deprecated thing in relation to file\n for (; i < stack.length; i++) {\n caller = callSiteLocation(stack[i])\n callFile = caller[0]\n\n if (callFile === file) {\n seen = true\n } else if (callFile === this._file) {\n file = this._file\n } else if (seen) {\n break\n }\n }\n\n var key = caller\n ? depSite.join(':') + '__' + caller.join(':')\n : undefined\n\n if (key !== undefined && key in this._warned) {\n // already warned\n return\n }\n\n this._warned[key] = true\n\n // generate automatic message from call site\n var msg = message\n if (!msg) {\n msg = callSite === depSite || !callSite.name\n ? defaultMessage(depSite)\n : defaultMessage(callSite)\n }\n\n // emit deprecation if listeners exist\n if (haslisteners) {\n var err = DeprecationError(this._namespace, msg, stack.slice(i))\n process.emit('deprecation', err)\n return\n }\n\n // format and write message\n var format = process.stderr.isTTY\n ? formatColor\n : formatPlain\n var output = format.call(this, msg, caller, stack.slice(i))\n process.stderr.write(output + '\\n', 'utf8')\n}\n\n/**\n * Get call site location as array.\n */\n\nfunction callSiteLocation (callSite) {\n var file = callSite.getFileName() || ''\n var line = callSite.getLineNumber()\n var colm = callSite.getColumnNumber()\n\n if (callSite.isEval()) {\n file = callSite.getEvalOrigin() + ', ' + file\n }\n\n var site = [file, line, colm]\n\n site.callSite = callSite\n site.name = callSite.getFunctionName()\n\n return site\n}\n\n/**\n * Generate a default message from the site.\n */\n\nfunction defaultMessage (site) {\n var callSite = site.callSite\n var funcName = site.name\n\n // make useful anonymous name\n if (!funcName) {\n funcName = ''\n }\n\n var context = callSite.getThis()\n var typeName = context && callSite.getTypeName()\n\n // ignore useless type name\n if (typeName === 'Object') {\n typeName = undefined\n }\n\n // make useful type name\n if (typeName === 'Function') {\n typeName = context.name || typeName\n }\n\n return typeName && callSite.getMethodName()\n ? typeName + '.' + funcName\n : funcName\n}\n\n/**\n * Format deprecation message without color.\n */\n\nfunction formatPlain (msg, caller, stack) {\n var timestamp = new Date().toUTCString()\n\n var formatted = timestamp +\n ' ' + this._namespace +\n ' deprecated ' + msg\n\n // add stack trace\n if (this._traced) {\n for (var i = 0; i < stack.length; i++) {\n formatted += '\\n at ' + stack[i].toString()\n }\n\n return formatted\n }\n\n if (caller) {\n formatted += ' at ' + formatLocation(caller)\n }\n\n return formatted\n}\n\n/**\n * Format deprecation message with color.\n */\n\nfunction formatColor (msg, caller, stack) {\n var formatted = '\\x1b[36;1m' + this._namespace + '\\x1b[22;39m' + // bold cyan\n ' \\x1b[33;1mdeprecated\\x1b[22;39m' + // bold yellow\n ' \\x1b[0m' + msg + '\\x1b[39m' // reset\n\n // add stack trace\n if (this._traced) {\n for (var i = 0; i < stack.length; i++) {\n formatted += '\\n \\x1b[36mat ' + stack[i].toString() + '\\x1b[39m' // cyan\n }\n\n return formatted\n }\n\n if (caller) {\n formatted += ' \\x1b[36m' + formatLocation(caller) + '\\x1b[39m' // cyan\n }\n\n return formatted\n}\n\n/**\n * Format call site location.\n */\n\nfunction formatLocation (callSite) {\n return relative(basePath, callSite[0]) +\n ':' + callSite[1] +\n ':' + callSite[2]\n}\n\n/**\n * Get the stack as array of call sites.\n */\n\nfunction getStack () {\n var limit = Error.stackTraceLimit\n var obj = {}\n var prep = Error.prepareStackTrace\n\n Error.prepareStackTrace = prepareObjectStackTrace\n Error.stackTraceLimit = Math.max(10, limit)\n\n // capture the stack\n Error.captureStackTrace(obj)\n\n // slice this function off the top\n var stack = obj.stack.slice(1)\n\n Error.prepareStackTrace = prep\n Error.stackTraceLimit = limit\n\n return stack\n}\n\n/**\n * Capture call site stack from v8.\n */\n\nfunction prepareObjectStackTrace (obj, stack) {\n return stack\n}\n\n/**\n * Return a wrapped function in a deprecation message.\n */\n\nfunction wrapfunction (fn, message) {\n if (typeof fn !== 'function') {\n throw new TypeError('argument fn must be a function')\n }\n\n var args = createArgumentsString(fn.length)\n var stack = getStack()\n var site = callSiteLocation(stack[1])\n\n site.name = fn.name\n\n // eslint-disable-next-line no-new-func\n var deprecatedfn = new Function('fn', 'log', 'deprecate', 'message', 'site',\n '\"use strict\"\\n' +\n 'return function (' + args + ') {' +\n 'log.call(deprecate, message, site)\\n' +\n 'return fn.apply(this, arguments)\\n' +\n '}')(fn, log, this, message, site)\n\n return deprecatedfn\n}\n\n/**\n * Wrap property in a deprecation message.\n */\n\nfunction wrapproperty (obj, prop, message) {\n if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n throw new TypeError('argument obj must be object')\n }\n\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop)\n\n if (!descriptor) {\n throw new TypeError('must call property on owner object')\n }\n\n if (!descriptor.configurable) {\n throw new TypeError('property must be configurable')\n }\n\n var deprecate = this\n var stack = getStack()\n var site = callSiteLocation(stack[1])\n\n // set site name\n site.name = prop\n\n // convert data descriptor\n if ('value' in descriptor) {\n descriptor = convertDataDescriptorToAccessor(obj, prop, message)\n }\n\n var get = descriptor.get\n var set = descriptor.set\n\n // wrap getter\n if (typeof get === 'function') {\n descriptor.get = function getter () {\n log.call(deprecate, message, site)\n return get.apply(this, arguments)\n }\n }\n\n // wrap setter\n if (typeof set === 'function') {\n descriptor.set = function setter () {\n log.call(deprecate, message, site)\n return set.apply(this, arguments)\n }\n }\n\n Object.defineProperty(obj, prop, descriptor)\n}\n\n/**\n * Create DeprecationError for deprecation\n */\n\nfunction DeprecationError (namespace, message, stack) {\n var error = new Error()\n var stackString\n\n Object.defineProperty(error, 'constructor', {\n value: DeprecationError\n })\n\n Object.defineProperty(error, 'message', {\n configurable: true,\n enumerable: false,\n value: message,\n writable: true\n })\n\n Object.defineProperty(error, 'name', {\n enumerable: false,\n configurable: true,\n value: 'DeprecationError',\n writable: true\n })\n\n Object.defineProperty(error, 'namespace', {\n configurable: true,\n enumerable: false,\n value: namespace,\n writable: true\n })\n\n Object.defineProperty(error, 'stack', {\n configurable: true,\n enumerable: false,\n get: function () {\n if (stackString !== undefined) {\n return stackString\n }\n\n // prepare stack trace\n return (stackString = createStackString.call(this, stack))\n },\n set: function setter (val) {\n stackString = val\n }\n })\n\n return error\n}\n", "/*!\n * bytes\n * Copyright(c) 2012-2014 TJ Holowaychuk\n * Copyright(c) 2015 Jed Watson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = bytes;\nmodule.exports.format = format;\nmodule.exports.parse = parse;\n\n/**\n * Module variables.\n * @private\n */\n\nvar formatThousandsRegExp = /\\B(?=(\\d{3})+(?!\\d))/g;\n\nvar formatDecimalsRegExp = /(?:\\.0*|(\\.[^0]+)0+)$/;\n\nvar map = {\n b: 1,\n kb: 1 << 10,\n mb: 1 << 20,\n gb: 1 << 30,\n tb: Math.pow(1024, 4),\n pb: Math.pow(1024, 5),\n};\n\nvar parseRegExp = /^((-|\\+)?(\\d+(?:\\.\\d+)?)) *(kb|mb|gb|tb|pb)$/i;\n\n/**\n * Convert the given value in bytes into a string or parse to string to an integer in bytes.\n *\n * @param {string|number} value\n * @param {{\n * case: [string],\n * decimalPlaces: [number]\n * fixedDecimals: [boolean]\n * thousandsSeparator: [string]\n * unitSeparator: [string]\n * }} [options] bytes options.\n *\n * @returns {string|number|null}\n */\n\nfunction bytes(value, options) {\n if (typeof value === 'string') {\n return parse(value);\n }\n\n if (typeof value === 'number') {\n return format(value, options);\n }\n\n return null;\n}\n\n/**\n * Format the given value in bytes into a string.\n *\n * If the value is negative, it is kept as such. If it is a float,\n * it is rounded.\n *\n * @param {number} value\n * @param {object} [options]\n * @param {number} [options.decimalPlaces=2]\n * @param {number} [options.fixedDecimals=false]\n * @param {string} [options.thousandsSeparator=]\n * @param {string} [options.unit=]\n * @param {string} [options.unitSeparator=]\n *\n * @returns {string|null}\n * @public\n */\n\nfunction format(value, options) {\n if (!Number.isFinite(value)) {\n return null;\n }\n\n var mag = Math.abs(value);\n var thousandsSeparator = (options && options.thousandsSeparator) || '';\n var unitSeparator = (options && options.unitSeparator) || '';\n var decimalPlaces = (options && options.decimalPlaces !== undefined) ? options.decimalPlaces : 2;\n var fixedDecimals = Boolean(options && options.fixedDecimals);\n var unit = (options && options.unit) || '';\n\n if (!unit || !map[unit.toLowerCase()]) {\n if (mag >= map.pb) {\n unit = 'PB';\n } else if (mag >= map.tb) {\n unit = 'TB';\n } else if (mag >= map.gb) {\n unit = 'GB';\n } else if (mag >= map.mb) {\n unit = 'MB';\n } else if (mag >= map.kb) {\n unit = 'KB';\n } else {\n unit = 'B';\n }\n }\n\n var val = value / map[unit.toLowerCase()];\n var str = val.toFixed(decimalPlaces);\n\n if (!fixedDecimals) {\n str = str.replace(formatDecimalsRegExp, '$1');\n }\n\n if (thousandsSeparator) {\n str = str.split('.').map(function (s, i) {\n return i === 0\n ? s.replace(formatThousandsRegExp, thousandsSeparator)\n : s\n }).join('.');\n }\n\n return str + unitSeparator + unit;\n}\n\n/**\n * Parse the string value into an integer in bytes.\n *\n * If no unit is given, it is assumed the value is in bytes.\n *\n * @param {number|string} val\n *\n * @returns {number|null}\n * @public\n */\n\nfunction parse(val) {\n if (typeof val === 'number' && !isNaN(val)) {\n return val;\n }\n\n if (typeof val !== 'string') {\n return null;\n }\n\n // Test if the string passed is valid\n var results = parseRegExp.exec(val);\n var floatValue;\n var unit = 'b';\n\n if (!results) {\n // Nothing could be extracted from the given string\n floatValue = parseInt(val, 10);\n unit = 'b'\n } else {\n // Retrieve the value and the unit\n floatValue = parseFloat(results[1]);\n unit = results[4].toLowerCase();\n }\n\n if (isNaN(floatValue)) {\n return null;\n }\n\n return Math.floor(map[unit] * floatValue);\n}\n", "/*!\n * content-type\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 7231 sec 3.1.1.1\n *\n * parameter = token \"=\" ( token / quoted-string )\n * token = 1*tchar\n * tchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n * / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n * / DIGIT / ALPHA\n * ; any VCHAR, except delimiters\n * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE\n * qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text\n * obs-text = %x80-FF\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n */\nvar PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *(\"(?:[\\u000b\\u0020\\u0021\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u000b\\u0020-\\u00ff])*\"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g // eslint-disable-line no-control-regex\nvar TEXT_REGEXP = /^[\\u000b\\u0020-\\u007e\\u0080-\\u00ff]+$/ // eslint-disable-line no-control-regex\nvar TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 7230 sec 3.2.6\n *\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n * obs-text = %x80-FF\n */\nvar QESC_REGEXP = /\\\\([\\u000b\\u0020-\\u00ff])/g // eslint-disable-line no-control-regex\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6\n */\nvar QUOTE_REGEXP = /([\\\\\"])/g\n\n/**\n * RegExp to match type in RFC 7231 sec 3.1.1.1\n *\n * media-type = type \"/\" subtype\n * type = token\n * subtype = token\n */\nvar TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * Module exports.\n * @public\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @public\n */\n\nfunction format (obj) {\n if (!obj || typeof obj !== 'object') {\n throw new TypeError('argument obj is required')\n }\n\n var parameters = obj.parameters\n var type = obj.type\n\n if (!type || !TYPE_REGEXP.test(type)) {\n throw new TypeError('invalid type')\n }\n\n var string = type\n\n // append parameters\n if (parameters && typeof parameters === 'object') {\n var param\n var params = Object.keys(parameters).sort()\n\n for (var i = 0; i < params.length; i++) {\n param = params[i]\n\n if (!TOKEN_REGEXP.test(param)) {\n throw new TypeError('invalid parameter name')\n }\n\n string += '; ' + param + '=' + qstring(parameters[param])\n }\n }\n\n return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @public\n */\n\nfunction parse (string) {\n if (!string) {\n throw new TypeError('argument string is required')\n }\n\n // support req/res-like objects as argument\n var header = typeof string === 'object'\n ? getcontenttype(string)\n : string\n\n if (typeof header !== 'string') {\n throw new TypeError('argument string is required to be a string')\n }\n\n var index = header.indexOf(';')\n var type = index !== -1\n ? header.slice(0, index).trim()\n : header.trim()\n\n if (!TYPE_REGEXP.test(type)) {\n throw new TypeError('invalid media type')\n }\n\n var obj = new ContentType(type.toLowerCase())\n\n // parse parameters\n if (index !== -1) {\n var key\n var match\n var value\n\n PARAM_REGEXP.lastIndex = index\n\n while ((match = PARAM_REGEXP.exec(header))) {\n if (match.index !== index) {\n throw new TypeError('invalid parameter format')\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (value.charCodeAt(0) === 0x22 /* \" */) {\n // remove quotes\n value = value.slice(1, -1)\n\n // remove escapes\n if (value.indexOf('\\\\') !== -1) {\n value = value.replace(QESC_REGEXP, '$1')\n }\n }\n\n obj.parameters[key] = value\n }\n\n if (index !== header.length) {\n throw new TypeError('invalid parameter format')\n }\n }\n\n return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @private\n */\n\nfunction getcontenttype (obj) {\n var header\n\n if (typeof obj.getHeader === 'function') {\n // res-like\n header = obj.getHeader('content-type')\n } else if (typeof obj.headers === 'object') {\n // req-like\n header = obj.headers && obj.headers['content-type']\n }\n\n if (typeof header !== 'string') {\n throw new TypeError('content-type header is missing from object')\n }\n\n return header\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction qstring (val) {\n var str = String(val)\n\n // no need to quote tokens\n if (TOKEN_REGEXP.test(str)) {\n return str\n }\n\n if (str.length > 0 && !TEXT_REGEXP.test(str)) {\n throw new TypeError('invalid parameter value')\n }\n\n return '\"' + str.replace(QUOTE_REGEXP, '\\\\$1') + '\"'\n}\n\n/**\n * Class to represent a content type.\n * @private\n */\nfunction ContentType (type) {\n this.parameters = Object.create(null)\n this.type = type\n}\n", "'use strict'\n/* eslint no-proto: 0 */\nmodule.exports = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties)\n\nfunction setProtoOf (obj, proto) {\n obj.__proto__ = proto\n return obj\n}\n\nfunction mixinProperties (obj, proto) {\n for (var prop in proto) {\n if (!Object.prototype.hasOwnProperty.call(obj, prop)) {\n obj[prop] = proto[prop]\n }\n }\n return obj\n}\n", "/*!\n * statuses\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar codes = require('./codes.json')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = status\n\n// status code to message map\nstatus.message = codes\n\n// status message (lower-case) to code map\nstatus.code = createMessageToStatusCodeMap(codes)\n\n// array of status codes\nstatus.codes = createStatusCodeList(codes)\n\n// status codes for redirects\nstatus.redirect = {\n 300: true,\n 301: true,\n 302: true,\n 303: true,\n 305: true,\n 307: true,\n 308: true\n}\n\n// status codes for empty bodies\nstatus.empty = {\n 204: true,\n 205: true,\n 304: true\n}\n\n// status codes for when you should retry the request\nstatus.retry = {\n 502: true,\n 503: true,\n 504: true\n}\n\n/**\n * Create a map of message to status code.\n * @private\n */\n\nfunction createMessageToStatusCodeMap (codes) {\n var map = {}\n\n Object.keys(codes).forEach(function forEachCode (code) {\n var message = codes[code]\n var status = Number(code)\n\n // populate map\n map[message.toLowerCase()] = status\n })\n\n return map\n}\n\n/**\n * Create a list of all status codes.\n * @private\n */\n\nfunction createStatusCodeList (codes) {\n return Object.keys(codes).map(function mapCode (code) {\n return Number(code)\n })\n}\n\n/**\n * Get the status code for given message.\n * @private\n */\n\nfunction getStatusCode (message) {\n var msg = message.toLowerCase()\n\n if (!Object.prototype.hasOwnProperty.call(status.code, msg)) {\n throw new Error('invalid status message: \"' + message + '\"')\n }\n\n return status.code[msg]\n}\n\n/**\n * Get the status message for given code.\n * @private\n */\n\nfunction getStatusMessage (code) {\n if (!Object.prototype.hasOwnProperty.call(status.message, code)) {\n throw new Error('invalid status code: ' + code)\n }\n\n return status.message[code]\n}\n\n/**\n * Get the status code.\n *\n * Given a number, this will throw if it is not a known status\n * code, otherwise the code will be returned. Given a string,\n * the string will be parsed for a number and return the code\n * if valid, otherwise will lookup the code assuming this is\n * the status message.\n *\n * @param {string|number} code\n * @returns {number}\n * @public\n */\n\nfunction status (code) {\n if (typeof code === 'number') {\n return getStatusMessage(code)\n }\n\n if (typeof code !== 'string') {\n throw new TypeError('code must be a number or string')\n }\n\n // '403'\n var n = parseInt(code, 10)\n if (!isNaN(n)) {\n return getStatusMessage(n)\n }\n\n return getStatusCode(code)\n}\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n", "/*!\n * toidentifier\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = toIdentifier\n\n/**\n * Trasform the given string into a JavaScript identifier\n *\n * @param {string} str\n * @returns {string}\n * @public\n */\n\nfunction toIdentifier (str) {\n return str\n .split(' ')\n .map(function (token) {\n return token.slice(0, 1).toUpperCase() + token.slice(1)\n })\n .join('')\n .replace(/[^ _0-9a-z]/gi, '')\n}\n", "/*!\n * http-errors\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar deprecate = require('depd')('http-errors')\nvar setPrototypeOf = require('setprototypeof')\nvar statuses = require('statuses')\nvar inherits = require('inherits')\nvar toIdentifier = require('toidentifier')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = createError\nmodule.exports.HttpError = createHttpErrorConstructor()\nmodule.exports.isHttpError = createIsHttpErrorFunction(module.exports.HttpError)\n\n// Populate exports for all constructors\npopulateConstructorExports(module.exports, statuses.codes, module.exports.HttpError)\n\n/**\n * Get the code class of a status code.\n * @private\n */\n\nfunction codeClass (status) {\n return Number(String(status).charAt(0) + '00')\n}\n\n/**\n * Create a new HTTP Error.\n *\n * @returns {Error}\n * @public\n */\n\nfunction createError () {\n // so much arity going on ~_~\n var err\n var msg\n var status = 500\n var props = {}\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i]\n var type = typeof arg\n if (type === 'object' && arg instanceof Error) {\n err = arg\n status = err.status || err.statusCode || status\n } else if (type === 'number' && i === 0) {\n status = arg\n } else if (type === 'string') {\n msg = arg\n } else if (type === 'object') {\n props = arg\n } else {\n throw new TypeError('argument #' + (i + 1) + ' unsupported type ' + type)\n }\n }\n\n if (typeof status === 'number' && (status < 400 || status >= 600)) {\n deprecate('non-error status code; use only 4xx or 5xx status codes')\n }\n\n if (typeof status !== 'number' ||\n (!statuses.message[status] && (status < 400 || status >= 600))) {\n status = 500\n }\n\n // constructor\n var HttpError = createError[status] || createError[codeClass(status)]\n\n if (!err) {\n // create error\n err = HttpError\n ? new HttpError(msg)\n : new Error(msg || statuses.message[status])\n Error.captureStackTrace(err, createError)\n }\n\n if (!HttpError || !(err instanceof HttpError) || err.status !== status) {\n // add properties to generic error\n err.expose = status < 500\n err.status = err.statusCode = status\n }\n\n for (var key in props) {\n if (key !== 'status' && key !== 'statusCode') {\n err[key] = props[key]\n }\n }\n\n return err\n}\n\n/**\n * Create HTTP error abstract base class.\n * @private\n */\n\nfunction createHttpErrorConstructor () {\n function HttpError () {\n throw new TypeError('cannot construct abstract class')\n }\n\n inherits(HttpError, Error)\n\n return HttpError\n}\n\n/**\n * Create a constructor for a client error.\n * @private\n */\n\nfunction createClientErrorConstructor (HttpError, name, code) {\n var className = toClassName(name)\n\n function ClientError (message) {\n // create the error object\n var msg = message != null ? message : statuses.message[code]\n var err = new Error(msg)\n\n // capture a stack trace to the construction point\n Error.captureStackTrace(err, ClientError)\n\n // adjust the [[Prototype]]\n setPrototypeOf(err, ClientError.prototype)\n\n // redefine the error message\n Object.defineProperty(err, 'message', {\n enumerable: true,\n configurable: true,\n value: msg,\n writable: true\n })\n\n // redefine the error name\n Object.defineProperty(err, 'name', {\n enumerable: false,\n configurable: true,\n value: className,\n writable: true\n })\n\n return err\n }\n\n inherits(ClientError, HttpError)\n nameFunc(ClientError, className)\n\n ClientError.prototype.status = code\n ClientError.prototype.statusCode = code\n ClientError.prototype.expose = true\n\n return ClientError\n}\n\n/**\n * Create function to test is a value is a HttpError.\n * @private\n */\n\nfunction createIsHttpErrorFunction (HttpError) {\n return function isHttpError (val) {\n if (!val || typeof val !== 'object') {\n return false\n }\n\n if (val instanceof HttpError) {\n return true\n }\n\n return val instanceof Error &&\n typeof val.expose === 'boolean' &&\n typeof val.statusCode === 'number' && val.status === val.statusCode\n }\n}\n\n/**\n * Create a constructor for a server error.\n * @private\n */\n\nfunction createServerErrorConstructor (HttpError, name, code) {\n var className = toClassName(name)\n\n function ServerError (message) {\n // create the error object\n var msg = message != null ? message : statuses.message[code]\n var err = new Error(msg)\n\n // capture a stack trace to the construction point\n Error.captureStackTrace(err, ServerError)\n\n // adjust the [[Prototype]]\n setPrototypeOf(err, ServerError.prototype)\n\n // redefine the error message\n Object.defineProperty(err, 'message', {\n enumerable: true,\n configurable: true,\n value: msg,\n writable: true\n })\n\n // redefine the error name\n Object.defineProperty(err, 'name', {\n enumerable: false,\n configurable: true,\n value: className,\n writable: true\n })\n\n return err\n }\n\n inherits(ServerError, HttpError)\n nameFunc(ServerError, className)\n\n ServerError.prototype.status = code\n ServerError.prototype.statusCode = code\n ServerError.prototype.expose = false\n\n return ServerError\n}\n\n/**\n * Set the name of a function, if possible.\n * @private\n */\n\nfunction nameFunc (func, name) {\n var desc = Object.getOwnPropertyDescriptor(func, 'name')\n\n if (desc && desc.configurable) {\n desc.value = name\n Object.defineProperty(func, 'name', desc)\n }\n}\n\n/**\n * Populate the exports object with constructors for every error class.\n * @private\n */\n\nfunction populateConstructorExports (exports, codes, HttpError) {\n codes.forEach(function forEachCode (code) {\n var CodeError\n var name = toIdentifier(statuses.message[code])\n\n switch (codeClass(code)) {\n case 400:\n CodeError = createClientErrorConstructor(HttpError, name, code)\n break\n case 500:\n CodeError = createServerErrorConstructor(HttpError, name, code)\n break\n }\n\n if (CodeError) {\n // export the constructor\n exports[code] = CodeError\n exports[name] = CodeError\n }\n })\n}\n\n/**\n * Get a class name from a name identifier.\n * @private\n */\n\nfunction toClassName (name) {\n return name.substr(-5) !== 'Error'\n ? name + 'Error'\n : name\n}\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n", "/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n", "/**\n * Module dependencies.\n */\n\nvar tty = require('tty');\nvar util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(function (key) {\n return /^debug_/i.test(key);\n}).reduce(function (obj, key) {\n // camel-case\n var prop = key\n .substring(6)\n .toLowerCase()\n .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() });\n\n // coerce string value into JS value\n var val = process.env[key];\n if (/^(yes|on|true|enabled)$/i.test(val)) val = true;\n else if (/^(no|off|false|disabled)$/i.test(val)) val = false;\n else if (val === 'null') val = null;\n else val = Number(val);\n\n obj[prop] = val;\n return obj;\n}, {});\n\n/**\n * The file descriptor to write the `debug()` calls to.\n * Set the `DEBUG_FD` env variable to override with another value. i.e.:\n *\n * $ DEBUG_FD=3 node script.js 3>debug.log\n */\n\nvar fd = parseInt(process.env.DEBUG_FD, 10) || 2;\n\nif (1 !== fd && 2 !== fd) {\n util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')()\n}\n\nvar stream = 1 === fd ? process.stdout :\n 2 === fd ? process.stderr :\n createWritableStdioStream(fd);\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n return 'colors' in exports.inspectOpts\n ? Boolean(exports.inspectOpts.colors)\n : tty.isatty(fd);\n}\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nexports.formatters.o = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts)\n .split('\\n').map(function(str) {\n return str.trim()\n }).join(' ');\n};\n\n/**\n * Map %o to `util.inspect()`, allowing multiple lines if needed.\n */\n\nexports.formatters.O = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts);\n};\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var name = this.namespace;\n var useColors = this.useColors;\n\n if (useColors) {\n var c = this.color;\n var prefix = ' \\u001b[3' + c + ';1m' + name + ' ' + '\\u001b[0m';\n\n args[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n args.push('\\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\\u001b[0m');\n } else {\n args[0] = new Date().toUTCString()\n + ' ' + name + ' ' + args[0];\n }\n}\n\n/**\n * Invokes `util.format()` with the specified arguments and writes to `stream`.\n */\n\nfunction log() {\n return stream.write(util.format.apply(util, arguments) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n if (null == namespaces) {\n // If you set a process.env field to null or undefined, it gets cast to the\n // string 'null' or 'undefined'. Just delete instead.\n delete process.env.DEBUG;\n } else {\n process.env.DEBUG = namespaces;\n }\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n return process.env.DEBUG;\n}\n\n/**\n * Copied from `node/src/node.js`.\n *\n * XXX: It's lame that node doesn't expose this API out-of-the-box. It also\n * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame.\n */\n\nfunction createWritableStdioStream (fd) {\n var stream;\n var tty_wrap = process.binding('tty_wrap');\n\n // Note stream._type is used for test-module-load-list.js\n\n switch (tty_wrap.guessHandleType(fd)) {\n case 'TTY':\n stream = new tty.WriteStream(fd);\n stream._type = 'tty';\n\n // Hack to have stream not keep the event loop alive.\n // See https://github.com/joyent/node/issues/1726\n if (stream._handle && stream._handle.unref) {\n stream._handle.unref();\n }\n break;\n\n case 'FILE':\n var fs = require('fs');\n stream = new fs.SyncWriteStream(fd, { autoClose: false });\n stream._type = 'fs';\n break;\n\n case 'PIPE':\n case 'TCP':\n var net = require('net');\n stream = new net.Socket({\n fd: fd,\n readable: false,\n writable: true\n });\n\n // FIXME Should probably have an option in net.Socket to create a\n // stream from an existing fd which is writable only. But for now\n // we'll just add this hack and set the `readable` member to false.\n // Test: ./node test/fixtures/echo.js < /etc/passwd\n stream.readable = false;\n stream.read = null;\n stream._type = 'pipe';\n\n // FIXME Hack to have stream not keep the event loop alive.\n // See https://github.com/joyent/node/issues/1726\n if (stream._handle && stream._handle.unref) {\n stream._handle.unref();\n }\n break;\n\n default:\n // Probably an error on in uv_guess_handle()\n throw new Error('Implement me. Unknown stream file type!');\n }\n\n // For supporting legacy API we put the FD here.\n stream.fd = fd;\n\n stream._isStdio = true;\n\n return stream;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init (debug) {\n debug.inspectOpts = {};\n\n var keys = Object.keys(exports.inspectOpts);\n for (var i = 0; i < keys.length; i++) {\n debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n }\n}\n\n/**\n * Enable namespaces listed in `process.env.DEBUG` initially.\n */\n\nexports.enable(load());\n", "/**\n * Detect Electron renderer process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process !== 'undefined' && process.type === 'renderer') {\n module.exports = require('./browser.js');\n} else {\n module.exports = require('./node.js');\n}\n", "/*!\n * destroy\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar EventEmitter = require('events').EventEmitter\nvar ReadStream = require('fs').ReadStream\nvar Stream = require('stream')\nvar Zlib = require('zlib')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = destroy\n\n/**\n * Destroy the given stream, and optionally suppress any future `error` events.\n *\n * @param {object} stream\n * @param {boolean} suppress\n * @public\n */\n\nfunction destroy (stream, suppress) {\n if (isFsReadStream(stream)) {\n destroyReadStream(stream)\n } else if (isZlibStream(stream)) {\n destroyZlibStream(stream)\n } else if (hasDestroy(stream)) {\n stream.destroy()\n }\n\n if (isEventEmitter(stream) && suppress) {\n stream.removeAllListeners('error')\n stream.addListener('error', noop)\n }\n\n return stream\n}\n\n/**\n * Destroy a ReadStream.\n *\n * @param {object} stream\n * @private\n */\n\nfunction destroyReadStream (stream) {\n stream.destroy()\n\n if (typeof stream.close === 'function') {\n // node.js core bug work-around\n stream.on('open', onOpenClose)\n }\n}\n\n/**\n * Close a Zlib stream.\n *\n * Zlib streams below Node.js 4.5.5 have a buggy implementation\n * of .close() when zlib encountered an error.\n *\n * @param {object} stream\n * @private\n */\n\nfunction closeZlibStream (stream) {\n if (stream._hadError === true) {\n var prop = stream._binding === null\n ? '_binding'\n : '_handle'\n\n stream[prop] = {\n close: function () { this[prop] = null }\n }\n }\n\n stream.close()\n}\n\n/**\n * Destroy a Zlib stream.\n *\n * Zlib streams don't have a destroy function in Node.js 6. On top of that\n * simply calling destroy on a zlib stream in Node.js 8+ will result in a\n * memory leak. So until that is fixed, we need to call both close AND destroy.\n *\n * PR to fix memory leak: https://github.com/nodejs/node/pull/23734\n *\n * In Node.js 6+8, it's important that destroy is called before close as the\n * stream would otherwise emit the error 'zlib binding closed'.\n *\n * @param {object} stream\n * @private\n */\n\nfunction destroyZlibStream (stream) {\n if (typeof stream.destroy === 'function') {\n // node.js core bug work-around\n // istanbul ignore if: node.js 0.8\n if (stream._binding) {\n // node.js < 0.10.0\n stream.destroy()\n if (stream._processing) {\n stream._needDrain = true\n stream.once('drain', onDrainClearBinding)\n } else {\n stream._binding.clear()\n }\n } else if (stream._destroy && stream._destroy !== Stream.Transform.prototype._destroy) {\n // node.js >= 12, ^11.1.0, ^10.15.1\n stream.destroy()\n } else if (stream._destroy && typeof stream.close === 'function') {\n // node.js 7, 8\n stream.destroyed = true\n stream.close()\n } else {\n // fallback\n // istanbul ignore next\n stream.destroy()\n }\n } else if (typeof stream.close === 'function') {\n // node.js < 8 fallback\n closeZlibStream(stream)\n }\n}\n\n/**\n * Determine if stream has destroy.\n * @private\n */\n\nfunction hasDestroy (stream) {\n return stream instanceof Stream &&\n typeof stream.destroy === 'function'\n}\n\n/**\n * Determine if val is EventEmitter.\n * @private\n */\n\nfunction isEventEmitter (val) {\n return val instanceof EventEmitter\n}\n\n/**\n * Determine if stream is fs.ReadStream stream.\n * @private\n */\n\nfunction isFsReadStream (stream) {\n return stream instanceof ReadStream\n}\n\n/**\n * Determine if stream is Zlib stream.\n * @private\n */\n\nfunction isZlibStream (stream) {\n return stream instanceof Zlib.Gzip ||\n stream instanceof Zlib.Gunzip ||\n stream instanceof Zlib.Deflate ||\n stream instanceof Zlib.DeflateRaw ||\n stream instanceof Zlib.Inflate ||\n stream instanceof Zlib.InflateRaw ||\n stream instanceof Zlib.Unzip\n}\n\n/**\n * No-op function.\n * @private\n */\n\nfunction noop () {}\n\n/**\n * On drain handler to clear binding.\n * @private\n */\n\n// istanbul ignore next: node.js 0.8\nfunction onDrainClearBinding () {\n this._binding.clear()\n}\n\n/**\n * On open handler to close stream.\n * @private\n */\n\nfunction onOpenClose () {\n if (typeof this.fd === 'number') {\n // actually close down the fd\n this.close()\n }\n}\n", "/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n", "\"use strict\";\n\nvar BOMChar = '\\uFEFF';\n\nexports.PrependBOM = PrependBOMWrapper\nfunction PrependBOMWrapper(encoder, options) {\n this.encoder = encoder;\n this.addBOM = true;\n}\n\nPrependBOMWrapper.prototype.write = function(str) {\n if (this.addBOM) {\n str = BOMChar + str;\n this.addBOM = false;\n }\n\n return this.encoder.write(str);\n}\n\nPrependBOMWrapper.prototype.end = function() {\n return this.encoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n\nexports.StripBOM = StripBOMWrapper;\nfunction StripBOMWrapper(decoder, options) {\n this.decoder = decoder;\n this.pass = false;\n this.options = options || {};\n}\n\nStripBOMWrapper.prototype.write = function(buf) {\n var res = this.decoder.write(buf);\n if (this.pass || !res)\n return res;\n\n if (res[0] === BOMChar) {\n res = res.slice(1);\n if (typeof this.options.stripBOM === 'function')\n this.options.stripBOM();\n }\n\n this.pass = true;\n return res;\n}\n\nStripBOMWrapper.prototype.end = function() {\n return this.decoder.end();\n}\n\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Export Node.js internal encodings.\n\nmodule.exports = {\n // Encodings\n utf8: { type: \"_internal\", bomAware: true},\n cesu8: { type: \"_internal\", bomAware: true},\n unicode11utf8: \"utf8\",\n\n ucs2: { type: \"_internal\", bomAware: true},\n utf16le: \"ucs2\",\n\n binary: { type: \"_internal\" },\n base64: { type: \"_internal\" },\n hex: { type: \"_internal\" },\n\n // Codec.\n _internal: InternalCodec,\n};\n\n//------------------------------------------------------------------------------\n\nfunction InternalCodec(codecOptions, iconv) {\n this.enc = codecOptions.encodingName;\n this.bomAware = codecOptions.bomAware;\n\n if (this.enc === \"base64\")\n this.encoder = InternalEncoderBase64;\n else if (this.enc === \"cesu8\") {\n this.enc = \"utf8\"; // Use utf8 for decoding.\n this.encoder = InternalEncoderCesu8;\n\n // Add decoder for versions of Node not supporting CESU-8\n if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '\uD83D\uDCA9') {\n this.decoder = InternalDecoderCesu8;\n this.defaultCharUnicode = iconv.defaultCharUnicode;\n }\n }\n}\n\nInternalCodec.prototype.encoder = InternalEncoder;\nInternalCodec.prototype.decoder = InternalDecoder;\n\n//------------------------------------------------------------------------------\n\n// We use node.js internal decoder. Its signature is the same as ours.\nvar StringDecoder = require('string_decoder').StringDecoder;\n\nif (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method.\n StringDecoder.prototype.end = function() {};\n\n\nfunction InternalDecoder(options, codec) {\n StringDecoder.call(this, codec.enc);\n}\n\nInternalDecoder.prototype = StringDecoder.prototype;\n\n\n//------------------------------------------------------------------------------\n// Encoder is mostly trivial\n\nfunction InternalEncoder(options, codec) {\n this.enc = codec.enc;\n}\n\nInternalEncoder.prototype.write = function(str) {\n return Buffer.from(str, this.enc);\n}\n\nInternalEncoder.prototype.end = function() {\n}\n\n\n//------------------------------------------------------------------------------\n// Except base64 encoder, which must keep its state.\n\nfunction InternalEncoderBase64(options, codec) {\n this.prevStr = '';\n}\n\nInternalEncoderBase64.prototype.write = function(str) {\n str = this.prevStr + str;\n var completeQuads = str.length - (str.length % 4);\n this.prevStr = str.slice(completeQuads);\n str = str.slice(0, completeQuads);\n\n return Buffer.from(str, \"base64\");\n}\n\nInternalEncoderBase64.prototype.end = function() {\n return Buffer.from(this.prevStr, \"base64\");\n}\n\n\n//------------------------------------------------------------------------------\n// CESU-8 encoder is also special.\n\nfunction InternalEncoderCesu8(options, codec) {\n}\n\nInternalEncoderCesu8.prototype.write = function(str) {\n var buf = Buffer.alloc(str.length * 3), bufIdx = 0;\n for (var i = 0; i < str.length; i++) {\n var charCode = str.charCodeAt(i);\n // Naive implementation, but it works because CESU-8 is especially easy\n // to convert from UTF-16 (which all JS strings are encoded in).\n if (charCode < 0x80)\n buf[bufIdx++] = charCode;\n else if (charCode < 0x800) {\n buf[bufIdx++] = 0xC0 + (charCode >>> 6);\n buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n }\n else { // charCode will always be < 0x10000 in javascript.\n buf[bufIdx++] = 0xE0 + (charCode >>> 12);\n buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);\n buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n }\n }\n return buf.slice(0, bufIdx);\n}\n\nInternalEncoderCesu8.prototype.end = function() {\n}\n\n//------------------------------------------------------------------------------\n// CESU-8 decoder is not implemented in Node v4.0+\n\nfunction InternalDecoderCesu8(options, codec) {\n this.acc = 0;\n this.contBytes = 0;\n this.accBytes = 0;\n this.defaultCharUnicode = codec.defaultCharUnicode;\n}\n\nInternalDecoderCesu8.prototype.write = function(buf) {\n var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, \n res = '';\n for (var i = 0; i < buf.length; i++) {\n var curByte = buf[i];\n if ((curByte & 0xC0) !== 0x80) { // Leading byte\n if (contBytes > 0) { // Previous code is invalid\n res += this.defaultCharUnicode;\n contBytes = 0;\n }\n\n if (curByte < 0x80) { // Single-byte code\n res += String.fromCharCode(curByte);\n } else if (curByte < 0xE0) { // Two-byte code\n acc = curByte & 0x1F;\n contBytes = 1; accBytes = 1;\n } else if (curByte < 0xF0) { // Three-byte code\n acc = curByte & 0x0F;\n contBytes = 2; accBytes = 1;\n } else { // Four or more are not supported for CESU-8.\n res += this.defaultCharUnicode;\n }\n } else { // Continuation byte\n if (contBytes > 0) { // We're waiting for it.\n acc = (acc << 6) | (curByte & 0x3f);\n contBytes--; accBytes++;\n if (contBytes === 0) {\n // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)\n if (accBytes === 2 && acc < 0x80 && acc > 0)\n res += this.defaultCharUnicode;\n else if (accBytes === 3 && acc < 0x800)\n res += this.defaultCharUnicode;\n else\n // Actually add character.\n res += String.fromCharCode(acc);\n }\n } else { // Unexpected continuation byte\n res += this.defaultCharUnicode;\n }\n }\n }\n this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;\n return res;\n}\n\nInternalDecoderCesu8.prototype.end = function() {\n var res = 0;\n if (this.contBytes > 0)\n res += this.defaultCharUnicode;\n return res;\n}\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js\n\n// == UTF16-BE codec. ==========================================================\n\nexports.utf16be = Utf16BECodec;\nfunction Utf16BECodec() {\n}\n\nUtf16BECodec.prototype.encoder = Utf16BEEncoder;\nUtf16BECodec.prototype.decoder = Utf16BEDecoder;\nUtf16BECodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf16BEEncoder() {\n}\n\nUtf16BEEncoder.prototype.write = function(str) {\n var buf = Buffer.from(str, 'ucs2');\n for (var i = 0; i < buf.length; i += 2) {\n var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp;\n }\n return buf;\n}\n\nUtf16BEEncoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf16BEDecoder() {\n this.overflowByte = -1;\n}\n\nUtf16BEDecoder.prototype.write = function(buf) {\n if (buf.length == 0)\n return '';\n\n var buf2 = Buffer.alloc(buf.length + 1),\n i = 0, j = 0;\n\n if (this.overflowByte !== -1) {\n buf2[0] = buf[0];\n buf2[1] = this.overflowByte;\n i = 1; j = 2;\n }\n\n for (; i < buf.length-1; i += 2, j+= 2) {\n buf2[j] = buf[i+1];\n buf2[j+1] = buf[i];\n }\n\n this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1;\n\n return buf2.slice(0, j).toString('ucs2');\n}\n\nUtf16BEDecoder.prototype.end = function() {\n}\n\n\n// == UTF-16 codec =============================================================\n// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.\n// Defaults to UTF-16LE, as it's prevalent and default in Node.\n// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le\n// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});\n\n// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).\n\nexports.utf16 = Utf16Codec;\nfunction Utf16Codec(codecOptions, iconv) {\n this.iconv = iconv;\n}\n\nUtf16Codec.prototype.encoder = Utf16Encoder;\nUtf16Codec.prototype.decoder = Utf16Decoder;\n\n\n// -- Encoding (pass-through)\n\nfunction Utf16Encoder(options, codec) {\n options = options || {};\n if (options.addBOM === undefined)\n options.addBOM = true;\n this.encoder = codec.iconv.getEncoder('utf-16le', options);\n}\n\nUtf16Encoder.prototype.write = function(str) {\n return this.encoder.write(str);\n}\n\nUtf16Encoder.prototype.end = function() {\n return this.encoder.end();\n}\n\n\n// -- Decoding\n\nfunction Utf16Decoder(options, codec) {\n this.decoder = null;\n this.initialBytes = [];\n this.initialBytesLen = 0;\n\n this.options = options || {};\n this.iconv = codec.iconv;\n}\n\nUtf16Decoder.prototype.write = function(buf) {\n if (!this.decoder) {\n // Codec is not chosen yet. Accumulate initial bytes.\n this.initialBytes.push(buf);\n this.initialBytesLen += buf.length;\n \n if (this.initialBytesLen < 16) // We need more bytes to use space heuristic (see below)\n return '';\n\n // We have enough bytes -> detect endianness.\n var buf = Buffer.concat(this.initialBytes),\n encoding = detectEncoding(buf, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n this.initialBytes.length = this.initialBytesLen = 0;\n }\n\n return this.decoder.write(buf);\n}\n\nUtf16Decoder.prototype.end = function() {\n if (!this.decoder) {\n var buf = Buffer.concat(this.initialBytes),\n encoding = detectEncoding(buf, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n var res = this.decoder.write(buf),\n trail = this.decoder.end();\n\n return trail ? (res + trail) : res;\n }\n return this.decoder.end();\n}\n\nfunction detectEncoding(buf, defaultEncoding) {\n var enc = defaultEncoding || 'utf-16le';\n\n if (buf.length >= 2) {\n // Check BOM.\n if (buf[0] == 0xFE && buf[1] == 0xFF) // UTF-16BE BOM\n enc = 'utf-16be';\n else if (buf[0] == 0xFF && buf[1] == 0xFE) // UTF-16LE BOM\n enc = 'utf-16le';\n else {\n // No BOM found. Try to deduce encoding from initial content.\n // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.\n // So, we count ASCII as if it was LE or BE, and decide from that.\n var asciiCharsLE = 0, asciiCharsBE = 0, // Counts of chars in both positions\n _len = Math.min(buf.length - (buf.length % 2), 64); // Len is always even.\n\n for (var i = 0; i < _len; i += 2) {\n if (buf[i] === 0 && buf[i+1] !== 0) asciiCharsBE++;\n if (buf[i] !== 0 && buf[i+1] === 0) asciiCharsLE++;\n }\n\n if (asciiCharsBE > asciiCharsLE)\n enc = 'utf-16be';\n else if (asciiCharsBE < asciiCharsLE)\n enc = 'utf-16le';\n }\n }\n\n return enc;\n}\n\n\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152\n// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3\n\nexports.utf7 = Utf7Codec;\nexports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7\nfunction Utf7Codec(codecOptions, iconv) {\n this.iconv = iconv;\n};\n\nUtf7Codec.prototype.encoder = Utf7Encoder;\nUtf7Codec.prototype.decoder = Utf7Decoder;\nUtf7Codec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nvar nonDirectChars = /[^A-Za-z0-9'\\(\\),-\\.\\/:\\? \\n\\r\\t]+/g;\n\nfunction Utf7Encoder(options, codec) {\n this.iconv = codec.iconv;\n}\n\nUtf7Encoder.prototype.write = function(str) {\n // Naive implementation.\n // Non-direct chars are encoded as \"+-\"; single \"+\" char is encoded as \"+-\".\n return Buffer.from(str.replace(nonDirectChars, function(chunk) {\n return \"+\" + (chunk === '+' ? '' : \n this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) \n + \"-\";\n }.bind(this)));\n}\n\nUtf7Encoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf7Decoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = '';\n}\n\nvar base64Regex = /[A-Za-z0-9\\/+]/;\nvar base64Chars = [];\nfor (var i = 0; i < 256; i++)\n base64Chars[i] = base64Regex.test(String.fromCharCode(i));\n\nvar plusChar = '+'.charCodeAt(0), \n minusChar = '-'.charCodeAt(0),\n andChar = '&'.charCodeAt(0);\n\nUtf7Decoder.prototype.write = function(buf) {\n var res = \"\", lastI = 0,\n inBase64 = this.inBase64,\n base64Accum = this.base64Accum;\n\n // The decoder is more involved as we must handle chunks in stream.\n\n for (var i = 0; i < buf.length; i++) {\n if (!inBase64) { // We're in direct mode.\n // Write direct chars until '+'\n if (buf[i] == plusChar) {\n res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n lastI = i+1;\n inBase64 = true;\n }\n } else { // We decode base64.\n if (!base64Chars[buf[i]]) { // Base64 ended.\n if (i == lastI && buf[i] == minusChar) {// \"+-\" -> \"+\"\n res += \"+\";\n } else {\n var b64str = base64Accum + buf.slice(lastI, i).toString();\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n if (buf[i] != minusChar) // Minus is absorbed after base64.\n i--;\n\n lastI = i+1;\n inBase64 = false;\n base64Accum = '';\n }\n }\n }\n\n if (!inBase64) {\n res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n } else {\n var b64str = base64Accum + buf.slice(lastI).toString();\n\n var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n b64str = b64str.slice(0, canBeDecoded);\n\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n this.inBase64 = inBase64;\n this.base64Accum = base64Accum;\n\n return res;\n}\n\nUtf7Decoder.prototype.end = function() {\n var res = \"\";\n if (this.inBase64 && this.base64Accum.length > 0)\n res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n this.inBase64 = false;\n this.base64Accum = '';\n return res;\n}\n\n\n// UTF-7-IMAP codec.\n// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)\n// Differences:\n// * Base64 part is started by \"&\" instead of \"+\"\n// * Direct characters are 0x20-0x7E, except \"&\" (0x26)\n// * In Base64, \",\" is used instead of \"/\"\n// * Base64 must not be used to represent direct characters.\n// * No implicit shift back from Base64 (should always end with '-')\n// * String must end in non-shifted position.\n// * \"-&\" while in base64 is not allowed.\n\n\nexports.utf7imap = Utf7IMAPCodec;\nfunction Utf7IMAPCodec(codecOptions, iconv) {\n this.iconv = iconv;\n};\n\nUtf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;\nUtf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;\nUtf7IMAPCodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf7IMAPEncoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = Buffer.alloc(6);\n this.base64AccumIdx = 0;\n}\n\nUtf7IMAPEncoder.prototype.write = function(str) {\n var inBase64 = this.inBase64,\n base64Accum = this.base64Accum,\n base64AccumIdx = this.base64AccumIdx,\n buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0;\n\n for (var i = 0; i < str.length; i++) {\n var uChar = str.charCodeAt(i);\n if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'.\n if (inBase64) {\n if (base64AccumIdx > 0) {\n bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n base64AccumIdx = 0;\n }\n\n buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n inBase64 = false;\n }\n\n if (!inBase64) {\n buf[bufIdx++] = uChar; // Write direct character\n\n if (uChar === andChar) // Ampersand -> '&-'\n buf[bufIdx++] = minusChar;\n }\n\n } else { // Non-direct character\n if (!inBase64) {\n buf[bufIdx++] = andChar; // Write '&', then go to base64 mode.\n inBase64 = true;\n }\n if (inBase64) {\n base64Accum[base64AccumIdx++] = uChar >> 8;\n base64Accum[base64AccumIdx++] = uChar & 0xFF;\n\n if (base64AccumIdx == base64Accum.length) {\n bufIdx += buf.write(base64Accum.toString('base64').replace(/\\//g, ','), bufIdx);\n base64AccumIdx = 0;\n }\n }\n }\n }\n\n this.inBase64 = inBase64;\n this.base64AccumIdx = base64AccumIdx;\n\n return buf.slice(0, bufIdx);\n}\n\nUtf7IMAPEncoder.prototype.end = function() {\n var buf = Buffer.alloc(10), bufIdx = 0;\n if (this.inBase64) {\n if (this.base64AccumIdx > 0) {\n bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n this.base64AccumIdx = 0;\n }\n\n buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n this.inBase64 = false;\n }\n\n return buf.slice(0, bufIdx);\n}\n\n\n// -- Decoding\n\nfunction Utf7IMAPDecoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = '';\n}\n\nvar base64IMAPChars = base64Chars.slice();\nbase64IMAPChars[','.charCodeAt(0)] = true;\n\nUtf7IMAPDecoder.prototype.write = function(buf) {\n var res = \"\", lastI = 0,\n inBase64 = this.inBase64,\n base64Accum = this.base64Accum;\n\n // The decoder is more involved as we must handle chunks in stream.\n // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).\n\n for (var i = 0; i < buf.length; i++) {\n if (!inBase64) { // We're in direct mode.\n // Write direct chars until '&'\n if (buf[i] == andChar) {\n res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n lastI = i+1;\n inBase64 = true;\n }\n } else { // We decode base64.\n if (!base64IMAPChars[buf[i]]) { // Base64 ended.\n if (i == lastI && buf[i] == minusChar) { // \"&-\" -> \"&\"\n res += \"&\";\n } else {\n var b64str = base64Accum + buf.slice(lastI, i).toString().replace(/,/g, '/');\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n if (buf[i] != minusChar) // Minus may be absorbed after base64.\n i--;\n\n lastI = i+1;\n inBase64 = false;\n base64Accum = '';\n }\n }\n }\n\n if (!inBase64) {\n res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n } else {\n var b64str = base64Accum + buf.slice(lastI).toString().replace(/,/g, '/');\n\n var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n b64str = b64str.slice(0, canBeDecoded);\n\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n this.inBase64 = inBase64;\n this.base64Accum = base64Accum;\n\n return res;\n}\n\nUtf7IMAPDecoder.prototype.end = function() {\n var res = \"\";\n if (this.inBase64 && this.base64Accum.length > 0)\n res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n this.inBase64 = false;\n this.base64Accum = '';\n return res;\n}\n\n\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that\n// correspond to encoded bytes (if 128 - then lower half is ASCII). \n\nexports._sbcs = SBCSCodec;\nfunction SBCSCodec(codecOptions, iconv) {\n if (!codecOptions)\n throw new Error(\"SBCS codec is called without the data.\")\n \n // Prepare char buffer for decoding.\n if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))\n throw new Error(\"Encoding '\"+codecOptions.type+\"' has incorrect 'chars' (must be of len 128 or 256)\");\n \n if (codecOptions.chars.length === 128) {\n var asciiString = \"\";\n for (var i = 0; i < 128; i++)\n asciiString += String.fromCharCode(i);\n codecOptions.chars = asciiString + codecOptions.chars;\n }\n\n this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2');\n \n // Encoding buffer.\n var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0));\n\n for (var i = 0; i < codecOptions.chars.length; i++)\n encodeBuf[codecOptions.chars.charCodeAt(i)] = i;\n\n this.encodeBuf = encodeBuf;\n}\n\nSBCSCodec.prototype.encoder = SBCSEncoder;\nSBCSCodec.prototype.decoder = SBCSDecoder;\n\n\nfunction SBCSEncoder(options, codec) {\n this.encodeBuf = codec.encodeBuf;\n}\n\nSBCSEncoder.prototype.write = function(str) {\n var buf = Buffer.alloc(str.length);\n for (var i = 0; i < str.length; i++)\n buf[i] = this.encodeBuf[str.charCodeAt(i)];\n \n return buf;\n}\n\nSBCSEncoder.prototype.end = function() {\n}\n\n\nfunction SBCSDecoder(options, codec) {\n this.decodeBuf = codec.decodeBuf;\n}\n\nSBCSDecoder.prototype.write = function(buf) {\n // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.\n var decodeBuf = this.decodeBuf;\n var newBuf = Buffer.alloc(buf.length*2);\n var idx1 = 0, idx2 = 0;\n for (var i = 0; i < buf.length; i++) {\n idx1 = buf[i]*2; idx2 = i*2;\n newBuf[idx2] = decodeBuf[idx1];\n newBuf[idx2+1] = decodeBuf[idx1+1];\n }\n return newBuf.toString('ucs2');\n}\n\nSBCSDecoder.prototype.end = function() {\n}\n", "\"use strict\";\n\n// Manually added data to be used by sbcs codec in addition to generated one.\n\nmodule.exports = {\n // Not supported by iconv, not sure why.\n \"10029\": \"maccenteuro\",\n \"maccenteuro\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u0100\u0101\u00C9\u0104\u00D6\u00DC\u00E1\u0105\u010C\u00E4\u010D\u0106\u0107\u00E9\u0179\u017A\u010E\u00ED\u010F\u0112\u0113\u0116\u00F3\u0117\u00F4\u00F6\u00F5\u00FA\u011A\u011B\u00FC\u2020\u00B0\u0118\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u0119\u00A8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\u00AC\u221A\u0144\u0147\u2206\u00AB\u00BB\u2026\u00A0\u0148\u0150\u00D5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\u00C1\u0164\u0165\u00CD\u017D\u017E\u016A\u00D3\u00D4\u016B\u016E\u00DA\u016F\u0170\u0171\u0172\u0173\u00DD\u00FD\u0137\u017B\u0141\u017C\u0122\u02C7\"\n },\n\n \"808\": \"cp808\",\n \"ibm808\": \"cp808\",\n \"cp808\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\u00B0\u2219\u00B7\u221A\u2116\u20AC\u25A0\u00A0\"\n },\n\n \"mik\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\u00A7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n\n // Aliases of generated encodings.\n \"ascii8bit\": \"ascii\",\n \"usascii\": \"ascii\",\n \"ansix34\": \"ascii\",\n \"ansix341968\": \"ascii\",\n \"ansix341986\": \"ascii\",\n \"csascii\": \"ascii\",\n \"cp367\": \"ascii\",\n \"ibm367\": \"ascii\",\n \"isoir6\": \"ascii\",\n \"iso646us\": \"ascii\",\n \"iso646irv\": \"ascii\",\n \"us\": \"ascii\",\n\n \"latin1\": \"iso88591\",\n \"latin2\": \"iso88592\",\n \"latin3\": \"iso88593\",\n \"latin4\": \"iso88594\",\n \"latin5\": \"iso88599\",\n \"latin6\": \"iso885910\",\n \"latin7\": \"iso885913\",\n \"latin8\": \"iso885914\",\n \"latin9\": \"iso885915\",\n \"latin10\": \"iso885916\",\n\n \"csisolatin1\": \"iso88591\",\n \"csisolatin2\": \"iso88592\",\n \"csisolatin3\": \"iso88593\",\n \"csisolatin4\": \"iso88594\",\n \"csisolatincyrillic\": \"iso88595\",\n \"csisolatinarabic\": \"iso88596\",\n \"csisolatingreek\" : \"iso88597\",\n \"csisolatinhebrew\": \"iso88598\",\n \"csisolatin5\": \"iso88599\",\n \"csisolatin6\": \"iso885910\",\n\n \"l1\": \"iso88591\",\n \"l2\": \"iso88592\",\n \"l3\": \"iso88593\",\n \"l4\": \"iso88594\",\n \"l5\": \"iso88599\",\n \"l6\": \"iso885910\",\n \"l7\": \"iso885913\",\n \"l8\": \"iso885914\",\n \"l9\": \"iso885915\",\n \"l10\": \"iso885916\",\n\n \"isoir14\": \"iso646jp\",\n \"isoir57\": \"iso646cn\",\n \"isoir100\": \"iso88591\",\n \"isoir101\": \"iso88592\",\n \"isoir109\": \"iso88593\",\n \"isoir110\": \"iso88594\",\n \"isoir144\": \"iso88595\",\n \"isoir127\": \"iso88596\",\n \"isoir126\": \"iso88597\",\n \"isoir138\": \"iso88598\",\n \"isoir148\": \"iso88599\",\n \"isoir157\": \"iso885910\",\n \"isoir166\": \"tis620\",\n \"isoir179\": \"iso885913\",\n \"isoir199\": \"iso885914\",\n \"isoir203\": \"iso885915\",\n \"isoir226\": \"iso885916\",\n\n \"cp819\": \"iso88591\",\n \"ibm819\": \"iso88591\",\n\n \"cyrillic\": \"iso88595\",\n\n \"arabic\": \"iso88596\",\n \"arabic8\": \"iso88596\",\n \"ecma114\": \"iso88596\",\n \"asmo708\": \"iso88596\",\n\n \"greek\" : \"iso88597\",\n \"greek8\" : \"iso88597\",\n \"ecma118\" : \"iso88597\",\n \"elot928\" : \"iso88597\",\n\n \"hebrew\": \"iso88598\",\n \"hebrew8\": \"iso88598\",\n\n \"turkish\": \"iso88599\",\n \"turkish8\": \"iso88599\",\n\n \"thai\": \"iso885911\",\n \"thai8\": \"iso885911\",\n\n \"celtic\": \"iso885914\",\n \"celtic8\": \"iso885914\",\n \"isoceltic\": \"iso885914\",\n\n \"tis6200\": \"tis620\",\n \"tis62025291\": \"tis620\",\n \"tis62025330\": \"tis620\",\n\n \"10000\": \"macroman\",\n \"10006\": \"macgreek\",\n \"10007\": \"maccyrillic\",\n \"10079\": \"maciceland\",\n \"10081\": \"macturkish\",\n\n \"cspc8codepage437\": \"cp437\",\n \"cspc775baltic\": \"cp775\",\n \"cspc850multilingual\": \"cp850\",\n \"cspcp852\": \"cp852\",\n \"cspc862latinhebrew\": \"cp862\",\n \"cpgr\": \"cp869\",\n\n \"msee\": \"cp1250\",\n \"mscyrl\": \"cp1251\",\n \"msansi\": \"cp1252\",\n \"msgreek\": \"cp1253\",\n \"msturk\": \"cp1254\",\n \"mshebr\": \"cp1255\",\n \"msarab\": \"cp1256\",\n \"winbaltrim\": \"cp1257\",\n\n \"cp20866\": \"koi8r\",\n \"20866\": \"koi8r\",\n \"ibm878\": \"koi8r\",\n \"cskoi8r\": \"koi8r\",\n\n \"cp21866\": \"koi8u\",\n \"21866\": \"koi8u\",\n \"ibm1168\": \"koi8u\",\n\n \"strk10482002\": \"rk1048\",\n\n \"tcvn5712\": \"tcvn\",\n \"tcvn57121\": \"tcvn\",\n\n \"gb198880\": \"iso646cn\",\n \"cn\": \"iso646cn\",\n\n \"csiso14jisc6220ro\": \"iso646jp\",\n \"jisc62201969ro\": \"iso646jp\",\n \"jp\": \"iso646jp\",\n\n \"cshproman8\": \"hproman8\",\n \"r8\": \"hproman8\",\n \"roman8\": \"hproman8\",\n \"xroman8\": \"hproman8\",\n \"ibm1051\": \"hproman8\",\n\n \"mac\": \"macintosh\",\n \"csmacintosh\": \"macintosh\",\n};\n\n", "\"use strict\";\n\n// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.\nmodule.exports = {\n \"437\": \"cp437\",\n \"737\": \"cp737\",\n \"775\": \"cp775\",\n \"850\": \"cp850\",\n \"852\": \"cp852\",\n \"855\": \"cp855\",\n \"856\": \"cp856\",\n \"857\": \"cp857\",\n \"858\": \"cp858\",\n \"860\": \"cp860\",\n \"861\": \"cp861\",\n \"862\": \"cp862\",\n \"863\": \"cp863\",\n \"864\": \"cp864\",\n \"865\": \"cp865\",\n \"866\": \"cp866\",\n \"869\": \"cp869\",\n \"874\": \"windows874\",\n \"922\": \"cp922\",\n \"1046\": \"cp1046\",\n \"1124\": \"cp1124\",\n \"1125\": \"cp1125\",\n \"1129\": \"cp1129\",\n \"1133\": \"cp1133\",\n \"1161\": \"cp1161\",\n \"1162\": \"cp1162\",\n \"1163\": \"cp1163\",\n \"1250\": \"windows1250\",\n \"1251\": \"windows1251\",\n \"1252\": \"windows1252\",\n \"1253\": \"windows1253\",\n \"1254\": \"windows1254\",\n \"1255\": \"windows1255\",\n \"1256\": \"windows1256\",\n \"1257\": \"windows1257\",\n \"1258\": \"windows1258\",\n \"28591\": \"iso88591\",\n \"28592\": \"iso88592\",\n \"28593\": \"iso88593\",\n \"28594\": \"iso88594\",\n \"28595\": \"iso88595\",\n \"28596\": \"iso88596\",\n \"28597\": \"iso88597\",\n \"28598\": \"iso88598\",\n \"28599\": \"iso88599\",\n \"28600\": \"iso885910\",\n \"28601\": \"iso885911\",\n \"28603\": \"iso885913\",\n \"28604\": \"iso885914\",\n \"28605\": \"iso885915\",\n \"28606\": \"iso885916\",\n \"windows874\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"win874\": \"windows874\",\n \"cp874\": \"windows874\",\n \"windows1250\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\u00A0\u02C7\u02D8\u0141\u00A4\u0104\u00A6\u00A7\u00A8\u00A9\u015E\u00AB\u00AC\u00AD\u00AE\u017B\u00B0\u00B1\u02DB\u0142\u00B4\u00B5\u00B6\u00B7\u00B8\u0105\u015F\u00BB\u013D\u02DD\u013E\u017C\u0154\u00C1\u00C2\u0102\u00C4\u0139\u0106\u00C7\u010C\u00C9\u0118\u00CB\u011A\u00CD\u00CE\u010E\u0110\u0143\u0147\u00D3\u00D4\u0150\u00D6\u00D7\u0158\u016E\u00DA\u0170\u00DC\u00DD\u0162\u00DF\u0155\u00E1\u00E2\u0103\u00E4\u013A\u0107\u00E7\u010D\u00E9\u0119\u00EB\u011B\u00ED\u00EE\u010F\u0111\u0144\u0148\u00F3\u00F4\u0151\u00F6\u00F7\u0159\u016F\u00FA\u0171\u00FC\u00FD\u0163\u02D9\"\n },\n \"win1250\": \"windows1250\",\n \"cp1250\": \"windows1250\",\n \"windows1251\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\u00A0\u040E\u045E\u0408\u00A4\u0490\u00A6\u00A7\u0401\u00A9\u0404\u00AB\u00AC\u00AD\u00AE\u0407\u00B0\u00B1\u0406\u0456\u0491\u00B5\u00B6\u00B7\u0451\u2116\u0454\u00BB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n },\n \"win1251\": \"windows1251\",\n \"cp1251\": \"windows1251\",\n \"windows1252\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"win1252\": \"windows1252\",\n \"cp1252\": \"windows1252\",\n \"windows1253\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u0385\u0386\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\uFFFD\u00AB\u00AC\u00AD\u00AE\u2015\u00B0\u00B1\u00B2\u00B3\u0384\u00B5\u00B6\u00B7\u0388\u0389\u038A\u00BB\u038C\u00BD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD\"\n },\n \"win1253\": \"windows1253\",\n \"cp1253\": \"windows1253\",\n \"windows1254\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u011E\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u0130\u015E\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u011F\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u0131\u015F\u00FF\"\n },\n \"win1254\": \"windows1254\",\n \"cp1254\": \"windows1254\",\n \"windows1255\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u00A1\u00A2\u00A3\u20AA\u00A5\u00A6\u00A7\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\u00BF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD\"\n },\n \"win1255\": \"windows1255\",\n \"cp1255\": \"windows1255\",\n \"windows1256\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\u00A0\u060C\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u06BE\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u061B\u00BB\u00BC\u00BD\u00BE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u00D7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\u00E0\u0644\u00E2\u0645\u0646\u0647\u0648\u00E7\u00E8\u00E9\u00EA\u00EB\u0649\u064A\u00EE\u00EF\u064B\u064C\u064D\u064E\u00F4\u064F\u0650\u00F7\u0651\u00F9\u0652\u00FB\u00FC\u200E\u200F\u06D2\"\n },\n \"win1256\": \"windows1256\",\n \"cp1256\": \"windows1256\",\n \"windows1257\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\u00A8\u02C7\u00B8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\u00AF\u02DB\uFFFD\u00A0\uFFFD\u00A2\u00A3\u00A4\uFFFD\u00A6\u00A7\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u02D9\"\n },\n \"win1257\": \"windows1257\",\n \"cp1257\": \"windows1257\",\n \"windows1258\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n },\n \"win1258\": \"windows1258\",\n \"cp1258\": \"windows1258\",\n \"iso88591\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"cp28591\": \"iso88591\",\n \"iso88592\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u02D8\u0141\u00A4\u013D\u015A\u00A7\u00A8\u0160\u015E\u0164\u0179\u00AD\u017D\u017B\u00B0\u0105\u02DB\u0142\u00B4\u013E\u015B\u02C7\u00B8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\u00C1\u00C2\u0102\u00C4\u0139\u0106\u00C7\u010C\u00C9\u0118\u00CB\u011A\u00CD\u00CE\u010E\u0110\u0143\u0147\u00D3\u00D4\u0150\u00D6\u00D7\u0158\u016E\u00DA\u0170\u00DC\u00DD\u0162\u00DF\u0155\u00E1\u00E2\u0103\u00E4\u013A\u0107\u00E7\u010D\u00E9\u0119\u00EB\u011B\u00ED\u00EE\u010F\u0111\u0144\u0148\u00F3\u00F4\u0151\u00F6\u00F7\u0159\u016F\u00FA\u0171\u00FC\u00FD\u0163\u02D9\"\n },\n \"cp28592\": \"iso88592\",\n \"iso88593\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0126\u02D8\u00A3\u00A4\uFFFD\u0124\u00A7\u00A8\u0130\u015E\u011E\u0134\u00AD\uFFFD\u017B\u00B0\u0127\u00B2\u00B3\u00B4\u00B5\u0125\u00B7\u00B8\u0131\u015F\u011F\u0135\u00BD\uFFFD\u017C\u00C0\u00C1\u00C2\uFFFD\u00C4\u010A\u0108\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\uFFFD\u00D1\u00D2\u00D3\u00D4\u0120\u00D6\u00D7\u011C\u00D9\u00DA\u00DB\u00DC\u016C\u015C\u00DF\u00E0\u00E1\u00E2\uFFFD\u00E4\u010B\u0109\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\uFFFD\u00F1\u00F2\u00F3\u00F4\u0121\u00F6\u00F7\u011D\u00F9\u00FA\u00FB\u00FC\u016D\u015D\u02D9\"\n },\n \"cp28593\": \"iso88593\",\n \"iso88594\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0138\u0156\u00A4\u0128\u013B\u00A7\u00A8\u0160\u0112\u0122\u0166\u00AD\u017D\u00AF\u00B0\u0105\u02DB\u0157\u00B4\u0129\u013C\u02C7\u00B8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u012E\u010C\u00C9\u0118\u00CB\u0116\u00CD\u00CE\u012A\u0110\u0145\u014C\u0136\u00D4\u00D5\u00D6\u00D7\u00D8\u0172\u00DA\u00DB\u00DC\u0168\u016A\u00DF\u0101\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u012F\u010D\u00E9\u0119\u00EB\u0117\u00ED\u00EE\u012B\u0111\u0146\u014D\u0137\u00F4\u00F5\u00F6\u00F7\u00F8\u0173\u00FA\u00FB\u00FC\u0169\u016B\u02D9\"\n },\n \"cp28594\": \"iso88594\",\n \"iso88595\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F\"\n },\n \"cp28595\": \"iso88595\",\n \"iso88596\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\uFFFD\uFFFD\u00A4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\u00AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"cp28596\": \"iso88596\",\n \"iso88597\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u2018\u2019\u00A3\u20AC\u20AF\u00A6\u00A7\u00A8\u00A9\u037A\u00AB\u00AC\u00AD\uFFFD\u2015\u00B0\u00B1\u00B2\u00B3\u0384\u0385\u0386\u00B7\u0388\u0389\u038A\u00BB\u038C\u00BD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD\"\n },\n \"cp28597\": \"iso88597\",\n \"iso88598\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD\"\n },\n \"cp28598\": \"iso88598\",\n \"iso88599\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u011E\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u0130\u015E\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u011F\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u0131\u015F\u00FF\"\n },\n \"cp28599\": \"iso88599\",\n \"iso885910\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0112\u0122\u012A\u0128\u0136\u00A7\u013B\u0110\u0160\u0166\u017D\u00AD\u016A\u014A\u00B0\u0105\u0113\u0123\u012B\u0129\u0137\u00B7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u012E\u010C\u00C9\u0118\u00CB\u0116\u00CD\u00CE\u00CF\u00D0\u0145\u014C\u00D3\u00D4\u00D5\u00D6\u0168\u00D8\u0172\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u0101\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u012F\u010D\u00E9\u0119\u00EB\u0117\u00ED\u00EE\u00EF\u00F0\u0146\u014D\u00F3\u00F4\u00F5\u00F6\u0169\u00F8\u0173\u00FA\u00FB\u00FC\u00FD\u00FE\u0138\"\n },\n \"cp28600\": \"iso885910\",\n \"iso885911\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"cp28601\": \"iso885911\",\n \"iso885913\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u201D\u00A2\u00A3\u00A4\u201E\u00A6\u00A7\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6\u00B0\u00B1\u00B2\u00B3\u201C\u00B5\u00B6\u00B7\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u2019\"\n },\n \"cp28603\": \"iso885913\",\n \"iso885914\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u1E02\u1E03\u00A3\u010A\u010B\u1E0A\u00A7\u1E80\u00A9\u1E82\u1E0B\u1EF2\u00AD\u00AE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\u00B6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0174\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u1E6A\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u0176\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0175\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u1E6B\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u0177\u00FF\"\n },\n \"cp28604\": \"iso885914\",\n \"iso885915\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u20AC\u00A5\u0160\u00A7\u0161\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u017D\u00B5\u00B6\u00B7\u017E\u00B9\u00BA\u00BB\u0152\u0153\u0178\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"cp28605\": \"iso885915\",\n \"iso885916\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0105\u0141\u20AC\u201E\u0160\u00A7\u0161\u00A9\u0218\u00AB\u0179\u00AD\u017A\u017B\u00B0\u00B1\u010C\u0142\u017D\u201D\u00B6\u00B7\u017E\u010D\u0219\u00BB\u0152\u0153\u0178\u017C\u00C0\u00C1\u00C2\u0102\u00C4\u0106\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0110\u0143\u00D2\u00D3\u00D4\u0150\u00D6\u015A\u0170\u00D9\u00DA\u00DB\u00DC\u0118\u021A\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u0107\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0111\u0144\u00F2\u00F3\u00F4\u0151\u00F6\u015B\u0171\u00F9\u00FA\u00FB\u00FC\u0119\u021B\u00FF\"\n },\n \"cp28606\": \"iso885916\",\n \"cp437\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00A2\u00A3\u00A5\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm437\": \"cp437\",\n \"csibm437\": \"cp437\",\n \"cp737\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\u00B1\u2265\u2264\u03AA\u03AB\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm737\": \"cp737\",\n \"csibm737\": \"cp737\",\n \"cp775\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0106\u00FC\u00E9\u0101\u00E4\u0123\u00E5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\u00C4\u00C5\u00C9\u00E6\u00C6\u014D\u00F6\u0122\u00A2\u015A\u015B\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u00A4\u0100\u012A\u00F3\u017B\u017C\u017A\u201D\u00A6\u00A9\u00AE\u00AC\u00BD\u00BC\u0141\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u00D3\u00DF\u014C\u0143\u00F5\u00D5\u00B5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\u00AD\u00B1\u201C\u00BE\u00B6\u00A7\u00F7\u201E\u00B0\u2219\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm775\": \"cp775\",\n \"csibm775\": \"cp775\",\n \"cp850\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00F0\u00D0\u00CA\u00CB\u00C8\u0131\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\u00FE\u00DE\u00DA\u00DB\u00D9\u00FD\u00DD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm850\": \"cp850\",\n \"csibm850\": \"cp850\",\n \"cp852\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u016F\u0107\u00E7\u0142\u00EB\u0150\u0151\u00EE\u0179\u00C4\u0106\u00C9\u0139\u013A\u00F4\u00F6\u013D\u013E\u015A\u015B\u00D6\u00DC\u0164\u0165\u0141\u00D7\u010D\u00E1\u00ED\u00F3\u00FA\u0104\u0105\u017D\u017E\u0118\u0119\u00AC\u017A\u010C\u015F\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u0111\u0110\u010E\u00CB\u010F\u0147\u00CD\u00CE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\u00D3\u00DF\u00D4\u0143\u0144\u0148\u0160\u0161\u0154\u00DA\u0155\u0170\u00FD\u00DD\u0163\u00B4\u00AD\u02DD\u02DB\u02C7\u02D8\u00A7\u00F7\u00B8\u00B0\u00A8\u02D9\u0171\u0158\u0159\u25A0\u00A0\"\n },\n \"ibm852\": \"cp852\",\n \"csibm852\": \"cp852\",\n \"cp855\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\u00AD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\u00A7\u25A0\u00A0\"\n },\n \"ibm855\": \"cp855\",\n \"csibm855\": \"cp855\",\n \"cp856\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\u00A3\uFFFD\u00D7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00AE\u00AC\u00BD\u00BC\uFFFD\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\u00A6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00B5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm856\": \"cp856\",\n \"csibm856\": \"cp856\",\n \"cp857\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u0131\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u0130\u00D6\u00DC\u00F8\u00A3\u00D8\u015E\u015F\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u011E\u011F\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00BA\u00AA\u00CA\u00CB\u00C8\uFFFD\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\uFFFD\u00D7\u00DA\u00DB\u00D9\u00EC\u00FF\u00AF\u00B4\u00AD\u00B1\uFFFD\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm857\": \"cp857\",\n \"csibm857\": \"cp857\",\n \"cp858\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00F0\u00D0\u00CA\u00CB\u00C8\u20AC\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\u00FE\u00DE\u00DA\u00DB\u00D9\u00FD\u00DD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm858\": \"cp858\",\n \"csibm858\": \"cp858\",\n \"cp860\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E3\u00E0\u00C1\u00E7\u00EA\u00CA\u00E8\u00CD\u00D4\u00EC\u00C3\u00C2\u00C9\u00C0\u00C8\u00F4\u00F5\u00F2\u00DA\u00F9\u00CC\u00D5\u00DC\u00A2\u00A3\u00D9\u20A7\u00D3\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00D2\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm860\": \"cp860\",\n \"csibm860\": \"cp860\",\n \"cp861\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00D0\u00F0\u00DE\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00FE\u00FB\u00DD\u00FD\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00C1\u00CD\u00D3\u00DA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm861\": \"cp861\",\n \"csibm861\": \"cp861\",\n \"cp862\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\u00A2\u00A3\u00A5\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm862\": \"cp862\",\n \"csibm862\": \"cp862\",\n \"cp863\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00C2\u00E0\u00B6\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u2017\u00C0\u00A7\u00C9\u00C8\u00CA\u00F4\u00CB\u00CF\u00FB\u00F9\u00A4\u00D4\u00DC\u00A2\u00A3\u00D9\u00DB\u0192\u00A6\u00B4\u00F3\u00FA\u00A8\u00B8\u00B3\u00AF\u00CE\u2310\u00AC\u00BD\u00BC\u00BE\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm863\": \"cp863\",\n \"csibm863\": \"cp863\",\n \"cp864\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u00B0\u00B7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\u00B1\u00BD\u00BC\u2248\u00AB\u00BB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\u00A0\u00AD\uFE82\u00A3\u00A4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\u00A2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\u00A6\u00AC\u00F7\u00D7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD\"\n },\n \"ibm864\": \"cp864\",\n \"csibm864\": \"cp864\",\n \"cp865\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00A4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm865\": \"cp865\",\n \"csibm865\": \"cp865\",\n \"cp866\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\u00B0\u2219\u00B7\u221A\u2116\u00A4\u25A0\u00A0\"\n },\n \"ibm866\": \"cp866\",\n \"csibm866\": \"cp866\",\n \"cp869\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\u00B7\u00AC\u00A6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\u00A9\u038F\u00B2\u00B3\u03AC\u00A3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u00BD\u0398\u0399\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\u00AD\u00B1\u03C5\u03C6\u03C7\u00A7\u03C8\u0385\u00B0\u00A8\u03C9\u03CB\u03B0\u03CE\u25A0\u00A0\"\n },\n \"ibm869\": \"cp869\",\n \"csibm869\": \"cp869\",\n \"cp922\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u203E\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0160\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u017D\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0161\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u017E\u00FF\"\n },\n \"ibm922\": \"cp922\",\n \"csibm922\": \"cp922\",\n \"cp1046\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFE88\u00D7\u00F7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\u0088\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\u00A0\uF8FA\uF8F9\uF8F8\u00A4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\u00AD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD\"\n },\n \"ibm1046\": \"cp1046\",\n \"csibm1046\": \"cp1046\",\n \"cp1124\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F\"\n },\n \"ibm1124\": \"cp1124\",\n \"csibm1124\": \"cp1124\",\n \"cp1125\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\u00B7\u221A\u2116\u00A4\u25A0\u00A0\"\n },\n \"ibm1125\": \"cp1125\",\n \"csibm1125\": \"cp1125\",\n \"cp1129\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u0153\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u0178\u00B5\u00B6\u00B7\u0152\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n },\n \"ibm1129\": \"cp1129\",\n \"csibm1129\": \"cp1129\",\n \"cp1133\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\u00A2\u00AC\u00A6\uFFFD\"\n },\n \"ibm1133\": \"cp1133\",\n \"csibm1133\": \"cp1133\",\n \"cp1161\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\u00A2\u00AC\u00A6\u00A0\"\n },\n \"ibm1161\": \"cp1161\",\n \"csibm1161\": \"cp1161\",\n \"cp1162\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\u0081\u0082\u0083\u0084\u2026\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"ibm1162\": \"cp1162\",\n \"csibm1162\": \"cp1162\",\n \"cp1163\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u20AC\u00A5\u00A6\u00A7\u0153\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u0178\u00B5\u00B6\u00B7\u0152\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n },\n \"ibm1163\": \"cp1163\",\n \"csibm1163\": \"cp1163\",\n \"maccroatian\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u0160\u2122\u00B4\u00A8\u2260\u017D\u00D8\u221E\u00B1\u2264\u2265\u2206\u00B5\u2202\u2211\u220F\u0161\u222B\u00AA\u00BA\u2126\u017E\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u0106\u00AB\u010C\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\uFFFD\u00A9\u2044\u00A4\u2039\u203A\u00C6\u00BB\u2013\u00B7\u201A\u201E\u2030\u00C2\u0107\u00C1\u010D\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\u0111\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u03C0\u00CB\u02DA\u00B8\u00CA\u00E6\u02C7\"\n },\n \"maccyrillic\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u0406\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\u00B1\u2264\u2265\u0456\u00B5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4\"\n },\n \"macgreek\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00B9\u00B2\u00C9\u00B3\u00D6\u00DC\u0385\u00E0\u00E2\u00E4\u0384\u00A8\u00E7\u00E9\u00E8\u00EA\u00EB\u00A3\u2122\u00EE\u00EF\u2022\u00BD\u2030\u00F4\u00F6\u00A6\u00AD\u00F9\u00FB\u00FC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\u00DF\u00AE\u00A9\u03A3\u03AA\u00A7\u2260\u00B0\u0387\u0391\u00B1\u2264\u2265\u00A5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\u00AC\u039F\u03A1\u2248\u03A4\u00AB\u00BB\u2026\u00A0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\u00F7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD\"\n },\n \"maciceland\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u00DD\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u00D0\u00F0\u00DE\u00FE\u00FD\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"macroman\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\uFB01\uFB02\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"macromania\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u0102\u015E\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u0103\u015F\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\u0162\u0163\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"macthai\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00AB\u00BB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u00AE\u00A9\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"macturkish\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\uFFFD\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"macukraine\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\u00B0\u0490\u00A3\u00A7\u2022\u00B6\u0406\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\u00B1\u2264\u2265\u0456\u00B5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4\"\n },\n \"koi8r\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n },\n \"koi8u\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n },\n \"koi8ru\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n },\n \"koi8t\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\u00A4\u04E3\u00A6\u00A7\uFFFD\uFFFD\uFFFD\u00AB\u00AC\u00AD\u00AE\uFFFD\u00B0\u00B1\u00B2\u0401\uFFFD\u04E2\u00B6\u00B7\uFFFD\u2116\uFFFD\u00BB\uFFFD\uFFFD\uFFFD\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n },\n \"armscii8\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\u0587\u0589)(\u00BB\u00AB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD\"\n },\n \"rk1048\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\u00A0\u04B0\u04B1\u04D8\u00A4\u04E8\u00A6\u00A7\u0401\u00A9\u0492\u00AB\u00AC\u00AD\u00AE\u04AE\u00B0\u00B1\u0406\u0456\u04E9\u00B5\u00B6\u00B7\u0451\u2116\u0493\u00BB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n },\n \"tcvn\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\u00DA\u1EE4\\u0003\u1EEA\u1EEC\u1EEE\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\u00DD\u1EF4\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u00C0\u1EA2\u00C3\u00C1\u1EA0\u1EB6\u1EAC\u00C8\u1EBA\u1EBC\u00C9\u1EB8\u1EC6\u00CC\u1EC8\u0128\u00CD\u1ECA\u00D2\u1ECE\u00D5\u00D3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\u00D9\u1EE6\u0168\u00A0\u0102\u00C2\u00CA\u00D4\u01A0\u01AF\u0110\u0103\u00E2\u00EA\u00F4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\u00E0\u1EA3\u00E3\u00E1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\u00E8\u1EC2\u1EBB\u1EBD\u00E9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\u00EC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\u00ED\u1ECB\u00F2\u1ED4\u1ECF\u00F5\u00F3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\u00F9\u1ED6\u1EE7\u0169\u00FA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\u00FD\u1EF5\u1ED0\"\n },\n \"georgianacademy\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\u009D\u009E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"georgianps\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\u009D\u009E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"pt154\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\u00A0\u040E\u045E\u0408\u04E8\u0498\u04B0\u00A7\u0401\u00A9\u04D8\u00AB\u00AC\u04EF\u00AE\u049C\u00B0\u04B1\u0406\u0456\u0499\u04E9\u00B6\u00B7\u0451\u2116\u04D9\u00BB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n },\n \"viscii\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\u1EB2\\u0003\\u0004\u1EB4\u1EAA\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\u1EF6\\u0015\\u0016\\u0017\\u0018\u1EF8\\u001a\\u001b\\u001c\\u001d\u1EF4\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\u00D5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\u00C0\u00C1\u00C2\u00C3\u1EA2\u0102\u1EB3\u1EB5\u00C8\u00C9\u00CA\u1EBA\u00CC\u00CD\u0128\u1EF3\u0110\u1EE9\u00D2\u00D3\u00D4\u1EA1\u1EF7\u1EEB\u1EED\u00D9\u00DA\u1EF9\u1EF5\u00DD\u1EE1\u01B0\u00E0\u00E1\u00E2\u00E3\u1EA3\u0103\u1EEF\u1EAB\u00E8\u00E9\u00EA\u1EBB\u00EC\u00ED\u0129\u1EC9\u0111\u1EF1\u00F2\u00F3\u00F4\u00F5\u1ECF\u1ECD\u1EE5\u00F9\u00FA\u0169\u1EE7\u00FD\u1EE3\u1EEE\"\n },\n \"iso646cn\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#\u00A5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\u007F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"iso646jp\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\u00A5]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\u007F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"hproman8\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00C0\u00C2\u00C8\u00CA\u00CB\u00CE\u00CF\u00B4\u02CB\u02C6\u00A8\u02DC\u00D9\u00DB\u20A4\u00AF\u00DD\u00FD\u00B0\u00C7\u00E7\u00D1\u00F1\u00A1\u00BF\u00A4\u00A3\u00A5\u00A7\u0192\u00A2\u00E2\u00EA\u00F4\u00FB\u00E1\u00E9\u00F3\u00FA\u00E0\u00E8\u00F2\u00F9\u00E4\u00EB\u00F6\u00FC\u00C5\u00EE\u00D8\u00C6\u00E5\u00ED\u00F8\u00E6\u00C4\u00EC\u00D6\u00DC\u00C9\u00EF\u00DF\u00D4\u00C1\u00C3\u00E3\u00D0\u00F0\u00CD\u00CC\u00D3\u00D2\u00D5\u00F5\u0160\u0161\u00DA\u0178\u00FF\u00DE\u00FE\u00B7\u00B5\u00B6\u00BE\u2014\u00BC\u00BD\u00AA\u00BA\u00AB\u25A0\u00BB\u00B1\uFFFD\"\n },\n \"macintosh\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\uFB01\uFB02\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"ascii\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"tis620\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n }\n}", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.\n// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.\n// To save memory and loading time, we read table files only when requested.\n\nexports._dbcs = DBCSCodec;\n\nvar UNASSIGNED = -1,\n GB18030_CODE = -2,\n SEQ_START = -10,\n NODE_START = -1000,\n UNASSIGNED_NODE = new Array(0x100),\n DEF_CHAR = -1;\n\nfor (var i = 0; i < 0x100; i++)\n UNASSIGNED_NODE[i] = UNASSIGNED;\n\n\n// Class DBCSCodec reads and initializes mapping tables.\nfunction DBCSCodec(codecOptions, iconv) {\n this.encodingName = codecOptions.encodingName;\n if (!codecOptions)\n throw new Error(\"DBCS codec is called without the data.\")\n if (!codecOptions.table)\n throw new Error(\"Encoding '\" + this.encodingName + \"' has no data.\");\n\n // Load tables.\n var mappingTable = codecOptions.table();\n\n\n // Decode tables: MBCS -> Unicode.\n\n // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.\n // Trie root is decodeTables[0].\n // Values: >= 0 -> unicode character code. can be > 0xFFFF\n // == UNASSIGNED -> unknown/unassigned sequence.\n // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.\n // <= NODE_START -> index of the next node in our trie to process next byte.\n // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq.\n this.decodeTables = [];\n this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.\n\n // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. \n this.decodeTableSeq = [];\n\n // Actual mapping tables consist of chunks. Use them to fill up decode tables.\n for (var i = 0; i < mappingTable.length; i++)\n this._addDecodeChunk(mappingTable[i]);\n\n this.defaultCharUnicode = iconv.defaultCharUnicode;\n\n \n // Encode tables: Unicode -> DBCS.\n\n // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.\n // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.\n // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).\n // == UNASSIGNED -> no conversion found. Output a default char.\n // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence.\n this.encodeTable = [];\n \n // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of\n // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key\n // means end of sequence (needed when one sequence is a strict subsequence of another).\n // Objects are kept separately from encodeTable to increase performance.\n this.encodeTableSeq = [];\n\n // Some chars can be decoded, but need not be encoded.\n var skipEncodeChars = {};\n if (codecOptions.encodeSkipVals)\n for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {\n var val = codecOptions.encodeSkipVals[i];\n if (typeof val === 'number')\n skipEncodeChars[val] = true;\n else\n for (var j = val.from; j <= val.to; j++)\n skipEncodeChars[j] = true;\n }\n \n // Use decode trie to recursively fill out encode tables.\n this._fillEncodeTable(0, 0, skipEncodeChars);\n\n // Add more encoding pairs when needed.\n if (codecOptions.encodeAdd) {\n for (var uChar in codecOptions.encodeAdd)\n if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))\n this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);\n }\n\n this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];\n if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?'];\n if (this.defCharSB === UNASSIGNED) this.defCharSB = \"?\".charCodeAt(0);\n\n\n // Load & create GB18030 tables when needed.\n if (typeof codecOptions.gb18030 === 'function') {\n this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.\n\n // Add GB18030 decode tables.\n var thirdByteNodeIdx = this.decodeTables.length;\n var thirdByteNode = this.decodeTables[thirdByteNodeIdx] = UNASSIGNED_NODE.slice(0);\n\n var fourthByteNodeIdx = this.decodeTables.length;\n var fourthByteNode = this.decodeTables[fourthByteNodeIdx] = UNASSIGNED_NODE.slice(0);\n\n for (var i = 0x81; i <= 0xFE; i++) {\n var secondByteNodeIdx = NODE_START - this.decodeTables[0][i];\n var secondByteNode = this.decodeTables[secondByteNodeIdx];\n for (var j = 0x30; j <= 0x39; j++)\n secondByteNode[j] = NODE_START - thirdByteNodeIdx;\n }\n for (var i = 0x81; i <= 0xFE; i++)\n thirdByteNode[i] = NODE_START - fourthByteNodeIdx;\n for (var i = 0x30; i <= 0x39; i++)\n fourthByteNode[i] = GB18030_CODE\n } \n}\n\nDBCSCodec.prototype.encoder = DBCSEncoder;\nDBCSCodec.prototype.decoder = DBCSDecoder;\n\n// Decoder helpers\nDBCSCodec.prototype._getDecodeTrieNode = function(addr) {\n var bytes = [];\n for (; addr > 0; addr >>= 8)\n bytes.push(addr & 0xFF);\n if (bytes.length == 0)\n bytes.push(0);\n\n var node = this.decodeTables[0];\n for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.\n var val = node[bytes[i]];\n\n if (val == UNASSIGNED) { // Create new node.\n node[bytes[i]] = NODE_START - this.decodeTables.length;\n this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));\n }\n else if (val <= NODE_START) { // Existing node.\n node = this.decodeTables[NODE_START - val];\n }\n else\n throw new Error(\"Overwrite byte in \" + this.encodingName + \", addr: \" + addr.toString(16));\n }\n return node;\n}\n\n\nDBCSCodec.prototype._addDecodeChunk = function(chunk) {\n // First element of chunk is the hex mbcs code where we start.\n var curAddr = parseInt(chunk[0], 16);\n\n // Choose the decoding node where we'll write our chars.\n var writeTable = this._getDecodeTrieNode(curAddr);\n curAddr = curAddr & 0xFF;\n\n // Write all other elements of the chunk to the table.\n for (var k = 1; k < chunk.length; k++) {\n var part = chunk[k];\n if (typeof part === \"string\") { // String, write as-is.\n for (var l = 0; l < part.length;) {\n var code = part.charCodeAt(l++);\n if (0xD800 <= code && code < 0xDC00) { // Decode surrogate\n var codeTrail = part.charCodeAt(l++);\n if (0xDC00 <= codeTrail && codeTrail < 0xE000)\n writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);\n else\n throw new Error(\"Incorrect surrogate pair in \" + this.encodingName + \" at chunk \" + chunk[0]);\n }\n else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)\n var len = 0xFFF - code + 2;\n var seq = [];\n for (var m = 0; m < len; m++)\n seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq.\n\n writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;\n this.decodeTableSeq.push(seq);\n }\n else\n writeTable[curAddr++] = code; // Basic char\n }\n } \n else if (typeof part === \"number\") { // Integer, meaning increasing sequence starting with prev character.\n var charCode = writeTable[curAddr - 1] + 1;\n for (var l = 0; l < part; l++)\n writeTable[curAddr++] = charCode++;\n }\n else\n throw new Error(\"Incorrect type '\" + typeof part + \"' given in \" + this.encodingName + \" at chunk \" + chunk[0]);\n }\n if (curAddr > 0xFF)\n throw new Error(\"Incorrect chunk in \" + this.encodingName + \" at addr \" + chunk[0] + \": too long\" + curAddr);\n}\n\n// Encoder helpers\nDBCSCodec.prototype._getEncodeBucket = function(uCode) {\n var high = uCode >> 8; // This could be > 0xFF because of astral characters.\n if (this.encodeTable[high] === undefined)\n this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.\n return this.encodeTable[high];\n}\n\nDBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {\n var bucket = this._getEncodeBucket(uCode);\n var low = uCode & 0xFF;\n if (bucket[low] <= SEQ_START)\n this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it.\n else if (bucket[low] == UNASSIGNED)\n bucket[low] = dbcsCode;\n}\n\nDBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {\n \n // Get the root of character tree according to first character of the sequence.\n var uCode = seq[0];\n var bucket = this._getEncodeBucket(uCode);\n var low = uCode & 0xFF;\n\n var node;\n if (bucket[low] <= SEQ_START) {\n // There's already a sequence with - use it.\n node = this.encodeTableSeq[SEQ_START-bucket[low]];\n }\n else {\n // There was no sequence object - allocate a new one.\n node = {};\n if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.\n bucket[low] = SEQ_START - this.encodeTableSeq.length;\n this.encodeTableSeq.push(node);\n }\n\n // Traverse the character tree, allocating new nodes as needed.\n for (var j = 1; j < seq.length-1; j++) {\n var oldVal = node[uCode];\n if (typeof oldVal === 'object')\n node = oldVal;\n else {\n node = node[uCode] = {}\n if (oldVal !== undefined)\n node[DEF_CHAR] = oldVal\n }\n }\n\n // Set the leaf to given dbcsCode.\n uCode = seq[seq.length-1];\n node[uCode] = dbcsCode;\n}\n\nDBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {\n var node = this.decodeTables[nodeIdx];\n for (var i = 0; i < 0x100; i++) {\n var uCode = node[i];\n var mbCode = prefix + i;\n if (skipEncodeChars[mbCode])\n continue;\n\n if (uCode >= 0)\n this._setEncodeChar(uCode, mbCode);\n else if (uCode <= NODE_START)\n this._fillEncodeTable(NODE_START - uCode, mbCode << 8, skipEncodeChars);\n else if (uCode <= SEQ_START)\n this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);\n }\n}\n\n\n\n// == Encoder ==================================================================\n\nfunction DBCSEncoder(options, codec) {\n // Encoder state\n this.leadSurrogate = -1;\n this.seqObj = undefined;\n \n // Static data\n this.encodeTable = codec.encodeTable;\n this.encodeTableSeq = codec.encodeTableSeq;\n this.defaultCharSingleByte = codec.defCharSB;\n this.gb18030 = codec.gb18030;\n}\n\nDBCSEncoder.prototype.write = function(str) {\n var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)),\n leadSurrogate = this.leadSurrogate,\n seqObj = this.seqObj, nextChar = -1,\n i = 0, j = 0;\n\n while (true) {\n // 0. Get next character.\n if (nextChar === -1) {\n if (i == str.length) break;\n var uCode = str.charCodeAt(i++);\n }\n else {\n var uCode = nextChar;\n nextChar = -1; \n }\n\n // 1. Handle surrogates.\n if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.\n if (uCode < 0xDC00) { // We've got lead surrogate.\n if (leadSurrogate === -1) {\n leadSurrogate = uCode;\n continue;\n } else {\n leadSurrogate = uCode;\n // Double lead surrogate found.\n uCode = UNASSIGNED;\n }\n } else { // We've got trail surrogate.\n if (leadSurrogate !== -1) {\n uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);\n leadSurrogate = -1;\n } else {\n // Incomplete surrogate pair - only trail surrogate found.\n uCode = UNASSIGNED;\n }\n \n }\n }\n else if (leadSurrogate !== -1) {\n // Incomplete surrogate pair - only lead surrogate found.\n nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.\n leadSurrogate = -1;\n }\n\n // 2. Convert uCode character.\n var dbcsCode = UNASSIGNED;\n if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence\n var resCode = seqObj[uCode];\n if (typeof resCode === 'object') { // Sequence continues.\n seqObj = resCode;\n continue;\n\n } else if (typeof resCode == 'number') { // Sequence finished. Write it.\n dbcsCode = resCode;\n\n } else if (resCode == undefined) { // Current character is not part of the sequence.\n\n // Try default character for this sequence\n resCode = seqObj[DEF_CHAR];\n if (resCode !== undefined) {\n dbcsCode = resCode; // Found. Write it.\n nextChar = uCode; // Current character will be written too in the next iteration.\n\n } else {\n // TODO: What if we have no default? (resCode == undefined)\n // Then, we should write first char of the sequence as-is and try the rest recursively.\n // Didn't do it for now because no encoding has this situation yet.\n // Currently, just skip the sequence and write current char.\n }\n }\n seqObj = undefined;\n }\n else if (uCode >= 0) { // Regular character\n var subtable = this.encodeTable[uCode >> 8];\n if (subtable !== undefined)\n dbcsCode = subtable[uCode & 0xFF];\n \n if (dbcsCode <= SEQ_START) { // Sequence start\n seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];\n continue;\n }\n\n if (dbcsCode == UNASSIGNED && this.gb18030) {\n // Use GB18030 algorithm to find character(s) to write.\n var idx = findIdx(this.gb18030.uChars, uCode);\n if (idx != -1) {\n var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);\n newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;\n newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;\n newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;\n newBuf[j++] = 0x30 + dbcsCode;\n continue;\n }\n }\n }\n\n // 3. Write dbcsCode character.\n if (dbcsCode === UNASSIGNED)\n dbcsCode = this.defaultCharSingleByte;\n \n if (dbcsCode < 0x100) {\n newBuf[j++] = dbcsCode;\n }\n else if (dbcsCode < 0x10000) {\n newBuf[j++] = dbcsCode >> 8; // high byte\n newBuf[j++] = dbcsCode & 0xFF; // low byte\n }\n else {\n newBuf[j++] = dbcsCode >> 16;\n newBuf[j++] = (dbcsCode >> 8) & 0xFF;\n newBuf[j++] = dbcsCode & 0xFF;\n }\n }\n\n this.seqObj = seqObj;\n this.leadSurrogate = leadSurrogate;\n return newBuf.slice(0, j);\n}\n\nDBCSEncoder.prototype.end = function() {\n if (this.leadSurrogate === -1 && this.seqObj === undefined)\n return; // All clean. Most often case.\n\n var newBuf = Buffer.alloc(10), j = 0;\n\n if (this.seqObj) { // We're in the sequence.\n var dbcsCode = this.seqObj[DEF_CHAR];\n if (dbcsCode !== undefined) { // Write beginning of the sequence.\n if (dbcsCode < 0x100) {\n newBuf[j++] = dbcsCode;\n }\n else {\n newBuf[j++] = dbcsCode >> 8; // high byte\n newBuf[j++] = dbcsCode & 0xFF; // low byte\n }\n } else {\n // See todo above.\n }\n this.seqObj = undefined;\n }\n\n if (this.leadSurrogate !== -1) {\n // Incomplete surrogate pair - only lead surrogate found.\n newBuf[j++] = this.defaultCharSingleByte;\n this.leadSurrogate = -1;\n }\n \n return newBuf.slice(0, j);\n}\n\n// Export for testing\nDBCSEncoder.prototype.findIdx = findIdx;\n\n\n// == Decoder ==================================================================\n\nfunction DBCSDecoder(options, codec) {\n // Decoder state\n this.nodeIdx = 0;\n this.prevBuf = Buffer.alloc(0);\n\n // Static data\n this.decodeTables = codec.decodeTables;\n this.decodeTableSeq = codec.decodeTableSeq;\n this.defaultCharUnicode = codec.defaultCharUnicode;\n this.gb18030 = codec.gb18030;\n}\n\nDBCSDecoder.prototype.write = function(buf) {\n var newBuf = Buffer.alloc(buf.length*2),\n nodeIdx = this.nodeIdx, \n prevBuf = this.prevBuf, prevBufOffset = this.prevBuf.length,\n seqStart = -this.prevBuf.length, // idx of the start of current parsed sequence.\n uCode;\n\n if (prevBufOffset > 0) // Make prev buf overlap a little to make it easier to slice later.\n prevBuf = Buffer.concat([prevBuf, buf.slice(0, 10)]);\n \n for (var i = 0, j = 0; i < buf.length; i++) {\n var curByte = (i >= 0) ? buf[i] : prevBuf[i + prevBufOffset];\n\n // Lookup in current trie node.\n var uCode = this.decodeTables[nodeIdx][curByte];\n\n if (uCode >= 0) { \n // Normal character, just use it.\n }\n else if (uCode === UNASSIGNED) { // Unknown char.\n // TODO: Callback with seq.\n //var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);\n i = seqStart; // Try to parse again, after skipping first byte of the sequence ('i' will be incremented by 'for' cycle).\n uCode = this.defaultCharUnicode.charCodeAt(0);\n }\n else if (uCode === GB18030_CODE) {\n var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);\n var ptr = (curSeq[0]-0x81)*12600 + (curSeq[1]-0x30)*1260 + (curSeq[2]-0x81)*10 + (curSeq[3]-0x30);\n var idx = findIdx(this.gb18030.gbChars, ptr);\n uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];\n }\n else if (uCode <= NODE_START) { // Go to next trie node.\n nodeIdx = NODE_START - uCode;\n continue;\n }\n else if (uCode <= SEQ_START) { // Output a sequence of chars.\n var seq = this.decodeTableSeq[SEQ_START - uCode];\n for (var k = 0; k < seq.length - 1; k++) {\n uCode = seq[k];\n newBuf[j++] = uCode & 0xFF;\n newBuf[j++] = uCode >> 8;\n }\n uCode = seq[seq.length-1];\n }\n else\n throw new Error(\"iconv-lite internal error: invalid decoding table value \" + uCode + \" at \" + nodeIdx + \"/\" + curByte);\n\n // Write the character to buffer, handling higher planes using surrogate pair.\n if (uCode > 0xFFFF) { \n uCode -= 0x10000;\n var uCodeLead = 0xD800 + Math.floor(uCode / 0x400);\n newBuf[j++] = uCodeLead & 0xFF;\n newBuf[j++] = uCodeLead >> 8;\n\n uCode = 0xDC00 + uCode % 0x400;\n }\n newBuf[j++] = uCode & 0xFF;\n newBuf[j++] = uCode >> 8;\n\n // Reset trie node.\n nodeIdx = 0; seqStart = i+1;\n }\n\n this.nodeIdx = nodeIdx;\n this.prevBuf = (seqStart >= 0) ? buf.slice(seqStart) : prevBuf.slice(seqStart + prevBufOffset);\n return newBuf.slice(0, j).toString('ucs2');\n}\n\nDBCSDecoder.prototype.end = function() {\n var ret = '';\n\n // Try to parse all remaining chars.\n while (this.prevBuf.length > 0) {\n // Skip 1 character in the buffer.\n ret += this.defaultCharUnicode;\n var buf = this.prevBuf.slice(1);\n\n // Parse remaining as usual.\n this.prevBuf = Buffer.alloc(0);\n this.nodeIdx = 0;\n if (buf.length > 0)\n ret += this.write(buf);\n }\n\n this.nodeIdx = 0;\n return ret;\n}\n\n// Binary search for GB18030. Returns largest i such that table[i] <= val.\nfunction findIdx(table, val) {\n if (table[0] > val)\n return -1;\n\n var l = 0, r = table.length;\n while (l < r-1) { // always table[l] <= val < table[r]\n var mid = l + Math.floor((r-l+1)/2);\n if (table[mid] <= val)\n l = mid;\n else\n r = mid;\n }\n return l;\n}\n\n", "\"use strict\";\n\n// Description of supported double byte encodings and aliases.\n// Tables are not require()-d until they are needed to speed up library load.\n// require()-s are direct to support Browserify.\n\nmodule.exports = {\n \n // == Japanese/ShiftJIS ====================================================\n // All japanese encodings are based on JIS X set of standards:\n // JIS X 0201 - Single-byte encoding of ASCII + \u00A5 + Kana chars at 0xA1-0xDF.\n // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. \n // Has several variations in 1978, 1983, 1990 and 1997.\n // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.\n // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.\n // 2 planes, first is superset of 0208, second - revised 0212.\n // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)\n\n // Byte encodings are:\n // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte\n // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.\n // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.\n // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes.\n // 0x00-0x7F - lower part of 0201\n // 0x8E, 0xA1-0xDF - upper part of 0201\n // (0xA1-0xFE)x2 - 0208 plane (94x94).\n // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).\n // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.\n // Used as-is in ISO2022 family.\n // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, \n // 0201-1976 Roman, 0208-1978, 0208-1983.\n // * ISO2022-JP-1: Adds esc seq for 0212-1990.\n // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.\n // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.\n // * ISO2022-JP-2004: Adds 0213-2004 Plane 1.\n //\n // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.\n //\n // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html\n\n 'shiftjis': {\n type: '_dbcs',\n table: function() { return require('./tables/shiftjis.json') },\n encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n encodeSkipVals: [{from: 0xED40, to: 0xF940}],\n },\n 'csshiftjis': 'shiftjis',\n 'mskanji': 'shiftjis',\n 'sjis': 'shiftjis',\n 'windows31j': 'shiftjis',\n 'ms31j': 'shiftjis',\n 'xsjis': 'shiftjis',\n 'windows932': 'shiftjis',\n 'ms932': 'shiftjis',\n '932': 'shiftjis',\n 'cp932': 'shiftjis',\n\n 'eucjp': {\n type: '_dbcs',\n table: function() { return require('./tables/eucjp.json') },\n encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n },\n\n // TODO: KDDI extension to Shift_JIS\n // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.\n // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.\n\n\n // == Chinese/GBK ==========================================================\n // http://en.wikipedia.org/wiki/GBK\n // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder\n\n // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936\n 'gb2312': 'cp936',\n 'gb231280': 'cp936',\n 'gb23121980': 'cp936',\n 'csgb2312': 'cp936',\n 'csiso58gb231280': 'cp936',\n 'euccn': 'cp936',\n\n // Microsoft's CP936 is a subset and approximation of GBK.\n 'windows936': 'cp936',\n 'ms936': 'cp936',\n '936': 'cp936',\n 'cp936': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json') },\n },\n\n // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.\n 'gbk': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n },\n 'xgbk': 'gbk',\n 'isoir58': 'gbk',\n\n // GB18030 is an algorithmic extension of GBK.\n // Main source: https://www.w3.org/TR/encoding/#gbk-encoder\n // http://icu-project.org/docs/papers/gb18030.html\n // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml\n // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0\n 'gb18030': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n gb18030: function() { return require('./tables/gb18030-ranges.json') },\n encodeSkipVals: [0x80],\n encodeAdd: {'\u20AC': 0xA2E3},\n },\n\n 'chinese': 'gb18030',\n\n\n // == Korean ===============================================================\n // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.\n 'windows949': 'cp949',\n 'ms949': 'cp949',\n '949': 'cp949',\n 'cp949': {\n type: '_dbcs',\n table: function() { return require('./tables/cp949.json') },\n },\n\n 'cseuckr': 'cp949',\n 'csksc56011987': 'cp949',\n 'euckr': 'cp949',\n 'isoir149': 'cp949',\n 'korean': 'cp949',\n 'ksc56011987': 'cp949',\n 'ksc56011989': 'cp949',\n 'ksc5601': 'cp949',\n\n\n // == Big5/Taiwan/Hong Kong ================================================\n // There are lots of tables for Big5 and cp950. Please see the following links for history:\n // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html\n // Variations, in roughly number of defined chars:\n // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT\n // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/\n // * Big5-2003 (Taiwan standard) almost superset of cp950.\n // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.\n // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. \n // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.\n // Plus, it has 4 combining sequences.\n // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299\n // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.\n // Implementations are not consistent within browsers; sometimes labeled as just big5.\n // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.\n // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31\n // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.\n // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt\n // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt\n // \n // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder\n // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.\n\n 'windows950': 'cp950',\n 'ms950': 'cp950',\n '950': 'cp950',\n 'cp950': {\n type: '_dbcs',\n table: function() { return require('./tables/cp950.json') },\n },\n\n // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.\n 'big5': 'big5hkscs',\n 'big5hkscs': {\n type: '_dbcs',\n table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) },\n encodeSkipVals: [0xa2cc],\n },\n\n 'cnbig5': 'big5hkscs',\n 'csbig5': 'big5hkscs',\n 'xxbig5': 'big5hkscs',\n};\n", "\"use strict\";\n\n// Update this array if you add/rename/remove files in this directory.\n// We support Browserify by skipping automatic module discovery and requiring modules directly.\nvar modules = [\n require(\"./internal\"),\n require(\"./utf16\"),\n require(\"./utf7\"),\n require(\"./sbcs-codec\"),\n require(\"./sbcs-data\"),\n require(\"./sbcs-data-generated\"),\n require(\"./dbcs-codec\"),\n require(\"./dbcs-data\"),\n];\n\n// Put all encoding/alias/codec definitions to single object and export it. \nfor (var i = 0; i < modules.length; i++) {\n var module = modules[i];\n for (var enc in module)\n if (Object.prototype.hasOwnProperty.call(module, enc))\n exports[enc] = module[enc];\n}\n", "\"use strict\";\n\nvar Buffer = require(\"buffer\").Buffer,\n Transform = require(\"stream\").Transform;\n\n\n// == Exports ==================================================================\nmodule.exports = function(iconv) {\n \n // Additional Public API.\n iconv.encodeStream = function encodeStream(encoding, options) {\n return new IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);\n }\n\n iconv.decodeStream = function decodeStream(encoding, options) {\n return new IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);\n }\n\n iconv.supportsStreams = true;\n\n\n // Not published yet.\n iconv.IconvLiteEncoderStream = IconvLiteEncoderStream;\n iconv.IconvLiteDecoderStream = IconvLiteDecoderStream;\n iconv._collect = IconvLiteDecoderStream.prototype.collect;\n};\n\n\n// == Encoder stream =======================================================\nfunction IconvLiteEncoderStream(conv, options) {\n this.conv = conv;\n options = options || {};\n options.decodeStrings = false; // We accept only strings, so we don't need to decode them.\n Transform.call(this, options);\n}\n\nIconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {\n constructor: { value: IconvLiteEncoderStream }\n});\n\nIconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {\n if (typeof chunk != 'string')\n return done(new Error(\"Iconv encoding stream needs strings as its input.\"));\n try {\n var res = this.conv.write(chunk);\n if (res && res.length) this.push(res);\n done();\n }\n catch (e) {\n done(e);\n }\n}\n\nIconvLiteEncoderStream.prototype._flush = function(done) {\n try {\n var res = this.conv.end();\n if (res && res.length) this.push(res);\n done();\n }\n catch (e) {\n done(e);\n }\n}\n\nIconvLiteEncoderStream.prototype.collect = function(cb) {\n var chunks = [];\n this.on('error', cb);\n this.on('data', function(chunk) { chunks.push(chunk); });\n this.on('end', function() {\n cb(null, Buffer.concat(chunks));\n });\n return this;\n}\n\n\n// == Decoder stream =======================================================\nfunction IconvLiteDecoderStream(conv, options) {\n this.conv = conv;\n options = options || {};\n options.encoding = this.encoding = 'utf8'; // We output strings.\n Transform.call(this, options);\n}\n\nIconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {\n constructor: { value: IconvLiteDecoderStream }\n});\n\nIconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {\n if (!Buffer.isBuffer(chunk))\n return done(new Error(\"Iconv decoding stream needs buffers as its input.\"));\n try {\n var res = this.conv.write(chunk);\n if (res && res.length) this.push(res, this.encoding);\n done();\n }\n catch (e) {\n done(e);\n }\n}\n\nIconvLiteDecoderStream.prototype._flush = function(done) {\n try {\n var res = this.conv.end();\n if (res && res.length) this.push(res, this.encoding); \n done();\n }\n catch (e) {\n done(e);\n }\n}\n\nIconvLiteDecoderStream.prototype.collect = function(cb) {\n var res = '';\n this.on('error', cb);\n this.on('data', function(chunk) { res += chunk; });\n this.on('end', function() {\n cb(null, res);\n });\n return this;\n}\n\n", "\"use strict\";\nvar Buffer = require(\"buffer\").Buffer;\n// Note: not polyfilled with safer-buffer on a purpose, as overrides Buffer\n\n// == Extend Node primitives to use iconv-lite =================================\n\nmodule.exports = function (iconv) {\n var original = undefined; // Place to keep original methods.\n\n // Node authors rewrote Buffer internals to make it compatible with\n // Uint8Array and we cannot patch key functions since then.\n // Note: this does use older Buffer API on a purpose\n iconv.supportsNodeEncodingsExtension = !(Buffer.from || new Buffer(0) instanceof Uint8Array);\n\n iconv.extendNodeEncodings = function extendNodeEncodings() {\n if (original) return;\n original = {};\n\n if (!iconv.supportsNodeEncodingsExtension) {\n console.error(\"ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node\");\n console.error(\"See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility\");\n return;\n }\n\n var nodeNativeEncodings = {\n 'hex': true, 'utf8': true, 'utf-8': true, 'ascii': true, 'binary': true, \n 'base64': true, 'ucs2': true, 'ucs-2': true, 'utf16le': true, 'utf-16le': true,\n };\n\n Buffer.isNativeEncoding = function(enc) {\n return enc && nodeNativeEncodings[enc.toLowerCase()];\n }\n\n // -- SlowBuffer -----------------------------------------------------------\n var SlowBuffer = require('buffer').SlowBuffer;\n\n original.SlowBufferToString = SlowBuffer.prototype.toString;\n SlowBuffer.prototype.toString = function(encoding, start, end) {\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.SlowBufferToString.call(this, encoding, start, end);\n\n // Otherwise, use our decoding method.\n if (typeof start == 'undefined') start = 0;\n if (typeof end == 'undefined') end = this.length;\n return iconv.decode(this.slice(start, end), encoding);\n }\n\n original.SlowBufferWrite = SlowBuffer.prototype.write;\n SlowBuffer.prototype.write = function(string, offset, length, encoding) {\n // Support both (string, offset, length, encoding)\n // and the legacy (string, encoding, offset, length)\n if (isFinite(offset)) {\n if (!isFinite(length)) {\n encoding = length;\n length = undefined;\n }\n } else { // legacy\n var swap = encoding;\n encoding = offset;\n offset = length;\n length = swap;\n }\n\n offset = +offset || 0;\n var remaining = this.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = +length;\n if (length > remaining) {\n length = remaining;\n }\n }\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.SlowBufferWrite.call(this, string, offset, length, encoding);\n\n if (string.length > 0 && (length < 0 || offset < 0))\n throw new RangeError('attempt to write beyond buffer bounds');\n\n // Otherwise, use our encoding method.\n var buf = iconv.encode(string, encoding);\n if (buf.length < length) length = buf.length;\n buf.copy(this, offset, 0, length);\n return length;\n }\n\n // -- Buffer ---------------------------------------------------------------\n\n original.BufferIsEncoding = Buffer.isEncoding;\n Buffer.isEncoding = function(encoding) {\n return Buffer.isNativeEncoding(encoding) || iconv.encodingExists(encoding);\n }\n\n original.BufferByteLength = Buffer.byteLength;\n Buffer.byteLength = SlowBuffer.byteLength = function(str, encoding) {\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.BufferByteLength.call(this, str, encoding);\n\n // Slow, I know, but we don't have a better way yet.\n return iconv.encode(str, encoding).length;\n }\n\n original.BufferToString = Buffer.prototype.toString;\n Buffer.prototype.toString = function(encoding, start, end) {\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.BufferToString.call(this, encoding, start, end);\n\n // Otherwise, use our decoding method.\n if (typeof start == 'undefined') start = 0;\n if (typeof end == 'undefined') end = this.length;\n return iconv.decode(this.slice(start, end), encoding);\n }\n\n original.BufferWrite = Buffer.prototype.write;\n Buffer.prototype.write = function(string, offset, length, encoding) {\n var _offset = offset, _length = length, _encoding = encoding;\n // Support both (string, offset, length, encoding)\n // and the legacy (string, encoding, offset, length)\n if (isFinite(offset)) {\n if (!isFinite(length)) {\n encoding = length;\n length = undefined;\n }\n } else { // legacy\n var swap = encoding;\n encoding = offset;\n offset = length;\n length = swap;\n }\n\n encoding = String(encoding || 'utf8').toLowerCase();\n\n // Use native conversion when possible\n if (Buffer.isNativeEncoding(encoding))\n return original.BufferWrite.call(this, string, _offset, _length, _encoding);\n\n offset = +offset || 0;\n var remaining = this.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = +length;\n if (length > remaining) {\n length = remaining;\n }\n }\n\n if (string.length > 0 && (length < 0 || offset < 0))\n throw new RangeError('attempt to write beyond buffer bounds');\n\n // Otherwise, use our encoding method.\n var buf = iconv.encode(string, encoding);\n if (buf.length < length) length = buf.length;\n buf.copy(this, offset, 0, length);\n return length;\n\n // TODO: Set _charsWritten.\n }\n\n\n // -- Readable -------------------------------------------------------------\n if (iconv.supportsStreams) {\n var Readable = require('stream').Readable;\n\n original.ReadableSetEncoding = Readable.prototype.setEncoding;\n Readable.prototype.setEncoding = function setEncoding(enc, options) {\n // Use our own decoder, it has the same interface.\n // We cannot use original function as it doesn't handle BOM-s.\n this._readableState.decoder = iconv.getDecoder(enc, options);\n this._readableState.encoding = enc;\n }\n\n Readable.prototype.collect = iconv._collect;\n }\n }\n\n // Remove iconv-lite Node primitive extensions.\n iconv.undoExtendNodeEncodings = function undoExtendNodeEncodings() {\n if (!iconv.supportsNodeEncodingsExtension)\n return;\n if (!original)\n throw new Error(\"require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called.\")\n\n delete Buffer.isNativeEncoding;\n\n var SlowBuffer = require('buffer').SlowBuffer;\n\n SlowBuffer.prototype.toString = original.SlowBufferToString;\n SlowBuffer.prototype.write = original.SlowBufferWrite;\n\n Buffer.isEncoding = original.BufferIsEncoding;\n Buffer.byteLength = original.BufferByteLength;\n Buffer.prototype.toString = original.BufferToString;\n Buffer.prototype.write = original.BufferWrite;\n\n if (iconv.supportsStreams) {\n var Readable = require('stream').Readable;\n\n Readable.prototype.setEncoding = original.ReadableSetEncoding;\n delete Readable.prototype.collect;\n }\n\n original = undefined;\n }\n}\n", "\"use strict\";\n\n// Some environments don't have global Buffer (e.g. React Native).\n// Solution would be installing npm modules \"buffer\" and \"stream\" explicitly.\nvar Buffer = require(\"safer-buffer\").Buffer;\n\nvar bomHandling = require(\"./bom-handling\"),\n iconv = module.exports;\n\n// All codecs and aliases are kept here, keyed by encoding name/alias.\n// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.\niconv.encodings = null;\n\n// Characters emitted in case of error.\niconv.defaultCharUnicode = '\uFFFD';\niconv.defaultCharSingleByte = '?';\n\n// Public API.\niconv.encode = function encode(str, encoding, options) {\n str = \"\" + (str || \"\"); // Ensure string.\n\n var encoder = iconv.getEncoder(encoding, options);\n\n var res = encoder.write(str);\n var trail = encoder.end();\n \n return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;\n}\n\niconv.decode = function decode(buf, encoding, options) {\n if (typeof buf === 'string') {\n if (!iconv.skipDecodeWarning) {\n console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding');\n iconv.skipDecodeWarning = true;\n }\n\n buf = Buffer.from(\"\" + (buf || \"\"), \"binary\"); // Ensure buffer.\n }\n\n var decoder = iconv.getDecoder(encoding, options);\n\n var res = decoder.write(buf);\n var trail = decoder.end();\n\n return trail ? (res + trail) : res;\n}\n\niconv.encodingExists = function encodingExists(enc) {\n try {\n iconv.getCodec(enc);\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// Legacy aliases to convert functions\niconv.toEncoding = iconv.encode;\niconv.fromEncoding = iconv.decode;\n\n// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.\niconv._codecDataCache = {};\niconv.getCodec = function getCodec(encoding) {\n if (!iconv.encodings)\n iconv.encodings = require(\"../encodings\"); // Lazy load all encoding definitions.\n \n // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n var enc = iconv._canonicalizeEncoding(encoding);\n\n // Traverse iconv.encodings to find actual codec.\n var codecOptions = {};\n while (true) {\n var codec = iconv._codecDataCache[enc];\n if (codec)\n return codec;\n\n var codecDef = iconv.encodings[enc];\n\n switch (typeof codecDef) {\n case \"string\": // Direct alias to other encoding.\n enc = codecDef;\n break;\n\n case \"object\": // Alias with options. Can be layered.\n for (var key in codecDef)\n codecOptions[key] = codecDef[key];\n\n if (!codecOptions.encodingName)\n codecOptions.encodingName = enc;\n \n enc = codecDef.type;\n break;\n\n case \"function\": // Codec itself.\n if (!codecOptions.encodingName)\n codecOptions.encodingName = enc;\n\n // The codec function must load all tables and return object with .encoder and .decoder methods.\n // It'll be called only once (for each different options object).\n codec = new codecDef(codecOptions, iconv);\n\n iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.\n return codec;\n\n default:\n throw new Error(\"Encoding not recognized: '\" + encoding + \"' (searched as: '\"+enc+\"')\");\n }\n }\n}\n\niconv._canonicalizeEncoding = function(encoding) {\n // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n return (''+encoding).toLowerCase().replace(/:\\d{4}$|[^0-9a-z]/g, \"\");\n}\n\niconv.getEncoder = function getEncoder(encoding, options) {\n var codec = iconv.getCodec(encoding),\n encoder = new codec.encoder(options, codec);\n\n if (codec.bomAware && options && options.addBOM)\n encoder = new bomHandling.PrependBOM(encoder, options);\n\n return encoder;\n}\n\niconv.getDecoder = function getDecoder(encoding, options) {\n var codec = iconv.getCodec(encoding),\n decoder = new codec.decoder(options, codec);\n\n if (codec.bomAware && !(options && options.stripBOM === false))\n decoder = new bomHandling.StripBOM(decoder, options);\n\n return decoder;\n}\n\n\n// Load extensions in Node. All of them are omitted in Browserify build via 'browser' field in package.json.\nvar nodeVer = typeof process !== 'undefined' && process.versions && process.versions.node;\nif (nodeVer) {\n\n // Load streaming support in Node v0.10+\n var nodeVerArr = nodeVer.split(\".\").map(Number);\n if (nodeVerArr[0] > 0 || nodeVerArr[1] >= 10) {\n require(\"./streams\")(iconv);\n }\n\n // Load Node primitive extensions.\n require(\"./extend-node\")(iconv);\n}\n\nif (\"\u0100\" != \"\\u0100\") {\n console.error(\"iconv-lite warning: javascript files use encoding different from utf-8. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.\");\n}\n", "/*!\n * unpipe\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = unpipe\n\n/**\n * Determine if there are Node.js pipe-like data listeners.\n * @private\n */\n\nfunction hasPipeDataListeners(stream) {\n var listeners = stream.listeners('data')\n\n for (var i = 0; i < listeners.length; i++) {\n if (listeners[i].name === 'ondata') {\n return true\n }\n }\n\n return false\n}\n\n/**\n * Unpipe a stream from all destinations.\n *\n * @param {object} stream\n * @public\n */\n\nfunction unpipe(stream) {\n if (!stream) {\n throw new TypeError('argument stream is required')\n }\n\n if (typeof stream.unpipe === 'function') {\n // new-style\n stream.unpipe()\n return\n }\n\n // Node.js 0.8 hack\n if (!hasPipeDataListeners(stream)) {\n return\n }\n\n var listener\n var listeners = stream.listeners('close')\n\n for (var i = 0; i < listeners.length; i++) {\n listener = listeners[i]\n\n if (listener.name !== 'cleanup' && listener.name !== 'onclose') {\n continue\n }\n\n // invoke the listener\n listener.call(stream)\n }\n}\n", "/*!\n * raw-body\n * Copyright(c) 2013-2014 Jonathan Ong\n * Copyright(c) 2014-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar asyncHooks = tryRequireAsyncHooks()\nvar bytes = require('bytes')\nvar createError = require('http-errors')\nvar iconv = require('iconv-lite')\nvar unpipe = require('unpipe')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = getRawBody\n\n/**\n * Module variables.\n * @private\n */\n\nvar ICONV_ENCODING_MESSAGE_REGEXP = /^Encoding not recognized: /\n\n/**\n * Get the decoder for a given encoding.\n *\n * @param {string} encoding\n * @private\n */\n\nfunction getDecoder (encoding) {\n if (!encoding) return null\n\n try {\n return iconv.getDecoder(encoding)\n } catch (e) {\n // error getting decoder\n if (!ICONV_ENCODING_MESSAGE_REGEXP.test(e.message)) throw e\n\n // the encoding was not found\n throw createError(415, 'specified encoding unsupported', {\n encoding: encoding,\n type: 'encoding.unsupported'\n })\n }\n}\n\n/**\n * Get the raw body of a stream (typically HTTP).\n *\n * @param {object} stream\n * @param {object|string|function} [options]\n * @param {function} [callback]\n * @public\n */\n\nfunction getRawBody (stream, options, callback) {\n var done = callback\n var opts = options || {}\n\n if (options === true || typeof options === 'string') {\n // short cut for encoding\n opts = {\n encoding: options\n }\n }\n\n if (typeof options === 'function') {\n done = options\n opts = {}\n }\n\n // validate callback is a function, if provided\n if (done !== undefined && typeof done !== 'function') {\n throw new TypeError('argument callback must be a function')\n }\n\n // require the callback without promises\n if (!done && !global.Promise) {\n throw new TypeError('argument callback is required')\n }\n\n // get encoding\n var encoding = opts.encoding !== true\n ? opts.encoding\n : 'utf-8'\n\n // convert the limit to an integer\n var limit = bytes.parse(opts.limit)\n\n // convert the expected length to an integer\n var length = opts.length != null && !isNaN(opts.length)\n ? parseInt(opts.length, 10)\n : null\n\n if (done) {\n // classic callback style\n return readStream(stream, encoding, length, limit, wrap(done))\n }\n\n return new Promise(function executor (resolve, reject) {\n readStream(stream, encoding, length, limit, function onRead (err, buf) {\n if (err) return reject(err)\n resolve(buf)\n })\n })\n}\n\n/**\n * Halt a stream.\n *\n * @param {Object} stream\n * @private\n */\n\nfunction halt (stream) {\n // unpipe everything from the stream\n unpipe(stream)\n\n // pause stream\n if (typeof stream.pause === 'function') {\n stream.pause()\n }\n}\n\n/**\n * Read the data from the stream.\n *\n * @param {object} stream\n * @param {string} encoding\n * @param {number} length\n * @param {number} limit\n * @param {function} callback\n * @public\n */\n\nfunction readStream (stream, encoding, length, limit, callback) {\n var complete = false\n var sync = true\n\n // check the length and limit options.\n // note: we intentionally leave the stream paused,\n // so users should handle the stream themselves.\n if (limit !== null && length !== null && length > limit) {\n return done(createError(413, 'request entity too large', {\n expected: length,\n length: length,\n limit: limit,\n type: 'entity.too.large'\n }))\n }\n\n // streams1: assert request encoding is buffer.\n // streams2+: assert the stream encoding is buffer.\n // stream._decoder: streams1\n // state.encoding: streams2\n // state.decoder: streams2, specifically < 0.10.6\n var state = stream._readableState\n if (stream._decoder || (state && (state.encoding || state.decoder))) {\n // developer error\n return done(createError(500, 'stream encoding should not be set', {\n type: 'stream.encoding.set'\n }))\n }\n\n if (typeof stream.readable !== 'undefined' && !stream.readable) {\n return done(createError(500, 'stream is not readable', {\n type: 'stream.not.readable'\n }))\n }\n\n var received = 0\n var decoder\n\n try {\n decoder = getDecoder(encoding)\n } catch (err) {\n return done(err)\n }\n\n var buffer = decoder\n ? ''\n : []\n\n // attach listeners\n stream.on('aborted', onAborted)\n stream.on('close', cleanup)\n stream.on('data', onData)\n stream.on('end', onEnd)\n stream.on('error', onEnd)\n\n // mark sync section complete\n sync = false\n\n function done () {\n var args = new Array(arguments.length)\n\n // copy arguments\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n\n // mark complete\n complete = true\n\n if (sync) {\n process.nextTick(invokeCallback)\n } else {\n invokeCallback()\n }\n\n function invokeCallback () {\n cleanup()\n\n if (args[0]) {\n // halt the stream on error\n halt(stream)\n }\n\n callback.apply(null, args)\n }\n }\n\n function onAborted () {\n if (complete) return\n\n done(createError(400, 'request aborted', {\n code: 'ECONNABORTED',\n expected: length,\n length: length,\n received: received,\n type: 'request.aborted'\n }))\n }\n\n function onData (chunk) {\n if (complete) return\n\n received += chunk.length\n\n if (limit !== null && received > limit) {\n done(createError(413, 'request entity too large', {\n limit: limit,\n received: received,\n type: 'entity.too.large'\n }))\n } else if (decoder) {\n buffer += decoder.write(chunk)\n } else {\n buffer.push(chunk)\n }\n }\n\n function onEnd (err) {\n if (complete) return\n if (err) return done(err)\n\n if (length !== null && received !== length) {\n done(createError(400, 'request size did not match content length', {\n expected: length,\n length: length,\n received: received,\n type: 'request.size.invalid'\n }))\n } else {\n var string = decoder\n ? buffer + (decoder.end() || '')\n : Buffer.concat(buffer)\n done(null, string)\n }\n }\n\n function cleanup () {\n buffer = null\n\n stream.removeListener('aborted', onAborted)\n stream.removeListener('data', onData)\n stream.removeListener('end', onEnd)\n stream.removeListener('error', onEnd)\n stream.removeListener('close', cleanup)\n }\n}\n\n/**\n * Try to require async_hooks\n * @private\n */\n\nfunction tryRequireAsyncHooks () {\n try {\n return require('async_hooks')\n } catch (e) {\n return {}\n }\n}\n\n/**\n * Wrap function with async resource, if possible.\n * AsyncResource.bind static method backported.\n * @private\n */\n\nfunction wrap (fn) {\n var res\n\n // create anonymous resource\n if (asyncHooks.AsyncResource) {\n res = new asyncHooks.AsyncResource(fn.name || 'bound-anonymous-fn')\n }\n\n // incompatible node.js\n if (!res || !res.runInAsyncScope) {\n return fn\n }\n\n // return bound function\n return res.runInAsyncScope.bind(res, fn, null)\n}\n", "/*!\n * ee-first\n * Copyright(c) 2014 Jonathan Ong\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = first\n\n/**\n * Get the first event in a set of event emitters and event pairs.\n *\n * @param {array} stuff\n * @param {function} done\n * @public\n */\n\nfunction first(stuff, done) {\n if (!Array.isArray(stuff))\n throw new TypeError('arg must be an array of [ee, events...] arrays')\n\n var cleanups = []\n\n for (var i = 0; i < stuff.length; i++) {\n var arr = stuff[i]\n\n if (!Array.isArray(arr) || arr.length < 2)\n throw new TypeError('each array member must be [ee, events...]')\n\n var ee = arr[0]\n\n for (var j = 1; j < arr.length; j++) {\n var event = arr[j]\n var fn = listener(event, callback)\n\n // listen to the event\n ee.on(event, fn)\n // push this listener to the list of cleanups\n cleanups.push({\n ee: ee,\n event: event,\n fn: fn,\n })\n }\n }\n\n function callback() {\n cleanup()\n done.apply(null, arguments)\n }\n\n function cleanup() {\n var x\n for (var i = 0; i < cleanups.length; i++) {\n x = cleanups[i]\n x.ee.removeListener(x.event, x.fn)\n }\n }\n\n function thunk(fn) {\n done = fn\n }\n\n thunk.cancel = cleanup\n\n return thunk\n}\n\n/**\n * Create the event listener.\n * @private\n */\n\nfunction listener(event, done) {\n return function onevent(arg1) {\n var args = new Array(arguments.length)\n var ee = this\n var err = event === 'error'\n ? arg1\n : null\n\n // copy args to prevent arguments escaping scope\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n\n done(err, ee, event, args)\n }\n}\n", "/*!\n * on-finished\n * Copyright(c) 2013 Jonathan Ong\n * Copyright(c) 2014 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = onFinished\nmodule.exports.isFinished = isFinished\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar asyncHooks = tryRequireAsyncHooks()\nvar first = require('ee-first')\n\n/**\n * Variables.\n * @private\n */\n\n/* istanbul ignore next */\nvar defer = typeof setImmediate === 'function'\n ? setImmediate\n : function (fn) { process.nextTick(fn.bind.apply(fn, arguments)) }\n\n/**\n * Invoke callback when the response has finished, useful for\n * cleaning up resources afterwards.\n *\n * @param {object} msg\n * @param {function} listener\n * @return {object}\n * @public\n */\n\nfunction onFinished (msg, listener) {\n if (isFinished(msg) !== false) {\n defer(listener, null, msg)\n return msg\n }\n\n // attach the listener to the message\n attachListener(msg, wrap(listener))\n\n return msg\n}\n\n/**\n * Determine if message is already finished.\n *\n * @param {object} msg\n * @return {boolean}\n * @public\n */\n\nfunction isFinished (msg) {\n var socket = msg.socket\n\n if (typeof msg.finished === 'boolean') {\n // OutgoingMessage\n return Boolean(msg.finished || (socket && !socket.writable))\n }\n\n if (typeof msg.complete === 'boolean') {\n // IncomingMessage\n return Boolean(msg.upgrade || !socket || !socket.readable || (msg.complete && !msg.readable))\n }\n\n // don't know\n return undefined\n}\n\n/**\n * Attach a finished listener to the message.\n *\n * @param {object} msg\n * @param {function} callback\n * @private\n */\n\nfunction attachFinishedListener (msg, callback) {\n var eeMsg\n var eeSocket\n var finished = false\n\n function onFinish (error) {\n eeMsg.cancel()\n eeSocket.cancel()\n\n finished = true\n callback(error)\n }\n\n // finished on first message event\n eeMsg = eeSocket = first([[msg, 'end', 'finish']], onFinish)\n\n function onSocket (socket) {\n // remove listener\n msg.removeListener('socket', onSocket)\n\n if (finished) return\n if (eeMsg !== eeSocket) return\n\n // finished on first socket event\n eeSocket = first([[socket, 'error', 'close']], onFinish)\n }\n\n if (msg.socket) {\n // socket already assigned\n onSocket(msg.socket)\n return\n }\n\n // wait for socket to be assigned\n msg.on('socket', onSocket)\n\n if (msg.socket === undefined) {\n // istanbul ignore next: node.js 0.8 patch\n patchAssignSocket(msg, onSocket)\n }\n}\n\n/**\n * Attach the listener to the message.\n *\n * @param {object} msg\n * @return {function}\n * @private\n */\n\nfunction attachListener (msg, listener) {\n var attached = msg.__onFinished\n\n // create a private single listener with queue\n if (!attached || !attached.queue) {\n attached = msg.__onFinished = createListener(msg)\n attachFinishedListener(msg, attached)\n }\n\n attached.queue.push(listener)\n}\n\n/**\n * Create listener on message.\n *\n * @param {object} msg\n * @return {function}\n * @private\n */\n\nfunction createListener (msg) {\n function listener (err) {\n if (msg.__onFinished === listener) msg.__onFinished = null\n if (!listener.queue) return\n\n var queue = listener.queue\n listener.queue = null\n\n for (var i = 0; i < queue.length; i++) {\n queue[i](err, msg)\n }\n }\n\n listener.queue = []\n\n return listener\n}\n\n/**\n * Patch ServerResponse.prototype.assignSocket for node.js 0.8.\n *\n * @param {ServerResponse} res\n * @param {function} callback\n * @private\n */\n\n// istanbul ignore next: node.js 0.8 patch\nfunction patchAssignSocket (res, callback) {\n var assignSocket = res.assignSocket\n\n if (typeof assignSocket !== 'function') return\n\n // res.on('socket', callback) is broken in 0.8\n res.assignSocket = function _assignSocket (socket) {\n assignSocket.call(this, socket)\n callback(socket)\n }\n}\n\n/**\n * Try to require async_hooks\n * @private\n */\n\nfunction tryRequireAsyncHooks () {\n try {\n return require('async_hooks')\n } catch (e) {\n return {}\n }\n}\n\n/**\n * Wrap function with async resource, if possible.\n * AsyncResource.bind static method backported.\n * @private\n */\n\nfunction wrap (fn) {\n var res\n\n // create anonymous resource\n if (asyncHooks.AsyncResource) {\n res = new asyncHooks.AsyncResource(fn.name || 'bound-anonymous-fn')\n }\n\n // incompatible node.js\n if (!res || !res.runInAsyncScope) {\n return fn\n }\n\n // return bound function\n return res.runInAsyncScope.bind(res, fn, null)\n}\n", "/*!\n * body-parser\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar createError = require('http-errors')\nvar destroy = require('destroy')\nvar getBody = require('raw-body')\nvar iconv = require('iconv-lite')\nvar onFinished = require('on-finished')\nvar unpipe = require('unpipe')\nvar zlib = require('zlib')\n\n/**\n * Module exports.\n */\n\nmodule.exports = read\n\n/**\n * Read a request into a buffer and parse.\n *\n * @param {object} req\n * @param {object} res\n * @param {function} next\n * @param {function} parse\n * @param {function} debug\n * @param {object} options\n * @private\n */\n\nfunction read (req, res, next, parse, debug, options) {\n var length\n var opts = options\n var stream\n\n // flag as parsed\n req._body = true\n\n // read options\n var encoding = opts.encoding !== null\n ? opts.encoding\n : null\n var verify = opts.verify\n\n try {\n // get the content stream\n stream = contentstream(req, debug, opts.inflate)\n length = stream.length\n stream.length = undefined\n } catch (err) {\n return next(err)\n }\n\n // set raw-body options\n opts.length = length\n opts.encoding = verify\n ? null\n : encoding\n\n // assert charset is supported\n if (opts.encoding === null && encoding !== null && !iconv.encodingExists(encoding)) {\n return next(createError(415, 'unsupported charset \"' + encoding.toUpperCase() + '\"', {\n charset: encoding.toLowerCase(),\n type: 'charset.unsupported'\n }))\n }\n\n // read body\n debug('read body')\n getBody(stream, opts, function (error, body) {\n if (error) {\n var _error\n\n if (error.type === 'encoding.unsupported') {\n // echo back charset\n _error = createError(415, 'unsupported charset \"' + encoding.toUpperCase() + '\"', {\n charset: encoding.toLowerCase(),\n type: 'charset.unsupported'\n })\n } else {\n // set status code on error\n _error = createError(400, error)\n }\n\n // unpipe from stream and destroy\n if (stream !== req) {\n unpipe(req)\n destroy(stream, true)\n }\n\n // read off entire request\n dump(req, function onfinished () {\n next(createError(400, _error))\n })\n return\n }\n\n // verify\n if (verify) {\n try {\n debug('verify body')\n verify(req, res, body, encoding)\n } catch (err) {\n next(createError(403, err, {\n body: body,\n type: err.type || 'entity.verify.failed'\n }))\n return\n }\n }\n\n // parse\n var str = body\n try {\n debug('parse body')\n str = typeof body !== 'string' && encoding !== null\n ? iconv.decode(body, encoding)\n : body\n req.body = parse(str)\n } catch (err) {\n next(createError(400, err, {\n body: str,\n type: err.type || 'entity.parse.failed'\n }))\n return\n }\n\n next()\n })\n}\n\n/**\n * Get the content stream of the request.\n *\n * @param {object} req\n * @param {function} debug\n * @param {boolean} [inflate=true]\n * @return {object}\n * @api private\n */\n\nfunction contentstream (req, debug, inflate) {\n var encoding = (req.headers['content-encoding'] || 'identity').toLowerCase()\n var length = req.headers['content-length']\n var stream\n\n debug('content-encoding \"%s\"', encoding)\n\n if (inflate === false && encoding !== 'identity') {\n throw createError(415, 'content encoding unsupported', {\n encoding: encoding,\n type: 'encoding.unsupported'\n })\n }\n\n switch (encoding) {\n case 'deflate':\n stream = zlib.createInflate()\n debug('inflate body')\n req.pipe(stream)\n break\n case 'gzip':\n stream = zlib.createGunzip()\n debug('gunzip body')\n req.pipe(stream)\n break\n case 'identity':\n stream = req\n stream.length = length\n break\n default:\n throw createError(415, 'unsupported content encoding \"' + encoding + '\"', {\n encoding: encoding,\n type: 'encoding.unsupported'\n })\n }\n\n return stream\n}\n\n/**\n * Dump the contents of a request.\n *\n * @param {object} req\n * @param {function} callback\n * @api private\n */\n\nfunction dump (req, callback) {\n if (onFinished.isFinished(req)) {\n callback(null)\n } else {\n onFinished(req, callback)\n req.resume()\n }\n}\n", "/*!\n * media-typer\n * Copyright(c) 2014 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 2616 sec 3.7\n *\n * parameter = token \"=\" ( token | quoted-string )\n * token = 1*\n * separators = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n * | \",\" | \";\" | \":\" | \"\\\" | <\">\n * | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n * | \"{\" | \"}\" | SP | HT\n * quoted-string = ( <\"> *(qdtext | quoted-pair ) <\"> )\n * qdtext = >\n * quoted-pair = \"\\\" CHAR\n * CHAR = \n * TEXT = \n * LWS = [CRLF] 1*( SP | HT )\n * CRLF = CR LF\n * CR = \n * LF = \n * SP = \n * SHT = \n * CTL = \n * OCTET = \n */\nvar paramRegExp = /; *([!#$%&'\\*\\+\\-\\.0-9A-Z\\^_`a-z\\|~]+) *= *(\"(?:[ !\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u0020-\\u007e])*\"|[!#$%&'\\*\\+\\-\\.0-9A-Z\\^_`a-z\\|~]+) */g;\nvar textRegExp = /^[\\u0020-\\u007e\\u0080-\\u00ff]+$/\nvar tokenRegExp = /^[!#$%&'\\*\\+\\-\\.0-9A-Z\\^_`a-z\\|~]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 2616\n *\n * quoted-pair = \"\\\" CHAR\n * CHAR = \n */\nvar qescRegExp = /\\\\([\\u0000-\\u007f])/g;\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 2616\n */\nvar quoteRegExp = /([\\\\\"])/g;\n\n/**\n * RegExp to match type in RFC 6838\n *\n * type-name = restricted-name\n * subtype-name = restricted-name\n * restricted-name = restricted-name-first *126restricted-name-chars\n * restricted-name-first = ALPHA / DIGIT\n * restricted-name-chars = ALPHA / DIGIT / \"!\" / \"#\" /\n * \"$\" / \"&\" / \"-\" / \"^\" / \"_\"\n * restricted-name-chars =/ \".\" ; Characters before first dot always\n * ; specify a facet name\n * restricted-name-chars =/ \"+\" ; Characters after last plus always\n * ; specify a structured syntax suffix\n * ALPHA = %x41-5A / %x61-7A ; A-Z / a-z\n * DIGIT = %x30-39 ; 0-9\n */\nvar subtypeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/\nvar typeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/\nvar typeRegExp = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;\n\n/**\n * Module exports.\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @api public\n */\n\nfunction format(obj) {\n if (!obj || typeof obj !== 'object') {\n throw new TypeError('argument obj is required')\n }\n\n var parameters = obj.parameters\n var subtype = obj.subtype\n var suffix = obj.suffix\n var type = obj.type\n\n if (!type || !typeNameRegExp.test(type)) {\n throw new TypeError('invalid type')\n }\n\n if (!subtype || !subtypeNameRegExp.test(subtype)) {\n throw new TypeError('invalid subtype')\n }\n\n // format as type/subtype\n var string = type + '/' + subtype\n\n // append +suffix\n if (suffix) {\n if (!typeNameRegExp.test(suffix)) {\n throw new TypeError('invalid suffix')\n }\n\n string += '+' + suffix\n }\n\n // append parameters\n if (parameters && typeof parameters === 'object') {\n var param\n var params = Object.keys(parameters).sort()\n\n for (var i = 0; i < params.length; i++) {\n param = params[i]\n\n if (!tokenRegExp.test(param)) {\n throw new TypeError('invalid parameter name')\n }\n\n string += '; ' + param + '=' + qstring(parameters[param])\n }\n }\n\n return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @api public\n */\n\nfunction parse(string) {\n if (!string) {\n throw new TypeError('argument string is required')\n }\n\n // support req/res-like objects as argument\n if (typeof string === 'object') {\n string = getcontenttype(string)\n }\n\n if (typeof string !== 'string') {\n throw new TypeError('argument string is required to be a string')\n }\n\n var index = string.indexOf(';')\n var type = index !== -1\n ? string.substr(0, index)\n : string\n\n var key\n var match\n var obj = splitType(type)\n var params = {}\n var value\n\n paramRegExp.lastIndex = index\n\n while (match = paramRegExp.exec(string)) {\n if (match.index !== index) {\n throw new TypeError('invalid parameter format')\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (value[0] === '\"') {\n // remove quotes and escapes\n value = value\n .substr(1, value.length - 2)\n .replace(qescRegExp, '$1')\n }\n\n params[key] = value\n }\n\n if (index !== -1 && index !== string.length) {\n throw new TypeError('invalid parameter format')\n }\n\n obj.parameters = params\n\n return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @api private\n */\n\nfunction getcontenttype(obj) {\n if (typeof obj.getHeader === 'function') {\n // res-like\n return obj.getHeader('content-type')\n }\n\n if (typeof obj.headers === 'object') {\n // req-like\n return obj.headers && obj.headers['content-type']\n }\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @api private\n */\n\nfunction qstring(val) {\n var str = String(val)\n\n // no need to quote tokens\n if (tokenRegExp.test(str)) {\n return str\n }\n\n if (str.length > 0 && !textRegExp.test(str)) {\n throw new TypeError('invalid parameter value')\n }\n\n return '\"' + str.replace(quoteRegExp, '\\\\$1') + '\"'\n}\n\n/**\n * Simply \"type/subtype+siffx\" into parts.\n *\n * @param {string} string\n * @return {Object}\n * @api private\n */\n\nfunction splitType(string) {\n var match = typeRegExp.exec(string.toLowerCase())\n\n if (!match) {\n throw new TypeError('invalid media type')\n }\n\n var type = match[1]\n var subtype = match[2]\n var suffix\n\n // suffix after last +\n var index = subtype.lastIndexOf('+')\n if (index !== -1) {\n suffix = subtype.substr(index + 1)\n subtype = subtype.substr(0, index)\n }\n\n var obj = {\n type: type,\n subtype: subtype,\n suffix: suffix\n }\n\n return obj\n}\n", "/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n", "/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction charset (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n var mime = match && db[match[1].toLowerCase()]\n\n if (mime && mime.charset) {\n return mime.charset\n }\n\n // default text/* to utf-8\n if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n return 'UTF-8'\n }\n\n return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {boolean|string}\n */\n\nfunction contentType (str) {\n // TODO: should this even be in this module?\n if (!str || typeof str !== 'string') {\n return false\n }\n\n var mime = str.indexOf('/') === -1\n ? exports.lookup(str)\n : str\n\n if (!mime) {\n return false\n }\n\n // TODO: use content-type or other module\n if (mime.indexOf('charset') === -1) {\n var charset = exports.charset(mime)\n if (charset) mime += '; charset=' + charset.toLowerCase()\n }\n\n return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction extension (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n // get extensions\n var exts = match && exports.extensions[match[1].toLowerCase()]\n\n if (!exts || !exts.length) {\n return false\n }\n\n return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {boolean|string}\n */\n\nfunction lookup (path) {\n if (!path || typeof path !== 'string') {\n return false\n }\n\n // get the extension (\"ext\" or \".ext\" or full path)\n var extension = extname('x.' + path)\n .toLowerCase()\n .substr(1)\n\n if (!extension) {\n return false\n }\n\n return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n // source preference (least -> most)\n var preference = ['nginx', 'apache', undefined, 'iana']\n\n Object.keys(db).forEach(function forEachMimeType (type) {\n var mime = db[type]\n var exts = mime.extensions\n\n if (!exts || !exts.length) {\n return\n }\n\n // mime -> extensions\n extensions[type] = exts\n\n // extension -> mime\n for (var i = 0; i < exts.length; i++) {\n var extension = exts[i]\n\n if (types[extension]) {\n var from = preference.indexOf(db[types[extension]].source)\n var to = preference.indexOf(mime.source)\n\n if (types[extension] !== 'application/octet-stream' &&\n (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {\n // skip the remapping\n continue\n }\n }\n\n // set the extension -> mime\n types[extension] = type\n }\n })\n}\n", "/*!\n * type-is\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar typer = require('media-typer')\nvar mime = require('mime-types')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = typeofrequest\nmodule.exports.is = typeis\nmodule.exports.hasBody = hasbody\nmodule.exports.normalize = normalize\nmodule.exports.match = mimeMatch\n\n/**\n * Compare a `value` content-type with `types`.\n * Each `type` can be an extension like `html`,\n * a special shortcut like `multipart` or `urlencoded`,\n * or a mime type.\n *\n * If no types match, `false` is returned.\n * Otherwise, the first `type` that matches is returned.\n *\n * @param {String} value\n * @param {Array} types\n * @public\n */\n\nfunction typeis (value, types_) {\n var i\n var types = types_\n\n // remove parameters and normalize\n var val = tryNormalizeType(value)\n\n // no type or invalid\n if (!val) {\n return false\n }\n\n // support flattened arguments\n if (types && !Array.isArray(types)) {\n types = new Array(arguments.length - 1)\n for (i = 0; i < types.length; i++) {\n types[i] = arguments[i + 1]\n }\n }\n\n // no types, return the content type\n if (!types || !types.length) {\n return val\n }\n\n var type\n for (i = 0; i < types.length; i++) {\n if (mimeMatch(normalize(type = types[i]), val)) {\n return type[0] === '+' || type.indexOf('*') !== -1\n ? val\n : type\n }\n }\n\n // no matches\n return false\n}\n\n/**\n * Check if a request has a request body.\n * A request with a body __must__ either have `transfer-encoding`\n * or `content-length` headers set.\n * http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3\n *\n * @param {Object} request\n * @return {Boolean}\n * @public\n */\n\nfunction hasbody (req) {\n return req.headers['transfer-encoding'] !== undefined ||\n !isNaN(req.headers['content-length'])\n}\n\n/**\n * Check if the incoming request contains the \"Content-Type\"\n * header field, and it contains any of the give mime `type`s.\n * If there is no request body, `null` is returned.\n * If there is no content type, `false` is returned.\n * Otherwise, it returns the first `type` that matches.\n *\n * Examples:\n *\n * // With Content-Type: text/html; charset=utf-8\n * this.is('html'); // => 'html'\n * this.is('text/html'); // => 'text/html'\n * this.is('text/*', 'application/json'); // => 'text/html'\n *\n * // When Content-Type is application/json\n * this.is('json', 'urlencoded'); // => 'json'\n * this.is('application/json'); // => 'application/json'\n * this.is('html', 'application/*'); // => 'application/json'\n *\n * this.is('html'); // => false\n *\n * @param {String|Array} types...\n * @return {String|false|null}\n * @public\n */\n\nfunction typeofrequest (req, types_) {\n var types = types_\n\n // no body\n if (!hasbody(req)) {\n return null\n }\n\n // support flattened arguments\n if (arguments.length > 2) {\n types = new Array(arguments.length - 1)\n for (var i = 0; i < types.length; i++) {\n types[i] = arguments[i + 1]\n }\n }\n\n // request content type\n var value = req.headers['content-type']\n\n return typeis(value, types)\n}\n\n/**\n * Normalize a mime type.\n * If it's a shorthand, expand it to a valid mime type.\n *\n * In general, you probably want:\n *\n * var type = is(req, ['urlencoded', 'json', 'multipart']);\n *\n * Then use the appropriate body parsers.\n * These three are the most common request body types\n * and are thus ensured to work.\n *\n * @param {String} type\n * @private\n */\n\nfunction normalize (type) {\n if (typeof type !== 'string') {\n // invalid type\n return false\n }\n\n switch (type) {\n case 'urlencoded':\n return 'application/x-www-form-urlencoded'\n case 'multipart':\n return 'multipart/*'\n }\n\n if (type[0] === '+') {\n // \"+json\" -> \"*/*+json\" expando\n return '*/*' + type\n }\n\n return type.indexOf('/') === -1\n ? mime.lookup(type)\n : type\n}\n\n/**\n * Check if `expected` mime type\n * matches `actual` mime type with\n * wildcard and +suffix support.\n *\n * @param {String} expected\n * @param {String} actual\n * @return {Boolean}\n * @private\n */\n\nfunction mimeMatch (expected, actual) {\n // invalid type\n if (expected === false) {\n return false\n }\n\n // split types\n var actualParts = actual.split('/')\n var expectedParts = expected.split('/')\n\n // invalid format\n if (actualParts.length !== 2 || expectedParts.length !== 2) {\n return false\n }\n\n // validate type\n if (expectedParts[0] !== '*' && expectedParts[0] !== actualParts[0]) {\n return false\n }\n\n // validate suffix wildcard\n if (expectedParts[1].substr(0, 2) === '*+') {\n return expectedParts[1].length <= actualParts[1].length + 1 &&\n expectedParts[1].substr(1) === actualParts[1].substr(1 - expectedParts[1].length)\n }\n\n // validate subtype\n if (expectedParts[1] !== '*' && expectedParts[1] !== actualParts[1]) {\n return false\n }\n\n return true\n}\n\n/**\n * Normalize a type and remove parameters.\n *\n * @param {string} value\n * @return {string}\n * @private\n */\n\nfunction normalizeType (value) {\n // parse the type\n var type = typer.parse(value)\n\n // remove the parameters\n type.parameters = undefined\n\n // reformat it\n return typer.format(type)\n}\n\n/**\n * Try to normalize a type and remove parameters.\n *\n * @param {string} value\n * @return {string}\n * @private\n */\n\nfunction tryNormalizeType (value) {\n if (!value) {\n return null\n }\n\n try {\n return normalizeType(value)\n } catch (err) {\n return null\n }\n}\n", "/*!\n * body-parser\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar bytes = require('bytes')\nvar contentType = require('content-type')\nvar createError = require('http-errors')\nvar debug = require('debug')('body-parser:json')\nvar read = require('../read')\nvar typeis = require('type-is')\n\n/**\n * Module exports.\n */\n\nmodule.exports = json\n\n/**\n * RegExp to match the first non-space in a string.\n *\n * Allowed whitespace is defined in RFC 7159:\n *\n * ws = *(\n * %x20 / ; Space\n * %x09 / ; Horizontal tab\n * %x0A / ; Line feed or New line\n * %x0D ) ; Carriage return\n */\n\nvar FIRST_CHAR_REGEXP = /^[\\x20\\x09\\x0a\\x0d]*([^\\x20\\x09\\x0a\\x0d])/ // eslint-disable-line no-control-regex\n\n/**\n * Create a middleware to parse JSON bodies.\n *\n * @param {object} [options]\n * @return {function}\n * @public\n */\n\nfunction json (options) {\n var opts = options || {}\n\n var limit = typeof opts.limit !== 'number'\n ? bytes.parse(opts.limit || '100kb')\n : opts.limit\n var inflate = opts.inflate !== false\n var reviver = opts.reviver\n var strict = opts.strict !== false\n var type = opts.type || 'application/json'\n var verify = opts.verify || false\n\n if (verify !== false && typeof verify !== 'function') {\n throw new TypeError('option verify must be function')\n }\n\n // create the appropriate type checking function\n var shouldParse = typeof type !== 'function'\n ? typeChecker(type)\n : type\n\n function parse (body) {\n if (body.length === 0) {\n // special-case empty json body, as it's a common client-side mistake\n // TODO: maybe make this configurable or part of \"strict\" option\n return {}\n }\n\n if (strict) {\n var first = firstchar(body)\n\n if (first !== '{' && first !== '[') {\n debug('strict violation')\n throw createStrictSyntaxError(body, first)\n }\n }\n\n try {\n debug('parse json')\n return JSON.parse(body, reviver)\n } catch (e) {\n throw normalizeJsonSyntaxError(e, {\n message: e.message,\n stack: e.stack\n })\n }\n }\n\n return function jsonParser (req, res, next) {\n if (req._body) {\n debug('body already parsed')\n next()\n return\n }\n\n req.body = req.body || {}\n\n // skip requests without bodies\n if (!typeis.hasBody(req)) {\n debug('skip empty body')\n next()\n return\n }\n\n debug('content-type %j', req.headers['content-type'])\n\n // determine if request should be parsed\n if (!shouldParse(req)) {\n debug('skip parsing')\n next()\n return\n }\n\n // assert charset per RFC 7159 sec 8.1\n var charset = getCharset(req) || 'utf-8'\n if (charset.slice(0, 4) !== 'utf-') {\n debug('invalid charset')\n next(createError(415, 'unsupported charset \"' + charset.toUpperCase() + '\"', {\n charset: charset,\n type: 'charset.unsupported'\n }))\n return\n }\n\n // read\n read(req, res, next, parse, debug, {\n encoding: charset,\n inflate: inflate,\n limit: limit,\n verify: verify\n })\n }\n}\n\n/**\n * Create strict violation syntax error matching native error.\n *\n * @param {string} str\n * @param {string} char\n * @return {Error}\n * @private\n */\n\nfunction createStrictSyntaxError (str, char) {\n var index = str.indexOf(char)\n var partial = index !== -1\n ? str.substring(0, index) + '#'\n : ''\n\n try {\n JSON.parse(partial); /* istanbul ignore next */ throw new SyntaxError('strict violation')\n } catch (e) {\n return normalizeJsonSyntaxError(e, {\n message: e.message.replace('#', char),\n stack: e.stack\n })\n }\n}\n\n/**\n * Get the first non-whitespace character in a string.\n *\n * @param {string} str\n * @return {function}\n * @private\n */\n\nfunction firstchar (str) {\n var match = FIRST_CHAR_REGEXP.exec(str)\n\n return match\n ? match[1]\n : undefined\n}\n\n/**\n * Get the charset of a request.\n *\n * @param {object} req\n * @api private\n */\n\nfunction getCharset (req) {\n try {\n return (contentType.parse(req).parameters.charset || '').toLowerCase()\n } catch (e) {\n return undefined\n }\n}\n\n/**\n * Normalize a SyntaxError for JSON.parse.\n *\n * @param {SyntaxError} error\n * @param {object} obj\n * @return {SyntaxError}\n */\n\nfunction normalizeJsonSyntaxError (error, obj) {\n var keys = Object.getOwnPropertyNames(error)\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n if (key !== 'stack' && key !== 'message') {\n delete error[key]\n }\n }\n\n // replace stack before message for Node.js 0.10 and below\n error.stack = obj.stack.replace(error.message, obj.message)\n error.message = obj.message\n\n return error\n}\n\n/**\n * Get the simple type checker.\n *\n * @param {string} type\n * @return {function}\n */\n\nfunction typeChecker (type) {\n return function checkType (req) {\n return Boolean(typeis(req, type))\n }\n}\n", "/*!\n * body-parser\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n */\n\nvar bytes = require('bytes')\nvar debug = require('debug')('body-parser:raw')\nvar read = require('../read')\nvar typeis = require('type-is')\n\n/**\n * Module exports.\n */\n\nmodule.exports = raw\n\n/**\n * Create a middleware to parse raw bodies.\n *\n * @param {object} [options]\n * @return {function}\n * @api public\n */\n\nfunction raw (options) {\n var opts = options || {}\n\n var inflate = opts.inflate !== false\n var limit = typeof opts.limit !== 'number'\n ? bytes.parse(opts.limit || '100kb')\n : opts.limit\n var type = opts.type || 'application/octet-stream'\n var verify = opts.verify || false\n\n if (verify !== false && typeof verify !== 'function') {\n throw new TypeError('option verify must be function')\n }\n\n // create the appropriate type checking function\n var shouldParse = typeof type !== 'function'\n ? typeChecker(type)\n : type\n\n function parse (buf) {\n return buf\n }\n\n return function rawParser (req, res, next) {\n if (req._body) {\n debug('body already parsed')\n next()\n return\n }\n\n req.body = req.body || {}\n\n // skip requests without bodies\n if (!typeis.hasBody(req)) {\n debug('skip empty body')\n next()\n return\n }\n\n debug('content-type %j', req.headers['content-type'])\n\n // determine if request should be parsed\n if (!shouldParse(req)) {\n debug('skip parsing')\n next()\n return\n }\n\n // read\n read(req, res, next, parse, debug, {\n encoding: null,\n inflate: inflate,\n limit: limit,\n verify: verify\n })\n }\n}\n\n/**\n * Get the simple type checker.\n *\n * @param {string} type\n * @return {function}\n */\n\nfunction typeChecker (type) {\n return function checkType (req) {\n return Boolean(typeis(req, type))\n }\n}\n", "/*!\n * body-parser\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n */\n\nvar bytes = require('bytes')\nvar contentType = require('content-type')\nvar debug = require('debug')('body-parser:text')\nvar read = require('../read')\nvar typeis = require('type-is')\n\n/**\n * Module exports.\n */\n\nmodule.exports = text\n\n/**\n * Create a middleware to parse text bodies.\n *\n * @param {object} [options]\n * @return {function}\n * @api public\n */\n\nfunction text (options) {\n var opts = options || {}\n\n var defaultCharset = opts.defaultCharset || 'utf-8'\n var inflate = opts.inflate !== false\n var limit = typeof opts.limit !== 'number'\n ? bytes.parse(opts.limit || '100kb')\n : opts.limit\n var type = opts.type || 'text/plain'\n var verify = opts.verify || false\n\n if (verify !== false && typeof verify !== 'function') {\n throw new TypeError('option verify must be function')\n }\n\n // create the appropriate type checking function\n var shouldParse = typeof type !== 'function'\n ? typeChecker(type)\n : type\n\n function parse (buf) {\n return buf\n }\n\n return function textParser (req, res, next) {\n if (req._body) {\n debug('body already parsed')\n next()\n return\n }\n\n req.body = req.body || {}\n\n // skip requests without bodies\n if (!typeis.hasBody(req)) {\n debug('skip empty body')\n next()\n return\n }\n\n debug('content-type %j', req.headers['content-type'])\n\n // determine if request should be parsed\n if (!shouldParse(req)) {\n debug('skip parsing')\n next()\n return\n }\n\n // get charset\n var charset = getCharset(req) || defaultCharset\n\n // read\n read(req, res, next, parse, debug, {\n encoding: charset,\n inflate: inflate,\n limit: limit,\n verify: verify\n })\n }\n}\n\n/**\n * Get the charset of a request.\n *\n * @param {object} req\n * @api private\n */\n\nfunction getCharset (req) {\n try {\n return (contentType.parse(req).parameters.charset || '').toLowerCase()\n } catch (e) {\n return undefined\n }\n}\n\n/**\n * Get the simple type checker.\n *\n * @param {string} type\n * @return {function}\n */\n\nfunction typeChecker (type) {\n return function checkType (req) {\n return Boolean(typeis(req, type))\n }\n}\n", "'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n", "'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n", "'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n", "'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n", "'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\ntry {\n\tnull.error; // eslint-disable-line no-unused-expressions\n} catch (e) {\n\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\tvar errorProto = getProto(getProto(e));\n\tINTRINSICS['%Error.prototype%'] = errorProto;\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n", "'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n", "module.exports = require('util').inspect;\n", "var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n", "'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n", "'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n", "'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n var valuesArray = split.call(String(obj), ',');\n var valuesJoined = '';\n for (var i = 0; i < valuesArray.length; ++i) {\n valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));\n }\n return [formatter(keyValue) + (commaRoundTrip && isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined];\n }\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('\u2713')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n", "'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the \u2713 character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the \u2713 character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('\u2713')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n", "'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n", "/*!\n * body-parser\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar bytes = require('bytes')\nvar contentType = require('content-type')\nvar createError = require('http-errors')\nvar debug = require('debug')('body-parser:urlencoded')\nvar deprecate = require('depd')('body-parser')\nvar read = require('../read')\nvar typeis = require('type-is')\n\n/**\n * Module exports.\n */\n\nmodule.exports = urlencoded\n\n/**\n * Cache of parser modules.\n */\n\nvar parsers = Object.create(null)\n\n/**\n * Create a middleware to parse urlencoded bodies.\n *\n * @param {object} [options]\n * @return {function}\n * @public\n */\n\nfunction urlencoded (options) {\n var opts = options || {}\n\n // notice because option default will flip in next major\n if (opts.extended === undefined) {\n deprecate('undefined extended: provide extended option')\n }\n\n var extended = opts.extended !== false\n var inflate = opts.inflate !== false\n var limit = typeof opts.limit !== 'number'\n ? bytes.parse(opts.limit || '100kb')\n : opts.limit\n var type = opts.type || 'application/x-www-form-urlencoded'\n var verify = opts.verify || false\n\n if (verify !== false && typeof verify !== 'function') {\n throw new TypeError('option verify must be function')\n }\n\n // create the appropriate query parser\n var queryparse = extended\n ? extendedparser(opts)\n : simpleparser(opts)\n\n // create the appropriate type checking function\n var shouldParse = typeof type !== 'function'\n ? typeChecker(type)\n : type\n\n function parse (body) {\n return body.length\n ? queryparse(body)\n : {}\n }\n\n return function urlencodedParser (req, res, next) {\n if (req._body) {\n debug('body already parsed')\n next()\n return\n }\n\n req.body = req.body || {}\n\n // skip requests without bodies\n if (!typeis.hasBody(req)) {\n debug('skip empty body')\n next()\n return\n }\n\n debug('content-type %j', req.headers['content-type'])\n\n // determine if request should be parsed\n if (!shouldParse(req)) {\n debug('skip parsing')\n next()\n return\n }\n\n // assert charset\n var charset = getCharset(req) || 'utf-8'\n if (charset !== 'utf-8') {\n debug('invalid charset')\n next(createError(415, 'unsupported charset \"' + charset.toUpperCase() + '\"', {\n charset: charset,\n type: 'charset.unsupported'\n }))\n return\n }\n\n // read\n read(req, res, next, parse, debug, {\n debug: debug,\n encoding: charset,\n inflate: inflate,\n limit: limit,\n verify: verify\n })\n }\n}\n\n/**\n * Get the extended query parser.\n *\n * @param {object} options\n */\n\nfunction extendedparser (options) {\n var parameterLimit = options.parameterLimit !== undefined\n ? options.parameterLimit\n : 1000\n var parse = parser('qs')\n\n if (isNaN(parameterLimit) || parameterLimit < 1) {\n throw new TypeError('option parameterLimit must be a positive number')\n }\n\n if (isFinite(parameterLimit)) {\n parameterLimit = parameterLimit | 0\n }\n\n return function queryparse (body) {\n var paramCount = parameterCount(body, parameterLimit)\n\n if (paramCount === undefined) {\n debug('too many parameters')\n throw createError(413, 'too many parameters', {\n type: 'parameters.too.many'\n })\n }\n\n var arrayLimit = Math.max(100, paramCount)\n\n debug('parse extended urlencoding')\n return parse(body, {\n allowPrototypes: true,\n arrayLimit: arrayLimit,\n depth: Infinity,\n parameterLimit: parameterLimit\n })\n }\n}\n\n/**\n * Get the charset of a request.\n *\n * @param {object} req\n * @api private\n */\n\nfunction getCharset (req) {\n try {\n return (contentType.parse(req).parameters.charset || '').toLowerCase()\n } catch (e) {\n return undefined\n }\n}\n\n/**\n * Count the number of parameters, stopping once limit reached\n *\n * @param {string} body\n * @param {number} limit\n * @api private\n */\n\nfunction parameterCount (body, limit) {\n var count = 0\n var index = 0\n\n while ((index = body.indexOf('&', index)) !== -1) {\n count++\n index++\n\n if (count === limit) {\n return undefined\n }\n }\n\n return count\n}\n\n/**\n * Get parser for module name dynamically.\n *\n * @param {string} name\n * @return {function}\n * @api private\n */\n\nfunction parser (name) {\n var mod = parsers[name]\n\n if (mod !== undefined) {\n return mod.parse\n }\n\n // this uses a switch for static require analysis\n switch (name) {\n case 'qs':\n mod = require('qs')\n break\n case 'querystring':\n mod = require('querystring')\n break\n }\n\n // store to prevent invoking require()\n parsers[name] = mod\n\n return mod.parse\n}\n\n/**\n * Get the simple query parser.\n *\n * @param {object} options\n */\n\nfunction simpleparser (options) {\n var parameterLimit = options.parameterLimit !== undefined\n ? options.parameterLimit\n : 1000\n var parse = parser('querystring')\n\n if (isNaN(parameterLimit) || parameterLimit < 1) {\n throw new TypeError('option parameterLimit must be a positive number')\n }\n\n if (isFinite(parameterLimit)) {\n parameterLimit = parameterLimit | 0\n }\n\n return function queryparse (body) {\n var paramCount = parameterCount(body, parameterLimit)\n\n if (paramCount === undefined) {\n debug('too many parameters')\n throw createError(413, 'too many parameters', {\n type: 'parameters.too.many'\n })\n }\n\n debug('parse urlencoding')\n return parse(body, undefined, undefined, { maxKeys: parameterLimit })\n }\n}\n\n/**\n * Get the simple type checker.\n *\n * @param {string} type\n * @return {function}\n */\n\nfunction typeChecker (type) {\n return function checkType (req) {\n return Boolean(typeis(req, type))\n }\n}\n", "/*!\n * body-parser\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar deprecate = require('depd')('body-parser')\n\n/**\n * Cache of loaded parsers.\n * @private\n */\n\nvar parsers = Object.create(null)\n\n/**\n * @typedef Parsers\n * @type {function}\n * @property {function} json\n * @property {function} raw\n * @property {function} text\n * @property {function} urlencoded\n */\n\n/**\n * Module exports.\n * @type {Parsers}\n */\n\nexports = module.exports = deprecate.function(bodyParser,\n 'bodyParser: use individual json/urlencoded middlewares')\n\n/**\n * JSON parser.\n * @public\n */\n\nObject.defineProperty(exports, 'json', {\n configurable: true,\n enumerable: true,\n get: createParserGetter('json')\n})\n\n/**\n * Raw parser.\n * @public\n */\n\nObject.defineProperty(exports, 'raw', {\n configurable: true,\n enumerable: true,\n get: createParserGetter('raw')\n})\n\n/**\n * Text parser.\n * @public\n */\n\nObject.defineProperty(exports, 'text', {\n configurable: true,\n enumerable: true,\n get: createParserGetter('text')\n})\n\n/**\n * URL-encoded parser.\n * @public\n */\n\nObject.defineProperty(exports, 'urlencoded', {\n configurable: true,\n enumerable: true,\n get: createParserGetter('urlencoded')\n})\n\n/**\n * Create a middleware to parse json and urlencoded bodies.\n *\n * @param {object} [options]\n * @return {function}\n * @deprecated\n * @public\n */\n\nfunction bodyParser (options) {\n // use default type for parsers\n var opts = Object.create(options || null, {\n type: {\n configurable: true,\n enumerable: true,\n value: undefined,\n writable: true\n }\n })\n\n var _urlencoded = exports.urlencoded(opts)\n var _json = exports.json(opts)\n\n return function bodyParser (req, res, next) {\n _json(req, res, function (err) {\n if (err) return next(err)\n _urlencoded(req, res, next)\n })\n }\n}\n\n/**\n * Create a getter for loading a parser.\n * @private\n */\n\nfunction createParserGetter (name) {\n return function get () {\n return loadParser(name)\n }\n}\n\n/**\n * Load a parser module.\n * @private\n */\n\nfunction loadParser (parserName) {\n var parser = parsers[parserName]\n\n if (parser !== undefined) {\n return parser\n }\n\n // this uses a switch for static require analysis\n switch (parserName) {\n case 'json':\n parser = require('./lib/types/json')\n break\n case 'raw':\n parser = require('./lib/types/raw')\n break\n case 'text':\n parser = require('./lib/types/text')\n break\n case 'urlencoded':\n parser = require('./lib/types/urlencoded')\n break\n }\n\n // store to prevent invoking require()\n return (parsers[parserName] = parser)\n}\n", "/*!\n * merge-descriptors\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = merge\n\n/**\n * Module variables.\n * @private\n */\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty\n\n/**\n * Merge the property descriptors of `src` into `dest`\n *\n * @param {object} dest Object to add descriptors to\n * @param {object} src Object to clone descriptors from\n * @param {boolean} [redefine=true] Redefine `dest` properties with `src` properties\n * @returns {object} Reference to dest\n * @public\n */\n\nfunction merge(dest, src, redefine) {\n if (!dest) {\n throw new TypeError('argument dest is required')\n }\n\n if (!src) {\n throw new TypeError('argument src is required')\n }\n\n if (redefine === undefined) {\n // Default to true\n redefine = true\n }\n\n Object.getOwnPropertyNames(src).forEach(function forEachOwnPropertyName(name) {\n if (!redefine && hasOwnProperty.call(dest, name)) {\n // Skip desriptor\n return\n }\n\n // Copy descriptor\n var descriptor = Object.getOwnPropertyDescriptor(src, name)\n Object.defineProperty(dest, name, descriptor)\n })\n\n return dest\n}\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n", "/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n", "/**\n * Module dependencies.\n */\n\nvar tty = require('tty');\nvar util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(function (key) {\n return /^debug_/i.test(key);\n}).reduce(function (obj, key) {\n // camel-case\n var prop = key\n .substring(6)\n .toLowerCase()\n .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() });\n\n // coerce string value into JS value\n var val = process.env[key];\n if (/^(yes|on|true|enabled)$/i.test(val)) val = true;\n else if (/^(no|off|false|disabled)$/i.test(val)) val = false;\n else if (val === 'null') val = null;\n else val = Number(val);\n\n obj[prop] = val;\n return obj;\n}, {});\n\n/**\n * The file descriptor to write the `debug()` calls to.\n * Set the `DEBUG_FD` env variable to override with another value. i.e.:\n *\n * $ DEBUG_FD=3 node script.js 3>debug.log\n */\n\nvar fd = parseInt(process.env.DEBUG_FD, 10) || 2;\n\nif (1 !== fd && 2 !== fd) {\n util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')()\n}\n\nvar stream = 1 === fd ? process.stdout :\n 2 === fd ? process.stderr :\n createWritableStdioStream(fd);\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n return 'colors' in exports.inspectOpts\n ? Boolean(exports.inspectOpts.colors)\n : tty.isatty(fd);\n}\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nexports.formatters.o = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts)\n .split('\\n').map(function(str) {\n return str.trim()\n }).join(' ');\n};\n\n/**\n * Map %o to `util.inspect()`, allowing multiple lines if needed.\n */\n\nexports.formatters.O = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts);\n};\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var name = this.namespace;\n var useColors = this.useColors;\n\n if (useColors) {\n var c = this.color;\n var prefix = ' \\u001b[3' + c + ';1m' + name + ' ' + '\\u001b[0m';\n\n args[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n args.push('\\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\\u001b[0m');\n } else {\n args[0] = new Date().toUTCString()\n + ' ' + name + ' ' + args[0];\n }\n}\n\n/**\n * Invokes `util.format()` with the specified arguments and writes to `stream`.\n */\n\nfunction log() {\n return stream.write(util.format.apply(util, arguments) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n if (null == namespaces) {\n // If you set a process.env field to null or undefined, it gets cast to the\n // string 'null' or 'undefined'. Just delete instead.\n delete process.env.DEBUG;\n } else {\n process.env.DEBUG = namespaces;\n }\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n return process.env.DEBUG;\n}\n\n/**\n * Copied from `node/src/node.js`.\n *\n * XXX: It's lame that node doesn't expose this API out-of-the-box. It also\n * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame.\n */\n\nfunction createWritableStdioStream (fd) {\n var stream;\n var tty_wrap = process.binding('tty_wrap');\n\n // Note stream._type is used for test-module-load-list.js\n\n switch (tty_wrap.guessHandleType(fd)) {\n case 'TTY':\n stream = new tty.WriteStream(fd);\n stream._type = 'tty';\n\n // Hack to have stream not keep the event loop alive.\n // See https://github.com/joyent/node/issues/1726\n if (stream._handle && stream._handle.unref) {\n stream._handle.unref();\n }\n break;\n\n case 'FILE':\n var fs = require('fs');\n stream = new fs.SyncWriteStream(fd, { autoClose: false });\n stream._type = 'fs';\n break;\n\n case 'PIPE':\n case 'TCP':\n var net = require('net');\n stream = new net.Socket({\n fd: fd,\n readable: false,\n writable: true\n });\n\n // FIXME Should probably have an option in net.Socket to create a\n // stream from an existing fd which is writable only. But for now\n // we'll just add this hack and set the `readable` member to false.\n // Test: ./node test/fixtures/echo.js < /etc/passwd\n stream.readable = false;\n stream.read = null;\n stream._type = 'pipe';\n\n // FIXME Hack to have stream not keep the event loop alive.\n // See https://github.com/joyent/node/issues/1726\n if (stream._handle && stream._handle.unref) {\n stream._handle.unref();\n }\n break;\n\n default:\n // Probably an error on in uv_guess_handle()\n throw new Error('Implement me. Unknown stream file type!');\n }\n\n // For supporting legacy API we put the FD here.\n stream.fd = fd;\n\n stream._isStdio = true;\n\n return stream;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init (debug) {\n debug.inspectOpts = {};\n\n var keys = Object.keys(exports.inspectOpts);\n for (var i = 0; i < keys.length; i++) {\n debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n }\n}\n\n/**\n * Enable namespaces listed in `process.env.DEBUG` initially.\n */\n\nexports.enable(load());\n", "/**\n * Detect Electron renderer process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process !== 'undefined' && process.type === 'renderer') {\n module.exports = require('./browser.js');\n} else {\n module.exports = require('./node.js');\n}\n", "/*!\n * encodeurl\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = encodeUrl\n\n/**\n * RegExp to match non-URL code points, *after* encoding (i.e. not including \"%\")\n * and including invalid escape sequences.\n * @private\n */\n\nvar ENCODE_CHARS_REGEXP = /(?:[^\\x21\\x25\\x26-\\x3B\\x3D\\x3F-\\x5B\\x5D\\x5F\\x61-\\x7A\\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g\n\n/**\n * RegExp to match unmatched surrogate pair.\n * @private\n */\n\nvar UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\\uD800-\\uDBFF])[\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF]([^\\uDC00-\\uDFFF]|$)/g\n\n/**\n * String to replace unmatched surrogate pair with.\n * @private\n */\n\nvar UNMATCHED_SURROGATE_PAIR_REPLACE = '$1\\uFFFD$2'\n\n/**\n * Encode a URL to a percent-encoded form, excluding already-encoded sequences.\n *\n * This function will take an already-encoded URL and encode all the non-URL\n * code points. This function will not encode the \"%\" character unless it is\n * not part of a valid sequence (`%20` will be left as-is, but `%foo` will\n * be encoded as `%25foo`).\n *\n * This encode is meant to be \"safe\" and does not throw errors. It will try as\n * hard as it can to properly encode the given URL, including replacing any raw,\n * unpaired surrogate pairs with the Unicode replacement character prior to\n * encoding.\n *\n * @param {string} url\n * @return {string}\n * @public\n */\n\nfunction encodeUrl (url) {\n return String(url)\n .replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE)\n .replace(ENCODE_CHARS_REGEXP, encodeURI)\n}\n", "/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n", "/*!\n * parseurl\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar url = require('url')\nvar parse = url.parse\nvar Url = url.Url\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = parseurl\nmodule.exports.original = originalurl\n\n/**\n * Parse the `req` url with memoization.\n *\n * @param {ServerRequest} req\n * @return {Object}\n * @public\n */\n\nfunction parseurl (req) {\n var url = req.url\n\n if (url === undefined) {\n // URL is undefined\n return undefined\n }\n\n var parsed = req._parsedUrl\n\n if (fresh(url, parsed)) {\n // Return cached URL parse\n return parsed\n }\n\n // Parse the URL\n parsed = fastparse(url)\n parsed._raw = url\n\n return (req._parsedUrl = parsed)\n};\n\n/**\n * Parse the `req` original url with fallback and memoization.\n *\n * @param {ServerRequest} req\n * @return {Object}\n * @public\n */\n\nfunction originalurl (req) {\n var url = req.originalUrl\n\n if (typeof url !== 'string') {\n // Fallback\n return parseurl(req)\n }\n\n var parsed = req._parsedOriginalUrl\n\n if (fresh(url, parsed)) {\n // Return cached URL parse\n return parsed\n }\n\n // Parse the URL\n parsed = fastparse(url)\n parsed._raw = url\n\n return (req._parsedOriginalUrl = parsed)\n};\n\n/**\n * Parse the `str` url with fast-path short-cut.\n *\n * @param {string} str\n * @return {Object}\n * @private\n */\n\nfunction fastparse (str) {\n if (typeof str !== 'string' || str.charCodeAt(0) !== 0x2f /* / */) {\n return parse(str)\n }\n\n var pathname = str\n var query = null\n var search = null\n\n // This takes the regexp from https://github.com/joyent/node/pull/7878\n // Which is /^(\\/[^?#\\s]*)(\\?[^#\\s]*)?$/\n // And unrolls it into a for loop\n for (var i = 1; i < str.length; i++) {\n switch (str.charCodeAt(i)) {\n case 0x3f: /* ? */\n if (search === null) {\n pathname = str.substring(0, i)\n query = str.substring(i + 1)\n search = str.substring(i)\n }\n break\n case 0x09: /* \\t */\n case 0x0a: /* \\n */\n case 0x0c: /* \\f */\n case 0x0d: /* \\r */\n case 0x20: /* */\n case 0x23: /* # */\n case 0xa0:\n case 0xfeff:\n return parse(str)\n }\n }\n\n var url = Url !== undefined\n ? new Url()\n : {}\n\n url.path = str\n url.href = str\n url.pathname = pathname\n\n if (search !== null) {\n url.query = query\n url.search = search\n }\n\n return url\n}\n\n/**\n * Determine if parsed is still fresh for url.\n *\n * @param {string} url\n * @param {object} parsedUrl\n * @return {boolean}\n * @private\n */\n\nfunction fresh (url, parsedUrl) {\n return typeof parsedUrl === 'object' &&\n parsedUrl !== null &&\n (Url === undefined || parsedUrl instanceof Url) &&\n parsedUrl._raw === url\n}\n", "/*!\n * finalhandler\n * Copyright(c) 2014-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar debug = require('debug')('finalhandler')\nvar encodeUrl = require('encodeurl')\nvar escapeHtml = require('escape-html')\nvar onFinished = require('on-finished')\nvar parseUrl = require('parseurl')\nvar statuses = require('statuses')\nvar unpipe = require('unpipe')\n\n/**\n * Module variables.\n * @private\n */\n\nvar DOUBLE_SPACE_REGEXP = /\\x20{2}/g\nvar NEWLINE_REGEXP = /\\n/g\n\n/* istanbul ignore next */\nvar defer = typeof setImmediate === 'function'\n ? setImmediate\n : function (fn) { process.nextTick(fn.bind.apply(fn, arguments)) }\nvar isFinished = onFinished.isFinished\n\n/**\n * Create a minimal HTML document.\n *\n * @param {string} message\n * @private\n */\n\nfunction createHtmlDocument (message) {\n var body = escapeHtml(message)\n .replace(NEWLINE_REGEXP, '
')\n .replace(DOUBLE_SPACE_REGEXP, '  ')\n\n return '\\n' +\n '\\n' +\n '\\n' +\n '\\n' +\n 'Error\\n' +\n '\\n' +\n '\\n' +\n '
' + body + '
\\n' +\n '\\n' +\n '\\n'\n}\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = finalhandler\n\n/**\n * Create a function to handle the final response.\n *\n * @param {Request} req\n * @param {Response} res\n * @param {Object} [options]\n * @return {Function}\n * @public\n */\n\nfunction finalhandler (req, res, options) {\n var opts = options || {}\n\n // get environment\n var env = opts.env || process.env.NODE_ENV || 'development'\n\n // get error callback\n var onerror = opts.onerror\n\n return function (err) {\n var headers\n var msg\n var status\n\n // ignore 404 on in-flight response\n if (!err && headersSent(res)) {\n debug('cannot 404 after headers sent')\n return\n }\n\n // unhandled error\n if (err) {\n // respect status code from error\n status = getErrorStatusCode(err)\n\n if (status === undefined) {\n // fallback to status code on response\n status = getResponseStatusCode(res)\n } else {\n // respect headers from error\n headers = getErrorHeaders(err)\n }\n\n // get error message\n msg = getErrorMessage(err, status, env)\n } else {\n // not found\n status = 404\n msg = 'Cannot ' + req.method + ' ' + encodeUrl(getResourceName(req))\n }\n\n debug('default %s', status)\n\n // schedule onerror callback\n if (err && onerror) {\n defer(onerror, err, req, res)\n }\n\n // cannot actually respond\n if (headersSent(res)) {\n debug('cannot %d after headers sent', status)\n req.socket.destroy()\n return\n }\n\n // send response\n send(req, res, status, headers, msg)\n }\n}\n\n/**\n * Get headers from Error object.\n *\n * @param {Error} err\n * @return {object}\n * @private\n */\n\nfunction getErrorHeaders (err) {\n if (!err.headers || typeof err.headers !== 'object') {\n return undefined\n }\n\n var headers = Object.create(null)\n var keys = Object.keys(err.headers)\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n headers[key] = err.headers[key]\n }\n\n return headers\n}\n\n/**\n * Get message from Error object, fallback to status message.\n *\n * @param {Error} err\n * @param {number} status\n * @param {string} env\n * @return {string}\n * @private\n */\n\nfunction getErrorMessage (err, status, env) {\n var msg\n\n if (env !== 'production') {\n // use err.stack, which typically includes err.message\n msg = err.stack\n\n // fallback to err.toString() when possible\n if (!msg && typeof err.toString === 'function') {\n msg = err.toString()\n }\n }\n\n return msg || statuses.message[status]\n}\n\n/**\n * Get status code from Error object.\n *\n * @param {Error} err\n * @return {number}\n * @private\n */\n\nfunction getErrorStatusCode (err) {\n // check err.status\n if (typeof err.status === 'number' && err.status >= 400 && err.status < 600) {\n return err.status\n }\n\n // check err.statusCode\n if (typeof err.statusCode === 'number' && err.statusCode >= 400 && err.statusCode < 600) {\n return err.statusCode\n }\n\n return undefined\n}\n\n/**\n * Get resource name for the request.\n *\n * This is typically just the original pathname of the request\n * but will fallback to \"resource\" is that cannot be determined.\n *\n * @param {IncomingMessage} req\n * @return {string}\n * @private\n */\n\nfunction getResourceName (req) {\n try {\n return parseUrl.original(req).pathname\n } catch (e) {\n return 'resource'\n }\n}\n\n/**\n * Get status code from response.\n *\n * @param {OutgoingMessage} res\n * @return {number}\n * @private\n */\n\nfunction getResponseStatusCode (res) {\n var status = res.statusCode\n\n // default status code to 500 if outside valid range\n if (typeof status !== 'number' || status < 400 || status > 599) {\n status = 500\n }\n\n return status\n}\n\n/**\n * Determine if the response headers have been sent.\n *\n * @param {object} res\n * @returns {boolean}\n * @private\n */\n\nfunction headersSent (res) {\n return typeof res.headersSent !== 'boolean'\n ? Boolean(res._header)\n : res.headersSent\n}\n\n/**\n * Send response.\n *\n * @param {IncomingMessage} req\n * @param {OutgoingMessage} res\n * @param {number} status\n * @param {object} headers\n * @param {string} message\n * @private\n */\n\nfunction send (req, res, status, headers, message) {\n function write () {\n // response body\n var body = createHtmlDocument(message)\n\n // response status\n res.statusCode = status\n res.statusMessage = statuses.message[status]\n\n // remove any content headers\n res.removeHeader('Content-Encoding')\n res.removeHeader('Content-Language')\n res.removeHeader('Content-Range')\n\n // response headers\n setHeaders(res, headers)\n\n // security headers\n res.setHeader('Content-Security-Policy', \"default-src 'none'\")\n res.setHeader('X-Content-Type-Options', 'nosniff')\n\n // standard headers\n res.setHeader('Content-Type', 'text/html; charset=utf-8')\n res.setHeader('Content-Length', Buffer.byteLength(body, 'utf8'))\n\n if (req.method === 'HEAD') {\n res.end()\n return\n }\n\n res.end(body, 'utf8')\n }\n\n if (isFinished(req)) {\n write()\n return\n }\n\n // unpipe everything from the request\n unpipe(req)\n\n // flush the request\n onFinished(req, write)\n req.resume()\n}\n\n/**\n * Set response headers from an object.\n *\n * @param {OutgoingMessage} res\n * @param {object} headers\n * @private\n */\n\nfunction setHeaders (res, headers) {\n if (!headers) {\n return\n }\n\n var keys = Object.keys(headers)\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n res.setHeader(key, headers[key])\n }\n}\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n", "/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n", "/**\n * Module dependencies.\n */\n\nvar tty = require('tty');\nvar util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(function (key) {\n return /^debug_/i.test(key);\n}).reduce(function (obj, key) {\n // camel-case\n var prop = key\n .substring(6)\n .toLowerCase()\n .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() });\n\n // coerce string value into JS value\n var val = process.env[key];\n if (/^(yes|on|true|enabled)$/i.test(val)) val = true;\n else if (/^(no|off|false|disabled)$/i.test(val)) val = false;\n else if (val === 'null') val = null;\n else val = Number(val);\n\n obj[prop] = val;\n return obj;\n}, {});\n\n/**\n * The file descriptor to write the `debug()` calls to.\n * Set the `DEBUG_FD` env variable to override with another value. i.e.:\n *\n * $ DEBUG_FD=3 node script.js 3>debug.log\n */\n\nvar fd = parseInt(process.env.DEBUG_FD, 10) || 2;\n\nif (1 !== fd && 2 !== fd) {\n util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')()\n}\n\nvar stream = 1 === fd ? process.stdout :\n 2 === fd ? process.stderr :\n createWritableStdioStream(fd);\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n return 'colors' in exports.inspectOpts\n ? Boolean(exports.inspectOpts.colors)\n : tty.isatty(fd);\n}\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nexports.formatters.o = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts)\n .split('\\n').map(function(str) {\n return str.trim()\n }).join(' ');\n};\n\n/**\n * Map %o to `util.inspect()`, allowing multiple lines if needed.\n */\n\nexports.formatters.O = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts);\n};\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var name = this.namespace;\n var useColors = this.useColors;\n\n if (useColors) {\n var c = this.color;\n var prefix = ' \\u001b[3' + c + ';1m' + name + ' ' + '\\u001b[0m';\n\n args[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n args.push('\\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\\u001b[0m');\n } else {\n args[0] = new Date().toUTCString()\n + ' ' + name + ' ' + args[0];\n }\n}\n\n/**\n * Invokes `util.format()` with the specified arguments and writes to `stream`.\n */\n\nfunction log() {\n return stream.write(util.format.apply(util, arguments) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n if (null == namespaces) {\n // If you set a process.env field to null or undefined, it gets cast to the\n // string 'null' or 'undefined'. Just delete instead.\n delete process.env.DEBUG;\n } else {\n process.env.DEBUG = namespaces;\n }\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n return process.env.DEBUG;\n}\n\n/**\n * Copied from `node/src/node.js`.\n *\n * XXX: It's lame that node doesn't expose this API out-of-the-box. It also\n * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame.\n */\n\nfunction createWritableStdioStream (fd) {\n var stream;\n var tty_wrap = process.binding('tty_wrap');\n\n // Note stream._type is used for test-module-load-list.js\n\n switch (tty_wrap.guessHandleType(fd)) {\n case 'TTY':\n stream = new tty.WriteStream(fd);\n stream._type = 'tty';\n\n // Hack to have stream not keep the event loop alive.\n // See https://github.com/joyent/node/issues/1726\n if (stream._handle && stream._handle.unref) {\n stream._handle.unref();\n }\n break;\n\n case 'FILE':\n var fs = require('fs');\n stream = new fs.SyncWriteStream(fd, { autoClose: false });\n stream._type = 'fs';\n break;\n\n case 'PIPE':\n case 'TCP':\n var net = require('net');\n stream = new net.Socket({\n fd: fd,\n readable: false,\n writable: true\n });\n\n // FIXME Should probably have an option in net.Socket to create a\n // stream from an existing fd which is writable only. But for now\n // we'll just add this hack and set the `readable` member to false.\n // Test: ./node test/fixtures/echo.js < /etc/passwd\n stream.readable = false;\n stream.read = null;\n stream._type = 'pipe';\n\n // FIXME Hack to have stream not keep the event loop alive.\n // See https://github.com/joyent/node/issues/1726\n if (stream._handle && stream._handle.unref) {\n stream._handle.unref();\n }\n break;\n\n default:\n // Probably an error on in uv_guess_handle()\n throw new Error('Implement me. Unknown stream file type!');\n }\n\n // For supporting legacy API we put the FD here.\n stream.fd = fd;\n\n stream._isStdio = true;\n\n return stream;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init (debug) {\n debug.inspectOpts = {};\n\n var keys = Object.keys(exports.inspectOpts);\n for (var i = 0; i < keys.length; i++) {\n debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n }\n}\n\n/**\n * Enable namespaces listed in `process.env.DEBUG` initially.\n */\n\nexports.enable(load());\n", "/**\n * Detect Electron renderer process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process !== 'undefined' && process.type === 'renderer') {\n module.exports = require('./browser.js');\n} else {\n module.exports = require('./node.js');\n}\n", "'use strict'\n\n/**\n * Expose `arrayFlatten`.\n */\nmodule.exports = arrayFlatten\n\n/**\n * Recursive flatten function with depth.\n *\n * @param {Array} array\n * @param {Array} result\n * @param {Number} depth\n * @return {Array}\n */\nfunction flattenWithDepth (array, result, depth) {\n for (var i = 0; i < array.length; i++) {\n var value = array[i]\n\n if (depth > 0 && Array.isArray(value)) {\n flattenWithDepth(value, result, depth - 1)\n } else {\n result.push(value)\n }\n }\n\n return result\n}\n\n/**\n * Recursive flatten function. Omitting depth is slightly faster.\n *\n * @param {Array} array\n * @param {Array} result\n * @return {Array}\n */\nfunction flattenForever (array, result) {\n for (var i = 0; i < array.length; i++) {\n var value = array[i]\n\n if (Array.isArray(value)) {\n flattenForever(value, result)\n } else {\n result.push(value)\n }\n }\n\n return result\n}\n\n/**\n * Flatten an array, with the ability to define a depth.\n *\n * @param {Array} array\n * @param {Number} depth\n * @return {Array}\n */\nfunction arrayFlatten (array, depth) {\n if (depth == null) {\n return flattenForever(array, [])\n }\n\n return flattenWithDepth(array, [], depth)\n}\n", "/**\n * Expose `pathtoRegexp`.\n */\n\nmodule.exports = pathtoRegexp;\n\n/**\n * Match matching groups in a regular expression.\n */\nvar MATCHING_GROUP_REGEXP = /\\((?!\\?)/g;\n\n/**\n * Normalize the given path string,\n * returning a regular expression.\n *\n * An empty array should be passed,\n * which will contain the placeholder\n * key names. For example \"/user/:id\" will\n * then contain [\"id\"].\n *\n * @param {String|RegExp|Array} path\n * @param {Array} keys\n * @param {Object} options\n * @return {RegExp}\n * @api private\n */\n\nfunction pathtoRegexp(path, keys, options) {\n options = options || {};\n keys = keys || [];\n var strict = options.strict;\n var end = options.end !== false;\n var flags = options.sensitive ? '' : 'i';\n var extraOffset = 0;\n var keysOffset = keys.length;\n var i = 0;\n var name = 0;\n var m;\n\n if (path instanceof RegExp) {\n while (m = MATCHING_GROUP_REGEXP.exec(path.source)) {\n keys.push({\n name: name++,\n optional: false,\n offset: m.index\n });\n }\n\n return path;\n }\n\n if (Array.isArray(path)) {\n // Map array parts into regexps and return their source. We also pass\n // the same keys and options instance into every generation to get\n // consistent matching groups before we join the sources together.\n path = path.map(function (value) {\n return pathtoRegexp(value, keys, options).source;\n });\n\n return new RegExp('(?:' + path.join('|') + ')', flags);\n }\n\n path = ('^' + path + (strict ? '' : path[path.length - 1] === '/' ? '?' : '/?'))\n .replace(/\\/\\(/g, '/(?:')\n .replace(/([\\/\\.])/g, '\\\\$1')\n .replace(/(\\\\\\/)?(\\\\\\.)?:(\\w+)(\\(.*?\\))?(\\*)?(\\?)?/g, function (match, slash, format, key, capture, star, optional, offset) {\n slash = slash || '';\n format = format || '';\n capture = capture || '([^\\\\/' + format + ']+?)';\n optional = optional || '';\n\n keys.push({\n name: key,\n optional: !!optional,\n offset: offset + extraOffset\n });\n\n var result = ''\n + (optional ? '' : slash)\n + '(?:'\n + format + (optional ? slash : '') + capture\n + (star ? '((?:[\\\\/' + format + '].+?)?)' : '')\n + ')'\n + optional;\n\n extraOffset += result.length - match.length;\n\n return result;\n })\n .replace(/\\*/g, function (star, index) {\n var len = keys.length\n\n while (len-- > keysOffset && keys[len].offset > index) {\n keys[len].offset += 3; // Replacement length minus asterisk length.\n }\n\n return '(.*)';\n });\n\n // This is a workaround for handling unnamed matching groups.\n while (m = MATCHING_GROUP_REGEXP.exec(path)) {\n var escapeCount = 0;\n var index = m.index;\n\n while (path.charAt(--index) === '\\\\') {\n escapeCount++;\n }\n\n // It's possible to escape the bracket.\n if (escapeCount % 2 === 1) {\n continue;\n }\n\n if (keysOffset + i === keys.length || keys[keysOffset + i].offset > m.index) {\n keys.splice(keysOffset + i, 0, {\n name: name++, // Unnamed matching groups must be consistently linear.\n optional: false,\n offset: m.index\n });\n }\n\n i++;\n }\n\n // If the path is non-ending, match until the end or a slash.\n path += (end ? '$' : (path[path.length - 1] === '/' ? '' : '(?=\\\\/|$)'));\n\n return new RegExp(path, flags);\n};\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar pathRegexp = require('path-to-regexp');\nvar debug = require('debug')('express:router:layer');\n\n/**\n * Module variables.\n * @private\n */\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = Layer;\n\nfunction Layer(path, options, fn) {\n if (!(this instanceof Layer)) {\n return new Layer(path, options, fn);\n }\n\n debug('new %o', path)\n var opts = options || {};\n\n this.handle = fn;\n this.name = fn.name || '';\n this.params = undefined;\n this.path = undefined;\n this.regexp = pathRegexp(path, this.keys = [], opts);\n\n // set fast path flags\n this.regexp.fast_star = path === '*'\n this.regexp.fast_slash = path === '/' && opts.end === false\n}\n\n/**\n * Handle the error for the layer.\n *\n * @param {Error} error\n * @param {Request} req\n * @param {Response} res\n * @param {function} next\n * @api private\n */\n\nLayer.prototype.handle_error = function handle_error(error, req, res, next) {\n var fn = this.handle;\n\n if (fn.length !== 4) {\n // not a standard error handler\n return next(error);\n }\n\n try {\n fn(error, req, res, next);\n } catch (err) {\n next(err);\n }\n};\n\n/**\n * Handle the request for the layer.\n *\n * @param {Request} req\n * @param {Response} res\n * @param {function} next\n * @api private\n */\n\nLayer.prototype.handle_request = function handle(req, res, next) {\n var fn = this.handle;\n\n if (fn.length > 3) {\n // not a standard request handler\n return next();\n }\n\n try {\n fn(req, res, next);\n } catch (err) {\n next(err);\n }\n};\n\n/**\n * Check if this route matches `path`, if so\n * populate `.params`.\n *\n * @param {String} path\n * @return {Boolean}\n * @api private\n */\n\nLayer.prototype.match = function match(path) {\n var match\n\n if (path != null) {\n // fast path non-ending match for / (any path matches)\n if (this.regexp.fast_slash) {\n this.params = {}\n this.path = ''\n return true\n }\n\n // fast path for * (everything matched in a param)\n if (this.regexp.fast_star) {\n this.params = {'0': decode_param(path)}\n this.path = path\n return true\n }\n\n // match the path\n match = this.regexp.exec(path)\n }\n\n if (!match) {\n this.params = undefined;\n this.path = undefined;\n return false;\n }\n\n // store values\n this.params = {};\n this.path = match[0]\n\n var keys = this.keys;\n var params = this.params;\n\n for (var i = 1; i < match.length; i++) {\n var key = keys[i - 1];\n var prop = key.name;\n var val = decode_param(match[i])\n\n if (val !== undefined || !(hasOwnProperty.call(params, prop))) {\n params[prop] = val;\n }\n }\n\n return true;\n};\n\n/**\n * Decode param value.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction decode_param(val) {\n if (typeof val !== 'string' || val.length === 0) {\n return val;\n }\n\n try {\n return decodeURIComponent(val);\n } catch (err) {\n if (err instanceof URIError) {\n err.message = 'Failed to decode param \\'' + val + '\\'';\n err.status = err.statusCode = 400;\n }\n\n throw err;\n }\n}\n", "/*!\n * methods\n * Copyright(c) 2013-2014 TJ Holowaychuk\n * Copyright(c) 2015-2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar http = require('http');\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = getCurrentNodeMethods() || getBasicNodeMethods();\n\n/**\n * Get the current Node.js methods.\n * @private\n */\n\nfunction getCurrentNodeMethods() {\n return http.METHODS && http.METHODS.map(function lowerCaseMethod(method) {\n return method.toLowerCase();\n });\n}\n\n/**\n * Get the \"basic\" Node.js methods, a snapshot from Node.js 0.10.\n * @private\n */\n\nfunction getBasicNodeMethods() {\n return [\n 'get',\n 'post',\n 'put',\n 'head',\n 'delete',\n 'options',\n 'trace',\n 'copy',\n 'lock',\n 'mkcol',\n 'move',\n 'purge',\n 'propfind',\n 'proppatch',\n 'unlock',\n 'report',\n 'mkactivity',\n 'checkout',\n 'merge',\n 'm-search',\n 'notify',\n 'subscribe',\n 'unsubscribe',\n 'patch',\n 'search',\n 'connect'\n ];\n}\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar debug = require('debug')('express:router:route');\nvar flatten = require('array-flatten');\nvar Layer = require('./layer');\nvar methods = require('methods');\n\n/**\n * Module variables.\n * @private\n */\n\nvar slice = Array.prototype.slice;\nvar toString = Object.prototype.toString;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = Route;\n\n/**\n * Initialize `Route` with the given `path`,\n *\n * @param {String} path\n * @public\n */\n\nfunction Route(path) {\n this.path = path;\n this.stack = [];\n\n debug('new %o', path)\n\n // route handlers for various http methods\n this.methods = {};\n}\n\n/**\n * Determine if the route handles a given method.\n * @private\n */\n\nRoute.prototype._handles_method = function _handles_method(method) {\n if (this.methods._all) {\n return true;\n }\n\n var name = method.toLowerCase();\n\n if (name === 'head' && !this.methods['head']) {\n name = 'get';\n }\n\n return Boolean(this.methods[name]);\n};\n\n/**\n * @return {Array} supported HTTP methods\n * @private\n */\n\nRoute.prototype._options = function _options() {\n var methods = Object.keys(this.methods);\n\n // append automatic head\n if (this.methods.get && !this.methods.head) {\n methods.push('head');\n }\n\n for (var i = 0; i < methods.length; i++) {\n // make upper case\n methods[i] = methods[i].toUpperCase();\n }\n\n return methods;\n};\n\n/**\n * dispatch req, res into this route\n * @private\n */\n\nRoute.prototype.dispatch = function dispatch(req, res, done) {\n var idx = 0;\n var stack = this.stack;\n var sync = 0\n\n if (stack.length === 0) {\n return done();\n }\n\n var method = req.method.toLowerCase();\n if (method === 'head' && !this.methods['head']) {\n method = 'get';\n }\n\n req.route = this;\n\n next();\n\n function next(err) {\n // signal to exit route\n if (err && err === 'route') {\n return done();\n }\n\n // signal to exit router\n if (err && err === 'router') {\n return done(err)\n }\n\n // max sync stack\n if (++sync > 100) {\n return setImmediate(next, err)\n }\n\n var layer = stack[idx++]\n\n // end of layers\n if (!layer) {\n return done(err)\n }\n\n if (layer.method && layer.method !== method) {\n next(err)\n } else if (err) {\n layer.handle_error(err, req, res, next);\n } else {\n layer.handle_request(req, res, next);\n }\n\n sync = 0\n }\n};\n\n/**\n * Add a handler for all HTTP verbs to this route.\n *\n * Behaves just like middleware and can respond or call `next`\n * to continue processing.\n *\n * You can use multiple `.all` call to add multiple handlers.\n *\n * function check_something(req, res, next){\n * next();\n * };\n *\n * function validate_user(req, res, next){\n * next();\n * };\n *\n * route\n * .all(validate_user)\n * .all(check_something)\n * .get(function(req, res, next){\n * res.send('hello world');\n * });\n *\n * @param {function} handler\n * @return {Route} for chaining\n * @api public\n */\n\nRoute.prototype.all = function all() {\n var handles = flatten(slice.call(arguments));\n\n for (var i = 0; i < handles.length; i++) {\n var handle = handles[i];\n\n if (typeof handle !== 'function') {\n var type = toString.call(handle);\n var msg = 'Route.all() requires a callback function but got a ' + type\n throw new TypeError(msg);\n }\n\n var layer = Layer('/', {}, handle);\n layer.method = undefined;\n\n this.methods._all = true;\n this.stack.push(layer);\n }\n\n return this;\n};\n\nmethods.forEach(function(method){\n Route.prototype[method] = function(){\n var handles = flatten(slice.call(arguments));\n\n for (var i = 0; i < handles.length; i++) {\n var handle = handles[i];\n\n if (typeof handle !== 'function') {\n var type = toString.call(handle);\n var msg = 'Route.' + method + '() requires a callback function but got a ' + type\n throw new Error(msg);\n }\n\n debug('%s %o', method, this.path)\n\n var layer = Layer('/', {}, handle);\n layer.method = method;\n\n this.methods[method] = true;\n this.stack.push(layer);\n }\n\n return this;\n };\n});\n", "/**\n * Merge object b with object a.\n *\n * var a = { foo: 'bar' }\n * , b = { bar: 'baz' };\n *\n * merge(a, b);\n * // => { foo: 'bar', bar: 'baz' }\n *\n * @param {Object} a\n * @param {Object} b\n * @return {Object}\n * @api public\n */\n\nexports = module.exports = function(a, b){\n if (a && b) {\n for (var key in b) {\n a[key] = b[key];\n }\n }\n return a;\n};\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar Route = require('./route');\nvar Layer = require('./layer');\nvar methods = require('methods');\nvar mixin = require('utils-merge');\nvar debug = require('debug')('express:router');\nvar deprecate = require('depd')('express');\nvar flatten = require('array-flatten');\nvar parseUrl = require('parseurl');\nvar setPrototypeOf = require('setprototypeof')\n\n/**\n * Module variables.\n * @private\n */\n\nvar objectRegExp = /^\\[object (\\S+)\\]$/;\nvar slice = Array.prototype.slice;\nvar toString = Object.prototype.toString;\n\n/**\n * Initialize a new `Router` with the given `options`.\n *\n * @param {Object} [options]\n * @return {Router} which is an callable function\n * @public\n */\n\nvar proto = module.exports = function(options) {\n var opts = options || {};\n\n function router(req, res, next) {\n router.handle(req, res, next);\n }\n\n // mixin Router class functions\n setPrototypeOf(router, proto)\n\n router.params = {};\n router._params = [];\n router.caseSensitive = opts.caseSensitive;\n router.mergeParams = opts.mergeParams;\n router.strict = opts.strict;\n router.stack = [];\n\n return router;\n};\n\n/**\n * Map the given param placeholder `name`(s) to the given callback.\n *\n * Parameter mapping is used to provide pre-conditions to routes\n * which use normalized placeholders. For example a _:user_id_ parameter\n * could automatically load a user's information from the database without\n * any additional code,\n *\n * The callback uses the same signature as middleware, the only difference\n * being that the value of the placeholder is passed, in this case the _id_\n * of the user. Once the `next()` function is invoked, just like middleware\n * it will continue on to execute the route, or subsequent parameter functions.\n *\n * Just like in middleware, you must either respond to the request or call next\n * to avoid stalling the request.\n *\n * app.param('user_id', function(req, res, next, id){\n * User.find(id, function(err, user){\n * if (err) {\n * return next(err);\n * } else if (!user) {\n * return next(new Error('failed to load user'));\n * }\n * req.user = user;\n * next();\n * });\n * });\n *\n * @param {String} name\n * @param {Function} fn\n * @return {app} for chaining\n * @public\n */\n\nproto.param = function param(name, fn) {\n // param logic\n if (typeof name === 'function') {\n deprecate('router.param(fn): Refactor to use path params');\n this._params.push(name);\n return;\n }\n\n // apply param functions\n var params = this._params;\n var len = params.length;\n var ret;\n\n if (name[0] === ':') {\n deprecate('router.param(' + JSON.stringify(name) + ', fn): Use router.param(' + JSON.stringify(name.slice(1)) + ', fn) instead')\n name = name.slice(1)\n }\n\n for (var i = 0; i < len; ++i) {\n if (ret = params[i](name, fn)) {\n fn = ret;\n }\n }\n\n // ensure we end up with a\n // middleware function\n if ('function' !== typeof fn) {\n throw new Error('invalid param() call for ' + name + ', got ' + fn);\n }\n\n (this.params[name] = this.params[name] || []).push(fn);\n return this;\n};\n\n/**\n * Dispatch a req, res into the router.\n * @private\n */\n\nproto.handle = function handle(req, res, out) {\n var self = this;\n\n debug('dispatching %s %s', req.method, req.url);\n\n var idx = 0;\n var protohost = getProtohost(req.url) || ''\n var removed = '';\n var slashAdded = false;\n var sync = 0\n var paramcalled = {};\n\n // store options for OPTIONS request\n // only used if OPTIONS request\n var options = [];\n\n // middleware and routes\n var stack = self.stack;\n\n // manage inter-router variables\n var parentParams = req.params;\n var parentUrl = req.baseUrl || '';\n var done = restore(out, req, 'baseUrl', 'next', 'params');\n\n // setup next layer\n req.next = next;\n\n // for options requests, respond with a default if nothing else responds\n if (req.method === 'OPTIONS') {\n done = wrap(done, function(old, err) {\n if (err || options.length === 0) return old(err);\n sendOptionsResponse(res, options, old);\n });\n }\n\n // setup basic req values\n req.baseUrl = parentUrl;\n req.originalUrl = req.originalUrl || req.url;\n\n next();\n\n function next(err) {\n var layerError = err === 'route'\n ? null\n : err;\n\n // remove added slash\n if (slashAdded) {\n req.url = req.url.slice(1)\n slashAdded = false;\n }\n\n // restore altered req.url\n if (removed.length !== 0) {\n req.baseUrl = parentUrl;\n req.url = protohost + removed + req.url.slice(protohost.length)\n removed = '';\n }\n\n // signal to exit router\n if (layerError === 'router') {\n setImmediate(done, null)\n return\n }\n\n // no more matching layers\n if (idx >= stack.length) {\n setImmediate(done, layerError);\n return;\n }\n\n // max sync stack\n if (++sync > 100) {\n return setImmediate(next, err)\n }\n\n // get pathname of request\n var path = getPathname(req);\n\n if (path == null) {\n return done(layerError);\n }\n\n // find next matching layer\n var layer;\n var match;\n var route;\n\n while (match !== true && idx < stack.length) {\n layer = stack[idx++];\n match = matchLayer(layer, path);\n route = layer.route;\n\n if (typeof match !== 'boolean') {\n // hold on to layerError\n layerError = layerError || match;\n }\n\n if (match !== true) {\n continue;\n }\n\n if (!route) {\n // process non-route handlers normally\n continue;\n }\n\n if (layerError) {\n // routes do not match with a pending error\n match = false;\n continue;\n }\n\n var method = req.method;\n var has_method = route._handles_method(method);\n\n // build up automatic options response\n if (!has_method && method === 'OPTIONS') {\n appendMethods(options, route._options());\n }\n\n // don't even bother matching route\n if (!has_method && method !== 'HEAD') {\n match = false;\n }\n }\n\n // no match\n if (match !== true) {\n return done(layerError);\n }\n\n // store route for dispatch on change\n if (route) {\n req.route = route;\n }\n\n // Capture one-time layer values\n req.params = self.mergeParams\n ? mergeParams(layer.params, parentParams)\n : layer.params;\n var layerPath = layer.path;\n\n // this should be done for the layer\n self.process_params(layer, paramcalled, req, res, function (err) {\n if (err) {\n next(layerError || err)\n } else if (route) {\n layer.handle_request(req, res, next)\n } else {\n trim_prefix(layer, layerError, layerPath, path)\n }\n\n sync = 0\n });\n }\n\n function trim_prefix(layer, layerError, layerPath, path) {\n if (layerPath.length !== 0) {\n // Validate path is a prefix match\n if (layerPath !== path.slice(0, layerPath.length)) {\n next(layerError)\n return\n }\n\n // Validate path breaks on a path separator\n var c = path[layerPath.length]\n if (c && c !== '/' && c !== '.') return next(layerError)\n\n // Trim off the part of the url that matches the route\n // middleware (.use stuff) needs to have the path stripped\n debug('trim prefix (%s) from url %s', layerPath, req.url);\n removed = layerPath;\n req.url = protohost + req.url.slice(protohost.length + removed.length)\n\n // Ensure leading slash\n if (!protohost && req.url[0] !== '/') {\n req.url = '/' + req.url;\n slashAdded = true;\n }\n\n // Setup base URL (no trailing slash)\n req.baseUrl = parentUrl + (removed[removed.length - 1] === '/'\n ? removed.substring(0, removed.length - 1)\n : removed);\n }\n\n debug('%s %s : %s', layer.name, layerPath, req.originalUrl);\n\n if (layerError) {\n layer.handle_error(layerError, req, res, next);\n } else {\n layer.handle_request(req, res, next);\n }\n }\n};\n\n/**\n * Process any parameters for the layer.\n * @private\n */\n\nproto.process_params = function process_params(layer, called, req, res, done) {\n var params = this.params;\n\n // captured parameters from the layer, keys and values\n var keys = layer.keys;\n\n // fast track\n if (!keys || keys.length === 0) {\n return done();\n }\n\n var i = 0;\n var name;\n var paramIndex = 0;\n var key;\n var paramVal;\n var paramCallbacks;\n var paramCalled;\n\n // process params in order\n // param callbacks can be async\n function param(err) {\n if (err) {\n return done(err);\n }\n\n if (i >= keys.length ) {\n return done();\n }\n\n paramIndex = 0;\n key = keys[i++];\n name = key.name;\n paramVal = req.params[name];\n paramCallbacks = params[name];\n paramCalled = called[name];\n\n if (paramVal === undefined || !paramCallbacks) {\n return param();\n }\n\n // param previously called with same value or error occurred\n if (paramCalled && (paramCalled.match === paramVal\n || (paramCalled.error && paramCalled.error !== 'route'))) {\n // restore value\n req.params[name] = paramCalled.value;\n\n // next param\n return param(paramCalled.error);\n }\n\n called[name] = paramCalled = {\n error: null,\n match: paramVal,\n value: paramVal\n };\n\n paramCallback();\n }\n\n // single param callbacks\n function paramCallback(err) {\n var fn = paramCallbacks[paramIndex++];\n\n // store updated value\n paramCalled.value = req.params[key.name];\n\n if (err) {\n // store error\n paramCalled.error = err;\n param(err);\n return;\n }\n\n if (!fn) return param();\n\n try {\n fn(req, res, paramCallback, paramVal, key.name);\n } catch (e) {\n paramCallback(e);\n }\n }\n\n param();\n};\n\n/**\n * Use the given middleware function, with optional path, defaulting to \"/\".\n *\n * Use (like `.all`) will run for any http METHOD, but it will not add\n * handlers for those methods so OPTIONS requests will not consider `.use`\n * functions even if they could respond.\n *\n * The other difference is that _route_ path is stripped and not visible\n * to the handler function. The main effect of this feature is that mounted\n * handlers can operate without any code changes regardless of the \"prefix\"\n * pathname.\n *\n * @public\n */\n\nproto.use = function use(fn) {\n var offset = 0;\n var path = '/';\n\n // default path to '/'\n // disambiguate router.use([fn])\n if (typeof fn !== 'function') {\n var arg = fn;\n\n while (Array.isArray(arg) && arg.length !== 0) {\n arg = arg[0];\n }\n\n // first arg is the path\n if (typeof arg !== 'function') {\n offset = 1;\n path = fn;\n }\n }\n\n var callbacks = flatten(slice.call(arguments, offset));\n\n if (callbacks.length === 0) {\n throw new TypeError('Router.use() requires a middleware function')\n }\n\n for (var i = 0; i < callbacks.length; i++) {\n var fn = callbacks[i];\n\n if (typeof fn !== 'function') {\n throw new TypeError('Router.use() requires a middleware function but got a ' + gettype(fn))\n }\n\n // add the middleware\n debug('use %o %s', path, fn.name || '')\n\n var layer = new Layer(path, {\n sensitive: this.caseSensitive,\n strict: false,\n end: false\n }, fn);\n\n layer.route = undefined;\n\n this.stack.push(layer);\n }\n\n return this;\n};\n\n/**\n * Create a new Route for the given path.\n *\n * Each route contains a separate middleware stack and VERB handlers.\n *\n * See the Route api documentation for details on adding handlers\n * and middleware to routes.\n *\n * @param {String} path\n * @return {Route}\n * @public\n */\n\nproto.route = function route(path) {\n var route = new Route(path);\n\n var layer = new Layer(path, {\n sensitive: this.caseSensitive,\n strict: this.strict,\n end: true\n }, route.dispatch.bind(route));\n\n layer.route = route;\n\n this.stack.push(layer);\n return route;\n};\n\n// create Router#VERB functions\nmethods.concat('all').forEach(function(method){\n proto[method] = function(path){\n var route = this.route(path)\n route[method].apply(route, slice.call(arguments, 1));\n return this;\n };\n});\n\n// append methods to a list of methods\nfunction appendMethods(list, addition) {\n for (var i = 0; i < addition.length; i++) {\n var method = addition[i];\n if (list.indexOf(method) === -1) {\n list.push(method);\n }\n }\n}\n\n// get pathname of request\nfunction getPathname(req) {\n try {\n return parseUrl(req).pathname;\n } catch (err) {\n return undefined;\n }\n}\n\n// Get get protocol + host for a URL\nfunction getProtohost(url) {\n if (typeof url !== 'string' || url.length === 0 || url[0] === '/') {\n return undefined\n }\n\n var searchIndex = url.indexOf('?')\n var pathLength = searchIndex !== -1\n ? searchIndex\n : url.length\n var fqdnIndex = url.slice(0, pathLength).indexOf('://')\n\n return fqdnIndex !== -1\n ? url.substring(0, url.indexOf('/', 3 + fqdnIndex))\n : undefined\n}\n\n// get type for error message\nfunction gettype(obj) {\n var type = typeof obj;\n\n if (type !== 'object') {\n return type;\n }\n\n // inspect [[Class]] for objects\n return toString.call(obj)\n .replace(objectRegExp, '$1');\n}\n\n/**\n * Match path to a layer.\n *\n * @param {Layer} layer\n * @param {string} path\n * @private\n */\n\nfunction matchLayer(layer, path) {\n try {\n return layer.match(path);\n } catch (err) {\n return err;\n }\n}\n\n// merge params with parent params\nfunction mergeParams(params, parent) {\n if (typeof parent !== 'object' || !parent) {\n return params;\n }\n\n // make copy of parent for base\n var obj = mixin({}, parent);\n\n // simple non-numeric merging\n if (!(0 in params) || !(0 in parent)) {\n return mixin(obj, params);\n }\n\n var i = 0;\n var o = 0;\n\n // determine numeric gaps\n while (i in params) {\n i++;\n }\n\n while (o in parent) {\n o++;\n }\n\n // offset numeric indices in params before merge\n for (i--; i >= 0; i--) {\n params[i + o] = params[i];\n\n // create holes for the merge when necessary\n if (i < o) {\n delete params[i];\n }\n }\n\n return mixin(obj, params);\n}\n\n// restore obj props after function\nfunction restore(fn, obj) {\n var props = new Array(arguments.length - 2);\n var vals = new Array(arguments.length - 2);\n\n for (var i = 0; i < props.length; i++) {\n props[i] = arguments[i + 2];\n vals[i] = obj[props[i]];\n }\n\n return function () {\n // restore vals\n for (var i = 0; i < props.length; i++) {\n obj[props[i]] = vals[i];\n }\n\n return fn.apply(this, arguments);\n };\n}\n\n// send an OPTIONS response\nfunction sendOptionsResponse(res, options, next) {\n try {\n var body = options.join(',');\n res.set('Allow', body);\n res.send(body);\n } catch (err) {\n next(err);\n }\n}\n\n// wrap a function\nfunction wrap(old, fn) {\n return function proxy() {\n var args = new Array(arguments.length + 1);\n\n args[0] = old;\n for (var i = 0, len = arguments.length; i < len; i++) {\n args[i + 1] = arguments[i];\n }\n\n fn.apply(this, args);\n };\n}\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar setPrototypeOf = require('setprototypeof')\n\n/**\n * Initialization middleware, exposing the\n * request and response to each other, as well\n * as defaulting the X-Powered-By header field.\n *\n * @param {Function} app\n * @return {Function}\n * @api private\n */\n\nexports.init = function(app){\n return function expressInit(req, res, next){\n if (app.enabled('x-powered-by')) res.setHeader('X-Powered-By', 'Express');\n req.res = res;\n res.req = req;\n req.next = next;\n\n setPrototypeOf(req, app.request)\n setPrototypeOf(res, app.response)\n\n res.locals = res.locals || Object.create(null);\n\n next();\n };\n};\n\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n */\n\nvar merge = require('utils-merge')\nvar parseUrl = require('parseurl');\nvar qs = require('qs');\n\n/**\n * @param {Object} options\n * @return {Function}\n * @api public\n */\n\nmodule.exports = function query(options) {\n var opts = merge({}, options)\n var queryparse = qs.parse;\n\n if (typeof options === 'function') {\n queryparse = options;\n opts = undefined;\n }\n\n if (opts !== undefined && opts.allowPrototypes === undefined) {\n // back-compat for qs module\n opts.allowPrototypes = true;\n }\n\n return function query(req, res, next){\n if (!req.query) {\n var val = parseUrl(req).query;\n req.query = queryparse(val, opts);\n }\n\n next();\n };\n};\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar debug = require('debug')('express:view');\nvar path = require('path');\nvar fs = require('fs');\n\n/**\n * Module variables.\n * @private\n */\n\nvar dirname = path.dirname;\nvar basename = path.basename;\nvar extname = path.extname;\nvar join = path.join;\nvar resolve = path.resolve;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = View;\n\n/**\n * Initialize a new `View` with the given `name`.\n *\n * Options:\n *\n * - `defaultEngine` the default template engine name\n * - `engines` template engine require() cache\n * - `root` root path for view lookup\n *\n * @param {string} name\n * @param {object} options\n * @public\n */\n\nfunction View(name, options) {\n var opts = options || {};\n\n this.defaultEngine = opts.defaultEngine;\n this.ext = extname(name);\n this.name = name;\n this.root = opts.root;\n\n if (!this.ext && !this.defaultEngine) {\n throw new Error('No default engine was specified and no extension was provided.');\n }\n\n var fileName = name;\n\n if (!this.ext) {\n // get extension from default engine name\n this.ext = this.defaultEngine[0] !== '.'\n ? '.' + this.defaultEngine\n : this.defaultEngine;\n\n fileName += this.ext;\n }\n\n if (!opts.engines[this.ext]) {\n // load engine\n var mod = this.ext.slice(1)\n debug('require \"%s\"', mod)\n\n // default engine export\n var fn = require(mod).__express\n\n if (typeof fn !== 'function') {\n throw new Error('Module \"' + mod + '\" does not provide a view engine.')\n }\n\n opts.engines[this.ext] = fn\n }\n\n // store loaded engine\n this.engine = opts.engines[this.ext];\n\n // lookup path\n this.path = this.lookup(fileName);\n}\n\n/**\n * Lookup view by the given `name`\n *\n * @param {string} name\n * @private\n */\n\nView.prototype.lookup = function lookup(name) {\n var path;\n var roots = [].concat(this.root);\n\n debug('lookup \"%s\"', name);\n\n for (var i = 0; i < roots.length && !path; i++) {\n var root = roots[i];\n\n // resolve the path\n var loc = resolve(root, name);\n var dir = dirname(loc);\n var file = basename(loc);\n\n // resolve the file\n path = this.resolve(dir, file);\n }\n\n return path;\n};\n\n/**\n * Render with the given options.\n *\n * @param {object} options\n * @param {function} callback\n * @private\n */\n\nView.prototype.render = function render(options, callback) {\n debug('render \"%s\"', this.path);\n this.engine(this.path, options, callback);\n};\n\n/**\n * Resolve the file within the given directory.\n *\n * @param {string} dir\n * @param {string} file\n * @private\n */\n\nView.prototype.resolve = function resolve(dir, file) {\n var ext = this.ext;\n\n // .\n var path = join(dir, file);\n var stat = tryStat(path);\n\n if (stat && stat.isFile()) {\n return path;\n }\n\n // /index.\n path = join(dir, basename(file, ext), 'index' + ext);\n stat = tryStat(path);\n\n if (stat && stat.isFile()) {\n return path;\n }\n};\n\n/**\n * Return a stat, maybe.\n *\n * @param {string} path\n * @return {fs.Stats}\n * @private\n */\n\nfunction tryStat(path) {\n debug('stat \"%s\"', path);\n\n try {\n return fs.statSync(path);\n } catch (e) {\n return undefined;\n }\n}\n", "/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n", "/*!\n * content-disposition\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = contentDisposition\nmodule.exports.parse = parse\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar basename = require('path').basename\nvar Buffer = require('safe-buffer').Buffer\n\n/**\n * RegExp to match non attr-char, *after* encodeURIComponent (i.e. not including \"%\")\n * @private\n */\n\nvar ENCODE_URL_ATTR_CHAR_REGEXP = /[\\x00-\\x20\"'()*,/:;<=>?@[\\\\\\]{}\\x7f]/g // eslint-disable-line no-control-regex\n\n/**\n * RegExp to match percent encoding escape.\n * @private\n */\n\nvar HEX_ESCAPE_REGEXP = /%[0-9A-Fa-f]{2}/\nvar HEX_ESCAPE_REPLACE_REGEXP = /%([0-9A-Fa-f]{2})/g\n\n/**\n * RegExp to match non-latin1 characters.\n * @private\n */\n\nvar NON_LATIN1_REGEXP = /[^\\x20-\\x7e\\xa0-\\xff]/g\n\n/**\n * RegExp to match quoted-pair in RFC 2616\n *\n * quoted-pair = \"\\\" CHAR\n * CHAR = \n * @private\n */\n\nvar QESC_REGEXP = /\\\\([\\u0000-\\u007f])/g // eslint-disable-line no-control-regex\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 2616\n * @private\n */\n\nvar QUOTE_REGEXP = /([\\\\\"])/g\n\n/**\n * RegExp for various RFC 2616 grammar\n *\n * parameter = token \"=\" ( token | quoted-string )\n * token = 1*\n * separators = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n * | \",\" | \";\" | \":\" | \"\\\" | <\">\n * | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n * | \"{\" | \"}\" | SP | HT\n * quoted-string = ( <\"> *(qdtext | quoted-pair ) <\"> )\n * qdtext = >\n * quoted-pair = \"\\\" CHAR\n * CHAR = \n * TEXT = \n * LWS = [CRLF] 1*( SP | HT )\n * CRLF = CR LF\n * CR = \n * LF = \n * SP = \n * HT = \n * CTL = \n * OCTET = \n * @private\n */\n\nvar PARAM_REGEXP = /;[\\x09\\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\\x09\\x20]*=[\\x09\\x20]*(\"(?:[\\x20!\\x23-\\x5b\\x5d-\\x7e\\x80-\\xff]|\\\\[\\x20-\\x7e])*\"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\\x09\\x20]*/g // eslint-disable-line no-control-regex\nvar TEXT_REGEXP = /^[\\x20-\\x7e\\x80-\\xff]+$/\nvar TOKEN_REGEXP = /^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/\n\n/**\n * RegExp for various RFC 5987 grammar\n *\n * ext-value = charset \"'\" [ language ] \"'\" value-chars\n * charset = \"UTF-8\" / \"ISO-8859-1\" / mime-charset\n * mime-charset = 1*mime-charsetc\n * mime-charsetc = ALPHA / DIGIT\n * / \"!\" / \"#\" / \"$\" / \"%\" / \"&\"\n * / \"+\" / \"-\" / \"^\" / \"_\" / \"`\"\n * / \"{\" / \"}\" / \"~\"\n * language = ( 2*3ALPHA [ extlang ] )\n * / 4ALPHA\n * / 5*8ALPHA\n * extlang = *3( \"-\" 3ALPHA )\n * value-chars = *( pct-encoded / attr-char )\n * pct-encoded = \"%\" HEXDIG HEXDIG\n * attr-char = ALPHA / DIGIT\n * / \"!\" / \"#\" / \"$\" / \"&\" / \"+\" / \"-\" / \".\"\n * / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n * @private\n */\n\nvar EXT_VALUE_REGEXP = /^([A-Za-z0-9!#$%&+\\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/\n\n/**\n * RegExp for various RFC 6266 grammar\n *\n * disposition-type = \"inline\" | \"attachment\" | disp-ext-type\n * disp-ext-type = token\n * disposition-parm = filename-parm | disp-ext-parm\n * filename-parm = \"filename\" \"=\" value\n * | \"filename*\" \"=\" ext-value\n * disp-ext-parm = token \"=\" value\n * | ext-token \"=\" ext-value\n * ext-token = \n * @private\n */\n\nvar DISPOSITION_TYPE_REGEXP = /^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\\x09\\x20]*(?:$|;)/ // eslint-disable-line no-control-regex\n\n/**\n * Create an attachment Content-Disposition header.\n *\n * @param {string} [filename]\n * @param {object} [options]\n * @param {string} [options.type=attachment]\n * @param {string|boolean} [options.fallback=true]\n * @return {string}\n * @public\n */\n\nfunction contentDisposition (filename, options) {\n var opts = options || {}\n\n // get type\n var type = opts.type || 'attachment'\n\n // get parameters\n var params = createparams(filename, opts.fallback)\n\n // format into string\n return format(new ContentDisposition(type, params))\n}\n\n/**\n * Create parameters object from filename and fallback.\n *\n * @param {string} [filename]\n * @param {string|boolean} [fallback=true]\n * @return {object}\n * @private\n */\n\nfunction createparams (filename, fallback) {\n if (filename === undefined) {\n return\n }\n\n var params = {}\n\n if (typeof filename !== 'string') {\n throw new TypeError('filename must be a string')\n }\n\n // fallback defaults to true\n if (fallback === undefined) {\n fallback = true\n }\n\n if (typeof fallback !== 'string' && typeof fallback !== 'boolean') {\n throw new TypeError('fallback must be a string or boolean')\n }\n\n if (typeof fallback === 'string' && NON_LATIN1_REGEXP.test(fallback)) {\n throw new TypeError('fallback must be ISO-8859-1 string')\n }\n\n // restrict to file base name\n var name = basename(filename)\n\n // determine if name is suitable for quoted string\n var isQuotedString = TEXT_REGEXP.test(name)\n\n // generate fallback name\n var fallbackName = typeof fallback !== 'string'\n ? fallback && getlatin1(name)\n : basename(fallback)\n var hasFallback = typeof fallbackName === 'string' && fallbackName !== name\n\n // set extended filename parameter\n if (hasFallback || !isQuotedString || HEX_ESCAPE_REGEXP.test(name)) {\n params['filename*'] = name\n }\n\n // set filename parameter\n if (isQuotedString || hasFallback) {\n params.filename = hasFallback\n ? fallbackName\n : name\n }\n\n return params\n}\n\n/**\n * Format object to Content-Disposition header.\n *\n * @param {object} obj\n * @param {string} obj.type\n * @param {object} [obj.parameters]\n * @return {string}\n * @private\n */\n\nfunction format (obj) {\n var parameters = obj.parameters\n var type = obj.type\n\n if (!type || typeof type !== 'string' || !TOKEN_REGEXP.test(type)) {\n throw new TypeError('invalid type')\n }\n\n // start with normalized type\n var string = String(type).toLowerCase()\n\n // append parameters\n if (parameters && typeof parameters === 'object') {\n var param\n var params = Object.keys(parameters).sort()\n\n for (var i = 0; i < params.length; i++) {\n param = params[i]\n\n var val = param.substr(-1) === '*'\n ? ustring(parameters[param])\n : qstring(parameters[param])\n\n string += '; ' + param + '=' + val\n }\n }\n\n return string\n}\n\n/**\n * Decode a RFC 5987 field value (gracefully).\n *\n * @param {string} str\n * @return {string}\n * @private\n */\n\nfunction decodefield (str) {\n var match = EXT_VALUE_REGEXP.exec(str)\n\n if (!match) {\n throw new TypeError('invalid extended field value')\n }\n\n var charset = match[1].toLowerCase()\n var encoded = match[2]\n var value\n\n // to binary string\n var binary = encoded.replace(HEX_ESCAPE_REPLACE_REGEXP, pdecode)\n\n switch (charset) {\n case 'iso-8859-1':\n value = getlatin1(binary)\n break\n case 'utf-8':\n value = Buffer.from(binary, 'binary').toString('utf8')\n break\n default:\n throw new TypeError('unsupported charset in extended field')\n }\n\n return value\n}\n\n/**\n * Get ISO-8859-1 version of string.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction getlatin1 (val) {\n // simple Unicode -> ISO-8859-1 transformation\n return String(val).replace(NON_LATIN1_REGEXP, '?')\n}\n\n/**\n * Parse Content-Disposition header string.\n *\n * @param {string} string\n * @return {object}\n * @public\n */\n\nfunction parse (string) {\n if (!string || typeof string !== 'string') {\n throw new TypeError('argument string is required')\n }\n\n var match = DISPOSITION_TYPE_REGEXP.exec(string)\n\n if (!match) {\n throw new TypeError('invalid type format')\n }\n\n // normalize type\n var index = match[0].length\n var type = match[1].toLowerCase()\n\n var key\n var names = []\n var params = {}\n var value\n\n // calculate index to start at\n index = PARAM_REGEXP.lastIndex = match[0].substr(-1) === ';'\n ? index - 1\n : index\n\n // match parameters\n while ((match = PARAM_REGEXP.exec(string))) {\n if (match.index !== index) {\n throw new TypeError('invalid parameter format')\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (names.indexOf(key) !== -1) {\n throw new TypeError('invalid duplicate parameter')\n }\n\n names.push(key)\n\n if (key.indexOf('*') + 1 === key.length) {\n // decode extended value\n key = key.slice(0, -1)\n value = decodefield(value)\n\n // overwrite existing value\n params[key] = value\n continue\n }\n\n if (typeof params[key] === 'string') {\n continue\n }\n\n if (value[0] === '\"') {\n // remove quotes and escapes\n value = value\n .substr(1, value.length - 2)\n .replace(QESC_REGEXP, '$1')\n }\n\n params[key] = value\n }\n\n if (index !== -1 && index !== string.length) {\n throw new TypeError('invalid parameter format')\n }\n\n return new ContentDisposition(type, params)\n}\n\n/**\n * Percent decode a single character.\n *\n * @param {string} str\n * @param {string} hex\n * @return {string}\n * @private\n */\n\nfunction pdecode (str, hex) {\n return String.fromCharCode(parseInt(hex, 16))\n}\n\n/**\n * Percent encode a single character.\n *\n * @param {string} char\n * @return {string}\n * @private\n */\n\nfunction pencode (char) {\n return '%' + String(char)\n .charCodeAt(0)\n .toString(16)\n .toUpperCase()\n}\n\n/**\n * Quote a string for HTTP.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction qstring (val) {\n var str = String(val)\n\n return '\"' + str.replace(QUOTE_REGEXP, '\\\\$1') + '\"'\n}\n\n/**\n * Encode a Unicode string for HTTP (RFC 5987).\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction ustring (val) {\n var str = String(val)\n\n // percent encode as UTF-8\n var encoded = encodeURIComponent(str)\n .replace(ENCODE_URL_ATTR_CHAR_REGEXP, pencode)\n\n return 'UTF-8\\'\\'' + encoded\n}\n\n/**\n * Class for parsed Content-Disposition header for v8 optimization\n *\n * @public\n * @param {string} type\n * @param {object} parameters\n * @constructor\n */\n\nfunction ContentDisposition (type, parameters) {\n this.type = type\n this.parameters = parameters\n}\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n", "/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n", "/**\n * Module dependencies.\n */\n\nvar tty = require('tty');\nvar util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(function (key) {\n return /^debug_/i.test(key);\n}).reduce(function (obj, key) {\n // camel-case\n var prop = key\n .substring(6)\n .toLowerCase()\n .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() });\n\n // coerce string value into JS value\n var val = process.env[key];\n if (/^(yes|on|true|enabled)$/i.test(val)) val = true;\n else if (/^(no|off|false|disabled)$/i.test(val)) val = false;\n else if (val === 'null') val = null;\n else val = Number(val);\n\n obj[prop] = val;\n return obj;\n}, {});\n\n/**\n * The file descriptor to write the `debug()` calls to.\n * Set the `DEBUG_FD` env variable to override with another value. i.e.:\n *\n * $ DEBUG_FD=3 node script.js 3>debug.log\n */\n\nvar fd = parseInt(process.env.DEBUG_FD, 10) || 2;\n\nif (1 !== fd && 2 !== fd) {\n util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')()\n}\n\nvar stream = 1 === fd ? process.stdout :\n 2 === fd ? process.stderr :\n createWritableStdioStream(fd);\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n return 'colors' in exports.inspectOpts\n ? Boolean(exports.inspectOpts.colors)\n : tty.isatty(fd);\n}\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nexports.formatters.o = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts)\n .split('\\n').map(function(str) {\n return str.trim()\n }).join(' ');\n};\n\n/**\n * Map %o to `util.inspect()`, allowing multiple lines if needed.\n */\n\nexports.formatters.O = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts);\n};\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var name = this.namespace;\n var useColors = this.useColors;\n\n if (useColors) {\n var c = this.color;\n var prefix = ' \\u001b[3' + c + ';1m' + name + ' ' + '\\u001b[0m';\n\n args[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n args.push('\\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\\u001b[0m');\n } else {\n args[0] = new Date().toUTCString()\n + ' ' + name + ' ' + args[0];\n }\n}\n\n/**\n * Invokes `util.format()` with the specified arguments and writes to `stream`.\n */\n\nfunction log() {\n return stream.write(util.format.apply(util, arguments) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n if (null == namespaces) {\n // If you set a process.env field to null or undefined, it gets cast to the\n // string 'null' or 'undefined'. Just delete instead.\n delete process.env.DEBUG;\n } else {\n process.env.DEBUG = namespaces;\n }\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n return process.env.DEBUG;\n}\n\n/**\n * Copied from `node/src/node.js`.\n *\n * XXX: It's lame that node doesn't expose this API out-of-the-box. It also\n * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame.\n */\n\nfunction createWritableStdioStream (fd) {\n var stream;\n var tty_wrap = process.binding('tty_wrap');\n\n // Note stream._type is used for test-module-load-list.js\n\n switch (tty_wrap.guessHandleType(fd)) {\n case 'TTY':\n stream = new tty.WriteStream(fd);\n stream._type = 'tty';\n\n // Hack to have stream not keep the event loop alive.\n // See https://github.com/joyent/node/issues/1726\n if (stream._handle && stream._handle.unref) {\n stream._handle.unref();\n }\n break;\n\n case 'FILE':\n var fs = require('fs');\n stream = new fs.SyncWriteStream(fd, { autoClose: false });\n stream._type = 'fs';\n break;\n\n case 'PIPE':\n case 'TCP':\n var net = require('net');\n stream = new net.Socket({\n fd: fd,\n readable: false,\n writable: true\n });\n\n // FIXME Should probably have an option in net.Socket to create a\n // stream from an existing fd which is writable only. But for now\n // we'll just add this hack and set the `readable` member to false.\n // Test: ./node test/fixtures/echo.js < /etc/passwd\n stream.readable = false;\n stream.read = null;\n stream._type = 'pipe';\n\n // FIXME Hack to have stream not keep the event loop alive.\n // See https://github.com/joyent/node/issues/1726\n if (stream._handle && stream._handle.unref) {\n stream._handle.unref();\n }\n break;\n\n default:\n // Probably an error on in uv_guess_handle()\n throw new Error('Implement me. Unknown stream file type!');\n }\n\n // For supporting legacy API we put the FD here.\n stream.fd = fd;\n\n stream._isStdio = true;\n\n return stream;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init (debug) {\n debug.inspectOpts = {};\n\n var keys = Object.keys(exports.inspectOpts);\n for (var i = 0; i < keys.length; i++) {\n debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n }\n}\n\n/**\n * Enable namespaces listed in `process.env.DEBUG` initially.\n */\n\nexports.enable(load());\n", "/**\n * Detect Electron renderer process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process !== 'undefined' && process.type === 'renderer') {\n module.exports = require('./browser.js');\n} else {\n module.exports = require('./node.js');\n}\n", "/*!\n * etag\n * Copyright(c) 2014-2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = etag\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar crypto = require('crypto')\nvar Stats = require('fs').Stats\n\n/**\n * Module variables.\n * @private\n */\n\nvar toString = Object.prototype.toString\n\n/**\n * Generate an entity tag.\n *\n * @param {Buffer|string} entity\n * @return {string}\n * @private\n */\n\nfunction entitytag (entity) {\n if (entity.length === 0) {\n // fast-path empty\n return '\"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk\"'\n }\n\n // compute hash of entity\n var hash = crypto\n .createHash('sha1')\n .update(entity, 'utf8')\n .digest('base64')\n .substring(0, 27)\n\n // compute length of entity\n var len = typeof entity === 'string'\n ? Buffer.byteLength(entity, 'utf8')\n : entity.length\n\n return '\"' + len.toString(16) + '-' + hash + '\"'\n}\n\n/**\n * Create a simple ETag.\n *\n * @param {string|Buffer|Stats} entity\n * @param {object} [options]\n * @param {boolean} [options.weak]\n * @return {String}\n * @public\n */\n\nfunction etag (entity, options) {\n if (entity == null) {\n throw new TypeError('argument entity is required')\n }\n\n // support fs.Stats object\n var isStats = isstats(entity)\n var weak = options && typeof options.weak === 'boolean'\n ? options.weak\n : isStats\n\n // validate argument\n if (!isStats && typeof entity !== 'string' && !Buffer.isBuffer(entity)) {\n throw new TypeError('argument entity must be string, Buffer, or fs.Stats')\n }\n\n // generate entity tag\n var tag = isStats\n ? stattag(entity)\n : entitytag(entity)\n\n return weak\n ? 'W/' + tag\n : tag\n}\n\n/**\n * Determine if object is a Stats object.\n *\n * @param {object} obj\n * @return {boolean}\n * @api private\n */\n\nfunction isstats (obj) {\n // genuine fs.Stats\n if (typeof Stats === 'function' && obj instanceof Stats) {\n return true\n }\n\n // quack quack\n return obj && typeof obj === 'object' &&\n 'ctime' in obj && toString.call(obj.ctime) === '[object Date]' &&\n 'mtime' in obj && toString.call(obj.mtime) === '[object Date]' &&\n 'ino' in obj && typeof obj.ino === 'number' &&\n 'size' in obj && typeof obj.size === 'number'\n}\n\n/**\n * Generate a tag for a stat.\n *\n * @param {object} stat\n * @return {string}\n * @private\n */\n\nfunction stattag (stat) {\n var mtime = stat.mtime.getTime().toString(16)\n var size = stat.size.toString(16)\n\n return '\"' + size + '-' + mtime + '\"'\n}\n", "/*!\n * fresh\n * Copyright(c) 2012 TJ Holowaychuk\n * Copyright(c) 2016-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to check for no-cache token in Cache-Control.\n * @private\n */\n\nvar CACHE_CONTROL_NO_CACHE_REGEXP = /(?:^|,)\\s*?no-cache\\s*?(?:,|$)/\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = fresh\n\n/**\n * Check freshness of the response using request and response headers.\n *\n * @param {Object} reqHeaders\n * @param {Object} resHeaders\n * @return {Boolean}\n * @public\n */\n\nfunction fresh (reqHeaders, resHeaders) {\n // fields\n var modifiedSince = reqHeaders['if-modified-since']\n var noneMatch = reqHeaders['if-none-match']\n\n // unconditional request\n if (!modifiedSince && !noneMatch) {\n return false\n }\n\n // Always return stale when Cache-Control: no-cache\n // to support end-to-end reload requests\n // https://tools.ietf.org/html/rfc2616#section-14.9.4\n var cacheControl = reqHeaders['cache-control']\n if (cacheControl && CACHE_CONTROL_NO_CACHE_REGEXP.test(cacheControl)) {\n return false\n }\n\n // if-none-match\n if (noneMatch && noneMatch !== '*') {\n var etag = resHeaders['etag']\n\n if (!etag) {\n return false\n }\n\n var etagStale = true\n var matches = parseTokenList(noneMatch)\n for (var i = 0; i < matches.length; i++) {\n var match = matches[i]\n if (match === etag || match === 'W/' + etag || 'W/' + match === etag) {\n etagStale = false\n break\n }\n }\n\n if (etagStale) {\n return false\n }\n }\n\n // if-modified-since\n if (modifiedSince) {\n var lastModified = resHeaders['last-modified']\n var modifiedStale = !lastModified || !(parseHttpDate(lastModified) <= parseHttpDate(modifiedSince))\n\n if (modifiedStale) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Parse an HTTP Date into a number.\n *\n * @param {string} date\n * @private\n */\n\nfunction parseHttpDate (date) {\n var timestamp = date && Date.parse(date)\n\n // istanbul ignore next: guard against date.js Date.parse patching\n return typeof timestamp === 'number'\n ? timestamp\n : NaN\n}\n\n/**\n * Parse a HTTP token list.\n *\n * @param {string} str\n * @private\n */\n\nfunction parseTokenList (str) {\n var end = 0\n var list = []\n var start = 0\n\n // gather tokens\n for (var i = 0, len = str.length; i < len; i++) {\n switch (str.charCodeAt(i)) {\n case 0x20: /* */\n if (start === end) {\n start = end = i + 1\n }\n break\n case 0x2c: /* , */\n list.push(str.substring(start, end))\n start = end = i + 1\n break\n default:\n end = i + 1\n break\n }\n }\n\n // final token\n list.push(str.substring(start, end))\n\n return list\n}\n", "var path = require('path');\nvar fs = require('fs');\n\nfunction Mime() {\n // Map of extension -> mime type\n this.types = Object.create(null);\n\n // Map of mime type -> extension\n this.extensions = Object.create(null);\n}\n\n/**\n * Define mimetype -> extension mappings. Each key is a mime-type that maps\n * to an array of extensions associated with the type. The first extension is\n * used as the default extension for the type.\n *\n * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']});\n *\n * @param map (Object) type definitions\n */\nMime.prototype.define = function (map) {\n for (var type in map) {\n var exts = map[type];\n for (var i = 0; i < exts.length; i++) {\n if (process.env.DEBUG_MIME && this.types[exts[i]]) {\n console.warn((this._loading || \"define()\").replace(/.*\\//, ''), 'changes \"' + exts[i] + '\" extension type from ' +\n this.types[exts[i]] + ' to ' + type);\n }\n\n this.types[exts[i]] = type;\n }\n\n // Default extension is the first one we encounter\n if (!this.extensions[type]) {\n this.extensions[type] = exts[0];\n }\n }\n};\n\n/**\n * Load an Apache2-style \".types\" file\n *\n * This may be called multiple times (it's expected). Where files declare\n * overlapping types/extensions, the last file wins.\n *\n * @param file (String) path of file to load.\n */\nMime.prototype.load = function(file) {\n this._loading = file;\n // Read file and split into lines\n var map = {},\n content = fs.readFileSync(file, 'ascii'),\n lines = content.split(/[\\r\\n]+/);\n\n lines.forEach(function(line) {\n // Clean up whitespace/comments, and split into fields\n var fields = line.replace(/\\s*#.*|^\\s*|\\s*$/g, '').split(/\\s+/);\n map[fields.shift()] = fields;\n });\n\n this.define(map);\n\n this._loading = null;\n};\n\n/**\n * Lookup a mime type based on extension\n */\nMime.prototype.lookup = function(path, fallback) {\n var ext = path.replace(/^.*[\\.\\/\\\\]/, '').toLowerCase();\n\n return this.types[ext] || fallback || this.default_type;\n};\n\n/**\n * Return file extension associated with a mime type\n */\nMime.prototype.extension = function(mimeType) {\n var type = mimeType.match(/^\\s*([^;\\s]*)(?:;|\\s|$)/)[1].toLowerCase();\n return this.extensions[type];\n};\n\n// Default instance\nvar mime = new Mime();\n\n// Define built-in types\nmime.define(require('./types.json'));\n\n// Default type\nmime.default_type = mime.lookup('bin');\n\n//\n// Additional API specific to the default instance\n//\n\nmime.Mime = Mime;\n\n/**\n * Lookup a charset based on mime type.\n */\nmime.charsets = {\n lookup: function(mimeType, fallback) {\n // Assume text types are utf8\n return (/^text\\/|^application\\/(javascript|json)/).test(mimeType) ? 'UTF-8' : fallback;\n }\n};\n\nmodule.exports = mime;\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n", "/*!\n * range-parser\n * Copyright(c) 2012-2014 TJ Holowaychuk\n * Copyright(c) 2015-2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = rangeParser\n\n/**\n * Parse \"Range\" header `str` relative to the given file `size`.\n *\n * @param {Number} size\n * @param {String} str\n * @param {Object} [options]\n * @return {Array}\n * @public\n */\n\nfunction rangeParser (size, str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string')\n }\n\n var index = str.indexOf('=')\n\n if (index === -1) {\n return -2\n }\n\n // split the range string\n var arr = str.slice(index + 1).split(',')\n var ranges = []\n\n // add ranges type\n ranges.type = str.slice(0, index)\n\n // parse all ranges\n for (var i = 0; i < arr.length; i++) {\n var range = arr[i].split('-')\n var start = parseInt(range[0], 10)\n var end = parseInt(range[1], 10)\n\n // -nnn\n if (isNaN(start)) {\n start = size - end\n end = size - 1\n // nnn-\n } else if (isNaN(end)) {\n end = size - 1\n }\n\n // limit last-byte-pos to current length\n if (end > size - 1) {\n end = size - 1\n }\n\n // invalid or unsatisifiable\n if (isNaN(start) || isNaN(end) || start > end || start < 0) {\n continue\n }\n\n // add range\n ranges.push({\n start: start,\n end: end\n })\n }\n\n if (ranges.length < 1) {\n // unsatisifiable\n return -1\n }\n\n return options && options.combine\n ? combineRanges(ranges)\n : ranges\n}\n\n/**\n * Combine overlapping & adjacent ranges.\n * @private\n */\n\nfunction combineRanges (ranges) {\n var ordered = ranges.map(mapWithIndex).sort(sortByRangeStart)\n\n for (var j = 0, i = 1; i < ordered.length; i++) {\n var range = ordered[i]\n var current = ordered[j]\n\n if (range.start > current.end + 1) {\n // next range\n ordered[++j] = range\n } else if (range.end > current.end) {\n // extend range\n current.end = range.end\n current.index = Math.min(current.index, range.index)\n }\n }\n\n // trim ordered array\n ordered.length = j + 1\n\n // generate combined range\n var combined = ordered.sort(sortByRangeIndex).map(mapWithoutIndex)\n\n // copy ranges type\n combined.type = ranges.type\n\n return combined\n}\n\n/**\n * Map function to add index value to ranges.\n * @private\n */\n\nfunction mapWithIndex (range, index) {\n return {\n start: range.start,\n end: range.end,\n index: index\n }\n}\n\n/**\n * Map function to remove index value from ranges.\n * @private\n */\n\nfunction mapWithoutIndex (range) {\n return {\n start: range.start,\n end: range.end\n }\n}\n\n/**\n * Sort function to sort ranges by index.\n * @private\n */\n\nfunction sortByRangeIndex (a, b) {\n return a.index - b.index\n}\n\n/**\n * Sort function to sort ranges by start position.\n * @private\n */\n\nfunction sortByRangeStart (a, b) {\n return a.start - b.start\n}\n", "/*!\n * send\n * Copyright(c) 2012 TJ Holowaychuk\n * Copyright(c) 2014-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar createError = require('http-errors')\nvar debug = require('debug')('send')\nvar deprecate = require('depd')('send')\nvar destroy = require('destroy')\nvar encodeUrl = require('encodeurl')\nvar escapeHtml = require('escape-html')\nvar etag = require('etag')\nvar fresh = require('fresh')\nvar fs = require('fs')\nvar mime = require('mime')\nvar ms = require('ms')\nvar onFinished = require('on-finished')\nvar parseRange = require('range-parser')\nvar path = require('path')\nvar statuses = require('statuses')\nvar Stream = require('stream')\nvar util = require('util')\n\n/**\n * Path function references.\n * @private\n */\n\nvar extname = path.extname\nvar join = path.join\nvar normalize = path.normalize\nvar resolve = path.resolve\nvar sep = path.sep\n\n/**\n * Regular expression for identifying a bytes Range header.\n * @private\n */\n\nvar BYTES_RANGE_REGEXP = /^ *bytes=/\n\n/**\n * Maximum value allowed for the max age.\n * @private\n */\n\nvar MAX_MAXAGE = 60 * 60 * 24 * 365 * 1000 // 1 year\n\n/**\n * Regular expression to match a path with a directory up component.\n * @private\n */\n\nvar UP_PATH_REGEXP = /(?:^|[\\\\/])\\.\\.(?:[\\\\/]|$)/\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = send\nmodule.exports.mime = mime\n\n/**\n * Return a `SendStream` for `req` and `path`.\n *\n * @param {object} req\n * @param {string} path\n * @param {object} [options]\n * @return {SendStream}\n * @public\n */\n\nfunction send (req, path, options) {\n return new SendStream(req, path, options)\n}\n\n/**\n * Initialize a `SendStream` with the given `path`.\n *\n * @param {Request} req\n * @param {String} path\n * @param {object} [options]\n * @private\n */\n\nfunction SendStream (req, path, options) {\n Stream.call(this)\n\n var opts = options || {}\n\n this.options = opts\n this.path = path\n this.req = req\n\n this._acceptRanges = opts.acceptRanges !== undefined\n ? Boolean(opts.acceptRanges)\n : true\n\n this._cacheControl = opts.cacheControl !== undefined\n ? Boolean(opts.cacheControl)\n : true\n\n this._etag = opts.etag !== undefined\n ? Boolean(opts.etag)\n : true\n\n this._dotfiles = opts.dotfiles !== undefined\n ? opts.dotfiles\n : 'ignore'\n\n if (this._dotfiles !== 'ignore' && this._dotfiles !== 'allow' && this._dotfiles !== 'deny') {\n throw new TypeError('dotfiles option must be \"allow\", \"deny\", or \"ignore\"')\n }\n\n this._hidden = Boolean(opts.hidden)\n\n if (opts.hidden !== undefined) {\n deprecate('hidden: use dotfiles: \\'' + (this._hidden ? 'allow' : 'ignore') + '\\' instead')\n }\n\n // legacy support\n if (opts.dotfiles === undefined) {\n this._dotfiles = undefined\n }\n\n this._extensions = opts.extensions !== undefined\n ? normalizeList(opts.extensions, 'extensions option')\n : []\n\n this._immutable = opts.immutable !== undefined\n ? Boolean(opts.immutable)\n : false\n\n this._index = opts.index !== undefined\n ? normalizeList(opts.index, 'index option')\n : ['index.html']\n\n this._lastModified = opts.lastModified !== undefined\n ? Boolean(opts.lastModified)\n : true\n\n this._maxage = opts.maxAge || opts.maxage\n this._maxage = typeof this._maxage === 'string'\n ? ms(this._maxage)\n : Number(this._maxage)\n this._maxage = !isNaN(this._maxage)\n ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE)\n : 0\n\n this._root = opts.root\n ? resolve(opts.root)\n : null\n\n if (!this._root && opts.from) {\n this.from(opts.from)\n }\n}\n\n/**\n * Inherits from `Stream`.\n */\n\nutil.inherits(SendStream, Stream)\n\n/**\n * Enable or disable etag generation.\n *\n * @param {Boolean} val\n * @return {SendStream}\n * @api public\n */\n\nSendStream.prototype.etag = deprecate.function(function etag (val) {\n this._etag = Boolean(val)\n debug('etag %s', this._etag)\n return this\n}, 'send.etag: pass etag as option')\n\n/**\n * Enable or disable \"hidden\" (dot) files.\n *\n * @param {Boolean} path\n * @return {SendStream}\n * @api public\n */\n\nSendStream.prototype.hidden = deprecate.function(function hidden (val) {\n this._hidden = Boolean(val)\n this._dotfiles = undefined\n debug('hidden %s', this._hidden)\n return this\n}, 'send.hidden: use dotfiles option')\n\n/**\n * Set index `paths`, set to a falsy\n * value to disable index support.\n *\n * @param {String|Boolean|Array} paths\n * @return {SendStream}\n * @api public\n */\n\nSendStream.prototype.index = deprecate.function(function index (paths) {\n var index = !paths ? [] : normalizeList(paths, 'paths argument')\n debug('index %o', paths)\n this._index = index\n return this\n}, 'send.index: pass index as option')\n\n/**\n * Set root `path`.\n *\n * @param {String} path\n * @return {SendStream}\n * @api public\n */\n\nSendStream.prototype.root = function root (path) {\n this._root = resolve(String(path))\n debug('root %s', this._root)\n return this\n}\n\nSendStream.prototype.from = deprecate.function(SendStream.prototype.root,\n 'send.from: pass root as option')\n\nSendStream.prototype.root = deprecate.function(SendStream.prototype.root,\n 'send.root: pass root as option')\n\n/**\n * Set max-age to `maxAge`.\n *\n * @param {Number} maxAge\n * @return {SendStream}\n * @api public\n */\n\nSendStream.prototype.maxage = deprecate.function(function maxage (maxAge) {\n this._maxage = typeof maxAge === 'string'\n ? ms(maxAge)\n : Number(maxAge)\n this._maxage = !isNaN(this._maxage)\n ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE)\n : 0\n debug('max-age %d', this._maxage)\n return this\n}, 'send.maxage: pass maxAge as option')\n\n/**\n * Emit error with `status`.\n *\n * @param {number} status\n * @param {Error} [err]\n * @private\n */\n\nSendStream.prototype.error = function error (status, err) {\n // emit if listeners instead of responding\n if (hasListeners(this, 'error')) {\n return this.emit('error', createHttpError(status, err))\n }\n\n var res = this.res\n var msg = statuses.message[status] || String(status)\n var doc = createHtmlDocument('Error', escapeHtml(msg))\n\n // clear existing headers\n clearHeaders(res)\n\n // add error headers\n if (err && err.headers) {\n setHeaders(res, err.headers)\n }\n\n // send basic response\n res.statusCode = status\n res.setHeader('Content-Type', 'text/html; charset=UTF-8')\n res.setHeader('Content-Length', Buffer.byteLength(doc))\n res.setHeader('Content-Security-Policy', \"default-src 'none'\")\n res.setHeader('X-Content-Type-Options', 'nosniff')\n res.end(doc)\n}\n\n/**\n * Check if the pathname ends with \"/\".\n *\n * @return {boolean}\n * @private\n */\n\nSendStream.prototype.hasTrailingSlash = function hasTrailingSlash () {\n return this.path[this.path.length - 1] === '/'\n}\n\n/**\n * Check if this is a conditional GET request.\n *\n * @return {Boolean}\n * @api private\n */\n\nSendStream.prototype.isConditionalGET = function isConditionalGET () {\n return this.req.headers['if-match'] ||\n this.req.headers['if-unmodified-since'] ||\n this.req.headers['if-none-match'] ||\n this.req.headers['if-modified-since']\n}\n\n/**\n * Check if the request preconditions failed.\n *\n * @return {boolean}\n * @private\n */\n\nSendStream.prototype.isPreconditionFailure = function isPreconditionFailure () {\n var req = this.req\n var res = this.res\n\n // if-match\n var match = req.headers['if-match']\n if (match) {\n var etag = res.getHeader('ETag')\n return !etag || (match !== '*' && parseTokenList(match).every(function (match) {\n return match !== etag && match !== 'W/' + etag && 'W/' + match !== etag\n }))\n }\n\n // if-unmodified-since\n var unmodifiedSince = parseHttpDate(req.headers['if-unmodified-since'])\n if (!isNaN(unmodifiedSince)) {\n var lastModified = parseHttpDate(res.getHeader('Last-Modified'))\n return isNaN(lastModified) || lastModified > unmodifiedSince\n }\n\n return false\n}\n\n/**\n * Strip various content header fields for a change in entity.\n *\n * @private\n */\n\nSendStream.prototype.removeContentHeaderFields = function removeContentHeaderFields () {\n var res = this.res\n\n res.removeHeader('Content-Encoding')\n res.removeHeader('Content-Language')\n res.removeHeader('Content-Length')\n res.removeHeader('Content-Range')\n res.removeHeader('Content-Type')\n}\n\n/**\n * Respond with 304 not modified.\n *\n * @api private\n */\n\nSendStream.prototype.notModified = function notModified () {\n var res = this.res\n debug('not modified')\n this.removeContentHeaderFields()\n res.statusCode = 304\n res.end()\n}\n\n/**\n * Raise error that headers already sent.\n *\n * @api private\n */\n\nSendStream.prototype.headersAlreadySent = function headersAlreadySent () {\n var err = new Error('Can\\'t set headers after they are sent.')\n debug('headers already sent')\n this.error(500, err)\n}\n\n/**\n * Check if the request is cacheable, aka\n * responded with 2xx or 304 (see RFC 2616 section 14.2{5,6}).\n *\n * @return {Boolean}\n * @api private\n */\n\nSendStream.prototype.isCachable = function isCachable () {\n var statusCode = this.res.statusCode\n return (statusCode >= 200 && statusCode < 300) ||\n statusCode === 304\n}\n\n/**\n * Handle stat() error.\n *\n * @param {Error} error\n * @private\n */\n\nSendStream.prototype.onStatError = function onStatError (error) {\n switch (error.code) {\n case 'ENAMETOOLONG':\n case 'ENOENT':\n case 'ENOTDIR':\n this.error(404, error)\n break\n default:\n this.error(500, error)\n break\n }\n}\n\n/**\n * Check if the cache is fresh.\n *\n * @return {Boolean}\n * @api private\n */\n\nSendStream.prototype.isFresh = function isFresh () {\n return fresh(this.req.headers, {\n etag: this.res.getHeader('ETag'),\n 'last-modified': this.res.getHeader('Last-Modified')\n })\n}\n\n/**\n * Check if the range is fresh.\n *\n * @return {Boolean}\n * @api private\n */\n\nSendStream.prototype.isRangeFresh = function isRangeFresh () {\n var ifRange = this.req.headers['if-range']\n\n if (!ifRange) {\n return true\n }\n\n // if-range as etag\n if (ifRange.indexOf('\"') !== -1) {\n var etag = this.res.getHeader('ETag')\n return Boolean(etag && ifRange.indexOf(etag) !== -1)\n }\n\n // if-range as modified date\n var lastModified = this.res.getHeader('Last-Modified')\n return parseHttpDate(lastModified) <= parseHttpDate(ifRange)\n}\n\n/**\n * Redirect to path.\n *\n * @param {string} path\n * @private\n */\n\nSendStream.prototype.redirect = function redirect (path) {\n var res = this.res\n\n if (hasListeners(this, 'directory')) {\n this.emit('directory', res, path)\n return\n }\n\n if (this.hasTrailingSlash()) {\n this.error(403)\n return\n }\n\n var loc = encodeUrl(collapseLeadingSlashes(this.path + '/'))\n var doc = createHtmlDocument('Redirecting', 'Redirecting to ' +\n escapeHtml(loc) + '')\n\n // redirect\n res.statusCode = 301\n res.setHeader('Content-Type', 'text/html; charset=UTF-8')\n res.setHeader('Content-Length', Buffer.byteLength(doc))\n res.setHeader('Content-Security-Policy', \"default-src 'none'\")\n res.setHeader('X-Content-Type-Options', 'nosniff')\n res.setHeader('Location', loc)\n res.end(doc)\n}\n\n/**\n * Pipe to `res.\n *\n * @param {Stream} res\n * @return {Stream} res\n * @api public\n */\n\nSendStream.prototype.pipe = function pipe (res) {\n // root path\n var root = this._root\n\n // references\n this.res = res\n\n // decode the path\n var path = decode(this.path)\n if (path === -1) {\n this.error(400)\n return res\n }\n\n // null byte(s)\n if (~path.indexOf('\\0')) {\n this.error(400)\n return res\n }\n\n var parts\n if (root !== null) {\n // normalize\n if (path) {\n path = normalize('.' + sep + path)\n }\n\n // malicious path\n if (UP_PATH_REGEXP.test(path)) {\n debug('malicious path \"%s\"', path)\n this.error(403)\n return res\n }\n\n // explode path parts\n parts = path.split(sep)\n\n // join / normalize from optional root dir\n path = normalize(join(root, path))\n } else {\n // \"..\" is malicious without \"root\"\n if (UP_PATH_REGEXP.test(path)) {\n debug('malicious path \"%s\"', path)\n this.error(403)\n return res\n }\n\n // explode path parts\n parts = normalize(path).split(sep)\n\n // resolve the path\n path = resolve(path)\n }\n\n // dotfile handling\n if (containsDotFile(parts)) {\n var access = this._dotfiles\n\n // legacy support\n if (access === undefined) {\n access = parts[parts.length - 1][0] === '.'\n ? (this._hidden ? 'allow' : 'ignore')\n : 'allow'\n }\n\n debug('%s dotfile \"%s\"', access, path)\n switch (access) {\n case 'allow':\n break\n case 'deny':\n this.error(403)\n return res\n case 'ignore':\n default:\n this.error(404)\n return res\n }\n }\n\n // index file support\n if (this._index.length && this.hasTrailingSlash()) {\n this.sendIndex(path)\n return res\n }\n\n this.sendFile(path)\n return res\n}\n\n/**\n * Transfer `path`.\n *\n * @param {String} path\n * @api public\n */\n\nSendStream.prototype.send = function send (path, stat) {\n var len = stat.size\n var options = this.options\n var opts = {}\n var res = this.res\n var req = this.req\n var ranges = req.headers.range\n var offset = options.start || 0\n\n if (headersSent(res)) {\n // impossible to send now\n this.headersAlreadySent()\n return\n }\n\n debug('pipe \"%s\"', path)\n\n // set header fields\n this.setHeader(path, stat)\n\n // set content-type\n this.type(path)\n\n // conditional GET support\n if (this.isConditionalGET()) {\n if (this.isPreconditionFailure()) {\n this.error(412)\n return\n }\n\n if (this.isCachable() && this.isFresh()) {\n this.notModified()\n return\n }\n }\n\n // adjust len to start/end options\n len = Math.max(0, len - offset)\n if (options.end !== undefined) {\n var bytes = options.end - offset + 1\n if (len > bytes) len = bytes\n }\n\n // Range support\n if (this._acceptRanges && BYTES_RANGE_REGEXP.test(ranges)) {\n // parse\n ranges = parseRange(len, ranges, {\n combine: true\n })\n\n // If-Range support\n if (!this.isRangeFresh()) {\n debug('range stale')\n ranges = -2\n }\n\n // unsatisfiable\n if (ranges === -1) {\n debug('range unsatisfiable')\n\n // Content-Range\n res.setHeader('Content-Range', contentRange('bytes', len))\n\n // 416 Requested Range Not Satisfiable\n return this.error(416, {\n headers: { 'Content-Range': res.getHeader('Content-Range') }\n })\n }\n\n // valid (syntactically invalid/multiple ranges are treated as a regular response)\n if (ranges !== -2 && ranges.length === 1) {\n debug('range %j', ranges)\n\n // Content-Range\n res.statusCode = 206\n res.setHeader('Content-Range', contentRange('bytes', len, ranges[0]))\n\n // adjust for requested range\n offset += ranges[0].start\n len = ranges[0].end - ranges[0].start + 1\n }\n }\n\n // clone options\n for (var prop in options) {\n opts[prop] = options[prop]\n }\n\n // set read options\n opts.start = offset\n opts.end = Math.max(offset, offset + len - 1)\n\n // content-length\n res.setHeader('Content-Length', len)\n\n // HEAD support\n if (req.method === 'HEAD') {\n res.end()\n return\n }\n\n this.stream(path, opts)\n}\n\n/**\n * Transfer file for `path`.\n *\n * @param {String} path\n * @api private\n */\nSendStream.prototype.sendFile = function sendFile (path) {\n var i = 0\n var self = this\n\n debug('stat \"%s\"', path)\n fs.stat(path, function onstat (err, stat) {\n if (err && err.code === 'ENOENT' && !extname(path) && path[path.length - 1] !== sep) {\n // not found, check extensions\n return next(err)\n }\n if (err) return self.onStatError(err)\n if (stat.isDirectory()) return self.redirect(path)\n self.emit('file', path, stat)\n self.send(path, stat)\n })\n\n function next (err) {\n if (self._extensions.length <= i) {\n return err\n ? self.onStatError(err)\n : self.error(404)\n }\n\n var p = path + '.' + self._extensions[i++]\n\n debug('stat \"%s\"', p)\n fs.stat(p, function (err, stat) {\n if (err) return next(err)\n if (stat.isDirectory()) return next()\n self.emit('file', p, stat)\n self.send(p, stat)\n })\n }\n}\n\n/**\n * Transfer index for `path`.\n *\n * @param {String} path\n * @api private\n */\nSendStream.prototype.sendIndex = function sendIndex (path) {\n var i = -1\n var self = this\n\n function next (err) {\n if (++i >= self._index.length) {\n if (err) return self.onStatError(err)\n return self.error(404)\n }\n\n var p = join(path, self._index[i])\n\n debug('stat \"%s\"', p)\n fs.stat(p, function (err, stat) {\n if (err) return next(err)\n if (stat.isDirectory()) return next()\n self.emit('file', p, stat)\n self.send(p, stat)\n })\n }\n\n next()\n}\n\n/**\n * Stream `path` to the response.\n *\n * @param {String} path\n * @param {Object} options\n * @api private\n */\n\nSendStream.prototype.stream = function stream (path, options) {\n var self = this\n var res = this.res\n\n // pipe\n var stream = fs.createReadStream(path, options)\n this.emit('stream', stream)\n stream.pipe(res)\n\n // cleanup\n function cleanup () {\n destroy(stream, true)\n }\n\n // response finished, cleanup\n onFinished(res, cleanup)\n\n // error handling\n stream.on('error', function onerror (err) {\n // clean up stream early\n cleanup()\n\n // error\n self.onStatError(err)\n })\n\n // end\n stream.on('end', function onend () {\n self.emit('end')\n })\n}\n\n/**\n * Set content-type based on `path`\n * if it hasn't been explicitly set.\n *\n * @param {String} path\n * @api private\n */\n\nSendStream.prototype.type = function type (path) {\n var res = this.res\n\n if (res.getHeader('Content-Type')) return\n\n var type = mime.lookup(path)\n\n if (!type) {\n debug('no content-type')\n return\n }\n\n var charset = mime.charsets.lookup(type)\n\n debug('content-type %s', type)\n res.setHeader('Content-Type', type + (charset ? '; charset=' + charset : ''))\n}\n\n/**\n * Set response header fields, most\n * fields may be pre-defined.\n *\n * @param {String} path\n * @param {Object} stat\n * @api private\n */\n\nSendStream.prototype.setHeader = function setHeader (path, stat) {\n var res = this.res\n\n this.emit('headers', res, path, stat)\n\n if (this._acceptRanges && !res.getHeader('Accept-Ranges')) {\n debug('accept ranges')\n res.setHeader('Accept-Ranges', 'bytes')\n }\n\n if (this._cacheControl && !res.getHeader('Cache-Control')) {\n var cacheControl = 'public, max-age=' + Math.floor(this._maxage / 1000)\n\n if (this._immutable) {\n cacheControl += ', immutable'\n }\n\n debug('cache-control %s', cacheControl)\n res.setHeader('Cache-Control', cacheControl)\n }\n\n if (this._lastModified && !res.getHeader('Last-Modified')) {\n var modified = stat.mtime.toUTCString()\n debug('modified %s', modified)\n res.setHeader('Last-Modified', modified)\n }\n\n if (this._etag && !res.getHeader('ETag')) {\n var val = etag(stat)\n debug('etag %s', val)\n res.setHeader('ETag', val)\n }\n}\n\n/**\n * Clear all headers from a response.\n *\n * @param {object} res\n * @private\n */\n\nfunction clearHeaders (res) {\n var headers = getHeaderNames(res)\n\n for (var i = 0; i < headers.length; i++) {\n res.removeHeader(headers[i])\n }\n}\n\n/**\n * Collapse all leading slashes into a single slash\n *\n * @param {string} str\n * @private\n */\nfunction collapseLeadingSlashes (str) {\n for (var i = 0; i < str.length; i++) {\n if (str[i] !== '/') {\n break\n }\n }\n\n return i > 1\n ? '/' + str.substr(i)\n : str\n}\n\n/**\n * Determine if path parts contain a dotfile.\n *\n * @api private\n */\n\nfunction containsDotFile (parts) {\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i]\n if (part.length > 1 && part[0] === '.') {\n return true\n }\n }\n\n return false\n}\n\n/**\n * Create a Content-Range header.\n *\n * @param {string} type\n * @param {number} size\n * @param {array} [range]\n */\n\nfunction contentRange (type, size, range) {\n return type + ' ' + (range ? range.start + '-' + range.end : '*') + '/' + size\n}\n\n/**\n * Create a minimal HTML document.\n *\n * @param {string} title\n * @param {string} body\n * @private\n */\n\nfunction createHtmlDocument (title, body) {\n return '\\n' +\n '\\n' +\n '\\n' +\n '\\n' +\n '' + title + '\\n' +\n '\\n' +\n '\\n' +\n '
' + body + '
\\n' +\n '\\n' +\n '\\n'\n}\n\n/**\n * Create a HttpError object from simple arguments.\n *\n * @param {number} status\n * @param {Error|object} err\n * @private\n */\n\nfunction createHttpError (status, err) {\n if (!err) {\n return createError(status)\n }\n\n return err instanceof Error\n ? createError(status, err, { expose: false })\n : createError(status, err)\n}\n\n/**\n * decodeURIComponent.\n *\n * Allows V8 to only deoptimize this fn instead of all\n * of send().\n *\n * @param {String} path\n * @api private\n */\n\nfunction decode (path) {\n try {\n return decodeURIComponent(path)\n } catch (err) {\n return -1\n }\n}\n\n/**\n * Get the header names on a respnse.\n *\n * @param {object} res\n * @returns {array[string]}\n * @private\n */\n\nfunction getHeaderNames (res) {\n return typeof res.getHeaderNames !== 'function'\n ? Object.keys(res._headers || {})\n : res.getHeaderNames()\n}\n\n/**\n * Determine if emitter has listeners of a given type.\n *\n * The way to do this check is done three different ways in Node.js >= 0.8\n * so this consolidates them into a minimal set using instance methods.\n *\n * @param {EventEmitter} emitter\n * @param {string} type\n * @returns {boolean}\n * @private\n */\n\nfunction hasListeners (emitter, type) {\n var count = typeof emitter.listenerCount !== 'function'\n ? emitter.listeners(type).length\n : emitter.listenerCount(type)\n\n return count > 0\n}\n\n/**\n * Determine if the response headers have been sent.\n *\n * @param {object} res\n * @returns {boolean}\n * @private\n */\n\nfunction headersSent (res) {\n return typeof res.headersSent !== 'boolean'\n ? Boolean(res._header)\n : res.headersSent\n}\n\n/**\n * Normalize the index option into an array.\n *\n * @param {boolean|string|array} val\n * @param {string} name\n * @private\n */\n\nfunction normalizeList (val, name) {\n var list = [].concat(val || [])\n\n for (var i = 0; i < list.length; i++) {\n if (typeof list[i] !== 'string') {\n throw new TypeError(name + ' must be array of strings or false')\n }\n }\n\n return list\n}\n\n/**\n * Parse an HTTP Date into a number.\n *\n * @param {string} date\n * @private\n */\n\nfunction parseHttpDate (date) {\n var timestamp = date && Date.parse(date)\n\n return typeof timestamp === 'number'\n ? timestamp\n : NaN\n}\n\n/**\n * Parse a HTTP token list.\n *\n * @param {string} str\n * @private\n */\n\nfunction parseTokenList (str) {\n var end = 0\n var list = []\n var start = 0\n\n // gather tokens\n for (var i = 0, len = str.length; i < len; i++) {\n switch (str.charCodeAt(i)) {\n case 0x20: /* */\n if (start === end) {\n start = end = i + 1\n }\n break\n case 0x2c: /* , */\n if (start !== end) {\n list.push(str.substring(start, end))\n }\n start = end = i + 1\n break\n default:\n end = i + 1\n break\n }\n }\n\n // final token\n if (start !== end) {\n list.push(str.substring(start, end))\n }\n\n return list\n}\n\n/**\n * Set an object of headers on a response.\n *\n * @param {object} res\n * @param {object} headers\n * @private\n */\n\nfunction setHeaders (res, headers) {\n var keys = Object.keys(headers)\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n res.setHeader(key, headers[key])\n }\n}\n", "/*!\n * forwarded\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = forwarded\n\n/**\n * Get all addresses in the request, using the `X-Forwarded-For` header.\n *\n * @param {object} req\n * @return {array}\n * @public\n */\n\nfunction forwarded (req) {\n if (!req) {\n throw new TypeError('argument req is required')\n }\n\n // simple header parsing\n var proxyAddrs = parse(req.headers['x-forwarded-for'] || '')\n var socketAddr = getSocketAddr(req)\n var addrs = [socketAddr].concat(proxyAddrs)\n\n // return all addresses\n return addrs\n}\n\n/**\n * Get the socket address for a request.\n *\n * @param {object} req\n * @return {string}\n * @private\n */\n\nfunction getSocketAddr (req) {\n return req.socket\n ? req.socket.remoteAddress\n : req.connection.remoteAddress\n}\n\n/**\n * Parse the X-Forwarded-For header.\n *\n * @param {string} header\n * @private\n */\n\nfunction parse (header) {\n var end = header.length\n var list = []\n var start = header.length\n\n // gather addresses, backwards\n for (var i = header.length - 1; i >= 0; i--) {\n switch (header.charCodeAt(i)) {\n case 0x20: /* */\n if (start === end) {\n start = end = i\n }\n break\n case 0x2c: /* , */\n if (start !== end) {\n list.push(header.substring(start, end))\n }\n start = end = i\n break\n default:\n start = i\n break\n }\n }\n\n // final address\n if (start !== end) {\n list.push(header.substring(start, end))\n }\n\n return list\n}\n", "(function() {\n var expandIPv6, ipaddr, ipv4Part, ipv4Regexes, ipv6Part, ipv6Regexes, matchCIDR, root, zoneIndex;\n\n ipaddr = {};\n\n root = this;\n\n if ((typeof module !== \"undefined\" && module !== null) && module.exports) {\n module.exports = ipaddr;\n } else {\n root['ipaddr'] = ipaddr;\n }\n\n matchCIDR = function(first, second, partSize, cidrBits) {\n var part, shift;\n if (first.length !== second.length) {\n throw new Error(\"ipaddr: cannot match CIDR for objects with different lengths\");\n }\n part = 0;\n while (cidrBits > 0) {\n shift = partSize - cidrBits;\n if (shift < 0) {\n shift = 0;\n }\n if (first[part] >> shift !== second[part] >> shift) {\n return false;\n }\n cidrBits -= partSize;\n part += 1;\n }\n return true;\n };\n\n ipaddr.subnetMatch = function(address, rangeList, defaultName) {\n var k, len, rangeName, rangeSubnets, subnet;\n if (defaultName == null) {\n defaultName = 'unicast';\n }\n for (rangeName in rangeList) {\n rangeSubnets = rangeList[rangeName];\n if (rangeSubnets[0] && !(rangeSubnets[0] instanceof Array)) {\n rangeSubnets = [rangeSubnets];\n }\n for (k = 0, len = rangeSubnets.length; k < len; k++) {\n subnet = rangeSubnets[k];\n if (address.kind() === subnet[0].kind()) {\n if (address.match.apply(address, subnet)) {\n return rangeName;\n }\n }\n }\n }\n return defaultName;\n };\n\n ipaddr.IPv4 = (function() {\n function IPv4(octets) {\n var k, len, octet;\n if (octets.length !== 4) {\n throw new Error(\"ipaddr: ipv4 octet count should be 4\");\n }\n for (k = 0, len = octets.length; k < len; k++) {\n octet = octets[k];\n if (!((0 <= octet && octet <= 255))) {\n throw new Error(\"ipaddr: ipv4 octet should fit in 8 bits\");\n }\n }\n this.octets = octets;\n }\n\n IPv4.prototype.kind = function() {\n return 'ipv4';\n };\n\n IPv4.prototype.toString = function() {\n return this.octets.join(\".\");\n };\n\n IPv4.prototype.toNormalizedString = function() {\n return this.toString();\n };\n\n IPv4.prototype.toByteArray = function() {\n return this.octets.slice(0);\n };\n\n IPv4.prototype.match = function(other, cidrRange) {\n var ref;\n if (cidrRange === void 0) {\n ref = other, other = ref[0], cidrRange = ref[1];\n }\n if (other.kind() !== 'ipv4') {\n throw new Error(\"ipaddr: cannot match ipv4 address with non-ipv4 one\");\n }\n return matchCIDR(this.octets, other.octets, 8, cidrRange);\n };\n\n IPv4.prototype.SpecialRanges = {\n unspecified: [[new IPv4([0, 0, 0, 0]), 8]],\n broadcast: [[new IPv4([255, 255, 255, 255]), 32]],\n multicast: [[new IPv4([224, 0, 0, 0]), 4]],\n linkLocal: [[new IPv4([169, 254, 0, 0]), 16]],\n loopback: [[new IPv4([127, 0, 0, 0]), 8]],\n carrierGradeNat: [[new IPv4([100, 64, 0, 0]), 10]],\n \"private\": [[new IPv4([10, 0, 0, 0]), 8], [new IPv4([172, 16, 0, 0]), 12], [new IPv4([192, 168, 0, 0]), 16]],\n reserved: [[new IPv4([192, 0, 0, 0]), 24], [new IPv4([192, 0, 2, 0]), 24], [new IPv4([192, 88, 99, 0]), 24], [new IPv4([198, 51, 100, 0]), 24], [new IPv4([203, 0, 113, 0]), 24], [new IPv4([240, 0, 0, 0]), 4]]\n };\n\n IPv4.prototype.range = function() {\n return ipaddr.subnetMatch(this, this.SpecialRanges);\n };\n\n IPv4.prototype.toIPv4MappedAddress = function() {\n return ipaddr.IPv6.parse(\"::ffff:\" + (this.toString()));\n };\n\n IPv4.prototype.prefixLengthFromSubnetMask = function() {\n var cidr, i, k, octet, stop, zeros, zerotable;\n zerotable = {\n 0: 8,\n 128: 7,\n 192: 6,\n 224: 5,\n 240: 4,\n 248: 3,\n 252: 2,\n 254: 1,\n 255: 0\n };\n cidr = 0;\n stop = false;\n for (i = k = 3; k >= 0; i = k += -1) {\n octet = this.octets[i];\n if (octet in zerotable) {\n zeros = zerotable[octet];\n if (stop && zeros !== 0) {\n return null;\n }\n if (zeros !== 8) {\n stop = true;\n }\n cidr += zeros;\n } else {\n return null;\n }\n }\n return 32 - cidr;\n };\n\n return IPv4;\n\n })();\n\n ipv4Part = \"(0?\\\\d+|0x[a-f0-9]+)\";\n\n ipv4Regexes = {\n fourOctet: new RegExp(\"^\" + ipv4Part + \"\\\\.\" + ipv4Part + \"\\\\.\" + ipv4Part + \"\\\\.\" + ipv4Part + \"$\", 'i'),\n longValue: new RegExp(\"^\" + ipv4Part + \"$\", 'i')\n };\n\n ipaddr.IPv4.parser = function(string) {\n var match, parseIntAuto, part, shift, value;\n parseIntAuto = function(string) {\n if (string[0] === \"0\" && string[1] !== \"x\") {\n return parseInt(string, 8);\n } else {\n return parseInt(string);\n }\n };\n if (match = string.match(ipv4Regexes.fourOctet)) {\n return (function() {\n var k, len, ref, results;\n ref = match.slice(1, 6);\n results = [];\n for (k = 0, len = ref.length; k < len; k++) {\n part = ref[k];\n results.push(parseIntAuto(part));\n }\n return results;\n })();\n } else if (match = string.match(ipv4Regexes.longValue)) {\n value = parseIntAuto(match[1]);\n if (value > 0xffffffff || value < 0) {\n throw new Error(\"ipaddr: address outside defined range\");\n }\n return ((function() {\n var k, results;\n results = [];\n for (shift = k = 0; k <= 24; shift = k += 8) {\n results.push((value >> shift) & 0xff);\n }\n return results;\n })()).reverse();\n } else {\n return null;\n }\n };\n\n ipaddr.IPv6 = (function() {\n function IPv6(parts, zoneId) {\n var i, k, l, len, part, ref;\n if (parts.length === 16) {\n this.parts = [];\n for (i = k = 0; k <= 14; i = k += 2) {\n this.parts.push((parts[i] << 8) | parts[i + 1]);\n }\n } else if (parts.length === 8) {\n this.parts = parts;\n } else {\n throw new Error(\"ipaddr: ipv6 part count should be 8 or 16\");\n }\n ref = this.parts;\n for (l = 0, len = ref.length; l < len; l++) {\n part = ref[l];\n if (!((0 <= part && part <= 0xffff))) {\n throw new Error(\"ipaddr: ipv6 part should fit in 16 bits\");\n }\n }\n if (zoneId) {\n this.zoneId = zoneId;\n }\n }\n\n IPv6.prototype.kind = function() {\n return 'ipv6';\n };\n\n IPv6.prototype.toString = function() {\n return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/, '::');\n };\n\n IPv6.prototype.toRFC5952String = function() {\n var bestMatchIndex, bestMatchLength, match, regex, string;\n regex = /((^|:)(0(:|$)){2,})/g;\n string = this.toNormalizedString();\n bestMatchIndex = 0;\n bestMatchLength = -1;\n while ((match = regex.exec(string))) {\n if (match[0].length > bestMatchLength) {\n bestMatchIndex = match.index;\n bestMatchLength = match[0].length;\n }\n }\n if (bestMatchLength < 0) {\n return string;\n }\n return string.substring(0, bestMatchIndex) + '::' + string.substring(bestMatchIndex + bestMatchLength);\n };\n\n IPv6.prototype.toByteArray = function() {\n var bytes, k, len, part, ref;\n bytes = [];\n ref = this.parts;\n for (k = 0, len = ref.length; k < len; k++) {\n part = ref[k];\n bytes.push(part >> 8);\n bytes.push(part & 0xff);\n }\n return bytes;\n };\n\n IPv6.prototype.toNormalizedString = function() {\n var addr, part, suffix;\n addr = ((function() {\n var k, len, ref, results;\n ref = this.parts;\n results = [];\n for (k = 0, len = ref.length; k < len; k++) {\n part = ref[k];\n results.push(part.toString(16));\n }\n return results;\n }).call(this)).join(\":\");\n suffix = '';\n if (this.zoneId) {\n suffix = '%' + this.zoneId;\n }\n return addr + suffix;\n };\n\n IPv6.prototype.toFixedLengthString = function() {\n var addr, part, suffix;\n addr = ((function() {\n var k, len, ref, results;\n ref = this.parts;\n results = [];\n for (k = 0, len = ref.length; k < len; k++) {\n part = ref[k];\n results.push(part.toString(16).padStart(4, '0'));\n }\n return results;\n }).call(this)).join(\":\");\n suffix = '';\n if (this.zoneId) {\n suffix = '%' + this.zoneId;\n }\n return addr + suffix;\n };\n\n IPv6.prototype.match = function(other, cidrRange) {\n var ref;\n if (cidrRange === void 0) {\n ref = other, other = ref[0], cidrRange = ref[1];\n }\n if (other.kind() !== 'ipv6') {\n throw new Error(\"ipaddr: cannot match ipv6 address with non-ipv6 one\");\n }\n return matchCIDR(this.parts, other.parts, 16, cidrRange);\n };\n\n IPv6.prototype.SpecialRanges = {\n unspecified: [new IPv6([0, 0, 0, 0, 0, 0, 0, 0]), 128],\n linkLocal: [new IPv6([0xfe80, 0, 0, 0, 0, 0, 0, 0]), 10],\n multicast: [new IPv6([0xff00, 0, 0, 0, 0, 0, 0, 0]), 8],\n loopback: [new IPv6([0, 0, 0, 0, 0, 0, 0, 1]), 128],\n uniqueLocal: [new IPv6([0xfc00, 0, 0, 0, 0, 0, 0, 0]), 7],\n ipv4Mapped: [new IPv6([0, 0, 0, 0, 0, 0xffff, 0, 0]), 96],\n rfc6145: [new IPv6([0, 0, 0, 0, 0xffff, 0, 0, 0]), 96],\n rfc6052: [new IPv6([0x64, 0xff9b, 0, 0, 0, 0, 0, 0]), 96],\n '6to4': [new IPv6([0x2002, 0, 0, 0, 0, 0, 0, 0]), 16],\n teredo: [new IPv6([0x2001, 0, 0, 0, 0, 0, 0, 0]), 32],\n reserved: [[new IPv6([0x2001, 0xdb8, 0, 0, 0, 0, 0, 0]), 32]]\n };\n\n IPv6.prototype.range = function() {\n return ipaddr.subnetMatch(this, this.SpecialRanges);\n };\n\n IPv6.prototype.isIPv4MappedAddress = function() {\n return this.range() === 'ipv4Mapped';\n };\n\n IPv6.prototype.toIPv4Address = function() {\n var high, low, ref;\n if (!this.isIPv4MappedAddress()) {\n throw new Error(\"ipaddr: trying to convert a generic ipv6 address to ipv4\");\n }\n ref = this.parts.slice(-2), high = ref[0], low = ref[1];\n return new ipaddr.IPv4([high >> 8, high & 0xff, low >> 8, low & 0xff]);\n };\n\n IPv6.prototype.prefixLengthFromSubnetMask = function() {\n var cidr, i, k, part, stop, zeros, zerotable;\n zerotable = {\n 0: 16,\n 32768: 15,\n 49152: 14,\n 57344: 13,\n 61440: 12,\n 63488: 11,\n 64512: 10,\n 65024: 9,\n 65280: 8,\n 65408: 7,\n 65472: 6,\n 65504: 5,\n 65520: 4,\n 65528: 3,\n 65532: 2,\n 65534: 1,\n 65535: 0\n };\n cidr = 0;\n stop = false;\n for (i = k = 7; k >= 0; i = k += -1) {\n part = this.parts[i];\n if (part in zerotable) {\n zeros = zerotable[part];\n if (stop && zeros !== 0) {\n return null;\n }\n if (zeros !== 16) {\n stop = true;\n }\n cidr += zeros;\n } else {\n return null;\n }\n }\n return 128 - cidr;\n };\n\n return IPv6;\n\n })();\n\n ipv6Part = \"(?:[0-9a-f]+::?)+\";\n\n zoneIndex = \"%[0-9a-z]{1,}\";\n\n ipv6Regexes = {\n zoneIndex: new RegExp(zoneIndex, 'i'),\n \"native\": new RegExp(\"^(::)?(\" + ipv6Part + \")?([0-9a-f]+)?(::)?(\" + zoneIndex + \")?$\", 'i'),\n transitional: new RegExp((\"^((?:\" + ipv6Part + \")|(?:::)(?:\" + ipv6Part + \")?)\") + (ipv4Part + \"\\\\.\" + ipv4Part + \"\\\\.\" + ipv4Part + \"\\\\.\" + ipv4Part) + (\"(\" + zoneIndex + \")?$\"), 'i')\n };\n\n expandIPv6 = function(string, parts) {\n var colonCount, lastColon, part, replacement, replacementCount, zoneId;\n if (string.indexOf('::') !== string.lastIndexOf('::')) {\n return null;\n }\n zoneId = (string.match(ipv6Regexes['zoneIndex']) || [])[0];\n if (zoneId) {\n zoneId = zoneId.substring(1);\n string = string.replace(/%.+$/, '');\n }\n colonCount = 0;\n lastColon = -1;\n while ((lastColon = string.indexOf(':', lastColon + 1)) >= 0) {\n colonCount++;\n }\n if (string.substr(0, 2) === '::') {\n colonCount--;\n }\n if (string.substr(-2, 2) === '::') {\n colonCount--;\n }\n if (colonCount > parts) {\n return null;\n }\n replacementCount = parts - colonCount;\n replacement = ':';\n while (replacementCount--) {\n replacement += '0:';\n }\n string = string.replace('::', replacement);\n if (string[0] === ':') {\n string = string.slice(1);\n }\n if (string[string.length - 1] === ':') {\n string = string.slice(0, -1);\n }\n parts = (function() {\n var k, len, ref, results;\n ref = string.split(\":\");\n results = [];\n for (k = 0, len = ref.length; k < len; k++) {\n part = ref[k];\n results.push(parseInt(part, 16));\n }\n return results;\n })();\n return {\n parts: parts,\n zoneId: zoneId\n };\n };\n\n ipaddr.IPv6.parser = function(string) {\n var addr, k, len, match, octet, octets, zoneId;\n if (ipv6Regexes['native'].test(string)) {\n return expandIPv6(string, 8);\n } else if (match = string.match(ipv6Regexes['transitional'])) {\n zoneId = match[6] || '';\n addr = expandIPv6(match[1].slice(0, -1) + zoneId, 6);\n if (addr.parts) {\n octets = [parseInt(match[2]), parseInt(match[3]), parseInt(match[4]), parseInt(match[5])];\n for (k = 0, len = octets.length; k < len; k++) {\n octet = octets[k];\n if (!((0 <= octet && octet <= 255))) {\n return null;\n }\n }\n addr.parts.push(octets[0] << 8 | octets[1]);\n addr.parts.push(octets[2] << 8 | octets[3]);\n return {\n parts: addr.parts,\n zoneId: addr.zoneId\n };\n }\n }\n return null;\n };\n\n ipaddr.IPv4.isIPv4 = ipaddr.IPv6.isIPv6 = function(string) {\n return this.parser(string) !== null;\n };\n\n ipaddr.IPv4.isValid = function(string) {\n var e;\n try {\n new this(this.parser(string));\n return true;\n } catch (error1) {\n e = error1;\n return false;\n }\n };\n\n ipaddr.IPv4.isValidFourPartDecimal = function(string) {\n if (ipaddr.IPv4.isValid(string) && string.match(/^(0|[1-9]\\d*)(\\.(0|[1-9]\\d*)){3}$/)) {\n return true;\n } else {\n return false;\n }\n };\n\n ipaddr.IPv6.isValid = function(string) {\n var addr, e;\n if (typeof string === \"string\" && string.indexOf(\":\") === -1) {\n return false;\n }\n try {\n addr = this.parser(string);\n new this(addr.parts, addr.zoneId);\n return true;\n } catch (error1) {\n e = error1;\n return false;\n }\n };\n\n ipaddr.IPv4.parse = function(string) {\n var parts;\n parts = this.parser(string);\n if (parts === null) {\n throw new Error(\"ipaddr: string is not formatted like ip address\");\n }\n return new this(parts);\n };\n\n ipaddr.IPv6.parse = function(string) {\n var addr;\n addr = this.parser(string);\n if (addr.parts === null) {\n throw new Error(\"ipaddr: string is not formatted like ip address\");\n }\n return new this(addr.parts, addr.zoneId);\n };\n\n ipaddr.IPv4.parseCIDR = function(string) {\n var maskLength, match, parsed;\n if (match = string.match(/^(.+)\\/(\\d+)$/)) {\n maskLength = parseInt(match[2]);\n if (maskLength >= 0 && maskLength <= 32) {\n parsed = [this.parse(match[1]), maskLength];\n Object.defineProperty(parsed, 'toString', {\n value: function() {\n return this.join('/');\n }\n });\n return parsed;\n }\n }\n throw new Error(\"ipaddr: string is not formatted like an IPv4 CIDR range\");\n };\n\n ipaddr.IPv4.subnetMaskFromPrefixLength = function(prefix) {\n var filledOctetCount, j, octets;\n prefix = parseInt(prefix);\n if (prefix < 0 || prefix > 32) {\n throw new Error('ipaddr: invalid IPv4 prefix length');\n }\n octets = [0, 0, 0, 0];\n j = 0;\n filledOctetCount = Math.floor(prefix / 8);\n while (j < filledOctetCount) {\n octets[j] = 255;\n j++;\n }\n if (filledOctetCount < 4) {\n octets[filledOctetCount] = Math.pow(2, prefix % 8) - 1 << 8 - (prefix % 8);\n }\n return new this(octets);\n };\n\n ipaddr.IPv4.broadcastAddressFromCIDR = function(string) {\n var cidr, error, i, ipInterfaceOctets, octets, subnetMaskOctets;\n try {\n cidr = this.parseCIDR(string);\n ipInterfaceOctets = cidr[0].toByteArray();\n subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n octets = [];\n i = 0;\n while (i < 4) {\n octets.push(parseInt(ipInterfaceOctets[i], 10) | parseInt(subnetMaskOctets[i], 10) ^ 255);\n i++;\n }\n return new this(octets);\n } catch (error1) {\n error = error1;\n throw new Error('ipaddr: the address does not have IPv4 CIDR format');\n }\n };\n\n ipaddr.IPv4.networkAddressFromCIDR = function(string) {\n var cidr, error, i, ipInterfaceOctets, octets, subnetMaskOctets;\n try {\n cidr = this.parseCIDR(string);\n ipInterfaceOctets = cidr[0].toByteArray();\n subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n octets = [];\n i = 0;\n while (i < 4) {\n octets.push(parseInt(ipInterfaceOctets[i], 10) & parseInt(subnetMaskOctets[i], 10));\n i++;\n }\n return new this(octets);\n } catch (error1) {\n error = error1;\n throw new Error('ipaddr: the address does not have IPv4 CIDR format');\n }\n };\n\n ipaddr.IPv6.parseCIDR = function(string) {\n var maskLength, match, parsed;\n if (match = string.match(/^(.+)\\/(\\d+)$/)) {\n maskLength = parseInt(match[2]);\n if (maskLength >= 0 && maskLength <= 128) {\n parsed = [this.parse(match[1]), maskLength];\n Object.defineProperty(parsed, 'toString', {\n value: function() {\n return this.join('/');\n }\n });\n return parsed;\n }\n }\n throw new Error(\"ipaddr: string is not formatted like an IPv6 CIDR range\");\n };\n\n ipaddr.isValid = function(string) {\n return ipaddr.IPv6.isValid(string) || ipaddr.IPv4.isValid(string);\n };\n\n ipaddr.parse = function(string) {\n if (ipaddr.IPv6.isValid(string)) {\n return ipaddr.IPv6.parse(string);\n } else if (ipaddr.IPv4.isValid(string)) {\n return ipaddr.IPv4.parse(string);\n } else {\n throw new Error(\"ipaddr: the address has neither IPv6 nor IPv4 format\");\n }\n };\n\n ipaddr.parseCIDR = function(string) {\n var e;\n try {\n return ipaddr.IPv6.parseCIDR(string);\n } catch (error1) {\n e = error1;\n try {\n return ipaddr.IPv4.parseCIDR(string);\n } catch (error1) {\n e = error1;\n throw new Error(\"ipaddr: the address has neither IPv6 nor IPv4 CIDR format\");\n }\n }\n };\n\n ipaddr.fromByteArray = function(bytes) {\n var length;\n length = bytes.length;\n if (length === 4) {\n return new ipaddr.IPv4(bytes);\n } else if (length === 16) {\n return new ipaddr.IPv6(bytes);\n } else {\n throw new Error(\"ipaddr: the binary input is neither an IPv6 nor IPv4 address\");\n }\n };\n\n ipaddr.process = function(string) {\n var addr;\n addr = this.parse(string);\n if (addr.kind() === 'ipv6' && addr.isIPv4MappedAddress()) {\n return addr.toIPv4Address();\n } else {\n return addr;\n }\n };\n\n}).call(this);\n", "/*!\n * proxy-addr\n * Copyright(c) 2014-2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = proxyaddr\nmodule.exports.all = alladdrs\nmodule.exports.compile = compile\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar forwarded = require('forwarded')\nvar ipaddr = require('ipaddr.js')\n\n/**\n * Variables.\n * @private\n */\n\nvar DIGIT_REGEXP = /^[0-9]+$/\nvar isip = ipaddr.isValid\nvar parseip = ipaddr.parse\n\n/**\n * Pre-defined IP ranges.\n * @private\n */\n\nvar IP_RANGES = {\n linklocal: ['169.254.0.0/16', 'fe80::/10'],\n loopback: ['127.0.0.1/8', '::1/128'],\n uniquelocal: ['10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16', 'fc00::/7']\n}\n\n/**\n * Get all addresses in the request, optionally stopping\n * at the first untrusted.\n *\n * @param {Object} request\n * @param {Function|Array|String} [trust]\n * @public\n */\n\nfunction alladdrs (req, trust) {\n // get addresses\n var addrs = forwarded(req)\n\n if (!trust) {\n // Return all addresses\n return addrs\n }\n\n if (typeof trust !== 'function') {\n trust = compile(trust)\n }\n\n for (var i = 0; i < addrs.length - 1; i++) {\n if (trust(addrs[i], i)) continue\n\n addrs.length = i + 1\n }\n\n return addrs\n}\n\n/**\n * Compile argument into trust function.\n *\n * @param {Array|String} val\n * @private\n */\n\nfunction compile (val) {\n if (!val) {\n throw new TypeError('argument is required')\n }\n\n var trust\n\n if (typeof val === 'string') {\n trust = [val]\n } else if (Array.isArray(val)) {\n trust = val.slice()\n } else {\n throw new TypeError('unsupported trust argument')\n }\n\n for (var i = 0; i < trust.length; i++) {\n val = trust[i]\n\n if (!Object.prototype.hasOwnProperty.call(IP_RANGES, val)) {\n continue\n }\n\n // Splice in pre-defined range\n val = IP_RANGES[val]\n trust.splice.apply(trust, [i, 1].concat(val))\n i += val.length - 1\n }\n\n return compileTrust(compileRangeSubnets(trust))\n}\n\n/**\n * Compile `arr` elements into range subnets.\n *\n * @param {Array} arr\n * @private\n */\n\nfunction compileRangeSubnets (arr) {\n var rangeSubnets = new Array(arr.length)\n\n for (var i = 0; i < arr.length; i++) {\n rangeSubnets[i] = parseipNotation(arr[i])\n }\n\n return rangeSubnets\n}\n\n/**\n * Compile range subnet array into trust function.\n *\n * @param {Array} rangeSubnets\n * @private\n */\n\nfunction compileTrust (rangeSubnets) {\n // Return optimized function based on length\n var len = rangeSubnets.length\n return len === 0\n ? trustNone\n : len === 1\n ? trustSingle(rangeSubnets[0])\n : trustMulti(rangeSubnets)\n}\n\n/**\n * Parse IP notation string into range subnet.\n *\n * @param {String} note\n * @private\n */\n\nfunction parseipNotation (note) {\n var pos = note.lastIndexOf('/')\n var str = pos !== -1\n ? note.substring(0, pos)\n : note\n\n if (!isip(str)) {\n throw new TypeError('invalid IP address: ' + str)\n }\n\n var ip = parseip(str)\n\n if (pos === -1 && ip.kind() === 'ipv6' && ip.isIPv4MappedAddress()) {\n // Store as IPv4\n ip = ip.toIPv4Address()\n }\n\n var max = ip.kind() === 'ipv6'\n ? 128\n : 32\n\n var range = pos !== -1\n ? note.substring(pos + 1, note.length)\n : null\n\n if (range === null) {\n range = max\n } else if (DIGIT_REGEXP.test(range)) {\n range = parseInt(range, 10)\n } else if (ip.kind() === 'ipv4' && isip(range)) {\n range = parseNetmask(range)\n } else {\n range = null\n }\n\n if (range <= 0 || range > max) {\n throw new TypeError('invalid range on address: ' + note)\n }\n\n return [ip, range]\n}\n\n/**\n * Parse netmask string into CIDR range.\n *\n * @param {String} netmask\n * @private\n */\n\nfunction parseNetmask (netmask) {\n var ip = parseip(netmask)\n var kind = ip.kind()\n\n return kind === 'ipv4'\n ? ip.prefixLengthFromSubnetMask()\n : null\n}\n\n/**\n * Determine address of proxied request.\n *\n * @param {Object} request\n * @param {Function|Array|String} trust\n * @public\n */\n\nfunction proxyaddr (req, trust) {\n if (!req) {\n throw new TypeError('req argument is required')\n }\n\n if (!trust) {\n throw new TypeError('trust argument is required')\n }\n\n var addrs = alladdrs(req, trust)\n var addr = addrs[addrs.length - 1]\n\n return addr\n}\n\n/**\n * Static trust function to trust nothing.\n *\n * @private\n */\n\nfunction trustNone () {\n return false\n}\n\n/**\n * Compile trust function for multiple subnets.\n *\n * @param {Array} subnets\n * @private\n */\n\nfunction trustMulti (subnets) {\n return function trust (addr) {\n if (!isip(addr)) return false\n\n var ip = parseip(addr)\n var ipconv\n var kind = ip.kind()\n\n for (var i = 0; i < subnets.length; i++) {\n var subnet = subnets[i]\n var subnetip = subnet[0]\n var subnetkind = subnetip.kind()\n var subnetrange = subnet[1]\n var trusted = ip\n\n if (kind !== subnetkind) {\n if (subnetkind === 'ipv4' && !ip.isIPv4MappedAddress()) {\n // Incompatible IP addresses\n continue\n }\n\n if (!ipconv) {\n // Convert IP to match subnet IP kind\n ipconv = subnetkind === 'ipv4'\n ? ip.toIPv4Address()\n : ip.toIPv4MappedAddress()\n }\n\n trusted = ipconv\n }\n\n if (trusted.match(subnetip, subnetrange)) {\n return true\n }\n }\n\n return false\n }\n}\n\n/**\n * Compile trust function for single subnet.\n *\n * @param {Object} subnet\n * @private\n */\n\nfunction trustSingle (subnet) {\n var subnetip = subnet[0]\n var subnetkind = subnetip.kind()\n var subnetisipv4 = subnetkind === 'ipv4'\n var subnetrange = subnet[1]\n\n return function trust (addr) {\n if (!isip(addr)) return false\n\n var ip = parseip(addr)\n var kind = ip.kind()\n\n if (kind !== subnetkind) {\n if (subnetisipv4 && !ip.isIPv4MappedAddress()) {\n // Incompatible IP addresses\n return false\n }\n\n // Convert IP to match subnet IP kind\n ip = subnetisipv4\n ? ip.toIPv4Address()\n : ip.toIPv4MappedAddress()\n }\n\n return ip.match(subnetip, subnetrange)\n }\n}\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @api private\n */\n\nvar Buffer = require('safe-buffer').Buffer\nvar contentDisposition = require('content-disposition');\nvar contentType = require('content-type');\nvar deprecate = require('depd')('express');\nvar flatten = require('array-flatten');\nvar mime = require('send').mime;\nvar etag = require('etag');\nvar proxyaddr = require('proxy-addr');\nvar qs = require('qs');\nvar querystring = require('querystring');\n\n/**\n * Return strong ETag for `body`.\n *\n * @param {String|Buffer} body\n * @param {String} [encoding]\n * @return {String}\n * @api private\n */\n\nexports.etag = createETagGenerator({ weak: false })\n\n/**\n * Return weak ETag for `body`.\n *\n * @param {String|Buffer} body\n * @param {String} [encoding]\n * @return {String}\n * @api private\n */\n\nexports.wetag = createETagGenerator({ weak: true })\n\n/**\n * Check if `path` looks absolute.\n *\n * @param {String} path\n * @return {Boolean}\n * @api private\n */\n\nexports.isAbsolute = function(path){\n if ('/' === path[0]) return true;\n if (':' === path[1] && ('\\\\' === path[2] || '/' === path[2])) return true; // Windows device path\n if ('\\\\\\\\' === path.substring(0, 2)) return true; // Microsoft Azure absolute path\n};\n\n/**\n * Flatten the given `arr`.\n *\n * @param {Array} arr\n * @return {Array}\n * @api private\n */\n\nexports.flatten = deprecate.function(flatten,\n 'utils.flatten: use array-flatten npm module instead');\n\n/**\n * Normalize the given `type`, for example \"html\" becomes \"text/html\".\n *\n * @param {String} type\n * @return {Object}\n * @api private\n */\n\nexports.normalizeType = function(type){\n return ~type.indexOf('/')\n ? acceptParams(type)\n : { value: mime.lookup(type), params: {} };\n};\n\n/**\n * Normalize `types`, for example \"html\" becomes \"text/html\".\n *\n * @param {Array} types\n * @return {Array}\n * @api private\n */\n\nexports.normalizeTypes = function(types){\n var ret = [];\n\n for (var i = 0; i < types.length; ++i) {\n ret.push(exports.normalizeType(types[i]));\n }\n\n return ret;\n};\n\n/**\n * Generate Content-Disposition header appropriate for the filename.\n * non-ascii filenames are urlencoded and a filename* parameter is added\n *\n * @param {String} filename\n * @return {String}\n * @api private\n */\n\nexports.contentDisposition = deprecate.function(contentDisposition,\n 'utils.contentDisposition: use content-disposition npm module instead');\n\n/**\n * Parse accept params `str` returning an\n * object with `.value`, `.quality` and `.params`.\n * also includes `.originalIndex` for stable sorting\n *\n * @param {String} str\n * @param {Number} index\n * @return {Object}\n * @api private\n */\n\nfunction acceptParams(str, index) {\n var parts = str.split(/ *; */);\n var ret = { value: parts[0], quality: 1, params: {}, originalIndex: index };\n\n for (var i = 1; i < parts.length; ++i) {\n var pms = parts[i].split(/ *= */);\n if ('q' === pms[0]) {\n ret.quality = parseFloat(pms[1]);\n } else {\n ret.params[pms[0]] = pms[1];\n }\n }\n\n return ret;\n}\n\n/**\n * Compile \"etag\" value to function.\n *\n * @param {Boolean|String|Function} val\n * @return {Function}\n * @api private\n */\n\nexports.compileETag = function(val) {\n var fn;\n\n if (typeof val === 'function') {\n return val;\n }\n\n switch (val) {\n case true:\n case 'weak':\n fn = exports.wetag;\n break;\n case false:\n break;\n case 'strong':\n fn = exports.etag;\n break;\n default:\n throw new TypeError('unknown value for etag function: ' + val);\n }\n\n return fn;\n}\n\n/**\n * Compile \"query parser\" value to function.\n *\n * @param {String|Function} val\n * @return {Function}\n * @api private\n */\n\nexports.compileQueryParser = function compileQueryParser(val) {\n var fn;\n\n if (typeof val === 'function') {\n return val;\n }\n\n switch (val) {\n case true:\n case 'simple':\n fn = querystring.parse;\n break;\n case false:\n fn = newObject;\n break;\n case 'extended':\n fn = parseExtendedQueryString;\n break;\n default:\n throw new TypeError('unknown value for query parser function: ' + val);\n }\n\n return fn;\n}\n\n/**\n * Compile \"proxy trust\" value to function.\n *\n * @param {Boolean|String|Number|Array|Function} val\n * @return {Function}\n * @api private\n */\n\nexports.compileTrust = function(val) {\n if (typeof val === 'function') return val;\n\n if (val === true) {\n // Support plain true/false\n return function(){ return true };\n }\n\n if (typeof val === 'number') {\n // Support trusting hop count\n return function(a, i){ return i < val };\n }\n\n if (typeof val === 'string') {\n // Support comma-separated values\n val = val.split(',')\n .map(function (v) { return v.trim() })\n }\n\n return proxyaddr.compile(val || []);\n}\n\n/**\n * Set the charset in a given Content-Type string.\n *\n * @param {String} type\n * @param {String} charset\n * @return {String}\n * @api private\n */\n\nexports.setCharset = function setCharset(type, charset) {\n if (!type || !charset) {\n return type;\n }\n\n // parse type\n var parsed = contentType.parse(type);\n\n // set charset\n parsed.parameters.charset = charset;\n\n // format type\n return contentType.format(parsed);\n};\n\n/**\n * Create an ETag generator function, generating ETags with\n * the given options.\n *\n * @param {object} options\n * @return {function}\n * @private\n */\n\nfunction createETagGenerator (options) {\n return function generateETag (body, encoding) {\n var buf = !Buffer.isBuffer(body)\n ? Buffer.from(body, encoding)\n : body\n\n return etag(buf, options)\n }\n}\n\n/**\n * Parse an extended query string with qs.\n *\n * @return {Object}\n * @private\n */\n\nfunction parseExtendedQueryString(str) {\n return qs.parse(str, {\n allowPrototypes: true\n });\n}\n\n/**\n * Return new empty object.\n *\n * @return {Object}\n * @api private\n */\n\nfunction newObject() {\n return {};\n}\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar finalhandler = require('finalhandler');\nvar Router = require('./router');\nvar methods = require('methods');\nvar middleware = require('./middleware/init');\nvar query = require('./middleware/query');\nvar debug = require('debug')('express:application');\nvar View = require('./view');\nvar http = require('http');\nvar compileETag = require('./utils').compileETag;\nvar compileQueryParser = require('./utils').compileQueryParser;\nvar compileTrust = require('./utils').compileTrust;\nvar deprecate = require('depd')('express');\nvar flatten = require('array-flatten');\nvar merge = require('utils-merge');\nvar resolve = require('path').resolve;\nvar setPrototypeOf = require('setprototypeof')\n\n/**\n * Module variables.\n * @private\n */\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty\nvar slice = Array.prototype.slice;\n\n/**\n * Application prototype.\n */\n\nvar app = exports = module.exports = {};\n\n/**\n * Variable for trust proxy inheritance back-compat\n * @private\n */\n\nvar trustProxyDefaultSymbol = '@@symbol:trust_proxy_default';\n\n/**\n * Initialize the server.\n *\n * - setup default configuration\n * - setup default middleware\n * - setup route reflection methods\n *\n * @private\n */\n\napp.init = function init() {\n this.cache = {};\n this.engines = {};\n this.settings = {};\n\n this.defaultConfiguration();\n};\n\n/**\n * Initialize application configuration.\n * @private\n */\n\napp.defaultConfiguration = function defaultConfiguration() {\n var env = process.env.NODE_ENV || 'development';\n\n // default settings\n this.enable('x-powered-by');\n this.set('etag', 'weak');\n this.set('env', env);\n this.set('query parser', 'extended');\n this.set('subdomain offset', 2);\n this.set('trust proxy', false);\n\n // trust proxy inherit back-compat\n Object.defineProperty(this.settings, trustProxyDefaultSymbol, {\n configurable: true,\n value: true\n });\n\n debug('booting in %s mode', env);\n\n this.on('mount', function onmount(parent) {\n // inherit trust proxy\n if (this.settings[trustProxyDefaultSymbol] === true\n && typeof parent.settings['trust proxy fn'] === 'function') {\n delete this.settings['trust proxy'];\n delete this.settings['trust proxy fn'];\n }\n\n // inherit protos\n setPrototypeOf(this.request, parent.request)\n setPrototypeOf(this.response, parent.response)\n setPrototypeOf(this.engines, parent.engines)\n setPrototypeOf(this.settings, parent.settings)\n });\n\n // setup locals\n this.locals = Object.create(null);\n\n // top-most app is mounted at /\n this.mountpath = '/';\n\n // default locals\n this.locals.settings = this.settings;\n\n // default configuration\n this.set('view', View);\n this.set('views', resolve('views'));\n this.set('jsonp callback name', 'callback');\n\n if (env === 'production') {\n this.enable('view cache');\n }\n\n Object.defineProperty(this, 'router', {\n get: function() {\n throw new Error('\\'app.router\\' is deprecated!\\nPlease see the 3.x to 4.x migration guide for details on how to update your app.');\n }\n });\n};\n\n/**\n * lazily adds the base router if it has not yet been added.\n *\n * We cannot add the base router in the defaultConfiguration because\n * it reads app settings which might be set after that has run.\n *\n * @private\n */\napp.lazyrouter = function lazyrouter() {\n if (!this._router) {\n this._router = new Router({\n caseSensitive: this.enabled('case sensitive routing'),\n strict: this.enabled('strict routing')\n });\n\n this._router.use(query(this.get('query parser fn')));\n this._router.use(middleware.init(this));\n }\n};\n\n/**\n * Dispatch a req, res pair into the application. Starts pipeline processing.\n *\n * If no callback is provided, then default error handlers will respond\n * in the event of an error bubbling through the stack.\n *\n * @private\n */\n\napp.handle = function handle(req, res, callback) {\n var router = this._router;\n\n // final handler\n var done = callback || finalhandler(req, res, {\n env: this.get('env'),\n onerror: logerror.bind(this)\n });\n\n // no routes\n if (!router) {\n debug('no routes defined on app');\n done();\n return;\n }\n\n router.handle(req, res, done);\n};\n\n/**\n * Proxy `Router#use()` to add middleware to the app router.\n * See Router#use() documentation for details.\n *\n * If the _fn_ parameter is an express app, then it will be\n * mounted at the _route_ specified.\n *\n * @public\n */\n\napp.use = function use(fn) {\n var offset = 0;\n var path = '/';\n\n // default path to '/'\n // disambiguate app.use([fn])\n if (typeof fn !== 'function') {\n var arg = fn;\n\n while (Array.isArray(arg) && arg.length !== 0) {\n arg = arg[0];\n }\n\n // first arg is the path\n if (typeof arg !== 'function') {\n offset = 1;\n path = fn;\n }\n }\n\n var fns = flatten(slice.call(arguments, offset));\n\n if (fns.length === 0) {\n throw new TypeError('app.use() requires a middleware function')\n }\n\n // setup router\n this.lazyrouter();\n var router = this._router;\n\n fns.forEach(function (fn) {\n // non-express app\n if (!fn || !fn.handle || !fn.set) {\n return router.use(path, fn);\n }\n\n debug('.use app under %s', path);\n fn.mountpath = path;\n fn.parent = this;\n\n // restore .app property on req and res\n router.use(path, function mounted_app(req, res, next) {\n var orig = req.app;\n fn.handle(req, res, function (err) {\n setPrototypeOf(req, orig.request)\n setPrototypeOf(res, orig.response)\n next(err);\n });\n });\n\n // mounted an app\n fn.emit('mount', this);\n }, this);\n\n return this;\n};\n\n/**\n * Proxy to the app `Router#route()`\n * Returns a new `Route` instance for the _path_.\n *\n * Routes are isolated middleware stacks for specific paths.\n * See the Route api docs for details.\n *\n * @public\n */\n\napp.route = function route(path) {\n this.lazyrouter();\n return this._router.route(path);\n};\n\n/**\n * Register the given template engine callback `fn`\n * as `ext`.\n *\n * By default will `require()` the engine based on the\n * file extension. For example if you try to render\n * a \"foo.ejs\" file Express will invoke the following internally:\n *\n * app.engine('ejs', require('ejs').__express);\n *\n * For engines that do not provide `.__express` out of the box,\n * or if you wish to \"map\" a different extension to the template engine\n * you may use this method. For example mapping the EJS template engine to\n * \".html\" files:\n *\n * app.engine('html', require('ejs').renderFile);\n *\n * In this case EJS provides a `.renderFile()` method with\n * the same signature that Express expects: `(path, options, callback)`,\n * though note that it aliases this method as `ejs.__express` internally\n * so if you're using \".ejs\" extensions you don't need to do anything.\n *\n * Some template engines do not follow this convention, the\n * [Consolidate.js](https://github.com/tj/consolidate.js)\n * library was created to map all of node's popular template\n * engines to follow this convention, thus allowing them to\n * work seamlessly within Express.\n *\n * @param {String} ext\n * @param {Function} fn\n * @return {app} for chaining\n * @public\n */\n\napp.engine = function engine(ext, fn) {\n if (typeof fn !== 'function') {\n throw new Error('callback function required');\n }\n\n // get file extension\n var extension = ext[0] !== '.'\n ? '.' + ext\n : ext;\n\n // store engine\n this.engines[extension] = fn;\n\n return this;\n};\n\n/**\n * Proxy to `Router#param()` with one added api feature. The _name_ parameter\n * can be an array of names.\n *\n * See the Router#param() docs for more details.\n *\n * @param {String|Array} name\n * @param {Function} fn\n * @return {app} for chaining\n * @public\n */\n\napp.param = function param(name, fn) {\n this.lazyrouter();\n\n if (Array.isArray(name)) {\n for (var i = 0; i < name.length; i++) {\n this.param(name[i], fn);\n }\n\n return this;\n }\n\n this._router.param(name, fn);\n\n return this;\n};\n\n/**\n * Assign `setting` to `val`, or return `setting`'s value.\n *\n * app.set('foo', 'bar');\n * app.set('foo');\n * // => \"bar\"\n *\n * Mounted servers inherit their parent server's settings.\n *\n * @param {String} setting\n * @param {*} [val]\n * @return {Server} for chaining\n * @public\n */\n\napp.set = function set(setting, val) {\n if (arguments.length === 1) {\n // app.get(setting)\n var settings = this.settings\n\n while (settings && settings !== Object.prototype) {\n if (hasOwnProperty.call(settings, setting)) {\n return settings[setting]\n }\n\n settings = Object.getPrototypeOf(settings)\n }\n\n return undefined\n }\n\n debug('set \"%s\" to %o', setting, val);\n\n // set value\n this.settings[setting] = val;\n\n // trigger matched settings\n switch (setting) {\n case 'etag':\n this.set('etag fn', compileETag(val));\n break;\n case 'query parser':\n this.set('query parser fn', compileQueryParser(val));\n break;\n case 'trust proxy':\n this.set('trust proxy fn', compileTrust(val));\n\n // trust proxy inherit back-compat\n Object.defineProperty(this.settings, trustProxyDefaultSymbol, {\n configurable: true,\n value: false\n });\n\n break;\n }\n\n return this;\n};\n\n/**\n * Return the app's absolute pathname\n * based on the parent(s) that have\n * mounted it.\n *\n * For example if the application was\n * mounted as \"/admin\", which itself\n * was mounted as \"/blog\" then the\n * return value would be \"/blog/admin\".\n *\n * @return {String}\n * @private\n */\n\napp.path = function path() {\n return this.parent\n ? this.parent.path() + this.mountpath\n : '';\n};\n\n/**\n * Check if `setting` is enabled (truthy).\n *\n * app.enabled('foo')\n * // => false\n *\n * app.enable('foo')\n * app.enabled('foo')\n * // => true\n *\n * @param {String} setting\n * @return {Boolean}\n * @public\n */\n\napp.enabled = function enabled(setting) {\n return Boolean(this.set(setting));\n};\n\n/**\n * Check if `setting` is disabled.\n *\n * app.disabled('foo')\n * // => true\n *\n * app.enable('foo')\n * app.disabled('foo')\n * // => false\n *\n * @param {String} setting\n * @return {Boolean}\n * @public\n */\n\napp.disabled = function disabled(setting) {\n return !this.set(setting);\n};\n\n/**\n * Enable `setting`.\n *\n * @param {String} setting\n * @return {app} for chaining\n * @public\n */\n\napp.enable = function enable(setting) {\n return this.set(setting, true);\n};\n\n/**\n * Disable `setting`.\n *\n * @param {String} setting\n * @return {app} for chaining\n * @public\n */\n\napp.disable = function disable(setting) {\n return this.set(setting, false);\n};\n\n/**\n * Delegate `.VERB(...)` calls to `router.VERB(...)`.\n */\n\nmethods.forEach(function(method){\n app[method] = function(path){\n if (method === 'get' && arguments.length === 1) {\n // app.get(setting)\n return this.set(path);\n }\n\n this.lazyrouter();\n\n var route = this._router.route(path);\n route[method].apply(route, slice.call(arguments, 1));\n return this;\n };\n});\n\n/**\n * Special-cased \"all\" method, applying the given route `path`,\n * middleware, and callback to _every_ HTTP method.\n *\n * @param {String} path\n * @param {Function} ...\n * @return {app} for chaining\n * @public\n */\n\napp.all = function all(path) {\n this.lazyrouter();\n\n var route = this._router.route(path);\n var args = slice.call(arguments, 1);\n\n for (var i = 0; i < methods.length; i++) {\n route[methods[i]].apply(route, args);\n }\n\n return this;\n};\n\n// del -> delete alias\n\napp.del = deprecate.function(app.delete, 'app.del: Use app.delete instead');\n\n/**\n * Render the given view `name` name with `options`\n * and a callback accepting an error and the\n * rendered template string.\n *\n * Example:\n *\n * app.render('email', { name: 'Tobi' }, function(err, html){\n * // ...\n * })\n *\n * @param {String} name\n * @param {Object|Function} options or fn\n * @param {Function} callback\n * @public\n */\n\napp.render = function render(name, options, callback) {\n var cache = this.cache;\n var done = callback;\n var engines = this.engines;\n var opts = options;\n var renderOptions = {};\n var view;\n\n // support callback function as second arg\n if (typeof options === 'function') {\n done = options;\n opts = {};\n }\n\n // merge app.locals\n merge(renderOptions, this.locals);\n\n // merge options._locals\n if (opts._locals) {\n merge(renderOptions, opts._locals);\n }\n\n // merge options\n merge(renderOptions, opts);\n\n // set .cache unless explicitly provided\n if (renderOptions.cache == null) {\n renderOptions.cache = this.enabled('view cache');\n }\n\n // primed cache\n if (renderOptions.cache) {\n view = cache[name];\n }\n\n // view\n if (!view) {\n var View = this.get('view');\n\n view = new View(name, {\n defaultEngine: this.get('view engine'),\n root: this.get('views'),\n engines: engines\n });\n\n if (!view.path) {\n var dirs = Array.isArray(view.root) && view.root.length > 1\n ? 'directories \"' + view.root.slice(0, -1).join('\", \"') + '\" or \"' + view.root[view.root.length - 1] + '\"'\n : 'directory \"' + view.root + '\"'\n var err = new Error('Failed to lookup view \"' + name + '\" in views ' + dirs);\n err.view = view;\n return done(err);\n }\n\n // prime the cache\n if (renderOptions.cache) {\n cache[name] = view;\n }\n }\n\n // render\n tryRender(view, renderOptions, done);\n};\n\n/**\n * Listen for connections.\n *\n * A node `http.Server` is returned, with this\n * application (which is a `Function`) as its\n * callback. If you wish to create both an HTTP\n * and HTTPS server you may do so with the \"http\"\n * and \"https\" modules as shown here:\n *\n * var http = require('http')\n * , https = require('https')\n * , express = require('express')\n * , app = express();\n *\n * http.createServer(app).listen(80);\n * https.createServer({ ... }, app).listen(443);\n *\n * @return {http.Server}\n * @public\n */\n\napp.listen = function listen() {\n var server = http.createServer(this);\n return server.listen.apply(server, arguments);\n};\n\n/**\n * Log error using console.error.\n *\n * @param {Error} err\n * @private\n */\n\nfunction logerror(err) {\n /* istanbul ignore next */\n if (this.get('env') !== 'test') console.error(err.stack || err.toString());\n}\n\n/**\n * Try rendering a view.\n * @private\n */\n\nfunction tryRender(view, options, callback) {\n try {\n view.render(options, callback);\n } catch (err) {\n callback(err);\n }\n}\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredCharsets;\nmodule.exports.preferredCharsets = preferredCharsets;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleCharsetRegExp = /^\\s*([^\\s;]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Charset header.\n * @private\n */\n\nfunction parseAcceptCharset(accept) {\n var accepts = accept.split(',');\n\n for (var i = 0, j = 0; i < accepts.length; i++) {\n var charset = parseCharset(accepts[i].trim(), i);\n\n if (charset) {\n accepts[j++] = charset;\n }\n }\n\n // trim accepts\n accepts.length = j;\n\n return accepts;\n}\n\n/**\n * Parse a charset from the Accept-Charset header.\n * @private\n */\n\nfunction parseCharset(str, i) {\n var match = simpleCharsetRegExp.exec(str);\n if (!match) return null;\n\n var charset = match[1];\n var q = 1;\n if (match[2]) {\n var params = match[2].split(';')\n for (var j = 0; j < params.length; j++) {\n var p = params[j].trim().split('=');\n if (p[0] === 'q') {\n q = parseFloat(p[1]);\n break;\n }\n }\n }\n\n return {\n charset: charset,\n q: q,\n i: i\n };\n}\n\n/**\n * Get the priority of a charset.\n * @private\n */\n\nfunction getCharsetPriority(charset, accepted, index) {\n var priority = {o: -1, q: 0, s: 0};\n\n for (var i = 0; i < accepted.length; i++) {\n var spec = specify(charset, accepted[i], index);\n\n if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n priority = spec;\n }\n }\n\n return priority;\n}\n\n/**\n * Get the specificity of the charset.\n * @private\n */\n\nfunction specify(charset, spec, index) {\n var s = 0;\n if(spec.charset.toLowerCase() === charset.toLowerCase()){\n s |= 1;\n } else if (spec.charset !== '*' ) {\n return null\n }\n\n return {\n i: index,\n o: spec.i,\n q: spec.q,\n s: s\n }\n}\n\n/**\n * Get the preferred charsets from an Accept-Charset header.\n * @public\n */\n\nfunction preferredCharsets(accept, provided) {\n // RFC 2616 sec 14.2: no header = *\n var accepts = parseAcceptCharset(accept === undefined ? '*' : accept || '');\n\n if (!provided) {\n // sorted list of all charsets\n return accepts\n .filter(isQuality)\n .sort(compareSpecs)\n .map(getFullCharset);\n }\n\n var priorities = provided.map(function getPriority(type, index) {\n return getCharsetPriority(type, accepts, index);\n });\n\n // sorted list of accepted charsets\n return priorities.filter(isQuality).sort(compareSpecs).map(function getCharset(priority) {\n return provided[priorities.indexOf(priority)];\n });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full charset string.\n * @private\n */\n\nfunction getFullCharset(spec) {\n return spec.charset;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n return spec.q > 0;\n}\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredEncodings;\nmodule.exports.preferredEncodings = preferredEncodings;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleEncodingRegExp = /^\\s*([^\\s;]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Encoding header.\n * @private\n */\n\nfunction parseAcceptEncoding(accept) {\n var accepts = accept.split(',');\n var hasIdentity = false;\n var minQuality = 1;\n\n for (var i = 0, j = 0; i < accepts.length; i++) {\n var encoding = parseEncoding(accepts[i].trim(), i);\n\n if (encoding) {\n accepts[j++] = encoding;\n hasIdentity = hasIdentity || specify('identity', encoding);\n minQuality = Math.min(minQuality, encoding.q || 1);\n }\n }\n\n if (!hasIdentity) {\n /*\n * If identity doesn't explicitly appear in the accept-encoding header,\n * it's added to the list of acceptable encoding with the lowest q\n */\n accepts[j++] = {\n encoding: 'identity',\n q: minQuality,\n i: i\n };\n }\n\n // trim accepts\n accepts.length = j;\n\n return accepts;\n}\n\n/**\n * Parse an encoding from the Accept-Encoding header.\n * @private\n */\n\nfunction parseEncoding(str, i) {\n var match = simpleEncodingRegExp.exec(str);\n if (!match) return null;\n\n var encoding = match[1];\n var q = 1;\n if (match[2]) {\n var params = match[2].split(';');\n for (var j = 0; j < params.length; j++) {\n var p = params[j].trim().split('=');\n if (p[0] === 'q') {\n q = parseFloat(p[1]);\n break;\n }\n }\n }\n\n return {\n encoding: encoding,\n q: q,\n i: i\n };\n}\n\n/**\n * Get the priority of an encoding.\n * @private\n */\n\nfunction getEncodingPriority(encoding, accepted, index) {\n var priority = {o: -1, q: 0, s: 0};\n\n for (var i = 0; i < accepted.length; i++) {\n var spec = specify(encoding, accepted[i], index);\n\n if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n priority = spec;\n }\n }\n\n return priority;\n}\n\n/**\n * Get the specificity of the encoding.\n * @private\n */\n\nfunction specify(encoding, spec, index) {\n var s = 0;\n if(spec.encoding.toLowerCase() === encoding.toLowerCase()){\n s |= 1;\n } else if (spec.encoding !== '*' ) {\n return null\n }\n\n return {\n i: index,\n o: spec.i,\n q: spec.q,\n s: s\n }\n};\n\n/**\n * Get the preferred encodings from an Accept-Encoding header.\n * @public\n */\n\nfunction preferredEncodings(accept, provided) {\n var accepts = parseAcceptEncoding(accept || '');\n\n if (!provided) {\n // sorted list of all encodings\n return accepts\n .filter(isQuality)\n .sort(compareSpecs)\n .map(getFullEncoding);\n }\n\n var priorities = provided.map(function getPriority(type, index) {\n return getEncodingPriority(type, accepts, index);\n });\n\n // sorted list of accepted encodings\n return priorities.filter(isQuality).sort(compareSpecs).map(function getEncoding(priority) {\n return provided[priorities.indexOf(priority)];\n });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full encoding string.\n * @private\n */\n\nfunction getFullEncoding(spec) {\n return spec.encoding;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n return spec.q > 0;\n}\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredLanguages;\nmodule.exports.preferredLanguages = preferredLanguages;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleLanguageRegExp = /^\\s*([^\\s\\-;]+)(?:-([^\\s;]+))?\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Language header.\n * @private\n */\n\nfunction parseAcceptLanguage(accept) {\n var accepts = accept.split(',');\n\n for (var i = 0, j = 0; i < accepts.length; i++) {\n var language = parseLanguage(accepts[i].trim(), i);\n\n if (language) {\n accepts[j++] = language;\n }\n }\n\n // trim accepts\n accepts.length = j;\n\n return accepts;\n}\n\n/**\n * Parse a language from the Accept-Language header.\n * @private\n */\n\nfunction parseLanguage(str, i) {\n var match = simpleLanguageRegExp.exec(str);\n if (!match) return null;\n\n var prefix = match[1]\n var suffix = match[2]\n var full = prefix\n\n if (suffix) full += \"-\" + suffix;\n\n var q = 1;\n if (match[3]) {\n var params = match[3].split(';')\n for (var j = 0; j < params.length; j++) {\n var p = params[j].split('=');\n if (p[0] === 'q') q = parseFloat(p[1]);\n }\n }\n\n return {\n prefix: prefix,\n suffix: suffix,\n q: q,\n i: i,\n full: full\n };\n}\n\n/**\n * Get the priority of a language.\n * @private\n */\n\nfunction getLanguagePriority(language, accepted, index) {\n var priority = {o: -1, q: 0, s: 0};\n\n for (var i = 0; i < accepted.length; i++) {\n var spec = specify(language, accepted[i], index);\n\n if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n priority = spec;\n }\n }\n\n return priority;\n}\n\n/**\n * Get the specificity of the language.\n * @private\n */\n\nfunction specify(language, spec, index) {\n var p = parseLanguage(language)\n if (!p) return null;\n var s = 0;\n if(spec.full.toLowerCase() === p.full.toLowerCase()){\n s |= 4;\n } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) {\n s |= 2;\n } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) {\n s |= 1;\n } else if (spec.full !== '*' ) {\n return null\n }\n\n return {\n i: index,\n o: spec.i,\n q: spec.q,\n s: s\n }\n};\n\n/**\n * Get the preferred languages from an Accept-Language header.\n * @public\n */\n\nfunction preferredLanguages(accept, provided) {\n // RFC 2616 sec 14.4: no header = *\n var accepts = parseAcceptLanguage(accept === undefined ? '*' : accept || '');\n\n if (!provided) {\n // sorted list of all languages\n return accepts\n .filter(isQuality)\n .sort(compareSpecs)\n .map(getFullLanguage);\n }\n\n var priorities = provided.map(function getPriority(type, index) {\n return getLanguagePriority(type, accepts, index);\n });\n\n // sorted list of accepted languages\n return priorities.filter(isQuality).sort(compareSpecs).map(function getLanguage(priority) {\n return provided[priorities.indexOf(priority)];\n });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full language string.\n * @private\n */\n\nfunction getFullLanguage(spec) {\n return spec.full;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n return spec.q > 0;\n}\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredMediaTypes;\nmodule.exports.preferredMediaTypes = preferredMediaTypes;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleMediaTypeRegExp = /^\\s*([^\\s\\/;]+)\\/([^;\\s]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept header.\n * @private\n */\n\nfunction parseAccept(accept) {\n var accepts = splitMediaTypes(accept);\n\n for (var i = 0, j = 0; i < accepts.length; i++) {\n var mediaType = parseMediaType(accepts[i].trim(), i);\n\n if (mediaType) {\n accepts[j++] = mediaType;\n }\n }\n\n // trim accepts\n accepts.length = j;\n\n return accepts;\n}\n\n/**\n * Parse a media type from the Accept header.\n * @private\n */\n\nfunction parseMediaType(str, i) {\n var match = simpleMediaTypeRegExp.exec(str);\n if (!match) return null;\n\n var params = Object.create(null);\n var q = 1;\n var subtype = match[2];\n var type = match[1];\n\n if (match[3]) {\n var kvps = splitParameters(match[3]).map(splitKeyValuePair);\n\n for (var j = 0; j < kvps.length; j++) {\n var pair = kvps[j];\n var key = pair[0].toLowerCase();\n var val = pair[1];\n\n // get the value, unwrapping quotes\n var value = val && val[0] === '\"' && val[val.length - 1] === '\"'\n ? val.substr(1, val.length - 2)\n : val;\n\n if (key === 'q') {\n q = parseFloat(value);\n break;\n }\n\n // store parameter\n params[key] = value;\n }\n }\n\n return {\n type: type,\n subtype: subtype,\n params: params,\n q: q,\n i: i\n };\n}\n\n/**\n * Get the priority of a media type.\n * @private\n */\n\nfunction getMediaTypePriority(type, accepted, index) {\n var priority = {o: -1, q: 0, s: 0};\n\n for (var i = 0; i < accepted.length; i++) {\n var spec = specify(type, accepted[i], index);\n\n if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n priority = spec;\n }\n }\n\n return priority;\n}\n\n/**\n * Get the specificity of the media type.\n * @private\n */\n\nfunction specify(type, spec, index) {\n var p = parseMediaType(type);\n var s = 0;\n\n if (!p) {\n return null;\n }\n\n if(spec.type.toLowerCase() == p.type.toLowerCase()) {\n s |= 4\n } else if(spec.type != '*') {\n return null;\n }\n\n if(spec.subtype.toLowerCase() == p.subtype.toLowerCase()) {\n s |= 2\n } else if(spec.subtype != '*') {\n return null;\n }\n\n var keys = Object.keys(spec.params);\n if (keys.length > 0) {\n if (keys.every(function (k) {\n return spec.params[k] == '*' || (spec.params[k] || '').toLowerCase() == (p.params[k] || '').toLowerCase();\n })) {\n s |= 1\n } else {\n return null\n }\n }\n\n return {\n i: index,\n o: spec.i,\n q: spec.q,\n s: s,\n }\n}\n\n/**\n * Get the preferred media types from an Accept header.\n * @public\n */\n\nfunction preferredMediaTypes(accept, provided) {\n // RFC 2616 sec 14.2: no header = */*\n var accepts = parseAccept(accept === undefined ? '*/*' : accept || '');\n\n if (!provided) {\n // sorted list of all types\n return accepts\n .filter(isQuality)\n .sort(compareSpecs)\n .map(getFullType);\n }\n\n var priorities = provided.map(function getPriority(type, index) {\n return getMediaTypePriority(type, accepts, index);\n });\n\n // sorted list of accepted types\n return priorities.filter(isQuality).sort(compareSpecs).map(function getType(priority) {\n return provided[priorities.indexOf(priority)];\n });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full type string.\n * @private\n */\n\nfunction getFullType(spec) {\n return spec.type + '/' + spec.subtype;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n return spec.q > 0;\n}\n\n/**\n * Count the number of quotes in a string.\n * @private\n */\n\nfunction quoteCount(string) {\n var count = 0;\n var index = 0;\n\n while ((index = string.indexOf('\"', index)) !== -1) {\n count++;\n index++;\n }\n\n return count;\n}\n\n/**\n * Split a key value pair.\n * @private\n */\n\nfunction splitKeyValuePair(str) {\n var index = str.indexOf('=');\n var key;\n var val;\n\n if (index === -1) {\n key = str;\n } else {\n key = str.substr(0, index);\n val = str.substr(index + 1);\n }\n\n return [key, val];\n}\n\n/**\n * Split an Accept header into media types.\n * @private\n */\n\nfunction splitMediaTypes(accept) {\n var accepts = accept.split(',');\n\n for (var i = 1, j = 0; i < accepts.length; i++) {\n if (quoteCount(accepts[j]) % 2 == 0) {\n accepts[++j] = accepts[i];\n } else {\n accepts[j] += ',' + accepts[i];\n }\n }\n\n // trim accepts\n accepts.length = j + 1;\n\n return accepts;\n}\n\n/**\n * Split a string of parameters.\n * @private\n */\n\nfunction splitParameters(str) {\n var parameters = str.split(';');\n\n for (var i = 1, j = 0; i < parameters.length; i++) {\n if (quoteCount(parameters[j]) % 2 == 0) {\n parameters[++j] = parameters[i];\n } else {\n parameters[j] += ';' + parameters[i];\n }\n }\n\n // trim parameters\n parameters.length = j + 1;\n\n for (var i = 0; i < parameters.length; i++) {\n parameters[i] = parameters[i].trim();\n }\n\n return parameters;\n}\n", "/*!\n * negotiator\n * Copyright(c) 2012 Federico Romero\n * Copyright(c) 2012-2014 Isaac Z. Schlueter\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\nvar preferredCharsets = require('./lib/charset')\nvar preferredEncodings = require('./lib/encoding')\nvar preferredLanguages = require('./lib/language')\nvar preferredMediaTypes = require('./lib/mediaType')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = Negotiator;\nmodule.exports.Negotiator = Negotiator;\n\n/**\n * Create a Negotiator instance from a request.\n * @param {object} request\n * @public\n */\n\nfunction Negotiator(request) {\n if (!(this instanceof Negotiator)) {\n return new Negotiator(request);\n }\n\n this.request = request;\n}\n\nNegotiator.prototype.charset = function charset(available) {\n var set = this.charsets(available);\n return set && set[0];\n};\n\nNegotiator.prototype.charsets = function charsets(available) {\n return preferredCharsets(this.request.headers['accept-charset'], available);\n};\n\nNegotiator.prototype.encoding = function encoding(available) {\n var set = this.encodings(available);\n return set && set[0];\n};\n\nNegotiator.prototype.encodings = function encodings(available) {\n return preferredEncodings(this.request.headers['accept-encoding'], available);\n};\n\nNegotiator.prototype.language = function language(available) {\n var set = this.languages(available);\n return set && set[0];\n};\n\nNegotiator.prototype.languages = function languages(available) {\n return preferredLanguages(this.request.headers['accept-language'], available);\n};\n\nNegotiator.prototype.mediaType = function mediaType(available) {\n var set = this.mediaTypes(available);\n return set && set[0];\n};\n\nNegotiator.prototype.mediaTypes = function mediaTypes(available) {\n return preferredMediaTypes(this.request.headers.accept, available);\n};\n\n// Backwards compatibility\nNegotiator.prototype.preferredCharset = Negotiator.prototype.charset;\nNegotiator.prototype.preferredCharsets = Negotiator.prototype.charsets;\nNegotiator.prototype.preferredEncoding = Negotiator.prototype.encoding;\nNegotiator.prototype.preferredEncodings = Negotiator.prototype.encodings;\nNegotiator.prototype.preferredLanguage = Negotiator.prototype.language;\nNegotiator.prototype.preferredLanguages = Negotiator.prototype.languages;\nNegotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType;\nNegotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes;\n", "/*!\n * accepts\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar Negotiator = require('negotiator')\nvar mime = require('mime-types')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = Accepts\n\n/**\n * Create a new Accepts object for the given req.\n *\n * @param {object} req\n * @public\n */\n\nfunction Accepts (req) {\n if (!(this instanceof Accepts)) {\n return new Accepts(req)\n }\n\n this.headers = req.headers\n this.negotiator = new Negotiator(req)\n}\n\n/**\n * Check if the given `type(s)` is acceptable, returning\n * the best match when true, otherwise `undefined`, in which\n * case you should respond with 406 \"Not Acceptable\".\n *\n * The `type` value may be a single mime type string\n * such as \"application/json\", the extension name\n * such as \"json\" or an array `[\"json\", \"html\", \"text/plain\"]`. When a list\n * or array is given the _best_ match, if any is returned.\n *\n * Examples:\n *\n * // Accept: text/html\n * this.types('html');\n * // => \"html\"\n *\n * // Accept: text/*, application/json\n * this.types('html');\n * // => \"html\"\n * this.types('text/html');\n * // => \"text/html\"\n * this.types('json', 'text');\n * // => \"json\"\n * this.types('application/json');\n * // => \"application/json\"\n *\n * // Accept: text/*, application/json\n * this.types('image/png');\n * this.types('png');\n * // => undefined\n *\n * // Accept: text/*;q=.5, application/json\n * this.types(['html', 'json']);\n * this.types('html', 'json');\n * // => \"json\"\n *\n * @param {String|Array} types...\n * @return {String|Array|Boolean}\n * @public\n */\n\nAccepts.prototype.type =\nAccepts.prototype.types = function (types_) {\n var types = types_\n\n // support flattened arguments\n if (types && !Array.isArray(types)) {\n types = new Array(arguments.length)\n for (var i = 0; i < types.length; i++) {\n types[i] = arguments[i]\n }\n }\n\n // no types, return all requested types\n if (!types || types.length === 0) {\n return this.negotiator.mediaTypes()\n }\n\n // no accept header, return first given type\n if (!this.headers.accept) {\n return types[0]\n }\n\n var mimes = types.map(extToMime)\n var accepts = this.negotiator.mediaTypes(mimes.filter(validMime))\n var first = accepts[0]\n\n return first\n ? types[mimes.indexOf(first)]\n : false\n}\n\n/**\n * Return accepted encodings or best fit based on `encodings`.\n *\n * Given `Accept-Encoding: gzip, deflate`\n * an array sorted by quality is returned:\n *\n * ['gzip', 'deflate']\n *\n * @param {String|Array} encodings...\n * @return {String|Array}\n * @public\n */\n\nAccepts.prototype.encoding =\nAccepts.prototype.encodings = function (encodings_) {\n var encodings = encodings_\n\n // support flattened arguments\n if (encodings && !Array.isArray(encodings)) {\n encodings = new Array(arguments.length)\n for (var i = 0; i < encodings.length; i++) {\n encodings[i] = arguments[i]\n }\n }\n\n // no encodings, return all requested encodings\n if (!encodings || encodings.length === 0) {\n return this.negotiator.encodings()\n }\n\n return this.negotiator.encodings(encodings)[0] || false\n}\n\n/**\n * Return accepted charsets or best fit based on `charsets`.\n *\n * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5`\n * an array sorted by quality is returned:\n *\n * ['utf-8', 'utf-7', 'iso-8859-1']\n *\n * @param {String|Array} charsets...\n * @return {String|Array}\n * @public\n */\n\nAccepts.prototype.charset =\nAccepts.prototype.charsets = function (charsets_) {\n var charsets = charsets_\n\n // support flattened arguments\n if (charsets && !Array.isArray(charsets)) {\n charsets = new Array(arguments.length)\n for (var i = 0; i < charsets.length; i++) {\n charsets[i] = arguments[i]\n }\n }\n\n // no charsets, return all requested charsets\n if (!charsets || charsets.length === 0) {\n return this.negotiator.charsets()\n }\n\n return this.negotiator.charsets(charsets)[0] || false\n}\n\n/**\n * Return accepted languages or best fit based on `langs`.\n *\n * Given `Accept-Language: en;q=0.8, es, pt`\n * an array sorted by quality is returned:\n *\n * ['es', 'pt', 'en']\n *\n * @param {String|Array} langs...\n * @return {Array|String}\n * @public\n */\n\nAccepts.prototype.lang =\nAccepts.prototype.langs =\nAccepts.prototype.language =\nAccepts.prototype.languages = function (languages_) {\n var languages = languages_\n\n // support flattened arguments\n if (languages && !Array.isArray(languages)) {\n languages = new Array(arguments.length)\n for (var i = 0; i < languages.length; i++) {\n languages[i] = arguments[i]\n }\n }\n\n // no languages, return all requested languages\n if (!languages || languages.length === 0) {\n return this.negotiator.languages()\n }\n\n return this.negotiator.languages(languages)[0] || false\n}\n\n/**\n * Convert extnames to mime.\n *\n * @param {String} type\n * @return {String}\n * @private\n */\n\nfunction extToMime (type) {\n return type.indexOf('/') === -1\n ? mime.lookup(type)\n : type\n}\n\n/**\n * Check if mime is valid.\n *\n * @param {String} type\n * @return {String}\n * @private\n */\n\nfunction validMime (type) {\n return typeof type === 'string'\n}\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar accepts = require('accepts');\nvar deprecate = require('depd')('express');\nvar isIP = require('net').isIP;\nvar typeis = require('type-is');\nvar http = require('http');\nvar fresh = require('fresh');\nvar parseRange = require('range-parser');\nvar parse = require('parseurl');\nvar proxyaddr = require('proxy-addr');\n\n/**\n * Request prototype.\n * @public\n */\n\nvar req = Object.create(http.IncomingMessage.prototype)\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = req\n\n/**\n * Return request header.\n *\n * The `Referrer` header field is special-cased,\n * both `Referrer` and `Referer` are interchangeable.\n *\n * Examples:\n *\n * req.get('Content-Type');\n * // => \"text/plain\"\n *\n * req.get('content-type');\n * // => \"text/plain\"\n *\n * req.get('Something');\n * // => undefined\n *\n * Aliased as `req.header()`.\n *\n * @param {String} name\n * @return {String}\n * @public\n */\n\nreq.get =\nreq.header = function header(name) {\n if (!name) {\n throw new TypeError('name argument is required to req.get');\n }\n\n if (typeof name !== 'string') {\n throw new TypeError('name must be a string to req.get');\n }\n\n var lc = name.toLowerCase();\n\n switch (lc) {\n case 'referer':\n case 'referrer':\n return this.headers.referrer\n || this.headers.referer;\n default:\n return this.headers[lc];\n }\n};\n\n/**\n * To do: update docs.\n *\n * Check if the given `type(s)` is acceptable, returning\n * the best match when true, otherwise `undefined`, in which\n * case you should respond with 406 \"Not Acceptable\".\n *\n * The `type` value may be a single MIME type string\n * such as \"application/json\", an extension name\n * such as \"json\", a comma-delimited list such as \"json, html, text/plain\",\n * an argument list such as `\"json\", \"html\", \"text/plain\"`,\n * or an array `[\"json\", \"html\", \"text/plain\"]`. When a list\n * or array is given, the _best_ match, if any is returned.\n *\n * Examples:\n *\n * // Accept: text/html\n * req.accepts('html');\n * // => \"html\"\n *\n * // Accept: text/*, application/json\n * req.accepts('html');\n * // => \"html\"\n * req.accepts('text/html');\n * // => \"text/html\"\n * req.accepts('json, text');\n * // => \"json\"\n * req.accepts('application/json');\n * // => \"application/json\"\n *\n * // Accept: text/*, application/json\n * req.accepts('image/png');\n * req.accepts('png');\n * // => undefined\n *\n * // Accept: text/*;q=.5, application/json\n * req.accepts(['html', 'json']);\n * req.accepts('html', 'json');\n * req.accepts('html, json');\n * // => \"json\"\n *\n * @param {String|Array} type(s)\n * @return {String|Array|Boolean}\n * @public\n */\n\nreq.accepts = function(){\n var accept = accepts(this);\n return accept.types.apply(accept, arguments);\n};\n\n/**\n * Check if the given `encoding`s are accepted.\n *\n * @param {String} ...encoding\n * @return {String|Array}\n * @public\n */\n\nreq.acceptsEncodings = function(){\n var accept = accepts(this);\n return accept.encodings.apply(accept, arguments);\n};\n\nreq.acceptsEncoding = deprecate.function(req.acceptsEncodings,\n 'req.acceptsEncoding: Use acceptsEncodings instead');\n\n/**\n * Check if the given `charset`s are acceptable,\n * otherwise you should respond with 406 \"Not Acceptable\".\n *\n * @param {String} ...charset\n * @return {String|Array}\n * @public\n */\n\nreq.acceptsCharsets = function(){\n var accept = accepts(this);\n return accept.charsets.apply(accept, arguments);\n};\n\nreq.acceptsCharset = deprecate.function(req.acceptsCharsets,\n 'req.acceptsCharset: Use acceptsCharsets instead');\n\n/**\n * Check if the given `lang`s are acceptable,\n * otherwise you should respond with 406 \"Not Acceptable\".\n *\n * @param {String} ...lang\n * @return {String|Array}\n * @public\n */\n\nreq.acceptsLanguages = function(){\n var accept = accepts(this);\n return accept.languages.apply(accept, arguments);\n};\n\nreq.acceptsLanguage = deprecate.function(req.acceptsLanguages,\n 'req.acceptsLanguage: Use acceptsLanguages instead');\n\n/**\n * Parse Range header field, capping to the given `size`.\n *\n * Unspecified ranges such as \"0-\" require knowledge of your resource length. In\n * the case of a byte range this is of course the total number of bytes. If the\n * Range header field is not given `undefined` is returned, `-1` when unsatisfiable,\n * and `-2` when syntactically invalid.\n *\n * When ranges are returned, the array has a \"type\" property which is the type of\n * range that is required (most commonly, \"bytes\"). Each array element is an object\n * with a \"start\" and \"end\" property for the portion of the range.\n *\n * The \"combine\" option can be set to `true` and overlapping & adjacent ranges\n * will be combined into a single range.\n *\n * NOTE: remember that ranges are inclusive, so for example \"Range: users=0-3\"\n * should respond with 4 users when available, not 3.\n *\n * @param {number} size\n * @param {object} [options]\n * @param {boolean} [options.combine=false]\n * @return {number|array}\n * @public\n */\n\nreq.range = function range(size, options) {\n var range = this.get('Range');\n if (!range) return;\n return parseRange(size, range, options);\n};\n\n/**\n * Return the value of param `name` when present or `defaultValue`.\n *\n * - Checks route placeholders, ex: _/user/:id_\n * - Checks body params, ex: id=12, {\"id\":12}\n * - Checks query string params, ex: ?id=12\n *\n * To utilize request bodies, `req.body`\n * should be an object. This can be done by using\n * the `bodyParser()` middleware.\n *\n * @param {String} name\n * @param {Mixed} [defaultValue]\n * @return {String}\n * @public\n */\n\nreq.param = function param(name, defaultValue) {\n var params = this.params || {};\n var body = this.body || {};\n var query = this.query || {};\n\n var args = arguments.length === 1\n ? 'name'\n : 'name, default';\n deprecate('req.param(' + args + '): Use req.params, req.body, or req.query instead');\n\n if (null != params[name] && params.hasOwnProperty(name)) return params[name];\n if (null != body[name]) return body[name];\n if (null != query[name]) return query[name];\n\n return defaultValue;\n};\n\n/**\n * Check if the incoming request contains the \"Content-Type\"\n * header field, and it contains the given mime `type`.\n *\n * Examples:\n *\n * // With Content-Type: text/html; charset=utf-8\n * req.is('html');\n * req.is('text/html');\n * req.is('text/*');\n * // => true\n *\n * // When Content-Type is application/json\n * req.is('json');\n * req.is('application/json');\n * req.is('application/*');\n * // => true\n *\n * req.is('html');\n * // => false\n *\n * @param {String|Array} types...\n * @return {String|false|null}\n * @public\n */\n\nreq.is = function is(types) {\n var arr = types;\n\n // support flattened arguments\n if (!Array.isArray(types)) {\n arr = new Array(arguments.length);\n for (var i = 0; i < arr.length; i++) {\n arr[i] = arguments[i];\n }\n }\n\n return typeis(this, arr);\n};\n\n/**\n * Return the protocol string \"http\" or \"https\"\n * when requested with TLS. When the \"trust proxy\"\n * setting trusts the socket address, the\n * \"X-Forwarded-Proto\" header field will be trusted\n * and used if present.\n *\n * If you're running behind a reverse proxy that\n * supplies https for you this may be enabled.\n *\n * @return {String}\n * @public\n */\n\ndefineGetter(req, 'protocol', function protocol(){\n var proto = this.connection.encrypted\n ? 'https'\n : 'http';\n var trust = this.app.get('trust proxy fn');\n\n if (!trust(this.connection.remoteAddress, 0)) {\n return proto;\n }\n\n // Note: X-Forwarded-Proto is normally only ever a\n // single value, but this is to be safe.\n var header = this.get('X-Forwarded-Proto') || proto\n var index = header.indexOf(',')\n\n return index !== -1\n ? header.substring(0, index).trim()\n : header.trim()\n});\n\n/**\n * Short-hand for:\n *\n * req.protocol === 'https'\n *\n * @return {Boolean}\n * @public\n */\n\ndefineGetter(req, 'secure', function secure(){\n return this.protocol === 'https';\n});\n\n/**\n * Return the remote address from the trusted proxy.\n *\n * The is the remote address on the socket unless\n * \"trust proxy\" is set.\n *\n * @return {String}\n * @public\n */\n\ndefineGetter(req, 'ip', function ip(){\n var trust = this.app.get('trust proxy fn');\n return proxyaddr(this, trust);\n});\n\n/**\n * When \"trust proxy\" is set, trusted proxy addresses + client.\n *\n * For example if the value were \"client, proxy1, proxy2\"\n * you would receive the array `[\"client\", \"proxy1\", \"proxy2\"]`\n * where \"proxy2\" is the furthest down-stream and \"proxy1\" and\n * \"proxy2\" were trusted.\n *\n * @return {Array}\n * @public\n */\n\ndefineGetter(req, 'ips', function ips() {\n var trust = this.app.get('trust proxy fn');\n var addrs = proxyaddr.all(this, trust);\n\n // reverse the order (to farthest -> closest)\n // and remove socket address\n addrs.reverse().pop()\n\n return addrs\n});\n\n/**\n * Return subdomains as an array.\n *\n * Subdomains are the dot-separated parts of the host before the main domain of\n * the app. By default, the domain of the app is assumed to be the last two\n * parts of the host. This can be changed by setting \"subdomain offset\".\n *\n * For example, if the domain is \"tobi.ferrets.example.com\":\n * If \"subdomain offset\" is not set, req.subdomains is `[\"ferrets\", \"tobi\"]`.\n * If \"subdomain offset\" is 3, req.subdomains is `[\"tobi\"]`.\n *\n * @return {Array}\n * @public\n */\n\ndefineGetter(req, 'subdomains', function subdomains() {\n var hostname = this.hostname;\n\n if (!hostname) return [];\n\n var offset = this.app.get('subdomain offset');\n var subdomains = !isIP(hostname)\n ? hostname.split('.').reverse()\n : [hostname];\n\n return subdomains.slice(offset);\n});\n\n/**\n * Short-hand for `url.parse(req.url).pathname`.\n *\n * @return {String}\n * @public\n */\n\ndefineGetter(req, 'path', function path() {\n return parse(this).pathname;\n});\n\n/**\n * Parse the \"Host\" header field to a hostname.\n *\n * When the \"trust proxy\" setting trusts the socket\n * address, the \"X-Forwarded-Host\" header field will\n * be trusted.\n *\n * @return {String}\n * @public\n */\n\ndefineGetter(req, 'hostname', function hostname(){\n var trust = this.app.get('trust proxy fn');\n var host = this.get('X-Forwarded-Host');\n\n if (!host || !trust(this.connection.remoteAddress, 0)) {\n host = this.get('Host');\n } else if (host.indexOf(',') !== -1) {\n // Note: X-Forwarded-Host is normally only ever a\n // single value, but this is to be safe.\n host = host.substring(0, host.indexOf(',')).trimRight()\n }\n\n if (!host) return;\n\n // IPv6 literal support\n var offset = host[0] === '['\n ? host.indexOf(']') + 1\n : 0;\n var index = host.indexOf(':', offset);\n\n return index !== -1\n ? host.substring(0, index)\n : host;\n});\n\n// TODO: change req.host to return host in next major\n\ndefineGetter(req, 'host', deprecate.function(function host(){\n return this.hostname;\n}, 'req.host: Use req.hostname instead'));\n\n/**\n * Check if the request is fresh, aka\n * Last-Modified and/or the ETag\n * still match.\n *\n * @return {Boolean}\n * @public\n */\n\ndefineGetter(req, 'fresh', function(){\n var method = this.method;\n var res = this.res\n var status = res.statusCode\n\n // GET or HEAD for weak freshness validation only\n if ('GET' !== method && 'HEAD' !== method) return false;\n\n // 2xx or 304 as per rfc2616 14.26\n if ((status >= 200 && status < 300) || 304 === status) {\n return fresh(this.headers, {\n 'etag': res.get('ETag'),\n 'last-modified': res.get('Last-Modified')\n })\n }\n\n return false;\n});\n\n/**\n * Check if the request is stale, aka\n * \"Last-Modified\" and / or the \"ETag\" for the\n * resource has changed.\n *\n * @return {Boolean}\n * @public\n */\n\ndefineGetter(req, 'stale', function stale(){\n return !this.fresh;\n});\n\n/**\n * Check if the request was an _XMLHttpRequest_.\n *\n * @return {Boolean}\n * @public\n */\n\ndefineGetter(req, 'xhr', function xhr(){\n var val = this.get('X-Requested-With') || '';\n return val.toLowerCase() === 'xmlhttprequest';\n});\n\n/**\n * Helper function for creating a getter on an object.\n *\n * @param {Object} obj\n * @param {String} name\n * @param {Function} getter\n * @private\n */\nfunction defineGetter(obj, name, getter) {\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable: true,\n get: getter\n });\n}\n", "/**\n * Module dependencies.\n */\n\nvar crypto = require('crypto');\n\n/**\n * Sign the given `val` with `secret`.\n *\n * @param {String} val\n * @param {String} secret\n * @return {String}\n * @api private\n */\n\nexports.sign = function(val, secret){\n if ('string' != typeof val) throw new TypeError(\"Cookie value must be provided as a string.\");\n if ('string' != typeof secret) throw new TypeError(\"Secret string must be provided.\");\n return val + '.' + crypto\n .createHmac('sha256', secret)\n .update(val)\n .digest('base64')\n .replace(/\\=+$/, '');\n};\n\n/**\n * Unsign and decode the given `val` with `secret`,\n * returning `false` if the signature is invalid.\n *\n * @param {String} val\n * @param {String} secret\n * @return {String|Boolean}\n * @api private\n */\n\nexports.unsign = function(val, secret){\n if ('string' != typeof val) throw new TypeError(\"Signed cookie string must be provided.\");\n if ('string' != typeof secret) throw new TypeError(\"Secret string must be provided.\");\n var str = val.slice(0, val.lastIndexOf('.'))\n , mac = exports.sign(str, secret);\n \n return sha1(mac) == sha1(val) ? str : false;\n};\n\n/**\n * Private\n */\n\nfunction sha1(str){\n return crypto.createHash('sha1').update(str).digest('hex');\n}\n", "/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar __toString = Object.prototype.toString\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var dec = opt.decode || decode;\n\n var index = 0\n while (index < str.length) {\n var eqIdx = str.indexOf('=', index)\n\n // no more cookie pairs\n if (eqIdx === -1) {\n break\n }\n\n var endIdx = str.indexOf(';', index)\n\n if (endIdx === -1) {\n endIdx = str.length\n } else if (endIdx < eqIdx) {\n // backtrack on prior semicolon\n index = str.lastIndexOf(';', eqIdx - 1) + 1\n continue\n }\n\n var key = str.slice(index, eqIdx).trim()\n\n // only assign once\n if (undefined === obj[key]) {\n var val = str.slice(eqIdx + 1, endIdx).trim()\n\n // quoted values\n if (val.charCodeAt(0) === 0x22) {\n val = val.slice(1, -1)\n }\n\n obj[key] = tryDecode(val, dec);\n }\n\n index = endIdx + 1\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n var expires = opt.expires\n\n if (!isDate(expires) || isNaN(expires.valueOf())) {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + expires.toUTCString()\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.priority) {\n var priority = typeof opt.priority === 'string'\n ? opt.priority.toLowerCase()\n : opt.priority\n\n switch (priority) {\n case 'low':\n str += '; Priority=Low'\n break\n case 'medium':\n str += '; Priority=Medium'\n break\n case 'high':\n str += '; Priority=High'\n break\n default:\n throw new TypeError('option priority is invalid')\n }\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * URL-decode string value. Optimized to skip native call when no %.\n *\n * @param {string} str\n * @returns {string}\n */\n\nfunction decode (str) {\n return str.indexOf('%') !== -1\n ? decodeURIComponent(str)\n : str\n}\n\n/**\n * URL-encode value.\n *\n * @param {string} str\n * @returns {string}\n */\n\nfunction encode (val) {\n return encodeURIComponent(val)\n}\n\n/**\n * Determine if value is a Date.\n *\n * @param {*} val\n * @private\n */\n\nfunction isDate (val) {\n return __toString.call(val) === '[object Date]' ||\n val instanceof Date\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n", "/*!\n * vary\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n */\n\nmodule.exports = vary\nmodule.exports.append = append\n\n/**\n * RegExp to match field-name in RFC 7230 sec 3.2\n *\n * field-name = token\n * token = 1*tchar\n * tchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n * / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n * / DIGIT / ALPHA\n * ; any VCHAR, except delimiters\n */\n\nvar FIELD_NAME_REGEXP = /^[!#$%&'*+\\-.^_`|~0-9A-Za-z]+$/\n\n/**\n * Append a field to a vary header.\n *\n * @param {String} header\n * @param {String|Array} field\n * @return {String}\n * @public\n */\n\nfunction append (header, field) {\n if (typeof header !== 'string') {\n throw new TypeError('header argument is required')\n }\n\n if (!field) {\n throw new TypeError('field argument is required')\n }\n\n // get fields array\n var fields = !Array.isArray(field)\n ? parse(String(field))\n : field\n\n // assert on invalid field names\n for (var j = 0; j < fields.length; j++) {\n if (!FIELD_NAME_REGEXP.test(fields[j])) {\n throw new TypeError('field argument contains an invalid header name')\n }\n }\n\n // existing, unspecified vary\n if (header === '*') {\n return header\n }\n\n // enumerate current values\n var val = header\n var vals = parse(header.toLowerCase())\n\n // unspecified vary\n if (fields.indexOf('*') !== -1 || vals.indexOf('*') !== -1) {\n return '*'\n }\n\n for (var i = 0; i < fields.length; i++) {\n var fld = fields[i].toLowerCase()\n\n // append value (case-preserving)\n if (vals.indexOf(fld) === -1) {\n vals.push(fld)\n val = val\n ? val + ', ' + fields[i]\n : fields[i]\n }\n }\n\n return val\n}\n\n/**\n * Parse a vary header into an array.\n *\n * @param {String} header\n * @return {Array}\n * @private\n */\n\nfunction parse (header) {\n var end = 0\n var list = []\n var start = 0\n\n // gather tokens\n for (var i = 0, len = header.length; i < len; i++) {\n switch (header.charCodeAt(i)) {\n case 0x20: /* */\n if (start === end) {\n start = end = i + 1\n }\n break\n case 0x2c: /* , */\n list.push(header.substring(start, end))\n start = end = i + 1\n break\n default:\n end = i + 1\n break\n }\n }\n\n // final token\n list.push(header.substring(start, end))\n\n return list\n}\n\n/**\n * Mark that a request is varied on a header field.\n *\n * @param {Object} res\n * @param {String|Array} field\n * @public\n */\n\nfunction vary (res, field) {\n if (!res || !res.getHeader || !res.setHeader) {\n // quack quack\n throw new TypeError('res argument is required')\n }\n\n // get existing header\n var val = res.getHeader('Vary') || ''\n var header = Array.isArray(val)\n ? val.join(', ')\n : String(val)\n\n // set new header\n if ((val = append(header, field))) {\n res.setHeader('Vary', val)\n }\n}\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar Buffer = require('safe-buffer').Buffer\nvar contentDisposition = require('content-disposition');\nvar createError = require('http-errors')\nvar deprecate = require('depd')('express');\nvar encodeUrl = require('encodeurl');\nvar escapeHtml = require('escape-html');\nvar http = require('http');\nvar isAbsolute = require('./utils').isAbsolute;\nvar onFinished = require('on-finished');\nvar path = require('path');\nvar statuses = require('statuses')\nvar merge = require('utils-merge');\nvar sign = require('cookie-signature').sign;\nvar normalizeType = require('./utils').normalizeType;\nvar normalizeTypes = require('./utils').normalizeTypes;\nvar setCharset = require('./utils').setCharset;\nvar cookie = require('cookie');\nvar send = require('send');\nvar extname = path.extname;\nvar mime = send.mime;\nvar resolve = path.resolve;\nvar vary = require('vary');\n\n/**\n * Response prototype.\n * @public\n */\n\nvar res = Object.create(http.ServerResponse.prototype)\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = res\n\n/**\n * Module variables.\n * @private\n */\n\nvar charsetRegExp = /;\\s*charset\\s*=/;\n\n/**\n * Set status `code`.\n *\n * @param {Number} code\n * @return {ServerResponse}\n * @public\n */\n\nres.status = function status(code) {\n if ((typeof code === 'string' || Math.floor(code) !== code) && code > 99 && code < 1000) {\n deprecate('res.status(' + JSON.stringify(code) + '): use res.status(' + Math.floor(code) + ') instead')\n }\n this.statusCode = code;\n return this;\n};\n\n/**\n * Set Link header field with the given `links`.\n *\n * Examples:\n *\n * res.links({\n * next: 'http://api.example.com/users?page=2',\n * last: 'http://api.example.com/users?page=5'\n * });\n *\n * @param {Object} links\n * @return {ServerResponse}\n * @public\n */\n\nres.links = function(links){\n var link = this.get('Link') || '';\n if (link) link += ', ';\n return this.set('Link', link + Object.keys(links).map(function(rel){\n return '<' + links[rel] + '>; rel=\"' + rel + '\"';\n }).join(', '));\n};\n\n/**\n * Send a response.\n *\n * Examples:\n *\n * res.send(Buffer.from('wahoo'));\n * res.send({ some: 'json' });\n * res.send('

some html

');\n *\n * @param {string|number|boolean|object|Buffer} body\n * @public\n */\n\nres.send = function send(body) {\n var chunk = body;\n var encoding;\n var req = this.req;\n var type;\n\n // settings\n var app = this.app;\n\n // allow status / body\n if (arguments.length === 2) {\n // res.send(body, status) backwards compat\n if (typeof arguments[0] !== 'number' && typeof arguments[1] === 'number') {\n deprecate('res.send(body, status): Use res.status(status).send(body) instead');\n this.statusCode = arguments[1];\n } else {\n deprecate('res.send(status, body): Use res.status(status).send(body) instead');\n this.statusCode = arguments[0];\n chunk = arguments[1];\n }\n }\n\n // disambiguate res.send(status) and res.send(status, num)\n if (typeof chunk === 'number' && arguments.length === 1) {\n // res.send(status) will set status message as text string\n if (!this.get('Content-Type')) {\n this.type('txt');\n }\n\n deprecate('res.send(status): Use res.sendStatus(status) instead');\n this.statusCode = chunk;\n chunk = statuses.message[chunk]\n }\n\n switch (typeof chunk) {\n // string defaulting to html\n case 'string':\n if (!this.get('Content-Type')) {\n this.type('html');\n }\n break;\n case 'boolean':\n case 'number':\n case 'object':\n if (chunk === null) {\n chunk = '';\n } else if (Buffer.isBuffer(chunk)) {\n if (!this.get('Content-Type')) {\n this.type('bin');\n }\n } else {\n return this.json(chunk);\n }\n break;\n }\n\n // write strings in utf-8\n if (typeof chunk === 'string') {\n encoding = 'utf8';\n type = this.get('Content-Type');\n\n // reflect this in content-type\n if (typeof type === 'string') {\n this.set('Content-Type', setCharset(type, 'utf-8'));\n }\n }\n\n // determine if ETag should be generated\n var etagFn = app.get('etag fn')\n var generateETag = !this.get('ETag') && typeof etagFn === 'function'\n\n // populate Content-Length\n var len\n if (chunk !== undefined) {\n if (Buffer.isBuffer(chunk)) {\n // get length of Buffer\n len = chunk.length\n } else if (!generateETag && chunk.length < 1000) {\n // just calculate length when no ETag + small chunk\n len = Buffer.byteLength(chunk, encoding)\n } else {\n // convert chunk to Buffer and calculate\n chunk = Buffer.from(chunk, encoding)\n encoding = undefined;\n len = chunk.length\n }\n\n this.set('Content-Length', len);\n }\n\n // populate ETag\n var etag;\n if (generateETag && len !== undefined) {\n if ((etag = etagFn(chunk, encoding))) {\n this.set('ETag', etag);\n }\n }\n\n // freshness\n if (req.fresh) this.statusCode = 304;\n\n // strip irrelevant headers\n if (204 === this.statusCode || 304 === this.statusCode) {\n this.removeHeader('Content-Type');\n this.removeHeader('Content-Length');\n this.removeHeader('Transfer-Encoding');\n chunk = '';\n }\n\n // alter headers for 205\n if (this.statusCode === 205) {\n this.set('Content-Length', '0')\n this.removeHeader('Transfer-Encoding')\n chunk = ''\n }\n\n if (req.method === 'HEAD') {\n // skip body for HEAD\n this.end();\n } else {\n // respond\n this.end(chunk, encoding);\n }\n\n return this;\n};\n\n/**\n * Send JSON response.\n *\n * Examples:\n *\n * res.json(null);\n * res.json({ user: 'tj' });\n *\n * @param {string|number|boolean|object} obj\n * @public\n */\n\nres.json = function json(obj) {\n var val = obj;\n\n // allow status / body\n if (arguments.length === 2) {\n // res.json(body, status) backwards compat\n if (typeof arguments[1] === 'number') {\n deprecate('res.json(obj, status): Use res.status(status).json(obj) instead');\n this.statusCode = arguments[1];\n } else {\n deprecate('res.json(status, obj): Use res.status(status).json(obj) instead');\n this.statusCode = arguments[0];\n val = arguments[1];\n }\n }\n\n // settings\n var app = this.app;\n var escape = app.get('json escape')\n var replacer = app.get('json replacer');\n var spaces = app.get('json spaces');\n var body = stringify(val, replacer, spaces, escape)\n\n // content-type\n if (!this.get('Content-Type')) {\n this.set('Content-Type', 'application/json');\n }\n\n return this.send(body);\n};\n\n/**\n * Send JSON response with JSONP callback support.\n *\n * Examples:\n *\n * res.jsonp(null);\n * res.jsonp({ user: 'tj' });\n *\n * @param {string|number|boolean|object} obj\n * @public\n */\n\nres.jsonp = function jsonp(obj) {\n var val = obj;\n\n // allow status / body\n if (arguments.length === 2) {\n // res.jsonp(body, status) backwards compat\n if (typeof arguments[1] === 'number') {\n deprecate('res.jsonp(obj, status): Use res.status(status).jsonp(obj) instead');\n this.statusCode = arguments[1];\n } else {\n deprecate('res.jsonp(status, obj): Use res.status(status).jsonp(obj) instead');\n this.statusCode = arguments[0];\n val = arguments[1];\n }\n }\n\n // settings\n var app = this.app;\n var escape = app.get('json escape')\n var replacer = app.get('json replacer');\n var spaces = app.get('json spaces');\n var body = stringify(val, replacer, spaces, escape)\n var callback = this.req.query[app.get('jsonp callback name')];\n\n // content-type\n if (!this.get('Content-Type')) {\n this.set('X-Content-Type-Options', 'nosniff');\n this.set('Content-Type', 'application/json');\n }\n\n // fixup callback\n if (Array.isArray(callback)) {\n callback = callback[0];\n }\n\n // jsonp\n if (typeof callback === 'string' && callback.length !== 0) {\n this.set('X-Content-Type-Options', 'nosniff');\n this.set('Content-Type', 'text/javascript');\n\n // restrict callback charset\n callback = callback.replace(/[^\\[\\]\\w$.]/g, '');\n\n if (body === undefined) {\n // empty argument\n body = ''\n } else if (typeof body === 'string') {\n // replace chars not allowed in JavaScript that are in JSON\n body = body\n .replace(/\\u2028/g, '\\\\u2028')\n .replace(/\\u2029/g, '\\\\u2029')\n }\n\n // the /**/ is a specific security mitigation for \"Rosetta Flash JSONP abuse\"\n // the typeof check is just to reduce client error noise\n body = '/**/ typeof ' + callback + ' === \\'function\\' && ' + callback + '(' + body + ');';\n }\n\n return this.send(body);\n};\n\n/**\n * Send given HTTP status code.\n *\n * Sets the response status to `statusCode` and the body of the\n * response to the standard description from node's http.STATUS_CODES\n * or the statusCode number if no description.\n *\n * Examples:\n *\n * res.sendStatus(200);\n *\n * @param {number} statusCode\n * @public\n */\n\nres.sendStatus = function sendStatus(statusCode) {\n var body = statuses.message[statusCode] || String(statusCode)\n\n this.statusCode = statusCode;\n this.type('txt');\n\n return this.send(body);\n};\n\n/**\n * Transfer the file at the given `path`.\n *\n * Automatically sets the _Content-Type_ response header field.\n * The callback `callback(err)` is invoked when the transfer is complete\n * or when an error occurs. Be sure to check `res.headersSent`\n * if you wish to attempt responding, as the header and some data\n * may have already been transferred.\n *\n * Options:\n *\n * - `maxAge` defaulting to 0 (can be string converted by `ms`)\n * - `root` root directory for relative filenames\n * - `headers` object of headers to serve with file\n * - `dotfiles` serve dotfiles, defaulting to false; can be `\"allow\"` to send them\n *\n * Other options are passed along to `send`.\n *\n * Examples:\n *\n * The following example illustrates how `res.sendFile()` may\n * be used as an alternative for the `static()` middleware for\n * dynamic situations. The code backing `res.sendFile()` is actually\n * the same code, so HTTP cache support etc is identical.\n *\n * app.get('/user/:uid/photos/:file', function(req, res){\n * var uid = req.params.uid\n * , file = req.params.file;\n *\n * req.user.mayViewFilesFrom(uid, function(yes){\n * if (yes) {\n * res.sendFile('/uploads/' + uid + '/' + file);\n * } else {\n * res.send(403, 'Sorry! you cant see that.');\n * }\n * });\n * });\n *\n * @public\n */\n\nres.sendFile = function sendFile(path, options, callback) {\n var done = callback;\n var req = this.req;\n var res = this;\n var next = req.next;\n var opts = options || {};\n\n if (!path) {\n throw new TypeError('path argument is required to res.sendFile');\n }\n\n if (typeof path !== 'string') {\n throw new TypeError('path must be a string to res.sendFile')\n }\n\n // support function as second arg\n if (typeof options === 'function') {\n done = options;\n opts = {};\n }\n\n if (!opts.root && !isAbsolute(path)) {\n throw new TypeError('path must be absolute or specify root to res.sendFile');\n }\n\n // create file stream\n var pathname = encodeURI(path);\n var file = send(req, pathname, opts);\n\n // transfer\n sendfile(res, file, opts, function (err) {\n if (done) return done(err);\n if (err && err.code === 'EISDIR') return next();\n\n // next() all but write errors\n if (err && err.code !== 'ECONNABORTED' && err.syscall !== 'write') {\n next(err);\n }\n });\n};\n\n/**\n * Transfer the file at the given `path`.\n *\n * Automatically sets the _Content-Type_ response header field.\n * The callback `callback(err)` is invoked when the transfer is complete\n * or when an error occurs. Be sure to check `res.headersSent`\n * if you wish to attempt responding, as the header and some data\n * may have already been transferred.\n *\n * Options:\n *\n * - `maxAge` defaulting to 0 (can be string converted by `ms`)\n * - `root` root directory for relative filenames\n * - `headers` object of headers to serve with file\n * - `dotfiles` serve dotfiles, defaulting to false; can be `\"allow\"` to send them\n *\n * Other options are passed along to `send`.\n *\n * Examples:\n *\n * The following example illustrates how `res.sendfile()` may\n * be used as an alternative for the `static()` middleware for\n * dynamic situations. The code backing `res.sendfile()` is actually\n * the same code, so HTTP cache support etc is identical.\n *\n * app.get('/user/:uid/photos/:file', function(req, res){\n * var uid = req.params.uid\n * , file = req.params.file;\n *\n * req.user.mayViewFilesFrom(uid, function(yes){\n * if (yes) {\n * res.sendfile('/uploads/' + uid + '/' + file);\n * } else {\n * res.send(403, 'Sorry! you cant see that.');\n * }\n * });\n * });\n *\n * @public\n */\n\nres.sendfile = function (path, options, callback) {\n var done = callback;\n var req = this.req;\n var res = this;\n var next = req.next;\n var opts = options || {};\n\n // support function as second arg\n if (typeof options === 'function') {\n done = options;\n opts = {};\n }\n\n // create file stream\n var file = send(req, path, opts);\n\n // transfer\n sendfile(res, file, opts, function (err) {\n if (done) return done(err);\n if (err && err.code === 'EISDIR') return next();\n\n // next() all but write errors\n if (err && err.code !== 'ECONNABORTED' && err.syscall !== 'write') {\n next(err);\n }\n });\n};\n\nres.sendfile = deprecate.function(res.sendfile,\n 'res.sendfile: Use res.sendFile instead');\n\n/**\n * Transfer the file at the given `path` as an attachment.\n *\n * Optionally providing an alternate attachment `filename`,\n * and optional callback `callback(err)`. The callback is invoked\n * when the data transfer is complete, or when an error has\n * occurred. Be sure to check `res.headersSent` if you plan to respond.\n *\n * Optionally providing an `options` object to use with `res.sendFile()`.\n * This function will set the `Content-Disposition` header, overriding\n * any `Content-Disposition` header passed as header options in order\n * to set the attachment and filename.\n *\n * This method uses `res.sendFile()`.\n *\n * @public\n */\n\nres.download = function download (path, filename, options, callback) {\n var done = callback;\n var name = filename;\n var opts = options || null\n\n // support function as second or third arg\n if (typeof filename === 'function') {\n done = filename;\n name = null;\n opts = null\n } else if (typeof options === 'function') {\n done = options\n opts = null\n }\n\n // support optional filename, where options may be in it's place\n if (typeof filename === 'object' &&\n (typeof options === 'function' || options === undefined)) {\n name = null\n opts = filename\n }\n\n // set Content-Disposition when file is sent\n var headers = {\n 'Content-Disposition': contentDisposition(name || path)\n };\n\n // merge user-provided headers\n if (opts && opts.headers) {\n var keys = Object.keys(opts.headers)\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n if (key.toLowerCase() !== 'content-disposition') {\n headers[key] = opts.headers[key]\n }\n }\n }\n\n // merge user-provided options\n opts = Object.create(opts)\n opts.headers = headers\n\n // Resolve the full path for sendFile\n var fullPath = !opts.root\n ? resolve(path)\n : path\n\n // send file\n return this.sendFile(fullPath, opts, done)\n};\n\n/**\n * Set _Content-Type_ response header with `type` through `mime.lookup()`\n * when it does not contain \"/\", or set the Content-Type to `type` otherwise.\n *\n * Examples:\n *\n * res.type('.html');\n * res.type('html');\n * res.type('json');\n * res.type('application/json');\n * res.type('png');\n *\n * @param {String} type\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.contentType =\nres.type = function contentType(type) {\n var ct = type.indexOf('/') === -1\n ? mime.lookup(type)\n : type;\n\n return this.set('Content-Type', ct);\n};\n\n/**\n * Respond to the Acceptable formats using an `obj`\n * of mime-type callbacks.\n *\n * This method uses `req.accepted`, an array of\n * acceptable types ordered by their quality values.\n * When \"Accept\" is not present the _first_ callback\n * is invoked, otherwise the first match is used. When\n * no match is performed the server responds with\n * 406 \"Not Acceptable\".\n *\n * Content-Type is set for you, however if you choose\n * you may alter this within the callback using `res.type()`\n * or `res.set('Content-Type', ...)`.\n *\n * res.format({\n * 'text/plain': function(){\n * res.send('hey');\n * },\n *\n * 'text/html': function(){\n * res.send('

hey

');\n * },\n *\n * 'application/json': function () {\n * res.send({ message: 'hey' });\n * }\n * });\n *\n * In addition to canonicalized MIME types you may\n * also use extnames mapped to these types:\n *\n * res.format({\n * text: function(){\n * res.send('hey');\n * },\n *\n * html: function(){\n * res.send('

hey

');\n * },\n *\n * json: function(){\n * res.send({ message: 'hey' });\n * }\n * });\n *\n * By default Express passes an `Error`\n * with a `.status` of 406 to `next(err)`\n * if a match is not made. If you provide\n * a `.default` callback it will be invoked\n * instead.\n *\n * @param {Object} obj\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.format = function(obj){\n var req = this.req;\n var next = req.next;\n\n var keys = Object.keys(obj)\n .filter(function (v) { return v !== 'default' })\n\n var key = keys.length > 0\n ? req.accepts(keys)\n : false;\n\n this.vary(\"Accept\");\n\n if (key) {\n this.set('Content-Type', normalizeType(key).value);\n obj[key](req, this, next);\n } else if (obj.default) {\n obj.default(req, this, next)\n } else {\n next(createError(406, {\n types: normalizeTypes(keys).map(function (o) { return o.value })\n }))\n }\n\n return this;\n};\n\n/**\n * Set _Content-Disposition_ header to _attachment_ with optional `filename`.\n *\n * @param {String} filename\n * @return {ServerResponse}\n * @public\n */\n\nres.attachment = function attachment(filename) {\n if (filename) {\n this.type(extname(filename));\n }\n\n this.set('Content-Disposition', contentDisposition(filename));\n\n return this;\n};\n\n/**\n * Append additional header `field` with value `val`.\n *\n * Example:\n *\n * res.append('Link', ['', '']);\n * res.append('Set-Cookie', 'foo=bar; Path=/; HttpOnly');\n * res.append('Warning', '199 Miscellaneous warning');\n *\n * @param {String} field\n * @param {String|Array} val\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.append = function append(field, val) {\n var prev = this.get(field);\n var value = val;\n\n if (prev) {\n // concat the new and prev vals\n value = Array.isArray(prev) ? prev.concat(val)\n : Array.isArray(val) ? [prev].concat(val)\n : [prev, val]\n }\n\n return this.set(field, value);\n};\n\n/**\n * Set header `field` to `val`, or pass\n * an object of header fields.\n *\n * Examples:\n *\n * res.set('Foo', ['bar', 'baz']);\n * res.set('Accept', 'application/json');\n * res.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' });\n *\n * Aliased as `res.header()`.\n *\n * @param {String|Object} field\n * @param {String|Array} val\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.set =\nres.header = function header(field, val) {\n if (arguments.length === 2) {\n var value = Array.isArray(val)\n ? val.map(String)\n : String(val);\n\n // add charset to content-type\n if (field.toLowerCase() === 'content-type') {\n if (Array.isArray(value)) {\n throw new TypeError('Content-Type cannot be set to an Array');\n }\n if (!charsetRegExp.test(value)) {\n var charset = mime.charsets.lookup(value.split(';')[0]);\n if (charset) value += '; charset=' + charset.toLowerCase();\n }\n }\n\n this.setHeader(field, value);\n } else {\n for (var key in field) {\n this.set(key, field[key]);\n }\n }\n return this;\n};\n\n/**\n * Get value for header `field`.\n *\n * @param {String} field\n * @return {String}\n * @public\n */\n\nres.get = function(field){\n return this.getHeader(field);\n};\n\n/**\n * Clear cookie `name`.\n *\n * @param {String} name\n * @param {Object} [options]\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.clearCookie = function clearCookie(name, options) {\n var opts = merge({ expires: new Date(1), path: '/' }, options);\n\n return this.cookie(name, '', opts);\n};\n\n/**\n * Set cookie `name` to `value`, with the given `options`.\n *\n * Options:\n *\n * - `maxAge` max-age in milliseconds, converted to `expires`\n * - `signed` sign the cookie\n * - `path` defaults to \"/\"\n *\n * Examples:\n *\n * // \"Remember Me\" for 15 minutes\n * res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true });\n *\n * // same as above\n * res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true })\n *\n * @param {String} name\n * @param {String|Object} value\n * @param {Object} [options]\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.cookie = function (name, value, options) {\n var opts = merge({}, options);\n var secret = this.req.secret;\n var signed = opts.signed;\n\n if (signed && !secret) {\n throw new Error('cookieParser(\"secret\") required for signed cookies');\n }\n\n var val = typeof value === 'object'\n ? 'j:' + JSON.stringify(value)\n : String(value);\n\n if (signed) {\n val = 's:' + sign(val, secret);\n }\n\n if (opts.maxAge != null) {\n var maxAge = opts.maxAge - 0\n\n if (!isNaN(maxAge)) {\n opts.expires = new Date(Date.now() + maxAge)\n opts.maxAge = Math.floor(maxAge / 1000)\n }\n }\n\n if (opts.path == null) {\n opts.path = '/';\n }\n\n this.append('Set-Cookie', cookie.serialize(name, String(val), opts));\n\n return this;\n};\n\n/**\n * Set the location header to `url`.\n *\n * The given `url` can also be \"back\", which redirects\n * to the _Referrer_ or _Referer_ headers or \"/\".\n *\n * Examples:\n *\n * res.location('/foo/bar').;\n * res.location('http://example.com');\n * res.location('../login');\n *\n * @param {String} url\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.location = function location(url) {\n var loc = url;\n\n // \"back\" is an alias for the referrer\n if (url === 'back') {\n loc = this.req.get('Referrer') || '/';\n }\n\n // set location\n return this.set('Location', encodeUrl(loc));\n};\n\n/**\n * Redirect to the given `url` with optional response `status`\n * defaulting to 302.\n *\n * The resulting `url` is determined by `res.location()`, so\n * it will play nicely with mounted apps, relative paths,\n * `\"back\"` etc.\n *\n * Examples:\n *\n * res.redirect('/foo/bar');\n * res.redirect('http://example.com');\n * res.redirect(301, 'http://example.com');\n * res.redirect('../login'); // /blog/post/1 -> /blog/login\n *\n * @public\n */\n\nres.redirect = function redirect(url) {\n var address = url;\n var body;\n var status = 302;\n\n // allow status / url\n if (arguments.length === 2) {\n if (typeof arguments[0] === 'number') {\n status = arguments[0];\n address = arguments[1];\n } else {\n deprecate('res.redirect(url, status): Use res.redirect(status, url) instead');\n status = arguments[1];\n }\n }\n\n // Set location header\n address = this.location(address).get('Location');\n\n // Support text/{plain,html} by default\n this.format({\n text: function(){\n body = statuses.message[status] + '. Redirecting to ' + address\n },\n\n html: function(){\n var u = escapeHtml(address);\n body = '

' + statuses.message[status] + '. Redirecting to ' + u + '

'\n },\n\n default: function(){\n body = '';\n }\n });\n\n // Respond\n this.statusCode = status;\n this.set('Content-Length', Buffer.byteLength(body));\n\n if (this.req.method === 'HEAD') {\n this.end();\n } else {\n this.end(body);\n }\n};\n\n/**\n * Add `field` to Vary. If already present in the Vary set, then\n * this call is simply ignored.\n *\n * @param {Array|String} field\n * @return {ServerResponse} for chaining\n * @public\n */\n\nres.vary = function(field){\n // checks for back-compat\n if (!field || (Array.isArray(field) && !field.length)) {\n deprecate('res.vary(): Provide a field name');\n return this;\n }\n\n vary(this, field);\n\n return this;\n};\n\n/**\n * Render `view` with the given `options` and optional callback `fn`.\n * When a callback function is given a response will _not_ be made\n * automatically, otherwise a response of _200_ and _text/html_ is given.\n *\n * Options:\n *\n * - `cache` boolean hinting to the engine it should cache\n * - `filename` filename of the view being rendered\n *\n * @public\n */\n\nres.render = function render(view, options, callback) {\n var app = this.req.app;\n var done = callback;\n var opts = options || {};\n var req = this.req;\n var self = this;\n\n // support callback function as second arg\n if (typeof options === 'function') {\n done = options;\n opts = {};\n }\n\n // merge res.locals\n opts._locals = self.locals;\n\n // default callback to respond\n done = done || function (err, str) {\n if (err) return req.next(err);\n self.send(str);\n };\n\n // render\n app.render(view, opts, done);\n};\n\n// pipe the send file stream\nfunction sendfile(res, file, options, callback) {\n var done = false;\n var streaming;\n\n // request aborted\n function onaborted() {\n if (done) return;\n done = true;\n\n var err = new Error('Request aborted');\n err.code = 'ECONNABORTED';\n callback(err);\n }\n\n // directory\n function ondirectory() {\n if (done) return;\n done = true;\n\n var err = new Error('EISDIR, read');\n err.code = 'EISDIR';\n callback(err);\n }\n\n // errors\n function onerror(err) {\n if (done) return;\n done = true;\n callback(err);\n }\n\n // ended\n function onend() {\n if (done) return;\n done = true;\n callback();\n }\n\n // file\n function onfile() {\n streaming = false;\n }\n\n // finished\n function onfinish(err) {\n if (err && err.code === 'ECONNRESET') return onaborted();\n if (err) return onerror(err);\n if (done) return;\n\n setImmediate(function () {\n if (streaming !== false && !done) {\n onaborted();\n return;\n }\n\n if (done) return;\n done = true;\n callback();\n });\n }\n\n // streaming\n function onstream() {\n streaming = true;\n }\n\n file.on('directory', ondirectory);\n file.on('end', onend);\n file.on('error', onerror);\n file.on('file', onfile);\n file.on('stream', onstream);\n onFinished(res, onfinish);\n\n if (options.headers) {\n // set headers on successful transfer\n file.on('headers', function headers(res) {\n var obj = options.headers;\n var keys = Object.keys(obj);\n\n for (var i = 0; i < keys.length; i++) {\n var k = keys[i];\n res.setHeader(k, obj[k]);\n }\n });\n }\n\n // pipe\n file.pipe(res);\n}\n\n/**\n * Stringify JSON, like JSON.stringify, but v8 optimized, with the\n * ability to escape characters that can trigger HTML sniffing.\n *\n * @param {*} value\n * @param {function} replacer\n * @param {number} spaces\n * @param {boolean} escape\n * @returns {string}\n * @private\n */\n\nfunction stringify (value, replacer, spaces, escape) {\n // v8 checks arguments.length for optimizing simple call\n // https://bugs.chromium.org/p/v8/issues/detail?id=4730\n var json = replacer || spaces\n ? JSON.stringify(value, replacer, spaces)\n : JSON.stringify(value);\n\n if (escape && typeof json === 'string') {\n json = json.replace(/[<>&]/g, function (c) {\n switch (c.charCodeAt(0)) {\n case 0x3c:\n return '\\\\u003c'\n case 0x3e:\n return '\\\\u003e'\n case 0x26:\n return '\\\\u0026'\n /* istanbul ignore next: unreachable default */\n default:\n return c\n }\n })\n }\n\n return json\n}\n", "/*!\n * serve-static\n * Copyright(c) 2010 Sencha Inc.\n * Copyright(c) 2011 TJ Holowaychuk\n * Copyright(c) 2014-2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar encodeUrl = require('encodeurl')\nvar escapeHtml = require('escape-html')\nvar parseUrl = require('parseurl')\nvar resolve = require('path').resolve\nvar send = require('send')\nvar url = require('url')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = serveStatic\nmodule.exports.mime = send.mime\n\n/**\n * @param {string} root\n * @param {object} [options]\n * @return {function}\n * @public\n */\n\nfunction serveStatic (root, options) {\n if (!root) {\n throw new TypeError('root path required')\n }\n\n if (typeof root !== 'string') {\n throw new TypeError('root path must be a string')\n }\n\n // copy options object\n var opts = Object.create(options || null)\n\n // fall-though\n var fallthrough = opts.fallthrough !== false\n\n // default redirect\n var redirect = opts.redirect !== false\n\n // headers listener\n var setHeaders = opts.setHeaders\n\n if (setHeaders && typeof setHeaders !== 'function') {\n throw new TypeError('option setHeaders must be function')\n }\n\n // setup options for send\n opts.maxage = opts.maxage || opts.maxAge || 0\n opts.root = resolve(root)\n\n // construct directory listener\n var onDirectory = redirect\n ? createRedirectDirectoryListener()\n : createNotFoundDirectoryListener()\n\n return function serveStatic (req, res, next) {\n if (req.method !== 'GET' && req.method !== 'HEAD') {\n if (fallthrough) {\n return next()\n }\n\n // method not allowed\n res.statusCode = 405\n res.setHeader('Allow', 'GET, HEAD')\n res.setHeader('Content-Length', '0')\n res.end()\n return\n }\n\n var forwardError = !fallthrough\n var originalUrl = parseUrl.original(req)\n var path = parseUrl(req).pathname\n\n // make sure redirect occurs at mount\n if (path === '/' && originalUrl.pathname.substr(-1) !== '/') {\n path = ''\n }\n\n // create send stream\n var stream = send(req, path, opts)\n\n // add directory handler\n stream.on('directory', onDirectory)\n\n // add headers listener\n if (setHeaders) {\n stream.on('headers', setHeaders)\n }\n\n // add file listener for fallthrough\n if (fallthrough) {\n stream.on('file', function onFile () {\n // once file is determined, always forward error\n forwardError = true\n })\n }\n\n // forward errors\n stream.on('error', function error (err) {\n if (forwardError || !(err.statusCode < 500)) {\n next(err)\n return\n }\n\n next()\n })\n\n // pipe\n stream.pipe(res)\n }\n}\n\n/**\n * Collapse all leading slashes into a single slash\n * @private\n */\nfunction collapseLeadingSlashes (str) {\n for (var i = 0; i < str.length; i++) {\n if (str.charCodeAt(i) !== 0x2f /* / */) {\n break\n }\n }\n\n return i > 1\n ? '/' + str.substr(i)\n : str\n}\n\n/**\n * Create a minimal HTML document.\n *\n * @param {string} title\n * @param {string} body\n * @private\n */\n\nfunction createHtmlDocument (title, body) {\n return '\\n' +\n '\\n' +\n '\\n' +\n '\\n' +\n '' + title + '\\n' +\n '\\n' +\n '\\n' +\n '
' + body + '
\\n' +\n '\\n' +\n '\\n'\n}\n\n/**\n * Create a directory listener that just 404s.\n * @private\n */\n\nfunction createNotFoundDirectoryListener () {\n return function notFound () {\n this.error(404)\n }\n}\n\n/**\n * Create a directory listener that performs a redirect.\n * @private\n */\n\nfunction createRedirectDirectoryListener () {\n return function redirect (res) {\n if (this.hasTrailingSlash()) {\n this.error(404)\n return\n }\n\n // get original URL\n var originalUrl = parseUrl.original(this.req)\n\n // append trailing slash\n originalUrl.path = null\n originalUrl.pathname = collapseLeadingSlashes(originalUrl.pathname + '/')\n\n // reformat the URL\n var loc = encodeUrl(url.format(originalUrl))\n var doc = createHtmlDocument('Redirecting', 'Redirecting to ' +\n escapeHtml(loc) + '')\n\n // send redirect response\n res.statusCode = 301\n res.setHeader('Content-Type', 'text/html; charset=UTF-8')\n res.setHeader('Content-Length', Buffer.byteLength(doc))\n res.setHeader('Content-Security-Policy', \"default-src 'none'\")\n res.setHeader('X-Content-Type-Options', 'nosniff')\n res.setHeader('Location', loc)\n res.end(doc)\n }\n}\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n */\n\nvar bodyParser = require('body-parser')\nvar EventEmitter = require('events').EventEmitter;\nvar mixin = require('merge-descriptors');\nvar proto = require('./application');\nvar Route = require('./router/route');\nvar Router = require('./router');\nvar req = require('./request');\nvar res = require('./response');\n\n/**\n * Expose `createApplication()`.\n */\n\nexports = module.exports = createApplication;\n\n/**\n * Create an express application.\n *\n * @return {Function}\n * @api public\n */\n\nfunction createApplication() {\n var app = function(req, res, next) {\n app.handle(req, res, next);\n };\n\n mixin(app, EventEmitter.prototype, false);\n mixin(app, proto, false);\n\n // expose the prototype that will get set on requests\n app.request = Object.create(req, {\n app: { configurable: true, enumerable: true, writable: true, value: app }\n })\n\n // expose the prototype that will get set on responses\n app.response = Object.create(res, {\n app: { configurable: true, enumerable: true, writable: true, value: app }\n })\n\n app.init();\n return app;\n}\n\n/**\n * Expose the prototypes.\n */\n\nexports.application = proto;\nexports.request = req;\nexports.response = res;\n\n/**\n * Expose constructors.\n */\n\nexports.Route = Route;\nexports.Router = Router;\n\n/**\n * Expose middleware\n */\n\nexports.json = bodyParser.json\nexports.query = require('./middleware/query');\nexports.raw = bodyParser.raw\nexports.static = require('serve-static');\nexports.text = bodyParser.text\nexports.urlencoded = bodyParser.urlencoded\n\n/**\n * Replace removed middleware with an appropriate error message.\n */\n\nvar removedMiddlewares = [\n 'bodyParser',\n 'compress',\n 'cookieSession',\n 'session',\n 'logger',\n 'cookieParser',\n 'favicon',\n 'responseTime',\n 'errorHandler',\n 'timeout',\n 'methodOverride',\n 'vhost',\n 'csrf',\n 'directory',\n 'limit',\n 'multipart',\n 'staticCache'\n]\n\nremovedMiddlewares.forEach(function (name) {\n Object.defineProperty(exports, name, {\n get: function () {\n throw new Error('Most middleware (like ' + name + ') is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.');\n },\n configurable: true\n });\n});\n", "/*!\n * express\n * Copyright(c) 2009-2013 TJ Holowaychuk\n * Copyright(c) 2013 Roman Shtylman\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\nmodule.exports = require('./lib/express');\n", "/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n", "(function () {\n\n 'use strict';\n\n var assign = require('object-assign');\n var vary = require('vary');\n\n var defaults = {\n origin: '*',\n methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',\n preflightContinue: false,\n optionsSuccessStatus: 204\n };\n\n function isString(s) {\n return typeof s === 'string' || s instanceof String;\n }\n\n function isOriginAllowed(origin, allowedOrigin) {\n if (Array.isArray(allowedOrigin)) {\n for (var i = 0; i < allowedOrigin.length; ++i) {\n if (isOriginAllowed(origin, allowedOrigin[i])) {\n return true;\n }\n }\n return false;\n } else if (isString(allowedOrigin)) {\n return origin === allowedOrigin;\n } else if (allowedOrigin instanceof RegExp) {\n return allowedOrigin.test(origin);\n } else {\n return !!allowedOrigin;\n }\n }\n\n function configureOrigin(options, req) {\n var requestOrigin = req.headers.origin,\n headers = [],\n isAllowed;\n\n if (!options.origin || options.origin === '*') {\n // allow any origin\n headers.push([{\n key: 'Access-Control-Allow-Origin',\n value: '*'\n }]);\n } else if (isString(options.origin)) {\n // fixed origin\n headers.push([{\n key: 'Access-Control-Allow-Origin',\n value: options.origin\n }]);\n headers.push([{\n key: 'Vary',\n value: 'Origin'\n }]);\n } else {\n isAllowed = isOriginAllowed(requestOrigin, options.origin);\n // reflect origin\n headers.push([{\n key: 'Access-Control-Allow-Origin',\n value: isAllowed ? requestOrigin : false\n }]);\n headers.push([{\n key: 'Vary',\n value: 'Origin'\n }]);\n }\n\n return headers;\n }\n\n function configureMethods(options) {\n var methods = options.methods;\n if (methods.join) {\n methods = options.methods.join(','); // .methods is an array, so turn it into a string\n }\n return {\n key: 'Access-Control-Allow-Methods',\n value: methods\n };\n }\n\n function configureCredentials(options) {\n if (options.credentials === true) {\n return {\n key: 'Access-Control-Allow-Credentials',\n value: 'true'\n };\n }\n return null;\n }\n\n function configureAllowedHeaders(options, req) {\n var allowedHeaders = options.allowedHeaders || options.headers;\n var headers = [];\n\n if (!allowedHeaders) {\n allowedHeaders = req.headers['access-control-request-headers']; // .headers wasn't specified, so reflect the request headers\n headers.push([{\n key: 'Vary',\n value: 'Access-Control-Request-Headers'\n }]);\n } else if (allowedHeaders.join) {\n allowedHeaders = allowedHeaders.join(','); // .headers is an array, so turn it into a string\n }\n if (allowedHeaders && allowedHeaders.length) {\n headers.push([{\n key: 'Access-Control-Allow-Headers',\n value: allowedHeaders\n }]);\n }\n\n return headers;\n }\n\n function configureExposedHeaders(options) {\n var headers = options.exposedHeaders;\n if (!headers) {\n return null;\n } else if (headers.join) {\n headers = headers.join(','); // .headers is an array, so turn it into a string\n }\n if (headers && headers.length) {\n return {\n key: 'Access-Control-Expose-Headers',\n value: headers\n };\n }\n return null;\n }\n\n function configureMaxAge(options) {\n var maxAge = (typeof options.maxAge === 'number' || options.maxAge) && options.maxAge.toString()\n if (maxAge && maxAge.length) {\n return {\n key: 'Access-Control-Max-Age',\n value: maxAge\n };\n }\n return null;\n }\n\n function applyHeaders(headers, res) {\n for (var i = 0, n = headers.length; i < n; i++) {\n var header = headers[i];\n if (header) {\n if (Array.isArray(header)) {\n applyHeaders(header, res);\n } else if (header.key === 'Vary' && header.value) {\n vary(res, header.value);\n } else if (header.value) {\n res.setHeader(header.key, header.value);\n }\n }\n }\n }\n\n function cors(options, req, res, next) {\n var headers = [],\n method = req.method && req.method.toUpperCase && req.method.toUpperCase();\n\n if (method === 'OPTIONS') {\n // preflight\n headers.push(configureOrigin(options, req));\n headers.push(configureCredentials(options, req));\n headers.push(configureMethods(options, req));\n headers.push(configureAllowedHeaders(options, req));\n headers.push(configureMaxAge(options, req));\n headers.push(configureExposedHeaders(options, req));\n applyHeaders(headers, res);\n\n if (options.preflightContinue) {\n next();\n } else {\n // Safari (and potentially other browsers) need content-length 0,\n // for 204 or they just hang waiting for a body\n res.statusCode = options.optionsSuccessStatus;\n res.setHeader('Content-Length', '0');\n res.end();\n }\n } else {\n // actual response\n headers.push(configureOrigin(options, req));\n headers.push(configureCredentials(options, req));\n headers.push(configureExposedHeaders(options, req));\n applyHeaders(headers, res);\n next();\n }\n }\n\n function middlewareWrapper(o) {\n // if options are static (either via defaults or custom options passed in), wrap in a function\n var optionsCallback = null;\n if (typeof o === 'function') {\n optionsCallback = o;\n } else {\n optionsCallback = function (req, cb) {\n cb(null, o);\n };\n }\n\n return function corsMiddleware(req, res, next) {\n optionsCallback(req, function (err, options) {\n if (err) {\n next(err);\n } else {\n var corsOptions = assign({}, defaults, options);\n var originCallback = null;\n if (corsOptions.origin && typeof corsOptions.origin === 'function') {\n originCallback = corsOptions.origin;\n } else if (corsOptions.origin) {\n originCallback = function (origin, cb) {\n cb(null, corsOptions.origin);\n };\n }\n\n if (originCallback) {\n originCallback(req.headers.origin, function (err2, origin) {\n if (err2 || !origin) {\n next(err2);\n } else {\n corsOptions.origin = origin;\n cors(corsOptions, req, res, next);\n }\n });\n } else {\n next();\n }\n }\n });\n };\n }\n\n // can pass either an options hash, an options delegate, or nothing\n module.exports = middlewareWrapper;\n\n}());\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "export const version = \"logger/5.7.0\";\n", "\"use strict\";\n\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\n\nconst LogLevels: { [ name: string ]: number } = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\n\nimport { version } from \"./_version\";\n\nlet _globalLogger: Logger = null;\n\nfunction _checkNormalize(): string {\n try {\n const missing: Array = [ ];\n\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n };\n } catch(error) {\n missing.push(form);\n }\n });\n\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\")\n }\n } catch (error) {\n return error.message;\n }\n\n return null;\n}\n\nconst _normalizeError = _checkNormalize();\n\nexport enum LogLevel {\n DEBUG = \"DEBUG\",\n INFO = \"INFO\",\n WARNING = \"WARNING\",\n ERROR = \"ERROR\",\n OFF = \"OFF\"\n}\n\n\nexport enum ErrorCode {\n\n ///////////////////\n // Generic Errors\n\n // Unknown Error\n UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n\n // Not Implemented\n NOT_IMPLEMENTED = \"NOT_IMPLEMENTED\",\n\n // Unsupported Operation\n // - operation\n UNSUPPORTED_OPERATION = \"UNSUPPORTED_OPERATION\",\n\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n NETWORK_ERROR = \"NETWORK_ERROR\",\n\n // Some sort of bad response from the server\n SERVER_ERROR = \"SERVER_ERROR\",\n\n // Timeout\n TIMEOUT = \"TIMEOUT\",\n\n ///////////////////\n // Operational Errors\n\n // Buffer Overrun\n BUFFER_OVERRUN = \"BUFFER_OVERRUN\",\n\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n NUMERIC_FAULT = \"NUMERIC_FAULT\",\n\n\n ///////////////////\n // Argument Errors\n\n // Missing new operator to an object\n // - name: The name of the class\n MISSING_NEW = \"MISSING_NEW\",\n\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n INVALID_ARGUMENT = \"INVALID_ARGUMENT\",\n\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n MISSING_ARGUMENT = \"MISSING_ARGUMENT\",\n\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n UNEXPECTED_ARGUMENT = \"UNEXPECTED_ARGUMENT\",\n\n\n ///////////////////\n // Blockchain Errors\n\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n CALL_EXCEPTION = \"CALL_EXCEPTION\",\n\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n INSUFFICIENT_FUNDS = \"INSUFFICIENT_FUNDS\",\n\n // Nonce has already been used\n // - transaction: the transaction attempted\n NONCE_EXPIRED = \"NONCE_EXPIRED\",\n\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n REPLACEMENT_UNDERPRICED = \"REPLACEMENT_UNDERPRICED\",\n\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n UNPREDICTABLE_GAS_LIMIT = \"UNPREDICTABLE_GAS_LIMIT\",\n\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n TRANSACTION_REPLACED = \"TRANSACTION_REPLACED\",\n\n\n ///////////////////\n // Interaction Errors\n\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ACTION_REJECTED = \"ACTION_REJECTED\",\n};\n\nconst HEX = \"0123456789abcdef\";\n\nexport class Logger {\n readonly version: string;\n\n static errors = ErrorCode;\n\n static levels = LogLevel;\n\n constructor(version: string) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n\n _log(logLevel: LogLevel, args: Array): void {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) { return; }\n console.log.apply(console, args);\n }\n\n debug(...args: Array): void {\n this._log(Logger.levels.DEBUG, args);\n }\n\n info(...args: Array): void {\n this._log(Logger.levels.INFO, args);\n }\n\n warn(...args: Array): void {\n this._log(Logger.levels.WARNING, args);\n }\n\n makeError(message: string, code?: ErrorCode, params?: any): Error {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, { });\n }\n\n if (!code) { code = Logger.errors.UNKNOWN_ERROR; }\n if (!params) { params = {}; }\n\n const messageDetails: Array = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n } else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n } catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${ code }`);\n messageDetails.push(`version=${ this.version }`);\n\n const reason = message;\n\n let url = \"\";\n\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n\n switch (fault) {\n case \"overflow\": case \"underflow\": case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\": case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n\n // @TODO: Any??\n const error: any = new Error(message);\n error.reason = reason;\n error.code = code\n\n Object.keys(params).forEach(function(key) {\n error[key] = params[key];\n });\n\n return error;\n }\n\n throwError(message: string, code?: ErrorCode, params?: any): never {\n throw this.makeError(message, code, params);\n }\n\n throwArgumentError(message: string, name: string, value: any): never {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n\n assert(condition: any, message: string, code?: ErrorCode, params?: any): void {\n if (!!condition) { return; }\n this.throwError(message, code, params);\n }\n\n assertArgument(condition: any, message: string, name: string, value: any): void {\n if (!!condition) { return; }\n this.throwArgumentError(message, name, value);\n }\n\n checkNormalize(message?: string): void {\n if (message == null) { message = \"platform missing String.prototype.normalize\"; }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n\n checkSafeUint53(value: number, message?: string): void {\n if (typeof(value) !== \"number\") { return; }\n\n if (message == null) { message = \"value not safe\"; }\n\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n\n checkArgumentCount(count: number, expectedCount: number, message?: string): void {\n if (message) {\n message = \": \" + message;\n } else {\n message = \"\";\n }\n\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n\n checkNew(target: any, kind: any): void {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n checkAbstract(target: any, kind: any): void {\n if (target === kind) {\n this.throwError(\n \"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { name: target.name, operation: \"new\" }\n );\n } else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n static globalLogger(): Logger {\n if (!_globalLogger) { _globalLogger = new Logger(version); }\n return _globalLogger;\n }\n\n static setCensorship(censorship: boolean, permanent?: boolean): void {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n if (_permanentCensorErrors) {\n if (!censorship) { return; }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n\n static setLogLevel(logLevel: LogLevel): void {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n\n static from(version: string): Logger {\n return new Logger(version);\n }\n}\n", "export const version = \"bytes/5.7.0\";\n", "\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type Bytes = ArrayLike;\n\nexport type BytesLike = Bytes | string;\n\nexport type DataOptions = {\n allowMissingPrefix?: boolean;\n hexPad?: \"left\" | \"right\" | null;\n};\n\nexport interface Hexable {\n toHexString(): string;\n}\n\n\n/*\nexport interface HexString {\n length: number;\n substring: (start: number, end?: number) => string;\n\n [index: number]: string;\n}\n*/\n\nexport type SignatureLike = {\n r: string;\n s?: string;\n _vs?: string,\n recoveryParam?: number;\n v?: number;\n} | BytesLike;\n\nexport interface Signature {\n r: string;\n\n s: string;\n _vs: string,\n\n recoveryParam: number;\n v: number;\n\n yParityAndS: string\n compact: string;\n}\n\n///////////////////////////////\n\n\nfunction isHexable(value: any): value is Hexable {\n return !!(value.toHexString);\n}\n\nfunction addSlice(array: Uint8Array): Uint8Array {\n if (array.slice) { return array; }\n\n array.slice = function() {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n }\n\n return array;\n}\n\nexport function isBytesLike(value: any): value is BytesLike {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\n\nfunction isInteger(value: number) {\n return (typeof(value) === \"number\" && value == value && (value % 1) === 0);\n}\n\nexport function isBytes(value: any): value is Bytes {\n if (value == null) { return false; }\n\n if (value.constructor === Uint8Array) { return true; }\n if (typeof(value) === \"string\") { return false; }\n if (!isInteger(value.length) || value.length < 0) { return false; }\n\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) { return false; }\n }\n return true;\n}\n\n\nexport function arrayify(value: BytesLike | Hexable | number, options?: DataOptions): Uint8Array {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) { result.push(0); }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { value = value.toHexString(); }\n\n if (isHexString(value)) {\n let hex = (value).substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n } else if (options.hexPad === \"right\") {\n hex += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\n\nexport function concat(items: ReadonlyArray): Uint8Array {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n\n const result = new Uint8Array(length);\n\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n\n return addSlice(result);\n}\n\nexport function stripZeros(value: BytesLike): Uint8Array {\n let result: Uint8Array = arrayify(value);\n\n if (result.length === 0) { return result; }\n\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) { start++ }\n\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n\n return result;\n}\n\nexport function zeroPad(value: BytesLike, length: number): Uint8Array {\n value = arrayify(value);\n\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\n\n\nexport function isHexString(value: any, length?: number): boolean {\n if (typeof(value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false\n }\n if (length && value.length !== 2 + 2 * length) { return false; }\n return true;\n}\n\nconst HexCharacters: string = \"0123456789abcdef\";\n\nexport function hexlify(value: BytesLike | Hexable | number | bigint, options?: DataOptions): string {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n\n if (hex.length) {\n if (hex.length % 2) { hex = \"0\" + hex; }\n return \"0x\" + hex;\n }\n\n return \"0x00\";\n }\n\n if (typeof(value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) { return (\"0x0\" + value); }\n return \"0x\" + value;\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { return value.toHexString(); }\n\n if (isHexString(value)) {\n if ((value).length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + (value).substring(2);\n } else if (options.hexPad === \"right\") {\n value += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return (value).toLowerCase();\n }\n\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data: BytesLike) {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n\n return (data.length - 2) / 2;\n}\n\nexport function hexDataSlice(data: BytesLike, offset: number, endOffset?: number): string {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data );\n }\n\n offset = 2 + 2 * offset;\n\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n\n return \"0x\" + data.substring(offset);\n}\n\nexport function hexConcat(items: ReadonlyArray): string {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\n\nexport function hexValue(value: BytesLike | Hexable | number | bigint): string {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") { return \"0x0\"; }\n return trimmed;\n}\n\nexport function hexStripZeros(value: BytesLike): string {\n if (typeof(value) !== \"string\") { value = hexlify(value); }\n\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") { offset++; }\n return \"0x\" + value.substring(offset);\n}\n\nexport function hexZeroPad(value: BytesLike, length: number): string {\n if (typeof(value) !== \"string\") {\n value = hexlify(value);\n } else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n\n return value;\n}\n\nexport function splitSignature(signature: SignatureLike): Signature {\n\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n\n if (isBytesLike(signature)) {\n let bytes: Uint8Array = arrayify(signature);\n\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n\n } else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n } else {\n\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n\n\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n } else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) { bytes[32] |= 0x80; }\n result._vs = hexlify(bytes.slice(32, 64))\n\n } else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1: 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n } else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n } else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n } else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n } else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n } else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n } else {\n const recId = (result.v === 0 || result.v === 1) ? result.v :(1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n } else {\n result.r = hexZeroPad(result.r, 32);\n }\n\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n } else {\n result.s = hexZeroPad(result.s, 32);\n }\n\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) { vs[0] |= 0x80; }\n const _vs = hexlify(vs);\n\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n } else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n\n return result;\n}\n\nexport function joinSignature(signature: SignatureLike): string {\n signature = splitSignature(signature);\n\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\": \"0x1b\")\n ]));\n}\n\n", "export const version = \"bignumber/5.7.0\";\n", "\"use strict\";\n\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\n\nimport _BN from \"bn.js\";\nimport BN = _BN.BN;\n\nimport { Bytes, Hexable, hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst _constructorGuard = { };\n\nconst MAX_SAFE = 0x1fffffffffffff;\n\n\nexport type BigNumberish = BigNumber | Bytes | bigint | string | number;\n\nexport function isBigNumberish(value: any): value is BigNumberish {\n return (value != null) && (\n BigNumber.isBigNumber(value) ||\n (typeof(value) === \"number\" && (value % 1) === 0) ||\n (typeof(value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof(value) === \"bigint\") ||\n isBytes(value)\n );\n}\n\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\n\nexport class BigNumber implements Hexable {\n readonly _hex: string;\n readonly _isBigNumber: boolean;\n\n constructor(constructorGuard: any, hex: string) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n\n this._hex = hex;\n this._isBigNumber = true;\n\n Object.freeze(this);\n }\n\n fromTwos(value: number): BigNumber {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n\n toTwos(value: number): BigNumber {\n return toBigNumber(toBN(this).toTwos(value));\n }\n\n abs(): BigNumber {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n\n add(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n\n sub(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n\n div(other: BigNumberish): BigNumber {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n\n mul(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n\n mod(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n\n pow(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n\n and(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n\n or(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n\n xor(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n\n mask(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n\n shl(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n\n shr(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n\n eq(other: BigNumberish): boolean {\n return toBN(this).eq(toBN(other));\n }\n\n lt(other: BigNumberish): boolean {\n return toBN(this).lt(toBN(other));\n }\n\n lte(other: BigNumberish): boolean {\n return toBN(this).lte(toBN(other));\n }\n\n gt(other: BigNumberish): boolean {\n return toBN(this).gt(toBN(other));\n }\n\n gte(other: BigNumberish): boolean {\n return toBN(this).gte(toBN(other));\n }\n\n isNegative(): boolean {\n return (this._hex[0] === \"-\");\n }\n\n isZero(): boolean {\n return toBN(this).isZero();\n }\n\n toNumber(): number {\n try {\n return toBN(this).toNumber();\n } catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n\n toBigInt(): bigint {\n try {\n return BigInt(this.toString());\n } catch (e) { }\n\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n\n toString(): string {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n } else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n } else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n }\n }\n return toBN(this).toString(10);\n }\n\n toHexString(): string {\n return this._hex;\n }\n\n toJSON(key?: string): any {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n\n static from(value: any): BigNumber {\n if (value instanceof BigNumber) { return value; }\n\n if (typeof(value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n\n if (typeof(value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n\n return BigNumber.from(String(value));\n }\n\n const anyValue = value;\n\n if (typeof(anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n\n if (anyValue) {\n\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof(hex) === \"string\") {\n return BigNumber.from(hex);\n }\n\n } else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n\n if (typeof(hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n\n static isBigNumber(value: any): value is BigNumber {\n return !!(value && value._isBigNumber);\n }\n}\n\n// Normalize the hex string\nfunction toHex(value: string | BN): string {\n\n // For BN, call on the hex string\n if (typeof(value) !== \"string\") {\n return toHex(value.toString(16));\n }\n\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") { logger.throwArgumentError(\"invalid hex\", \"value\", value); }\n\n // Call toHex on the positive component\n value = toHex(value);\n\n // Do not allow \"-0x00\"\n if (value === \"0x00\") { return value; }\n\n // Negate the value\n return \"-\" + value;\n }\n\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") { value = \"0x\" + value; }\n\n // Normalize zero\n if (value === \"0x\") { return \"0x00\"; }\n\n // Make the string even length\n if (value.length % 2) { value = \"0x0\" + value.substring(2); }\n\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n\n return value;\n}\n\nfunction toBigNumber(value: BN): BigNumber {\n return BigNumber.from(toHex(value));\n}\n\nfunction toBN(value: BigNumberish): BN {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\n\nfunction throwFault(fault: string, operation: string, value?: any): never {\n const params: any = { fault: fault, operation: operation };\n if (value != null) { params.value = value; }\n\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n\n// value should have no prefix\nexport function _base36To16(value: string): string {\n return (new BN(value, 36)).toString(16);\n}\n\n// value should have no prefix\nexport function _base16To36(value: string): string {\n return (new BN(value, 16)).toString(36);\n}\n", "\"use strict\";\n\nimport { arrayify, BytesLike, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BigNumber, BigNumberish, isBigNumberish } from \"./bignumber\";\n\nconst _constructorGuard = { };\n\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\n\nfunction throwFault(message: string, fault: string, operation: string, value?: any): never {\n const params: any = { fault: fault, operation: operation };\n if (value !== undefined) { params.value = value; }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) { zeros += zeros; }\n\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals: BigNumberish): string {\n\n if (typeof(decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n } catch (e) { }\n }\n\n if (typeof(decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\n\nexport function formatFixed(value: BigNumberish, decimals?: string | BigNumberish): string {\n if (decimals == null) { decimals = 0; }\n const multiplier = getMultiplier(decimals);\n\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n\n const negative = value.lt(Zero);\n if (negative) { value = value.mul(NegativeOne); }\n\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) { fraction = \"0\" + fraction; }\n\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n } else {\n value = whole + \".\" + fraction;\n }\n\n if (negative) { value = \"-\" + value; }\n\n return value;\n}\n\nexport function parseFixed(value: string, decimals?: BigNumberish): BigNumber {\n\n if (decimals == null) { decimals = 0; }\n const multiplier = getMultiplier(decimals);\n\n if (typeof(value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) { value = value.substring(1); }\n\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n\n let whole = comps[0], fraction = comps[1];\n if (!whole) { whole = \"0\"; }\n if (!fraction) { fraction = \"0\"; }\n\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") { fraction = \"0\"; }\n\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) { fraction += \"0\"; }\n\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n\n if (negative) { wei = wei.mul(NegativeOne); }\n\n return wei;\n}\n\n\nexport class FixedFormat {\n readonly signed: boolean;\n readonly width: number;\n readonly decimals: number;\n readonly name: string;\n readonly _multiplier: string;\n\n constructor(constructorGuard: any, signed: boolean, width: number, decimals: number) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n\n this.name = (signed ? \"\": \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n\n this._multiplier = getMultiplier(decimals);\n\n Object.freeze(this);\n }\n\n static from(value: any): FixedFormat {\n if (value instanceof FixedFormat) { return value; }\n\n if (typeof(value) === \"number\") {\n value = `fixed128x${value}`\n }\n\n let signed = true;\n let width = 128;\n let decimals = 18;\n\n if (typeof(value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n } else if (value === \"ufixed\") {\n signed = false;\n } else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) { logger.throwArgumentError(\"invalid fixed format\", \"format\", value); }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n } else if (value) {\n const check = (key: string, type: string, defaultValue: any): any => {\n if (value[key] == null) { return defaultValue; }\n if (typeof(value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type +\")\", \"format.\" + key, value[key]);\n }\n return value[key];\n }\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\n\nexport class FixedNumber {\n readonly format: FixedFormat;\n readonly _hex: string;\n readonly _value: string;\n\n readonly _isFixedNumber: boolean;\n\n constructor(constructorGuard: any, hex: string, value: string, format?: FixedFormat) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n\n this.format = format;\n this._hex = hex;\n this._value = value;\n\n this._isFixedNumber = true;\n\n Object.freeze(this);\n }\n\n _checkFormat(other: FixedNumber): void {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n\n addUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n\n subUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n\n mulUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n\n divUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n\n floor(): FixedNumber {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) { comps.push(\"0\"); }\n\n let result = FixedNumber.from(comps[0], this.format);\n\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n\n return result;\n }\n\n ceiling(): FixedNumber {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) { comps.push(\"0\"); }\n\n let result = FixedNumber.from(comps[0], this.format);\n\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n\n return result;\n }\n\n // @TODO: Support other rounding algorithms\n round(decimals?: number): FixedNumber {\n if (decimals == null) { decimals = 0; }\n\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) { comps.push(\"0\"); }\n\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n\n if (comps[1].length <= decimals) { return this; }\n\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n\n isZero(): boolean {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n\n isNegative(): boolean {\n return (this._value[0] === \"-\");\n }\n\n toString(): string { return this._value; }\n\n toHexString(width?: number): string {\n if (width == null) { return this._hex; }\n if (width % 8) { logger.throwArgumentError(\"invalid byte width\", \"width\", width); }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n\n toUnsafeFloat(): number { return parseFloat(this.toString()); }\n\n toFormat(format: FixedFormat | string): FixedNumber {\n return FixedNumber.fromString(this._value, format);\n }\n\n\n static fromValue(value: BigNumber, decimals?: BigNumberish, format?: FixedFormat | string | number): FixedNumber {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n\n if (decimals == null) { decimals = 0; }\n if (format == null) { format = \"fixed\"; }\n\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n\n\n static fromString(value: string, format?: FixedFormat | string | number): FixedNumber {\n if (format == null) { format = \"fixed\"; }\n\n const fixedFormat = FixedFormat.from(format);\n\n const numeric = parseFixed(value, fixedFormat.decimals);\n\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n\n let hex: string = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n } else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n\n static fromBytes(value: BytesLike, format?: FixedFormat | string | number): FixedNumber {\n if (format == null) { format = \"fixed\"; }\n\n const fixedFormat = FixedFormat.from(format);\n\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) { numeric = numeric.fromTwos(fixedFormat.width); }\n\n const hex = numeric.toTwos((fixedFormat.signed ? 0: 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n\n static from(value: any, format?: FixedFormat | string | number) {\n if (typeof(value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n\n try {\n return FixedNumber.fromValue(value, 0, format);\n } catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n\n static isFixedNumber(value: any): value is FixedNumber {\n return !!(value && value._isFixedNumber);\n }\n}\n\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n", "export { BigNumber, BigNumberish } from \"./bignumber\";\nexport { formatFixed, FixedFormat, FixedNumber, parseFixed } from \"./fixednumber\";\n\n// Internal methods used by address\nexport { _base16To36, _base36To16 } from \"./bignumber\";\n", "export const version = \"properties/5.7.0\";\n", "\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function defineReadOnly(object: T, name: K, value: T[K]): void {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor: any, key: string): T {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) { return ctor[key]; }\n if (!ctor.prototype || typeof(ctor.prototype) !== \"object\") { break; }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\n\nexport type Deferrable = {\n [ K in keyof T ]: T[K] | Promise;\n}\n\n\ntype Result = { key: string, value: any};\n\nexport async function resolveProperties(object: Readonly>): Promise {\n const promises: Array> = Object.keys(object).map((key) => {\n const value = object[>key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n\n const results = await Promise.all(promises);\n\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, { });\n}\n\nexport function checkProperties(object: any, properties: { [ name: string ]: boolean }): void {\n if (!object || typeof(object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\n\nexport function shallowCopy(object: T): T {\n const result: any = {};\n for (const key in object) { result[key] = object[key]; }\n return result;\n}\n\nconst opaque: { [key: string]: boolean } = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\n\nfunction _isFrozen(object: any): boolean {\n\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof(object)]) { return true; }\n\n if (Array.isArray(object) || typeof(object) === \"object\") {\n if (!Object.isFrozen(object)) { return false; }\n\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value: any = null;\n try {\n value = object[keys[i]];\n } catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n\n if (!_isFrozen(value)) { return false; }\n }\n\n return true;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object: any): any {\n\n if (_isFrozen(object)) { return object; }\n\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n\n if (typeof(object) === \"object\") {\n const result: { [ key: string ]: any } = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) { continue; }\n defineReadOnly(result, key, deepCopy(value));\n }\n\n return result;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\nexport function deepCopy(object: T): T {\n return _deepCopy(object);\n}\n\nexport class Description {\n constructor(info: { [ K in keyof T ]: T[K] }) {\n for (const key in info) {\n (this)[key] = deepCopy(info[key]);\n }\n }\n}\n", "export const version = \"abi/5.7.0\";\n", "\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport interface JsonFragmentType {\n readonly name?: string;\n readonly indexed?: boolean;\n readonly type?: string;\n readonly internalType?: any; // @TODO: in v6 reduce type\n readonly components?: ReadonlyArray;\n}\n\nexport interface JsonFragment {\n readonly name?: string;\n readonly type?: string;\n\n readonly anonymous?: boolean;\n\n readonly payable?: boolean;\n readonly constant?: boolean;\n readonly stateMutability?: string;\n\n readonly inputs?: ReadonlyArray;\n readonly outputs?: ReadonlyArray;\n\n readonly gas?: string;\n};\n\nconst _constructorGuard = { };\n\n// AST Node parser state\ntype ParseState = {\n allowArray?: boolean,\n allowName?: boolean,\n allowParams?: boolean,\n allowType?: boolean,\n readArray?: boolean,\n};\n\n// AST Node\ntype ParseNode = {\n parent?: any,\n type?: string,\n name?: string,\n state?: ParseState,\n indexed?: boolean,\n components?: Array\n};\n\nlet ModifiersBytes: { [ name: string ]: boolean } = { calldata: true, memory: true, storage: true };\nlet ModifiersNest: { [ name: string ]: boolean } = { calldata: true, memory: true };\nfunction checkModifier(type: string, name: string): boolean {\n if (type === \"bytes\" || type === \"string\") {\n if (ModifiersBytes[name]) { return true; }\n } else if (type === \"address\") {\n if (name === \"payable\") { return true; }\n } else if (type.indexOf(\"[\") >= 0 || type === \"tuple\") {\n if (ModifiersNest[name]) { return true; }\n }\n if (ModifiersBytes[name] || name === \"payable\") {\n logger.throwArgumentError(\"invalid modifier\", \"name\", name);\n }\n return false;\n}\n\n// @TODO: Make sure that children of an indexed tuple are marked with a null indexed\nfunction parseParamType(param: string, allowIndexed: boolean): ParseNode {\n\n let originalParam = param;\n function throwError(i: number) {\n logger.throwArgumentError(`unexpected character at position ${ i }`, \"param\", param);\n }\n param = param.replace(/\\s/g, \" \");\n\n function newNode(parent: ParseNode): ParseNode {\n let node: ParseNode = { type: \"\", name: \"\", parent: parent, state: { allowType: true } };\n if (allowIndexed) { node.indexed = false; }\n return node\n }\n\n let parent: ParseNode = { type: \"\", name: \"\", state: { allowType: true } };\n let node = parent;\n\n for (let i = 0; i < param.length; i++) {\n let c = param[i];\n switch (c) {\n case \"(\":\n if (node.state.allowType && node.type === \"\") {\n node.type = \"tuple\";\n } else if (!node.state.allowParams) {\n throwError(i);\n }\n node.state.allowType = false;\n node.type = verifyType(node.type);\n node.components = [ newNode(node) ];\n node = node.components[0];\n break;\n\n case \")\":\n delete node.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n }\n\n if (checkModifier(node.type, node.name)) { node.name = \"\"; }\n\n node.type = verifyType(node.type);\n\n let child = node;\n node = node.parent;\n if (!node) { throwError(i); }\n delete child.parent;\n node.state.allowParams = false;\n node.state.allowName = true;\n node.state.allowArray = true;\n break;\n\n case \",\":\n delete node.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n }\n\n if (checkModifier(node.type, node.name)) { node.name = \"\"; }\n\n node.type = verifyType(node.type);\n\n let sibling: ParseNode = newNode(node.parent);\n //{ type: \"\", name: \"\", parent: node.parent, state: { allowType: true } };\n node.parent.components.push(sibling);\n delete node.parent;\n node = sibling;\n break;\n\n // Hit a space...\n case \" \":\n\n // If reading type, the type is done and may read a param or name\n if (node.state.allowType) {\n if (node.type !== \"\") {\n node.type = verifyType(node.type);\n delete node.state.allowType;\n node.state.allowName = true;\n node.state.allowParams = true;\n }\n }\n\n // If reading name, the name is done\n if (node.state.allowName) {\n if (node.name !== \"\") {\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n if (node.indexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n } else if (checkModifier(node.type, node.name)) {\n node.name = \"\";\n } else {\n node.state.allowName = false;\n }\n }\n }\n\n break;\n\n case \"[\":\n if (!node.state.allowArray) { throwError(i); }\n\n node.type += c;\n\n node.state.allowArray = false;\n node.state.allowName = false;\n node.state.readArray = true;\n break;\n\n case \"]\":\n if (!node.state.readArray) { throwError(i); }\n\n node.type += c;\n\n node.state.readArray = false;\n node.state.allowArray = true;\n node.state.allowName = true;\n break;\n\n default:\n if (node.state.allowType) {\n node.type += c;\n node.state.allowParams = true;\n node.state.allowArray = true;\n } else if (node.state.allowName) {\n node.name += c;\n delete node.state.allowArray;\n } else if (node.state.readArray) {\n node.type += c;\n } else {\n throwError(i);\n }\n }\n }\n\n if (node.parent) { logger.throwArgumentError(\"unexpected eof\", \"param\", param); }\n\n delete parent.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(originalParam.length - 7); }\n if (node.indexed) { throwError(originalParam.length - 7); }\n node.indexed = true;\n node.name = \"\";\n } else if (checkModifier(node.type, node.name)) {\n node.name = \"\";\n }\n\n parent.type = verifyType(parent.type);\n\n return parent;\n}\n\nfunction populate(object: any, params: any) {\n for (let key in params) { defineReadOnly(object, key, params[key]); }\n}\n\nexport const FormatTypes: { [ name: string ]: string } = Object.freeze({\n // Bare formatting, as is needed for computing a sighash of an event or function\n sighash: \"sighash\",\n\n // Human-Readable with Minimal spacing and without names (compact human-readable)\n minimal: \"minimal\",\n\n // Human-Readable with nice spacing, including all names\n full: \"full\",\n\n // JSON-format a la Solidity\n json: \"json\"\n});\n\nconst paramTypeArray = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\n\nexport class ParamType {\n\n // The local name of the parameter (of null if unbound)\n readonly name: string;\n\n // The fully qualified type (e.g. \"address\", \"tuple(address)\", \"uint256[3][]\"\n readonly type: string;\n\n // The base type (e.g. \"address\", \"tuple\", \"array\")\n readonly baseType: string;\n\n // Indexable Paramters ONLY (otherwise null)\n readonly indexed: boolean;\n\n // Tuples ONLY: (otherwise null)\n // - sub-components\n readonly components: Array;\n\n // Arrays ONLY: (otherwise null)\n // - length of the array (-1 for dynamic length)\n // - child type\n readonly arrayLength: number;\n readonly arrayChildren: ParamType;\n\n readonly _isParamType: boolean;\n\n constructor(constructorGuard: any, params: any) {\n if (constructorGuard !== _constructorGuard) { logger.throwError(\"use fromString\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new ParamType()\"\n }); }\n populate(this, params);\n\n let match = this.type.match(paramTypeArray);\n if (match) {\n populate(this, {\n arrayLength: parseInt(match[2] || \"-1\"),\n arrayChildren: ParamType.fromObject({\n type: match[1],\n components: this.components\n }),\n baseType: \"array\"\n });\n } else {\n populate(this, {\n arrayLength: null,\n arrayChildren: null,\n baseType: ((this.components != null) ? \"tuple\": this.type)\n });\n }\n\n this._isParamType = true;\n\n Object.freeze(this);\n }\n\n // Format the parameter fragment\n // - sighash: \"(uint256,address)\"\n // - minimal: \"tuple(uint256,address) indexed\"\n // - full: \"tuple(uint256 foo, address bar) indexed baz\"\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n let result: any = {\n type: ((this.baseType === \"tuple\") ? \"tuple\": this.type),\n name: (this.name || undefined)\n };\n if (typeof(this.indexed) === \"boolean\") { result.indexed = this.indexed; }\n if (this.components) {\n result.components = this.components.map((comp) => JSON.parse(comp.format(format)));\n }\n return JSON.stringify(result);\n }\n\n let result = \"\";\n\n // Array\n if (this.baseType === \"array\") {\n result += this.arrayChildren.format(format);\n result += \"[\" + (this.arrayLength < 0 ? \"\": String(this.arrayLength)) + \"]\";\n } else {\n if (this.baseType === \"tuple\") {\n if (format !== FormatTypes.sighash) {\n result += this.type;\n }\n result += \"(\" + this.components.map(\n (comp) => comp.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \")\";\n } else {\n result += this.type;\n }\n }\n\n if (format !== FormatTypes.sighash) {\n if (this.indexed === true) { result += \" indexed\"; }\n if (format === FormatTypes.full && this.name) {\n result += \" \" + this.name;\n }\n }\n\n return result;\n }\n\n static from(value: string | JsonFragmentType | ParamType, allowIndexed?: boolean): ParamType {\n if (typeof(value) === \"string\") {\n return ParamType.fromString(value, allowIndexed);\n }\n return ParamType.fromObject(value);\n }\n\n static fromObject(value: JsonFragmentType | ParamType): ParamType {\n if (ParamType.isParamType(value)) { return value; }\n\n return new ParamType(_constructorGuard, {\n name: (value.name || null),\n type: verifyType(value.type),\n indexed: ((value.indexed == null) ? null: !!value.indexed),\n components: (value.components ? value.components.map(ParamType.fromObject): null)\n });\n }\n\n static fromString(value: string, allowIndexed?: boolean): ParamType {\n function ParamTypify(node: ParseNode): ParamType {\n return ParamType.fromObject({\n name: node.name,\n type: node.type,\n indexed: node.indexed,\n components: node.components\n });\n }\n\n return ParamTypify(parseParamType(value, !!allowIndexed));\n }\n\n static isParamType(value: any): value is ParamType {\n return !!(value != null && value._isParamType);\n }\n};\n\nfunction parseParams(value: string, allowIndex: boolean): Array {\n return splitNesting(value).map((param) => ParamType.fromString(param, allowIndex));\n}\n\ntype TypeCheck = { -readonly [ K in keyof T ]: T[K] };\n\ninterface _Fragment {\n readonly type: string;\n readonly name: string;\n readonly inputs: ReadonlyArray;\n}\n\nexport abstract class Fragment {\n\n readonly type: string;\n readonly name: string;\n readonly inputs: Array;\n\n readonly _isFragment: boolean;\n\n constructor(constructorGuard: any, params: any) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"use a static from method\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new Fragment()\"\n });\n }\n populate(this, params);\n\n this._isFragment = true;\n\n Object.freeze(this);\n }\n\n abstract format(format?: string): string;\n\n static from(value: Fragment | JsonFragment | string): Fragment {\n if (Fragment.isFragment(value)) { return value; }\n\n if (typeof(value) === \"string\") {\n return Fragment.fromString(value);\n }\n\n return Fragment.fromObject(value);\n }\n\n static fromObject(value: Fragment | JsonFragment): Fragment {\n if (Fragment.isFragment(value)) { return value; }\n\n switch (value.type) {\n case \"function\":\n return FunctionFragment.fromObject(value);\n case \"event\":\n return EventFragment.fromObject(value);\n case \"constructor\":\n return ConstructorFragment.fromObject(value);\n case \"error\":\n return ErrorFragment.fromObject(value);\n case \"fallback\":\n case \"receive\":\n // @TODO: Something? Maybe return a FunctionFragment? A custom DefaultFunctionFragment?\n return null;\n }\n\n return logger.throwArgumentError(\"invalid fragment object\", \"value\", value);\n }\n\n static fromString(value: string): Fragment {\n // Make sure the \"returns\" is surrounded by a space and all whitespace is exactly one space\n value = value.replace(/\\s/g, \" \");\n value = value.replace(/\\(/g, \" (\").replace(/\\)/g, \") \").replace(/\\s+/g, \" \");\n value = value.trim();\n\n if (value.split(\" \")[0] === \"event\") {\n return EventFragment.fromString(value.substring(5).trim());\n } else if (value.split(\" \")[0] === \"function\") {\n return FunctionFragment.fromString(value.substring(8).trim());\n } else if (value.split(\"(\")[0].trim() === \"constructor\") {\n return ConstructorFragment.fromString(value.trim());\n } else if (value.split(\" \")[0] === \"error\") {\n return ErrorFragment.fromString(value.substring(5).trim());\n }\n\n return logger.throwArgumentError(\"unsupported fragment\", \"value\", value);\n }\n\n static isFragment(value: any): value is Fragment {\n return !!(value && value._isFragment);\n }\n}\n\ninterface _EventFragment extends _Fragment {\n readonly anonymous: boolean;\n}\n\nexport class EventFragment extends Fragment {\n readonly anonymous: boolean;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"event\",\n anonymous: this.anonymous,\n name: this.name,\n inputs: this.inputs.map((input) => JSON.parse(input.format(format)))\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"event \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (format !== FormatTypes.sighash) {\n if (this.anonymous) {\n result += \"anonymous \";\n }\n }\n\n return result.trim();\n }\n\n static from(value: EventFragment | JsonFragment | string): EventFragment {\n if (typeof(value) === \"string\") {\n return EventFragment.fromString(value);\n }\n return EventFragment.fromObject(value);\n }\n\n static fromObject(value: JsonFragment | EventFragment): EventFragment {\n if (EventFragment.isEventFragment(value)) { return value; }\n\n if (value.type !== \"event\") {\n logger.throwArgumentError(\"invalid event object\", \"value\", value);\n }\n\n const params: TypeCheck<_EventFragment> = {\n name: verifyIdentifier(value.name),\n anonymous: value.anonymous,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject) : []),\n type: \"event\"\n };\n\n return new EventFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): EventFragment {\n\n let match = value.match(regexParen);\n if (!match) {\n logger.throwArgumentError(\"invalid event string\", \"value\", value);\n }\n\n let anonymous = false;\n match[3].split(\" \").forEach((modifier) => {\n switch(modifier.trim()) {\n case \"anonymous\":\n anonymous = true;\n break;\n case \"\":\n break;\n default:\n logger.warn(\"unknown modifier: \" + modifier);\n }\n });\n\n return EventFragment.fromObject({\n name: match[1].trim(),\n anonymous: anonymous,\n inputs: parseParams(match[2], true),\n type: \"event\"\n });\n }\n\n static isEventFragment(value: any): value is EventFragment {\n return (value && value._isFragment && value.type === \"event\");\n }\n}\n\nfunction parseGas(value: string, params: any): string {\n params.gas = null;\n\n let comps = value.split(\"@\");\n if (comps.length !== 1) {\n if (comps.length > 2) {\n logger.throwArgumentError(\"invalid human-readable ABI signature\", \"value\", value);\n }\n if (!comps[1].match(/^[0-9]+$/)) {\n logger.throwArgumentError(\"invalid human-readable ABI signature gas\", \"value\", value);\n }\n params.gas = BigNumber.from(comps[1]);\n return comps[0];\n }\n\n return value;\n}\n\nfunction parseModifiers(value: string, params: any): void {\n params.constant = false;\n params.payable = false;\n params.stateMutability = \"nonpayable\";\n\n value.split(\" \").forEach((modifier) => {\n switch (modifier.trim()) {\n case \"constant\":\n params.constant = true;\n break;\n case \"payable\":\n params.payable = true;\n params.stateMutability = \"payable\";\n break;\n case \"nonpayable\":\n params.payable = false;\n params.stateMutability = \"nonpayable\";\n break;\n case \"pure\":\n params.constant = true;\n params.stateMutability = \"pure\";\n break;\n case \"view\":\n params.constant = true;\n params.stateMutability = \"view\";\n break;\n case \"external\":\n case \"public\":\n case \"\":\n break;\n default:\n console.log(\"unknown modifier: \" + modifier);\n }\n });\n}\n\ntype StateInputValue = {\n constant?: boolean;\n payable?: boolean;\n stateMutability?: string;\n type?: string;\n};\n\ntype StateOutputValue = {\n constant: boolean;\n payable: boolean;\n stateMutability: string;\n};\n\nfunction verifyState(value: StateInputValue): StateOutputValue {\n let result: any = {\n constant: false,\n payable: true,\n stateMutability: \"payable\"\n };\n\n if (value.stateMutability != null) {\n result.stateMutability = value.stateMutability;\n\n // Set (and check things are consistent) the constant property\n result.constant = (result.stateMutability === \"view\" || result.stateMutability === \"pure\");\n if (value.constant != null) {\n if ((!!value.constant) !== result.constant) {\n logger.throwArgumentError(\"cannot have constant function with mutability \" + result.stateMutability, \"value\", value);\n }\n }\n\n // Set (and check things are consistent) the payable property\n result.payable = (result.stateMutability === \"payable\");\n if (value.payable != null) {\n if ((!!value.payable) !== result.payable) {\n logger.throwArgumentError(\"cannot have payable function with mutability \" + result.stateMutability, \"value\", value);\n }\n }\n\n } else if (value.payable != null) {\n result.payable = !!value.payable;\n\n // If payable we can assume non-constant; otherwise we can't assume\n if (value.constant == null && !result.payable && value.type !== \"constructor\") {\n logger.throwArgumentError(\"unable to determine stateMutability\", \"value\", value);\n }\n\n result.constant = !!value.constant;\n\n if (result.constant) {\n result.stateMutability = \"view\";\n } else {\n result.stateMutability = (result.payable ? \"payable\": \"nonpayable\");\n }\n\n if (result.payable && result.constant) {\n logger.throwArgumentError(\"cannot have constant payable function\", \"value\", value);\n }\n\n } else if (value.constant != null) {\n result.constant = !!value.constant;\n result.payable = !result.constant;\n result.stateMutability = (result.constant ? \"view\": \"payable\");\n\n } else if (value.type !== \"constructor\") {\n logger.throwArgumentError(\"unable to determine stateMutability\", \"value\", value);\n }\n\n return result;\n}\n\ninterface _ConstructorFragment extends _Fragment {\n stateMutability: string;\n payable: boolean;\n gas?: BigNumber;\n}\n\nexport class ConstructorFragment extends Fragment {\n stateMutability: string;\n payable: boolean;\n gas?: BigNumber;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"constructor\",\n stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability: undefined),\n payable: this.payable,\n gas: (this.gas ? this.gas.toNumber(): undefined),\n inputs: this.inputs.map((input) => JSON.parse(input.format(format)))\n });\n }\n\n if (format === FormatTypes.sighash) {\n logger.throwError(\"cannot format a constructor for sighash\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"format(sighash)\"\n });\n }\n\n let result = \"constructor(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (this.stateMutability && this.stateMutability !== \"nonpayable\") {\n result += this.stateMutability + \" \";\n }\n\n return result.trim();\n }\n\n static from(value: ConstructorFragment | JsonFragment | string): ConstructorFragment {\n if (typeof(value) === \"string\") {\n return ConstructorFragment.fromString(value);\n }\n return ConstructorFragment.fromObject(value);\n }\n\n static fromObject(value: ConstructorFragment | JsonFragment): ConstructorFragment {\n if (ConstructorFragment.isConstructorFragment(value)) { return value; }\n\n if (value.type !== \"constructor\") {\n logger.throwArgumentError(\"invalid constructor object\", \"value\", value);\n }\n\n let state = verifyState(value);\n if (state.constant) {\n logger.throwArgumentError(\"constructor cannot be constant\", \"value\", value);\n }\n\n const params: TypeCheck<_ConstructorFragment> = {\n name: null,\n type: value.type,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): []),\n payable: state.payable,\n stateMutability: state.stateMutability,\n gas: (value.gas ? BigNumber.from(value.gas): null)\n };\n\n return new ConstructorFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): ConstructorFragment {\n let params: any = { type: \"constructor\" };\n\n value = parseGas(value, params);\n\n let parens = value.match(regexParen);\n if (!parens || parens[1].trim() !== \"constructor\") {\n logger.throwArgumentError(\"invalid constructor string\", \"value\", value);\n }\n\n params.inputs = parseParams(parens[2].trim(), false);\n\n parseModifiers(parens[3].trim(), params);\n\n return ConstructorFragment.fromObject(params);\n }\n\n static isConstructorFragment(value: any): value is ConstructorFragment {\n return (value && value._isFragment && value.type === \"constructor\");\n }\n}\n\ninterface _FunctionFragment extends _ConstructorFragment {\n constant: boolean;\n outputs?: Array;\n}\n\nexport class FunctionFragment extends ConstructorFragment {\n constant: boolean;\n outputs?: Array;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"function\",\n name: this.name,\n constant: this.constant,\n stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability: undefined),\n payable: this.payable,\n gas: (this.gas ? this.gas.toNumber(): undefined),\n inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n outputs: this.outputs.map((output) => JSON.parse(output.format(format))),\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"function \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (format !== FormatTypes.sighash) {\n if (this.stateMutability) {\n if (this.stateMutability !== \"nonpayable\") {\n result += (this.stateMutability + \" \");\n }\n } else if (this.constant) {\n result += \"view \";\n }\n\n if (this.outputs && this.outputs.length) {\n result += \"returns (\" + this.outputs.map(\n (output) => output.format(format)\n ).join(\", \") + \") \";\n }\n\n if (this.gas != null) {\n result += \"@\" + this.gas.toString() + \" \";\n }\n }\n\n return result.trim();\n }\n\n static from(value: FunctionFragment | JsonFragment | string): FunctionFragment {\n if (typeof(value) === \"string\") {\n return FunctionFragment.fromString(value);\n }\n return FunctionFragment.fromObject(value);\n }\n\n static fromObject(value: FunctionFragment | JsonFragment): FunctionFragment {\n if (FunctionFragment.isFunctionFragment(value)) { return value; }\n\n if (value.type !== \"function\") {\n logger.throwArgumentError(\"invalid function object\", \"value\", value);\n }\n\n let state = verifyState(value);\n\n const params: TypeCheck<_FunctionFragment> = {\n type: value.type,\n name: verifyIdentifier(value.name),\n constant: state.constant,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): []),\n outputs: (value.outputs ? value.outputs.map(ParamType.fromObject): [ ]),\n payable: state.payable,\n stateMutability: state.stateMutability,\n gas: (value.gas ? BigNumber.from(value.gas): null)\n };\n\n return new FunctionFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): FunctionFragment {\n let params: any = { type: \"function\" };\n value = parseGas(value, params);\n\n let comps = value.split(\" returns \");\n if (comps.length > 2) {\n logger.throwArgumentError(\"invalid function string\", \"value\", value);\n }\n\n let parens = comps[0].match(regexParen);\n if (!parens) {\n logger.throwArgumentError(\"invalid function signature\", \"value\", value);\n }\n\n params.name = parens[1].trim();\n if (params.name) { verifyIdentifier(params.name); }\n\n params.inputs = parseParams(parens[2], false);\n\n parseModifiers(parens[3].trim(), params);\n\n // We have outputs\n if (comps.length > 1) {\n let returns = comps[1].match(regexParen);\n if (returns[1].trim() != \"\" || returns[3].trim() != \"\") {\n logger.throwArgumentError(\"unexpected tokens\", \"value\", value);\n }\n params.outputs = parseParams(returns[2], false);\n } else {\n params.outputs = [ ];\n }\n\n return FunctionFragment.fromObject(params);\n }\n\n static isFunctionFragment(value: any): value is FunctionFragment {\n return (value && value._isFragment && value.type === \"function\");\n }\n}\n\n//export class StructFragment extends Fragment {\n//}\n\nfunction checkForbidden(fragment: ErrorFragment): ErrorFragment {\n const sig = fragment.format();\n if (sig === \"Error(string)\" || sig === \"Panic(uint256)\") {\n logger.throwArgumentError(`cannot specify user defined ${ sig } error`, \"fragment\", fragment);\n }\n return fragment;\n}\n\nexport class ErrorFragment extends Fragment {\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"error\",\n name: this.name,\n inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"error \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n return result.trim();\n }\n\n static from(value: ErrorFragment | JsonFragment | string): ErrorFragment {\n if (typeof(value) === \"string\") {\n return ErrorFragment.fromString(value);\n }\n return ErrorFragment.fromObject(value);\n }\n\n static fromObject(value: ErrorFragment | JsonFragment): ErrorFragment {\n if (ErrorFragment.isErrorFragment(value)) { return value; }\n\n if (value.type !== \"error\") {\n logger.throwArgumentError(\"invalid error object\", \"value\", value);\n }\n\n const params: TypeCheck<_Fragment> = {\n type: value.type,\n name: verifyIdentifier(value.name),\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): [])\n };\n\n return checkForbidden(new ErrorFragment(_constructorGuard, params));\n }\n\n static fromString(value: string): ErrorFragment {\n let params: any = { type: \"error\" };\n\n let parens = value.match(regexParen);\n if (!parens) {\n logger.throwArgumentError(\"invalid error signature\", \"value\", value);\n }\n\n params.name = parens[1].trim();\n if (params.name) { verifyIdentifier(params.name); }\n\n params.inputs = parseParams(parens[2], false);\n\n return checkForbidden(ErrorFragment.fromObject(params));\n }\n\n static isErrorFragment(value: any): value is ErrorFragment {\n return (value && value._isFragment && value.type === \"error\");\n }\n}\n\nfunction verifyType(type: string): string {\n\n // These need to be transformed to their full description\n if (type.match(/^uint($|[^1-9])/)) {\n type = \"uint256\" + type.substring(4);\n } else if (type.match(/^int($|[^1-9])/)) {\n type = \"int256\" + type.substring(3);\n }\n\n // @TODO: more verification\n\n return type;\n}\n\n// See: https://github.com/ethereum/solidity/blob/1f8f1a3db93a548d0555e3e14cfc55a10e25b60e/docs/grammar/SolidityLexer.g4#L234\nconst regexIdentifier = new RegExp(\"^[a-zA-Z$_][a-zA-Z0-9$_]*$\");\nfunction verifyIdentifier(value: string): string {\n if (!value || !value.match(regexIdentifier)) {\n logger.throwArgumentError(`invalid identifier \"${ value }\"`, \"value\", value);\n }\n return value;\n}\n\nconst regexParen = new RegExp(\"^([^)(]*)\\\\((.*)\\\\)([^)(]*)$\");\n\nfunction splitNesting(value: string): Array {\n value = value.trim();\n\n let result = [];\n let accum = \"\";\n let depth = 0;\n for (let offset = 0; offset < value.length; offset++) {\n let c = value[offset];\n if (c === \",\" && depth === 0) {\n result.push(accum);\n accum = \"\";\n } else {\n accum += c;\n if (c === \"(\") {\n depth++;\n } else if (c === \")\") {\n depth--;\n if (depth === -1) {\n logger.throwArgumentError(\"unbalanced parenthesis\", \"value\", value);\n }\n }\n }\n }\n if (accum) { result.push(accum); }\n\n return result;\n}\n\n", "\"use strict\";\n\nimport { arrayify, BytesLike, concat, hexConcat, hexlify } from \"@ethersproject/bytes\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"../_version\";\nconst logger = new Logger(version);\n\nexport interface Result extends ReadonlyArray {\n readonly [key: string]: any;\n}\n\nexport function checkResultErrors(result: Result): Array<{ path: Array, error: Error }> {\n // Find the first error (if any)\n const errors: Array<{ path: Array, error: Error }> = [ ];\n\n const checkErrors = function(path: Array, object: any): void {\n if (!Array.isArray(object)) { return; }\n for (let key in object) {\n const childPath = path.slice();\n childPath.push(key);\n\n try {\n checkErrors(childPath, object[key]);\n } catch (error) {\n errors.push({ path: childPath, error: error });\n }\n }\n }\n checkErrors([ ], result);\n\n return errors;\n\n}\n\nexport type CoerceFunc = (type: string, value: any) => any;\n\nexport abstract class Coder {\n\n // The coder name:\n // - address, uint256, tuple, array, etc.\n readonly name: string;\n\n // The fully expanded type, including composite types:\n // - address, uint256, tuple(address,bytes), uint256[3][4][], etc.\n readonly type: string;\n\n // The localName bound in the signature, in this example it is \"baz\":\n // - tuple(address foo, uint bar) baz\n readonly localName: string;\n\n // Whether this type is dynamic:\n // - Dynamic: bytes, string, address[], tuple(boolean[]), etc.\n // - Not Dynamic: address, uint256, boolean[3], tuple(address, uint8)\n readonly dynamic: boolean;\n\n constructor(name: string, type: string, localName: string, dynamic: boolean) {\n // @TODO: defineReadOnly these\n this.name = name;\n this.type = type;\n this.localName = localName;\n this.dynamic = dynamic;\n }\n\n _throwError(message: string, value: any): void {\n logger.throwArgumentError(message, this.localName, value);\n }\n\n abstract encode(writer: Writer, value: any): number;\n abstract decode(reader: Reader): any;\n\n abstract defaultValue(): any;\n}\n\nexport class Writer {\n readonly wordSize: number;\n\n _data: Array;\n _dataLength: number;\n _padding: Uint8Array;\n\n constructor(wordSize?: number) {\n defineReadOnly(this, \"wordSize\", wordSize || 32);\n this._data = [ ];\n this._dataLength = 0;\n this._padding = new Uint8Array(wordSize);\n }\n\n get data(): string {\n return hexConcat(this._data);\n }\n get length(): number { return this._dataLength; }\n\n _writeData(data: Uint8Array): number {\n this._data.push(data);\n this._dataLength += data.length;\n return data.length;\n }\n\n appendWriter(writer: Writer): number {\n return this._writeData(concat(writer._data));\n }\n\n // Arrayish items; padded on the right to wordSize\n writeBytes(value: BytesLike): number {\n let bytes = arrayify(value);\n const paddingOffset = bytes.length % this.wordSize;\n if (paddingOffset) {\n bytes = concat([ bytes, this._padding.slice(paddingOffset) ])\n }\n return this._writeData(bytes);\n }\n\n _getValue(value: BigNumberish): Uint8Array {\n let bytes = arrayify(BigNumber.from(value));\n if (bytes.length > this.wordSize) {\n logger.throwError(\"value out-of-bounds\", Logger.errors.BUFFER_OVERRUN, {\n length: this.wordSize,\n offset: bytes.length\n });\n }\n if (bytes.length % this.wordSize) {\n bytes = concat([ this._padding.slice(bytes.length % this.wordSize), bytes ]);\n }\n return bytes;\n }\n\n // BigNumberish items; padded on the left to wordSize\n writeValue(value: BigNumberish): number {\n return this._writeData(this._getValue(value));\n }\n\n writeUpdatableValue(): (value: BigNumberish) => void {\n const offset = this._data.length;\n this._data.push(this._padding);\n this._dataLength += this.wordSize;\n return (value: BigNumberish) => {\n this._data[offset] = this._getValue(value);\n };\n }\n}\n\nexport class Reader {\n readonly wordSize: number;\n readonly allowLoose: boolean;\n\n readonly _data: Uint8Array;\n readonly _coerceFunc: CoerceFunc;\n\n _offset: number;\n\n constructor(data: BytesLike, wordSize?: number, coerceFunc?: CoerceFunc, allowLoose?: boolean) {\n defineReadOnly(this, \"_data\", arrayify(data));\n defineReadOnly(this, \"wordSize\", wordSize || 32);\n defineReadOnly(this, \"_coerceFunc\", coerceFunc);\n defineReadOnly(this, \"allowLoose\", allowLoose);\n\n this._offset = 0;\n }\n\n get data(): string { return hexlify(this._data); }\n get consumed(): number { return this._offset; }\n\n // The default Coerce function\n static coerce(name: string, value: any): any {\n let match = name.match(\"^u?int([0-9]+)$\");\n if (match && parseInt(match[1]) <= 48) { value = value.toNumber(); }\n return value;\n }\n\n coerce(name: string, value: any): any {\n if (this._coerceFunc) { return this._coerceFunc(name, value); }\n return Reader.coerce(name, value);\n }\n\n _peekBytes(offset: number, length: number, loose?: boolean): Uint8Array {\n let alignedLength = Math.ceil(length / this.wordSize) * this.wordSize;\n if (this._offset + alignedLength > this._data.length) {\n if (this.allowLoose && loose && this._offset + length <= this._data.length) {\n alignedLength = length;\n } else {\n logger.throwError(\"data out-of-bounds\", Logger.errors.BUFFER_OVERRUN, {\n length: this._data.length,\n offset: this._offset + alignedLength\n });\n }\n }\n return this._data.slice(this._offset, this._offset + alignedLength)\n }\n\n subReader(offset: number): Reader {\n return new Reader(this._data.slice(this._offset + offset), this.wordSize, this._coerceFunc, this.allowLoose);\n }\n\n readBytes(length: number, loose?: boolean): Uint8Array {\n let bytes = this._peekBytes(0, length, !!loose);\n this._offset += bytes.length;\n // @TODO: Make sure the length..end bytes are all 0?\n return bytes.slice(0, length);\n }\n\n readValue(): BigNumber {\n return BigNumber.from(this.readBytes(this.wordSize));\n }\n}\n", "/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n", "\"use strict\";\n\nimport sha3 from \"js-sha3\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nexport function keccak256(data: BytesLike): string {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n", "export const version = \"rlp/5.7.0\";\n", "\"use strict\";\n\n//See: https://github.com/ethereum/wiki/wiki/RLP\n\nimport { arrayify, BytesLike, hexlify, isBytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction arrayifyInteger(value: number): Array {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\n\nfunction unarrayifyInteger(data: Uint8Array, offset: number, length: number): number {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\n\nfunction _encode(object: Array | string): Array {\n if (Array.isArray(object)) {\n let payload: Array = [];\n object.forEach(function(child) {\n payload = payload.concat(_encode(child));\n });\n\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length)\n return payload;\n }\n\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n\n return length.concat(payload);\n\n }\n\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n\n const data: Array = Array.prototype.slice.call(arrayify(object));\n\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n\n } else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n\n return length.concat(data);\n}\n\nexport function encode(object: any): string {\n return hexlify(_encode(object));\n}\n\ntype Decoded = {\n result: any;\n consumed: number;\n};\n\nfunction _decodeChildren(data: Uint8Array, offset: number, childOffset: number, length: number): Decoded {\n const result = [];\n\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n\n result.push(decoded.result);\n\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n }\n\n return {consumed: (1 + length), result: result};\n}\n\n// returns { consumed: number, result: Object }\nfunction _decode(data: Uint8Array, offset: number): { consumed: number, result: any } {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n\n } else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n return _decodeChildren(data, offset, offset + 1, length);\n\n } else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result }\n\n } else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result }\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\n\nexport function decode(data: BytesLike): any {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n\n", "export const version = \"address/5.7.0\";\n", "\"use strict\";\n\nimport { arrayify, BytesLike, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, BigNumberish, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction getChecksumAddress(address: string): string {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n address = address.toLowerCase();\n\n const chars = address.substring(2).split(\"\");\n\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n\n const hashed = arrayify(keccak256(expanded));\n\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n\n return \"0x\" + chars.join(\"\");\n}\n\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER: number = 0x1fffffffffffff;\n\nfunction log10(x: number): number {\n if (Math.log10) { return Math.log10(x); }\n return Math.log(x) / Math.LN10;\n}\n\n\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n\n// Create lookup table\nconst ibanLookup: { [character: string]: string } = { };\nfor (let i = 0; i < 10; i++) { ibanLookup[String(i)] = String(i); }\nfor (let i = 0; i < 26; i++) { ibanLookup[String.fromCharCode(65 + i)] = String(10 + i); }\n\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\n\nfunction ibanChecksum(address: string): string {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits){\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) { checksum = \"0\" + checksum; }\n\n return checksum;\n};\n\nexport function getAddress(address: string): string {\n let result = null;\n\n if (typeof(address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") { address = \"0x\" + address; }\n\n result = getChecksumAddress(address);\n\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n\n // Maybe ICAP? (we only support direct mode)\n } else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n\n result = _base36To16(address.substring(4));\n while (result.length < 40) { result = \"0\" + result; }\n result = getChecksumAddress(\"0x\" + result);\n\n } else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n return result;\n}\n\nexport function isAddress(address: string): boolean {\n try {\n getAddress(address);\n return true;\n } catch (error) { }\n return false;\n}\n\nexport function getIcapAddress(address: string): string {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) { base36 = \"0\" + base36; }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction: { from: string, nonce: BigNumberish }) {\n let from: string = null;\n try {\n from = getAddress(transaction.from);\n } catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n\n return getAddress(hexDataSlice(keccak256(encode([ from, nonce ])), 12));\n}\n\nexport function getCreate2Address(from: string, salt: BytesLike, initCodeHash: BytesLike): string {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([ \"0xff\", getAddress(from), salt, initCodeHash ])), 12))\n}\n", "\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { hexZeroPad } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class AddressCoder extends Coder {\n\n constructor(localName: string) {\n super(\"address\", \"address\", localName, false);\n }\n\n defaultValue(): string {\n return \"0x0000000000000000000000000000000000000000\";\n }\n\n encode(writer: Writer, value: string): number {\n try {\n value = getAddress(value)\n } catch (error) {\n this._throwError(error.message, value);\n }\n return writer.writeValue(value);\n }\n\n decode(reader: Reader): any {\n return getAddress(hexZeroPad(reader.readValue().toHexString(), 20));\n }\n}\n\n", "\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\n// Clones the functionality of an existing Coder, but without a localName\nexport class AnonymousCoder extends Coder {\n private coder: Coder;\n\n constructor(coder: Coder) {\n super(coder.name, coder.type, undefined, coder.dynamic);\n this.coder = coder;\n }\n\n defaultValue(): any {\n return this.coder.defaultValue();\n }\n\n encode(writer: Writer, value: any): number {\n return this.coder.encode(writer, value);\n }\n\n decode(reader: Reader): any {\n return this.coder.decode(reader);\n }\n}\n", "\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"../_version\";\nconst logger = new Logger(version);\n\nimport { Coder, Reader, Result, Writer } from \"./abstract-coder\";\nimport { AnonymousCoder } from \"./anonymous\";\n\nexport function pack(writer: Writer, coders: ReadonlyArray, values: Array | { [ name: string ]: any }): number {\n let arrayValues: Array = null;\n\n if (Array.isArray(values)) {\n arrayValues = values;\n\n } else if (values && typeof(values) === \"object\") {\n let unique: { [ name: string ]: boolean } = { };\n\n arrayValues = coders.map((coder) => {\n const name = coder.localName;\n if (!name) {\n logger.throwError(\"cannot encode object for signature with missing names\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"values\",\n coder: coder,\n value: values\n });\n }\n\n if (unique[name]) {\n logger.throwError(\"cannot encode object for signature with duplicate names\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"values\",\n coder: coder,\n value: values\n });\n }\n\n unique[name] = true;\n\n return values[name];\n });\n\n } else {\n logger.throwArgumentError(\"invalid tuple value\", \"tuple\", values);\n }\n\n if (coders.length !== arrayValues.length) {\n logger.throwArgumentError(\"types/value length mismatch\", \"tuple\", values);\n }\n\n let staticWriter = new Writer(writer.wordSize);\n let dynamicWriter = new Writer(writer.wordSize);\n\n let updateFuncs: Array<(baseOffset: number) => void> = [];\n coders.forEach((coder, index) => {\n let value = arrayValues[index];\n\n if (coder.dynamic) {\n // Get current dynamic offset (for the future pointer)\n let dynamicOffset = dynamicWriter.length;\n\n // Encode the dynamic value into the dynamicWriter\n coder.encode(dynamicWriter, value);\n\n // Prepare to populate the correct offset once we are done\n let updateFunc = staticWriter.writeUpdatableValue();\n updateFuncs.push((baseOffset: number) => {\n updateFunc(baseOffset + dynamicOffset);\n });\n\n } else {\n coder.encode(staticWriter, value);\n }\n });\n\n // Backfill all the dynamic offsets, now that we know the static length\n updateFuncs.forEach((func) => { func(staticWriter.length); });\n\n let length = writer.appendWriter(staticWriter);\n length += writer.appendWriter(dynamicWriter);\n return length;\n}\n\nexport function unpack(reader: Reader, coders: Array): Result {\n let values: any = [];\n\n // A reader anchored to this base\n let baseReader = reader.subReader(0);\n\n coders.forEach((coder) => {\n let value: any = null;\n\n if (coder.dynamic) {\n let offset = reader.readValue();\n let offsetReader = baseReader.subReader(offset.toNumber());\n try {\n value = coder.decode(offsetReader);\n } catch (error) {\n // Cannot recover from this\n if (error.code === Logger.errors.BUFFER_OVERRUN) { throw error; }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n\n } else {\n try {\n value = coder.decode(reader);\n } catch (error) {\n // Cannot recover from this\n if (error.code === Logger.errors.BUFFER_OVERRUN) { throw error; }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n\n if (value != undefined) {\n values.push(value);\n }\n });\n\n // We only output named properties for uniquely named coders\n const uniqueNames = coders.reduce((accum, coder) => {\n const name = coder.localName;\n if (name) {\n if (!accum[name]) { accum[name] = 0; }\n accum[name]++;\n }\n return accum;\n }, <{ [ name: string ]: number }>{ });\n\n // Add any named parameters (i.e. tuples)\n coders.forEach((coder: Coder, index: number) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) { return; }\n\n if (name === \"length\") { name = \"_length\"; }\n\n if (values[name] != null) { return; }\n\n const value = values[index];\n\n if (value instanceof Error) {\n Object.defineProperty(values, name, {\n enumerable: true,\n get: () => { throw value; }\n });\n } else {\n values[name] = value;\n }\n });\n\n for (let i = 0; i < values.length; i++) {\n const value = values[i];\n if (value instanceof Error) {\n Object.defineProperty(values, i, {\n enumerable: true,\n get: () => { throw value; }\n });\n }\n }\n\n return Object.freeze(values);\n}\n\n\nexport class ArrayCoder extends Coder {\n readonly coder: Coder;\n readonly length: number;\n\n constructor(coder: Coder, length: number, localName: string) {\n const type = (coder.type + \"[\" + (length >= 0 ? length: \"\") + \"]\");\n const dynamic = (length === -1 || coder.dynamic);\n super(\"array\", type, localName, dynamic);\n\n this.coder = coder;\n this.length = length;\n }\n\n defaultValue(): Array {\n // Verifies the child coder is valid (even if the array is dynamic or 0-length)\n const defaultChild = this.coder.defaultValue();\n\n const result: Array = [];\n for (let i = 0; i < this.length; i++) {\n result.push(defaultChild);\n }\n return result;\n }\n\n encode(writer: Writer, value: Array): number {\n if (!Array.isArray(value)) {\n this._throwError(\"expected array value\", value);\n }\n\n let count = this.length;\n\n if (count === -1) {\n count = value.length;\n writer.writeValue(value.length);\n }\n\n logger.checkArgumentCount(value.length, count, \"coder array\" + (this.localName? (\" \"+ this.localName): \"\"));\n\n let coders = [];\n for (let i = 0; i < value.length; i++) { coders.push(this.coder); }\n\n return pack(writer, coders, value);\n }\n\n decode(reader: Reader): any {\n let count = this.length;\n if (count === -1) {\n count = reader.readValue().toNumber();\n\n // Check that there is *roughly* enough data to ensure\n // stray random data is not being read as a length. Each\n // slot requires at least 32 bytes for their value (or 32\n // bytes as a link to the data). This could use a much\n // tighter bound, but we are erroring on the side of safety.\n if (count * 32 > reader._data.length) {\n logger.throwError(\"insufficient data length\", Logger.errors.BUFFER_OVERRUN, {\n length: reader._data.length,\n count: count\n });\n }\n }\n let coders = [];\n for (let i = 0; i < count; i++) { coders.push(new AnonymousCoder(this.coder)); }\n\n return reader.coerce(this.name, unpack(reader, coders));\n }\n}\n\n", "\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class BooleanCoder extends Coder {\n\n constructor(localName: string) {\n super(\"bool\", \"bool\", localName, false);\n }\n\n defaultValue(): boolean {\n return false;\n }\n\n encode(writer: Writer, value: boolean): number {\n return writer.writeValue(value ? 1: 0);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.type, !reader.readValue().isZero());\n }\n}\n\n", "\"use strict\";\n\nimport { arrayify, hexlify } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class DynamicBytesCoder extends Coder {\n constructor(type: string, localName: string) {\n super(type, type, localName, true);\n }\n\n defaultValue(): string {\n return \"0x\";\n }\n\n encode(writer: Writer, value: any): number {\n value = arrayify(value);\n let length = writer.writeValue(value.length);\n length += writer.writeBytes(value);\n return length;\n }\n\n decode(reader: Reader): any {\n return reader.readBytes(reader.readValue().toNumber(), true);\n }\n}\n\nexport class BytesCoder extends DynamicBytesCoder {\n constructor(localName: string) {\n super(\"bytes\", localName);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, hexlify(super.decode(reader)));\n }\n}\n\n\n", "\"use strict\";\n\nimport { arrayify, BytesLike, hexlify } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\n// @TODO: Merge this with bytes\nexport class FixedBytesCoder extends Coder {\n readonly size: number;\n\n constructor(size: number, localName: string) {\n let name = \"bytes\" + String(size);\n super(name, name, localName, false);\n this.size = size;\n }\n\n defaultValue(): string {\n return (\"0x0000000000000000000000000000000000000000000000000000000000000000\").substring(0, 2 + this.size * 2);\n }\n\n encode(writer: Writer, value: BytesLike): number {\n let data = arrayify(value);\n if (data.length !== this.size) { this._throwError(\"incorrect data length\", value); }\n return writer.writeBytes(data);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, hexlify(reader.readBytes(this.size)));\n }\n}\n", "\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class NullCoder extends Coder {\n\n constructor(localName: string) {\n super(\"null\", \"\", localName, false);\n }\n\n defaultValue(): null {\n return null;\n }\n\n encode(writer: Writer, value: any): number {\n if (value != null) { this._throwError(\"not null\", value); }\n return writer.writeBytes([ ]);\n }\n\n decode(reader: Reader): any {\n reader.readBytes(0);\n return reader.coerce(this.name, null);\n }\n}\n", "export const AddressZero = \"0x0000000000000000000000000000000000000000\";\n\n", "import { BigNumber } from \"@ethersproject/bignumber\";\n\nconst NegativeOne: BigNumber = (/*#__PURE__*/BigNumber.from(-1));\nconst Zero: BigNumber = (/*#__PURE__*/BigNumber.from(0));\nconst One: BigNumber = (/*#__PURE__*/BigNumber.from(1));\nconst Two: BigNumber = (/*#__PURE__*/BigNumber.from(2));\nconst WeiPerEther: BigNumber = (/*#__PURE__*/BigNumber.from(\"1000000000000000000\"));\nconst MaxUint256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nconst MinInt256: BigNumber = (/*#__PURE__*/BigNumber.from(\"-0x8000000000000000000000000000000000000000000000000000000000000000\"));\nconst MaxInt256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nexport {\n NegativeOne,\n Zero,\n One,\n Two,\n WeiPerEther,\n MaxUint256,\n MinInt256,\n MaxInt256,\n};\n", "export const HashZero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\n\n", "// NFKC (composed) // (decomposed)\nexport const EtherSymbol = \"\\u039e\"; // \"\\uD835\\uDF63\";\n", "\"use strict\";\n\nexport { AddressZero } from \"./addresses\";\nexport {\n NegativeOne,\n Zero,\n One,\n Two,\n WeiPerEther,\n MaxUint256,\n MinInt256,\n MaxInt256\n} from \"./bignumbers\";\nexport { HashZero } from \"./hashes\";\nexport { EtherSymbol } from \"./strings\";\n\n", "\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { MaxUint256, NegativeOne, One, Zero } from \"@ethersproject/constants\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class NumberCoder extends Coder {\n readonly size: number;\n readonly signed: boolean;\n\n constructor(size: number, signed: boolean, localName: string) {\n const name = ((signed ? \"int\": \"uint\") + (size * 8));\n super(name, name, localName, false);\n\n this.size = size;\n this.signed = signed;\n }\n\n defaultValue(): number {\n return 0;\n }\n\n encode(writer: Writer, value: BigNumberish): number {\n let v = BigNumber.from(value);\n\n // Check bounds are safe for encoding\n let maxUintValue = MaxUint256.mask(writer.wordSize * 8);\n if (this.signed) {\n let bounds = maxUintValue.mask(this.size * 8 - 1);\n if (v.gt(bounds) || v.lt(bounds.add(One).mul(NegativeOne))) {\n this._throwError(\"value out-of-bounds\", value);\n }\n } else if (v.lt(Zero) || v.gt(maxUintValue.mask(this.size * 8))) {\n this._throwError(\"value out-of-bounds\", value);\n }\n\n v = v.toTwos(this.size * 8).mask(this.size * 8);\n\n if (this.signed) {\n v = v.fromTwos(this.size * 8).toTwos(8 * writer.wordSize);\n }\n\n return writer.writeValue(v);\n }\n\n decode(reader: Reader): any {\n let value = reader.readValue().mask(this.size * 8);\n\n if (this.signed) {\n value = value.fromTwos(this.size * 8);\n }\n\n return reader.coerce(this.name, value);\n }\n}\n\n", "export const version = \"strings/5.7.0\";\n", "\"use strict\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n\nexport enum UnicodeNormalizationForm {\n current = \"\",\n NFC = \"NFC\",\n NFD = \"NFD\",\n NFKC = \"NFKC\",\n NFKD = \"NFKD\"\n};\n\nexport enum Utf8ErrorReason {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n UNEXPECTED_CONTINUE = \"unexpected continuation byte\",\n\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n BAD_PREFIX = \"bad codepoint prefix\",\n\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n OVERRUN = \"string overrun\",\n\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n MISSING_CONTINUE = \"missing continuation byte\",\n\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n OUT_OF_RANGE = \"out of UTF-8 range\",\n\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n UTF16_SURROGATE = \"UTF-16 surrogate\",\n\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n OVERLONG = \"overlong representation\",\n};\n\n\nexport type Utf8ErrorFunc = (reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number) => number;\n\nfunction errorFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n return logger.throwArgumentError(`invalid codepoint at offset ${ offset }; ${ reason }`, \"bytes\", bytes);\n}\n\nfunction ignoreFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) { break; }\n i++;\n }\n return i;\n }\n\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n\n // Nothing to skip\n return 0;\n}\n\nfunction replaceFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n\n // Put the replacement character into the output\n output.push(0xfffd);\n\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n\n// Common error handing strategies\nexport const Utf8ErrorFuncs: { [ name: string ]: Utf8ErrorFunc } = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes: BytesLike, onError?: Utf8ErrorFunc): Array {\n if (onError == null) { onError = Utf8ErrorFuncs.error; }\n\n bytes = arrayify(bytes);\n\n const result: Array = [];\n let i = 0;\n\n // Invalid bytes are ignored\n while(i < bytes.length) {\n\n const c = bytes[i++];\n\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n\n // 1110 xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n\n } else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n } else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n };\n\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n\n // See above loop for invalid continuation byte\n if (res === null) { continue; }\n\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n result.push(res);\n }\n\n return result;\n}\n\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Uint8Array {\n\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n\n if (c < 0x80) {\n result.push(c);\n\n } else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n\n } else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n\n } else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n\n return arrayify(result);\n};\n\nfunction escapeChar(value: number) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\n\nexport function _toEscapedUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\"\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\n\nexport function _toUtf8String(codePoints: Array): string {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode(\n (((codePoint >> 10) & 0x3ff) + 0xd800),\n ((codePoint & 0x3ff) + 0xdc00)\n );\n }).join(\"\");\n}\n\nexport function toUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\n\nexport function toUtf8CodePoints(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Array {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n", "\"use strict\";\n\nimport { HashZero } from \"@ethersproject/constants\";\nimport { arrayify, BytesLike, concat, hexlify } from \"@ethersproject/bytes\";\n\nimport { toUtf8Bytes, toUtf8String } from \"./utf8\";\n\n\nexport function formatBytes32String(text: string): string {\n\n // Get the bytes\n const bytes = toUtf8Bytes(text);\n\n // Check we have room for null-termination\n if (bytes.length > 31) { throw new Error(\"bytes32 string must be less than 32 bytes\"); }\n\n // Zero-pad (implicitly null-terminates)\n return hexlify(concat([ bytes, HashZero ]).slice(0, 32));\n}\n\nexport function parseBytes32String(bytes: BytesLike): string {\n const data = arrayify(bytes);\n\n // Must be 32 bytes with a null-termination\n if (data.length !== 32) { throw new Error(\"invalid bytes32 - not 32 bytes long\"); }\n if (data[31] !== 0) { throw new Error(\"invalid bytes32 string - no null terminator\"); }\n\n // Find the null termination\n let length = 31;\n while (data[length - 1] === 0) { length--; }\n\n // Determine the string value\n return toUtf8String(data.slice(0, length));\n}\n\n", "\"use strict\";\n\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\n\ntype Ranged = {\n l: number, // Lo value\n h: number, // High value (less the lo)\n d?: number, // Delta/stride (default: 1)\n s?: number, // Shift (default: 1)\n e?: Array // Exceptions to skip\n};\n\ntype Table = { [ src: number ]: Array };\n\nfunction bytes2(data: string): Array {\n if ((data.length % 4) !== 0) { throw new Error(\"bad data\"); }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\n\nfunction createTable(data: string, func?: (value: string) => Array): Table {\n if (!func) {\n func = function(value: string) { return [ parseInt(value, 16) ]; }\n }\n\n let lo = 0;\n\n let result: Table = { };\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n\n return result;\n}\n\nfunction createRangeTable(data: string): Array {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n } else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\n\nfunction matchMap(value: number, ranges: Array): Ranged {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) { continue; }\n return range;\n }\n }\n return null;\n}\n\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\n\nconst Table_B_2_ranges: Array = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [ 23 ], l: 127 },\n { h: 54, s: 1, e: [ 48 ], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [ 2, 6, 8 ], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [ 18, 24, 66 ], l: 19, d: 2 },\n { h: 26, s: 32, e: [ 17 ], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [ 38 ], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [ 1, 4, 5, 7, 8, 11, 12, 17 ], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [ 2, 7, 8, 17 ], l: 52 },\n { h: 24, s: -120023, e: [ 2, 7, 13, 15, 16, 17 ], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [ 17 ], l: 56 },\n { h: 24, s: -119601, e: [ 17 ], l: 58 },\n { h: 24, s: -119659, e: [ 17 ], l: 58 },\n { h: 24, s: -119717, e: [ 17 ], l: 58 },\n { h: 24, s: -119775, e: [ 17 ], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\n\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\n\n\nfunction flatten(values: Array>): Array {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, [ ]);\n}\n\nexport function _nameprepTableA1(codepoint: number): boolean {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\n\nexport function _nameprepTableB2(codepoint: number): Array {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) { return [ codepoint + range.s ]; }\n\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) { return codes; }\n\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) { return [ codepoint + shift[0] ]; }\n\n let complex = Table_B_2_complex[codepoint];\n if (complex) { return complex; }\n\n return null;\n}\n\nexport function _nameprepTableC(codepoint: number): boolean {\n return !!matchMap(codepoint, Table_C_ranges);\n}\n\nexport function nameprep(value: string): string {\n\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) { return value.toLowerCase(); }\n\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) { return [ ]; }\n if (code >= 0xfe00 && code <= 0xfe0f) { return [ ]; }\n\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) { return codesTableB2; }\n\n // No Substitution\n return [ code ];\n }));\n\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n\n // IDNA extras\n let name = _toUtf8String(codes);\n\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n\n return name;\n}\n\n", "\"use strict\";\n\nimport { formatBytes32String, parseBytes32String } from \"./bytes32\";\nimport { nameprep } from \"./idna\";\nimport { _toEscapedUtf8String, toUtf8Bytes, toUtf8CodePoints, toUtf8String, UnicodeNormalizationForm, Utf8ErrorFunc, Utf8ErrorFuncs, Utf8ErrorReason } from \"./utf8\";\n\nexport {\n _toEscapedUtf8String,\n toUtf8Bytes,\n toUtf8CodePoints,\n toUtf8String,\n\n Utf8ErrorFunc,\n Utf8ErrorFuncs,\n Utf8ErrorReason,\n\n UnicodeNormalizationForm,\n\n formatBytes32String,\n parseBytes32String,\n\n nameprep\n}\n", "\"use strict\";\n\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { Reader, Writer } from \"./abstract-coder\";\nimport { DynamicBytesCoder } from \"./bytes\";\n\nexport class StringCoder extends DynamicBytesCoder {\n\n constructor(localName: string) {\n super(\"string\", localName);\n }\n\n defaultValue(): string {\n return \"\";\n }\n\n encode(writer: Writer, value: any): number {\n return super.encode(writer, toUtf8Bytes(value));\n }\n\n decode(reader: Reader): any {\n return toUtf8String(super.decode(reader));\n }\n}\n", "\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\nimport { pack, unpack } from \"./array\";\n\nexport class TupleCoder extends Coder {\n readonly coders: Array;\n\n constructor(coders: Array, localName: string) {\n let dynamic = false;\n const types: Array = [];\n coders.forEach((coder) => {\n if (coder.dynamic) { dynamic = true; }\n types.push(coder.type);\n });\n const type = (\"tuple(\" + types.join(\",\") + \")\");\n\n super(\"tuple\", type, localName, dynamic);\n this.coders = coders;\n }\n\n defaultValue(): any {\n const values: any = [ ];\n this.coders.forEach((coder) => {\n values.push(coder.defaultValue());\n });\n\n // We only output named properties for uniquely named coders\n const uniqueNames = this.coders.reduce((accum, coder) => {\n const name = coder.localName;\n if (name) {\n if (!accum[name]) { accum[name] = 0; }\n accum[name]++;\n }\n return accum;\n }, <{ [ name: string ]: number }>{ });\n\n // Add named values\n this.coders.forEach((coder: Coder, index: number) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) { return; }\n\n if (name === \"length\") { name = \"_length\"; }\n\n if (values[name] != null) { return; }\n\n values[name] = values[index];\n });\n\n return Object.freeze(values);\n }\n\n encode(writer: Writer, value: Array | { [ name: string ]: any }): number {\n return pack(writer, this.coders, value);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, unpack(reader, this.coders));\n }\n}\n\n", "\"use strict\";\n\n// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Coder, Reader, Result, Writer } from \"./coders/abstract-coder\";\nimport { AddressCoder } from \"./coders/address\";\nimport { ArrayCoder } from \"./coders/array\";\nimport { BooleanCoder } from \"./coders/boolean\";\nimport { BytesCoder } from \"./coders/bytes\";\nimport { FixedBytesCoder } from \"./coders/fixed-bytes\";\nimport { NullCoder } from \"./coders/null\";\nimport { NumberCoder } from \"./coders/number\";\nimport { StringCoder } from \"./coders/string\";\nimport { TupleCoder } from \"./coders/tuple\";\n\nimport { ParamType } from \"./fragments\";\n\n\nconst paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\nconst paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\n\n\nexport type CoerceFunc = (type: string, value: any) => any;\n\nexport class AbiCoder {\n readonly coerceFunc: CoerceFunc;\n\n constructor(coerceFunc?: CoerceFunc) {\n defineReadOnly(this, \"coerceFunc\", coerceFunc || null);\n }\n\n _getCoder(param: ParamType): Coder {\n\n switch (param.baseType) {\n case \"address\":\n return new AddressCoder(param.name);\n case \"bool\":\n return new BooleanCoder(param.name);\n case \"string\":\n return new StringCoder(param.name);\n case \"bytes\":\n return new BytesCoder(param.name);\n case \"array\":\n return new ArrayCoder(this._getCoder(param.arrayChildren), param.arrayLength, param.name);\n case \"tuple\":\n return new TupleCoder((param.components || []).map((component) => {\n return this._getCoder(component);\n }), param.name);\n case \"\":\n return new NullCoder(param.name);\n }\n\n // u?int[0-9]*\n let match = param.type.match(paramTypeNumber);\n if (match) {\n let size = parseInt(match[2] || \"256\");\n if (size === 0 || size > 256 || (size % 8) !== 0) {\n logger.throwArgumentError(\"invalid \" + match[1] + \" bit length\", \"param\", param);\n }\n return new NumberCoder(size / 8, (match[1] === \"int\"), param.name);\n }\n\n // bytes[0-9]+\n match = param.type.match(paramTypeBytes);\n if (match) {\n let size = parseInt(match[1]);\n if (size === 0 || size > 32) {\n logger.throwArgumentError(\"invalid bytes length\", \"param\", param);\n }\n return new FixedBytesCoder(size, param.name);\n }\n\n return logger.throwArgumentError(\"invalid type\", \"type\", param.type);\n }\n\n _getWordSize(): number { return 32; }\n\n _getReader(data: Uint8Array, allowLoose?: boolean): Reader {\n return new Reader(data, this._getWordSize(), this.coerceFunc, allowLoose);\n }\n\n _getWriter(): Writer {\n return new Writer(this._getWordSize());\n }\n\n getDefaultValue(types: ReadonlyArray): Result {\n const coders: Array = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.defaultValue();\n }\n\n encode(types: ReadonlyArray, values: ReadonlyArray): string {\n if (types.length !== values.length) {\n logger.throwError(\"types/values length mismatch\", Logger.errors.INVALID_ARGUMENT, {\n count: { types: types.length, values: values.length },\n value: { types: types, values: values }\n });\n }\n\n const coders = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = (new TupleCoder(coders, \"_\"));\n\n const writer = this._getWriter();\n coder.encode(writer, values);\n return writer.data;\n }\n\n decode(types: ReadonlyArray, data: BytesLike, loose?: boolean): Result {\n const coders: Array = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.decode(this._getReader(arrayify(data), loose));\n }\n}\n\nexport const defaultAbiCoder: AbiCoder = new AbiCoder();\n\n", "import { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nexport function id(text: string): string {\n return keccak256(toUtf8Bytes(text));\n}\n", "export const version = \"hash/5.7.0\";\n", "\"use strict\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\n\nexport function decode(textData: string): Uint8Array {\n return arrayify(new Uint8Array(Buffer.from(textData, \"base64\")));\n};\n\nexport function encode(data: BytesLike): string {\n return Buffer.from(arrayify(data)).toString(\"base64\");\n}\n", "\"use strict\";\n\nexport { decode, encode } from \"./base64\";\n", "/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nexport type Numbers = Uint8Array | Array;\nexport type NextFunc = (...args: Array) => number;\n\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array: Array, depth?: number): Array {\n if (depth == null) { depth = 1; }\n const result: Array = [];\n\n const forEach = result.forEach;\n\n const flatDeep = function (arr: Array, depth: number) {\n forEach.call(arr, function (val: any) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n } else {\n result.push(val);\n }\n });\n };\n\n flatDeep(array, depth);\n return result;\n}\n\nfunction fromEntries(array: Array<[T, U]>): Record {\n const result: Record = >{ };\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\n\nexport function decode_arithmetic(bytes: Numbers): Array {\n\tlet pos = 0;\n\tfunction u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n\t\n\t// decode the frequency table\n\tlet symbol_count = u16();\n\tlet total = 1;\n\tlet acc = [0, 1]; // first symbol has frequency 1\n\tfor (let i = 1; i < symbol_count; i++) {\n\t\tacc.push(total += u16());\n\t}\n\n\t// skip the sized-payload that the last 3 symbols index into\n\tlet skip = u16();\n\tlet pos_payload = pos;\n\tpos += skip;\n\n\tlet read_width = 0;\n\tlet read_buffer = 0; \n\tfunction read_bit() {\n\t\tif (read_width == 0) {\n\t\t\t// this will read beyond end of buffer\n\t\t\t// but (undefined|0) => zero pad\n\t\t\tread_buffer = (read_buffer << 8) | bytes[pos++];\n\t\t\tread_width = 8;\n\t\t}\n\t\treturn (read_buffer >> --read_width) & 1;\n\t}\n\n\tconst N = 31;\n\tconst FULL = 2**N;\n\tconst HALF = FULL >>> 1;\n\tconst QRTR = HALF >> 1;\n\tconst MASK = FULL - 1;\n\n\t// fill register\n\tlet register = 0;\n\tfor (let i = 0; i < N; i++) register = (register << 1) | read_bit();\n\n\tlet symbols = [];\n\tlet low = 0;\n\tlet range = FULL; // treat like a float\n\twhile (true) {\n\t\tlet value = Math.floor((((register - low + 1) * total) - 1) / range);\n\t\tlet start = 0;\n\t\tlet end = symbol_count;\n\t\twhile (end - start > 1) { // binary search\n\t\t\tlet mid = (start + end) >>> 1;\n\t\t\tif (value < acc[mid]) {\n\t\t\t\tend = mid;\n\t\t\t} else {\n\t\t\t\tstart = mid;\n\t\t\t}\n\t\t}\n\t\tif (start == 0) break; // first symbol is end mark\n\t\tsymbols.push(start);\n\t\tlet a = low + Math.floor(range * acc[start] / total);\n\t\tlet b = low + Math.floor(range * acc[start+1] / total) - 1\n\t\twhile (((a ^ b) & HALF) == 0) {\n\t\t\tregister = (register << 1) & MASK | read_bit();\n\t\t\ta = (a << 1) & MASK;\n\t\t\tb = (b << 1) & MASK | 1;\n\t\t}\n\t\twhile (a & ~b & QRTR) {\n\t\t\tregister = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n\t\t\ta = (a << 1) ^ HALF;\n\t\t\tb = ((b ^ HALF) << 1) | HALF | 1;\n\t\t}\n\t\tlow = a;\n\t\trange = 1 + b - a;\n\t}\n\tlet offset = symbol_count - 4;\n\treturn symbols.map(x => { // index into payload\n\t\tswitch (x - offset) {\n\t\t\tcase 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n\t\t\tcase 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n\t\t\tcase 1: return offset + bytes[pos_payload++];\n\t\t\tdefault: return x - 1;\n\t\t}\n\t});\n}\t\n\n\n// returns an iterator which returns the next symbol\nexport function read_payload(v: Numbers): NextFunc {\n\tlet pos = 0;\n\treturn () => v[pos++];\n}\nexport function read_compressed_payload(bytes: Numbers): NextFunc {\n\treturn read_payload(decode_arithmetic(bytes));\n}\n\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i: number): number { \n\treturn (i & 1) ? (~i >> 1) : (i >> 1);\n}\n\nfunction read_counts(n: number, next: NextFunc): Array {\n\tlet v = Array(n);\n\tfor (let i = 0; i < n; i++) v[i] = 1 + next();\n\treturn v;\n}\n\nfunction read_ascending(n: number, next: NextFunc): Array {\n\tlet v = Array(n);\n\tfor (let i = 0, x = -1; i < n; i++) v[i] = x += 1 + next();\n\treturn v;\n}\n\nfunction read_deltas(n: number, next: NextFunc): Array {\n\tlet v = Array(n);\n\tfor (let i = 0, x = 0; i < n; i++) v[i] = x += signed(next());\n\treturn v;\n}\n\nexport function read_member_array(next: NextFunc, lookup?: Record) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next: NextFunc): Record> {\n\tlet ret = [];\n\twhile (true) {\n\t\tlet w = next();\n\t\tif (w == 0) break;\n\t\tret.push(read_linear_table(w, next));\n\t}\n\twhile (true) {\n\t\tlet w = next() - 1;\n\t\tif (w < 0) break;\n\t\tret.push(read_replacement_table(w, next));\n\t}\n\treturn fromEntries>(flat(ret));\n}\n\nexport function read_zero_terminated_array(next: NextFunc): Array {\n\tlet v = [];\n\twhile (true) {\n\t\tlet i = next();\n\t\tif (i == 0) break;\n\t\tv.push(i);\n\t}\n\treturn v;\n}\n\nfunction read_transposed(n: number, w: number, next: NextFunc): Array> {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\n\n\nfunction read_linear_table(w: number, next: NextFunc): Array>> {\n\tlet dx = 1 + next();\n\tlet dy = next();\n\tlet vN = read_zero_terminated_array(next);\n\tlet m = read_transposed(vN.length, 1+w, next);\n\treturn flat(m.map((v, i) => {\n\t const x = v[0], ys = v.slice(1);\n\t\t//let [x, ...ys] = v;\n\t\t//return Array(vN[i]).fill().map((_, j) => {\n\t\treturn Array(vN[i]).fill(undefined).map((_, j) => {\n\t\t\tlet j_dy = j * dy;\n\t\t\treturn [x + j * dx, ys.map(y => y + j_dy)];\n\t\t});\n\t}));\n}\n\nfunction read_replacement_table(w: number, next: NextFunc): Array<[ number, Array ]> {\n\tlet n = 1 + next();\n\tlet m = read_transposed(n, 1+w, next);\n\treturn m.map(v => [v[0], v.slice(1)]);\n}\n\nexport type Branch = {\n set: Set;\n node: Node;\n};\n\nexport type Node = {\n branches: Array;\n valid: number;\n fe0f: boolean;\n save: boolean;\n check: boolean;\n};\n\nexport function read_emoji_trie(next: NextFunc): Node {\n\tlet sorted = read_member_array(next).sort((a, b) => a - b);\n\treturn read();\n\tfunction read(): Node {\n\t\tlet branches = [];\n\t\twhile (true) {\n\t\t\tlet keys = read_member_array(next, sorted);\n\t\t\tif (keys.length == 0) break;\n\t\t\tbranches.push({set: new Set(keys), node: read()});\n\t\t}\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n \t\tlet temp = next();\n \t\tlet valid = temp % 3;\n \t\ttemp = (temp / 3)|0;\n \t\tlet fe0f = !!(temp & 1);\n \t\ttemp >>= 1;\n \t\tlet save = temp == 1;\n \t\tlet check = temp == 2;\n \t\treturn {branches, valid, fe0f, save, check};\n\t}\n}\n", "/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nimport { decode } from \"@ethersproject/base64\";\n\nimport {read_compressed_payload} from './decoder.js';\n\nexport function getData(): () => number {\n return read_compressed_payload(decode('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'));\n}\n\n", "/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\n\nimport { getData } from './include.js';\nconst r = getData();\n\nimport {read_member_array, read_mapped_map, read_emoji_trie} from './decoder.js';\n\n// @TODO: This should be lazily loaded\n\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\n\nfunction explode_cp(name: string): Array {\n return toUtf8CodePoints(name);\n}\n\nfunction filter_fe0f(cps: Array): Array {\n return cps.filter(cp => cp != 0xFE0F);\n}\n\nexport function ens_normalize_post_check(name: string): string {\n\tfor (let label of name.split('.')) {\n\t\tlet cps = explode_cp(label);\n\t\ttry {\n\t\t\tfor (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n\t\t\t\tif (cps[i] !== UNDERSCORE) {\n\t\t\t\t\tthrow new Error(`underscore only allowed at start`);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n\t\t\t\tthrow new Error(`invalid label extension`);\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tthrow new Error(`Invalid label \"${label}\": ${err.message}`);\n\t\t}\n\t}\n\treturn name;\n}\n\nexport function ens_normalize(name: string): string {\n\treturn ens_normalize_post_check(normalize(name, filter_fe0f));\n}\n\nfunction normalize(name: string, emoji_filter: (a: Array) => Array): string {\n\tlet input = explode_cp(name).reverse(); // flip for pop\n\tlet output = [];\n\twhile (input.length) {\t\t\n\t\tlet emoji = consume_emoji_reversed(input);\n\t\tif (emoji) {\n\t\t\toutput.push(...emoji_filter(emoji));\n\t\t\tcontinue;\n\t\t}\n\t\tlet cp = input.pop();\n\t\tif (VALID.has(cp)) {\n\t\t\toutput.push(cp);\n\t\t\tcontinue;\n\t\t} \n\t\tif (IGNORED.has(cp)) {\n\t\t\tcontinue;\n\t\t}\n\t\tlet cps = MAPPED[cp];\n\t\tif (cps) {\n\t\t\toutput.push(...cps);\n\t\t\tcontinue;\n\t\t}\n\t\tthrow new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n\t}\n\treturn ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\n\nfunction nfc(s: string): string {\n return s.normalize('NFC');\n}\n\nfunction consume_emoji_reversed(cps: Array, eaten?: Array) {\n\tlet node = EMOJI_ROOT;\n\tlet emoji;\n\tlet saved;\n\tlet stack = [];\n\tlet pos = cps.length;\n\tif (eaten) eaten.length = 0; // clear input buffer (if needed)\n\twhile (pos) {\n\t\tlet cp = cps[--pos];\n\t\tnode = node.branches.find(x => x.set.has(cp))?.node;\n\t\tif (!node) break;\n\t\tif (node.save) { // remember\n\t\t\tsaved = cp;\n\t\t} else if (node.check) { // check exclusion\n\t\t\tif (cp === saved) break;\n\t\t}\n\t\tstack.push(cp);\n\t\tif (node.fe0f) {\n\t\t\tstack.push(0xFE0F);\n\t\t\tif (pos > 0 && cps[pos - 1] == 0xFE0F) pos--; // consume optional FE0F\n\t\t}\n\t\tif (node.valid) { // this is a valid emoji (so far)\n\t\t\temoji = stack.slice(); // copy stack\n\t\t\tif (node.valid == 2) emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n\t\t\tif (eaten) eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n\t\t\tcps.length = pos; // truncate\n\t\t}\n\t}\n\treturn emoji;\n}\n", "import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { ens_normalize } from \"./ens-normalize/lib\";\n\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\n\nfunction checkComponent(comp: Uint8Array): Uint8Array {\n if (comp.length === 0) { throw new Error(\"invalid ENS name; empty component\"); }\n return comp;\n}\n\nfunction ensNameSplit(name: string): Array {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps: Array = [ ];\n\n if (name.length === 0) { return comps; }\n\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n\n // There was a stray separator at the end of the name\n if (last >= bytes.length) { throw new Error(\"invalid ENS name; empty component\"); }\n\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\n\nexport function ensNormalize(name: string): string {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\n\nexport function isValidName(name: string): boolean {\n try {\n return (ensNameSplit(name).length !== 0);\n } catch (error) { }\n return false;\n}\n\nexport function namehash(name: string): string {\n /* istanbul ignore if */\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n\n let result: string | Uint8Array = Zeros;\n\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n\n return hexlify(result);\n}\n\nexport function dnsEncode(name: string): string {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n\n }))) + \"00\";\n}\n", "import { Bytes, concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\n\nexport function hashMessage(message: Bytes | string): string {\n if (typeof(message) === \"string\") { message = toUtf8Bytes(message); }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n\n", "import { TypedDataDomain, TypedDataField } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { id } from \"./id\";\n\nconst padding = new Uint8Array(32);\npadding.fill(0);\n\nconst NegativeOne: BigNumber = BigNumber.from(-1);\nconst Zero: BigNumber = BigNumber.from(0);\nconst One: BigNumber = BigNumber.from(1);\nconst MaxUint256: BigNumber = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n\nfunction hexPadRight(value: BytesLike) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32\n if (padOffset) {\n return hexConcat([ bytes, padding.slice(padOffset) ]);\n }\n return hexlify(bytes);\n}\n\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\n\nconst domainFieldTypes: Record = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\n\nconst domainFieldNames: Array = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\n\nfunction checkString(key: string): (value: any) => string {\n return function (value: any){\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${ JSON.stringify(key) }`, `domain.${ key }`, value);\n }\n return value;\n }\n}\n\nconst domainChecks: Record any> = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function(value: any) {\n try {\n return BigNumber.from(value).toString()\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function(value: any) {\n try {\n return getAddress(value).toLowerCase();\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function(value: any) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) { throw new Error(\"bad length\"); }\n return hexlify(bytes);\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n}\n\nfunction getBaseEncoder(type: string): (value: any) => string {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n\n const boundsUpper = MaxUint256.mask(signed ? (width - 1): width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne): Zero;\n\n return function(value: BigNumberish) {\n const v = BigNumber.from(value);\n\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${ type }`, \"value\", value);\n }\n\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n\n return function(value: BytesLike) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${ type }`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n\n switch (type) {\n case \"address\": return function(value: string) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function(value: boolean) {\n return ((!value) ? hexFalse: hexTrue);\n };\n case \"bytes\": return function(value: BytesLike) {\n return keccak256(value);\n };\n case \"string\": return function(value: string) {\n return id(value);\n };\n }\n\n return null;\n}\n\nfunction encodeType(name: string, fields: Array): string {\n return `${ name }(${ fields.map(({ name, type }) => (type + \" \" + name)).join(\",\") })`;\n}\n\nexport class TypedDataEncoder {\n readonly primaryType: string;\n readonly types: Record>;\n\n readonly _encoderCache: Record string>;\n readonly _types: Record;\n\n constructor(types: Record>) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n\n defineReadOnly(this, \"_encoderCache\", { });\n defineReadOnly(this, \"_types\", { });\n\n // Link struct types to their direct child structs\n const links: Record> = { };\n\n // Link structs to structs which contain them as a child\n const parents: Record> = { };\n\n // Link all subtypes within a given struct\n const subtypes: Record> = { };\n\n Object.keys(types).forEach((type) => {\n links[type] = { };\n parents[type] = [ ];\n subtypes[type] = { }\n });\n\n for (const name in types) {\n\n const uniqueNames: Record = { };\n\n types[name].forEach((field) => {\n\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${ JSON.stringify(field.name) } in ${ JSON.stringify(name) }`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${ JSON.stringify(baseType) }`, \"types\", types);\n }\n\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) { return ;}\n\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${ JSON.stringify(baseType) }`, \"types\", types);\n }\n\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n } else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${ primaryTypes.map((t) => (JSON.stringify(t))).join(\", \") }`, \"types\", types);\n }\n\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n\n // Check for circular type references\n function checkCircular(type: string, found: Record) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${ JSON.stringify(type) }`, \"types\", types);\n }\n\n found[type] = true;\n\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) { return; }\n\n // Recursively check children\n checkCircular(child, found);\n\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n\n delete found[type];\n }\n checkCircular(this.primaryType, { });\n\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n\n getEncoder(type: string): (value: any) => string {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n\n _getEncoder(type: string): (value: any) => string {\n\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) { return encoder; }\n }\n\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value: Array) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n\n return keccak256(hexConcat(result));\n };\n }\n\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value: Record) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) { return keccak256(result); }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n }\n }\n\n return logger.throwArgumentError(`unknown type: ${ type }`, \"type\", type);\n }\n\n encodeType(name: string): string {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${ JSON.stringify(name) }`, \"name\", name);\n }\n return result;\n }\n\n encodeData(type: string, value: any): string {\n return this.getEncoder(type)(value);\n }\n\n hashStruct(name: string, value: Record): string {\n return keccak256(this.encodeData(name, value));\n }\n\n encode(value: Record): string {\n return this.encodeData(this.primaryType, value);\n }\n\n hash(value: Record): string {\n return this.hashStruct(this.primaryType, value);\n }\n\n _visit(type: string, value: any, callback: (type: string, data: any) => any): any {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) { return callback(type, value); }\n }\n\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v: any) => this._visit(subtype, v, callback));\n }\n\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, >{});\n }\n\n return logger.throwArgumentError(`unknown type: ${ type }`, \"type\", type);\n }\n\n visit(value: Record, callback: (type: string, data: any) => any): any {\n return this._visit(this.primaryType, value, callback);\n }\n\n static from(types: Record>): TypedDataEncoder {\n return new TypedDataEncoder(types);\n }\n\n static getPrimaryType(types: Record>): string {\n return TypedDataEncoder.from(types).primaryType;\n }\n\n static hashStruct(name: string, types: Record>, value: Record): string {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n\n static hashDomain(domain: TypedDataDomain): string {\n const domainFields: Array = [ ];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${ JSON.stringify(name) }`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n\n static encode(domain: TypedDataDomain, types: Record>, value: Record): string {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n\n static hash(domain: TypedDataDomain, types: Record>, value: Record): string {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n\n // Replaces all address types with ENS names with their looked up address\n static async resolveNames(domain: TypedDataDomain, types: Record>, value: Record, resolveName: (name: string) => Promise): Promise<{ domain: TypedDataDomain, value: any }> {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n\n // Look up all ENS names\n const ensCache: Record = { };\n\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n\n // Get a list of all the addresses\n encoder.visit(value, (type: string, value: any) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = await resolveName(name);\n }\n\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n\n // Replace all ENS names with their address\n value = encoder.visit(value, (type: string, value: any) => {\n if (type === \"address\" && ensCache[value]) { return ensCache[value]; }\n return value;\n });\n\n return { domain, value };\n }\n\n static getPayload(domain: TypedDataDomain, types: Record>, value: Record): any {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n\n // Derive the EIP712Domain Struct reference type\n const domainValues: Record = { };\n const domainTypes: Array<{ name: string, type:string }> = [ ];\n\n domainFieldNames.forEach((name) => {\n const value = (domain)[name];\n if (value == null) { return; }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n\n const encoder = TypedDataEncoder.from(types);\n\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n } else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n\n // Validate the data structures and types\n encoder.encode(value);\n\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type: string, value: any) => {\n\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n\n", "\"use strict\";\n\nimport { id } from \"./id\";\nimport { dnsEncode, isValidName, namehash } from \"./namehash\";\nimport { hashMessage, messagePrefix } from \"./message\";\n\nimport { ensNormalize } from \"./namehash\";\n\nimport { TypedDataEncoder as _TypedDataEncoder } from \"./typed-data\";\n\nexport {\n id,\n\n dnsEncode,\n namehash,\n isValidName,\n\n ensNormalize,\n\n messagePrefix,\n hashMessage,\n\n _TypedDataEncoder,\n}\n", "\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexDataSlice, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { id } from \"@ethersproject/hash\";\nimport { keccak256 } from \"@ethersproject/keccak256\"\nimport { defineReadOnly, Description, getStatic } from \"@ethersproject/properties\";\n\nimport { AbiCoder, defaultAbiCoder } from \"./abi-coder\";\nimport { checkResultErrors, Result } from \"./coders/abstract-coder\";\nimport { ConstructorFragment, ErrorFragment, EventFragment, FormatTypes, Fragment, FunctionFragment, JsonFragment, ParamType } from \"./fragments\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport { checkResultErrors, Result };\n\nexport class LogDescription extends Description {\n readonly eventFragment: EventFragment;\n readonly name: string;\n readonly signature: string;\n readonly topic: string;\n readonly args: Result\n}\n\nexport class TransactionDescription extends Description {\n readonly functionFragment: FunctionFragment;\n readonly name: string;\n readonly args: Result;\n readonly signature: string;\n readonly sighash: string;\n readonly value: BigNumber;\n}\n\nexport class ErrorDescription extends Description {\n readonly errorFragment: ErrorFragment;\n readonly name: string;\n readonly args: Result;\n readonly signature: string;\n readonly sighash: string;\n}\n\nexport class Indexed extends Description {\n readonly hash: string;\n readonly _isIndexed: boolean;\n\n static isIndexed(value: any): value is Indexed {\n return !!(value && value._isIndexed);\n }\n}\n\nconst BuiltinErrors: Record, name: string, reason?: boolean }> = {\n \"0x08c379a0\": { signature: \"Error(string)\", name: \"Error\", inputs: [ \"string\" ], reason: true },\n \"0x4e487b71\": { signature: \"Panic(uint256)\", name: \"Panic\", inputs: [ \"uint256\" ] }\n}\n\nfunction wrapAccessError(property: string, error: Error): Error {\n const wrap = new Error(`deferred error during ABI decoding triggered accessing ${ property }`);\n (wrap).error = error;\n return wrap;\n}\n\n/*\nfunction checkNames(fragment: Fragment, type: \"input\" | \"output\", params: Array): void {\n params.reduce((accum, param) => {\n if (param.name) {\n if (accum[param.name]) {\n logger.throwArgumentError(`duplicate ${ type } parameter ${ JSON.stringify(param.name) } in ${ fragment.format(\"full\") }`, \"fragment\", fragment);\n }\n accum[param.name] = true;\n }\n return accum;\n }, <{ [ name: string ]: boolean }>{ });\n}\n*/\nexport class Interface {\n readonly fragments: ReadonlyArray;\n\n readonly errors: { [ name: string ]: ErrorFragment };\n readonly events: { [ name: string ]: EventFragment };\n readonly functions: { [ name: string ]: FunctionFragment };\n readonly structs: { [ name: string ]: any };\n\n readonly deploy: ConstructorFragment;\n\n readonly _abiCoder: AbiCoder;\n\n readonly _isInterface: boolean;\n\n constructor(fragments: string | ReadonlyArray) {\n let abi: ReadonlyArray = [ ];\n if (typeof(fragments) === \"string\") {\n abi = JSON.parse(fragments);\n } else {\n abi = fragments;\n }\n\n defineReadOnly(this, \"fragments\", abi.map((fragment) => {\n return Fragment.from(fragment);\n }).filter((fragment) => (fragment != null)));\n\n defineReadOnly(this, \"_abiCoder\", getStatic<() => AbiCoder>(new.target, \"getAbiCoder\")());\n\n defineReadOnly(this, \"functions\", { });\n defineReadOnly(this, \"errors\", { });\n defineReadOnly(this, \"events\", { });\n defineReadOnly(this, \"structs\", { });\n\n // Add all fragments by their signature\n this.fragments.forEach((fragment) => {\n let bucket: { [ name: string ]: Fragment } = null;\n switch (fragment.type) {\n case \"constructor\":\n if (this.deploy) {\n logger.warn(\"duplicate definition - constructor\");\n return;\n }\n //checkNames(fragment, \"input\", fragment.inputs);\n defineReadOnly(this, \"deploy\", fragment);\n return;\n case \"function\":\n //checkNames(fragment, \"input\", fragment.inputs);\n //checkNames(fragment, \"output\", (fragment).outputs);\n bucket = this.functions;\n break;\n case \"event\":\n //checkNames(fragment, \"input\", fragment.inputs);\n bucket = this.events;\n break;\n case \"error\":\n bucket = this.errors;\n break;\n default:\n return;\n }\n\n let signature = fragment.format();\n if (bucket[signature]) {\n logger.warn(\"duplicate definition - \" + signature);\n return;\n }\n\n bucket[signature] = fragment;\n });\n\n // If we do not have a constructor add a default\n if (!this.deploy) {\n defineReadOnly(this, \"deploy\", ConstructorFragment.from({\n payable: false,\n type: \"constructor\"\n }));\n }\n\n defineReadOnly(this, \"_isInterface\", true);\n }\n\n format(format?: string): string | Array {\n if (!format) { format = FormatTypes.full; }\n if (format === FormatTypes.sighash) {\n logger.throwArgumentError(\"interface does not support formatting sighash\", \"format\", format);\n }\n\n const abi = this.fragments.map((fragment) => fragment.format(format));\n\n // We need to re-bundle the JSON fragments a bit\n if (format === FormatTypes.json) {\n return JSON.stringify(abi.map((j) => JSON.parse(j)));\n }\n\n return abi;\n }\n\n // Sub-classes can override these to handle other blockchains\n static getAbiCoder(): AbiCoder {\n return defaultAbiCoder;\n }\n\n static getAddress(address: string): string {\n return getAddress(address);\n }\n\n static getSighash(fragment: ErrorFragment | FunctionFragment): string {\n return hexDataSlice(id(fragment.format()), 0, 4);\n }\n\n static getEventTopic(eventFragment: EventFragment): string {\n return id(eventFragment.format());\n }\n\n // Find a function definition by any means necessary (unless it is ambiguous)\n getFunction(nameOrSignatureOrSighash: string): FunctionFragment {\n if (isHexString(nameOrSignatureOrSighash)) {\n for (const name in this.functions) {\n if (nameOrSignatureOrSighash === this.getSighash(name)) {\n return this.functions[name];\n }\n }\n logger.throwArgumentError(\"no matching function\", \"sighash\", nameOrSignatureOrSighash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrSighash.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrSighash.trim();\n const matching = Object.keys(this.functions).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching function\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching functions\", \"name\", name);\n }\n\n return this.functions[matching[0]];\n }\n\n // Normalize the signature and lookup the function\n const result = this.functions[FunctionFragment.fromString(nameOrSignatureOrSighash).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching function\", \"signature\", nameOrSignatureOrSighash);\n }\n return result;\n }\n\n // Find an event definition by any means necessary (unless it is ambiguous)\n getEvent(nameOrSignatureOrTopic: string): EventFragment {\n if (isHexString(nameOrSignatureOrTopic)) {\n const topichash = nameOrSignatureOrTopic.toLowerCase();\n for (const name in this.events) {\n if (topichash === this.getEventTopic(name)) {\n return this.events[name];\n }\n }\n logger.throwArgumentError(\"no matching event\", \"topichash\", topichash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrTopic.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrTopic.trim();\n const matching = Object.keys(this.events).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching event\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching events\", \"name\", name);\n }\n\n return this.events[matching[0]];\n }\n\n // Normalize the signature and lookup the function\n const result = this.events[EventFragment.fromString(nameOrSignatureOrTopic).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching event\", \"signature\", nameOrSignatureOrTopic);\n }\n return result;\n }\n\n // Find a function definition by any means necessary (unless it is ambiguous)\n getError(nameOrSignatureOrSighash: string): ErrorFragment {\n if (isHexString(nameOrSignatureOrSighash)) {\n const getSighash = getStatic<(f: ErrorFragment | FunctionFragment) => string>(this.constructor, \"getSighash\");\n for (const name in this.errors) {\n const error = this.errors[name];\n if (nameOrSignatureOrSighash === getSighash(error)) {\n return this.errors[name];\n }\n }\n logger.throwArgumentError(\"no matching error\", \"sighash\", nameOrSignatureOrSighash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrSighash.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrSighash.trim();\n const matching = Object.keys(this.errors).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching error\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching errors\", \"name\", name);\n }\n\n return this.errors[matching[0]];\n }\n\n // Normalize the signature and lookup the function\n const result = this.errors[FunctionFragment.fromString(nameOrSignatureOrSighash).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching error\", \"signature\", nameOrSignatureOrSighash);\n }\n return result;\n }\n\n // Get the sighash (the bytes4 selector) used by Solidity to identify a function\n getSighash(fragment: ErrorFragment | FunctionFragment | string): string {\n if (typeof(fragment) === \"string\") {\n try {\n fragment = this.getFunction(fragment);\n } catch (error) {\n try {\n fragment = this.getError(fragment);\n } catch (_) {\n throw error;\n }\n }\n }\n\n return getStatic<(f: ErrorFragment | FunctionFragment) => string>(this.constructor, \"getSighash\")(fragment);\n }\n\n // Get the topic (the bytes32 hash) used by Solidity to identify an event\n getEventTopic(eventFragment: EventFragment | string): string {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n return getStatic<(e: EventFragment) => string>(this.constructor, \"getEventTopic\")(eventFragment);\n }\n\n\n _decodeParams(params: ReadonlyArray, data: BytesLike): Result {\n return this._abiCoder.decode(params, data)\n }\n\n _encodeParams(params: ReadonlyArray, values: ReadonlyArray): string {\n return this._abiCoder.encode(params, values)\n }\n\n encodeDeploy(values?: ReadonlyArray): string {\n return this._encodeParams(this.deploy.inputs, values || [ ]);\n }\n\n decodeErrorResult(fragment: ErrorFragment | string, data: BytesLike): Result {\n if (typeof(fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n\n const bytes = arrayify(data);\n\n if (hexlify(bytes.slice(0, 4)) !== this.getSighash(fragment)) {\n logger.throwArgumentError(`data signature does not match error ${ fragment.name }.`, \"data\", hexlify(bytes));\n }\n\n return this._decodeParams(fragment.inputs, bytes.slice(4));\n }\n\n encodeErrorResult(fragment: ErrorFragment | string, values?: ReadonlyArray): string {\n if (typeof(fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n\n return hexlify(concat([\n this.getSighash(fragment),\n this._encodeParams(fragment.inputs, values || [ ])\n ]));\n }\n\n // Decode the data for a function call (e.g. tx.data)\n decodeFunctionData(functionFragment: FunctionFragment | string, data: BytesLike): Result {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n const bytes = arrayify(data);\n\n if (hexlify(bytes.slice(0, 4)) !== this.getSighash(functionFragment)) {\n logger.throwArgumentError(`data signature does not match function ${ functionFragment.name }.`, \"data\", hexlify(bytes));\n }\n\n return this._decodeParams(functionFragment.inputs, bytes.slice(4));\n }\n\n // Encode the data for a function call (e.g. tx.data)\n encodeFunctionData(functionFragment: FunctionFragment | string, values?: ReadonlyArray): string {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n return hexlify(concat([\n this.getSighash(functionFragment),\n this._encodeParams(functionFragment.inputs, values || [ ])\n ]));\n }\n\n // Decode the result from a function call (e.g. from eth_call)\n decodeFunctionResult(functionFragment: FunctionFragment | string, data: BytesLike): Result {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n let bytes = arrayify(data);\n\n let reason: string = null;\n let message = \"\";\n let errorArgs: Result = null;\n let errorName: string = null;\n let errorSignature: string = null;\n switch (bytes.length % this._abiCoder._getWordSize()) {\n case 0:\n try {\n return this._abiCoder.decode(functionFragment.outputs, bytes);\n } catch (error) { }\n break;\n\n case 4: {\n const selector = hexlify(bytes.slice(0, 4));\n const builtin = BuiltinErrors[selector];\n if (builtin) {\n errorArgs = this._abiCoder.decode(builtin.inputs, bytes.slice(4));\n errorName = builtin.name;\n errorSignature = builtin.signature;\n if (builtin.reason) { reason = errorArgs[0]; }\n if (errorName === \"Error\") {\n message = `; VM Exception while processing transaction: reverted with reason string ${ JSON.stringify(errorArgs[0]) }`;\n } else if (errorName === \"Panic\") {\n message = `; VM Exception while processing transaction: reverted with panic code ${ errorArgs[0] }`;\n }\n } else {\n try {\n const error = this.getError(selector);\n errorArgs = this._abiCoder.decode(error.inputs, bytes.slice(4));\n errorName = error.name;\n errorSignature = error.format();\n } catch (error) { }\n }\n break;\n }\n }\n\n return logger.throwError(\"call revert exception\" + message, Logger.errors.CALL_EXCEPTION, {\n method: functionFragment.format(),\n data: hexlify(data), errorArgs, errorName, errorSignature, reason\n });\n }\n\n // Encode the result for a function call (e.g. for eth_call)\n encodeFunctionResult(functionFragment: FunctionFragment | string, values?: ReadonlyArray): string {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n return hexlify(this._abiCoder.encode(functionFragment.outputs, values || [ ]));\n }\n\n // Create the filter for the event with search criteria (e.g. for eth_filterLog)\n encodeFilterTopics(eventFragment: EventFragment | string, values: ReadonlyArray): Array> {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n if (values.length > eventFragment.inputs.length) {\n logger.throwError(\"too many arguments for \" + eventFragment.format(), Logger.errors.UNEXPECTED_ARGUMENT, {\n argument: \"values\",\n value: values\n })\n }\n\n let topics: Array> = [];\n if (!eventFragment.anonymous) { topics.push(this.getEventTopic(eventFragment)); }\n\n const encodeTopic = (param: ParamType, value: any): string => {\n if (param.type === \"string\") {\n return id(value);\n } else if (param.type === \"bytes\") {\n return keccak256(hexlify(value));\n }\n\n if (param.type === \"bool\" && typeof(value) === \"boolean\") {\n value = (value ? \"0x01\": \"0x00\");\n }\n\n if (param.type.match(/^u?int/)) {\n value = BigNumber.from(value).toHexString();\n }\n\n // Check addresses are valid\n if (param.type === \"address\") { this._abiCoder.encode( [ \"address\" ], [ value ]); }\n return hexZeroPad(hexlify(value), 32);\n };\n\n values.forEach((value, index) => {\n\n let param = (eventFragment).inputs[index];\n\n if (!param.indexed) {\n if (value != null) {\n logger.throwArgumentError(\"cannot filter non-indexed parameters; must be null\", (\"contract.\" + param.name), value);\n }\n return;\n }\n\n if (value == null) {\n topics.push(null);\n } else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n logger.throwArgumentError(\"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n } else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n } else {\n topics.push(encodeTopic(param, value));\n }\n });\n\n // Trim off trailing nulls\n while (topics.length && topics[topics.length - 1] === null) {\n topics.pop();\n }\n\n return topics;\n }\n\n encodeEventLog(eventFragment: EventFragment | string, values: ReadonlyArray): { data: string, topics: Array } {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n const topics: Array = [ ];\n\n const dataTypes: Array = [ ];\n const dataValues: Array = [ ];\n\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n\n if (values.length !== eventFragment.inputs.length) {\n logger.throwArgumentError(\"event arguments/values mismatch\", \"values\", values);\n }\n\n eventFragment.inputs.forEach((param, index) => {\n const value = values[index];\n if (param.indexed) {\n if (param.type === \"string\") {\n topics.push(id(value))\n } else if (param.type === \"bytes\") {\n topics.push(keccak256(value))\n } else if (param.baseType === \"tuple\" || param.baseType === \"array\") {\n // @TODO\n throw new Error(\"not implemented\");\n } else {\n topics.push(this._abiCoder.encode([ param.type] , [ value ]));\n }\n } else {\n dataTypes.push(param);\n dataValues.push(value);\n }\n });\n\n return {\n data: this._abiCoder.encode(dataTypes , dataValues),\n topics: topics\n };\n }\n\n // Decode a filter for the event and the search criteria\n decodeEventLog(eventFragment: EventFragment | string, data: BytesLike, topics?: ReadonlyArray): Result {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n if (topics != null && !eventFragment.anonymous) {\n let topicHash = this.getEventTopic(eventFragment);\n if (!isHexString(topics[0], 32) || topics[0].toLowerCase() !== topicHash) {\n logger.throwError(\"fragment/topic mismatch\", Logger.errors.INVALID_ARGUMENT, { argument: \"topics[0]\", expected: topicHash, value: topics[0] });\n }\n topics = topics.slice(1);\n }\n\n let indexed: Array = [];\n let nonIndexed: Array = [];\n let dynamic: Array = [];\n\n eventFragment.inputs.forEach((param, index) => {\n if (param.indexed) {\n if (param.type === \"string\" || param.type === \"bytes\" || param.baseType === \"tuple\" || param.baseType === \"array\") {\n indexed.push(ParamType.fromObject({ type: \"bytes32\", name: param.name }));\n dynamic.push(true);\n } else {\n indexed.push(param);\n dynamic.push(false);\n }\n } else {\n nonIndexed.push(param);\n dynamic.push(false);\n }\n });\n\n let resultIndexed = (topics != null) ? this._abiCoder.decode(indexed, concat(topics)): null;\n let resultNonIndexed = this._abiCoder.decode(nonIndexed, data, true);\n\n let result: (Array & { [ key: string ]: any }) = [ ];\n let nonIndexedIndex = 0, indexedIndex = 0;\n eventFragment.inputs.forEach((param, index) => {\n if (param.indexed) {\n if (resultIndexed == null) {\n result[index] = new Indexed({ _isIndexed: true, hash: null });\n\n } else if (dynamic[index]) {\n result[index] = new Indexed({ _isIndexed: true, hash: resultIndexed[indexedIndex++] });\n\n } else {\n try {\n result[index] = resultIndexed[indexedIndex++];\n } catch (error) {\n result[index] = error;\n }\n }\n } else {\n try {\n result[index] = resultNonIndexed[nonIndexedIndex++];\n } catch (error) {\n result[index] = error;\n }\n }\n\n // Add the keyword argument if named and safe\n if (param.name && result[param.name] == null) {\n const value = result[index];\n\n // Make error named values throw on access\n if (value instanceof Error) {\n Object.defineProperty(result, param.name, {\n enumerable: true,\n get: () => { throw wrapAccessError(`property ${ JSON.stringify(param.name) }`, value); }\n });\n } else {\n result[param.name] = value;\n }\n }\n });\n\n // Make all error indexed values throw on access\n for (let i = 0; i < result.length; i++) {\n const value = result[i];\n if (value instanceof Error) {\n Object.defineProperty(result, i, {\n enumerable: true,\n get: () => { throw wrapAccessError(`index ${ i }`, value); }\n });\n }\n }\n\n return Object.freeze(result);\n }\n\n // Given a transaction, find the matching function fragment (if any) and\n // determine all its properties and call parameters\n parseTransaction(tx: { data: string, value?: BigNumberish }): TransactionDescription {\n let fragment = this.getFunction(tx.data.substring(0, 10).toLowerCase())\n\n if (!fragment) { return null; }\n\n return new TransactionDescription({\n args: this._abiCoder.decode(fragment.inputs, \"0x\" + tx.data.substring(10)),\n functionFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n sighash: this.getSighash(fragment),\n value: BigNumber.from(tx.value || \"0\"),\n });\n }\n\n // @TODO\n //parseCallResult(data: BytesLike): ??\n\n // Given an event log, find the matching event fragment (if any) and\n // determine all its properties and values\n parseLog(log: { topics: Array, data: string}): LogDescription {\n let fragment = this.getEvent(log.topics[0]);\n\n if (!fragment || fragment.anonymous) { return null; }\n\n // @TODO: If anonymous, and the only method, and the input count matches, should we parse?\n // Probably not, because just because it is the only event in the ABI does\n // not mean we have the full ABI; maybe just a fragment?\n\n\n return new LogDescription({\n eventFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n topic: this.getEventTopic(fragment),\n args: this.decodeEventLog(fragment, log.data, log.topics)\n });\n }\n\n parseError(data: BytesLike): ErrorDescription {\n const hexData = hexlify(data);\n let fragment = this.getError(hexData.substring(0, 10).toLowerCase())\n\n if (!fragment) { return null; }\n\n return new ErrorDescription({\n args: this._abiCoder.decode(fragment.inputs, \"0x\" + hexData.substring(10)),\n errorFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n sighash: this.getSighash(fragment),\n });\n }\n\n\n /*\n static from(value: Array | string | Interface) {\n if (Interface.isInterface(value)) {\n return value;\n }\n if (typeof(value) === \"string\") {\n return new Interface(JSON.parse(value));\n }\n return new Interface(value);\n }\n */\n\n static isInterface(value: any): value is Interface {\n return !!(value && value._isInterface);\n }\n}\n\n", "\"use strict\";\n\nimport { ConstructorFragment, ErrorFragment, EventFragment, FormatTypes, Fragment, FunctionFragment, JsonFragment, JsonFragmentType, ParamType } from \"./fragments\";\nimport { AbiCoder, CoerceFunc, defaultAbiCoder } from \"./abi-coder\";\nimport { checkResultErrors, Indexed, Interface, LogDescription, Result, TransactionDescription } from \"./interface\";\n\nexport {\n ConstructorFragment,\n ErrorFragment,\n EventFragment,\n Fragment,\n FunctionFragment,\n ParamType,\n FormatTypes,\n\n AbiCoder,\n defaultAbiCoder,\n\n Interface,\n Indexed,\n\n /////////////////////////\n // Types\n\n CoerceFunc,\n JsonFragment,\n JsonFragmentType,\n\n Result,\n checkResultErrors,\n\n LogDescription,\n TransactionDescription\n};\n", "export const version = \"abstract-provider/5.7.0\";\n", "\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { BytesLike, isHexString } from \"@ethersproject/bytes\";\nimport { Network } from \"@ethersproject/networks\";\nimport { Deferrable, Description, defineReadOnly, resolveProperties } from \"@ethersproject/properties\";\nimport { AccessListish, Transaction } from \"@ethersproject/transactions\";\nimport { OnceBlockable } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\n\nexport type TransactionRequest = {\n to?: string,\n from?: string,\n nonce?: BigNumberish,\n\n gasLimit?: BigNumberish,\n gasPrice?: BigNumberish,\n\n data?: BytesLike,\n value?: BigNumberish,\n chainId?: number\n\n type?: number;\n accessList?: AccessListish;\n\n maxPriorityFeePerGas?: BigNumberish;\n maxFeePerGas?: BigNumberish;\n\n customData?: Record;\n ccipReadEnabled?: boolean;\n}\n\nexport interface TransactionResponse extends Transaction {\n hash: string;\n\n // Only if a transaction has been mined\n blockNumber?: number,\n blockHash?: string,\n timestamp?: number,\n\n confirmations: number,\n\n // Not optional (as it is in Transaction)\n from: string;\n\n // The raw transaction\n raw?: string,\n\n // This function waits until the transaction has been mined\n wait: (confirmations?: number) => Promise\n};\n\nexport type BlockTag = string | number;\n\nexport interface _Block {\n hash: string;\n parentHash: string;\n number: number;\n\n timestamp: number;\n nonce: string;\n difficulty: number;\n _difficulty: BigNumber;\n\n gasLimit: BigNumber;\n gasUsed: BigNumber;\n\n miner: string;\n extraData: string;\n\n baseFeePerGas?: null | BigNumber;\n}\n\nexport interface Block extends _Block {\n transactions: Array;\n}\n\nexport interface BlockWithTransactions extends _Block {\n transactions: Array;\n}\n\n\nexport interface Log {\n blockNumber: number;\n blockHash: string;\n transactionIndex: number;\n\n removed: boolean;\n\n address: string;\n data: string;\n\n topics: Array;\n\n transactionHash: string;\n logIndex: number;\n}\n\nexport interface TransactionReceipt {\n to: string;\n from: string;\n contractAddress: string,\n transactionIndex: number,\n root?: string,\n gasUsed: BigNumber,\n logsBloom: string,\n blockHash: string,\n transactionHash: string,\n logs: Array,\n blockNumber: number,\n confirmations: number,\n cumulativeGasUsed: BigNumber,\n effectiveGasPrice: BigNumber,\n byzantium: boolean,\n type: number;\n status?: number\n};\n\nexport interface FeeData {\n lastBaseFeePerGas: null | BigNumber;\n maxFeePerGas: null | BigNumber;\n maxPriorityFeePerGas: null | BigNumber;\n gasPrice: null | BigNumber;\n}\n\nexport interface EventFilter {\n address?: string;\n topics?: Array | null>;\n}\n\nexport interface Filter extends EventFilter {\n fromBlock?: BlockTag,\n toBlock?: BlockTag,\n}\n\nexport interface FilterByBlockHash extends EventFilter {\n blockHash?: string;\n}\n\n//export type CallTransactionable = {\n// call(transaction: TransactionRequest): Promise;\n//};\n\nexport abstract class ForkEvent extends Description {\n readonly expiry: number;\n\n readonly _isForkEvent?: boolean;\n\n static isForkEvent(value: any): value is ForkEvent {\n return !!(value && value._isForkEvent);\n }\n}\n\nexport class BlockForkEvent extends ForkEvent {\n readonly blockHash: string;\n\n readonly _isBlockForkEvent?: boolean;\n\n constructor(blockHash: string, expiry?: number) {\n if (!isHexString(blockHash, 32)) {\n logger.throwArgumentError(\"invalid blockHash\", \"blockHash\", blockHash);\n }\n\n super({\n _isForkEvent: true,\n _isBlockForkEvent: true,\n expiry: (expiry || 0),\n blockHash: blockHash\n });\n }\n}\n\nexport class TransactionForkEvent extends ForkEvent {\n readonly hash: string;\n\n readonly _isTransactionOrderForkEvent?: boolean;\n\n constructor(hash: string, expiry?: number) {\n if (!isHexString(hash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"hash\", hash);\n }\n\n super({\n _isForkEvent: true,\n _isTransactionForkEvent: true,\n expiry: (expiry || 0),\n hash: hash\n });\n }\n}\n\nexport class TransactionOrderForkEvent extends ForkEvent {\n readonly beforeHash: string;\n readonly afterHash: string;\n\n constructor(beforeHash: string, afterHash: string, expiry?: number) {\n if (!isHexString(beforeHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"beforeHash\", beforeHash);\n }\n if (!isHexString(afterHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"afterHash\", afterHash);\n }\n\n super({\n _isForkEvent: true,\n _isTransactionOrderForkEvent: true,\n expiry: (expiry || 0),\n beforeHash: beforeHash,\n afterHash: afterHash\n });\n }\n}\n\nexport type EventType = string | Array> | EventFilter | ForkEvent;\n\nexport type Listener = (...args: Array) => void;\n\n///////////////////////////////\n// Exported Abstracts\nexport abstract class Provider implements OnceBlockable {\n\n // Network\n abstract getNetwork(): Promise;\n\n // Latest State\n abstract getBlockNumber(): Promise;\n abstract getGasPrice(): Promise;\n async getFeeData(): Promise {\n const { block, gasPrice } = await resolveProperties({\n block: this.getBlock(\"latest\"),\n gasPrice: this.getGasPrice().catch((error) => {\n // @TODO: Why is this now failing on Calaveras?\n //console.log(error);\n return null;\n })\n });\n\n let lastBaseFeePerGas = null, maxFeePerGas = null, maxPriorityFeePerGas = null;\n\n if (block && block.baseFeePerGas) {\n // We may want to compute this more accurately in the future,\n // using the formula \"check if the base fee is correct\".\n // See: https://eips.ethereum.org/EIPS/eip-1559\n lastBaseFeePerGas = block.baseFeePerGas;\n maxPriorityFeePerGas = BigNumber.from(\"1500000000\");\n maxFeePerGas = block.baseFeePerGas.mul(2).add(maxPriorityFeePerGas);\n }\n\n return { lastBaseFeePerGas, maxFeePerGas, maxPriorityFeePerGas, gasPrice };\n }\n\n // Account\n abstract getBalance(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise;\n abstract getTransactionCount(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise;\n abstract getCode(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise ;\n abstract getStorageAt(addressOrName: string | Promise, position: BigNumberish | Promise, blockTag?: BlockTag | Promise): Promise;\n\n // Execution\n abstract sendTransaction(signedTransaction: string | Promise): Promise;\n abstract call(transaction: Deferrable, blockTag?: BlockTag | Promise): Promise;\n abstract estimateGas(transaction: Deferrable): Promise;\n\n // Queries\n abstract getBlock(blockHashOrBlockTag: BlockTag | string | Promise): Promise;\n abstract getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise): Promise;\n abstract getTransaction(transactionHash: string): Promise;\n abstract getTransactionReceipt(transactionHash: string): Promise;\n\n // Bloom-filter Queries\n abstract getLogs(filter: Filter): Promise>;\n\n // ENS\n abstract resolveName(name: string | Promise): Promise;\n abstract lookupAddress(address: string | Promise): Promise;\n\n // Event Emitter (ish)\n abstract on(eventName: EventType, listener: Listener): Provider;\n abstract once(eventName: EventType, listener: Listener): Provider;\n abstract emit(eventName: EventType, ...args: Array): boolean\n abstract listenerCount(eventName?: EventType): number;\n abstract listeners(eventName?: EventType): Array;\n abstract off(eventName: EventType, listener?: Listener): Provider;\n abstract removeAllListeners(eventName?: EventType): Provider;\n\n // Alias for \"on\"\n addListener(eventName: EventType, listener: Listener): Provider {\n return this.on(eventName, listener);\n }\n\n // Alias for \"off\"\n removeListener(eventName: EventType, listener: Listener): Provider {\n return this.off(eventName, listener);\n }\n\n // @TODO: This *could* be implemented here, but would pull in events...\n abstract waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number): Promise;\n\n readonly _isProvider: boolean;\n\n constructor() {\n logger.checkAbstract(new.target, Provider);\n defineReadOnly(this, \"_isProvider\", true);\n }\n\n static isProvider(value: any): value is Provider {\n return !!(value && value._isProvider);\n }\n\n/*\n static getResolver(network: Network, callable: CallTransactionable, namehash: string): string {\n // No ENS...\n if (!network.ensAddress) {\n errors.throwError(\n \"network does support ENS\",\n errors.UNSUPPORTED_OPERATION,\n { operation: \"ENS\", network: network.name }\n );\n }\n\n // Not a namehash\n if (!isHexString(namehash, 32)) {\n errors.throwArgumentError(\"invalid name hash\", \"namehash\", namehash);\n }\n\n // keccak256(\"resolver(bytes32)\")\n let data = \"0x0178b8bf\" + namehash.substring(2);\n let transaction = { to: network.ensAddress, data: data };\n\n return provider.call(transaction).then((data) => {\n return provider.formatter.callAddress(data);\n });\n }\n\n static resolveNamehash(network: Network, callable: CallTransactionable, namehash: string): string {\n return this.getResolver(network, callable, namehash).then((resolverAddress) => {\n if (!resolverAddress) { return null; }\n\n // keccak256(\"addr(bytes32)\")\n let data = \"0x3b3b57de\" + namehash(name).substring(2);\n let transaction = { to: resolverAddress, data: data };\n return callable.call(transaction).then((data) => {\n return this.formatter.callAddress(data);\n });\n\n })\n }\n*/\n}\n", "export const version = \"abstract-signer/5.7.0\";\n", "\"use strict\";\n\nimport { BlockTag, FeeData, Provider, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { Bytes, BytesLike } from \"@ethersproject/bytes\";\nimport { Deferrable, defineReadOnly, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst allowedTransactionKeys: Array = [\n \"accessList\", \"ccipReadEnabled\", \"chainId\", \"customData\", \"data\", \"from\", \"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"to\", \"type\", \"value\"\n];\n\nconst forwardErrors = [\n Logger.errors.INSUFFICIENT_FUNDS,\n Logger.errors.NONCE_EXPIRED,\n Logger.errors.REPLACEMENT_UNDERPRICED,\n];\n\n// EIP-712 Typed Data\n// See: https://eips.ethereum.org/EIPS/eip-712\n\nexport interface TypedDataDomain {\n name?: string;\n version?: string;\n chainId?: BigNumberish;\n verifyingContract?: string;\n salt?: BytesLike;\n};\n\nexport interface TypedDataField {\n name: string;\n type: string;\n};\n\n// Sub-classes of Signer may optionally extend this interface to indicate\n// they have a private key available synchronously\nexport interface ExternallyOwnedAccount {\n readonly address: string;\n readonly privateKey: string;\n}\n\n// Sub-Class Notes:\n// - A Signer MUST always make sure, that if present, the \"from\" field\n// matches the Signer, before sending or signing a transaction\n// - A Signer SHOULD always wrap private information (such as a private\n// key or mnemonic) in a function, so that console.log does not leak\n// the data\n\n// @TODO: This is a temporary measure to preserve backwards compatibility\n// In v6, the method on TypedDataSigner will be added to Signer\nexport interface TypedDataSigner {\n _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise;\n}\n\nexport abstract class Signer {\n readonly provider?: Provider;\n\n ///////////////////\n // Sub-classes MUST implement these\n\n // Returns the checksum address\n abstract getAddress(): Promise\n\n // Returns the signed prefixed-message. This MUST treat:\n // - Bytes as a binary message\n // - string as a UTF8-message\n // i.e. \"0x1234\" is a SIX (6) byte string, NOT 2 bytes of data\n abstract signMessage(message: Bytes | string): Promise;\n\n // Signs a transaction and returns the fully serialized, signed transaction.\n // The EXACT transaction MUST be signed, and NO additional properties to be added.\n // - This MAY throw if signing transactions is not supports, but if\n // it does, sentTransaction MUST be overridden.\n abstract signTransaction(transaction: Deferrable): Promise;\n\n // Returns a new instance of the Signer, connected to provider.\n // This MAY throw if changing providers is not supported.\n abstract connect(provider: Provider): Signer;\n\n readonly _isSigner: boolean;\n\n\n ///////////////////\n // Sub-classes MUST call super\n constructor() {\n logger.checkAbstract(new.target, Signer);\n defineReadOnly(this, \"_isSigner\", true);\n }\n\n\n ///////////////////\n // Sub-classes MAY override these\n\n async getBalance(blockTag?: BlockTag): Promise {\n this._checkProvider(\"getBalance\");\n return await this.provider.getBalance(this.getAddress(), blockTag);\n }\n\n async getTransactionCount(blockTag?: BlockTag): Promise {\n this._checkProvider(\"getTransactionCount\");\n return await this.provider.getTransactionCount(this.getAddress(), blockTag);\n }\n\n // Populates \"from\" if unspecified, and estimates the gas for the transaction\n async estimateGas(transaction: Deferrable): Promise {\n this._checkProvider(\"estimateGas\");\n const tx = await resolveProperties(this.checkTransaction(transaction));\n return await this.provider.estimateGas(tx);\n }\n\n // Populates \"from\" if unspecified, and calls with the transaction\n async call(transaction: Deferrable, blockTag?: BlockTag): Promise {\n this._checkProvider(\"call\");\n const tx = await resolveProperties(this.checkTransaction(transaction));\n return await this.provider.call(tx, blockTag);\n }\n\n // Populates all fields in a transaction, signs it and sends it to the network\n async sendTransaction(transaction: Deferrable): Promise {\n this._checkProvider(\"sendTransaction\");\n const tx = await this.populateTransaction(transaction);\n const signedTx = await this.signTransaction(tx);\n return await this.provider.sendTransaction(signedTx);\n }\n\n async getChainId(): Promise {\n this._checkProvider(\"getChainId\");\n const network = await this.provider.getNetwork();\n return network.chainId;\n }\n\n async getGasPrice(): Promise {\n this._checkProvider(\"getGasPrice\");\n return await this.provider.getGasPrice();\n }\n\n async getFeeData(): Promise {\n this._checkProvider(\"getFeeData\");\n return await this.provider.getFeeData();\n }\n\n\n async resolveName(name: string): Promise {\n this._checkProvider(\"resolveName\");\n return await this.provider.resolveName(name);\n }\n\n\n\n // Checks a transaction does not contain invalid keys and if\n // no \"from\" is provided, populates it.\n // - does NOT require a provider\n // - adds \"from\" is not present\n // - returns a COPY (safe to mutate the result)\n // By default called from: (overriding these prevents it)\n // - call\n // - estimateGas\n // - populateTransaction (and therefor sendTransaction)\n checkTransaction(transaction: Deferrable): Deferrable {\n for (const key in transaction) {\n if (allowedTransactionKeys.indexOf(key) === -1) {\n logger.throwArgumentError(\"invalid transaction key: \" + key, \"transaction\", transaction);\n }\n }\n\n const tx = shallowCopy(transaction);\n\n if (tx.from == null) {\n tx.from = this.getAddress();\n\n } else {\n // Make sure any provided address matches this signer\n tx.from = Promise.all([\n Promise.resolve(tx.from),\n this.getAddress()\n ]).then((result) => {\n if (result[0].toLowerCase() !== result[1].toLowerCase()) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n return result[0];\n });\n }\n\n return tx;\n }\n\n // Populates ALL keys for a transaction and checks that \"from\" matches\n // this Signer. Should be used by sendTransaction but NOT by signTransaction.\n // By default called from: (overriding these prevents it)\n // - sendTransaction\n //\n // Notes:\n // - We allow gasPrice for EIP-1559 as long as it matches maxFeePerGas\n async populateTransaction(transaction: Deferrable): Promise {\n\n const tx: Deferrable = await resolveProperties(this.checkTransaction(transaction))\n\n if (tx.to != null) {\n tx.to = Promise.resolve(tx.to).then(async (to) => {\n if (to == null) { return null; }\n const address = await this.resolveName(to);\n if (address == null) {\n logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n }\n return address;\n });\n\n // Prevent this error from causing an UnhandledPromiseException\n tx.to.catch((error) => { });\n }\n\n // Do not allow mixing pre-eip-1559 and eip-1559 properties\n const hasEip1559 = (tx.maxFeePerGas != null || tx.maxPriorityFeePerGas != null);\n if (tx.gasPrice != null && (tx.type === 2 || hasEip1559)) {\n logger.throwArgumentError(\"eip-1559 transaction do not support gasPrice\", \"transaction\", transaction);\n } else if ((tx.type === 0 || tx.type === 1) && hasEip1559) {\n logger.throwArgumentError(\"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas\", \"transaction\", transaction);\n }\n\n if ((tx.type === 2 || tx.type == null) && (tx.maxFeePerGas != null && tx.maxPriorityFeePerGas != null)) {\n // Fully-formed EIP-1559 transaction (skip getFeeData)\n tx.type = 2;\n\n } else if (tx.type === 0 || tx.type === 1) {\n // Explicit Legacy or EIP-2930 transaction\n\n // Populate missing gasPrice\n if (tx.gasPrice == null) { tx.gasPrice = this.getGasPrice(); }\n\n } else {\n\n // We need to get fee data to determine things\n const feeData = await this.getFeeData();\n\n if (tx.type == null) {\n // We need to auto-detect the intended type of this transaction...\n\n if (feeData.maxFeePerGas != null && feeData.maxPriorityFeePerGas != null) {\n // The network supports EIP-1559!\n\n // Upgrade transaction from null to eip-1559\n tx.type = 2;\n\n if (tx.gasPrice != null) {\n // Using legacy gasPrice property on an eip-1559 network,\n // so use gasPrice as both fee properties\n const gasPrice = tx.gasPrice;\n delete tx.gasPrice;\n tx.maxFeePerGas = gasPrice;\n tx.maxPriorityFeePerGas = gasPrice;\n\n } else {\n // Populate missing fee data\n if (tx.maxFeePerGas == null) { tx.maxFeePerGas = feeData.maxFeePerGas; }\n if (tx.maxPriorityFeePerGas == null) { tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas; }\n }\n\n } else if (feeData.gasPrice != null) {\n // Network doesn't support EIP-1559...\n\n // ...but they are trying to use EIP-1559 properties\n if (hasEip1559) {\n logger.throwError(\"network does not support EIP-1559\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"populateTransaction\"\n });\n }\n\n // Populate missing fee data\n if (tx.gasPrice == null) { tx.gasPrice = feeData.gasPrice; }\n\n // Explicitly set untyped transaction to legacy\n tx.type = 0;\n\n } else {\n // getFeeData has failed us.\n logger.throwError(\"failed to get consistent fee data\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signer.getFeeData\"\n });\n }\n\n } else if (tx.type === 2) {\n // Explicitly using EIP-1559\n\n // Populate missing fee data\n if (tx.maxFeePerGas == null) { tx.maxFeePerGas = feeData.maxFeePerGas; }\n if (tx.maxPriorityFeePerGas == null) { tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas; }\n }\n }\n\n if (tx.nonce == null) { tx.nonce = this.getTransactionCount(\"pending\"); }\n\n if (tx.gasLimit == null) {\n tx.gasLimit = this.estimateGas(tx).catch((error) => {\n if (forwardErrors.indexOf(error.code) >= 0) {\n throw error;\n }\n\n return logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error: error,\n tx: tx\n });\n });\n }\n\n if (tx.chainId == null) {\n tx.chainId = this.getChainId();\n } else {\n tx.chainId = Promise.all([\n Promise.resolve(tx.chainId),\n this.getChainId()\n ]).then((results) => {\n if (results[1] !== 0 && results[0] !== results[1]) {\n logger.throwArgumentError(\"chainId address mismatch\", \"transaction\", transaction);\n }\n return results[0];\n });\n }\n\n return await resolveProperties(tx);\n }\n\n\n ///////////////////\n // Sub-classes SHOULD leave these alone\n\n _checkProvider(operation?: string): void {\n if (!this.provider) { logger.throwError(\"missing provider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: (operation || \"_checkProvider\") });\n }\n }\n\n static isSigner(value: any): value is Signer {\n return !!(value && value._isSigner);\n }\n}\n\nexport class VoidSigner extends Signer implements TypedDataSigner {\n readonly address: string;\n\n constructor(address: string, provider?: Provider) {\n super();\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"provider\", provider || null);\n }\n\n getAddress(): Promise {\n return Promise.resolve(this.address);\n }\n\n _fail(message: string, operation: string): Promise {\n return Promise.resolve().then(() => {\n logger.throwError(message, Logger.errors.UNSUPPORTED_OPERATION, { operation: operation });\n });\n }\n\n signMessage(message: Bytes | string): Promise {\n return this._fail(\"VoidSigner cannot sign messages\", \"signMessage\");\n }\n\n signTransaction(transaction: Deferrable): Promise {\n return this._fail(\"VoidSigner cannot sign transactions\", \"signTransaction\");\n }\n\n _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise {\n return this._fail(\"VoidSigner cannot sign typed data\", \"signTypedData\");\n }\n\n connect(provider: Provider): VoidSigner {\n return new VoidSigner(this.address, provider);\n }\n}\n\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n", "'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n", "var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n", "'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n", "'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n", "'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n", "'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n", "var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n", "module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n", "'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n", "'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n", "'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n", "'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n", "'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n", "import _ec from \"elliptic\";\nimport EC = _ec.ec;\n\nexport { EC }\n", "export const version = \"signing-key/5.7.0\";\n", "\"use strict\";\n\nimport { EC } from \"./elliptic\";\n\nimport { arrayify, BytesLike, hexDataLength, hexlify, hexZeroPad, Signature, SignatureLike, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nlet _curve: EC = null\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\n\nexport class SigningKey {\n\n readonly curve: string;\n\n readonly privateKey: string;\n readonly publicKey: string;\n readonly compressedPublicKey: string;\n\n //readonly address: string;\n\n readonly _isSigningKey: boolean;\n\n constructor(privateKey: BytesLike) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n\n _addPoint(other: BytesLike): string {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n\n signDigest(digest: BytesLike): Signature {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n })\n }\n\n computeSharedSecret(otherKey: BytesLike): string {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n\n static isSigningKey(value: any): value is SigningKey {\n return !!(value && value._isSigningKey);\n }\n}\n\nexport function recoverPublicKey(digest: BytesLike, signature: SignatureLike): string {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\n\nexport function computePublicKey(key: BytesLike, compressed?: boolean): string {\n const bytes = arrayify(key);\n\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n\n } else if (bytes.length === 33) {\n if (compressed) { return hexlify(bytes); }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n\n } else if (bytes.length === 65) {\n if (!compressed) { return hexlify(bytes); }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n\n", "export const version = \"transactions/5.7.0\";\n", "\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, DataOptions, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, SignatureLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type AccessList = Array<{ address: string, storageKeys: Array }>;\n\n// Input allows flexibility in describing an access list\nexport type AccessListish = AccessList |\n Array<[ string, Array ]> |\n Record>;\n\nexport enum TransactionTypes {\n legacy = 0,\n eip2930 = 1,\n eip1559 = 2,\n};\n\nexport type UnsignedTransaction = {\n to?: string;\n nonce?: number;\n\n gasLimit?: BigNumberish;\n gasPrice?: BigNumberish;\n\n data?: BytesLike;\n value?: BigNumberish;\n chainId?: number;\n\n // Typed-Transaction features\n type?: number | null;\n\n // EIP-2930; Type 1 & EIP-1559; Type 2\n accessList?: AccessListish;\n\n // EIP-1559; Type 2\n maxPriorityFeePerGas?: BigNumberish;\n maxFeePerGas?: BigNumberish;\n}\n\nexport interface Transaction {\n hash?: string;\n\n to?: string;\n from?: string;\n nonce: number;\n\n gasLimit: BigNumber;\n gasPrice?: BigNumber;\n\n data: string;\n value: BigNumber;\n chainId: number;\n\n r?: string;\n s?: string;\n v?: number;\n\n // Typed-Transaction features\n type?: number | null;\n\n // EIP-2930; Type 1 & EIP-1559; Type 2\n accessList?: AccessList;\n\n // EIP-1559; Type 2\n maxPriorityFeePerGas?: BigNumber;\n maxFeePerGas?: BigNumber;\n}\n\n///////////////////////////////\n\nfunction handleAddress(value: string): string {\n if (value === \"0x\") { return null; }\n return getAddress(value);\n}\n\nfunction handleNumber(value: string): BigNumber {\n if (value === \"0x\") { return Zero; }\n return BigNumber.from(value);\n}\n\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, gasLimit: true, gasPrice:true, nonce: true, to: true, type: true, value: true\n}\n\nexport function computeAddress(key: BytesLike | string): string {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\n\nexport function recoverAddress(digest: BytesLike, signature: SignatureLike): string {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\n\nfunction formatNumber(value: BigNumberish, name: string): Uint8Array {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\n\nfunction accessSetify(addr: string, storageKeys: Array): { address: string,storageKeys: Array } {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${ addr }:${ index }]`, storageKey)\n }\n return storageKey.toLowerCase();\n })\n };\n}\n\nexport function accessListify(value: AccessListish): AccessList {\n if (Array.isArray(value)) {\n return (] | { address: string, storageKeys: Array}>>value).map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${ index }]`, set);\n }\n return accessSetify(set[0], set[1])\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n\n const result: Array<{ address: string, storageKeys: Array }> = Object.keys(value).map((addr) => {\n const storageKeys: Record = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, >{ });\n return accessSetify(addr, Object.keys(storageKeys).sort())\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\n\nfunction formatAccessList(value: AccessListish): Array<[ string, Array ]> {\n return accessListify(value).map((set) => [ set.address, set.storageKeys ]);\n}\n\nfunction _serializeEip1559(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n\n const fields: any = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to): \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n\n return hexConcat([ \"0x02\", RLP.encode(fields)]);\n}\n\nfunction _serializeEip2930(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n const fields: any = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to): \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n\n return hexConcat([ \"0x01\", RLP.encode(fields)]);\n}\n\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n checkProperties(transaction, allowedTransactionKeys);\n\n const raw: Array = [];\n\n transactionFields.forEach(function(fieldInfo) {\n let value = (transaction)[fieldInfo.name] || ([]);\n const options: DataOptions = { };\n if (fieldInfo.numeric) { options.hexPad = \"left\"; }\n value = arrayify(hexlify(value, options));\n\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value );\n }\n }\n\n raw.push(hexlify(value));\n });\n\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n\n if (typeof(chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n\n } else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n } else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n\n return RLP.encode(raw);\n}\n\nexport function serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n\n return logger.throwError(`unsupported transaction type: ${ transaction.type }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\n\nfunction _parseEipSignature(tx: Transaction, fields: Array, serialize: (tx: UnsignedTransaction) => string): void {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) { throw new Error(\"bad recid\"); }\n tx.v = recid;\n } catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n } catch (error) { }\n}\n\nfunction _parseEip1559(payload: Uint8Array): Transaction {\n const transaction = RLP.decode(payload.slice(1));\n\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx: Transaction = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) { return tx; }\n\n tx.hash = keccak256(payload);\n\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n\n return tx;\n}\n\nfunction _parseEip2930(payload: Uint8Array): Transaction {\n const transaction = RLP.decode(payload.slice(1));\n\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n\n const tx: Transaction = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) { return tx; }\n\n tx.hash = keccak256(payload);\n\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n\n return tx;\n}\n\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction: Uint8Array): Transaction {\n const transaction = RLP.decode(rawTransaction);\n\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n\n const tx: Transaction = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n\n // Legacy unsigned transaction\n if (transaction.length === 6) { return tx; }\n\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n\n } catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n\n } else {\n // Signed Transaction\n\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) { tx.chainId = 0; }\n\n let recoveryParam = tx.v - 27;\n\n const raw = transaction.slice(0, 6);\n\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n } catch (error) { }\n\n tx.hash = keccak256(rawTransaction);\n }\n\n tx.type = null;\n\n return tx;\n}\n\n\nexport function parse(rawTransaction: BytesLike): Transaction {\n const payload = arrayify(rawTransaction);\n\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) { return _parse(payload); }\n\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n\n return logger.throwError(`unsupported transaction type: ${ payload[0] }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n\n", "export const version = \"contracts/5.7.0\";\n", "\"use strict\";\n\nimport { checkResultErrors, EventFragment, Fragment, FunctionFragment, Indexed, Interface, JsonFragment, LogDescription, ParamType, Result } from \"@ethersproject/abi\";\nimport { Block, BlockTag, Filter, FilterByBlockHash, Listener, Log, Provider, TransactionReceipt, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { Signer, VoidSigner } from \"@ethersproject/abstract-signer\";\nimport { getAddress, getContractAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Deferrable, defineReadOnly, deepCopy, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport { AccessList, accessListify, AccessListish } from \"@ethersproject/transactions\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\n\nconst logger = new Logger(version);\n\nexport interface Overrides {\n gasLimit?: BigNumberish | Promise;\n gasPrice?: BigNumberish | Promise;\n maxFeePerGas?: BigNumberish | Promise;\n maxPriorityFeePerGas?: BigNumberish | Promise;\n nonce?: BigNumberish | Promise;\n type?: number;\n accessList?: AccessListish;\n customData?: Record;\n ccipReadEnabled?: boolean;\n};\n\nexport interface PayableOverrides extends Overrides {\n value?: BigNumberish | Promise;\n}\n\nexport interface CallOverrides extends PayableOverrides {\n blockTag?: BlockTag | Promise;\n from?: string | Promise;\n}\n\n// @TODO: Better hierarchy with: (in v6)\n// - abstract-provider:TransactionRequest\n// - transactions:Transaction\n// - transaction:UnsignedTransaction\n\nexport interface PopulatedTransaction {\n to?: string;\n from?: string;\n nonce?: number;\n\n gasLimit?: BigNumber;\n gasPrice?: BigNumber;\n\n data?: string;\n value?: BigNumber;\n chainId?: number;\n\n type?: number;\n accessList?: AccessList;\n\n maxFeePerGas?: BigNumber;\n maxPriorityFeePerGas?: BigNumber;\n\n customData?: Record;\n ccipReadEnabled?: boolean;\n};\n\nexport type EventFilter = {\n address?: string;\n topics?: Array>;\n};\n\n\nexport type ContractFunction = (...args: Array) => Promise;\n\n\n// The (n + 1)th parameter passed to contract event callbacks\nexport interface Event extends Log {\n\n // The event name\n event?: string;\n\n // The event signature\n eventSignature?: string;\n\n // The parsed arguments to the event\n args?: Result;\n\n // If parsing the arguments failed, this is the error\n decodeError?: Error;\n\n // A function that can be used to decode event data and topics\n decode?: (data: string, topics?: Array) => any;\n\n // A function that will remove the listener responsible for this event (if any)\n removeListener: () => void;\n\n // Get blockchain details about this event's block and transaction\n getBlock: () => Promise;\n getTransaction: () => Promise;\n getTransactionReceipt: () => Promise;\n}\n\nexport interface ContractReceipt extends TransactionReceipt {\n events?: Array;\n}\n\nexport interface ContractTransaction extends TransactionResponse {\n wait(confirmations?: number): Promise;\n}\n\n///////////////////////////////\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, from: true, gasLimit: true, gasPrice:true, nonce: true, to: true, value: true,\n type: true, accessList: true,\n maxFeePerGas: true, maxPriorityFeePerGas: true,\n customData: true,\n ccipReadEnabled: true\n}\n\nasync function resolveName(resolver: Signer | Provider, nameOrPromise: string | Promise): Promise {\n const name = await nameOrPromise;\n\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid address or ENS name\", \"name\", name);\n }\n\n // If it is already an address, just use it (after adding checksum)\n try {\n return getAddress(name);\n } catch (error) { }\n\n if (!resolver) {\n logger.throwError(\"a provider or signer is needed to resolve ENS names\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resolveName\"\n });\n }\n\n const address = await resolver.resolveName(name);\n\n if (address == null) {\n logger.throwArgumentError(\"resolver or addr is not configured for ENS name\", \"name\", name);\n }\n\n return address;\n}\n\n// Recursively replaces ENS names with promises to resolve the name and resolves all properties\nasync function resolveAddresses(resolver: Signer | Provider, value: any, paramType: ParamType | Array): Promise {\n if (Array.isArray(paramType)) {\n return await Promise.all(paramType.map((paramType, index) => {\n return resolveAddresses(\n resolver,\n ((Array.isArray(value)) ? value[index]: value[paramType.name]),\n paramType\n );\n }));\n }\n\n if (paramType.type === \"address\") {\n return await resolveName(resolver, value);\n }\n\n if (paramType.type === \"tuple\") {\n return await resolveAddresses(resolver, value, paramType.components);\n }\n\n if (paramType.baseType === \"array\") {\n if (!Array.isArray(value)) {\n return Promise.reject(logger.makeError(\"invalid value for array\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"value\",\n value\n }));\n }\n return await Promise.all(value.map((v) => resolveAddresses(resolver, v, paramType.arrayChildren)));\n }\n\n return value;\n}\n\nasync function populateTransaction(contract: Contract, fragment: FunctionFragment, args: Array): Promise {\n // If an extra argument is given, it is overrides\n let overrides: CallOverrides = { };\n if (args.length === fragment.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n overrides = shallowCopy(args.pop());\n }\n\n // Make sure the parameter count matches\n logger.checkArgumentCount(args.length, fragment.inputs.length, \"passed to contract\");\n\n // Populate \"from\" override (allow promises)\n if (contract.signer) {\n if (overrides.from) {\n // Contracts with a Signer are from the Signer's frame-of-reference;\n // but we allow overriding \"from\" if it matches the signer\n overrides.from = resolveProperties({\n override: resolveName(contract.signer, overrides.from),\n signer: contract.signer.getAddress()\n }).then(async (check) => {\n if (getAddress(check.signer) !== check.override) {\n logger.throwError(\"Contract with a Signer cannot override from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.from\"\n });\n }\n\n return check.override;\n });\n\n } else {\n overrides.from = contract.signer.getAddress();\n }\n\n } else if (overrides.from) {\n overrides.from = resolveName(contract.provider, overrides.from);\n\n //} else {\n // Contracts without a signer can override \"from\", and if\n // unspecified the zero address is used\n //overrides.from = AddressZero;\n }\n\n // Wait for all dependencies to be resolved (prefer the signer over the provider)\n const resolved = await resolveProperties({\n args: resolveAddresses(contract.signer || contract.provider, args, fragment.inputs),\n address: contract.resolvedAddress,\n overrides: (resolveProperties(overrides) || { })\n });\n\n // The ABI coded transaction\n const data = contract.interface.encodeFunctionData(fragment, resolved.args);\n const tx: PopulatedTransaction = {\n data: data,\n to: resolved.address\n };\n\n // Resolved Overrides\n const ro = resolved.overrides;\n\n // Populate simple overrides\n if (ro.nonce != null) { tx.nonce = BigNumber.from(ro.nonce).toNumber(); }\n if (ro.gasLimit != null) { tx.gasLimit = BigNumber.from(ro.gasLimit); }\n if (ro.gasPrice != null) { tx.gasPrice = BigNumber.from(ro.gasPrice); }\n if (ro.maxFeePerGas != null) { tx.maxFeePerGas = BigNumber.from(ro.maxFeePerGas); }\n if (ro.maxPriorityFeePerGas != null) { tx.maxPriorityFeePerGas = BigNumber.from(ro.maxPriorityFeePerGas); }\n if (ro.from != null) { tx.from = ro.from; }\n\n if (ro.type != null) { tx.type = ro.type; }\n if (ro.accessList != null) { tx.accessList = accessListify(ro.accessList); }\n\n // If there was no \"gasLimit\" override, but the ABI specifies a default, use it\n if (tx.gasLimit == null && fragment.gas != null) {\n // Compute the intrinsic gas cost for this transaction\n // @TODO: This is based on the yellow paper as of Petersburg; this is something\n // we may wish to parameterize in v6 as part of the Network object. Since this\n // is always a non-nil to address, we can ignore G_create, but may wish to add\n // similar logic to the ContractFactory.\n let intrinsic = 21000;\n const bytes = arrayify(data);\n for (let i = 0; i < bytes.length; i++) {\n intrinsic += 4;\n if (bytes[i]) { intrinsic += 64; }\n }\n tx.gasLimit = BigNumber.from(fragment.gas).add(intrinsic);\n }\n\n // Populate \"value\" override\n if (ro.value) {\n const roValue = BigNumber.from(ro.value);\n if (!roValue.isZero() && !fragment.payable) {\n logger.throwError(\"non-payable method cannot override value\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.value\",\n value: overrides.value\n });\n }\n tx.value = roValue;\n }\n\n if (ro.customData) {\n tx.customData = shallowCopy(ro.customData);\n }\n\n if (ro.ccipReadEnabled) {\n tx.ccipReadEnabled = !!ro.ccipReadEnabled;\n }\n\n // Remove the overrides\n delete overrides.nonce;\n delete overrides.gasLimit;\n delete overrides.gasPrice;\n delete overrides.from;\n delete overrides.value;\n\n delete overrides.type;\n delete overrides.accessList;\n\n delete overrides.maxFeePerGas;\n delete overrides.maxPriorityFeePerGas;\n\n delete overrides.customData;\n delete overrides.ccipReadEnabled;\n\n // Make sure there are no stray overrides, which may indicate a\n // typo or using an unsupported key.\n const leftovers = Object.keys(overrides).filter((key) => ((overrides)[key] != null));\n if (leftovers.length) {\n logger.throwError(`cannot override ${ leftovers.map((l) => JSON.stringify(l)).join(\",\") }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides\",\n overrides: leftovers\n });\n }\n\n return tx;\n}\n\n\nfunction buildPopulate(contract: Contract, fragment: FunctionFragment): ContractFunction {\n return function(...args: Array): Promise {\n return populateTransaction(contract, fragment, args);\n };\n}\n\nfunction buildEstimate(contract: Contract, fragment: FunctionFragment): ContractFunction {\n const signerOrProvider = (contract.signer || contract.provider);\n return async function(...args: Array): Promise {\n if (!signerOrProvider) {\n logger.throwError(\"estimate require a provider or signer\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"estimateGas\"\n })\n }\n\n const tx = await populateTransaction(contract, fragment, args);\n return await signerOrProvider.estimateGas(tx);\n };\n}\n\nfunction addContractWait(contract: Contract, tx: TransactionResponse) {\n const wait = tx.wait.bind(tx);\n tx.wait = (confirmations?: number) => {\n return wait(confirmations).then((receipt: ContractReceipt) => {\n receipt.events = receipt.logs.map((log) => {\n let event: Event = (deepCopy(log));\n let parsed: LogDescription = null;\n try {\n parsed = contract.interface.parseLog(log);\n } catch (e){ }\n\n // Successfully parsed the event log; include it\n if (parsed) {\n event.args = parsed.args;\n event.decode = (data: BytesLike, topics?: Array) => {\n return contract.interface.decodeEventLog(parsed.eventFragment, data, topics);\n };\n event.event = parsed.name;\n event.eventSignature = parsed.signature;\n }\n\n // Useful operations\n event.removeListener = () => { return contract.provider; }\n event.getBlock = () => {\n return contract.provider.getBlock(receipt.blockHash);\n }\n event.getTransaction = () => {\n return contract.provider.getTransaction(receipt.transactionHash);\n }\n event.getTransactionReceipt = () => {\n return Promise.resolve(receipt);\n }\n\n return event;\n });\n\n return receipt;\n });\n };\n}\n\nfunction buildCall(contract: Contract, fragment: FunctionFragment, collapseSimple: boolean): ContractFunction {\n const signerOrProvider = (contract.signer || contract.provider);\n\n return async function(...args: Array): Promise {\n // Extract the \"blockTag\" override if present\n let blockTag = undefined;\n if (args.length === fragment.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n const overrides = shallowCopy(args.pop());\n if (overrides.blockTag != null) {\n blockTag = await overrides.blockTag;\n }\n delete overrides.blockTag;\n args.push(overrides);\n }\n\n // If the contract was just deployed, wait until it is mined\n if (contract.deployTransaction != null) {\n await contract._deployed(blockTag);\n }\n\n // Call a node and get the result\n const tx = await populateTransaction(contract, fragment, args);\n const result = await signerOrProvider.call(tx, blockTag);\n\n try {\n let value = contract.interface.decodeFunctionResult(fragment, result);\n if (collapseSimple && fragment.outputs.length === 1) {\n value = value[0];\n }\n return value;\n\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) {\n error.address = contract.address;\n error.args = args;\n error.transaction = tx;\n }\n throw error;\n }\n };\n}\n\nfunction buildSend(contract: Contract, fragment: FunctionFragment): ContractFunction {\n return async function(...args: Array): Promise {\n if (!contract.signer) {\n logger.throwError(\"sending a transaction requires a signer\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"sendTransaction\"\n })\n }\n\n // If the contract was just deployed, wait until it is mined\n if (contract.deployTransaction != null) {\n await contract._deployed();\n }\n\n const txRequest = await populateTransaction(contract, fragment, args);\n\n const tx = await contract.signer.sendTransaction(txRequest);\n\n // Tweak the tx.wait so the receipt has extra properties\n addContractWait(contract, tx);\n\n return tx;\n };\n}\n\nfunction buildDefault(contract: Contract, fragment: FunctionFragment, collapseSimple: boolean): ContractFunction {\n if (fragment.constant) {\n return buildCall(contract, fragment, collapseSimple);\n }\n return buildSend(contract, fragment);\n}\n\nfunction getEventTag(filter: EventFilter): string {\n if (filter.address && (filter.topics == null || filter.topics.length === 0)) {\n return \"*\";\n }\n\n return (filter.address || \"*\") + \"@\" + (filter.topics ? filter.topics.map((topic) => {\n if (Array.isArray(topic)) {\n return topic.join(\"|\");\n }\n return topic;\n }).join(\":\"): \"\");\n}\n\nclass RunningEvent {\n readonly tag: string;\n readonly filter: EventFilter;\n private _listeners: Array<{ listener: Listener, once: boolean }>;\n\n constructor(tag: string, filter: EventFilter) {\n defineReadOnly(this, \"tag\", tag);\n defineReadOnly(this, \"filter\", filter);\n this._listeners = [ ];\n }\n\n addListener(listener: Listener, once: boolean): void {\n this._listeners.push({ listener: listener, once: once });\n }\n\n removeListener(listener: Listener): void {\n let done = false;\n this._listeners = this._listeners.filter((item) => {\n if (done || item.listener !== listener) { return true; }\n done = true;\n return false;\n });\n }\n\n removeAllListeners(): void {\n this._listeners = [];\n }\n\n listeners(): Array {\n return this._listeners.map((i) => i.listener);\n }\n\n listenerCount(): number {\n return this._listeners.length;\n }\n\n run(args: Array): number {\n const listenerCount = this.listenerCount();\n this._listeners = this._listeners.filter((item) => {\n\n const argsCopy = args.slice();\n\n // Call the callback in the next event loop\n setTimeout(() => {\n item.listener.apply(this, argsCopy);\n }, 0);\n\n // Reschedule it if it not \"once\"\n return !(item.once);\n });\n\n return listenerCount;\n }\n\n prepareEvent(event: Event): void {\n }\n\n // Returns the array that will be applied to an emit\n getEmit(event: Event): Array {\n return [ event ];\n }\n}\n\nclass ErrorRunningEvent extends RunningEvent {\n constructor() {\n super(\"error\", null);\n }\n}\n\n\n// @TODO Fragment should inherit Wildcard? and just override getEmit?\n// or have a common abstract super class, with enough constructor\n// options to configure both.\n\n// A Fragment Event will populate all the properties that Wildcard\n// will, and additionally dereference the arguments when emitting\nclass FragmentRunningEvent extends RunningEvent {\n readonly address: string;\n readonly interface: Interface;\n readonly fragment: EventFragment;\n\n constructor(address: string, contractInterface: Interface, fragment: EventFragment, topics?: Array>) {\n const filter: EventFilter = {\n address: address\n }\n\n let topic = contractInterface.getEventTopic(fragment);\n if (topics) {\n if (topic !== topics[0]) { logger.throwArgumentError(\"topic mismatch\", \"topics\", topics); }\n filter.topics = topics.slice();\n } else {\n filter.topics = [ topic ];\n }\n\n super(getEventTag(filter), filter);\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"interface\", contractInterface);\n defineReadOnly(this, \"fragment\", fragment);\n }\n\n\n prepareEvent(event: Event): void {\n super.prepareEvent(event);\n\n event.event = this.fragment.name;\n event.eventSignature = this.fragment.format();\n\n event.decode = (data: BytesLike, topics?: Array) => {\n return this.interface.decodeEventLog(this.fragment, data, topics);\n };\n\n try {\n event.args = this.interface.decodeEventLog(this.fragment, event.data, event.topics);\n } catch (error) {\n event.args = null;\n event.decodeError = error;\n }\n }\n\n getEmit(event: Event): Array {\n const errors = checkResultErrors(event.args);\n if (errors.length) { throw errors[0].error; }\n\n const args = (event.args || []).slice();\n args.push(event);\n return args;\n }\n}\n\n// A Wildcard Event will attempt to populate:\n// - event The name of the event name\n// - eventSignature The full signature of the event\n// - decode A function to decode data and topics\n// - args The decoded data and topics\nclass WildcardRunningEvent extends RunningEvent {\n readonly address: string;\n readonly interface: Interface;\n\n constructor(address: string, contractInterface: Interface) {\n super(\"*\", { address: address });\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"interface\", contractInterface);\n }\n\n prepareEvent(event: Event): void {\n super.prepareEvent(event);\n\n try {\n const parsed = this.interface.parseLog(event);\n event.event = parsed.name;\n event.eventSignature = parsed.signature;\n\n event.decode = (data: BytesLike, topics?: Array) => {\n return this.interface.decodeEventLog(parsed.eventFragment, data, topics);\n };\n\n event.args = parsed.args;\n } catch (error) {\n // No matching event\n }\n }\n}\n\nexport type ContractInterface = string | ReadonlyArray | Interface;\n\ntype InterfaceFunc = (contractInterface: ContractInterface) => Interface;\n\n\nexport class BaseContract {\n readonly address: string;\n readonly interface: Interface;\n\n readonly signer: Signer;\n readonly provider: Provider;\n\n readonly functions: { [ name: string ]: ContractFunction };\n\n readonly callStatic: { [ name: string ]: ContractFunction };\n readonly estimateGas: { [ name: string ]: ContractFunction };\n readonly populateTransaction: { [ name: string ]: ContractFunction };\n\n readonly filters: { [ name: string ]: (...args: Array) => EventFilter };\n\n // This will always be an address. This will only differ from\n // address if an ENS name was used in the constructor\n readonly resolvedAddress: Promise;\n\n // This is only set if the contract was created with a call to deploy\n readonly deployTransaction: TransactionResponse;\n\n _deployedPromise: Promise;\n\n // A list of RunningEvents to track listeners for each event tag\n _runningEvents: { [ eventTag: string ]: RunningEvent };\n\n // Wrapped functions to call emit and allow deregistration from the provider\n _wrappedEmits: { [ eventTag: string ]: (...args: Array) => void };\n\n constructor(addressOrName: string, contractInterface: ContractInterface, signerOrProvider?: Signer | Provider) {\n // @TODO: Maybe still check the addressOrName looks like a valid address or name?\n //address = getAddress(address);\n defineReadOnly(this, \"interface\", getStatic(new.target, \"getInterface\")(contractInterface));\n\n if (signerOrProvider == null) {\n defineReadOnly(this, \"provider\", null);\n defineReadOnly(this, \"signer\", null);\n } else if (Signer.isSigner(signerOrProvider)) {\n defineReadOnly(this, \"provider\", signerOrProvider.provider || null);\n defineReadOnly(this, \"signer\", signerOrProvider);\n } else if (Provider.isProvider(signerOrProvider)) {\n defineReadOnly(this, \"provider\", signerOrProvider);\n defineReadOnly(this, \"signer\", null);\n } else {\n logger.throwArgumentError(\"invalid signer or provider\", \"signerOrProvider\", signerOrProvider);\n }\n\n defineReadOnly(this, \"callStatic\", { });\n defineReadOnly(this, \"estimateGas\", { });\n defineReadOnly(this, \"functions\", { });\n defineReadOnly(this, \"populateTransaction\", { });\n\n defineReadOnly(this, \"filters\", { });\n\n {\n const uniqueFilters: { [ name: string ]: Array } = { };\n Object.keys(this.interface.events).forEach((eventSignature) => {\n const event = this.interface.events[eventSignature];\n defineReadOnly(this.filters, eventSignature, (...args: Array) => {\n return {\n address: this.address,\n topics: this.interface.encodeFilterTopics(event, args)\n }\n });\n if (!uniqueFilters[event.name]) { uniqueFilters[event.name] = [ ]; }\n uniqueFilters[event.name].push(eventSignature);\n });\n\n Object.keys(uniqueFilters).forEach((name) => {\n const filters = uniqueFilters[name];\n if (filters.length === 1) {\n defineReadOnly(this.filters, name, this.filters[filters[0]]);\n } else {\n logger.warn(`Duplicate definition of ${ name } (${ filters.join(\", \")})`);\n }\n });\n }\n\n defineReadOnly(this, \"_runningEvents\", { });\n defineReadOnly(this, \"_wrappedEmits\", { });\n\n if (addressOrName == null) {\n logger.throwArgumentError(\"invalid contract address or ENS name\", \"addressOrName\", addressOrName);\n }\n\n defineReadOnly(this, \"address\", addressOrName);\n if (this.provider) {\n defineReadOnly(this, \"resolvedAddress\", resolveName(this.provider, addressOrName));\n } else {\n try {\n defineReadOnly(this, \"resolvedAddress\", Promise.resolve(getAddress(addressOrName)));\n } catch (error) {\n // Without a provider, we cannot use ENS names\n logger.throwError(\"provider is required to use ENS name as contract address\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new Contract\"\n });\n }\n }\n\n // Swallow bad ENS names to prevent Unhandled Exceptions\n this.resolvedAddress.catch((e) => { });\n\n const uniqueNames: { [ name: string ]: Array } = { };\n const uniqueSignatures: { [ signature: string ]: boolean } = { };\n Object.keys(this.interface.functions).forEach((signature) => {\n const fragment = this.interface.functions[signature];\n\n // Check that the signature is unique; if not the ABI generation has\n // not been cleaned or may be incorrectly generated\n if (uniqueSignatures[signature]) {\n logger.warn(`Duplicate ABI entry for ${ JSON.stringify(signature) }`);\n return;\n }\n uniqueSignatures[signature] = true;\n\n // Track unique names; we only expose bare named functions if they\n // are ambiguous\n {\n const name = fragment.name;\n if (!uniqueNames[`%${ name }`]) { uniqueNames[`%${ name }`] = [ ]; }\n uniqueNames[`%${ name }`].push(signature);\n }\n\n if ((this)[signature] == null) {\n defineReadOnly(this, signature, buildDefault(this, fragment, true));\n }\n\n // We do not collapse simple calls on this bucket, which allows\n // frameworks to safely use this without introspection as well as\n // allows decoding error recovery.\n if (this.functions[signature] == null) {\n defineReadOnly(this.functions, signature, buildDefault(this, fragment, false));\n }\n\n if (this.callStatic[signature] == null) {\n defineReadOnly(this.callStatic, signature, buildCall(this, fragment, true));\n }\n\n if (this.populateTransaction[signature] == null) {\n defineReadOnly(this.populateTransaction, signature, buildPopulate(this, fragment));\n }\n\n if (this.estimateGas[signature] == null) {\n defineReadOnly(this.estimateGas, signature, buildEstimate(this, fragment));\n }\n });\n\n Object.keys(uniqueNames).forEach((name) => {\n // Ambiguous names to not get attached as bare names\n const signatures = uniqueNames[name];\n if (signatures.length > 1) { return; }\n\n // Strip off the leading \"%\" used for prototype protection\n name = name.substring(1);\n\n const signature = signatures[0];\n\n // If overwriting a member property that is null, swallow the error\n try {\n if ((this)[name] == null) {\n defineReadOnly(this, name, (this)[signature]);\n }\n } catch (e) { }\n\n if (this.functions[name] == null) {\n defineReadOnly(this.functions, name, this.functions[signature]);\n }\n\n if (this.callStatic[name] == null) {\n defineReadOnly(this.callStatic, name, this.callStatic[signature]);\n }\n\n if (this.populateTransaction[name] == null) {\n defineReadOnly(this.populateTransaction, name, this.populateTransaction[signature]);\n }\n\n if (this.estimateGas[name] == null) {\n defineReadOnly(this.estimateGas, name, this.estimateGas[signature]);\n }\n });\n }\n\n static getContractAddress(transaction: { from: string, nonce: BigNumberish }): string {\n return getContractAddress(transaction);\n }\n\n static getInterface(contractInterface: ContractInterface): Interface {\n if (Interface.isInterface(contractInterface)) {\n return contractInterface;\n }\n return new Interface(contractInterface);\n }\n\n // @TODO: Allow timeout?\n deployed(): Promise {\n return this._deployed();\n }\n\n _deployed(blockTag?: BlockTag): Promise {\n if (!this._deployedPromise) {\n\n // If we were just deployed, we know the transaction we should occur in\n if (this.deployTransaction) {\n this._deployedPromise = this.deployTransaction.wait().then(() => {\n return this;\n });\n\n } else {\n // @TODO: Once we allow a timeout to be passed in, we will wait\n // up to that many blocks for getCode\n\n // Otherwise, poll for our code to be deployed\n this._deployedPromise = this.provider.getCode(this.address, blockTag).then((code) => {\n if (code === \"0x\") {\n logger.throwError(\"contract not deployed\", Logger.errors.UNSUPPORTED_OPERATION, {\n contractAddress: this.address,\n operation: \"getDeployed\"\n });\n }\n return this;\n });\n }\n }\n\n return this._deployedPromise;\n }\n\n // @TODO:\n // estimateFallback(overrides?: TransactionRequest): Promise\n\n // @TODO:\n // estimateDeploy(bytecode: string, ...args): Promise\n\n fallback(overrides?: TransactionRequest): Promise {\n if (!this.signer) {\n logger.throwError(\"sending a transactions require a signer\", Logger.errors.UNSUPPORTED_OPERATION, { operation: \"sendTransaction(fallback)\" })\n }\n\n const tx: Deferrable = shallowCopy(overrides || {});\n\n [\"from\", \"to\"].forEach(function(key) {\n if ((tx)[key] == null) { return; }\n logger.throwError(\"cannot override \" + key, Logger.errors.UNSUPPORTED_OPERATION, { operation: key })\n });\n\n tx.to = this.resolvedAddress;\n return this.deployed().then(() => {\n return this.signer.sendTransaction(tx);\n });\n }\n\n // Reconnect to a different signer or provider\n connect(signerOrProvider: Signer | Provider | string): Contract {\n if (typeof(signerOrProvider) === \"string\") {\n signerOrProvider = new VoidSigner(signerOrProvider, this.provider);\n }\n\n const contract = new (<{ new(...args: any[]): Contract }>(this.constructor))(this.address, this.interface, signerOrProvider);\n if (this.deployTransaction) {\n defineReadOnly(contract, \"deployTransaction\", this.deployTransaction);\n }\n\n return contract;\n }\n\n // Re-attach to a different on-chain instance of this contract\n attach(addressOrName: string): Contract {\n return new (<{ new(...args: any[]): Contract }>(this.constructor))(addressOrName, this.interface, this.signer || this.provider);\n }\n\n static isIndexed(value: any): value is Indexed {\n return Indexed.isIndexed(value);\n }\n\n private _normalizeRunningEvent(runningEvent: RunningEvent): RunningEvent {\n // Already have an instance of this event running; we can re-use it\n if (this._runningEvents[runningEvent.tag]) {\n return this._runningEvents[runningEvent.tag];\n }\n return runningEvent\n }\n\n private _getRunningEvent(eventName: EventFilter | string): RunningEvent {\n if (typeof(eventName) === \"string\") {\n\n // Listen for \"error\" events (if your contract has an error event, include\n // the full signature to bypass this special event keyword)\n if (eventName === \"error\") {\n return this._normalizeRunningEvent(new ErrorRunningEvent());\n }\n\n // Listen for any event that is registered\n if (eventName === \"event\") {\n return this._normalizeRunningEvent(new RunningEvent(\"event\", null));\n }\n\n // Listen for any event\n if (eventName === \"*\") {\n return this._normalizeRunningEvent(new WildcardRunningEvent(this.address, this.interface));\n }\n\n // Get the event Fragment (throws if ambiguous/unknown event)\n const fragment = this.interface.getEvent(eventName)\n return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment));\n }\n\n // We have topics to filter by...\n if (eventName.topics && eventName.topics.length > 0) {\n\n // Is it a known topichash? (throws if no matching topichash)\n try {\n const topic = eventName.topics[0];\n if (typeof(topic) !== \"string\") {\n throw new Error(\"invalid topic\"); // @TODO: May happen for anonymous events\n }\n const fragment = this.interface.getEvent(topic);\n return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment, eventName.topics));\n } catch (error) { }\n\n // Filter by the unknown topichash\n const filter: EventFilter = {\n address: this.address,\n topics: eventName.topics\n }\n\n return this._normalizeRunningEvent(new RunningEvent(getEventTag(filter), filter));\n }\n\n return this._normalizeRunningEvent(new WildcardRunningEvent(this.address, this.interface));\n }\n\n _checkRunningEvents(runningEvent: RunningEvent): void {\n if (runningEvent.listenerCount() === 0) {\n delete this._runningEvents[runningEvent.tag];\n\n // If we have a poller for this, remove it\n const emit = this._wrappedEmits[runningEvent.tag];\n if (emit && runningEvent.filter) {\n this.provider.off(runningEvent.filter, emit);\n delete this._wrappedEmits[runningEvent.tag];\n }\n }\n }\n\n // Subclasses can override this to gracefully recover\n // from parse errors if they wish\n _wrapEvent(runningEvent: RunningEvent, log: Log, listener: Listener): Event {\n const event = deepCopy(log);\n\n event.removeListener = () => {\n if (!listener) { return; }\n runningEvent.removeListener(listener);\n this._checkRunningEvents(runningEvent);\n };\n\n event.getBlock = () => { return this.provider.getBlock(log.blockHash); }\n event.getTransaction = () => { return this.provider.getTransaction(log.transactionHash); }\n event.getTransactionReceipt = () => { return this.provider.getTransactionReceipt(log.transactionHash); }\n\n // This may throw if the topics and data mismatch the signature\n runningEvent.prepareEvent(event);\n\n return event;\n }\n\n private _addEventListener(runningEvent: RunningEvent, listener: Listener, once: boolean): void {\n if (!this.provider) {\n logger.throwError(\"events require a provider or a signer with a provider\", Logger.errors.UNSUPPORTED_OPERATION, { operation: \"once\" })\n }\n\n runningEvent.addListener(listener, once);\n\n // Track this running event and its listeners (may already be there; but no hard in updating)\n this._runningEvents[runningEvent.tag] = runningEvent;\n\n // If we are not polling the provider, start polling\n if (!this._wrappedEmits[runningEvent.tag]) {\n const wrappedEmit = (log: Log) => {\n let event = this._wrapEvent(runningEvent, log, listener);\n\n // Try to emit the result for the parameterized event...\n if (event.decodeError == null) {\n try {\n const args = runningEvent.getEmit(event);\n this.emit(runningEvent.filter, ...args);\n } catch (error) {\n event.decodeError = error.error;\n }\n }\n\n // Always emit \"event\" for fragment-base events\n if (runningEvent.filter != null) {\n this.emit(\"event\", event);\n }\n\n // Emit \"error\" if there was an error\n if (event.decodeError != null) {\n this.emit(\"error\", event.decodeError, event);\n }\n };\n this._wrappedEmits[runningEvent.tag] = wrappedEmit;\n\n // Special events, like \"error\" do not have a filter\n if (runningEvent.filter != null) {\n this.provider.on(runningEvent.filter, wrappedEmit);\n }\n }\n }\n\n queryFilter(event: EventFilter | string, fromBlockOrBlockhash?: BlockTag | string, toBlock?: BlockTag): Promise> {\n const runningEvent = this._getRunningEvent(event);\n const filter = shallowCopy(runningEvent.filter);\n\n if (typeof(fromBlockOrBlockhash) === \"string\" && isHexString(fromBlockOrBlockhash, 32)) {\n if (toBlock != null) {\n logger.throwArgumentError(\"cannot specify toBlock with blockhash\", \"toBlock\", toBlock);\n }\n (filter).blockHash = fromBlockOrBlockhash;\n } else {\n (filter).fromBlock = ((fromBlockOrBlockhash != null) ? fromBlockOrBlockhash: 0);\n (filter).toBlock = ((toBlock != null) ? toBlock: \"latest\");\n }\n\n return this.provider.getLogs(filter).then((logs) => {\n return logs.map((log) => this._wrapEvent(runningEvent, log, null));\n });\n }\n\n on(event: EventFilter | string, listener: Listener): this {\n this._addEventListener(this._getRunningEvent(event), listener, false);\n return this;\n }\n\n once(event: EventFilter | string, listener: Listener): this {\n this._addEventListener(this._getRunningEvent(event), listener, true);\n return this;\n }\n\n emit(eventName: EventFilter | string, ...args: Array): boolean {\n if (!this.provider) { return false; }\n\n const runningEvent = this._getRunningEvent(eventName);\n const result = (runningEvent.run(args) > 0);\n\n // May have drained all the \"once\" events; check for living events\n this._checkRunningEvents(runningEvent);\n\n return result;\n }\n\n listenerCount(eventName?: EventFilter | string): number {\n if (!this.provider) { return 0; }\n if (eventName == null) {\n return Object.keys(this._runningEvents).reduce((accum, key) => {\n return accum + this._runningEvents[key].listenerCount();\n }, 0);\n }\n return this._getRunningEvent(eventName).listenerCount();\n }\n\n listeners(eventName?: EventFilter | string): Array {\n if (!this.provider) { return []; }\n\n if (eventName == null) {\n const result: Array = [ ];\n for (let tag in this._runningEvents) {\n this._runningEvents[tag].listeners().forEach((listener) => {\n result.push(listener)\n });\n }\n return result;\n }\n\n return this._getRunningEvent(eventName).listeners();\n }\n\n removeAllListeners(eventName?: EventFilter | string): this {\n if (!this.provider) { return this; }\n\n if (eventName == null) {\n for (const tag in this._runningEvents) {\n const runningEvent = this._runningEvents[tag];\n runningEvent.removeAllListeners();\n this._checkRunningEvents(runningEvent);\n }\n return this;\n }\n\n // Delete any listeners\n const runningEvent = this._getRunningEvent(eventName);\n runningEvent.removeAllListeners();\n this._checkRunningEvents(runningEvent);\n\n return this;\n }\n\n off(eventName: EventFilter | string, listener: Listener): this {\n if (!this.provider) { return this; }\n const runningEvent = this._getRunningEvent(eventName);\n runningEvent.removeListener(listener);\n this._checkRunningEvents(runningEvent);\n return this;\n }\n\n removeListener(eventName: EventFilter | string, listener: Listener): this {\n return this.off(eventName, listener);\n }\n\n}\n\nexport class Contract extends BaseContract {\n // The meta-class properties\n readonly [ key: string ]: ContractFunction | any;\n}\n\nexport class ContractFactory {\n\n readonly interface: Interface;\n readonly bytecode: string;\n readonly signer: Signer;\n\n constructor(contractInterface: ContractInterface, bytecode: BytesLike | { object: string }, signer?: Signer) {\n\n let bytecodeHex: string = null;\n\n if (typeof(bytecode) === \"string\") {\n bytecodeHex = bytecode;\n } else if (isBytes(bytecode)) {\n bytecodeHex = hexlify(bytecode);\n } else if (bytecode && typeof(bytecode.object) === \"string\") {\n // Allow the bytecode object from the Solidity compiler\n bytecodeHex = (bytecode).object;\n } else {\n // Crash in the next verification step\n bytecodeHex = \"!\";\n }\n\n // Make sure it is 0x prefixed\n if (bytecodeHex.substring(0, 2) !== \"0x\") { bytecodeHex = \"0x\" + bytecodeHex; }\n\n // Make sure the final result is valid bytecode\n if (!isHexString(bytecodeHex) || (bytecodeHex.length % 2)) {\n logger.throwArgumentError(\"invalid bytecode\", \"bytecode\", bytecode);\n }\n\n // If we have a signer, make sure it is valid\n if (signer && !Signer.isSigner(signer)) {\n logger.throwArgumentError(\"invalid signer\", \"signer\", signer);\n }\n\n defineReadOnly(this, \"bytecode\", bytecodeHex);\n defineReadOnly(this, \"interface\", getStatic(new.target, \"getInterface\")(contractInterface));\n defineReadOnly(this, \"signer\", signer || null);\n }\n\n // @TODO: Future; rename to populateTransaction?\n getDeployTransaction(...args: Array): TransactionRequest {\n let tx: TransactionRequest = { };\n\n // If we have 1 additional argument, we allow transaction overrides\n if (args.length === this.interface.deploy.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n tx = shallowCopy(args.pop());\n for (const key in tx) {\n if (!allowedTransactionKeys[key]) {\n throw new Error(\"unknown transaction override \" + key);\n }\n }\n }\n\n // Do not allow these to be overridden in a deployment transaction\n [\"data\", \"from\", \"to\"].forEach((key) => {\n if ((tx)[key] == null) { return; }\n logger.throwError(\"cannot override \" + key, Logger.errors.UNSUPPORTED_OPERATION, { operation: key })\n });\n\n if (tx.value) {\n const value = BigNumber.from(tx.value);\n if (!value.isZero() && !this.interface.deploy.payable) {\n logger.throwError(\"non-payable constructor cannot override value\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.value\",\n value: tx.value\n });\n }\n }\n\n // Make sure the call matches the constructor signature\n logger.checkArgumentCount(args.length, this.interface.deploy.inputs.length, \" in Contract constructor\");\n\n // Set the data to the bytecode + the encoded constructor arguments\n tx.data = hexlify(concat([\n this.bytecode,\n this.interface.encodeDeploy(args)\n ]));\n\n return tx\n }\n\n async deploy(...args: Array): Promise {\n\n let overrides: any = { };\n\n // If 1 extra parameter was passed in, it contains overrides\n if (args.length === this.interface.deploy.inputs.length + 1) {\n overrides = args.pop();\n }\n\n // Make sure the call matches the constructor signature\n logger.checkArgumentCount(args.length, this.interface.deploy.inputs.length, \" in Contract constructor\");\n\n // Resolve ENS names and promises in the arguments\n const params = await resolveAddresses(this.signer, args, this.interface.deploy.inputs);\n params.push(overrides);\n\n // Get the deployment transaction (with optional overrides)\n const unsignedTx = this.getDeployTransaction(...params);\n\n // Send the deployment transaction\n const tx = await this.signer.sendTransaction(unsignedTx);\n\n const address = getStatic<(tx: TransactionResponse) => string>(this.constructor, \"getContractAddress\")(tx);\n const contract = getStatic<(address: string, contractInterface: ContractInterface, signer?: Signer) => Contract>(this.constructor, \"getContract\")(address, this.interface, this.signer);\n\n // Add the modified wait that wraps events\n addContractWait(contract, tx);\n\n defineReadOnly(contract, \"deployTransaction\", tx);\n return contract;\n }\n\n attach(address: string): Contract {\n return ((this.constructor)).getContract(address, this.interface, this.signer);\n }\n\n connect(signer: Signer) {\n return new (<{ new(...args: any[]): ContractFactory }>(this.constructor))(this.interface, this.bytecode, signer);\n }\n\n static fromSolidity(compilerOutput: any, signer?: Signer): ContractFactory {\n if (compilerOutput == null) {\n logger.throwError(\"missing compiler output\", Logger.errors.MISSING_ARGUMENT, { argument: \"compilerOutput\" });\n }\n\n if (typeof(compilerOutput) === \"string\") {\n compilerOutput = JSON.parse(compilerOutput);\n }\n\n const abi = compilerOutput.abi;\n\n let bytecode: any = null;\n if (compilerOutput.bytecode) {\n bytecode = compilerOutput.bytecode;\n } else if (compilerOutput.evm && compilerOutput.evm.bytecode) {\n bytecode = compilerOutput.evm.bytecode;\n }\n\n return new this(abi, bytecode, signer);\n }\n\n static getInterface(contractInterface: ContractInterface) {\n return Contract.getInterface(contractInterface);\n }\n\n static getContractAddress(tx: { from: string, nonce: BytesLike | BigNumber | number }): string {\n return getContractAddress(tx);\n }\n\n static getContract(address: string, contractInterface: ContractInterface, signer?: Signer): Contract {\n return new Contract(address, contractInterface, signer);\n }\n}\n", "/**\n * var basex = require(\"base-x\");\n *\n * This implementation is heavily based on base-x. The main reason to\n * deviate was to prevent the dependency of Buffer.\n *\n * Contributors:\n *\n * base-x encoding\n * Forked from https://github.com/cryptocoinjs/bs58\n * Originally written by Mike Hearn for BitcoinJ\n * Copyright (c) 2011 Google Inc\n * Ported to JavaScript by Stefan Thomas\n * Merged Buffer refactorings from base58-native by Stephen Pair\n * Copyright (c) 2013 BitPay Inc\n *\n * The MIT License (MIT)\n *\n * Copyright base-x contributors (c) 2016\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n */\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nexport class BaseX {\n readonly alphabet: string;\n readonly base: number;\n\n _alphabetMap: { [ character: string ]: number };\n _leader: string;\n\n constructor(alphabet: string) {\n defineReadOnly(this, \"alphabet\", alphabet);\n defineReadOnly(this, \"base\", alphabet.length);\n\n defineReadOnly(this, \"_alphabetMap\", { });\n defineReadOnly(this, \"_leader\", alphabet.charAt(0));\n\n // pre-compute lookup table\n for (let i = 0; i < alphabet.length; i++) {\n this._alphabetMap[alphabet.charAt(i)] = i;\n }\n }\n\n encode(value: BytesLike): string {\n let source = arrayify(value);\n\n if (source.length === 0) { return \"\"; }\n\n let digits = [ 0 ]\n for (let i = 0; i < source.length; ++i) {\n let carry = source[i];\n for (let j = 0; j < digits.length; ++j) {\n carry += digits[j] << 8;\n digits[j] = carry % this.base;\n carry = (carry / this.base) | 0;\n }\n\n while (carry > 0) {\n digits.push(carry % this.base);\n carry = (carry / this.base) | 0;\n }\n }\n\n let string = \"\"\n\n // deal with leading zeros\n for (let k = 0; source[k] === 0 && k < source.length - 1; ++k) {\n string += this._leader;\n }\n\n // convert digits to a string\n for (let q = digits.length - 1; q >= 0; --q) {\n string += this.alphabet[digits[q]];\n }\n\n return string;\n }\n\n decode(value: string): Uint8Array {\n if (typeof(value) !== \"string\") {\n throw new TypeError(\"Expected String\");\n }\n\n let bytes: Array = [];\n if (value.length === 0) { return new Uint8Array(bytes); }\n\n bytes.push(0);\n for (let i = 0; i < value.length; i++) {\n let byte = this._alphabetMap[value[i]];\n\n if (byte === undefined) {\n throw new Error(\"Non-base\" + this.base + \" character\");\n }\n\n let carry = byte;\n for (let j = 0; j < bytes.length; ++j) {\n carry += bytes[j] * this.base;\n bytes[j] = carry & 0xff;\n carry >>= 8;\n }\n\n while (carry > 0) {\n bytes.push(carry & 0xff);\n carry >>= 8;\n }\n }\n\n // deal with leading zeros\n for (let k = 0; value[k] === this._leader && k < value.length - 1; ++k) {\n bytes.push(0)\n }\n\n return arrayify(new Uint8Array(bytes.reverse()))\n }\n}\n\nconst Base32 = new BaseX(\"abcdefghijklmnopqrstuvwxyz234567\");\nconst Base58 = new BaseX(\"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\");\n\nexport { Base32, Base58 };\n\n//console.log(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\"))\n//console.log(Base58.encode(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\")))\n", "\"use strict\";\n\nimport { pbkdf2Sync as _pbkdf2 } from \"crypto\";\n\nimport { arrayify, BytesLike, hexlify } from \"@ethersproject/bytes\";\n\n\nfunction bufferify(value: BytesLike): Buffer {\n return Buffer.from(arrayify(value));\n}\n\nexport function pbkdf2(password: BytesLike, salt: BytesLike, iterations: number, keylen: number, hashAlgorithm: string): string {\n return hexlify(_pbkdf2(bufferify(password), bufferify(salt), iterations, keylen, hashAlgorithm));\n}\n", "\nexport { pbkdf2 } from \"./pbkdf2\";\n", "export enum SupportedAlgorithm { sha256 = \"sha256\", sha512 = \"sha512\" };\n\n", "export const version = \"sha2/5.7.0\";\n", "\"use strict\";\n\nimport { createHash, createHmac } from \"crypto\";\n\nimport hash from \"hash.js\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nimport { SupportedAlgorithm } from \"./types\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function ripemd160(data: BytesLike): string {\n return \"0x\" + (hash.ripemd160().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function sha256(data: BytesLike): string {\n return \"0x\" + createHash(\"sha256\").update(Buffer.from(arrayify(data))).digest(\"hex\")\n}\n\nexport function sha512(data: BytesLike): string {\n return \"0x\" + createHash(\"sha512\").update(Buffer.from(arrayify(data))).digest(\"hex\")\n}\n\nexport function computeHmac(algorithm: SupportedAlgorithm, key: BytesLike, data: BytesLike): string {\n /* istanbul ignore if */\n if (!SupportedAlgorithm[algorithm]) {\n logger.throwError(\"unsupported algorithm - \" + algorithm, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"computeHmac\",\n algorithm: algorithm\n });\n }\n\n return \"0x\" + createHmac(algorithm, Buffer.from(arrayify(key))).update(Buffer.from(arrayify(data))).digest(\"hex\");\n}\n\n", "import { computeHmac, ripemd160, sha256, sha512 } from \"./sha2\";\n\nimport { SupportedAlgorithm } from \"./types\";\n\nexport {\n computeHmac,\n\n ripemd160,\n\n sha256,\n sha512,\n\n SupportedAlgorithm\n}\n", "export const version = \"wordlists/5.7.0\";\n", "\"use strict\";\n\n// This gets overridden by rollup\nconst exportWordlist = false;\n\nimport { id } from \"@ethersproject/hash\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nexport const logger = new Logger(version);\n\nexport abstract class Wordlist {\n readonly locale: string;\n\n constructor(locale: string) {\n logger.checkAbstract(new.target, Wordlist);\n defineReadOnly(this, \"locale\", locale);\n }\n\n abstract getWord(index: number): string;\n abstract getWordIndex(word: string): number;\n\n // Subclasses may override this\n split(mnemonic: string): Array {\n return mnemonic.toLowerCase().split(/ +/g)\n }\n\n // Subclasses may override this\n join(words: Array): string {\n return words.join(\" \");\n }\n\n static check(wordlist: Wordlist): string {\n const words = [];\n for (let i = 0; i < 2048; i++) {\n const word = wordlist.getWord(i);\n /* istanbul ignore if */\n if (i !== wordlist.getWordIndex(word)) { return \"0x\"; }\n words.push(word);\n }\n return id(words.join(\"\\n\") + \"\\n\");\n }\n\n static register(lang: Wordlist, name?: string): void {\n if (!name) { name = lang.locale; }\n\n /* istanbul ignore if */\n if (exportWordlist) {\n try {\n const anyGlobal = (window as any)\n if (anyGlobal._ethers && anyGlobal._ethers.wordlists) {\n if (!anyGlobal._ethers.wordlists[name]) {\n defineReadOnly(anyGlobal._ethers.wordlists, name, lang);\n }\n }\n } catch (error) { }\n }\n }\n\n}\n\n", "\"use strict\";\n\nimport { Wordlist } from \"./wordlist\";\n\nconst words = \"AbdikaceAbecedaAdresaAgreseAkceAktovkaAlejAlkoholAmputaceAnanasAndulkaAnekdotaAnketaAntikaAnulovatArchaAroganceAsfaltAsistentAspiraceAstmaAstronomAtlasAtletikaAtolAutobusAzylBabkaBachorBacilBaculkaBadatelBagetaBagrBahnoBakterieBaladaBaletkaBalkonBalonekBalvanBalzaBambusBankomatBarbarBaretBarmanBarokoBarvaBaterkaBatohBavlnaBazalkaBazilikaBazukaBednaBeranBesedaBestieBetonBezinkaBezmocBeztakBicyklBidloBiftekBikinyBilanceBiografBiologBitvaBizonBlahobytBlatouchBlechaBleduleBleskBlikatBliznaBlokovatBlouditBludBobekBobrBodlinaBodnoutBohatostBojkotBojovatBokorysBolestBorecBoroviceBotaBoubelBouchatBoudaBouleBouratBoxerBradavkaBramboraBrankaBratrBreptaBriketaBrkoBrlohBronzBroskevBrunetkaBrusinkaBrzdaBrzyBublinaBubnovatBuchtaBuditelBudkaBudovaBufetBujarostBukviceBuldokBulvaBundaBunkrBurzaButikBuvolBuzolaBydletBylinaBytovkaBzukotCapartCarevnaCedrCeduleCejchCejnCelaCelerCelkemCelniceCeninaCennostCenovkaCentrumCenzorCestopisCetkaChalupaChapadloCharitaChataChechtatChemieChichotChirurgChladChlebaChlubitChmelChmuraChobotChocholChodbaCholeraChomoutChopitChorobaChovChrapotChrlitChrtChrupChtivostChudinaChutnatChvatChvilkaChvostChybaChystatChytitCibuleCigaretaCihelnaCihlaCinkotCirkusCisternaCitaceCitrusCizinecCizostClonaCokolivCouvatCtitelCtnostCudnostCuketaCukrCupotCvaknoutCvalCvikCvrkotCyklistaDalekoDarebaDatelDatumDceraDebataDechovkaDecibelDeficitDeflaceDeklDekretDemokratDepreseDerbyDeskaDetektivDikobrazDiktovatDiodaDiplomDiskDisplejDivadloDivochDlahaDlouhoDluhopisDnesDobroDobytekDocentDochutitDodnesDohledDohodaDohraDojemDojniceDokladDokolaDoktorDokumentDolarDolevaDolinaDomaDominantDomluvitDomovDonutitDopadDopisDoplnitDoposudDoprovodDopustitDorazitDorostDortDosahDoslovDostatekDosudDosytaDotazDotekDotknoutDoufatDoutnatDovozceDozaduDoznatDozorceDrahotaDrakDramatikDravecDrazeDrdolDrobnostDrogerieDrozdDrsnostDrtitDrzostDubenDuchovnoDudekDuhaDuhovkaDusitDusnoDutostDvojiceDvorecDynamitEkologEkonomieElektronElipsaEmailEmiseEmoceEmpatieEpizodaEpochaEpopejEposEsejEsenceEskortaEskymoEtiketaEuforieEvoluceExekuceExkurzeExpediceExplozeExportExtraktFackaFajfkaFakultaFanatikFantazieFarmacieFavoritFazoleFederaceFejetonFenkaFialkaFigurantFilozofFiltrFinanceFintaFixaceFjordFlanelFlirtFlotilaFondFosforFotbalFotkaFotonFrakceFreskaFrontaFukarFunkceFyzikaGalejeGarantGenetikaGeologGilotinaGlazuraGlejtGolemGolfistaGotikaGrafGramofonGranuleGrepGrilGrogGroteskaGumaHadiceHadrHalaHalenkaHanbaHanopisHarfaHarpunaHavranHebkostHejkalHejnoHejtmanHektarHelmaHematomHerecHernaHesloHezkyHistorikHladovkaHlasivkyHlavaHledatHlenHlodavecHlohHloupostHltatHlubinaHluchotaHmatHmotaHmyzHnisHnojivoHnoutHoblinaHobojHochHodinyHodlatHodnotaHodovatHojnostHokejHolinkaHolkaHolubHomoleHonitbaHonoraceHoralHordaHorizontHorkoHorlivecHormonHorninaHoroskopHorstvoHospodaHostinaHotovostHoubaHoufHoupatHouskaHovorHradbaHraniceHravostHrazdaHrbolekHrdinaHrdloHrdostHrnekHrobkaHromadaHrotHroudaHrozenHrstkaHrubostHryzatHubenostHubnoutHudbaHukotHumrHusitaHustotaHvozdHybnostHydrantHygienaHymnaHysterikIdylkaIhnedIkonaIluzeImunitaInfekceInflaceInkasoInovaceInspekceInternetInvalidaInvestorInzerceIronieJablkoJachtaJahodaJakmileJakostJalovecJantarJarmarkJaroJasanJasnoJatkaJavorJazykJedinecJedleJednatelJehlanJekotJelenJelitoJemnostJenomJepiceJeseterJevitJezdecJezeroJinakJindyJinochJiskraJistotaJitrniceJizvaJmenovatJogurtJurtaKabaretKabelKabinetKachnaKadetKadidloKahanKajakKajutaKakaoKaktusKalamitaKalhotyKalibrKalnostKameraKamkolivKamnaKanibalKanoeKantorKapalinaKapelaKapitolaKapkaKapleKapotaKaprKapustaKapybaraKaramelKarotkaKartonKasaKatalogKatedraKauceKauzaKavalecKazajkaKazetaKazivostKdekolivKdesiKedlubenKempKeramikaKinoKlacekKladivoKlamKlapotKlasikaKlaunKlecKlenbaKlepatKlesnoutKlidKlimaKlisnaKloboukKlokanKlopaKloubKlubovnaKlusatKluzkostKmenKmitatKmotrKnihaKnotKoaliceKoberecKobkaKoblihaKobylaKocourKohoutKojenecKokosKoktejlKolapsKoledaKolizeKoloKomandoKometaKomikKomnataKomoraKompasKomunitaKonatKonceptKondiceKonecKonfeseKongresKoninaKonkursKontaktKonzervaKopanecKopieKopnoutKoprovkaKorbelKorektorKormidloKoroptevKorpusKorunaKorytoKorzetKosatecKostkaKotelKotletaKotoulKoukatKoupelnaKousekKouzloKovbojKozaKozorohKrabiceKrachKrajinaKralovatKrasopisKravataKreditKrejcarKresbaKrevetaKriketKritikKrizeKrkavecKrmelecKrmivoKrocanKrokKronikaKropitKroupaKrovkaKrtekKruhadloKrupiceKrutostKrvinkaKrychleKryptaKrystalKrytKudlankaKufrKujnostKuklaKulajdaKulichKulkaKulometKulturaKunaKupodivuKurtKurzorKutilKvalitaKvasinkaKvestorKynologKyselinaKytaraKyticeKytkaKytovecKyvadloLabradorLachtanLadnostLaikLakomecLamelaLampaLanovkaLasiceLasoLasturaLatinkaLavinaLebkaLeckdyLedenLedniceLedovkaLedvinaLegendaLegieLegraceLehceLehkostLehnoutLektvarLenochodLentilkaLepenkaLepidloLetadloLetecLetmoLetokruhLevhartLevitaceLevobokLibraLichotkaLidojedLidskostLihovinaLijavecLilekLimetkaLinieLinkaLinoleumListopadLitinaLitovatLobistaLodivodLogikaLogopedLokalitaLoketLomcovatLopataLopuchLordLososLotrLoudalLouhLoukaLouskatLovecLstivostLucernaLuciferLumpLuskLustraceLviceLyraLyrikaLysinaMadamMadloMagistrMahagonMajetekMajitelMajoritaMakakMakoviceMakrelaMalbaMalinaMalovatMalviceMaminkaMandleMankoMarnostMasakrMaskotMasopustMaticeMatrikaMaturitaMazanecMazivoMazlitMazurkaMdlobaMechanikMeditaceMedovinaMelasaMelounMentolkaMetlaMetodaMetrMezeraMigraceMihnoutMihuleMikinaMikrofonMilenecMilimetrMilostMimikaMincovnaMinibarMinometMinulostMiskaMistrMixovatMladostMlhaMlhovinaMlokMlsatMluvitMnichMnohemMobilMocnostModelkaModlitbaMohylaMokroMolekulaMomentkaMonarchaMonoklMonstrumMontovatMonzunMosazMoskytMostMotivaceMotorkaMotykaMouchaMoudrostMozaikaMozekMozolMramorMravenecMrkevMrtvolaMrzetMrzutostMstitelMudrcMuflonMulatMumieMuniceMusetMutaceMuzeumMuzikantMyslivecMzdaNabouratNachytatNadaceNadbytekNadhozNadobroNadpisNahlasNahnatNahodileNahraditNaivitaNajednouNajistoNajmoutNaklonitNakonecNakrmitNalevoNamazatNamluvitNanometrNaokoNaopakNaostroNapadatNapevnoNaplnitNapnoutNaposledNaprostoNaroditNarubyNarychloNasaditNasekatNaslepoNastatNatolikNavenekNavrchNavzdoryNazvatNebeNechatNeckyNedalekoNedbatNeduhNegaceNehetNehodaNejenNejprveNeklidNelibostNemilostNemocNeochotaNeonkaNepokojNerostNervNesmyslNesouladNetvorNeuronNevinaNezvykleNicotaNijakNikamNikdyNiklNikterakNitroNoclehNohaviceNominaceNoraNorekNositelNosnostNouzeNovinyNovotaNozdraNudaNudleNugetNutitNutnostNutrieNymfaObalObarvitObavaObdivObecObehnatObejmoutObezitaObhajobaObilniceObjasnitObjektObklopitOblastOblekOblibaOblohaObludaObnosObohatitObojekOboutObrazecObrnaObrubaObrysObsahObsluhaObstaratObuvObvazObvinitObvodObvykleObyvatelObzorOcasOcelOcenitOchladitOchotaOchranaOcitnoutOdbojOdbytOdchodOdcizitOdebratOdeslatOdevzdatOdezvaOdhadceOdhoditOdjetOdjinudOdkazOdkoupitOdlivOdlukaOdmlkaOdolnostOdpadOdpisOdploutOdporOdpustitOdpykatOdrazkaOdsouditOdstupOdsunOdtokOdtudOdvahaOdvetaOdvolatOdvracetOdznakOfinaOfsajdOhlasOhniskoOhradaOhrozitOhryzekOkapOkeniceOklikaOknoOkouzlitOkovyOkrasaOkresOkrsekOkruhOkupantOkurkaOkusitOlejninaOlizovatOmakOmeletaOmezitOmladinaOmlouvatOmluvaOmylOnehdyOpakovatOpasekOperaceOpiceOpilostOpisovatOporaOpoziceOpravduOprotiOrbitalOrchestrOrgieOrliceOrlojOrtelOsadaOschnoutOsikaOsivoOslavaOslepitOslnitOslovitOsnovaOsobaOsolitOspalecOstenOstrahaOstudaOstychOsvojitOteplitOtiskOtopOtrhatOtrlostOtrokOtrubyOtvorOvanoutOvarOvesOvlivnitOvoceOxidOzdobaPachatelPacientPadouchPahorekPaktPalandaPalecPalivoPalubaPamfletPamlsekPanenkaPanikaPannaPanovatPanstvoPantoflePaprikaParketaParodiePartaParukaParybaPasekaPasivitaPastelkaPatentPatronaPavoukPaznehtPazourekPeckaPedagogPejsekPekloPelotonPenaltaPendrekPenzePeriskopPeroPestrostPetardaPeticePetrolejPevninaPexesoPianistaPihaPijavicePiklePiknikPilinaPilnostPilulkaPinzetaPipetaPisatelPistolePitevnaPivnicePivovarPlacentaPlakatPlamenPlanetaPlastikaPlatitPlavidloPlazPlechPlemenoPlentaPlesPletivoPlevelPlivatPlnitPlnoPlochaPlodinaPlombaPloutPlukPlynPobavitPobytPochodPocitPoctivecPodatPodcenitPodepsatPodhledPodivitPodkladPodmanitPodnikPodobaPodporaPodrazPodstataPodvodPodzimPoeziePohankaPohnutkaPohovorPohromaPohybPointaPojistkaPojmoutPokazitPoklesPokojPokrokPokutaPokynPolednePolibekPolknoutPolohaPolynomPomaluPominoutPomlkaPomocPomstaPomysletPonechatPonorkaPonurostPopadatPopelPopisekPoplachPoprositPopsatPopudPoradcePorcePorodPoruchaPoryvPosaditPosedPosilaPoskokPoslanecPosouditPospoluPostavaPosudekPosypPotahPotkanPotleskPotomekPotravaPotupaPotvoraPoukazPoutoPouzdroPovahaPovidlaPovlakPovozPovrchPovstatPovykPovzdechPozdravPozemekPoznatekPozorPozvatPracovatPrahoryPraktikaPralesPraotecPraporekPrasePravdaPrincipPrknoProbuditProcentoProdejProfeseProhraProjektProlomitPromilePronikatPropadProrokProsbaProtonProutekProvazPrskavkaPrstenPrudkostPrutPrvekPrvohoryPsanecPsovodPstruhPtactvoPubertaPuchPudlPukavecPuklinaPukrlePultPumpaPuncPupenPusaPusinkaPustinaPutovatPutykaPyramidaPyskPytelRacekRachotRadiaceRadniceRadonRaftRagbyRaketaRakovinaRamenoRampouchRandeRarachRaritaRasovnaRastrRatolestRazanceRazidloReagovatReakceReceptRedaktorReferentReflexRejnokReklamaRekordRekrutRektorReputaceRevizeRevmaRevolverRezervaRiskovatRizikoRobotikaRodokmenRohovkaRokleRokokoRomanetoRopovodRopuchaRorejsRosolRostlinaRotmistrRotopedRotundaRoubenkaRouchoRoupRouraRovinaRovniceRozborRozchodRozdatRozeznatRozhodceRozinkaRozjezdRozkazRozlohaRozmarRozpadRozruchRozsahRoztokRozumRozvodRubrikaRuchadloRukaviceRukopisRybaRybolovRychlostRydloRypadloRytinaRyzostSadistaSahatSakoSamecSamizdatSamotaSanitkaSardinkaSasankaSatelitSazbaSazeniceSborSchovatSebrankaSeceseSedadloSedimentSedloSehnatSejmoutSekeraSektaSekundaSekvojeSemenoSenoServisSesaditSeshoraSeskokSeslatSestraSesuvSesypatSetbaSetinaSetkatSetnoutSetrvatSeverSeznamShodaShrnoutSifonSilniceSirkaSirotekSirupSituaceSkafandrSkaliskoSkanzenSkautSkeptikSkicaSkladbaSkleniceSkloSkluzSkobaSkokanSkoroSkriptaSkrzSkupinaSkvostSkvrnaSlabikaSladidloSlaninaSlastSlavnostSledovatSlepecSlevaSlezinaSlibSlinaSlizniceSlonSloupekSlovoSluchSluhaSlunceSlupkaSlzaSmaragdSmetanaSmilstvoSmlouvaSmogSmradSmrkSmrtkaSmutekSmyslSnadSnahaSnobSobotaSochaSodovkaSokolSopkaSotvaSoubojSoucitSoudceSouhlasSouladSoumrakSoupravaSousedSoutokSouvisetSpalovnaSpasitelSpisSplavSpodekSpojenecSpoluSponzorSpornostSpoustaSprchaSpustitSrandaSrazSrdceSrnaSrnecSrovnatSrpenSrstSrubStaniceStarostaStatikaStavbaStehnoStezkaStodolaStolekStopaStornoStoupatStrachStresStrhnoutStromStrunaStudnaStupniceStvolStykSubjektSubtropySucharSudostSuknoSundatSunoutSurikataSurovinaSvahSvalstvoSvetrSvatbaSvazekSvisleSvitekSvobodaSvodidloSvorkaSvrabSykavkaSykotSynekSynovecSypatSypkostSyrovostSyselSytostTabletkaTabuleTahounTajemnoTajfunTajgaTajitTajnostTaktikaTamhleTamponTancovatTanecTankerTapetaTaveninaTazatelTechnikaTehdyTekutinaTelefonTemnotaTendenceTenistaTenorTeplotaTepnaTeprveTerapieTermoskaTextilTichoTiskopisTitulekTkadlecTkaninaTlapkaTleskatTlukotTlupaTmelToaletaTopinkaTopolTorzoTouhaToulecTradiceTraktorTrampTrasaTraverzaTrefitTrestTrezorTrhavinaTrhlinaTrochuTrojiceTroskaTroubaTrpceTrpitelTrpkostTrubecTruchlitTruhliceTrusTrvatTudyTuhnoutTuhostTundraTuristaTurnajTuzemskoTvarohTvorbaTvrdostTvrzTygrTykevUbohostUbozeUbratUbrousekUbrusUbytovnaUchoUctivostUdivitUhraditUjednatUjistitUjmoutUkazatelUklidnitUklonitUkotvitUkrojitUliceUlitaUlovitUmyvadloUnavitUniformaUniknoutUpadnoutUplatnitUplynoutUpoutatUpravitUranUrazitUsednoutUsilovatUsmrtitUsnadnitUsnoutUsouditUstlatUstrnoutUtahovatUtkatUtlumitUtonoutUtopenecUtrousitUvalitUvolnitUvozovkaUzdravitUzelUzeninaUzlinaUznatVagonValchaValounVanaVandalVanilkaVaranVarhanyVarovatVcelkuVchodVdovaVedroVegetaceVejceVelbloudVeletrhVelitelVelmocVelrybaVenkovVerandaVerzeVeselkaVeskrzeVesniceVespoduVestaVeterinaVeverkaVibraceVichrVideohraVidinaVidleVilaViniceVisetVitalitaVizeVizitkaVjezdVkladVkusVlajkaVlakVlasecVlevoVlhkostVlivVlnovkaVloupatVnucovatVnukVodaVodivostVodoznakVodstvoVojenskyVojnaVojskoVolantVolbaVolitVolnoVoskovkaVozidloVozovnaVpravoVrabecVracetVrahVrataVrbaVrcholekVrhatVrstvaVrtuleVsaditVstoupitVstupVtipVybavitVybratVychovatVydatVydraVyfotitVyhledatVyhnoutVyhoditVyhraditVyhubitVyjasnitVyjetVyjmoutVyklopitVykonatVylekatVymazatVymezitVymizetVymysletVynechatVynikatVynutitVypadatVyplatitVypravitVypustitVyrazitVyrovnatVyrvatVyslovitVysokoVystavitVysunoutVysypatVytasitVytesatVytratitVyvinoutVyvolatVyvrhelVyzdobitVyznatVzaduVzbuditVzchopitVzdorVzduchVzdychatVzestupVzhledemVzkazVzlykatVznikVzorekVzpouraVztahVztekXylofonZabratZabydletZachovatZadarmoZadusitZafoukatZahltitZahoditZahradaZahynoutZajatecZajetZajistitZaklepatZakoupitZalepitZamezitZamotatZamysletZanechatZanikatZaplatitZapojitZapsatZarazitZastavitZasunoutZatajitZatemnitZatknoutZaujmoutZavalitZaveletZavinitZavolatZavrtatZazvonitZbavitZbrusuZbudovatZbytekZdalekaZdarmaZdatnostZdivoZdobitZdrojZdvihZdymadloZeleninaZemanZeminaZeptatZezaduZezdolaZhatitZhltnoutZhlubokaZhotovitZhrubaZimaZimniceZjemnitZklamatZkoumatZkratkaZkumavkaZlatoZlehkaZlobaZlomZlostZlozvykZmapovatZmarZmatekZmijeZmizetZmocnitZmodratZmrzlinaZmutovatZnakZnalostZnamenatZnovuZobrazitZotavitZoubekZoufaleZploditZpomalitZpravaZprostitZprudkaZprvuZradaZranitZrcadloZrnitostZrnoZrovnaZrychlitZrzavostZtichaZtratitZubovinaZubrZvednoutZvenkuZveselaZvonZvratZvukovodZvyk\";\n\nlet wordlist: Array = null;\n\nfunction loadWords(lang: Wordlist): void {\n if (wordlist != null) { return; }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \");\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0x25f44555f4af25b51a711136e1c7d6e50ce9f8917d39d6b1f076b2bb4d2fac1a\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for en (English) FAILED\");\n }\n}\n\nclass LangCz extends Wordlist {\n constructor() {\n super(\"cz\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n}\n\nconst langCz = new LangCz();\nWordlist.register(langCz);\n\nexport { langCz };\n\n", "\"use strict\";\n\nimport { Wordlist } from \"./wordlist\";\n\n\nconst words = \"AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo\";\n\nlet wordlist: Array = null;\n\n\nfunction loadWords(lang: Wordlist): void {\n if (wordlist != null) { return; }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \");\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for en (English) FAILED\");\n }\n}\n\nclass LangEn extends Wordlist {\n constructor() {\n super(\"en\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n}\n\nconst langEn = new LangEn();\nWordlist.register(langEn);\n\nexport { langEn };\n", "\"use strict\";\n\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { logger, Wordlist } from \"./wordlist\";\n\n\nconst words = \"A/bacoAbdomenAbejaAbiertoAbogadoAbonoAbortoAbrazoAbrirAbueloAbusoAcabarAcademiaAccesoAccio/nAceiteAcelgaAcentoAceptarA/cidoAclararAcne/AcogerAcosoActivoActoActrizActuarAcudirAcuerdoAcusarAdictoAdmitirAdoptarAdornoAduanaAdultoAe/reoAfectarAficio/nAfinarAfirmarA/gilAgitarAgoni/aAgostoAgotarAgregarAgrioAguaAgudoA/guilaAgujaAhogoAhorroAireAislarAjedrezAjenoAjusteAlacra/nAlambreAlarmaAlbaA/lbumAlcaldeAldeaAlegreAlejarAlertaAletaAlfilerAlgaAlgodo/nAliadoAlientoAlivioAlmaAlmejaAlmi/barAltarAltezaAltivoAltoAlturaAlumnoAlzarAmableAmanteAmapolaAmargoAmasarA/mbarA/mbitoAmenoAmigoAmistadAmorAmparoAmplioAnchoAncianoAnclaAndarAnde/nAnemiaA/nguloAnilloA/nimoAni/sAnotarAntenaAntiguoAntojoAnualAnularAnuncioA~adirA~ejoA~oApagarAparatoApetitoApioAplicarApodoAporteApoyoAprenderAprobarApuestaApuroAradoAra~aArarA/rbitroA/rbolArbustoArchivoArcoArderArdillaArduoA/reaA/ridoAriesArmoni/aArne/sAromaArpaArpo/nArregloArrozArrugaArteArtistaAsaAsadoAsaltoAscensoAsegurarAseoAsesorAsientoAsiloAsistirAsnoAsombroA/speroAstillaAstroAstutoAsumirAsuntoAtajoAtaqueAtarAtentoAteoA/ticoAtletaA/tomoAtraerAtrozAtu/nAudazAudioAugeAulaAumentoAusenteAutorAvalAvanceAvaroAveAvellanaAvenaAvestruzAvio/nAvisoAyerAyudaAyunoAzafra/nAzarAzoteAzu/carAzufreAzulBabaBaborBacheBahi/aBaileBajarBalanzaBalco/nBaldeBambu/BancoBandaBa~oBarbaBarcoBarnizBarroBa/sculaBasto/nBasuraBatallaBateri/aBatirBatutaBau/lBazarBebe/BebidaBelloBesarBesoBestiaBichoBienBingoBlancoBloqueBlusaBoaBobinaBoboBocaBocinaBodaBodegaBoinaBolaBoleroBolsaBombaBondadBonitoBonoBonsa/iBordeBorrarBosqueBoteBoti/nBo/vedaBozalBravoBrazoBrechaBreveBrilloBrincoBrisaBrocaBromaBronceBroteBrujaBruscoBrutoBuceoBucleBuenoBueyBufandaBufo/nBu/hoBuitreBultoBurbujaBurlaBurroBuscarButacaBuzo/nCaballoCabezaCabinaCabraCacaoCada/verCadenaCaerCafe/Cai/daCaima/nCajaCajo/nCalCalamarCalcioCaldoCalidadCalleCalmaCalorCalvoCamaCambioCamelloCaminoCampoCa/ncerCandilCanelaCanguroCanicaCantoCa~aCa~o/nCaobaCaosCapazCapita/nCapoteCaptarCapuchaCaraCarbo/nCa/rcelCaretaCargaCari~oCarneCarpetaCarroCartaCasaCascoCaseroCaspaCastorCatorceCatreCaudalCausaCazoCebollaCederCedroCeldaCe/lebreCelosoCe/lulaCementoCenizaCentroCercaCerdoCerezaCeroCerrarCertezaCe/spedCetroChacalChalecoChampu/ChanclaChapaCharlaChicoChisteChivoChoqueChozaChuletaChuparCiclo/nCiegoCieloCienCiertoCifraCigarroCimaCincoCineCintaCipre/sCircoCiruelaCisneCitaCiudadClamorClanClaroClaseClaveClienteClimaCli/nicaCobreCoccio/nCochinoCocinaCocoCo/digoCodoCofreCogerCoheteCoji/nCojoColaColchaColegioColgarColinaCollarColmoColumnaCombateComerComidaCo/modoCompraCondeConejoCongaConocerConsejoContarCopaCopiaCorazo/nCorbataCorchoCordo/nCoronaCorrerCoserCosmosCostaCra/neoCra/terCrearCrecerCrei/doCremaCri/aCrimenCriptaCrisisCromoCro/nicaCroquetaCrudoCruzCuadroCuartoCuatroCuboCubrirCucharaCuelloCuentoCuerdaCuestaCuevaCuidarCulebraCulpaCultoCumbreCumplirCunaCunetaCuotaCupo/nCu/pulaCurarCuriosoCursoCurvaCutisDamaDanzaDarDardoDa/tilDeberDe/bilDe/cadaDecirDedoDefensaDefinirDejarDelfi/nDelgadoDelitoDemoraDensoDentalDeporteDerechoDerrotaDesayunoDeseoDesfileDesnudoDestinoDesvi/oDetalleDetenerDeudaDi/aDiabloDiademaDiamanteDianaDiarioDibujoDictarDienteDietaDiezDifi/cilDignoDilemaDiluirDineroDirectoDirigirDiscoDise~oDisfrazDivaDivinoDobleDoceDolorDomingoDonDonarDoradoDormirDorsoDosDosisDrago/nDrogaDuchaDudaDueloDue~oDulceDu/oDuqueDurarDurezaDuroE/banoEbrioEcharEcoEcuadorEdadEdicio/nEdificioEditorEducarEfectoEficazEjeEjemploElefanteElegirElementoElevarElipseE/liteElixirElogioEludirEmbudoEmitirEmocio/nEmpateEmpe~oEmpleoEmpresaEnanoEncargoEnchufeEnci/aEnemigoEneroEnfadoEnfermoEnga~oEnigmaEnlaceEnormeEnredoEnsayoEnse~arEnteroEntrarEnvaseEnvi/oE/pocaEquipoErizoEscalaEscenaEscolarEscribirEscudoEsenciaEsferaEsfuerzoEspadaEspejoEspi/aEsposaEspumaEsqui/EstarEsteEstiloEstufaEtapaEternoE/ticaEtniaEvadirEvaluarEventoEvitarExactoExamenExcesoExcusaExentoExigirExilioExistirE/xitoExpertoExplicarExponerExtremoFa/bricaFa/bulaFachadaFa/cilFactorFaenaFajaFaldaFalloFalsoFaltarFamaFamiliaFamosoFarao/nFarmaciaFarolFarsaFaseFatigaFaunaFavorFaxFebreroFechaFelizFeoFeriaFerozFe/rtilFervorFesti/nFiableFianzaFiarFibraFiccio/nFichaFideoFiebreFielFieraFiestaFiguraFijarFijoFilaFileteFilialFiltroFinFincaFingirFinitoFirmaFlacoFlautaFlechaFlorFlotaFluirFlujoFlu/orFobiaFocaFogataFogo/nFolioFolletoFondoFormaForroFortunaForzarFosaFotoFracasoFra/gilFranjaFraseFraudeFrei/rFrenoFresaFri/oFritoFrutaFuegoFuenteFuerzaFugaFumarFuncio/nFundaFurgo/nFuriaFusilFu/tbolFuturoGacelaGafasGaitaGajoGalaGaleri/aGalloGambaGanarGanchoGangaGansoGarajeGarzaGasolinaGastarGatoGavila/nGemeloGemirGenGe/neroGenioGenteGeranioGerenteGermenGestoGiganteGimnasioGirarGiroGlaciarGloboGloriaGolGolfoGolosoGolpeGomaGordoGorilaGorraGotaGoteoGozarGradaGra/ficoGranoGrasaGratisGraveGrietaGrilloGripeGrisGritoGrosorGru/aGruesoGrumoGrupoGuanteGuapoGuardiaGuerraGui/aGui~oGuionGuisoGuitarraGusanoGustarHaberHa/bilHablarHacerHachaHadaHallarHamacaHarinaHazHaza~aHebillaHebraHechoHeladoHelioHembraHerirHermanoHe/roeHervirHieloHierroHi/gadoHigieneHijoHimnoHistoriaHocicoHogarHogueraHojaHombreHongoHonorHonraHoraHormigaHornoHostilHoyoHuecoHuelgaHuertaHuesoHuevoHuidaHuirHumanoHu/medoHumildeHumoHundirHuraca/nHurtoIconoIdealIdiomaI/doloIglesiaIglu/IgualIlegalIlusio/nImagenIma/nImitarImparImperioImponerImpulsoIncapazI/ndiceInerteInfielInformeIngenioInicioInmensoInmuneInnatoInsectoInstanteIntere/sI/ntimoIntuirInu/tilInviernoIraIrisIroni/aIslaIsloteJabali/Jabo/nJamo/nJarabeJardi/nJarraJaulaJazmi/nJefeJeringaJineteJornadaJorobaJovenJoyaJuergaJuevesJuezJugadorJugoJugueteJuicioJuncoJunglaJunioJuntarJu/piterJurarJustoJuvenilJuzgarKiloKoalaLabioLacioLacraLadoLadro/nLagartoLa/grimaLagunaLaicoLamerLa/minaLa/mparaLanaLanchaLangostaLanzaLa/pizLargoLarvaLa/stimaLataLa/texLatirLaurelLavarLazoLealLeccio/nLecheLectorLeerLegio/nLegumbreLejanoLenguaLentoLe~aLeo/nLeopardoLesio/nLetalLetraLeveLeyendaLibertadLibroLicorLi/derLidiarLienzoLigaLigeroLimaLi/miteLimo/nLimpioLinceLindoLi/neaLingoteLinoLinternaLi/quidoLisoListaLiteraLitioLitroLlagaLlamaLlantoLlaveLlegarLlenarLlevarLlorarLloverLluviaLoboLocio/nLocoLocuraLo/gicaLogroLombrizLomoLonjaLoteLuchaLucirLugarLujoLunaLunesLupaLustroLutoLuzMacetaMachoMaderaMadreMaduroMaestroMafiaMagiaMagoMai/zMaldadMaletaMallaMaloMama/MamboMamutMancoMandoManejarMangaManiqui/ManjarManoMansoMantaMa~anaMapaMa/quinaMarMarcoMareaMarfilMargenMaridoMa/rmolMarro/nMartesMarzoMasaMa/scaraMasivoMatarMateriaMatizMatrizMa/ximoMayorMazorcaMechaMedallaMedioMe/dulaMejillaMejorMelenaMelo/nMemoriaMenorMensajeMenteMenu/MercadoMerengueMe/ritoMesMeso/nMetaMeterMe/todoMetroMezclaMiedoMielMiembroMigaMilMilagroMilitarMillo/nMimoMinaMineroMi/nimoMinutoMiopeMirarMisaMiseriaMisilMismoMitadMitoMochilaMocio/nModaModeloMohoMojarMoldeMolerMolinoMomentoMomiaMonarcaMonedaMonjaMontoMo~oMoradaMorderMorenoMorirMorroMorsaMortalMoscaMostrarMotivoMoverMo/vilMozoMuchoMudarMuebleMuelaMuerteMuestraMugreMujerMulaMuletaMultaMundoMu~ecaMuralMuroMu/sculoMuseoMusgoMu/sicaMusloNa/carNacio/nNadarNaipeNaranjaNarizNarrarNasalNatalNativoNaturalNa/useaNavalNaveNavidadNecioNe/ctarNegarNegocioNegroNeo/nNervioNetoNeutroNevarNeveraNichoNidoNieblaNietoNi~ezNi~oNi/tidoNivelNoblezaNocheNo/minaNoriaNormaNorteNotaNoticiaNovatoNovelaNovioNubeNucaNu/cleoNudilloNudoNueraNueveNuezNuloNu/meroNutriaOasisObesoObispoObjetoObraObreroObservarObtenerObvioOcaOcasoOce/anoOchentaOchoOcioOcreOctavoOctubreOcultoOcuparOcurrirOdiarOdioOdiseaOesteOfensaOfertaOficioOfrecerOgroOi/doOi/rOjoOlaOleadaOlfatoOlivoOllaOlmoOlorOlvidoOmbligoOndaOnzaOpacoOpcio/nO/peraOpinarOponerOptarO/pticaOpuestoOracio/nOradorOralO/rbitaOrcaOrdenOrejaO/rganoOrgi/aOrgulloOrienteOrigenOrillaOroOrquestaOrugaOsadi/aOscuroOseznoOsoOstraOto~oOtroOvejaO/vuloO/xidoOxi/genoOyenteOzonoPactoPadrePaellaPa/ginaPagoPai/sPa/jaroPalabraPalcoPaletaPa/lidoPalmaPalomaPalparPanPanalPa/nicoPanteraPa~ueloPapa/PapelPapillaPaquetePararParcelaParedParirParoPa/rpadoParquePa/rrafoPartePasarPaseoPasio/nPasoPastaPataPatioPatriaPausaPautaPavoPayasoPeato/nPecadoPeceraPechoPedalPedirPegarPeinePelarPelda~oPeleaPeligroPellejoPeloPelucaPenaPensarPe~o/nPeo/nPeorPepinoPeque~oPeraPerchaPerderPerezaPerfilPericoPerlaPermisoPerroPersonaPesaPescaPe/simoPesta~aPe/taloPetro/leoPezPezu~aPicarPicho/nPiePiedraPiernaPiezaPijamaPilarPilotoPimientaPinoPintorPinzaPi~aPiojoPipaPirataPisarPiscinaPisoPistaPito/nPizcaPlacaPlanPlataPlayaPlazaPleitoPlenoPlomoPlumaPluralPobrePocoPoderPodioPoemaPoesi/aPoetaPolenPolici/aPolloPolvoPomadaPomeloPomoPompaPonerPorcio/nPortalPosadaPoseerPosiblePostePotenciaPotroPozoPradoPrecozPreguntaPremioPrensaPresoPrevioPrimoPri/ncipePrisio/nPrivarProaProbarProcesoProductoProezaProfesorProgramaProlePromesaProntoPropioPro/ximoPruebaPu/blicoPucheroPudorPuebloPuertaPuestoPulgaPulirPulmo/nPulpoPulsoPumaPuntoPu~alPu~oPupaPupilaPure/QuedarQuejaQuemarQuererQuesoQuietoQui/micaQuinceQuitarRa/banoRabiaRaboRacio/nRadicalRai/zRamaRampaRanchoRangoRapazRa/pidoRaptoRasgoRaspaRatoRayoRazaRazo/nReaccio/nRealidadReba~oReboteRecaerRecetaRechazoRecogerRecreoRectoRecursoRedRedondoReducirReflejoReformaRefra/nRefugioRegaloRegirReglaRegresoRehe/nReinoRei/rRejaRelatoRelevoRelieveRellenoRelojRemarRemedioRemoRencorRendirRentaRepartoRepetirReposoReptilResRescateResinaRespetoRestoResumenRetiroRetornoRetratoReunirReve/sRevistaReyRezarRicoRiegoRiendaRiesgoRifaRi/gidoRigorRinco/nRi~o/nRi/oRiquezaRisaRitmoRitoRizoRobleRoceRociarRodarRodeoRodillaRoerRojizoRojoRomeroRomperRonRoncoRondaRopaRoperoRosaRoscaRostroRotarRubi/RuborRudoRuedaRugirRuidoRuinaRuletaRuloRumboRumorRupturaRutaRutinaSa/badoSaberSabioSableSacarSagazSagradoSalaSaldoSaleroSalirSalmo/nSalo/nSalsaSaltoSaludSalvarSambaSancio/nSandi/aSanearSangreSanidadSanoSantoSapoSaqueSardinaSarte/nSastreSata/nSaunaSaxofo/nSeccio/nSecoSecretoSectaSedSeguirSeisSelloSelvaSemanaSemillaSendaSensorSe~alSe~orSepararSepiaSequi/aSerSerieSermo/nServirSesentaSesio/nSetaSetentaSeveroSexoSextoSidraSiestaSieteSigloSignoSi/labaSilbarSilencioSillaSi/mboloSimioSirenaSistemaSitioSituarSobreSocioSodioSolSolapaSoldadoSoledadSo/lidoSoltarSolucio/nSombraSondeoSonidoSonoroSonrisaSopaSoplarSoporteSordoSorpresaSorteoSoste/nSo/tanoSuaveSubirSucesoSudorSuegraSueloSue~oSuerteSufrirSujetoSulta/nSumarSuperarSuplirSuponerSupremoSurSurcoSure~oSurgirSustoSutilTabacoTabiqueTablaTabu/TacoTactoTajoTalarTalcoTalentoTallaTalo/nTama~oTamborTangoTanqueTapaTapeteTapiaTapo/nTaquillaTardeTareaTarifaTarjetaTarotTarroTartaTatuajeTauroTazaTazo/nTeatroTechoTeclaTe/cnicaTejadoTejerTejidoTelaTele/fonoTemaTemorTemploTenazTenderTenerTenisTensoTeori/aTerapiaTercoTe/rminoTernuraTerrorTesisTesoroTestigoTeteraTextoTezTibioTiburo/nTiempoTiendaTierraTiesoTigreTijeraTildeTimbreTi/midoTimoTintaTi/oTi/picoTipoTiraTiro/nTita/nTi/tereTi/tuloTizaToallaTobilloTocarTocinoTodoTogaToldoTomarTonoTontoToparTopeToqueTo/raxToreroTormentaTorneoToroTorpedoTorreTorsoTortugaTosToscoToserTo/xicoTrabajoTractorTraerTra/ficoTragoTrajeTramoTranceTratoTraumaTrazarTre/bolTreguaTreintaTrenTreparTresTribuTrigoTripaTristeTriunfoTrofeoTrompaTroncoTropaTroteTrozoTrucoTruenoTrufaTuberi/aTuboTuertoTumbaTumorTu/nelTu/nicaTurbinaTurismoTurnoTutorUbicarU/lceraUmbralUnidadUnirUniversoUnoUntarU~aUrbanoUrbeUrgenteUrnaUsarUsuarioU/tilUtopi/aUvaVacaVaci/oVacunaVagarVagoVainaVajillaValeVa/lidoValleValorVa/lvulaVampiroVaraVariarVaro/nVasoVecinoVectorVehi/culoVeinteVejezVelaVeleroVelozVenaVencerVendaVenenoVengarVenirVentaVenusVerVeranoVerboVerdeVeredaVerjaVersoVerterVi/aViajeVibrarVicioVi/ctimaVidaVi/deoVidrioViejoViernesVigorVilVillaVinagreVinoVi~edoVioli/nViralVirgoVirtudVisorVi/speraVistaVitaminaViudoVivazViveroVivirVivoVolca/nVolumenVolverVorazVotarVotoVozVueloVulgarYacerYateYeguaYemaYernoYesoYodoYogaYogurZafiroZanjaZapatoZarzaZonaZorroZumoZurdo\";\n\nconst lookup: { [word: string]: number } = {};\nlet wordlist: Array = null;\n\nfunction dropDiacritic(word: string): string {\n logger.checkNormalize();\n return toUtf8String(Array.prototype.filter.call(toUtf8Bytes(word.normalize(\"NFD\").toLowerCase()), (c: number) => {\n return ((c >= 65 && c <= 90) || (c >= 97 && c <= 123));\n }));\n}\n\nfunction expand(word: string): string {\n const output: Array = [];\n Array.prototype.forEach.call(toUtf8Bytes(word), (c: number) => {\n // Acute accent\n if (c === 47) {\n output.push(204);\n output.push(129);\n // n-tilde\n } else if (c === 126) {\n output.push(110);\n output.push(204);\n output.push(131);\n } else {\n output.push(c);\n }\n });\n\n return toUtf8String(output);\n}\n\nfunction loadWords(lang: Wordlist): void {\n if (wordlist != null) { return; }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \").map((w) => expand(w));\n wordlist.forEach((word, index) => {\n lookup[dropDiacritic(word)] = index;\n });\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0xf74fb7092aeacdfbf8959557de22098da512207fb9f109cb526994938cf40300\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for es (Spanish) FAILED\");\n }\n}\n\nclass LangEs extends Wordlist {\n constructor() {\n super(\"es\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return lookup[dropDiacritic(word)];\n }\n}\n\nconst langEs = new LangEs();\nWordlist.register(langEs);\n\nexport { langEs };\n", "\"use strict\";\n\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { logger, Wordlist } from \"./wordlist\";\n\n\nconst words = \"AbaisserAbandonAbdiquerAbeilleAbolirAborderAboutirAboyerAbrasifAbreuverAbriterAbrogerAbruptAbsenceAbsoluAbsurdeAbusifAbyssalAcade/mieAcajouAcarienAccablerAccepterAcclamerAccoladeAccrocheAccuserAcerbeAchatAcheterAcidulerAcierAcompteAcque/rirAcronymeActeurActifActuelAdepteAde/quatAdhe/sifAdjectifAdjugerAdmettreAdmirerAdopterAdorerAdoucirAdresseAdroitAdulteAdverbeAe/rerAe/ronefAffaireAffecterAfficheAffreuxAffublerAgacerAgencerAgileAgiterAgraferAgre/ableAgrumeAiderAiguilleAilierAimableAisanceAjouterAjusterAlarmerAlchimieAlerteAlge-breAlgueAlie/nerAlimentAlle/gerAlliageAllouerAllumerAlourdirAlpagaAltesseAlve/oleAmateurAmbiguAmbreAme/nagerAmertumeAmidonAmiralAmorcerAmourAmovibleAmphibieAmpleurAmusantAnalyseAnaphoreAnarchieAnatomieAncienAne/antirAngleAngoisseAnguleuxAnimalAnnexerAnnonceAnnuelAnodinAnomalieAnonymeAnormalAntenneAntidoteAnxieuxApaiserApe/ritifAplanirApologieAppareilAppelerApporterAppuyerAquariumAqueducArbitreArbusteArdeurArdoiseArgentArlequinArmatureArmementArmoireArmureArpenterArracherArriverArroserArsenicArte/rielArticleAspectAsphalteAspirerAssautAsservirAssietteAssocierAssurerAsticotAstreAstuceAtelierAtomeAtriumAtroceAttaqueAttentifAttirerAttraperAubaineAubergeAudaceAudibleAugurerAuroreAutomneAutrucheAvalerAvancerAvariceAvenirAverseAveugleAviateurAvideAvionAviserAvoineAvouerAvrilAxialAxiomeBadgeBafouerBagageBaguetteBaignadeBalancerBalconBaleineBalisageBambinBancaireBandageBanlieueBannie-reBanquierBarbierBarilBaronBarqueBarrageBassinBastionBatailleBateauBatterieBaudrierBavarderBeletteBe/lierBeloteBe/ne/ficeBerceauBergerBerlineBermudaBesaceBesogneBe/tailBeurreBiberonBicycleBiduleBijouBilanBilingueBillardBinaireBiologieBiopsieBiotypeBiscuitBisonBistouriBitumeBizarreBlafardBlagueBlanchirBlessantBlinderBlondBloquerBlousonBobardBobineBoireBoiserBolideBonbonBondirBonheurBonifierBonusBordureBorneBotteBoucleBoueuxBougieBoulonBouquinBourseBoussoleBoutiqueBoxeurBrancheBrasierBraveBrebisBre-cheBreuvageBricolerBrigadeBrillantBriocheBriqueBrochureBroderBronzerBrousseBroyeurBrumeBrusqueBrutalBruyantBuffleBuissonBulletinBureauBurinBustierButinerButoirBuvableBuvetteCabanonCabineCachetteCadeauCadreCafe/ineCaillouCaissonCalculerCalepinCalibreCalmerCalomnieCalvaireCamaradeCame/raCamionCampagneCanalCanetonCanonCantineCanularCapableCaporalCapriceCapsuleCapterCapucheCarabineCarboneCaresserCaribouCarnageCarotteCarreauCartonCascadeCasierCasqueCassureCauserCautionCavalierCaverneCaviarCe/dilleCeintureCe/lesteCelluleCendrierCensurerCentralCercleCe/re/bralCeriseCernerCerveauCesserChagrinChaiseChaleurChambreChanceChapitreCharbonChasseurChatonChaussonChavirerChemiseChenilleChe/quierChercherChevalChienChiffreChignonChime-reChiotChlorureChocolatChoisirChoseChouetteChromeChuteCigareCigogneCimenterCine/maCintrerCirculerCirerCirqueCiterneCitoyenCitronCivilClaironClameurClaquerClasseClavierClientClignerClimatClivageClocheClonageCloporteCobaltCobraCocasseCocotierCoderCodifierCoffreCognerCohe/sionCoifferCoincerCole-reColibriCollineColmaterColonelCombatCome/dieCommandeCompactConcertConduireConfierCongelerConnoterConsonneContactConvexeCopainCopieCorailCorbeauCordageCornicheCorpusCorrectCorte-geCosmiqueCostumeCotonCoudeCoupureCourageCouteauCouvrirCoyoteCrabeCrainteCravateCrayonCre/atureCre/diterCre/meuxCreuserCrevetteCriblerCrierCristalCrite-reCroireCroquerCrotaleCrucialCruelCrypterCubiqueCueillirCuille-reCuisineCuivreCulminerCultiverCumulerCupideCuratifCurseurCyanureCycleCylindreCyniqueDaignerDamierDangerDanseurDauphinDe/battreDe/biterDe/borderDe/briderDe/butantDe/calerDe/cembreDe/chirerDe/ciderDe/clarerDe/corerDe/crireDe/cuplerDe/daleDe/ductifDe/esseDe/fensifDe/filerDe/frayerDe/gagerDe/givrerDe/glutirDe/graferDe/jeunerDe/liceDe/logerDemanderDemeurerDe/molirDe/nicherDe/nouerDentelleDe/nuderDe/partDe/penserDe/phaserDe/placerDe/poserDe/rangerDe/roberDe/sastreDescenteDe/sertDe/signerDe/sobe/irDessinerDestrierDe/tacherDe/testerDe/tourerDe/tresseDevancerDevenirDevinerDevoirDiableDialogueDiamantDicterDiffe/rerDige/rerDigitalDigneDiluerDimancheDiminuerDioxydeDirectifDirigerDiscuterDisposerDissiperDistanceDivertirDiviserDocileDocteurDogmeDoigtDomaineDomicileDompterDonateurDonjonDonnerDopamineDortoirDorureDosageDoseurDossierDotationDouanierDoubleDouceurDouterDoyenDragonDraperDresserDribblerDroitureDuperieDuplexeDurableDurcirDynastieE/blouirE/carterE/charpeE/chelleE/clairerE/clipseE/cloreE/cluseE/coleE/conomieE/corceE/couterE/craserE/cre/merE/crivainE/crouE/cumeE/cureuilE/difierE/duquerEffacerEffectifEffigieEffortEffrayerEffusionE/galiserE/garerE/jecterE/laborerE/largirE/lectronE/le/gantE/le/phantE/le-veE/ligibleE/litismeE/logeE/luciderE/luderEmballerEmbellirEmbryonE/meraudeE/missionEmmenerE/motionE/mouvoirEmpereurEmployerEmporterEmpriseE/mulsionEncadrerEnche-reEnclaveEncocheEndiguerEndosserEndroitEnduireE/nergieEnfanceEnfermerEnfouirEngagerEnginEngloberE/nigmeEnjamberEnjeuEnleverEnnemiEnnuyeuxEnrichirEnrobageEnseigneEntasserEntendreEntierEntourerEntraverE/nume/rerEnvahirEnviableEnvoyerEnzymeE/olienE/paissirE/pargneE/patantE/pauleE/picerieE/pide/mieE/pierE/pilogueE/pineE/pisodeE/pitapheE/poqueE/preuveE/prouverE/puisantE/querreE/quipeE/rigerE/rosionErreurE/ruptionEscalierEspadonEspe-ceEspie-gleEspoirEspritEsquiverEssayerEssenceEssieuEssorerEstimeEstomacEstradeE/tage-reE/talerE/tancheE/tatiqueE/teindreE/tendoirE/ternelE/thanolE/thiqueEthnieE/tirerE/tofferE/toileE/tonnantE/tourdirE/trangeE/troitE/tudeEuphorieE/valuerE/vasionE/ventailE/videnceE/viterE/volutifE/voquerExactExage/rerExaucerExcellerExcitantExclusifExcuseExe/cuterExempleExercerExhalerExhorterExigenceExilerExisterExotiqueExpe/dierExplorerExposerExprimerExquisExtensifExtraireExulterFableFabuleuxFacetteFacileFactureFaiblirFalaiseFameuxFamilleFarceurFarfeluFarineFaroucheFascinerFatalFatigueFauconFautifFaveurFavoriFe/brileFe/conderFe/de/rerFe/linFemmeFe/murFendoirFe/odalFermerFe/roceFerveurFestivalFeuilleFeutreFe/vrierFiascoFicelerFictifFide-leFigureFilatureFiletageFilie-reFilleulFilmerFilouFiltrerFinancerFinirFioleFirmeFissureFixerFlairerFlammeFlasqueFlatteurFle/auFle-cheFleurFlexionFloconFloreFluctuerFluideFluvialFolieFonderieFongibleFontaineForcerForgeronFormulerFortuneFossileFoudreFouge-reFouillerFoulureFourmiFragileFraiseFranchirFrapperFrayeurFre/gateFreinerFrelonFre/mirFre/ne/sieFre-reFriableFrictionFrissonFrivoleFroidFromageFrontalFrotterFruitFugitifFuiteFureurFurieuxFurtifFusionFuturGagnerGalaxieGalerieGambaderGarantirGardienGarnirGarrigueGazelleGazonGe/antGe/latineGe/luleGendarmeGe/ne/ralGe/nieGenouGentilGe/ologieGe/ome-treGe/raniumGermeGestuelGeyserGibierGiclerGirafeGivreGlaceGlaiveGlisserGlobeGloireGlorieuxGolfeurGommeGonflerGorgeGorilleGoudronGouffreGoulotGoupilleGourmandGoutteGraduelGraffitiGraineGrandGrappinGratuitGravirGrenatGriffureGrillerGrimperGrognerGronderGrotteGroupeGrugerGrutierGruye-reGue/pardGuerrierGuideGuimauveGuitareGustatifGymnasteGyrostatHabitudeHachoirHalteHameauHangarHannetonHaricotHarmonieHarponHasardHe/liumHe/matomeHerbeHe/rissonHermineHe/ronHe/siterHeureuxHibernerHibouHilarantHistoireHiverHomardHommageHomoge-neHonneurHonorerHonteuxHordeHorizonHorlogeHormoneHorribleHouleuxHousseHublotHuileuxHumainHumbleHumideHumourHurlerHydromelHygie-neHymneHypnoseIdylleIgnorerIguaneIlliciteIllusionImageImbiberImiterImmenseImmobileImmuableImpactImpe/rialImplorerImposerImprimerImputerIncarnerIncendieIncidentInclinerIncoloreIndexerIndiceInductifIne/ditIneptieInexactInfiniInfligerInformerInfusionInge/rerInhalerInhiberInjecterInjureInnocentInoculerInonderInscrireInsecteInsigneInsoliteInspirerInstinctInsulterIntactIntenseIntimeIntrigueIntuitifInutileInvasionInventerInviterInvoquerIroniqueIrradierIrre/elIrriterIsolerIvoireIvresseJaguarJaillirJambeJanvierJardinJaugerJauneJavelotJetableJetonJeudiJeunesseJoindreJoncherJonglerJoueurJouissifJournalJovialJoyauJoyeuxJubilerJugementJuniorJuponJuristeJusticeJuteuxJuve/nileKayakKimonoKiosqueLabelLabialLabourerLace/rerLactoseLaguneLaineLaisserLaitierLambeauLamelleLampeLanceurLangageLanterneLapinLargeurLarmeLaurierLavaboLavoirLectureLe/galLe/gerLe/gumeLessiveLettreLevierLexiqueLe/zardLiasseLibe/rerLibreLicenceLicorneLie-geLie-vreLigatureLigoterLigueLimerLimiteLimonadeLimpideLine/aireLingotLionceauLiquideLisie-reListerLithiumLitigeLittoralLivreurLogiqueLointainLoisirLombricLoterieLouerLourdLoutreLouveLoyalLubieLucideLucratifLueurLugubreLuisantLumie-reLunaireLundiLuronLutterLuxueuxMachineMagasinMagentaMagiqueMaigreMaillonMaintienMairieMaisonMajorerMalaxerMale/ficeMalheurMaliceMalletteMammouthMandaterManiableManquantManteauManuelMarathonMarbreMarchandMardiMaritimeMarqueurMarronMartelerMascotteMassifMate/rielMatie-reMatraqueMaudireMaussadeMauveMaximalMe/chantMe/connuMe/dailleMe/decinMe/diterMe/duseMeilleurMe/langeMe/lodieMembreMe/moireMenacerMenerMenhirMensongeMentorMercrediMe/riteMerleMessagerMesureMe/talMe/te/oreMe/thodeMe/tierMeubleMiaulerMicrobeMietteMignonMigrerMilieuMillionMimiqueMinceMine/ralMinimalMinorerMinuteMiracleMiroiterMissileMixteMobileModerneMoelleuxMondialMoniteurMonnaieMonotoneMonstreMontagneMonumentMoqueurMorceauMorsureMortierMoteurMotifMoucheMoufleMoulinMoussonMoutonMouvantMultipleMunitionMurailleMure-neMurmureMuscleMuse/umMusicienMutationMuterMutuelMyriadeMyrtilleMyste-reMythiqueNageurNappeNarquoisNarrerNatationNationNatureNaufrageNautiqueNavireNe/buleuxNectarNe/fasteNe/gationNe/gligerNe/gocierNeigeNerveuxNettoyerNeuroneNeutronNeveuNicheNickelNitrateNiveauNobleNocifNocturneNoirceurNoisetteNomadeNombreuxNommerNormatifNotableNotifierNotoireNourrirNouveauNovateurNovembreNoviceNuageNuancerNuireNuisibleNume/roNuptialNuqueNutritifObe/irObjectifObligerObscurObserverObstacleObtenirObturerOccasionOccuperOce/anOctobreOctroyerOctuplerOculaireOdeurOdorantOffenserOfficierOffrirOgiveOiseauOisillonOlfactifOlivierOmbrageOmettreOnctueuxOndulerOne/reuxOniriqueOpaleOpaqueOpe/rerOpinionOpportunOpprimerOpterOptiqueOrageuxOrangeOrbiteOrdonnerOreilleOrganeOrgueilOrificeOrnementOrqueOrtieOscillerOsmoseOssatureOtarieOuraganOursonOutilOutragerOuvrageOvationOxydeOxyge-neOzonePaisiblePalacePalmare-sPalourdePalperPanachePandaPangolinPaniquerPanneauPanoramaPantalonPapayePapierPapoterPapyrusParadoxeParcelleParesseParfumerParlerParoleParrainParsemerPartagerParureParvenirPassionPaste-quePaternelPatiencePatronPavillonPavoiserPayerPaysagePeignePeintrePelagePe/licanPellePelousePeluchePendulePe/ne/trerPe/niblePensifPe/nuriePe/pitePe/plumPerdrixPerforerPe/riodePermuterPerplexePersilPertePeserPe/talePetitPe/trirPeuplePharaonPhobiePhoquePhotonPhrasePhysiquePianoPicturalPie-cePierrePieuvrePilotePinceauPipettePiquerPiroguePiscinePistonPivoterPixelPizzaPlacardPlafondPlaisirPlanerPlaquePlastronPlateauPleurerPlexusPliagePlombPlongerPluiePlumagePochettePoe/siePoe-tePointePoirierPoissonPoivrePolairePolicierPollenPolygonePommadePompierPonctuelPonde/rerPoneyPortiquePositionPosse/derPosturePotagerPoteauPotionPoucePoulainPoumonPourprePoussinPouvoirPrairiePratiquePre/cieuxPre/direPre/fixePre/ludePre/nomPre/sencePre/textePre/voirPrimitifPrincePrisonPriverProble-meProce/derProdigeProfondProgre-sProieProjeterProloguePromenerPropreProspe-reProte/gerProuesseProverbePrudencePruneauPsychosePublicPuceronPuiserPulpePulsarPunaisePunitifPupitrePurifierPuzzlePyramideQuasarQuerelleQuestionQuie/tudeQuitterQuotientRacineRaconterRadieuxRagondinRaideurRaisinRalentirRallongeRamasserRapideRasageRatisserRavagerRavinRayonnerRe/actifRe/agirRe/aliserRe/animerRecevoirRe/citerRe/clamerRe/colterRecruterReculerRecyclerRe/digerRedouterRefaireRe/flexeRe/formerRefrainRefugeRe/galienRe/gionRe/glageRe/gulierRe/ite/rerRejeterRejouerRelatifReleverReliefRemarqueReme-deRemiseRemonterRemplirRemuerRenardRenfortReniflerRenoncerRentrerRenvoiReplierReporterRepriseReptileRequinRe/serveRe/sineuxRe/soudreRespectResterRe/sultatRe/tablirRetenirRe/ticuleRetomberRetracerRe/unionRe/ussirRevancheRevivreRe/volteRe/vulsifRichesseRideauRieurRigideRigolerRincerRiposterRisibleRisqueRituelRivalRivie-reRocheuxRomanceRompreRonceRondinRoseauRosierRotatifRotorRotuleRougeRouilleRouleauRoutineRoyaumeRubanRubisRucheRuelleRugueuxRuinerRuisseauRuserRustiqueRythmeSablerSaboterSabreSacocheSafariSagesseSaisirSaladeSaliveSalonSaluerSamediSanctionSanglierSarcasmeSardineSaturerSaugrenuSaumonSauterSauvageSavantSavonnerScalpelScandaleSce/le/ratSce/narioSceptreSche/maScienceScinderScoreScrutinSculpterSe/anceSe/cableSe/cherSecouerSe/cre/terSe/datifSe/duireSeigneurSe/jourSe/lectifSemaineSemblerSemenceSe/minalSe/nateurSensibleSentenceSe/parerSe/quenceSereinSergentSe/rieuxSerrureSe/rumServiceSe/sameSe/virSevrageSextupleSide/ralSie-cleSie/gerSifflerSigleSignalSilenceSiliciumSimpleSince-reSinistreSiphonSiropSismiqueSituerSkierSocialSocleSodiumSoigneuxSoldatSoleilSolitudeSolubleSombreSommeilSomnolerSondeSongeurSonnetteSonoreSorcierSortirSosieSottiseSoucieuxSoudureSouffleSouleverSoupapeSourceSoutirerSouvenirSpacieuxSpatialSpe/cialSphe-reSpiralStableStationSternumStimulusStipulerStrictStudieuxStupeurStylisteSublimeSubstratSubtilSubvenirSucce-sSucreSuffixeSugge/rerSuiveurSulfateSuperbeSupplierSurfaceSuricateSurmenerSurpriseSursautSurvieSuspectSyllabeSymboleSyme/trieSynapseSyntaxeSyste-meTabacTablierTactileTaillerTalentTalismanTalonnerTambourTamiserTangibleTapisTaquinerTarderTarifTartineTasseTatamiTatouageTaupeTaureauTaxerTe/moinTemporelTenailleTendreTeneurTenirTensionTerminerTerneTerribleTe/tineTexteThe-meThe/orieThe/rapieThoraxTibiaTie-deTimideTirelireTiroirTissuTitaneTitreTituberTobogganTole/rantTomateToniqueTonneauToponymeTorcheTordreTornadeTorpilleTorrentTorseTortueTotemToucherTournageTousserToxineTractionTraficTragiqueTrahirTrainTrancherTravailTre-fleTremperTre/sorTreuilTriageTribunalTricoterTrilogieTriompheTriplerTriturerTrivialTromboneTroncTropicalTroupeauTuileTulipeTumulteTunnelTurbineTuteurTutoyerTuyauTympanTyphonTypiqueTyranUbuesqueUltimeUltrasonUnanimeUnifierUnionUniqueUnitaireUniversUraniumUrbainUrticantUsageUsineUsuelUsureUtileUtopieVacarmeVaccinVagabondVagueVaillantVaincreVaisseauValableValiseVallonValveVampireVanilleVapeurVarierVaseuxVassalVasteVecteurVedetteVe/ge/talVe/hiculeVeinardVe/loceVendrediVe/ne/rerVengerVenimeuxVentouseVerdureVe/rinVernirVerrouVerserVertuVestonVe/te/ranVe/tusteVexantVexerViaducViandeVictoireVidangeVide/oVignetteVigueurVilainVillageVinaigreViolonVipe-reVirementVirtuoseVirusVisageViseurVisionVisqueuxVisuelVitalVitesseViticoleVitrineVivaceVivipareVocationVoguerVoileVoisinVoitureVolailleVolcanVoltigerVolumeVoraceVortexVoterVouloirVoyageVoyelleWagonXe/nonYachtZe-breZe/nithZesteZoologie\";\n\nlet wordlist: Array = null;\nconst lookup: { [word: string]: number } = { }\n\nfunction dropDiacritic(word: string): string {\n logger.checkNormalize();\n return toUtf8String(Array.prototype.filter.call(toUtf8Bytes(word.normalize(\"NFD\").toLowerCase()), (c: number) => {\n return ((c >= 65 && c <= 90) || (c >= 97 && c <= 123));\n }));\n}\n\nfunction expand(word: string): string {\n const output: Array = [];\n\n Array.prototype.forEach.call(toUtf8Bytes(word), (c: number) => {\n // Acute accent\n if (c === 47) {\n output.push(204);\n output.push(129);\n\n // Grave accent\n } else if (c === 45) {\n output.push(204);\n output.push(128);\n\n } else {\n output.push(c);\n }\n });\n\n return toUtf8String(output);\n}\n\nfunction loadWords(lang: Wordlist): void {\n if (wordlist != null) { return; }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \").map((w) => expand(w));\n wordlist.forEach((word, index) => {\n lookup[dropDiacritic(word)] = index;\n });\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0x51deb7ae009149dc61a6bd18a918eb7ac78d2775726c68e598b92d002519b045\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for fr (French) FAILED\");\n }\n}\n\nclass LangFr extends Wordlist {\n constructor() {\n super(\"fr\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return lookup[dropDiacritic(word)];\n }\n}\n\nconst langFr = new LangFr();\nWordlist.register(langFr);\n\nexport { langFr };\n", "\"use strict\";\n\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { logger, Wordlist } from \"./wordlist\";\n\n\nconst data = [\n\n // 4-kana words\n \"AQRASRAGBAGUAIRAHBAghAURAdBAdcAnoAMEAFBAFCBKFBQRBSFBCXBCDBCHBGFBEQBpBBpQBIkBHNBeOBgFBVCBhBBhNBmOBmRBiHBiFBUFBZDBvFBsXBkFBlcBjYBwDBMBBTBBTRBWBBWXXaQXaRXQWXSRXCFXYBXpHXOQXHRXhRXuRXmXXbRXlXXwDXTRXrCXWQXWGaBWaKcaYgasFadQalmaMBacAKaRKKBKKXKKjKQRKDRKCYKCRKIDKeVKHcKlXKjHKrYNAHNBWNaRNKcNIBNIONmXNsXNdXNnBNMBNRBNrXNWDNWMNFOQABQAHQBrQXBQXFQaRQKXQKDQKOQKFQNBQNDQQgQCXQCDQGBQGDQGdQYXQpBQpQQpHQLXQHuQgBQhBQhCQuFQmXQiDQUFQZDQsFQdRQkHQbRQlOQlmQPDQjDQwXQMBQMDQcFQTBQTHQrDDXQDNFDGBDGQDGRDpFDhFDmXDZXDbRDMYDRdDTRDrXSAhSBCSBrSGQSEQSHBSVRShYShkSyQSuFSiBSdcSoESocSlmSMBSFBSFKSFNSFdSFcCByCaRCKcCSBCSRCCrCGbCEHCYXCpBCpQCIBCIHCeNCgBCgFCVECVcCmkCmwCZXCZFCdRClOClmClFCjDCjdCnXCwBCwXCcRCFQCFjGXhGNhGDEGDMGCDGCHGIFGgBGVXGVEGVRGmXGsXGdYGoSGbRGnXGwXGwDGWRGFNGFLGFOGFdGFkEABEBDEBFEXOEaBEKSENBENDEYXEIgEIkEgBEgQEgHEhFEudEuFEiBEiHEiFEZDEvBEsXEsFEdXEdREkFEbBEbRElFEPCEfkEFNYAEYAhYBNYQdYDXYSRYCEYYoYgQYgRYuRYmCYZTYdBYbEYlXYjQYRbYWRpKXpQopQnpSFpCXpIBpISphNpdBpdRpbRpcZpFBpFNpFDpFopFrLADLBuLXQLXcLaFLCXLEhLpBLpFLHXLeVLhILdHLdRLoDLbRLrXIABIBQIBCIBsIBoIBMIBRIXaIaRIKYIKRINBINuICDIGBIIDIIkIgRIxFIyQIiHIdRIbYIbRIlHIwRIMYIcRIRVITRIFBIFNIFQOABOAFOBQOaFONBONMOQFOSFOCDOGBOEQOpBOLXOIBOIFOgQOgFOyQOycOmXOsXOdIOkHOMEOMkOWWHBNHXNHXWHNXHDuHDRHSuHSRHHoHhkHmRHdRHkQHlcHlRHwBHWcgAEgAggAkgBNgBQgBEgXOgYcgLXgHjgyQgiBgsFgdagMYgWSgFQgFEVBTVXEVKBVKNVKDVKYVKRVNBVNYVDBVDxVSBVSRVCjVGNVLXVIFVhBVhcVsXVdRVbRVlRhBYhKYhDYhGShxWhmNhdahdkhbRhjohMXhTRxAXxXSxKBxNBxEQxeNxeQxhXxsFxdbxlHxjcxFBxFNxFQxFOxFoyNYyYoybcyMYuBQuBRuBruDMuCouHBudQukkuoBulVuMXuFEmCYmCRmpRmeDmiMmjdmTFmFQiADiBOiaRiKRiNBiNRiSFiGkiGFiERipRiLFiIFihYibHijBijEiMXiWBiFBiFCUBQUXFUaRUNDUNcUNRUNFUDBUSHUCDUGBUGFUEqULNULoUIRUeEUeYUgBUhFUuRUiFUsXUdFUkHUbBUjSUjYUwXUMDUcHURdUTBUrBUrXUrQZAFZXZZaRZKFZNBZQFZCXZGBZYdZpBZLDZIFZHXZHNZeQZVRZVFZmXZiBZvFZdFZkFZbHZbFZwXZcCZcRZRBvBQvBGvBLvBWvCovMYsAFsBDsaRsKFsNFsDrsSHsSFsCXsCRsEBsEHsEfspBsLBsLDsIgsIRseGsbRsFBsFQsFSdNBdSRdCVdGHdYDdHcdVbdySduDdsXdlRdwXdWYdWcdWRkBMkXOkaRkNIkNFkSFkCFkYBkpRkeNkgBkhVkmXksFklVkMBkWDkFNoBNoaQoaFoNBoNXoNaoNEoSRoEroYXoYCoYbopRopFomXojkowXorFbBEbEIbdBbjYlaRlDElMXlFDjKjjSRjGBjYBjYkjpRjLXjIBjOFjeVjbRjwBnXQnSHnpFnLXnINnMBnTRwXBwXNwXYwNFwQFwSBwGFwLXwLDweNwgBwuHwjDwnXMBXMpFMIBMeNMTHcaQcNBcDHcSFcCXcpBcLXcLDcgFcuFcnXcwXccDcTQcrFTQErXNrCHrpFrgFrbFrTHrFcWNYWNbWEHWMXWTR\",\n\n // 5-kana words\n \"ABGHABIJAEAVAYJQALZJAIaRAHNXAHdcAHbRAZJMAZJRAZTRAdVJAklmAbcNAjdRAMnRAMWYAWpRAWgRAFgBAFhBAFdcBNJBBNJDBQKBBQhcBQlmBDEJBYJkBYJTBpNBBpJFBIJBBIJDBIcABOKXBOEJBOVJBOiJBOZJBepBBeLXBeIFBegBBgGJBVJXBuocBiJRBUJQBlXVBlITBwNFBMYVBcqXBTlmBWNFBWiJBWnRBFGHBFwXXKGJXNJBXNZJXDTTXSHSXSVRXSlHXCJDXGQJXEhXXYQJXYbRXOfXXeNcXVJFXhQJXhEJXdTRXjdXXMhBXcQTXRGBXTEBXTnQXFCXXFOFXFgFaBaFaBNJaBCJaBpBaBwXaNJKaNJDaQIBaDpRaEPDaHMFamDJalEJaMZJaFaFaFNBaFQJaFLDaFVHKBCYKBEBKBHDKXaFKXGdKXEJKXpHKXIBKXZDKXwXKKwLKNacKNYJKNJoKNWcKDGdKDTRKChXKGaRKGhBKGbRKEBTKEaRKEPTKLMDKLWRKOHDKVJcKdBcKlIBKlOPKFSBKFEPKFpFNBNJNJBQNBGHNBEPNBHXNBgFNBVXNBZDNBsXNBwXNNaRNNJDNNJENNJkNDCJNDVDNGJRNJiDNZJNNsCJNJFNNFSBNFCXNFEPNFLXNFIFQJBFQCaRQJEQQLJDQLJFQIaRQOqXQHaFQHHQQVJXQVJDQhNJQmEIQZJFQsJXQJrFQWbRDJABDBYJDXNFDXCXDXLXDXZDDXsJDQqXDSJFDJCXDEPkDEqXDYmQDpSJDOCkDOGQDHEIDVJDDuDuDWEBDJFgSBNDSBSFSBGHSBIBSBTQSKVYSJQNSJQiSJCXSEqXSJYVSIiJSOMYSHAHSHaQSeCFSepQSegBSHdHSHrFShSJSJuHSJUFSkNRSrSrSWEBSFaHSJFQSFCXSFGDSFYXSFODSFgBSFVXSFhBSFxFSFkFSFbBSFMFCADdCJXBCXaFCXKFCXNFCXCXCXGBCXEJCXYBCXLDCXIBCXOPCXHXCXgBCXhBCXiBCXlDCXcHCJNBCJNFCDCJCDGBCDVXCDhBCDiDCDJdCCmNCpJFCIaRCOqXCHCHCHZJCViJCuCuCmddCJiFCdNBCdHhClEJCnUJCreSCWlgCWTRCFBFCFNBCFYBCFVFCFhFCFdSCFTBCFWDGBNBGBQFGJBCGBEqGBpBGBgQGNBEGNJYGNkOGNJRGDUFGJpQGHaBGJeNGJeEGVBlGVKjGiJDGvJHGsVJGkEBGMIJGWjNGFBFGFCXGFGBGFYXGFpBGFMFEASJEAWpEJNFECJVEIXSEIQJEOqXEOcFEeNcEHEJEHlFEJgFEhlmEmDJEmZJEiMBEUqXEoSREPBFEPXFEPKFEPSFEPEFEPpFEPLXEPIBEJPdEPcFEPTBEJnXEqlHEMpREFCXEFODEFcFYASJYJAFYBaBYBVXYXpFYDhBYCJBYJGFYYbRYeNcYJeVYiIJYZJcYvJgYvJRYJsXYsJFYMYMYreVpBNHpBEJpBwXpQxFpYEJpeNDpJeDpeSFpeCHpHUJpHbBpHcHpmUJpiiJpUJrpsJuplITpFaBpFQqpFGBpFEfpFYBpFpBpFLJpFIDpFgBpFVXpFyQpFuFpFlFpFjDpFnXpFwXpJFMpFTBLXCJLXEFLXhFLXUJLXbFLalmLNJBLSJQLCLCLGJBLLDJLHaFLeNFLeSHLeCXLepFLhaRLZsJLsJDLsJrLocaLlLlLMdbLFNBLFSBLFEHLFkFIBBFIBXFIBaQIBKXIBSFIBpHIBLXIBgBIBhBIBuHIBmXIBiFIBZXIBvFIBbFIBjQIBwXIBWFIKTRIQUJIDGFICjQIYSRIINXIJeCIVaRImEkIZJFIvJRIsJXIdCJIJoRIbBQIjYBIcqXITFVIreVIFKFIFSFIFCJIFGFIFLDIFIBIJFOIFgBIFVXIJFhIFxFIFmXIFdHIFbBIJFrIJFWOBGBOQfXOOKjOUqXOfXBOqXEOcqXORVJOFIBOFlDHBIOHXiFHNTRHCJXHIaRHHJDHHEJHVbRHZJYHbIBHRsJHRkDHWlmgBKFgBSBgBCDgBGHgBpBgBIBgBVJgBuBgBvFgKDTgQVXgDUJgGSJgOqXgmUMgZIJgTUJgWIEgFBFgFNBgFDJgFSFgFGBgFYXgJFOgFgQgFVXgFhBgFbHgJFWVJABVQKcVDgFVOfXVeDFVhaRVmGdViJYVMaRVFNHhBNDhBCXhBEqhBpFhBLXhNJBhSJRheVXhhKEhxlmhZIJhdBQhkIJhbMNhMUJhMZJxNJgxQUJxDEkxDdFxSJRxplmxeSBxeCXxeGFxeYXxepQxegBxWVcxFEQxFLXxFIBxFgBxFxDxFZtxFdcxFbBxFwXyDJXyDlcuASJuDJpuDIBuCpJuGSJuIJFueEFuZIJusJXudWEuoIBuWGJuFBcuFKEuFNFuFQFuFDJuFGJuFVJuFUtuFdHuFTBmBYJmNJYmQhkmLJDmLJomIdXmiJYmvJRmsJRmklmmMBymMuCmclmmcnQiJABiJBNiJBDiBSFiBCJiBEFiBYBiBpFiBLXiBTHiJNciDEfiCZJiECJiJEqiOkHiHKFieNDiHJQieQcieDHieSFieCXieGFieEFieIHiegFihUJixNoioNXiFaBiFKFiFNDiFEPiFYXitFOitFHiFgBiFVEiFmXiFitiFbBiFMFiFrFUCXQUIoQUIJcUHQJUeCEUHwXUUJDUUqXUdWcUcqXUrnQUFNDUFSHUFCFUFEfUFLXUtFOZBXOZXSBZXpFZXVXZEQJZEJkZpDJZOqXZeNHZeCDZUqXZFBQZFEHZFLXvBAFvBKFvBCXvBEPvBpHvBIDvBgFvBuHvQNJvFNFvFGBvFIBvJFcsXCDsXLXsXsXsXlFsXcHsQqXsJQFsEqXseIFsFEHsFjDdBxOdNpRdNJRdEJbdpJRdhZJdnSJdrjNdFNJdFQHdFhNkNJDkYaRkHNRkHSRkVbRkuMRkjSJkcqDoSJFoEiJoYZJoOfXohEBoMGQocqXbBAFbBXFbBaFbBNDbBGBbBLXbBTBbBWDbGJYbIJHbFQqbFpQlDgQlOrFlVJRjGEBjZJRnXvJnXbBnEfHnOPDngJRnxfXnUJWwXEJwNpJwDpBwEfXwrEBMDCJMDGHMDIJMLJDcQGDcQpHcqXccqNFcqCXcFCJRBSBRBGBRBEJRBpQTBNFTBQJTBpBTBVXTFABTFSBTFCFTFGBTFMDrXCJrXLDrDNJrEfHrFQJrFitWNjdWNTR\",\n\n // 6-kana words\n \"AKLJMANOPFASNJIAEJWXAYJNRAIIbRAIcdaAeEfDAgidRAdjNYAMYEJAMIbRAFNJBAFpJFBBIJYBDZJFBSiJhBGdEBBEJfXBEJqXBEJWRBpaUJBLXrXBIYJMBOcfXBeEfFBestXBjNJRBcDJOBFEqXXNvJRXDMBhXCJNYXOAWpXONJWXHDEBXeIaRXhYJDXZJSJXMDJOXcASJXFVJXaBQqXaBZJFasXdQaFSJQaFEfXaFpJHaFOqXKBNSRKXvJBKQJhXKEJQJKEJGFKINJBKIJjNKgJNSKVElmKVhEBKiJGFKlBgJKjnUJKwsJYKMFIJKFNJDKFIJFKFOfXNJBSFNJBCXNBpJFNJBvQNJBMBNJLJXNJOqXNJeCXNJeGFNdsJCNbTKFNwXUJQNFEPQDiJcQDMSJQSFpBQGMQJQJeOcQyCJEQUJEBQJFBrQFEJqDXDJFDJXpBDJXIMDGiJhDIJGRDJeYcDHrDJDVXgFDkAWpDkIgRDjDEqDMvJRDJFNFDJFIBSKclmSJQOFSJQVHSJQjDSJGJBSJGJFSECJoSHEJqSJHTBSJVJDSViJYSZJNBSJsJDSFSJFSFEfXSJFLXCBUJVCJXSBCJXpBCXVJXCJXsXCJXdFCJNJHCLIJgCHiJFCVNJMChCJhCUHEJCsJTRCJdYcCoQJCCFEfXCFIJgCFUJxCFstFGJBaQGJBIDGQJqXGYJNRGJHKFGeQqDGHEJFGJeLXGHIiJGHdBlGUJEBGkIJTGFQPDGJFEqEAGegEJIJBEJVJXEhQJTEiJNcEJZJFEJoEqEjDEqEPDsXEPGJBEPOqXEPeQFEfDiDEJfEFEfepQEfMiJEqXNBEqDIDEqeSFEqVJXEMvJRYXNJDYXEJHYKVJcYYJEBYJeEcYJUqXYFpJFYFstXpAZJMpBSJFpNBNFpeQPDpHLJDpHIJFpHgJFpeitFpHZJFpJFADpFSJFpJFCJpFOqXpFitBpJFZJLXIJFLIJgRLVNJWLVHJMLwNpJLFGJBLFLJDLFOqXLJFUJIBDJXIBGJBIJBYQIJBIBIBOqXIBcqDIEGJFILNJTIIJEBIOiJhIJeNBIJeIBIhiJIIWoTRIJFAHIJFpBIJFuHIFUtFIJFTHOSBYJOEcqXOHEJqOvBpFOkVJrObBVJOncqDOcNJkHhNJRHuHJuHdMhBgBUqXgBsJXgONJBgHNJDgHHJQgJeitgHsJXgJyNagyDJBgZJDrgsVJQgkEJNgkjSJgJFAHgFCJDgFZtMVJXNFVXQfXVJXDJVXoQJVQVJQVDEfXVDvJHVEqNFVeQfXVHpJFVHxfXVVJSRVVmaRVlIJOhCXVJhHjYkhxCJVhWVUJhWiJcxBNJIxeEqDxfXBFxcFEPxFSJFxFYJXyBDQJydaUJyFOPDuYCJYuLvJRuHLJXuZJLDuFOPDuFZJHuFcqXmKHJdmCQJcmOsVJiJAGFitLCFieOfXiestXiZJMEikNJQirXzFiFQqXiFIJFiFZJFiFvtFUHpJFUteIcUteOcUVCJkUhdHcUbEJEUJqXQUMNJhURjYkUFitFZDGJHZJIxDZJVJXZJFDJZJFpQvBNJBvBSJFvJxBrseQqDsVFVJdFLJDkEJNBkmNJYkFLJDoQJOPoGsJRoEAHBoEJfFbBQqDbBZJHbFVJXlFIJBjYIrXjeitcjjCEBjWMNBwXQfXwXOaFwDsJXwCJTRwrCZJMDNJQcDDJFcqDOPRYiJFTBsJXTQIJBTFEfXTFLJDrXEJFrEJXMrFZJFWEJdEWYTlm\",\n\n // 7-kana words\n \"ABCDEFACNJTRAMBDJdAcNJVXBLNJEBXSIdWRXErNJkXYDJMBXZJCJaXMNJaYKKVJKcKDEJqXKDcNJhKVJrNYKbgJVXKFVJSBNBYBwDNJeQfXNJeEqXNhGJWENJFiJRQlIJbEQJfXxDQqXcfXQFNDEJQFwXUJDYcnUJDJIBgQDIUJTRDJFEqDSJQSJFSJQIJFSOPeZtSJFZJHCJXQfXCTDEqFGJBSJFGJBOfXGJBcqXGJHNJDGJRLiJEJfXEqEJFEJPEFpBEJYJBZJFYBwXUJYiJMEBYJZJyTYTONJXpQMFXFpeGIDdpJFstXpJFcPDLBVSJRLHQJqXLJFZJFIJBNJDIJBUqXIBkFDJIJEJPTIYJGWRIJeQPDIJeEfHIJFsJXOqGDSFHXEJqXgJCsJCgGQJqXgdQYJEgFMFNBgJFcqDVJwXUJVJFZJchIgJCCxOEJqXxOwXUJyDJBVRuscisciJBiJBieUtqXiJFDJkiFsJXQUGEZJcUJFsJXZtXIrXZDZJDrZJFNJDZJFstXvJFQqXvJFCJEsJXQJqkhkNGBbDJdTRbYJMEBlDwXUJMEFiJFcfXNJDRcNJWMTBLJXC\",\n\n // 8-kana words\n \"BraFUtHBFSJFdbNBLJXVJQoYJNEBSJBEJfHSJHwXUJCJdAZJMGjaFVJXEJPNJBlEJfFiJFpFbFEJqIJBVJCrIBdHiJhOPFChvJVJZJNJWxGFNIFLueIBQJqUHEJfUFstOZJDrlXEASJRlXVJXSFwVJNJWD\",\n\n // 9-kana words\n \"QJEJNNJDQJEJIBSFQJEJxegBQJEJfHEPSJBmXEJFSJCDEJqXLXNJFQqXIcQsFNJFIFEJqXUJgFsJXIJBUJEJfHNFvJxEqXNJnXUJFQqD\",\n\n // 10-kana words\n \"IJBEJqXZJ\"\n];\n\n// Maps each character into its kana value (the index)\nconst mapping = \"~~AzB~X~a~KN~Q~D~S~C~G~E~Y~p~L~I~O~eH~g~V~hxyumi~~U~~Z~~v~~s~~dkoblPjfnqwMcRTr~W~~~F~~~~~Jt\"\n\nlet wordlist: Array = null;\n\nfunction hex(word: string) {\n return hexlify(toUtf8Bytes(word));\n}\n\nconst KiYoKu = \"0xe3818de38284e3818f\";\nconst KyoKu = \"0xe3818de38283e3818f\"\n\nfunction loadWords(lang: Wordlist) {\n if (wordlist !== null) { return; }\n\n wordlist = [];\n\n // Transforms for normalizing (sort is a not quite UTF-8)\n const transform: { [key: string]: string | boolean } = {};\n\n // Delete the diacritic marks\n transform[toUtf8String([227, 130, 154])] = false;\n transform[toUtf8String([227, 130, 153])] = false;\n\n // Some simple transforms that sort out most of the order\n transform[toUtf8String([227, 130, 133])] = toUtf8String([227, 130, 134]);\n transform[toUtf8String([227, 129, 163])] = toUtf8String([227, 129, 164]);\n transform[toUtf8String([227, 130, 131])] = toUtf8String([227, 130, 132]);\n transform[toUtf8String([227, 130, 135])] = toUtf8String([227, 130, 136]);\n\n\n // Normalize words using the transform\n function normalize(word: string) {\n let result = \"\";\n for (let i = 0; i < word.length; i++) {\n let kana = word[i];\n const target = transform[kana];\n if (target === false) { continue; }\n if (target) { kana = target; }\n result += kana;\n }\n return result;\n }\n\n // Sort how the Japanese list is sorted\n function sortJapanese(a: string, b: string) {\n a = normalize(a);\n b = normalize(b);\n if (a < b) { return -1; }\n if (a > b) { return 1; }\n return 0;\n }\n\n // Load all the words\n for (let length = 3; length <= 9; length++) {\n const d = data[length - 3];\n for (let offset = 0; offset < d.length; offset += length) {\n const word = [];\n for (let i = 0; i < length; i++) {\n const k = mapping.indexOf(d[offset + i]);\n word.push(227);\n word.push((k & 0x40) ? 130: 129);\n word.push((k & 0x3f) + 128);\n }\n wordlist.push(toUtf8String(word));\n }\n }\n wordlist.sort(sortJapanese);\n\n // For some reason kyoku and kiyoku are flipped in node (!!).\n // The order SHOULD be:\n // - kyoku\n // - kiyoku\n\n // This should ignore \"if\", but that doesn't work here??\n /* istanbul ignore next */\n if (hex(wordlist[442]) === KiYoKu && hex(wordlist[443]) === KyoKu) {\n const tmp = wordlist[442];\n wordlist[442] = wordlist[443];\n wordlist[443] = tmp;\n }\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0xcb36b09e6baa935787fd762ce65e80b0c6a8dabdfbc3a7f86ac0e2c4fd111600\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for ja (Japanese) FAILED\");\n }\n}\n\nclass LangJa extends Wordlist {\n constructor() {\n super(\"ja\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n\n split(mnemonic: string): Array {\n logger.checkNormalize();\n return mnemonic.split(/(?:\\u3000| )+/g);\n }\n\n join(words: Array): string {\n return words.join(\"\\u3000\");\n }\n}\n\nconst langJa = new LangJa();\nWordlist.register(langJa);\n\nexport { langJa };\n\n", "\"use strict\";\n\nimport { toUtf8String } from \"@ethersproject/strings\";\n\nimport { Wordlist } from \"./wordlist\";\n\n\nconst data = [\n \"OYAa\",\n \"ATAZoATBl3ATCTrATCl8ATDloATGg3ATHT8ATJT8ATJl3ATLlvATLn4ATMT8ATMX8ATMboATMgoAToLbAToMTATrHgATvHnAT3AnAT3JbAT3MTAT8DbAT8JTAT8LmAT8MYAT8MbAT#LnAUHT8AUHZvAUJXrAUJX8AULnrAXJnvAXLUoAXLgvAXMn6AXRg3AXrMbAX3JTAX3QbAYLn3AZLgvAZrSUAZvAcAZ8AaAZ8AbAZ8AnAZ8HnAZ8LgAZ8MYAZ8MgAZ8OnAaAboAaDTrAaFTrAaJTrAaJboAaLVoAaMXvAaOl8AaSeoAbAUoAbAg8AbAl4AbGnrAbMT8AbMXrAbMn4AbQb8AbSV8AbvRlAb8AUAb8AnAb8HgAb8JTAb8NTAb8RbAcGboAcLnvAcMT8AcMX8AcSToAcrAaAcrFnAc8AbAc8MgAfGgrAfHboAfJnvAfLV8AfLkoAfMT8AfMnoAfQb8AfScrAfSgrAgAZ8AgFl3AgGX8AgHZvAgHgrAgJXoAgJX8AgJboAgLZoAgLn4AgOX8AgoATAgoAnAgoCUAgoJgAgoLXAgoMYAgoSeAgrDUAgrJTAhrFnAhrLjAhrQgAjAgoAjJnrAkMX8AkOnoAlCTvAlCV8AlClvAlFg4AlFl6AlFn3AloSnAlrAXAlrAfAlrFUAlrFbAlrGgAlrOXAlvKnAlvMTAl3AbAl3MnAnATrAnAcrAnCZ3AnCl8AnDg8AnFboAnFl3AnHX4AnHbrAnHgrAnIl3AnJgvAnLXoAnLX4AnLbrAnLgrAnLhrAnMXoAnMgrAnOn3AnSbrAnSeoAnvLnAn3OnCTGgvCTSlvCTvAUCTvKnCTvNTCT3CZCT3GUCT3MTCT8HnCUCZrCULf8CULnvCU3HnCU3JUCY6NUCbDb8CbFZoCbLnrCboOTCboScCbrFnCbvLnCb8AgCb8HgCb$LnCkLfoClBn3CloDUDTHT8DTLl3DTSU8DTrAaDTrLXDTrLjDTrOYDTrOgDTvFXDTvFnDT3HUDT3LfDUCT9DUDT4DUFVoDUFV8DUFkoDUGgrDUJnrDULl8DUMT8DUMXrDUMX4DUMg8DUOUoDUOgvDUOg8DUSToDUSZ8DbDXoDbDgoDbGT8DbJn3DbLg3DbLn4DbMXrDbMg8DbOToDboJXGTClvGTDT8GTFZrGTLVoGTLlvGTLl3GTMg8GTOTvGTSlrGToCUGTrDgGTrJYGTrScGTtLnGTvAnGTvQgGUCZrGUDTvGUFZoGUHXrGULnvGUMT8GUoMgGXoLnGXrMXGXrMnGXvFnGYLnvGZOnvGZvOnGZ8LaGZ8LmGbAl3GbDYvGbDlrGbHX3GbJl4GbLV8GbLn3GbMn4GboJTGboRfGbvFUGb3GUGb4JnGgDX3GgFl$GgJlrGgLX6GgLZoGgLf8GgOXoGgrAgGgrJXGgrMYGgrScGgvATGgvOYGnAgoGnJgvGnLZoGnLg3GnLnrGnQn8GnSbrGnrMgHTClvHTDToHTFT3HTQT8HToJTHToJgHTrDUHTrMnHTvFYHTvRfHT8MnHT8SUHUAZ8HUBb4HUDTvHUoMYHXFl6HXJX6HXQlrHXrAUHXrMnHXrSbHXvFYHXvKXHX3LjHX3MeHYvQlHZrScHZvDbHbAcrHbFT3HbFl3HbJT8HbLTrHbMT8HbMXrHbMbrHbQb8HbSX3HboDbHboJTHbrFUHbrHgHbrJTHb8JTHb8MnHb8QgHgAlrHgDT3HgGgrHgHgrHgJTrHgJT8HgLX@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!Ln$CTGXMnCToLZ4CTrHT8CT3JTrCT3RZrCT#GTvCU6GgvCU8Db8CU8GZrCU8HT8CboLl3CbrGgrCbrMU8Cb8DT3Cb8GnrCb8LX4Cb8MT8Cb8ObrCgrGgvCgrKX4Cl8FZoDTrAbvDTrDboDTrGT6DTrJgrDTrMX3DTrRZrDTrRg8DTvAVvDTvFZoDT3DT8DT3Ln3DT4HZrDT4MT8DT8AlrDT8MT8DUAkGbDUDbJnDYLnQlDbDUOYDbMTAnDbMXSnDboAT3DboFn4DboLnvDj6JTrGTCgFTGTGgFnGTJTMnGTLnPlGToJT8GTrCT3GTrLVoGTrLnvGTrMX3GTrMboGTvKl3GZClFnGZrDT3GZ8DTrGZ8FZ8GZ8MXvGZ8On8GZ8ST3GbCnQXGbMbFnGboFboGboJg3GboMXoGb3JTvGb3JboGb3Mn6Gb3Qb8GgDXLjGgMnAUGgrDloGgrHX4GgrSToGgvAXrGgvAZvGgvFbrGgvLl3GgvMnvGnDnLXGnrATrGnrMboGnuLl3HTATMnHTAgCnHTCTCTHTrGTvHTrHTvHTrJX8HTrLl8HTrMT8HTrMgoHTrOTrHTuOn3HTvAZrHTvDTvHTvGboHTvJU8HTvLl3HTvMXrHTvQb4HT4GT6HT4JT8HT4Jb#HT8Al3HT8GZrHT8GgrHT8HX4HT8Jb8HT8JnoHT8LTrHT8LgvHT8SToHT8SV8HUoJUoHUoJX8HUoLnrHXrLZoHXvAl3HX3LnrHX4FkvHX4LhrHX4MXoHX4OnoHZrAZ8HZrDb8HZrGZ8HZrJnrHZvGZ8HZvLnvHZ8JnvHZ8LhrHbCXJlHbMTAnHboJl4HbpLl3HbrJX8HbrLnrHbrMnvHbvRYrHgoSTrHgrFV8HgrGZ8HgrJXoHgrRnvHgvBb!HgvGTrHgvHX4HgvHn!HgvLTrHgvSU8HnDnLbHnFbJbHnvDn8Hn6GgvHn!BTvJTCTLnJTQgFnJTrAnvJTrLX4JTrOUoJTvFn3JTvLnrJTvNToJT3AgoJT3Jn4JT3LhvJT3ObrJT8AcrJT8Al3JT8JT8JT8JnoJT8LX4JT8LnrJT8MX3JT8Rg3JT8Sc8JUoBTvJU8AToJU8GZ8JU8GgvJU8JTrJU8JXrJU8JnrJU8LnvJU8ScvJXHnJlJXrGgvJXrJU8JXrLhrJXrMT8JXrMXrJXrQUoJXvCTvJXvGZ8JXvGgrJXvQT8JX8Ab8JX8DT8JX8GZ8JX8HZvJX8LnrJX8MT8JX8MXoJX8MnvJX8ST3JYGnCTJbAkGbJbCTAnJbLTAcJboDT3JboLb6JbrAnvJbrCn3JbrDl8JbrGboJbrIZoJbrJnvJbrMnvJbrQb4Jb8RZrJeAbAnJgJnFbJgScAnJgrATrJgvHZ8JgvMn4JlJlFbJlLiQXJlLjOnJlRbOlJlvNXoJlvRl3Jl4AcrJl8AUoJl8MnrJnFnMlJnHgGbJnoDT8JnoFV8JnoGgvJnoIT8JnoQToJnoRg3JnrCZ3JnrGgrJnrHTvJnrLf8JnrOX8JnvAT3JnvFZoJnvGT8JnvJl4JnvMT8JnvMX8JnvOXrJnvPX6JnvSX3JnvSZrJn3MT8Jn3MX8Jn3RTrLTATKnLTJnLTLTMXKnLTRTQlLToGb8LTrAZ8LTrCZ8LTrDb8LTrHT8LT3PX6LT4FZoLT$CTvLT$GgrLUvHX3LVoATrLVoAgoLVoJboLVoMX3LVoRg3LV8CZ3LV8FZoLV8GTvLXrDXoLXrFbrLXvAgvLXvFlrLXvLl3LXvRn6LX4Mb8LX8GT8LYCXMnLYrMnrLZoSTvLZrAZvLZrAloLZrFToLZrJXvLZrJboLZrJl4LZrLnrLZrMT8LZrOgvLZrRnvLZrST4LZvMX8LZvSlvLZ8AgoLZ8CT3LZ8JT8LZ8LV8LZ8LZoLZ8Lg8LZ8SV8LZ8SbrLZ$HT8LZ$Mn4La6CTvLbFbMnLbRYFTLbSnFZLboJT8LbrAT9LbrGb3LbrQb8LcrJX8LcrMXrLerHTvLerJbrLerNboLgrDb8LgrGZ8LgrHTrLgrMXrLgrSU8LgvJTrLgvLl3Lg6Ll3LhrLnrLhrMT8LhvAl4LiLnQXLkoAgrLkoJT8LkoJn4LlrSU8Ll3FZoLl3HTrLl3JX8Ll3JnoLl3LToLmLeFbLnDUFbLnLVAnLnrATrLnrAZoLnrAb8LnrAlrLnrGgvLnrJU8LnrLZrLnrLhrLnrMb8LnrOXrLnrSZ8LnvAb4LnvDTrLnvDl8LnvHTrLnvHbrLnvJT8LnvJU8LnvJbrLnvLhvLnvMX8LnvMb8LnvNnoLnvSU8Ln3Al3Ln4FZoLn4GT6Ln4JgvLn4LhrLn4MT8Ln4SToMToCZrMToJX8MToLX4MToLf8MToRg3MTrEloMTvGb6MT3BTrMT3Lb6MT8AcrMT8AgrMT8GZrMT8JnoMT8LnrMT8MX3MUOUAnMXAbFnMXoAloMXoJX8MXoLf8MXoLl8MXrAb8MXrDTvMXrGT8MXrGgrMXrHTrMXrLf8MXrMU8MXrOXvMXrQb8MXvGT8MXvHTrMXvLVoMX3AX3MX3Jn3MX3LhrMX3MX3MX4AlrMX4OboMX8GTvMX8GZrMX8GgrMX8JT8MX8JX8MX8LhrMX8MT8MYDUFbMYMgDbMbGnFfMbvLX4MbvLl3Mb8Mb8Mb8ST4MgGXCnMg8ATrMg8AgoMg8CZrMg8DTrMg8DboMg8HTrMg8JgrMg8LT8MloJXoMl8AhrMl8JT8MnLgAUMnoJXrMnoLX4MnoLhrMnoMT8MnrAl4MnrDb8MnrOTvMnrOgvMnrQb8MnrSU8MnvGgrMnvHZ8Mn3MToMn4DTrMn4LTrMn4Mg8NnBXAnOTFTFnOToAToOTrGgvOTrJX8OT3JXoOT6MTrOT8GgrOT8HTpOT8MToOUoHT8OUoJT8OUoLn3OXrAgoOXrDg8OXrMT8OXvSToOX6CTvOX8CZrOX8OgrOb6HgvOb8AToOb8MT8OcvLZ8OgvAlrOgvHTvOgvJTrOgvJnrOgvLZrOgvLn4OgvMT8OgvRTrOg8AZoOg8DbvOnrOXoOnvJn4OnvLhvOnvRTrOn3GgoOn3JnvOn6JbvOn8OTrPTGYFTPbBnFnPbGnDnPgDYQTPlrAnvPlrETvPlrLnvPlrMXvPlvFX4QTMTAnQTrJU8QYCnJlQYJlQlQbGTQbQb8JnrQb8LZoQb8LnvQb8MT8Qb8Ml8Qb8ST4QloAl4QloHZvQloJX8QloMn8QnJZOlRTrAZvRTrDTrRTvJn4RTvLhvRT4Jb8RZrAZrRZ8AkrRZ8JU8RZ8LV8RZ8LnvRbJlQXRg3GboRg3MnvRg8AZ8Rg8JboRg8Jl4RnLTCbRnvFl3RnvQb8SToAl4SToCZrSToFZoSToHXrSToJU8SToJgvSToJl4SToLhrSToMX3STrAlvSTrCT9STrCgrSTrGgrSTrHXrSTrHboSTrJnoSTrNboSTvLnrST4AZoST8Ab8ST8JT8SUoJn3SU6HZ#SU6JTvSU8Db8SU8HboSU8LgrSV8JT8SZrAcrSZrAl3SZrJT8SZrJnvSZrMT8SZvLUoSZ4FZoSZ8JnoSZ8RZrScoLnrScoMT8ScoMX8ScrAT4ScrAZ8ScrLZ8ScrLkvScvDb8ScvLf8ScvNToSgrFZrShvKnrSloHUoSloLnrSlrMXoSl8HgrSmrJUoSn3BX6\",\n \"ATFlOn3ATLgrDYAT4MTAnAT8LTMnAYJnRTrAbGgJnrAbLV8LnAbvNTAnAeFbLg3AgOYMXoAlQbFboAnDboAfAnJgoJTBToDgAnBUJbAl3BboDUAnCTDlvLnCTFTrSnCYoQTLnDTwAbAnDUDTrSnDUHgHgrDX8LXFnDbJXAcrETvLTLnGTFTQbrGTMnGToGT3DUFbGUJlPX3GbQg8LnGboJbFnGb3GgAYGgAg8ScGgMbAXrGgvAbAnGnJTLnvGnvATFgHTDT6ATHTrDlJnHYLnMn8HZrSbJTHZ8LTFnHbFTJUoHgSeMT8HgrLjAnHgvAbAnHlFUrDlHnDgvAnHnHTFT3HnQTGnrJTAaMXvJTGbCn3JTOgrAnJXvAXMnJbMg8SnJbMnRg3Jb8LTMnJnAl3OnJnGYrQlJnJlQY3LTDlCn3LTJjLg3LTLgvFXLTMg3GTLV8HUOgLXFZLg3LXNXrMnLX8QXFnLX9AlMYLYLXPXrLZAbJU8LZDUJU8LZMXrSnLZ$AgFnLaPXrDULbFYrMnLbMn8LXLboJgJgLeFbLg3LgLZrSnLgOYAgoLhrRnJlLkCTrSnLkOnLhrLnFX%AYLnFZoJXLnHTvJbLnLloAbMTATLf8MTHgJn3MTMXrAXMT3MTFnMUITvFnMXFX%AYMXMXvFbMXrFTDbMYAcMX3MbLf8SnMb8JbFnMgMXrMTMgvAXFnMgvGgCmMnAloSnMnFnJTrOXvMXSnOX8HTMnObJT8ScObLZFl3ObMXCZoPTLgrQXPUFnoQXPU3RXJlPX3RkQXPbrJXQlPlrJbFnQUAhrDbQXGnCXvQYLnHlvQbLfLnvRTOgvJbRXJYrQlRYLnrQlRbLnrQlRlFT8JlRlFnrQXSTClCn3STHTrAnSTLZQlrSTMnGTrSToHgGbSTrGTDnSTvGXCnST3HgFbSU3HXAXSbAnJn3SbFT8LnScLfLnv\",\n \"AT3JgJX8AT8FZoSnAT8JgFV8AT8LhrDbAZ8JT8DbAb8GgLhrAb8SkLnvAe8MT8SnAlMYJXLVAl3GYDTvAl3LfLnvBUDTvLl3CTOn3HTrCT3DUGgrCU8MT8AbCbFTrJUoCgrDb8MTDTLV8JX8DTLnLXQlDT8LZrSnDUQb8FZ8DUST4JnvDb8ScOUoDj6GbJl4GTLfCYMlGToAXvFnGboAXvLnGgAcrJn3GgvFnSToGnLf8JnvGn#HTDToHTLnFXJlHTvATFToHTvHTDToHTvMTAgoHT3STClvHT4AlFl6HT8HTDToHUoDgJTrHUoScMX3HbRZrMXoHboJg8LTHgDb8JTrHgMToLf8HgvLnLnoHnHn3HT4Hn6MgvAnJTJU8ScvJT3AaQT8JT8HTrAnJXrRg8AnJbAloMXoJbrATFToJbvMnoSnJgDb6GgvJgDb8MXoJgSX3JU8JguATFToJlPYLnQlJlQkDnLbJlQlFYJlJl8Lf8OTJnCTFnLbJnLTHXMnJnLXGXCnJnoFfRg3JnrMYRg3Jn3HgFl3KT8Dg8LnLTRlFnPTLTvPbLbvLVoSbrCZLXMY6HT3LXNU7DlrLXNXDTATLX8DX8LnLZDb8JU8LZMnoLhrLZSToJU8LZrLaLnrLZvJn3SnLZ8LhrSnLaJnoMT8LbFlrHTvLbrFTLnrLbvATLlvLb6OTFn3LcLnJZOlLeAT6Mn4LeJT3ObrLg6LXFlrLhrJg8LnLhvDlPX4LhvLfLnvLj6JTFT3LnFbrMXoLnQluCTvLnrQXCY6LnvLfLnvLnvMgLnvLnvSeLf8MTMbrJn3MT3JgST3MT8AnATrMT8LULnrMUMToCZrMUScvLf8MXoDT8SnMX6ATFToMX8AXMT8MX8FkMT8MX8HTrDUMX8ScoSnMYJT6CTvMgAcrMXoMg8SToAfMlvAXLg3MnFl3AnvOT3AnFl3OUoATHT8OU3RnLXrOXrOXrSnObPbvFn6Og8HgrSnOg8OX8DbPTvAgoJgPU3RYLnrPXrDnJZrPb8CTGgvPlrLTDlvPlvFUJnoQUvFXrQlQeMnoAl3QlrQlrSnRTFTrJUoSTDlLiLXSTFg6HT3STJgoMn4STrFTJTrSTrLZFl3ST4FnMXoSUrDlHUoScvHTvSnSfLkvMXo\",\n \"AUoAcrMXoAZ8HboAg8AbOg6ATFgAg8AloMXoAl3AT8JTrAl8MX8MXoCT3SToJU8Cl8Db8MXoDT8HgrATrDboOT8MXoGTOTrATMnGT8LhrAZ8GnvFnGnQXHToGgvAcrHTvAXvLl3HbrAZoMXoHgBlFXLg3HgMnFXrSnHgrSb8JUoHn6HT8LgvITvATrJUoJUoLZrRnvJU8HT8Jb8JXvFX8QT8JXvLToJTrJYrQnGnQXJgrJnoATrJnoJU8ScvJnvMnvMXoLTCTLgrJXLTJlRTvQlLbRnJlQYvLbrMb8LnvLbvFn3RnoLdCVSTGZrLeSTvGXCnLg3MnoLn3MToLlrETvMT8SToAl3MbrDU6GTvMb8LX4LhrPlrLXGXCnSToLf8Rg3STrDb8LTrSTvLTHXMnSb3RYLnMnSgOg6ATFg\",\n \"HUDlGnrQXrJTrHgLnrAcJYMb8DULc8LTvFgGnCk3Mg8JbAnLX4QYvFYHnMXrRUoJnGnvFnRlvFTJlQnoSTrBXHXrLYSUJgLfoMT8Se8DTrHbDb\",\n \"AbDl8SToJU8An3RbAb8ST8DUSTrGnrAgoLbFU6Db8LTrMg8AaHT8Jb8ObDl8SToJU8Pb3RlvFYoJl\"\n]\n\nconst codes = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*\"\n\nfunction getHangul(code: number): string {\n if (code >= 40) {\n code = code + 168 - 40;\n } else if (code >= 19) {\n code = code + 97 - 19;\n }\n\n return toUtf8String([ 225, (code >> 6) + 132, (code & 0x3f) + 128]);\n}\n\nlet wordlist: Array = null;\n\nfunction loadWords(lang: Wordlist): void {\n if (wordlist != null) { return; }\n\n wordlist = [];\n\n data.forEach((data, length) => {\n length += 4;\n for (let i = 0; i < data.length; i += length) {\n let word = \"\";\n for (let j = 0; j < length; j++) {\n word += getHangul(codes.indexOf(data[i + j]));\n }\n wordlist.push(word)\n }\n });\n\n wordlist.sort();\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0xf9eddeace9c5d3da9c93cf7d3cd38f6a13ed3affb933259ae865714e8a3ae71a\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for ko (Korean) FAILED\");\n }\n}\n\n\nclass LangKo extends Wordlist {\n constructor() {\n super(\"ko\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n}\n\nconst langKo = new LangKo();\nWordlist.register(langKo);\n\nexport { langKo }\n", "\"use strict\";\n\nimport { Wordlist } from \"./wordlist\";\n\nconst words = \"AbacoAbbaglioAbbinatoAbeteAbissoAbolireAbrasivoAbrogatoAccadereAccennoAccusatoAcetoneAchilleAcidoAcquaAcreAcrilicoAcrobataAcutoAdagioAddebitoAddomeAdeguatoAderireAdipeAdottareAdulareAffabileAffettoAffissoAffrantoAforismaAfosoAfricanoAgaveAgenteAgevoleAggancioAgireAgitareAgonismoAgricoloAgrumetoAguzzoAlabardaAlatoAlbatroAlberatoAlboAlbumeAlceAlcolicoAlettoneAlfaAlgebraAlianteAlibiAlimentoAllagatoAllegroAllievoAllodolaAllusivoAlmenoAlogenoAlpacaAlpestreAltalenaAlternoAlticcioAltroveAlunnoAlveoloAlzareAmalgamaAmanitaAmarenaAmbitoAmbratoAmebaAmericaAmetistaAmicoAmmassoAmmendaAmmirareAmmonitoAmoreAmpioAmpliareAmuletoAnacardoAnagrafeAnalistaAnarchiaAnatraAncaAncellaAncoraAndareAndreaAnelloAngeloAngolareAngustoAnimaAnnegareAnnidatoAnnoAnnuncioAnonimoAnticipoAnziApaticoAperturaApodeApparireAppetitoAppoggioApprodoAppuntoAprileArabicaArachideAragostaAraldicaArancioAraturaArazzoArbitroArchivioArditoArenileArgentoArgineArgutoAriaArmoniaArneseArredatoArringaArrostoArsenicoArsoArteficeArzilloAsciuttoAscoltoAsepsiAsetticoAsfaltoAsinoAsolaAspiratoAsproAssaggioAsseAssolutoAssurdoAstaAstenutoAsticeAstrattoAtavicoAteismoAtomicoAtonoAttesaAttivareAttornoAttritoAttualeAusilioAustriaAutistaAutonomoAutunnoAvanzatoAvereAvvenireAvvisoAvvolgereAzioneAzotoAzzimoAzzurroBabeleBaccanoBacinoBacoBadessaBadilataBagnatoBaitaBalconeBaldoBalenaBallataBalzanoBambinoBandireBaraondaBarbaroBarcaBaritonoBarlumeBaroccoBasilicoBassoBatostaBattutoBauleBavaBavosaBeccoBeffaBelgioBelvaBendaBenevoleBenignoBenzinaBereBerlinaBetaBibitaBiciBidoneBifidoBigaBilanciaBimboBinocoloBiologoBipedeBipolareBirbanteBirraBiscottoBisestoBisnonnoBisonteBisturiBizzarroBlandoBlattaBollitoBonificoBordoBoscoBotanicoBottinoBozzoloBraccioBradipoBramaBrancaBravuraBretellaBrevettoBrezzaBrigliaBrillanteBrindareBroccoloBrodoBronzinaBrulloBrunoBubboneBucaBudinoBuffoneBuioBulboBuonoBurloneBurrascaBussolaBustaCadettoCaducoCalamaroCalcoloCalesseCalibroCalmoCaloriaCambusaCamerataCamiciaCamminoCamolaCampaleCanapaCandelaCaneCaninoCanottoCantinaCapaceCapelloCapitoloCapogiroCapperoCapraCapsulaCarapaceCarcassaCardoCarismaCarovanaCarrettoCartolinaCasaccioCascataCasermaCasoCassoneCastelloCasualeCatastaCatenaCatrameCautoCavilloCedibileCedrataCefaloCelebreCellulareCenaCenoneCentesimoCeramicaCercareCertoCerumeCervelloCesoiaCespoCetoChelaChiaroChiccaChiedereChimeraChinaChirurgoChitarraCiaoCiclismoCifrareCignoCilindroCiottoloCircaCirrosiCitricoCittadinoCiuffoCivettaCivileClassicoClinicaCloroCoccoCodardoCodiceCoerenteCognomeCollareColmatoColoreColposoColtivatoColzaComaCometaCommandoComodoComputerComuneConcisoCondurreConfermaCongelareConiugeConnessoConoscereConsumoContinuoConvegnoCopertoCopioneCoppiaCopricapoCorazzaCordataCoricatoCorniceCorollaCorpoCorredoCorsiaCorteseCosmicoCostanteCotturaCovatoCratereCravattaCreatoCredereCremosoCrescitaCretaCricetoCrinaleCrisiCriticoCroceCronacaCrostataCrucialeCruscaCucireCuculoCuginoCullatoCupolaCuratoreCursoreCurvoCuscinoCustodeDadoDainoDalmataDamerinoDanielaDannosoDanzareDatatoDavantiDavveroDebuttoDecennioDecisoDeclinoDecolloDecretoDedicatoDefinitoDeformeDegnoDelegareDelfinoDelirioDeltaDemenzaDenotatoDentroDepositoDerapataDerivareDerogaDescrittoDesertoDesiderioDesumereDetersivoDevotoDiametroDicembreDiedroDifesoDiffusoDigerireDigitaleDiluvioDinamicoDinnanziDipintoDiplomaDipoloDiradareDireDirottoDirupoDisagioDiscretoDisfareDisgeloDispostoDistanzaDisumanoDitoDivanoDiveltoDividereDivoratoDobloneDocenteDoganaleDogmaDolceDomatoDomenicaDominareDondoloDonoDormireDoteDottoreDovutoDozzinaDragoDruidoDubbioDubitareDucaleDunaDuomoDupliceDuraturoEbanoEccessoEccoEclissiEconomiaEderaEdicolaEdileEditoriaEducareEgemoniaEgliEgoismoEgregioElaboratoElargireEleganteElencatoElettoElevareElficoElicaElmoElsaElusoEmanatoEmblemaEmessoEmiroEmotivoEmozioneEmpiricoEmuloEndemicoEnduroEnergiaEnfasiEnotecaEntrareEnzimaEpatiteEpilogoEpisodioEpocaleEppureEquatoreErarioErbaErbosoEredeEremitaErigereErmeticoEroeErosivoErranteEsagonoEsameEsanimeEsaudireEscaEsempioEsercitoEsibitoEsigenteEsistereEsitoEsofagoEsortatoEsosoEspansoEspressoEssenzaEssoEstesoEstimareEstoniaEstrosoEsultareEtilicoEtnicoEtruscoEttoEuclideoEuropaEvasoEvidenzaEvitatoEvolutoEvvivaFabbricaFaccendaFachiroFalcoFamigliaFanaleFanfaraFangoFantasmaFareFarfallaFarinosoFarmacoFasciaFastosoFasulloFaticareFatoFavolosoFebbreFecolaFedeFegatoFelpaFeltroFemminaFendereFenomenoFermentoFerroFertileFessuraFestivoFettaFeudoFiabaFiduciaFifaFiguratoFiloFinanzaFinestraFinireFioreFiscaleFisicoFiumeFlaconeFlamencoFleboFlemmaFloridoFluenteFluoroFobicoFocacciaFocosoFoderatoFoglioFolataFolcloreFolgoreFondenteFoneticoFoniaFontanaForbitoForchettaForestaFormicaFornaioForoFortezzaForzareFosfatoFossoFracassoFranaFrassinoFratelloFreccettaFrenataFrescoFrigoFrollinoFrondeFrugaleFruttaFucilataFucsiaFuggenteFulmineFulvoFumanteFumettoFumosoFuneFunzioneFuocoFurboFurgoneFuroreFusoFutileGabbianoGaffeGalateoGallinaGaloppoGamberoGammaGaranziaGarboGarofanoGarzoneGasdottoGasolioGastricoGattoGaudioGazeboGazzellaGecoGelatinaGelsoGemelloGemmatoGeneGenitoreGennaioGenotipoGergoGhepardoGhiaccioGhisaGialloGildaGineproGiocareGioielloGiornoGioveGiratoGironeGittataGiudizioGiuratoGiustoGlobuloGlutineGnomoGobbaGolfGomitoGommoneGonfioGonnaGovernoGracileGradoGraficoGrammoGrandeGrattareGravosoGraziaGrecaGreggeGrifoneGrigioGrinzaGrottaGruppoGuadagnoGuaioGuantoGuardareGufoGuidareIbernatoIconaIdenticoIdillioIdoloIdraIdricoIdrogenoIgieneIgnaroIgnoratoIlareIllesoIllogicoIlludereImballoImbevutoImboccoImbutoImmaneImmersoImmolatoImpaccoImpetoImpiegoImportoImprontaInalareInarcareInattivoIncantoIncendioInchinoIncisivoInclusoIncontroIncrocioIncuboIndagineIndiaIndoleIneditoInfattiInfilareInflittoIngaggioIngegnoIngleseIngordoIngrossoInnescoInodoreInoltrareInondatoInsanoInsettoInsiemeInsonniaInsulinaIntasatoInteroIntonacoIntuitoInumidireInvalidoInveceInvitoIperboleIpnoticoIpotesiIppicaIrideIrlandaIronicoIrrigatoIrrorareIsolatoIsotopoIstericoIstitutoIstriceItaliaIterareLabbroLabirintoLaccaLaceratoLacrimaLacunaLaddoveLagoLampoLancettaLanternaLardosoLargaLaringeLastraLatenzaLatinoLattugaLavagnaLavoroLegaleLeggeroLemboLentezzaLenzaLeoneLepreLesivoLessatoLestoLetteraleLevaLevigatoLiberoLidoLievitoLillaLimaturaLimitareLimpidoLineareLinguaLiquidoLiraLiricaLiscaLiteLitigioLivreaLocandaLodeLogicaLombareLondraLongevoLoquaceLorenzoLotoLotteriaLuceLucidatoLumacaLuminosoLungoLupoLuppoloLusingaLussoLuttoMacabroMacchinaMaceroMacinatoMadamaMagicoMagliaMagneteMagroMaiolicaMalafedeMalgradoMalintesoMalsanoMaltoMalumoreManaManciaMandorlaMangiareManifestoMannaroManovraMansardaMantideManubrioMappaMaratonaMarcireMarettaMarmoMarsupioMascheraMassaiaMastinoMaterassoMatricolaMattoneMaturoMazurcaMeandroMeccanicoMecenateMedesimoMeditareMegaMelassaMelisMelodiaMeningeMenoMensolaMercurioMerendaMerloMeschinoMeseMessereMestoloMetalloMetodoMettereMiagolareMicaMicelioMicheleMicroboMidolloMieleMiglioreMilanoMiliteMimosaMineraleMiniMinoreMirinoMirtilloMiscelaMissivaMistoMisurareMitezzaMitigareMitraMittenteMnemonicoModelloModificaModuloMoganoMogioMoleMolossoMonasteroMoncoMondinaMonetarioMonileMonotonoMonsoneMontatoMonvisoMoraMordereMorsicatoMostroMotivatoMotosegaMottoMovenzaMovimentoMozzoMuccaMucosaMuffaMughettoMugnaioMulattoMulinelloMultiploMummiaMuntoMuovereMuraleMusaMuscoloMusicaMutevoleMutoNababboNaftaNanometroNarcisoNariceNarratoNascereNastrareNaturaleNauticaNaviglioNebulosaNecrosiNegativoNegozioNemmenoNeofitaNerettoNervoNessunoNettunoNeutraleNeveNevroticoNicchiaNinfaNitidoNobileNocivoNodoNomeNominaNordicoNormaleNorvegeseNostranoNotareNotiziaNotturnoNovellaNucleoNullaNumeroNuovoNutrireNuvolaNuzialeOasiObbedireObbligoObeliscoOblioOboloObsoletoOccasioneOcchioOccidenteOccorrereOccultareOcraOculatoOdiernoOdorareOffertaOffrireOffuscatoOggettoOggiOgnunoOlandeseOlfattoOliatoOlivaOlogrammaOltreOmaggioOmbelicoOmbraOmegaOmissioneOndosoOnereOniceOnnivoroOnorevoleOntaOperatoOpinioneOppostoOracoloOrafoOrdineOrecchinoOreficeOrfanoOrganicoOrigineOrizzonteOrmaOrmeggioOrnativoOrologioOrrendoOrribileOrtensiaOrticaOrzataOrzoOsareOscurareOsmosiOspedaleOspiteOssaOssidareOstacoloOsteOtiteOtreOttagonoOttimoOttobreOvaleOvestOvinoOviparoOvocitoOvunqueOvviareOzioPacchettoPacePacificoPadellaPadronePaesePagaPaginaPalazzinaPalesarePallidoPaloPaludePandoroPannelloPaoloPaonazzoPapricaParabolaParcellaParerePargoloPariParlatoParolaPartireParvenzaParzialePassivoPasticcaPataccaPatologiaPattumePavonePeccatoPedalarePedonalePeggioPelosoPenarePendicePenisolaPennutoPenombraPensarePentolaPepePepitaPerbenePercorsoPerdonatoPerforarePergamenaPeriodoPermessoPernoPerplessoPersuasoPertugioPervasoPesatorePesistaPesoPestiferoPetaloPettinePetulantePezzoPiacerePiantaPiattinoPiccinoPicozzaPiegaPietraPifferoPigiamaPigolioPigroPilaPiliferoPillolaPilotaPimpantePinetaPinnaPinoloPioggiaPiomboPiramidePireticoPiritePirolisiPitonePizzicoPlaceboPlanarePlasmaPlatanoPlenarioPochezzaPoderosoPodismoPoesiaPoggiarePolentaPoligonoPollicePolmonitePolpettaPolsoPoltronaPolverePomicePomodoroPontePopolosoPorfidoPorosoPorporaPorrePortataPosaPositivoPossessoPostulatoPotassioPoterePranzoPrassiPraticaPreclusoPredicaPrefissoPregiatoPrelievoPremerePrenotarePreparatoPresenzaPretestoPrevalsoPrimaPrincipePrivatoProblemaProcuraProdurreProfumoProgettoProlungaPromessaPronomePropostaProrogaProtesoProvaPrudentePrugnaPruritoPsichePubblicoPudicaPugilatoPugnoPulcePulitoPulsantePuntarePupazzoPupillaPuroQuadroQualcosaQuasiQuerelaQuotaRaccoltoRaddoppioRadicaleRadunatoRafficaRagazzoRagioneRagnoRamarroRamingoRamoRandagioRantolareRapatoRapinaRappresoRasaturaRaschiatoRasenteRassegnaRastrelloRataRavvedutoRealeRecepireRecintoReclutaReconditoRecuperoRedditoRedimereRegalatoRegistroRegolaRegressoRelazioneRemareRemotoRennaReplicaReprimereReputareResaResidenteResponsoRestauroReteRetinaRetoricaRettificaRevocatoRiassuntoRibadireRibelleRibrezzoRicaricaRiccoRicevereRiciclatoRicordoRicredutoRidicoloRidurreRifasareRiflessoRiformaRifugioRigareRigettatoRighelloRilassatoRilevatoRimanereRimbalzoRimedioRimorchioRinascitaRincaroRinforzoRinnovoRinomatoRinsavitoRintoccoRinunciaRinvenireRiparatoRipetutoRipienoRiportareRipresaRipulireRisataRischioRiservaRisibileRisoRispettoRistoroRisultatoRisvoltoRitardoRitegnoRitmicoRitrovoRiunioneRivaRiversoRivincitaRivoltoRizomaRobaRoboticoRobustoRocciaRocoRodaggioRodereRoditoreRogitoRollioRomanticoRompereRonzioRosolareRospoRotanteRotondoRotulaRovescioRubizzoRubricaRugaRullinoRumineRumorosoRuoloRupeRussareRusticoSabatoSabbiareSabotatoSagomaSalassoSaldaturaSalgemmaSalivareSalmoneSaloneSaltareSalutoSalvoSapereSapidoSaporitoSaracenoSarcasmoSartoSassosoSatelliteSatiraSatolloSaturnoSavanaSavioSaziatoSbadiglioSbalzoSbancatoSbarraSbattereSbavareSbendareSbirciareSbloccatoSbocciatoSbrinareSbruffoneSbuffareScabrosoScadenzaScalaScambiareScandaloScapolaScarsoScatenareScavatoSceltoScenicoScettroSchedaSchienaSciarpaScienzaScindereScippoSciroppoScivoloSclerareScodellaScolpitoScompartoSconfortoScoprireScortaScossoneScozzeseScribaScrollareScrutinioScuderiaScultoreScuolaScuroScusareSdebitareSdoganareSeccaturaSecondoSedanoSeggiolaSegnalatoSegregatoSeguitoSelciatoSelettivoSellaSelvaggioSemaforoSembrareSemeSeminatoSempreSensoSentireSepoltoSequenzaSerataSerbatoSerenoSerioSerpenteSerraglioServireSestinaSetolaSettimanaSfaceloSfaldareSfamatoSfarzosoSfaticatoSferaSfidaSfilatoSfingeSfocatoSfoderareSfogoSfoltireSforzatoSfrattoSfruttatoSfuggitoSfumareSfusoSgabelloSgarbatoSgonfiareSgorbioSgrassatoSguardoSibiloSiccomeSierraSiglaSignoreSilenzioSillabaSimboloSimpaticoSimulatoSinfoniaSingoloSinistroSinoSintesiSinusoideSiparioSismaSistoleSituatoSlittaSlogaturaSlovenoSmarritoSmemoratoSmentitoSmeraldoSmilzoSmontareSmottatoSmussatoSnellireSnervatoSnodoSobbalzoSobrioSoccorsoSocialeSodaleSoffittoSognoSoldatoSolenneSolidoSollazzoSoloSolubileSolventeSomaticoSommaSondaSonettoSonniferoSopireSoppesoSopraSorgereSorpassoSorrisoSorsoSorteggioSorvolatoSospiroSostaSottileSpadaSpallaSpargereSpatolaSpaventoSpazzolaSpecieSpedireSpegnereSpelaturaSperanzaSpessoreSpettraleSpezzatoSpiaSpigolosoSpillatoSpinosoSpiraleSplendidoSportivoSposoSprangaSprecareSpronatoSpruzzoSpuntinoSquilloSradicareSrotolatoStabileStaccoStaffaStagnareStampatoStantioStarnutoStaseraStatutoSteloSteppaSterzoStilettoStimaStirpeStivaleStizzosoStonatoStoricoStrappoStregatoStriduloStrozzareStruttoStuccareStufoStupendoSubentroSuccosoSudoreSuggeritoSugoSultanoSuonareSuperboSupportoSurgelatoSurrogatoSussurroSuturaSvagareSvedeseSveglioSvelareSvenutoSveziaSviluppoSvistaSvizzeraSvoltaSvuotareTabaccoTabulatoTacciareTaciturnoTaleTalismanoTamponeTanninoTaraTardivoTargatoTariffaTarpareTartarugaTastoTatticoTavernaTavolataTazzaTecaTecnicoTelefonoTemerarioTempoTemutoTendoneTeneroTensioneTentacoloTeoremaTermeTerrazzoTerzettoTesiTesseratoTestatoTetroTettoiaTifareTigellaTimbroTintoTipicoTipografoTiraggioTiroTitanioTitoloTitubanteTizioTizzoneToccareTollerareToltoTombolaTomoTonfoTonsillaTopazioTopologiaToppaTorbaTornareTorroneTortoraToscanoTossireTostaturaTotanoTraboccoTracheaTrafilaTragediaTralcioTramontoTransitoTrapanoTrarreTraslocoTrattatoTraveTrecciaTremolioTrespoloTributoTrichecoTrifoglioTrilloTrinceaTrioTristezzaTrituratoTrivellaTrombaTronoTroppoTrottolaTrovareTruccatoTubaturaTuffatoTulipanoTumultoTunisiaTurbareTurchinoTutaTutelaUbicatoUccelloUccisoreUdireUditivoUffaUfficioUgualeUlisseUltimatoUmanoUmileUmorismoUncinettoUngereUnghereseUnicornoUnificatoUnisonoUnitarioUnteUovoUpupaUraganoUrgenzaUrloUsanzaUsatoUscitoUsignoloUsuraioUtensileUtilizzoUtopiaVacanteVaccinatoVagabondoVagliatoValangaValgoValicoVallettaValorosoValutareValvolaVampataVangareVanitosoVanoVantaggioVanveraVaporeVaranoVarcatoVarianteVascaVedettaVedovaVedutoVegetaleVeicoloVelcroVelinaVellutoVeloceVenatoVendemmiaVentoVeraceVerbaleVergognaVerificaVeroVerrucaVerticaleVescicaVessilloVestaleVeteranoVetrinaVetustoViandanteVibranteVicendaVichingoVicinanzaVidimareVigiliaVignetoVigoreVileVillanoViminiVincitoreViolaViperaVirgolaVirologoVirulentoViscosoVisioneVispoVissutoVisuraVitaVitelloVittimaVivandaVividoViziareVoceVogaVolatileVolereVolpeVoragineVulcanoZampognaZannaZappatoZatteraZavorraZefiroZelanteZeloZenzeroZerbinoZibettoZincoZirconeZittoZollaZoticoZuccheroZufoloZuluZuppa\";\n\nlet wordlist: Array = null;\n\nfunction loadWords(lang: Wordlist): void {\n if (wordlist != null) { return; }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \");\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0x5c1362d88fd4cf614a96f3234941d29f7d37c08c5292fde03bf62c2db6ff7620\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for it (Italian) FAILED\");\n }\n}\n\nclass LangIt extends Wordlist {\n constructor() {\n super(\"it\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n}\n\nconst langIt = new LangIt();\nWordlist.register(langIt);\n\nexport { langIt }\n", "\"use strict\";\n\nimport { toUtf8String } from \"@ethersproject/strings\";\n\nimport { Wordlist } from \"./wordlist\";\n\n\nconst data = \"}aE#4A=Yv&co#4N#6G=cJ&SM#66|/Z#4t&kn~46#4K~4q%b9=IR#7l,mB#7W_X2*dl}Uo~7s}Uf&Iw#9c&cw~6O&H6&wx&IG%v5=IQ~8a&Pv#47$PR&50%Ko&QM&3l#5f,D9#4L|/H&tQ;v0~6n]nN } = {\n zh_cn: null,\n zh_tw: null\n}\n\nconst Checks: { [key: string]: string } = {\n zh_cn: \"0x17bcc4d8547e5a7135e365d1ab443aaae95e76d8230c2782c67305d4f21497a1\",\n zh_tw: \"0x51e720e90c7b87bec1d70eb6e74a21a449bd3ec9c020b01d3a40ed991b60ce5d\"\n}\n\nconst codes = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nconst style = \"~!@#$%^&*_-=[]{}|;:,.()<>?\"\n\nfunction loadWords(lang: Wordlist) {\n if (wordlist[lang.locale] !== null) { return; }\n\n wordlist[lang.locale] = [];\n\n let deltaOffset = 0;\n for (let i = 0; i < 2048; i++) {\n const s = style.indexOf(data[i * 3]);\n const bytes = [\n 228 + (s >> 2),\n 128 + codes.indexOf(data[i * 3 + 1]),\n 128 + codes.indexOf(data[i * 3 + 2]),\n ];\n\n if (lang.locale === \"zh_tw\") {\n const common = s % 4;\n for (let i = common; i < 3; i++) {\n bytes[i] = codes.indexOf(deltaData[deltaOffset++]) + ((i == 0) ? 228: 128);\n }\n }\n\n wordlist[lang.locale].push(toUtf8String(bytes));\n }\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== Checks[lang.locale]) {\n wordlist[lang.locale] = null;\n throw new Error(\"BIP39 Wordlist for \" + lang.locale + \" (Chinese) FAILED\");\n }\n}\n\nclass LangZh extends Wordlist {\n constructor(country: string) {\n super(\"zh_\" + country);\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[this.locale][index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return wordlist[this.locale].indexOf(word);\n }\n\n split(mnemonic: string): Array {\n mnemonic = mnemonic.replace(/(?:\\u3000| )+/g, \"\");\n return mnemonic.split(\"\");\n }\n}\n\nconst langZhCn = new LangZh(\"cn\");\nWordlist.register(langZhCn);\nWordlist.register(langZhCn, \"zh\");\n\nconst langZhTw = new LangZh(\"tw\");\nWordlist.register(langZhTw);\n\nexport { langZhCn, langZhTw };\n", "import { Wordlist } from \"./wordlist\";\n\nimport { langCz as cz } from \"./lang-cz\";\nimport { langEn as en } from \"./lang-en\";\nimport { langEs as es } from \"./lang-es\";\nimport { langFr as fr } from \"./lang-fr\";\nimport { langJa as ja } from \"./lang-ja\";\nimport { langKo as ko } from \"./lang-ko\";\nimport { langIt as it } from \"./lang-it\";\nimport { langZhCn as zh_cn, langZhTw as zh_tw } from \"./lang-zh\";\n\nexport const wordlists: { [ locale: string ]: Wordlist } = {\n cz: cz,\n en: en,\n es: es,\n fr: fr,\n it: it,\n ja: ja,\n ko: ko,\n zh: zh_cn,\n zh_cn: zh_cn,\n zh_tw: zh_tw\n};\n\n\n", "\"use strict\";\n\n// Wordlists\n// See: https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md\n\nimport { logger, Wordlist } from \"./wordlist\";\n\nimport { wordlists } from \"./wordlists\";\n\nexport {\n logger,\n Wordlist,\n wordlists\n}\n", "export const version = \"hdnode/5.7.0\";\n", "\"use strict\";\n\n// See: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki\n// See: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\n\n\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\nimport { Base58 } from \"@ethersproject/basex\";\nimport { arrayify, BytesLike, concat, hexDataSlice, hexZeroPad, hexlify } from \"@ethersproject/bytes\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from \"@ethersproject/strings\";\nimport { pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeHmac, ripemd160, sha256, SupportedAlgorithm } from \"@ethersproject/sha2\";\nimport { computeAddress } from \"@ethersproject/transactions\";\nimport { Wordlist, wordlists } from \"@ethersproject/wordlists\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst N = BigNumber.from(\"0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\");\n\n\n// \"Bitcoin seed\"\nconst MasterSecret = toUtf8Bytes(\"Bitcoin seed\");\n\nconst HardenedBit = 0x80000000;\n\n// Returns a byte with the MSB bits set\nfunction getUpperMask(bits: number): number {\n return ((1 << bits) - 1) << (8 - bits);\n}\n\n// Returns a byte with the LSB bits set\nfunction getLowerMask(bits: number): number {\n return (1 << bits) - 1;\n}\n\nfunction bytes32(value: BigNumber | Uint8Array): string {\n return hexZeroPad(hexlify(value), 32);\n}\n\nfunction base58check(data: Uint8Array): string {\n return Base58.encode(concat([ data, hexDataSlice(sha256(sha256(data)), 0, 4) ]));\n}\n\nfunction getWordlist(wordlist: string | Wordlist): Wordlist {\n if (wordlist == null) {\n return wordlists[\"en\"];\n }\n\n if (typeof(wordlist) === \"string\") {\n const words = wordlists[wordlist];\n if (words == null) {\n logger.throwArgumentError(\"unknown locale\", \"wordlist\", wordlist);\n }\n return words;\n }\n\n return wordlist;\n}\n\nconst _constructorGuard: any = {};\n\nexport const defaultPath = \"m/44'/60'/0'/0/0\";\n\nexport interface Mnemonic {\n readonly phrase: string;\n readonly path: string;\n readonly locale: string;\n};\n\nexport class HDNode implements ExternallyOwnedAccount {\n readonly privateKey: string;\n readonly publicKey: string;\n\n readonly fingerprint: string;\n readonly parentFingerprint: string;\n\n readonly address: string;\n\n readonly mnemonic?: Mnemonic;\n readonly path: string;\n\n readonly chainCode: string;\n\n readonly index: number;\n readonly depth: number;\n\n /**\n * This constructor should not be called directly.\n *\n * Please use:\n * - fromMnemonic\n * - fromSeed\n */\n constructor(constructorGuard: any, privateKey: string, publicKey: string, parentFingerprint: string, chainCode: string, index: number, depth: number, mnemonicOrPath: Mnemonic | string) {\n /* istanbul ignore if */\n if (constructorGuard !== _constructorGuard) {\n throw new Error(\"HDNode constructor cannot be called directly\");\n }\n\n if (privateKey) {\n const signingKey = new SigningKey(privateKey);\n defineReadOnly(this, \"privateKey\", signingKey.privateKey);\n defineReadOnly(this, \"publicKey\", signingKey.compressedPublicKey);\n } else {\n defineReadOnly(this, \"privateKey\", null);\n defineReadOnly(this, \"publicKey\", hexlify(publicKey));\n }\n\n defineReadOnly(this, \"parentFingerprint\", parentFingerprint);\n defineReadOnly(this, \"fingerprint\", hexDataSlice(ripemd160(sha256(this.publicKey)), 0, 4));\n\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n\n defineReadOnly(this, \"chainCode\", chainCode);\n\n defineReadOnly(this, \"index\", index);\n defineReadOnly(this, \"depth\", depth);\n\n if (mnemonicOrPath == null) {\n // From a source that does not preserve the path (e.g. extended keys)\n defineReadOnly(this, \"mnemonic\", null);\n defineReadOnly(this, \"path\", null);\n\n } else if (typeof(mnemonicOrPath) === \"string\") {\n // From a source that does not preserve the mnemonic (e.g. neutered)\n defineReadOnly(this, \"mnemonic\", null);\n defineReadOnly(this, \"path\", mnemonicOrPath);\n\n } else {\n // From a fully qualified source\n defineReadOnly(this, \"mnemonic\", mnemonicOrPath);\n defineReadOnly(this, \"path\", mnemonicOrPath.path);\n }\n }\n\n get extendedKey(): string {\n // We only support the mainnet values for now, but if anyone needs\n // testnet values, let me know. I believe current sentiment is that\n // we should always use mainnet, and use BIP-44 to derive the network\n // - Mainnet: public=0x0488B21E, private=0x0488ADE4\n // - Testnet: public=0x043587CF, private=0x04358394\n\n if (this.depth >= 256) { throw new Error(\"Depth too large!\"); }\n\n return base58check(concat([\n ((this.privateKey != null) ? \"0x0488ADE4\": \"0x0488B21E\"),\n hexlify(this.depth),\n this.parentFingerprint,\n hexZeroPad(hexlify(this.index), 4),\n this.chainCode,\n ((this.privateKey != null) ? concat([ \"0x00\", this.privateKey ]): this.publicKey),\n ]));\n }\n\n neuter(): HDNode {\n return new HDNode(_constructorGuard, null, this.publicKey, this.parentFingerprint, this.chainCode, this.index, this.depth, this.path);\n }\n\n private _derive(index: number): HDNode {\n if (index > 0xffffffff) { throw new Error(\"invalid index - \" + String(index)); }\n\n // Base path\n let path = this.path;\n if (path) { path += \"/\" + (index & ~HardenedBit); }\n\n const data = new Uint8Array(37);\n\n if (index & HardenedBit) {\n if (!this.privateKey) {\n throw new Error(\"cannot derive child of neutered node\");\n }\n\n // Data = 0x00 || ser_256(k_par)\n data.set(arrayify(this.privateKey), 1);\n\n // Hardened path\n if (path) { path += \"'\"; }\n\n } else {\n // Data = ser_p(point(k_par))\n data.set(arrayify(this.publicKey));\n }\n\n // Data += ser_32(i)\n for (let i = 24; i >= 0; i -= 8) { data[33 + (i >> 3)] = ((index >> (24 - i)) & 0xff); }\n\n const I = arrayify(computeHmac(SupportedAlgorithm.sha512, this.chainCode, data));\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n\n // The private key\n let ki: string = null\n\n // The public key\n let Ki: string = null;\n\n if (this.privateKey) {\n ki = bytes32(BigNumber.from(IL).add(this.privateKey).mod(N));\n } else {\n const ek = new SigningKey(hexlify(IL));\n Ki = ek._addPoint(this.publicKey);\n }\n\n let mnemonicOrPath: Mnemonic | string = path;\n\n const srcMnemonic = this.mnemonic;\n if (srcMnemonic) {\n mnemonicOrPath = Object.freeze({\n phrase: srcMnemonic.phrase,\n path: path,\n locale: (srcMnemonic.locale || \"en\")\n });\n }\n\n return new HDNode(_constructorGuard, ki, Ki, this.fingerprint, bytes32(IR), index, this.depth + 1, mnemonicOrPath);\n }\n\n derivePath(path: string): HDNode {\n const components = path.split(\"/\");\n\n if (components.length === 0 || (components[0] === \"m\" && this.depth !== 0)) {\n throw new Error(\"invalid path - \" + path);\n }\n\n if (components[0] === \"m\") { components.shift(); }\n\n let result: HDNode = this;\n for (let i = 0; i < components.length; i++) {\n const component = components[i];\n if (component.match(/^[0-9]+'$/)) {\n const index = parseInt(component.substring(0, component.length - 1));\n if (index >= HardenedBit) { throw new Error(\"invalid path index - \" + component); }\n result = result._derive(HardenedBit + index);\n } else if (component.match(/^[0-9]+$/)) {\n const index = parseInt(component);\n if (index >= HardenedBit) { throw new Error(\"invalid path index - \" + component); }\n result = result._derive(index);\n } else {\n throw new Error(\"invalid path component - \" + component);\n }\n }\n\n return result;\n }\n\n\n static _fromSeed(seed: BytesLike, mnemonic: Mnemonic): HDNode {\n const seedArray: Uint8Array = arrayify(seed);\n if (seedArray.length < 16 || seedArray.length > 64) { throw new Error(\"invalid seed\"); }\n\n const I: Uint8Array = arrayify(computeHmac(SupportedAlgorithm.sha512, MasterSecret, seedArray));\n\n return new HDNode(_constructorGuard, bytes32(I.slice(0, 32)), null, \"0x00000000\", bytes32(I.slice(32)), 0, 0, mnemonic);\n }\n\n static fromMnemonic(mnemonic: string, password?: string, wordlist?: string | Wordlist): HDNode {\n\n // If a locale name was passed in, find the associated wordlist\n wordlist = getWordlist(wordlist);\n\n // Normalize the case and spacing in the mnemonic (throws if the mnemonic is invalid)\n mnemonic = entropyToMnemonic(mnemonicToEntropy(mnemonic, wordlist), wordlist);\n\n return HDNode._fromSeed(mnemonicToSeed(mnemonic, password), {\n phrase: mnemonic,\n path: \"m\",\n locale: wordlist.locale\n });\n }\n\n static fromSeed(seed: BytesLike): HDNode {\n return HDNode._fromSeed(seed, null);\n }\n\n static fromExtendedKey(extendedKey: string): HDNode {\n const bytes = Base58.decode(extendedKey);\n\n if (bytes.length !== 82 || base58check(bytes.slice(0, 78)) !== extendedKey) {\n logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[REDACTED]\");\n }\n\n const depth = bytes[4];\n const parentFingerprint = hexlify(bytes.slice(5, 9));\n const index = parseInt(hexlify(bytes.slice(9, 13)).substring(2), 16);\n const chainCode = hexlify(bytes.slice(13, 45));\n const key = bytes.slice(45, 78);\n\n switch (hexlify(bytes.slice(0, 4))) {\n // Public Key\n case \"0x0488b21e\": case \"0x043587cf\":\n return new HDNode(_constructorGuard, null, hexlify(key), parentFingerprint, chainCode, index, depth, null);\n\n // Private Key\n case \"0x0488ade4\": case \"0x04358394 \":\n if (key[0] !== 0) { break; }\n return new HDNode(_constructorGuard, hexlify(key.slice(1)), null, parentFingerprint, chainCode, index, depth, null);\n }\n\n return logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[REDACTED]\");\n }\n}\n\nexport function mnemonicToSeed(mnemonic: string, password?: string): string {\n if (!password) { password = \"\"; }\n\n const salt = toUtf8Bytes(\"mnemonic\" + password, UnicodeNormalizationForm.NFKD);\n\n return pbkdf2(toUtf8Bytes(mnemonic, UnicodeNormalizationForm.NFKD), salt, 2048, 64, \"sha512\");\n}\n\nexport function mnemonicToEntropy(mnemonic: string, wordlist?: string | Wordlist): string {\n wordlist = getWordlist(wordlist);\n\n logger.checkNormalize();\n\n const words = wordlist.split(mnemonic);\n if ((words.length % 3) !== 0) { throw new Error(\"invalid mnemonic\"); }\n\n const entropy = arrayify(new Uint8Array(Math.ceil(11 * words.length / 8)));\n\n let offset = 0;\n for (let i = 0; i < words.length; i++) {\n let index = wordlist.getWordIndex(words[i].normalize(\"NFKD\"));\n if (index === -1) { throw new Error(\"invalid mnemonic\"); }\n\n for (let bit = 0; bit < 11; bit++) {\n if (index & (1 << (10 - bit))) {\n entropy[offset >> 3] |= (1 << (7 - (offset % 8)));\n }\n offset++;\n }\n }\n\n const entropyBits = 32 * words.length / 3;\n\n const checksumBits = words.length / 3;\n const checksumMask = getUpperMask(checksumBits);\n\n const checksum = arrayify(sha256(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;\n\n if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {\n throw new Error(\"invalid checksum\");\n }\n\n return hexlify(entropy.slice(0, entropyBits / 8));\n}\n\nexport function entropyToMnemonic(entropy: BytesLike, wordlist?: string | Wordlist): string {\n wordlist = getWordlist(wordlist);\n\n entropy = arrayify(entropy);\n\n if ((entropy.length % 4) !== 0 || entropy.length < 16 || entropy.length > 32) {\n throw new Error(\"invalid entropy\");\n }\n\n const indices: Array = [ 0 ];\n\n let remainingBits = 11;\n for (let i = 0; i < entropy.length; i++) {\n\n // Consume the whole byte (with still more to go)\n if (remainingBits > 8) {\n indices[indices.length - 1] <<= 8;\n indices[indices.length - 1] |= entropy[i];\n\n remainingBits -= 8;\n\n // This byte will complete an 11-bit index\n } else {\n indices[indices.length - 1] <<= remainingBits;\n indices[indices.length - 1] |= entropy[i] >> (8 - remainingBits);\n\n // Start the next word\n indices.push(entropy[i] & getLowerMask(8 - remainingBits));\n\n remainingBits += 3;\n }\n }\n\n // Compute the checksum bits\n const checksumBits = entropy.length / 4;\n const checksum = arrayify(sha256(entropy))[0] & getUpperMask(checksumBits);\n\n // Shift the checksum into the word indices\n indices[indices.length - 1] <<= checksumBits;\n indices[indices.length - 1] |= (checksum >> (8 - checksumBits));\n\n return wordlist.join(indices.map((index) => (wordlist).getWord(index)));\n}\n\nexport function isValidMnemonic(mnemonic: string, wordlist?: Wordlist): boolean {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n return true;\n } catch (error) { }\n return false;\n}\n\nexport function getAccountPath(index: number): string {\n if (typeof(index) !== \"number\" || index < 0 || index >= HardenedBit || index % 1) {\n logger.throwArgumentError(\"invalid account index\", \"index\", index);\n }\n return `m/44'/60'/${ index }'/0/0`;\n}\n", "import { randomBytes as _randomBytes } from \"crypto\";\n\nimport { arrayify } from \"@ethersproject/bytes\";\n\nexport function randomBytes(length: number): Uint8Array {\n return arrayify(_randomBytes(length));\n}\n", "\"use strict\";\n\nexport function shuffled(array: Array): Array {\n array = array.slice();\n\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const tmp = array[i];\n array[i] = array[j];\n array[j] = tmp;\n }\n\n return array;\n}\n", "\"use strict\";\n\nexport { randomBytes } from \"./random\";\nexport { shuffled } from \"./shuffle\";\n", "\"use strict\";\n\n(function(root) {\n\n function checkInt(value) {\n return (parseInt(value) === value);\n }\n\n function checkInts(arrayish) {\n if (!checkInt(arrayish.length)) { return false; }\n\n for (var i = 0; i < arrayish.length; i++) {\n if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) {\n return false;\n }\n }\n\n return true;\n }\n\n function coerceArray(arg, copy) {\n\n // ArrayBuffer view\n if (arg.buffer && ArrayBuffer.isView(arg) && arg.name === 'Uint8Array') {\n\n if (copy) {\n if (arg.slice) {\n arg = arg.slice();\n } else {\n arg = Array.prototype.slice.call(arg);\n }\n }\n\n return arg;\n }\n\n // It's an array; check it is a valid representation of a byte\n if (Array.isArray(arg)) {\n if (!checkInts(arg)) {\n throw new Error('Array contains invalid value: ' + arg);\n }\n\n return new Uint8Array(arg);\n }\n\n // Something else, but behaves like an array (maybe a Buffer? Arguments?)\n if (checkInt(arg.length) && checkInts(arg)) {\n return new Uint8Array(arg);\n }\n\n throw new Error('unsupported array-like object');\n }\n\n function createArray(length) {\n return new Uint8Array(length);\n }\n\n function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) {\n if (sourceStart != null || sourceEnd != null) {\n if (sourceArray.slice) {\n sourceArray = sourceArray.slice(sourceStart, sourceEnd);\n } else {\n sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd);\n }\n }\n targetArray.set(sourceArray, targetStart);\n }\n\n\n\n var convertUtf8 = (function() {\n function toBytes(text) {\n var result = [], i = 0;\n text = encodeURI(text);\n while (i < text.length) {\n var c = text.charCodeAt(i++);\n\n // if it is a % sign, encode the following 2 bytes as a hex value\n if (c === 37) {\n result.push(parseInt(text.substr(i, 2), 16))\n i += 2;\n\n // otherwise, just the actual byte\n } else {\n result.push(c)\n }\n }\n\n return coerceArray(result);\n }\n\n function fromBytes(bytes) {\n var result = [], i = 0;\n\n while (i < bytes.length) {\n var c = bytes[i];\n\n if (c < 128) {\n result.push(String.fromCharCode(c));\n i++;\n } else if (c > 191 && c < 224) {\n result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f)));\n i += 2;\n } else {\n result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f)));\n i += 3;\n }\n }\n\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n var convertHex = (function() {\n function toBytes(text) {\n var result = [];\n for (var i = 0; i < text.length; i += 2) {\n result.push(parseInt(text.substr(i, 2), 16));\n }\n\n return result;\n }\n\n // http://ixti.net/development/javascript/2011/11/11/base64-encodedecode-of-utf8-in-browser-with-js.html\n var Hex = '0123456789abcdef';\n\n function fromBytes(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i++) {\n var v = bytes[i];\n result.push(Hex[(v & 0xf0) >> 4] + Hex[v & 0x0f]);\n }\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n\n // Number of rounds by keysize\n var numberOfRounds = {16: 10, 24: 12, 32: 14}\n\n // Round constant words\n var rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n\n // S-box and Inverse S-box (S is for Substitution)\n var S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\n var Si =[0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n\n // Transformations for encryption\n var T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\n var T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\n var T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\n var T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n\n // Transformations for decryption\n var T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\n var T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\n var T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\n var T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n\n // Transformations for decryption key expansion\n var U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\n var U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\n var U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\n var U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\n\n function convertToInt32(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i += 4) {\n result.push(\n (bytes[i ] << 24) |\n (bytes[i + 1] << 16) |\n (bytes[i + 2] << 8) |\n bytes[i + 3]\n );\n }\n return result;\n }\n\n var AES = function(key) {\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n Object.defineProperty(this, 'key', {\n value: coerceArray(key, true)\n });\n\n this._prepare();\n }\n\n\n AES.prototype._prepare = function() {\n\n var rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new Error('invalid key size (must be 16, 24 or 32 bytes)');\n }\n\n // encryption round keys\n this._Ke = [];\n\n // decryption round keys\n this._Kd = [];\n\n for (var i = 0; i <= rounds; i++) {\n this._Ke.push([0, 0, 0, 0]);\n this._Kd.push([0, 0, 0, 0]);\n }\n\n var roundKeyCount = (rounds + 1) * 4;\n var KC = this.key.length / 4;\n\n // convert the key into ints\n var tk = convertToInt32(this.key);\n\n // copy values into round key arrays\n var index;\n for (var i = 0; i < KC; i++) {\n index = i >> 2;\n this._Ke[index][i % 4] = tk[i];\n this._Kd[rounds - index][i % 4] = tk[i];\n }\n\n // key expansion (fips-197 section 5.2)\n var rconpointer = 0;\n var t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[ tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (var i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n } else {\n for (var i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n\n tk[KC / 2] ^= (S[ tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n\n for (var i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n\n // copy values into round key arrays\n var i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n this._Ke[r][c] = tk[i];\n this._Kd[rounds - r][c] = tk[i++];\n t++;\n }\n }\n\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (var r = 1; r < rounds; r++) {\n for (var c = 0; c < 4; c++) {\n tt = this._Kd[r][c];\n this._Kd[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[ tt & 0xFF]);\n }\n }\n }\n\n AES.prototype.encrypt = function(plaintext) {\n if (plaintext.length != 16) {\n throw new Error('invalid plaintext size (must be 16 bytes)');\n }\n\n var rounds = this._Ke.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(plaintext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Ke[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T1[(t[ i ] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[ t[(i + 3) % 4] & 0xff] ^\n this._Ke[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Ke[rounds][i];\n result[4 * i ] = (S[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[ t[(i + 3) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n AES.prototype.decrypt = function(ciphertext) {\n if (ciphertext.length != 16) {\n throw new Error('invalid ciphertext size (must be 16 bytes)');\n }\n\n var rounds = this._Kd.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(ciphertext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Kd[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T5[(t[ i ] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[ t[(i + 1) % 4] & 0xff] ^\n this._Kd[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Kd[rounds][i];\n result[4 * i ] = (Si[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[ t[(i + 1) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n\n /**\n * Mode Of Operation - Electonic Codebook (ECB)\n */\n var ModeOfOperationECB = function(key) {\n if (!(this instanceof ModeOfOperationECB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Electronic Code Block\";\n this.name = \"ecb\";\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationECB.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n block = this._aes.encrypt(block);\n copyArray(block, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationECB.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n copyArray(block, plaintext, i);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Block Chaining (CBC)\n */\n var ModeOfOperationCBC = function(key, iv) {\n if (!(this instanceof ModeOfOperationCBC)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Block Chaining\";\n this.name = \"cbc\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastCipherblock = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCBC.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n\n for (var j = 0; j < 16; j++) {\n block[j] ^= this._lastCipherblock[j];\n }\n\n this._lastCipherblock = this._aes.encrypt(block);\n copyArray(this._lastCipherblock, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationCBC.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n\n for (var j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ this._lastCipherblock[j];\n }\n\n copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Feedback (CFB)\n */\n var ModeOfOperationCFB = function(key, iv, segmentSize) {\n if (!(this instanceof ModeOfOperationCFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Feedback\";\n this.name = \"cfb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 size)');\n }\n\n if (!segmentSize) { segmentSize = 1; }\n\n this.segmentSize = segmentSize;\n\n this._shiftRegister = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCFB.prototype.encrypt = function(plaintext) {\n if ((plaintext.length % this.segmentSize) != 0) {\n throw new Error('invalid plaintext size (must be segmentSize bytes)');\n }\n\n var encrypted = coerceArray(plaintext, true);\n\n var xorSegment;\n for (var i = 0; i < encrypted.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n for (var j = 0; j < this.segmentSize; j++) {\n encrypted[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return encrypted;\n }\n\n ModeOfOperationCFB.prototype.decrypt = function(ciphertext) {\n if ((ciphertext.length % this.segmentSize) != 0) {\n throw new Error('invalid ciphertext size (must be segmentSize bytes)');\n }\n\n var plaintext = coerceArray(ciphertext, true);\n\n var xorSegment;\n for (var i = 0; i < plaintext.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n\n for (var j = 0; j < this.segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return plaintext;\n }\n\n /**\n * Mode Of Operation - Output Feedback (OFB)\n */\n var ModeOfOperationOFB = function(key, iv) {\n if (!(this instanceof ModeOfOperationOFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Output Feedback\";\n this.name = \"ofb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastPrecipher = coerceArray(iv, true);\n this._lastPrecipherIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationOFB.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._lastPrecipherIndex === 16) {\n this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);\n this._lastPrecipherIndex = 0;\n }\n encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt;\n\n\n /**\n * Counter object for CTR common mode of operation\n */\n var Counter = function(initialValue) {\n if (!(this instanceof Counter)) {\n throw Error('Counter must be instanitated with `new`');\n }\n\n // We allow 0, but anything false-ish uses the default 1\n if (initialValue !== 0 && !initialValue) { initialValue = 1; }\n\n if (typeof(initialValue) === 'number') {\n this._counter = createArray(16);\n this.setValue(initialValue);\n\n } else {\n this.setBytes(initialValue);\n }\n }\n\n Counter.prototype.setValue = function(value) {\n if (typeof(value) !== 'number' || parseInt(value) != value) {\n throw new Error('invalid counter value (must be an integer)');\n }\n\n for (var index = 15; index >= 0; --index) {\n this._counter[index] = value % 256;\n value = value >> 8;\n }\n }\n\n Counter.prototype.setBytes = function(bytes) {\n bytes = coerceArray(bytes, true);\n\n if (bytes.length != 16) {\n throw new Error('invalid counter bytes size (must be 16 bytes)');\n }\n\n this._counter = bytes;\n };\n\n Counter.prototype.increment = function() {\n for (var i = 15; i >= 0; i--) {\n if (this._counter[i] === 255) {\n this._counter[i] = 0;\n } else {\n this._counter[i]++;\n break;\n }\n }\n }\n\n\n /**\n * Mode Of Operation - Counter (CTR)\n */\n var ModeOfOperationCTR = function(key, counter) {\n if (!(this instanceof ModeOfOperationCTR)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Counter\";\n this.name = \"ctr\";\n\n if (!(counter instanceof Counter)) {\n counter = new Counter(counter)\n }\n\n this._counter = counter;\n\n this._remainingCounter = null;\n this._remainingCounterIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCTR.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._remainingCounterIndex === 16) {\n this._remainingCounter = this._aes.encrypt(this._counter._counter);\n this._remainingCounterIndex = 0;\n this._counter.increment();\n }\n encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt;\n\n\n ///////////////////////\n // Padding\n\n // See:https://tools.ietf.org/html/rfc2315\n function pkcs7pad(data) {\n data = coerceArray(data, true);\n var padder = 16 - (data.length % 16);\n var result = createArray(data.length + padder);\n copyArray(data, result);\n for (var i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n }\n\n function pkcs7strip(data) {\n data = coerceArray(data, true);\n if (data.length < 16) { throw new Error('PKCS#7 invalid length'); }\n\n var padder = data[data.length - 1];\n if (padder > 16) { throw new Error('PKCS#7 padding byte out of range'); }\n\n var length = data.length - padder;\n for (var i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new Error('PKCS#7 invalid padding byte');\n }\n }\n\n var result = createArray(length);\n copyArray(data, result, 0, 0, length);\n return result;\n }\n\n ///////////////////////\n // Exporting\n\n\n // The block cipher\n var aesjs = {\n AES: AES,\n Counter: Counter,\n\n ModeOfOperation: {\n ecb: ModeOfOperationECB,\n cbc: ModeOfOperationCBC,\n cfb: ModeOfOperationCFB,\n ofb: ModeOfOperationOFB,\n ctr: ModeOfOperationCTR\n },\n\n utils: {\n hex: convertHex,\n utf8: convertUtf8\n },\n\n padding: {\n pkcs7: {\n pad: pkcs7pad,\n strip: pkcs7strip\n }\n },\n\n _arrayTest: {\n coerceArray: coerceArray,\n createArray: createArray,\n copyArray: copyArray,\n }\n };\n\n\n // node.js\n if (typeof exports !== 'undefined') {\n module.exports = aesjs\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(aesjs);\n\n // Web Browsers\n } else {\n\n // If there was an existing library at \"aesjs\" make sure it's still available\n if (root.aesjs) {\n aesjs._aesjs = root.aesjs;\n }\n\n root.aesjs = aesjs;\n }\n\n\n})(this);\n", "export const version = \"json-wallets/5.7.0\";\n", "\"use strict\";\n\nimport { arrayify, Bytes, BytesLike, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from '@ethersproject/strings';\n\nexport function looseArrayify(hexString: string): Uint8Array {\n if (typeof(hexString) === 'string' && hexString.substring(0, 2) !== '0x') {\n hexString = '0x' + hexString;\n }\n return arrayify(hexString);\n}\n\nexport function zpad(value: String | number, length: number): String {\n value = String(value);\n while (value.length < length) { value = '0' + value; }\n return value;\n}\n\nexport function getPassword(password: Bytes | string): Uint8Array {\n if (typeof(password) === 'string') {\n return toUtf8Bytes(password, UnicodeNormalizationForm.NFKC);\n }\n return arrayify(password);\n}\n\nexport function searchPath(object: any, path: string): string {\n let currentChild = object;\n\n const comps = path.toLowerCase().split('/');\n for (let i = 0; i < comps.length; i++) {\n\n // Search for a child object with a case-insensitive matching key\n let matchingChild = null;\n for (const key in currentChild) {\n if (key.toLowerCase() === comps[i]) {\n matchingChild = currentChild[key];\n break;\n }\n }\n\n // Didn't find one. :'(\n if (matchingChild === null) {\n return null;\n }\n\n // Now check this child...\n currentChild = matchingChild;\n }\n\n return currentChild;\n}\n\n// See: https://www.ietf.org/rfc/rfc4122.txt (Section 4.4)\nexport function uuidV4(randomBytes: BytesLike): string {\n const bytes = arrayify(randomBytes);\n\n // Section: 4.1.3:\n // - time_hi_and_version[12:16] = 0b0100\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n\n // Section 4.4\n // - clock_seq_hi_and_reserved[6] = 0b0\n // - clock_seq_hi_and_reserved[7] = 0b1\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n\n const value = hexlify(bytes);\n\n return [\n value.substring(2, 10),\n value.substring(10, 14),\n value.substring(14, 18),\n value.substring(18, 22),\n value.substring(22, 34),\n ].join(\"-\");\n}\n\n", "\"use strict\";\n\nimport aes from \"aes-js\";\n\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, Bytes } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { Description } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { getPassword, looseArrayify, searchPath } from \"./utils\";\n\nexport interface _CrowdsaleAccount {\n address: string;\n privateKey: string;\n\n _isCrowdsaleAccount: boolean;\n}\n\nexport class CrowdsaleAccount extends Description<_CrowdsaleAccount> implements ExternallyOwnedAccount {\n readonly address: string;\n readonly privateKey: string;\n readonly mnemonic?: string;\n readonly path?: string;\n\n readonly _isCrowdsaleAccount: boolean;\n\n isCrowdsaleAccount(value: any): value is CrowdsaleAccount {\n return !!(value && value._isCrowdsaleAccount);\n }\n}\n\n// See: https://github.com/ethereum/pyethsaletool\nexport function decrypt(json: string, password: Bytes | string): ExternallyOwnedAccount {\n const data = JSON.parse(json);\n\n password = getPassword(password);\n\n // Ethereum Address\n const ethaddr = getAddress(searchPath(data, \"ethaddr\"));\n\n // Encrypted Seed\n const encseed = looseArrayify(searchPath(data, \"encseed\"));\n if (!encseed || (encseed.length % 16) !== 0) {\n logger.throwArgumentError(\"invalid encseed\", \"json\", json);\n }\n\n const key = arrayify(pbkdf2(password, password, 2000, 32, \"sha256\")).slice(0, 16);\n\n const iv = encseed.slice(0, 16);\n const encryptedSeed = encseed.slice(16);\n\n // Decrypt the seed\n const aesCbc = new aes.ModeOfOperation.cbc(key, iv);\n const seed = aes.padding.pkcs7.strip(arrayify(aesCbc.decrypt(encryptedSeed)));\n\n // This wallet format is weird... Convert the binary encoded hex to a string.\n let seedHex = \"\";\n for (let i = 0; i < seed.length; i++) {\n seedHex += String.fromCharCode(seed[i]);\n }\n\n const seedHexBytes = toUtf8Bytes(seedHex);\n\n const privateKey = keccak256(seedHexBytes);\n\n return new CrowdsaleAccount ({\n _isCrowdsaleAccount: true,\n address: ethaddr,\n privateKey: privateKey\n });\n}\n\n", "\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\n\n\nexport function isCrowdsaleWallet(json: string): boolean {\n let data: any = null;\n try {\n data = JSON.parse(json);\n } catch (error) { return false; }\n\n return (data.encseed && data.ethaddr);\n}\n\nexport function isKeystoreWallet(json: string): boolean {\n let data: any = null;\n try {\n data = JSON.parse(json);\n } catch (error) { return false; }\n\n if (!data.version || parseInt(data.version) !== data.version || parseInt(data.version) !== 3) {\n return false;\n }\n\n // @TODO: Put more checks to make sure it has kdf, iv and all that good stuff\n return true;\n}\n\n//export function isJsonWallet(json: string): boolean {\n// return (isSecretStorageWallet(json) || isCrowdsaleWallet(json));\n//}\n\nexport function getJsonWalletAddress(json: string): string {\n if (isCrowdsaleWallet(json)) {\n try {\n return getAddress(JSON.parse(json).ethaddr);\n } catch (error) { return null; }\n }\n\n if (isKeystoreWallet(json)) {\n try {\n return getAddress(JSON.parse(json).address);\n } catch (error) { return null; }\n }\n\n return null;\n}\n\n", "\"use strict\";\n\n(function(root) {\n const MAX_VALUE = 0x7fffffff;\n\n // The SHA256 and PBKDF2 implementation are from scrypt-async-js:\n // See: https://github.com/dchest/scrypt-async-js\n function SHA256(m) {\n const K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ]);\n\n let h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, h3 = 0xa54ff53a;\n let h4 = 0x510e527f, h5 = 0x9b05688c, h6 = 0x1f83d9ab, h7 = 0x5be0cd19;\n const w = new Uint32Array(64);\n\n function blocks(p) {\n let off = 0, len = p.length;\n while (len >= 64) {\n let a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7, u, i, j, t1, t2;\n\n for (i = 0; i < 16; i++) {\n j = off + i*4;\n w[i] = ((p[j] & 0xff)<<24) | ((p[j+1] & 0xff)<<16) |\n ((p[j+2] & 0xff)<<8) | (p[j+3] & 0xff);\n }\n\n for (i = 16; i < 64; i++) {\n u = w[i-2];\n t1 = ((u>>>17) | (u<<(32-17))) ^ ((u>>>19) | (u<<(32-19))) ^ (u>>>10);\n\n u = w[i-15];\n t2 = ((u>>>7) | (u<<(32-7))) ^ ((u>>>18) | (u<<(32-18))) ^ (u>>>3);\n\n w[i] = (((t1 + w[i-7]) | 0) + ((t2 + w[i-16]) | 0)) | 0;\n }\n\n for (i = 0; i < 64; i++) {\n t1 = ((((((e>>>6) | (e<<(32-6))) ^ ((e>>>11) | (e<<(32-11))) ^\n ((e>>>25) | (e<<(32-25)))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n\n t2 = ((((a>>>2) | (a<<(32-2))) ^ ((a>>>13) | (a<<(32-13))) ^\n ((a>>>22) | (a<<(32-22)))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n\n off += 64;\n len -= 64;\n }\n }\n\n blocks(m);\n\n let i, bytesLeft = m.length % 64,\n bitLenHi = (m.length / 0x20000000) | 0,\n bitLenLo = m.length << 3,\n numZeros = (bytesLeft < 56) ? 56 : 120,\n p = m.slice(m.length - bytesLeft, m.length);\n\n p.push(0x80);\n for (i = bytesLeft + 1; i < numZeros; i++) { p.push(0); }\n p.push((bitLenHi >>> 24) & 0xff);\n p.push((bitLenHi >>> 16) & 0xff);\n p.push((bitLenHi >>> 8) & 0xff);\n p.push((bitLenHi >>> 0) & 0xff);\n p.push((bitLenLo >>> 24) & 0xff);\n p.push((bitLenLo >>> 16) & 0xff);\n p.push((bitLenLo >>> 8) & 0xff);\n p.push((bitLenLo >>> 0) & 0xff);\n\n blocks(p);\n\n return [\n (h0 >>> 24) & 0xff, (h0 >>> 16) & 0xff, (h0 >>> 8) & 0xff, (h0 >>> 0) & 0xff,\n (h1 >>> 24) & 0xff, (h1 >>> 16) & 0xff, (h1 >>> 8) & 0xff, (h1 >>> 0) & 0xff,\n (h2 >>> 24) & 0xff, (h2 >>> 16) & 0xff, (h2 >>> 8) & 0xff, (h2 >>> 0) & 0xff,\n (h3 >>> 24) & 0xff, (h3 >>> 16) & 0xff, (h3 >>> 8) & 0xff, (h3 >>> 0) & 0xff,\n (h4 >>> 24) & 0xff, (h4 >>> 16) & 0xff, (h4 >>> 8) & 0xff, (h4 >>> 0) & 0xff,\n (h5 >>> 24) & 0xff, (h5 >>> 16) & 0xff, (h5 >>> 8) & 0xff, (h5 >>> 0) & 0xff,\n (h6 >>> 24) & 0xff, (h6 >>> 16) & 0xff, (h6 >>> 8) & 0xff, (h6 >>> 0) & 0xff,\n (h7 >>> 24) & 0xff, (h7 >>> 16) & 0xff, (h7 >>> 8) & 0xff, (h7 >>> 0) & 0xff\n ];\n }\n\n function PBKDF2_HMAC_SHA256_OneIter(password, salt, dkLen) {\n // compress password if it's longer than hash block length\n password = (password.length <= 64) ? password : SHA256(password);\n\n const innerLen = 64 + salt.length + 4;\n const inner = new Array(innerLen);\n const outerKey = new Array(64);\n\n let i;\n let dk = [];\n\n // inner = (password ^ ipad) || salt || counter\n for (i = 0; i < 64; i++) { inner[i] = 0x36; }\n for (i = 0; i < password.length; i++) { inner[i] ^= password[i]; }\n for (i = 0; i < salt.length; i++) { inner[64 + i] = salt[i]; }\n for (i = innerLen - 4; i < innerLen; i++) { inner[i] = 0; }\n\n // outerKey = password ^ opad\n for (i = 0; i < 64; i++) outerKey[i] = 0x5c;\n for (i = 0; i < password.length; i++) outerKey[i] ^= password[i];\n\n // increments counter inside inner\n function incrementCounter() {\n for (let i = innerLen - 1; i >= innerLen - 4; i--) {\n inner[i]++;\n if (inner[i] <= 0xff) return;\n inner[i] = 0;\n }\n }\n\n // output blocks = SHA256(outerKey || SHA256(inner)) ...\n while (dkLen >= 32) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))));\n dkLen -= 32;\n }\n if (dkLen > 0) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))).slice(0, dkLen));\n }\n\n return dk;\n }\n\n // The following is an adaptation of scryptsy\n // See: https://www.npmjs.com/package/scryptsy\n function blockmix_salsa8(BY, Yi, r, x, _X) {\n let i;\n\n arraycopy(BY, (2 * r - 1) * 16, _X, 0, 16);\n for (i = 0; i < 2 * r; i++) {\n blockxor(BY, i * 16, _X, 16);\n salsa20_8(_X, x);\n arraycopy(_X, 0, BY, Yi + (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2) * 16, BY, (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2 + 1) * 16, BY, (i + r) * 16, 16);\n }\n }\n\n function R(a, b) {\n return (a << b) | (a >>> (32 - b));\n }\n\n function salsa20_8(B, x) {\n arraycopy(B, 0, x, 0, 16);\n\n for (let i = 8; i > 0; i -= 2) {\n x[ 4] ^= R(x[ 0] + x[12], 7);\n x[ 8] ^= R(x[ 4] + x[ 0], 9);\n x[12] ^= R(x[ 8] + x[ 4], 13);\n x[ 0] ^= R(x[12] + x[ 8], 18);\n x[ 9] ^= R(x[ 5] + x[ 1], 7);\n x[13] ^= R(x[ 9] + x[ 5], 9);\n x[ 1] ^= R(x[13] + x[ 9], 13);\n x[ 5] ^= R(x[ 1] + x[13], 18);\n x[14] ^= R(x[10] + x[ 6], 7);\n x[ 2] ^= R(x[14] + x[10], 9);\n x[ 6] ^= R(x[ 2] + x[14], 13);\n x[10] ^= R(x[ 6] + x[ 2], 18);\n x[ 3] ^= R(x[15] + x[11], 7);\n x[ 7] ^= R(x[ 3] + x[15], 9);\n x[11] ^= R(x[ 7] + x[ 3], 13);\n x[15] ^= R(x[11] + x[ 7], 18);\n x[ 1] ^= R(x[ 0] + x[ 3], 7);\n x[ 2] ^= R(x[ 1] + x[ 0], 9);\n x[ 3] ^= R(x[ 2] + x[ 1], 13);\n x[ 0] ^= R(x[ 3] + x[ 2], 18);\n x[ 6] ^= R(x[ 5] + x[ 4], 7);\n x[ 7] ^= R(x[ 6] + x[ 5], 9);\n x[ 4] ^= R(x[ 7] + x[ 6], 13);\n x[ 5] ^= R(x[ 4] + x[ 7], 18);\n x[11] ^= R(x[10] + x[ 9], 7);\n x[ 8] ^= R(x[11] + x[10], 9);\n x[ 9] ^= R(x[ 8] + x[11], 13);\n x[10] ^= R(x[ 9] + x[ 8], 18);\n x[12] ^= R(x[15] + x[14], 7);\n x[13] ^= R(x[12] + x[15], 9);\n x[14] ^= R(x[13] + x[12], 13);\n x[15] ^= R(x[14] + x[13], 18);\n }\n\n for (let i = 0; i < 16; ++i) {\n B[i] += x[i];\n }\n }\n\n // naive approach... going back to loop unrolling may yield additional performance\n function blockxor(S, Si, D, len) {\n for (let i = 0; i < len; i++) {\n D[i] ^= S[Si + i]\n }\n }\n\n function arraycopy(src, srcPos, dest, destPos, length) {\n while (length--) {\n dest[destPos++] = src[srcPos++];\n }\n }\n\n function checkBufferish(o) {\n if (!o || typeof(o.length) !== 'number') { return false; }\n\n for (let i = 0; i < o.length; i++) {\n const v = o[i];\n if (typeof(v) !== 'number' || v % 1 || v < 0 || v >= 256) {\n return false;\n }\n }\n\n return true;\n }\n\n function ensureInteger(value, name) {\n if (typeof(value) !== \"number\" || (value % 1)) { throw new Error('invalid ' + name); }\n return value;\n }\n\n // N = Cpu cost, r = Memory cost, p = parallelization cost\n // callback(error, progress, key)\n function _scrypt(password, salt, N, r, p, dkLen, callback) {\n\n N = ensureInteger(N, 'N');\n r = ensureInteger(r, 'r');\n p = ensureInteger(p, 'p');\n\n dkLen = ensureInteger(dkLen, 'dkLen');\n\n if (N === 0 || (N & (N - 1)) !== 0) { throw new Error('N must be power of 2'); }\n\n if (N > MAX_VALUE / 128 / r) { throw new Error('N too large'); }\n if (r > MAX_VALUE / 128 / p) { throw new Error('r too large'); }\n\n if (!checkBufferish(password)) {\n throw new Error('password must be an array or buffer');\n }\n password = Array.prototype.slice.call(password);\n\n if (!checkBufferish(salt)) {\n throw new Error('salt must be an array or buffer');\n }\n salt = Array.prototype.slice.call(salt);\n\n let b = PBKDF2_HMAC_SHA256_OneIter(password, salt, p * 128 * r);\n const B = new Uint32Array(p * 32 * r)\n for (let i = 0; i < B.length; i++) {\n const j = i * 4;\n B[i] = ((b[j + 3] & 0xff) << 24) |\n ((b[j + 2] & 0xff) << 16) |\n ((b[j + 1] & 0xff) << 8) |\n ((b[j + 0] & 0xff) << 0);\n }\n\n const XY = new Uint32Array(64 * r);\n const V = new Uint32Array(32 * r * N);\n\n const Yi = 32 * r;\n\n // scratch space\n const x = new Uint32Array(16); // salsa20_8\n const _X = new Uint32Array(16); // blockmix_salsa8\n\n const totalOps = p * N * 2;\n let currentOp = 0;\n let lastPercent10 = null;\n\n // Set this to true to abandon the scrypt on the next step\n let stop = false;\n\n // State information\n let state = 0;\n let i0 = 0, i1;\n let Bi;\n\n // How many blockmix_salsa8 can we do per step?\n const limit = callback ? parseInt(1000 / r): 0xffffffff;\n\n // Trick from scrypt-async; if there is a setImmediate shim in place, use it\n const nextTick = (typeof(setImmediate) !== 'undefined') ? setImmediate : setTimeout;\n\n // This is really all I changed; making scryptsy a state machine so we occasionally\n // stop and give other evnts on the evnt loop a chance to run. ~RicMoo\n const incrementalSMix = function() {\n if (stop) {\n return callback(new Error('cancelled'), currentOp / totalOps);\n }\n\n let steps;\n\n switch (state) {\n case 0:\n // for (var i = 0; i < p; i++)...\n Bi = i0 * 32 * r;\n\n arraycopy(B, Bi, XY, 0, Yi); // ROMix - 1\n\n state = 1; // Move to ROMix 2\n i1 = 0;\n\n // Fall through\n\n case 1:\n\n // Run up to 1000 steps of the first inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 2\n arraycopy(XY, 0, V, (i1 + i) * Yi, Yi) // ROMix - 3\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 4\n }\n\n // for (var i = 0; i < N; i++)\n i1 += steps;\n currentOp += steps;\n\n if (callback) {\n // Call the callback with the progress (optionally stopping us)\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n i1 = 0; // Move to ROMix 6\n state = 2;\n\n // Fall through\n\n case 2:\n\n // Run up to 1000 steps of the second inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 6\n const offset = (2 * r - 1) * 16; // ROMix - 7\n const j = XY[offset] & (N - 1);\n blockxor(V, j * Yi, XY, Yi); // ROMix - 8 (inner)\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 9 (outer)\n }\n\n // for (var i = 0; i < N; i++)...\n i1 += steps;\n currentOp += steps;\n\n // Call the callback with the progress (optionally stopping us)\n if (callback) {\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n arraycopy(XY, 0, B, Bi, Yi); // ROMix - 10\n\n // for (var i = 0; i < p; i++)...\n i0++;\n if (i0 < p) {\n state = 0;\n break;\n }\n\n b = [];\n for (let i = 0; i < B.length; i++) {\n b.push((B[i] >> 0) & 0xff);\n b.push((B[i] >> 8) & 0xff);\n b.push((B[i] >> 16) & 0xff);\n b.push((B[i] >> 24) & 0xff);\n }\n\n const derivedKey = PBKDF2_HMAC_SHA256_OneIter(password, b, dkLen);\n\n // Send the result to the callback\n if (callback) { callback(null, 1.0, derivedKey); }\n\n // Done; don't break (which would reschedule)\n return derivedKey;\n }\n\n // Schedule the next steps\n if (callback) { nextTick(incrementalSMix); }\n }\n\n // Run the smix state machine until completion\n if (!callback) {\n while (true) {\n const derivedKey = incrementalSMix();\n if (derivedKey != undefined) { return derivedKey; }\n }\n }\n\n // Bootstrap the async incremental smix\n incrementalSMix();\n }\n\n const lib = {\n scrypt: function(password, salt, N, r, p, dkLen, progressCallback) {\n return new Promise(function(resolve, reject) {\n let lastProgress = 0;\n if (progressCallback) { progressCallback(0); }\n _scrypt(password, salt, N, r, p, dkLen, function(error, progress, key) {\n if (error) {\n reject(error);\n } else if (key) {\n if (progressCallback && lastProgress !== 1) {\n progressCallback(1);\n }\n resolve(new Uint8Array(key));\n } else if (progressCallback && progress !== lastProgress) {\n lastProgress = progress;\n return progressCallback(progress);\n }\n });\n });\n },\n syncScrypt: function(password, salt, N, r, p, dkLen) {\n return new Uint8Array(_scrypt(password, salt, N, r, p, dkLen));\n }\n };\n\n // node.js\n if (typeof(exports) !== 'undefined') {\n module.exports = lib;\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(lib);\n\n // Web Browsers\n } else if (root) {\n\n // If there was an existing library \"scrypt\", make sure it is still available\n if (root.scrypt) {\n root._scrypt = root.scrypt;\n }\n\n root.scrypt = lib;\n }\n\n})(this);\n", "\"use strict\";\n\nimport aes from \"aes-js\";\nimport scrypt from \"scrypt-js\";\n\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, Bytes, BytesLike, concat, hexlify } from \"@ethersproject/bytes\";\nimport { defaultPath, entropyToMnemonic, HDNode, Mnemonic, mnemonicToEntropy } from \"@ethersproject/hdnode\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { pbkdf2 as _pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { randomBytes } from \"@ethersproject/random\";\nimport { Description } from \"@ethersproject/properties\";\nimport { computeAddress } from \"@ethersproject/transactions\";\n\nimport { getPassword, looseArrayify, searchPath, uuidV4, zpad } from \"./utils\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n// Exported Types\n\nfunction hasMnemonic(value: any): value is { mnemonic: Mnemonic } {\n return (value != null && value.mnemonic && value.mnemonic.phrase);\n}\n\nexport interface _KeystoreAccount {\n address: string;\n privateKey: string;\n mnemonic?: Mnemonic;\n\n _isKeystoreAccount: boolean;\n}\n\nexport class KeystoreAccount extends Description<_KeystoreAccount> implements ExternallyOwnedAccount {\n readonly address: string;\n readonly privateKey: string;\n readonly mnemonic?: Mnemonic;\n\n readonly _isKeystoreAccount: boolean;\n\n isKeystoreAccount(value: any): value is KeystoreAccount {\n return !!(value && value._isKeystoreAccount);\n }\n}\n\nexport type ProgressCallback = (percent: number) => void;\n\nexport type EncryptOptions = {\n iv?: BytesLike;\n entropy?: BytesLike;\n client?: string;\n salt?: BytesLike;\n uuid?: string;\n scrypt?: {\n N?: number;\n r?: number;\n p?: number;\n }\n}\n\nfunction _decrypt(data: any, key: Uint8Array, ciphertext: Uint8Array): Uint8Array {\n const cipher = searchPath(data, \"crypto/cipher\");\n if (cipher === \"aes-128-ctr\") {\n const iv = looseArrayify(searchPath(data, \"crypto/cipherparams/iv\"))\n const counter = new aes.Counter(iv);\n\n const aesCtr = new aes.ModeOfOperation.ctr(key, counter);\n\n return arrayify(aesCtr.decrypt(ciphertext));\n }\n\n return null;\n}\n\nfunction _getAccount(data: any, key: Uint8Array): KeystoreAccount {\n const ciphertext = looseArrayify(searchPath(data, \"crypto/ciphertext\"));\n\n const computedMAC = hexlify(keccak256(concat([ key.slice(16, 32), ciphertext ]))).substring(2);\n if (computedMAC !== searchPath(data, \"crypto/mac\").toLowerCase()) {\n throw new Error(\"invalid password\");\n }\n\n const privateKey = _decrypt(data, key.slice(0, 16), ciphertext);\n\n if (!privateKey) {\n logger.throwError(\"unsupported cipher\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"decrypt\"\n });\n }\n\n const mnemonicKey = key.slice(32, 64);\n\n const address = computeAddress(privateKey);\n if (data.address) {\n let check = data.address.toLowerCase();\n if (check.substring(0, 2) !== \"0x\") { check = \"0x\" + check; }\n\n if (getAddress(check) !== address) {\n throw new Error(\"address mismatch\");\n }\n }\n\n const account: _KeystoreAccount = {\n _isKeystoreAccount: true,\n address: address,\n privateKey: hexlify(privateKey)\n };\n\n // Version 0.1 x-ethers metadata must contain an encrypted mnemonic phrase\n if (searchPath(data, \"x-ethers/version\") === \"0.1\") {\n const mnemonicCiphertext = looseArrayify(searchPath(data, \"x-ethers/mnemonicCiphertext\"));\n const mnemonicIv = looseArrayify(searchPath(data, \"x-ethers/mnemonicCounter\"));\n\n const mnemonicCounter = new aes.Counter(mnemonicIv);\n const mnemonicAesCtr = new aes.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter);\n\n const path = searchPath(data, \"x-ethers/path\") || defaultPath;\n const locale = searchPath(data, \"x-ethers/locale\") || \"en\";\n\n const entropy = arrayify(mnemonicAesCtr.decrypt(mnemonicCiphertext));\n\n try {\n const mnemonic = entropyToMnemonic(entropy, locale);\n const node = HDNode.fromMnemonic(mnemonic, null, locale).derivePath(path);\n\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n\n account.mnemonic = node.mnemonic;\n\n } catch (error) {\n // If we don't have the locale wordlist installed to\n // read this mnemonic, just bail and don't set the\n // mnemonic\n if (error.code !== Logger.errors.INVALID_ARGUMENT || error.argument !== \"wordlist\") {\n throw error;\n }\n }\n }\n\n return new KeystoreAccount(account);\n}\n\ntype ScryptFunc = (pw: Uint8Array, salt: Uint8Array, n: number, r: number, p: number, dkLen: number, callback?: ProgressCallback) => T;\ntype Pbkdf2Func = (pw: Uint8Array, salt: Uint8Array, c: number, dkLen: number, prfFunc: string) => T;\n\nfunction pbkdf2Sync(passwordBytes: Uint8Array, salt: Uint8Array, count: number, dkLen: number, prfFunc: string): Uint8Array {\n return arrayify(_pbkdf2(passwordBytes, salt, count, dkLen, prfFunc));\n}\n\nfunction pbkdf2(passwordBytes: Uint8Array, salt: Uint8Array, count: number, dkLen: number, prfFunc: string): Promise {\n return Promise.resolve(pbkdf2Sync(passwordBytes, salt, count, dkLen, prfFunc));\n}\n\nfunction _computeKdfKey(data: any, password: Bytes | string, pbkdf2Func: Pbkdf2Func, scryptFunc: ScryptFunc, progressCallback?: ProgressCallback): T {\n const passwordBytes = getPassword(password);\n\n const kdf = searchPath(data, \"crypto/kdf\");\n\n if (kdf && typeof(kdf) === \"string\") {\n const throwError = function(name: string, value: any): never {\n return logger.throwArgumentError(\"invalid key-derivation function parameters\", name, value);\n }\n\n if (kdf.toLowerCase() === \"scrypt\") {\n const salt = looseArrayify(searchPath(data, \"crypto/kdfparams/salt\"));\n const N = parseInt(searchPath(data, \"crypto/kdfparams/n\"));\n const r = parseInt(searchPath(data, \"crypto/kdfparams/r\"));\n const p = parseInt(searchPath(data, \"crypto/kdfparams/p\"));\n\n // Check for all required parameters\n if (!N || !r || !p) { throwError(\"kdf\", kdf); }\n\n // Make sure N is a power of 2\n if ((N & (N - 1)) !== 0) { throwError(\"N\", N); }\n\n const dkLen = parseInt(searchPath(data, \"crypto/kdfparams/dklen\"));\n if (dkLen !== 32) { throwError(\"dklen\", dkLen); }\n\n return scryptFunc(passwordBytes, salt, N, r, p, 64, progressCallback);\n\n } else if (kdf.toLowerCase() === \"pbkdf2\") {\n\n const salt = looseArrayify(searchPath(data, \"crypto/kdfparams/salt\"));\n\n let prfFunc: string = null;\n const prf = searchPath(data, \"crypto/kdfparams/prf\");\n if (prf === \"hmac-sha256\") {\n prfFunc = \"sha256\";\n } else if (prf === \"hmac-sha512\") {\n prfFunc = \"sha512\";\n } else {\n throwError(\"prf\", prf);\n }\n\n const count = parseInt(searchPath(data, \"crypto/kdfparams/c\"));\n\n const dkLen = parseInt(searchPath(data, \"crypto/kdfparams/dklen\"));\n if (dkLen !== 32) { throwError(\"dklen\", dkLen); }\n\n return pbkdf2Func(passwordBytes, salt, count, dkLen, prfFunc);\n }\n }\n\n return logger.throwArgumentError(\"unsupported key-derivation function\", \"kdf\", kdf);\n}\n\n\nexport function decryptSync(json: string, password: Bytes | string): KeystoreAccount {\n const data = JSON.parse(json);\n\n const key = _computeKdfKey(data, password, pbkdf2Sync, scrypt.syncScrypt);\n return _getAccount(data, key);\n}\n\nexport async function decrypt(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise {\n const data = JSON.parse(json);\n\n const key = await _computeKdfKey(data, password, pbkdf2, scrypt.scrypt, progressCallback);\n return _getAccount(data, key);\n}\n\n\nexport function encrypt(account: ExternallyOwnedAccount, password: Bytes | string, options?: EncryptOptions, progressCallback?: ProgressCallback): Promise {\n\n try {\n // Check the address matches the private key\n if (getAddress(account.address) !== computeAddress(account.privateKey)) {\n throw new Error(\"address/privateKey mismatch\");\n }\n\n // Check the mnemonic (if any) matches the private key\n if (hasMnemonic(account)) {\n const mnemonic = account.mnemonic;\n const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path || defaultPath);\n\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n }\n\n } catch (e) {\n return Promise.reject(e);\n }\n\n // The options are optional, so adjust the call as needed\n if (typeof(options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n if (!options) { options = {}; }\n\n const privateKey: Uint8Array = arrayify(account.privateKey);\n const passwordBytes = getPassword(password);\n\n let entropy: Uint8Array = null\n let path: string = null;\n let locale: string = null;\n if (hasMnemonic(account)) {\n const srcMnemonic = account.mnemonic;\n entropy = arrayify(mnemonicToEntropy(srcMnemonic.phrase, srcMnemonic.locale || \"en\"));\n path = srcMnemonic.path || defaultPath;\n locale = srcMnemonic.locale || \"en\";\n }\n\n let client = options.client;\n if (!client) { client = \"ethers.js\"; }\n\n // Check/generate the salt\n let salt: Uint8Array = null;\n if (options.salt) {\n salt = arrayify(options.salt);\n } else {\n salt = randomBytes(32);;\n }\n\n // Override initialization vector\n let iv: Uint8Array = null;\n if (options.iv) {\n iv = arrayify(options.iv);\n if (iv.length !== 16) { throw new Error(\"invalid iv\"); }\n } else {\n iv = randomBytes(16);\n }\n\n // Override the uuid\n let uuidRandom: Uint8Array = null;\n if (options.uuid) {\n uuidRandom = arrayify(options.uuid);\n if (uuidRandom.length !== 16) { throw new Error(\"invalid uuid\"); }\n } else {\n uuidRandom = randomBytes(16);\n }\n\n // Override the scrypt password-based key derivation function parameters\n let N = (1 << 17), r = 8, p = 1;\n if (options.scrypt) {\n if (options.scrypt.N) { N = options.scrypt.N; }\n if (options.scrypt.r) { r = options.scrypt.r; }\n if (options.scrypt.p) { p = options.scrypt.p; }\n }\n\n // We take 64 bytes:\n // - 32 bytes As normal for the Web3 secret storage (derivedKey, macPrefix)\n // - 32 bytes AES key to encrypt mnemonic with (required here to be Ethers Wallet)\n return scrypt.scrypt(passwordBytes, salt, N, r, p, 64, progressCallback).then((key) => {\n key = arrayify(key);\n\n // This will be used to encrypt the wallet (as per Web3 secret storage)\n const derivedKey = key.slice(0, 16);\n const macPrefix = key.slice(16, 32);\n\n // This will be used to encrypt the mnemonic phrase (if any)\n const mnemonicKey = key.slice(32, 64);\n\n // Encrypt the private key\n const counter = new aes.Counter(iv);\n const aesCtr = new aes.ModeOfOperation.ctr(derivedKey, counter);\n const ciphertext = arrayify(aesCtr.encrypt(privateKey));\n\n // Compute the message authentication code, used to check the password\n const mac = keccak256(concat([macPrefix, ciphertext]))\n\n // See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition\n const data: { [key: string]: any } = {\n address: account.address.substring(2).toLowerCase(),\n id: uuidV4(uuidRandom),\n version: 3,\n crypto: {\n cipher: \"aes-128-ctr\",\n cipherparams: {\n iv: hexlify(iv).substring(2),\n },\n ciphertext: hexlify(ciphertext).substring(2),\n kdf: \"scrypt\",\n kdfparams: {\n salt: hexlify(salt).substring(2),\n n: N,\n dklen: 32,\n p: p,\n r: r\n },\n mac: mac.substring(2)\n }\n };\n\n // If we have a mnemonic, encrypt it into the JSON wallet\n if (entropy) {\n const mnemonicIv = randomBytes(16);\n const mnemonicCounter = new aes.Counter(mnemonicIv);\n const mnemonicAesCtr = new aes.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter);\n const mnemonicCiphertext = arrayify(mnemonicAesCtr.encrypt(entropy));\n const now = new Date();\n const timestamp = (now.getUTCFullYear() + \"-\" +\n zpad(now.getUTCMonth() + 1, 2) + \"-\" +\n zpad(now.getUTCDate(), 2) + \"T\" +\n zpad(now.getUTCHours(), 2) + \"-\" +\n zpad(now.getUTCMinutes(), 2) + \"-\" +\n zpad(now.getUTCSeconds(), 2) + \".0Z\"\n );\n data[\"x-ethers\"] = {\n client: client,\n gethFilename: (\"UTC--\" + timestamp + \"--\" + data.address),\n mnemonicCounter: hexlify(mnemonicIv).substring(2),\n mnemonicCiphertext: hexlify(mnemonicCiphertext).substring(2),\n path: path,\n locale: locale,\n version: \"0.1\"\n };\n }\n\n return JSON.stringify(data);\n });\n}\n", "\"use strict\";\n\nimport { Bytes } from \"@ethersproject/bytes\";\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\n\nimport { decrypt as decryptCrowdsale } from \"./crowdsale\";\nimport { getJsonWalletAddress, isCrowdsaleWallet, isKeystoreWallet } from \"./inspect\";\nimport { decrypt as decryptKeystore, decryptSync as decryptKeystoreSync, encrypt as encryptKeystore, EncryptOptions, ProgressCallback } from \"./keystore\";\n\nfunction decryptJsonWallet(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise {\n if (isCrowdsaleWallet(json)) {\n if (progressCallback) { progressCallback(0); }\n const account = decryptCrowdsale(json, password)\n if (progressCallback) { progressCallback(1); }\n return Promise.resolve(account);\n }\n\n if (isKeystoreWallet(json)) {\n return decryptKeystore(json, password, progressCallback);\n }\n\n return Promise.reject(new Error(\"invalid JSON wallet\"));\n}\n\nfunction decryptJsonWalletSync(json: string, password: Bytes | string): ExternallyOwnedAccount {\n if (isCrowdsaleWallet(json)) {\n return decryptCrowdsale(json, password)\n }\n\n if (isKeystoreWallet(json)) {\n return decryptKeystoreSync(json, password);\n }\n\n throw new Error(\"invalid JSON wallet\");\n}\n\nexport {\n decryptCrowdsale,\n\n decryptKeystore,\n decryptKeystoreSync,\n encryptKeystore,\n\n isCrowdsaleWallet,\n isKeystoreWallet,\n getJsonWalletAddress,\n\n decryptJsonWallet,\n decryptJsonWalletSync,\n\n ProgressCallback,\n EncryptOptions,\n};\n", "export const version = \"wallet/5.7.0\";\n", "\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { Provider, TransactionRequest } from \"@ethersproject/abstract-provider\";\nimport { ExternallyOwnedAccount, Signer, TypedDataDomain, TypedDataField, TypedDataSigner } from \"@ethersproject/abstract-signer\";\nimport { arrayify, Bytes, BytesLike, concat, hexDataSlice, isHexString, joinSignature, SignatureLike } from \"@ethersproject/bytes\";\nimport { hashMessage, _TypedDataEncoder } from \"@ethersproject/hash\";\nimport { defaultPath, HDNode, entropyToMnemonic, Mnemonic } from \"@ethersproject/hdnode\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { defineReadOnly, resolveProperties } from \"@ethersproject/properties\";\nimport { randomBytes } from \"@ethersproject/random\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { decryptJsonWallet, decryptJsonWalletSync, encryptKeystore, ProgressCallback } from \"@ethersproject/json-wallets\";\nimport { computeAddress, recoverAddress, serialize, UnsignedTransaction } from \"@ethersproject/transactions\";\nimport { Wordlist } from \"@ethersproject/wordlists\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction isAccount(value: any): value is ExternallyOwnedAccount {\n return (value != null && isHexString(value.privateKey, 32) && value.address != null);\n}\n\nfunction hasMnemonic(value: any): value is { mnemonic: Mnemonic } {\n const mnemonic = value.mnemonic;\n return (mnemonic && mnemonic.phrase);\n}\n\nexport class Wallet extends Signer implements ExternallyOwnedAccount, TypedDataSigner {\n\n readonly address: string;\n readonly provider: Provider;\n\n // Wrapping the _signingKey and _mnemonic in a getter function prevents\n // leaking the private key in console.log; still, be careful! :)\n readonly _signingKey: () => SigningKey;\n readonly _mnemonic: () => Mnemonic;\n\n constructor(privateKey: BytesLike | ExternallyOwnedAccount | SigningKey, provider?: Provider) {\n super();\n\n if (isAccount(privateKey)) {\n const signingKey = new SigningKey(privateKey.privateKey);\n defineReadOnly(this, \"_signingKey\", () => signingKey);\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n\n if (this.address !== getAddress(privateKey.address)) {\n logger.throwArgumentError(\"privateKey/address mismatch\", \"privateKey\", \"[REDACTED]\");\n }\n\n if (hasMnemonic(privateKey)) {\n const srcMnemonic = privateKey.mnemonic;\n defineReadOnly(this, \"_mnemonic\", () => (\n {\n phrase: srcMnemonic.phrase,\n path: srcMnemonic.path || defaultPath,\n locale: srcMnemonic.locale || \"en\"\n }\n ));\n const mnemonic = this.mnemonic;\n const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path);\n if (computeAddress(node.privateKey) !== this.address) {\n logger.throwArgumentError(\"mnemonic/address mismatch\", \"privateKey\", \"[REDACTED]\");\n }\n } else {\n defineReadOnly(this, \"_mnemonic\", (): Mnemonic => null);\n }\n\n\n } else {\n if (SigningKey.isSigningKey(privateKey)) {\n /* istanbul ignore if */\n if (privateKey.curve !== \"secp256k1\") {\n logger.throwArgumentError(\"unsupported curve; must be secp256k1\", \"privateKey\", \"[REDACTED]\");\n }\n defineReadOnly(this, \"_signingKey\", () => (privateKey));\n\n } else {\n // A lot of common tools do not prefix private keys with a 0x (see: #1166)\n if (typeof(privateKey) === \"string\") {\n if (privateKey.match(/^[0-9a-f]*$/i) && privateKey.length === 64) {\n privateKey = \"0x\" + privateKey;\n }\n }\n\n const signingKey = new SigningKey(privateKey);\n defineReadOnly(this, \"_signingKey\", () => signingKey);\n }\n\n defineReadOnly(this, \"_mnemonic\", (): Mnemonic => null);\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n }\n\n /* istanbul ignore if */\n if (provider && !Provider.isProvider(provider)) {\n logger.throwArgumentError(\"invalid provider\", \"provider\", provider);\n }\n\n defineReadOnly(this, \"provider\", provider || null);\n }\n\n get mnemonic(): Mnemonic { return this._mnemonic(); }\n get privateKey(): string { return this._signingKey().privateKey; }\n get publicKey(): string { return this._signingKey().publicKey; }\n\n getAddress(): Promise {\n return Promise.resolve(this.address);\n }\n\n connect(provider: Provider): Wallet {\n return new Wallet(this, provider);\n }\n\n signTransaction(transaction: TransactionRequest): Promise {\n return resolveProperties(transaction).then((tx) => {\n if (tx.from != null) {\n if (getAddress(tx.from) !== this.address) {\n logger.throwArgumentError(\"transaction from address mismatch\", \"transaction.from\", transaction.from);\n }\n delete tx.from;\n }\n\n const signature = this._signingKey().signDigest(keccak256(serialize(tx)));\n return serialize(tx, signature);\n });\n }\n\n async signMessage(message: Bytes | string): Promise {\n return joinSignature(this._signingKey().signDigest(hashMessage(message)));\n }\n\n async _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise {\n // Populate any ENS names\n const populated = await _TypedDataEncoder.resolveNames(domain, types, value, (name: string) => {\n if (this.provider == null) {\n logger.throwError(\"cannot resolve ENS names without a provider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resolveName\",\n value: name\n });\n }\n return this.provider.resolveName(name);\n });\n\n return joinSignature(this._signingKey().signDigest(_TypedDataEncoder.hash(populated.domain, types, populated.value)));\n }\n\n encrypt(password: Bytes | string, options?: any, progressCallback?: ProgressCallback): Promise {\n if (typeof(options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n\n if (progressCallback && typeof(progressCallback) !== \"function\") {\n throw new Error(\"invalid callback\");\n }\n\n if (!options) { options = {}; }\n\n return encryptKeystore(this, password, options, progressCallback);\n }\n\n\n /**\n * Static methods to create Wallet instances.\n */\n static createRandom(options?: any): Wallet {\n let entropy: Uint8Array = randomBytes(16);\n\n if (!options) { options = { }; }\n\n if (options.extraEntropy) {\n entropy = arrayify(hexDataSlice(keccak256(concat([ entropy, options.extraEntropy ])), 0, 16));\n }\n\n const mnemonic = entropyToMnemonic(entropy, options.locale);\n return Wallet.fromMnemonic(mnemonic, options.path, options.locale);\n }\n\n static fromEncryptedJson(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise {\n return decryptJsonWallet(json, password, progressCallback).then((account) => {\n return new Wallet(account);\n });\n }\n\n static fromEncryptedJsonSync(json: string, password: Bytes | string): Wallet {\n return new Wallet(decryptJsonWalletSync(json, password));\n }\n\n static fromMnemonic(mnemonic: string, path?: string, wordlist?: Wordlist): Wallet {\n if (!path) { path = defaultPath; }\n return new Wallet(HDNode.fromMnemonic(mnemonic, null, wordlist).derivePath(path));\n }\n}\n\nexport function verifyMessage(message: Bytes | string, signature: SignatureLike): string {\n return recoverAddress(hashMessage(message), signature);\n}\n\nexport function verifyTypedData(domain: TypedDataDomain, types: Record>, value: Record, signature: SignatureLike): string {\n return recoverAddress(_TypedDataEncoder.hash(domain, types, value), signature);\n}\n", "export const version = \"networks/5.7.1\";\n", "\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Network, Networkish } from \"./types\";\n\nexport {\n Network,\n Networkish\n};\n\ntype DefaultProviderFunc = (providers: any, options?: any) => any;\n\ninterface Renetworkable extends DefaultProviderFunc {\n renetwork: (network: Network) => DefaultProviderFunc;\n};\n\nfunction isRenetworkable(value: any): value is Renetworkable {\n return (value && typeof(value.renetwork) === \"function\");\n}\n\nfunction ethDefaultProvider(network: string | Network): Renetworkable {\n const func = function(providers: any, options?: any): any {\n if (options == null) { options = { }; }\n const providerList: Array = [];\n\n if (providers.InfuraProvider && options.infura !== \"-\") {\n try {\n providerList.push(new providers.InfuraProvider(network, options.infura));\n } catch(error) { }\n }\n\n if (providers.EtherscanProvider && options.etherscan !== \"-\") {\n try {\n providerList.push(new providers.EtherscanProvider(network, options.etherscan));\n } catch(error) { }\n }\n\n if (providers.AlchemyProvider && options.alchemy !== \"-\") {\n try {\n providerList.push(new providers.AlchemyProvider(network, options.alchemy));\n } catch(error) { }\n }\n\n if (providers.PocketProvider && options.pocket !== \"-\") {\n // These networks are currently faulty on Pocket as their\n // network does not handle the Berlin hardfork, which is\n // live on these ones.\n // @TODO: This goes away once Pocket has upgraded their nodes\n const skip = [ \"goerli\", \"ropsten\", \"rinkeby\", \"sepolia\" ];\n try {\n const provider = new providers.PocketProvider(network, options.pocket);\n if (provider.network && skip.indexOf(provider.network.name) === -1) {\n providerList.push(provider);\n }\n } catch(error) { }\n }\n\n if (providers.CloudflareProvider && options.cloudflare !== \"-\") {\n try {\n providerList.push(new providers.CloudflareProvider(network));\n } catch(error) { }\n }\n\n if (providers.AnkrProvider && options.ankr !== \"-\") {\n try {\n const skip = [ \"ropsten\" ];\n const provider = new providers.AnkrProvider(network, options.ankr);\n if (provider.network && skip.indexOf(provider.network.name) === -1) {\n providerList.push(provider);\n }\n } catch(error) { }\n }\n\n if (providerList.length === 0) { return null; }\n\n if (providers.FallbackProvider) {\n let quorum = 1;\n if (options.quorum != null) {\n quorum = options.quorum;\n } else if (network === \"homestead\") {\n quorum = 2;\n }\n return new providers.FallbackProvider(providerList, quorum);\n }\n\n return providerList[0];\n };\n\n func.renetwork = function(network: Network) {\n return ethDefaultProvider(network);\n };\n\n return func;\n}\n\nfunction etcDefaultProvider(url: string, network: string | Network): Renetworkable {\n const func = function(providers: any, options?: any): any {\n if (providers.JsonRpcProvider) {\n return new providers.JsonRpcProvider(url, network);\n }\n\n return null;\n };\n\n func.renetwork = function(network: Network) {\n return etcDefaultProvider(url, network);\n };\n\n return func;\n}\n\nconst homestead: Network = {\n chainId: 1,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"homestead\",\n _defaultProvider: ethDefaultProvider(\"homestead\")\n};\n\nconst ropsten: Network = {\n chainId: 3,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"ropsten\",\n _defaultProvider: ethDefaultProvider(\"ropsten\")\n};\n\nconst classicMordor: Network = {\n chainId: 63,\n name: \"classicMordor\",\n _defaultProvider: etcDefaultProvider(\"https://www.ethercluster.com/mordor\", \"classicMordor\")\n};\n\n// See: https://chainlist.org\nconst networks: { [name: string]: Network } = {\n unspecified: { chainId: 0, name: \"unspecified\" },\n\n homestead: homestead,\n mainnet: homestead,\n\n morden: { chainId: 2, name: \"morden\" },\n\n ropsten: ropsten,\n testnet: ropsten,\n\n rinkeby: {\n chainId: 4,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"rinkeby\",\n _defaultProvider: ethDefaultProvider(\"rinkeby\")\n },\n\n kovan: {\n chainId: 42,\n name: \"kovan\",\n _defaultProvider: ethDefaultProvider(\"kovan\")\n },\n\n goerli: {\n chainId: 5,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"goerli\",\n _defaultProvider: ethDefaultProvider(\"goerli\")\n },\n\n kintsugi: { chainId: 1337702, name: \"kintsugi\" },\n\n sepolia: {\n chainId: 11155111,\n name: \"sepolia\",\n _defaultProvider: ethDefaultProvider(\"sepolia\")\n },\n\n\n // ETC (See: #351)\n classic: {\n chainId: 61,\n name: \"classic\",\n _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/etc\", \"classic\")\n },\n\n classicMorden: { chainId: 62, name: \"classicMorden\" },\n\n classicMordor: classicMordor,\n classicTestnet: classicMordor,\n\n classicKotti: {\n chainId: 6,\n name: \"classicKotti\",\n _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/kotti\", \"classicKotti\")\n },\n\n xdai: { chainId: 100, name: \"xdai\" },\n\n matic: {\n chainId: 137,\n name: \"matic\",\n _defaultProvider: ethDefaultProvider(\"matic\")\n },\n maticmum: { chainId: 80001, name: \"maticmum\" },\n\n optimism: {\n chainId: 10,\n name: \"optimism\",\n _defaultProvider: ethDefaultProvider(\"optimism\")\n },\n \"optimism-kovan\": { chainId: 69, name: \"optimism-kovan\" },\n \"optimism-goerli\": { chainId: 420, name: \"optimism-goerli\" },\n\n arbitrum: { chainId: 42161, name: \"arbitrum\" },\n \"arbitrum-rinkeby\": { chainId: 421611, name: \"arbitrum-rinkeby\" },\n \"arbitrum-goerli\": { chainId: 421613, name: \"arbitrum-goerli\" },\n\n bnb: { chainId: 56, name: \"bnb\" },\n bnbt: { chainId: 97, name: \"bnbt\" },\n}\n\n/**\n * getNetwork\n *\n * Converts a named common networks or chain ID (network ID) to a Network\n * and verifies a network is a valid Network..\n */\nexport function getNetwork(network: Networkish): Network {\n // No network (null)\n if (network == null) { return null; }\n\n if (typeof(network) === \"number\") {\n for (const name in networks) {\n const standard = networks[name];\n if (standard.chainId === network) {\n return {\n name: standard.name,\n chainId: standard.chainId,\n ensAddress: (standard.ensAddress || null),\n _defaultProvider: (standard._defaultProvider || null)\n };\n }\n }\n\n return {\n chainId: network,\n name: \"unknown\"\n };\n }\n\n if (typeof(network) === \"string\") {\n const standard = networks[network];\n if (standard == null) { return null; }\n return {\n name: standard.name,\n chainId: standard.chainId,\n ensAddress: standard.ensAddress,\n _defaultProvider: (standard._defaultProvider || null)\n };\n }\n\n const standard = networks[network.name];\n\n // Not a standard network; check that it is a valid network in general\n if (!standard) {\n if (typeof(network.chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid network chainId\", \"network\", network);\n }\n return network;\n }\n\n // Make sure the chainId matches the expected network chainId (or is 0; disable EIP-155)\n if (network.chainId !== 0 && network.chainId !== standard.chainId) {\n logger.throwArgumentError(\"network chainId mismatch\", \"network\", network);\n }\n\n // @TODO: In the next major version add an attach function to a defaultProvider\n // class and move the _defaultProvider internal to this file (extend Network)\n let defaultProvider: DefaultProviderFunc = network._defaultProvider || null;\n if (defaultProvider == null && standard._defaultProvider) {\n if (isRenetworkable(standard._defaultProvider)) {\n defaultProvider = standard._defaultProvider.renetwork(network);\n } else {\n defaultProvider = standard._defaultProvider;\n }\n }\n\n // Standard Network (allow overriding the ENS address)\n return {\n name: network.name,\n chainId: standard.chainId,\n ensAddress: (network.ensAddress || standard.ensAddress || null),\n _defaultProvider: defaultProvider\n };\n}\n", "export const version = \"web/5.7.1\";\n", "\"use strict\";\n\nimport http from \"http\";\nimport https from \"https\";\nimport { gunzipSync } from \"zlib\";\nimport { parse } from \"url\"\n\nimport { arrayify, concat } from \"@ethersproject/bytes\";\nimport { shallowCopy } from \"@ethersproject/properties\";\n\nimport type { GetUrlResponse, Options } from \"./types\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport { GetUrlResponse, Options };\n\nfunction getResponse(request: http.ClientRequest): Promise {\n return new Promise((resolve, reject) => {\n request.once(\"response\", (resp: http.IncomingMessage) => {\n const response: GetUrlResponse = {\n statusCode: resp.statusCode,\n statusMessage: resp.statusMessage,\n headers: Object.keys(resp.headers).reduce((accum, name) => {\n let value = resp.headers[name];\n if (Array.isArray(value)) {\n value = value.join(\", \");\n }\n accum[name] = value;\n return accum;\n }, <{ [ name: string ]: string }>{ }),\n body: null\n };\n //resp.setEncoding(\"utf8\");\n\n resp.on(\"data\", (chunk: Uint8Array) => {\n if (response.body == null) { response.body = new Uint8Array(0); }\n response.body = concat([ response.body, chunk ]);\n });\n\n resp.on(\"end\", () => {\n if (response.headers[\"content-encoding\"] === \"gzip\") {\n //const size = response.body.length;\n response.body = arrayify(gunzipSync(response.body));\n //console.log(\"Delta:\", response.body.length - size, Buffer.from(response.body).toString());\n }\n resolve(response);\n });\n\n resp.on(\"error\", (error) => {\n /* istanbul ignore next */\n (error).response = response;\n reject(error);\n });\n });\n\n request.on(\"error\", (error) => { reject(error); });\n });\n}\n\n// The URL.parse uses null instead of the empty string\nfunction nonnull(value: string): string {\n if (value == null) { return \"\"; }\n return value;\n}\n\nexport async function getUrl(href: string, options?: Options): Promise {\n if (options == null) { options = { }; }\n\n // @TODO: Once we drop support for node 8, we can pass the href\n // directly into request and skip adding the components\n // to this request object\n const url = parse(href);\n\n const request = {\n protocol: nonnull(url.protocol),\n hostname: nonnull(url.hostname),\n port: nonnull(url.port),\n path: (nonnull(url.pathname) + nonnull(url.search)),\n\n method: (options.method || \"GET\"),\n headers: shallowCopy(options.headers || { }),\n };\n\n if (options.allowGzip) {\n request.headers[\"accept-encoding\"] = \"gzip\";\n }\n\n let req: http.ClientRequest = null;\n switch (nonnull(url.protocol)) {\n case \"http:\":\n req = http.request(request);\n break;\n case \"https:\":\n req = https.request(request);\n break;\n default:\n /* istanbul ignore next */\n logger.throwError(`unsupported protocol ${ url.protocol }`, Logger.errors.UNSUPPORTED_OPERATION, {\n protocol: url.protocol,\n operation: \"request\"\n });\n }\n\n if (options.body) {\n req.write(Buffer.from(options.body));\n }\n req.end();\n\n const response = await getResponse(req);\n return response;\n}\n\n", "\"use strict\";\n\nimport { decode as base64Decode, encode as base64Encode } from \"@ethersproject/base64\";\nimport { hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { shallowCopy } from \"@ethersproject/properties\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { getUrl, GetUrlResponse, Options } from \"./geturl\";\n\nfunction staller(duration: number): Promise {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n}\n\nfunction bodyify(value: any, type: string): string {\n if (value == null) { return null; }\n\n if (typeof(value) === \"string\") { return value; }\n\n if (isBytesLike(value)) {\n if (type && (type.split(\"/\")[0] === \"text\" || type.split(\";\")[0].trim() === \"application/json\")) {\n try {\n return toUtf8String(value);\n } catch (error) { };\n }\n return hexlify(value);\n }\n\n return value;\n}\n\n// Exported Types\nexport type ConnectionInfo = {\n url: string,\n headers?: { [key: string]: string | number }\n\n user?: string,\n password?: string,\n\n allowInsecureAuthentication?: boolean,\n allowGzip?: boolean,\n\n throttleLimit?: number,\n throttleSlotInterval?: number;\n throttleCallback?: (attempt: number, url: string) => Promise,\n\n skipFetchSetup?: boolean;\n fetchOptions?: Record;\n errorPassThrough?: boolean;\n\n timeout?: number,\n};\n\nexport interface OnceBlockable {\n once(eventName: \"block\", handler: () => void): void;\n}\n\nexport interface OncePollable {\n once(eventName: \"poll\", handler: () => void): void;\n}\n\nexport type PollOptions = {\n timeout?: number,\n floor?: number,\n ceiling?: number,\n interval?: number,\n retryLimit?: number,\n onceBlock?: OnceBlockable\n oncePoll?: OncePollable\n};\n\nexport type FetchJsonResponse = {\n statusCode: number;\n headers: { [ header: string ]: string };\n};\n\n\ntype Header = { key: string, value: string };\n\nfunction unpercent(value: string): Uint8Array {\n return toUtf8Bytes(value.replace(/%([0-9a-f][0-9a-f])/gi, (all, code) => {\n return String.fromCharCode(parseInt(code, 16));\n }));\n}\n\n// This API is still a work in progress; the future changes will likely be:\n// - ConnectionInfo => FetchDataRequest\n// - FetchDataRequest.body? = string | Uint8Array | { contentType: string, data: string | Uint8Array }\n// - If string => text/plain, Uint8Array => application/octet-stream (if content-type unspecified)\n// - FetchDataRequest.processFunc = (body: Uint8Array, response: FetchDataResponse) => T\n// For this reason, it should be considered internal until the API is finalized\nexport function _fetchData(connection: string | ConnectionInfo, body?: Uint8Array, processFunc?: (value: Uint8Array, response: FetchJsonResponse) => T): Promise {\n\n // How many times to retry in the event of a throttle\n const attemptLimit = (typeof(connection) === \"object\" && connection.throttleLimit != null) ? connection.throttleLimit: 12;\n logger.assertArgument((attemptLimit > 0 && (attemptLimit % 1) === 0),\n \"invalid connection throttle limit\", \"connection.throttleLimit\", attemptLimit);\n\n const throttleCallback = ((typeof(connection) === \"object\") ? connection.throttleCallback: null);\n const throttleSlotInterval = ((typeof(connection) === \"object\" && typeof(connection.throttleSlotInterval) === \"number\") ? connection.throttleSlotInterval: 100);\n logger.assertArgument((throttleSlotInterval > 0 && (throttleSlotInterval % 1) === 0),\n \"invalid connection throttle slot interval\", \"connection.throttleSlotInterval\", throttleSlotInterval);\n\n const errorPassThrough = ((typeof(connection) === \"object\") ? !!(connection.errorPassThrough): false);\n\n const headers: { [key: string]: Header } = { };\n\n let url: string = null;\n\n // @TODO: Allow ConnectionInfo to override some of these values\n const options: Options = {\n method: \"GET\",\n };\n\n let allow304 = false;\n\n let timeout = 2 * 60 * 1000;\n\n if (typeof(connection) === \"string\") {\n url = connection;\n\n } else if (typeof(connection) === \"object\") {\n if (connection == null || connection.url == null) {\n logger.throwArgumentError(\"missing URL\", \"connection.url\", connection);\n }\n\n url = connection.url;\n\n if (typeof(connection.timeout) === \"number\" && connection.timeout > 0) {\n timeout = connection.timeout;\n }\n\n if (connection.headers) {\n for (const key in connection.headers) {\n headers[key.toLowerCase()] = { key: key, value: String(connection.headers[key]) };\n if ([\"if-none-match\", \"if-modified-since\"].indexOf(key.toLowerCase()) >= 0) {\n allow304 = true;\n }\n }\n }\n\n options.allowGzip = !!connection.allowGzip;\n\n if (connection.user != null && connection.password != null) {\n if (url.substring(0, 6) !== \"https:\" && connection.allowInsecureAuthentication !== true) {\n logger.throwError(\n \"basic authentication requires a secure https url\",\n Logger.errors.INVALID_ARGUMENT,\n { argument: \"url\", url: url, user: connection.user, password: \"[REDACTED]\" }\n );\n }\n\n const authorization = connection.user + \":\" + connection.password;\n headers[\"authorization\"] = {\n key: \"Authorization\",\n value: \"Basic \" + base64Encode(toUtf8Bytes(authorization))\n };\n }\n\n if (connection.skipFetchSetup != null) {\n options.skipFetchSetup = !!connection.skipFetchSetup;\n }\n\n if (connection.fetchOptions != null) {\n options.fetchOptions = shallowCopy(connection.fetchOptions);\n }\n }\n\n const reData = new RegExp(\"^data:([^;:]*)?(;base64)?,(.*)$\", \"i\");\n const dataMatch = ((url) ? url.match(reData): null);\n if (dataMatch) {\n try {\n const response = {\n statusCode: 200,\n statusMessage: \"OK\",\n headers: { \"content-type\": (dataMatch[1] || \"text/plain\")},\n body: (dataMatch[2] ? base64Decode(dataMatch[3]): unpercent(dataMatch[3]))\n };\n\n let result: T = response.body;\n if (processFunc) {\n result = processFunc(response.body, response);\n }\n return Promise.resolve(result);\n\n } catch (error) {\n logger.throwError(\"processing response error\", Logger.errors.SERVER_ERROR, {\n body: bodyify(dataMatch[1], dataMatch[2]),\n error: error,\n requestBody: null,\n requestMethod: \"GET\",\n url: url\n });\n }\n }\n\n if (body) {\n options.method = \"POST\";\n options.body = body;\n if (headers[\"content-type\"] == null) {\n headers[\"content-type\"] = { key: \"Content-Type\", value: \"application/octet-stream\" };\n }\n if (headers[\"content-length\"] == null) {\n headers[\"content-length\"] = { key: \"Content-Length\", value: String(body.length) };\n }\n }\n\n const flatHeaders: { [ key: string ]: string } = { };\n Object.keys(headers).forEach((key) => {\n const header = headers[key];\n flatHeaders[header.key] = header.value;\n });\n options.headers = flatHeaders;\n\n const runningTimeout = (function() {\n let timer: NodeJS.Timer = null;\n const promise: Promise = new Promise(function(resolve, reject) {\n if (timeout) {\n timer = setTimeout(() => {\n if (timer == null) { return; }\n timer = null;\n\n reject(logger.makeError(\"timeout\", Logger.errors.TIMEOUT, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n timeout: timeout,\n url: url\n }));\n }, timeout);\n }\n });\n\n const cancel = function() {\n if (timer == null) { return; }\n clearTimeout(timer);\n timer = null;\n }\n\n return { promise, cancel };\n })();\n\n const runningFetch = (async function() {\n\n for (let attempt = 0; attempt < attemptLimit; attempt++) {\n let response: GetUrlResponse = null;\n\n try {\n response = await getUrl(url, options);\n\n if (attempt < attemptLimit) {\n if (response.statusCode === 301 || response.statusCode === 302) {\n // Redirection; for now we only support absolute locataions\n const location = response.headers.location || \"\";\n if (options.method === \"GET\" && location.match(/^https:/)) {\n url = response.headers.location;\n continue;\n }\n\n } else if (response.statusCode === 429) {\n // Exponential back-off throttling\n let tryAgain = true;\n if (throttleCallback) {\n tryAgain = await throttleCallback(attempt, url);\n }\n\n if (tryAgain) {\n let stall = 0;\n\n const retryAfter = response.headers[\"retry-after\"];\n if (typeof(retryAfter) === \"string\" && retryAfter.match(/^[1-9][0-9]*$/)) {\n stall = parseInt(retryAfter) * 1000;\n } else {\n stall = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n }\n\n //console.log(\"Stalling 429\");\n await staller(stall);\n continue;\n }\n }\n }\n\n } catch (error) {\n response = (error).response;\n if (response == null) {\n runningTimeout.cancel();\n logger.throwError(\"missing response\", Logger.errors.SERVER_ERROR, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n serverError: error,\n url: url\n });\n }\n }\n\n\n let body = response.body;\n\n if (allow304 && response.statusCode === 304) {\n body = null;\n } else if (!errorPassThrough && (response.statusCode < 200 || response.statusCode >= 300)) {\n runningTimeout.cancel();\n logger.throwError(\"bad response\", Logger.errors.SERVER_ERROR, {\n status: response.statusCode,\n headers: response.headers,\n body: bodyify(body, ((response.headers) ? response.headers[\"content-type\"]: null)),\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n }\n\n if (processFunc) {\n try {\n const result = await processFunc(body, response);\n runningTimeout.cancel();\n return result;\n\n } catch (error) {\n // Allow the processFunc to trigger a throttle\n if (error.throttleRetry && attempt < attemptLimit) {\n let tryAgain = true;\n if (throttleCallback) {\n tryAgain = await throttleCallback(attempt, url);\n }\n\n if (tryAgain) {\n const timeout = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n //console.log(\"Stalling callback\");\n await staller(timeout);\n continue;\n }\n }\n\n runningTimeout.cancel();\n logger.throwError(\"processing response error\", Logger.errors.SERVER_ERROR, {\n body: bodyify(body, ((response.headers) ? response.headers[\"content-type\"]: null)),\n error: error,\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n }\n }\n\n runningTimeout.cancel();\n\n // If we had a processFunc, it either returned a T or threw above.\n // The \"body\" is now a Uint8Array.\n return (body);\n }\n\n return logger.throwError(\"failed response\", Logger.errors.SERVER_ERROR, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n })();\n\n return Promise.race([ runningTimeout.promise, runningFetch ]);\n}\n\nexport function fetchJson(connection: string | ConnectionInfo, json?: string, processFunc?: (value: any, response: FetchJsonResponse) => any): Promise {\n let processJsonFunc = (value: Uint8Array, response: FetchJsonResponse) => {\n let result: any = null;\n if (value != null) {\n try {\n result = JSON.parse(toUtf8String(value));\n } catch (error) {\n logger.throwError(\"invalid JSON\", Logger.errors.SERVER_ERROR, {\n body: value,\n error: error\n });\n }\n }\n\n if (processFunc) {\n result = processFunc(result, response);\n }\n\n return result;\n }\n\n // If we have json to send, we must\n // - add content-type of application/json (unless already overridden)\n // - convert the json to bytes\n let body: Uint8Array = null;\n if (json != null) {\n body = toUtf8Bytes(json);\n\n // Create a connection with the content-type set for JSON\n const updated: ConnectionInfo = (typeof(connection) === \"string\") ? ({ url: connection }): shallowCopy(connection);\n if (updated.headers) {\n const hasContentType = (Object.keys(updated.headers).filter((k) => (k.toLowerCase() === \"content-type\")).length) !== 0;\n if (!hasContentType) {\n updated.headers = shallowCopy(updated.headers);\n updated.headers[\"content-type\"] = \"application/json\";\n }\n } else {\n updated.headers = { \"content-type\": \"application/json\" };\n }\n connection = updated;\n }\n\n return _fetchData(connection, body, processJsonFunc);\n}\n\nexport function poll(func: () => Promise, options?: PollOptions): Promise {\n if (!options) { options = {}; }\n options = shallowCopy(options);\n if (options.floor == null) { options.floor = 0; }\n if (options.ceiling == null) { options.ceiling = 10000; }\n if (options.interval == null) { options.interval = 250; }\n\n return new Promise(function(resolve, reject) {\n\n let timer: NodeJS.Timer = null;\n let done: boolean = false;\n\n // Returns true if cancel was successful. Unsuccessful cancel means we're already done.\n const cancel = (): boolean => {\n if (done) { return false; }\n done = true;\n if (timer) { clearTimeout(timer); }\n return true;\n };\n\n if (options.timeout) {\n timer = setTimeout(() => {\n if (cancel()) { reject(new Error(\"timeout\")); }\n }, options.timeout)\n }\n\n const retryLimit = options.retryLimit;\n\n let attempt = 0;\n function check() {\n return func().then(function(result) {\n\n // If we have a result, or are allowed null then we're done\n if (result !== undefined) {\n if (cancel()) { resolve(result); }\n\n } else if (options.oncePoll) {\n options.oncePoll.once(\"poll\", check);\n\n } else if (options.onceBlock) {\n options.onceBlock.once(\"block\", check);\n\n // Otherwise, exponential back-off (up to 10s) our next request\n } else if (!done) {\n attempt++;\n if (attempt > retryLimit) {\n if (cancel()) { reject(new Error(\"retry limit reached\")); }\n return;\n }\n\n let timeout = options.interval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n if (timeout < options.floor) { timeout = options.floor; }\n if (timeout > options.ceiling) { timeout = options.ceiling; }\n\n setTimeout(check, timeout);\n }\n\n return null;\n }, function(error) {\n if (cancel()) { reject(error); }\n });\n }\n check();\n });\n}\n\n", "'use strict'\nvar ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'\n\n// pre-compute lookup table\nvar ALPHABET_MAP = {}\nfor (var z = 0; z < ALPHABET.length; z++) {\n var x = ALPHABET.charAt(z)\n\n if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')\n ALPHABET_MAP[x] = z\n}\n\nfunction polymodStep (pre) {\n var b = pre >> 25\n return ((pre & 0x1FFFFFF) << 5) ^\n (-((b >> 0) & 1) & 0x3b6a57b2) ^\n (-((b >> 1) & 1) & 0x26508e6d) ^\n (-((b >> 2) & 1) & 0x1ea119fa) ^\n (-((b >> 3) & 1) & 0x3d4233dd) ^\n (-((b >> 4) & 1) & 0x2a1462b3)\n}\n\nfunction prefixChk (prefix) {\n var chk = 1\n for (var i = 0; i < prefix.length; ++i) {\n var c = prefix.charCodeAt(i)\n if (c < 33 || c > 126) return 'Invalid prefix (' + prefix + ')'\n\n chk = polymodStep(chk) ^ (c >> 5)\n }\n chk = polymodStep(chk)\n\n for (i = 0; i < prefix.length; ++i) {\n var v = prefix.charCodeAt(i)\n chk = polymodStep(chk) ^ (v & 0x1f)\n }\n return chk\n}\n\nfunction encode (prefix, words, LIMIT) {\n LIMIT = LIMIT || 90\n if ((prefix.length + 7 + words.length) > LIMIT) throw new TypeError('Exceeds length limit')\n\n prefix = prefix.toLowerCase()\n\n // determine chk mod\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') throw new Error(chk)\n\n var result = prefix + '1'\n for (var i = 0; i < words.length; ++i) {\n var x = words[i]\n if ((x >> 5) !== 0) throw new Error('Non 5-bit word')\n\n chk = polymodStep(chk) ^ x\n result += ALPHABET.charAt(x)\n }\n\n for (i = 0; i < 6; ++i) {\n chk = polymodStep(chk)\n }\n chk ^= 1\n\n for (i = 0; i < 6; ++i) {\n var v = (chk >> ((5 - i) * 5)) & 0x1f\n result += ALPHABET.charAt(v)\n }\n\n return result\n}\n\nfunction __decode (str, LIMIT) {\n LIMIT = LIMIT || 90\n if (str.length < 8) return str + ' too short'\n if (str.length > LIMIT) return 'Exceeds length limit'\n\n // don't allow mixed case\n var lowered = str.toLowerCase()\n var uppered = str.toUpperCase()\n if (str !== lowered && str !== uppered) return 'Mixed-case string ' + str\n str = lowered\n\n var split = str.lastIndexOf('1')\n if (split === -1) return 'No separator character for ' + str\n if (split === 0) return 'Missing prefix for ' + str\n\n var prefix = str.slice(0, split)\n var wordChars = str.slice(split + 1)\n if (wordChars.length < 6) return 'Data too short'\n\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') return chk\n\n var words = []\n for (var i = 0; i < wordChars.length; ++i) {\n var c = wordChars.charAt(i)\n var v = ALPHABET_MAP[c]\n if (v === undefined) return 'Unknown character ' + c\n chk = polymodStep(chk) ^ v\n\n // not in the checksum?\n if (i + 6 >= wordChars.length) continue\n words.push(v)\n }\n\n if (chk !== 1) return 'Invalid checksum for ' + str\n return { prefix: prefix, words: words }\n}\n\nfunction decodeUnsafe () {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n}\n\nfunction decode (str) {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n\n throw new Error(res)\n}\n\nfunction convert (data, inBits, outBits, pad) {\n var value = 0\n var bits = 0\n var maxV = (1 << outBits) - 1\n\n var result = []\n for (var i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i]\n bits += inBits\n\n while (bits >= outBits) {\n bits -= outBits\n result.push((value >> bits) & maxV)\n }\n }\n\n if (pad) {\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV)\n }\n } else {\n if (bits >= inBits) return 'Excess padding'\n if ((value << (outBits - bits)) & maxV) return 'Non-zero padding'\n }\n\n return result\n}\n\nfunction toWordsUnsafe (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n}\n\nfunction toWords (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nfunction fromWordsUnsafe (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n}\n\nfunction fromWords (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nmodule.exports = {\n decodeUnsafe: decodeUnsafe,\n decode: decode,\n encode: encode,\n toWordsUnsafe: toWordsUnsafe,\n toWords: toWords,\n fromWordsUnsafe: fromWordsUnsafe,\n fromWords: fromWords\n}\n", "export const version = \"providers/5.7.2\";\n", "\"use strict\";\n\nimport { Block, TransactionReceipt, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { getAddress, getContractAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { hexDataLength, hexDataSlice, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { AddressZero } from \"@ethersproject/constants\";\nimport { shallowCopy } from \"@ethersproject/properties\";\nimport { AccessList, accessListify, parse as parseTransaction } from \"@ethersproject/transactions\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport type FormatFunc = (value: any) => any;\n\nexport type FormatFuncs = { [ key: string ]: FormatFunc };\n\nexport type Formats = {\n transaction: FormatFuncs,\n transactionRequest: FormatFuncs,\n receipt: FormatFuncs,\n receiptLog: FormatFuncs,\n block: FormatFuncs,\n blockWithTransactions: FormatFuncs,\n filter: FormatFuncs,\n filterLog: FormatFuncs,\n};\n\nexport class Formatter {\n readonly formats: Formats;\n\n constructor() {\n this.formats = this.getDefaultFormats();\n }\n\n getDefaultFormats(): Formats {\n const formats: Formats = ({ });\n\n const address = this.address.bind(this);\n const bigNumber = this.bigNumber.bind(this);\n const blockTag = this.blockTag.bind(this);\n const data = this.data.bind(this);\n const hash = this.hash.bind(this);\n const hex = this.hex.bind(this);\n const number = this.number.bind(this);\n const type = this.type.bind(this);\n\n const strictData = (v: any) => { return this.data(v, true); };\n\n formats.transaction = {\n hash: hash,\n\n type: type,\n accessList: Formatter.allowNull(this.accessList.bind(this), null),\n\n blockHash: Formatter.allowNull(hash, null),\n blockNumber: Formatter.allowNull(number, null),\n transactionIndex: Formatter.allowNull(number, null),\n\n confirmations: Formatter.allowNull(number, null),\n\n from: address,\n\n // either (gasPrice) or (maxPriorityFeePerGas + maxFeePerGas)\n // must be set\n gasPrice: Formatter.allowNull(bigNumber),\n maxPriorityFeePerGas: Formatter.allowNull(bigNumber),\n maxFeePerGas: Formatter.allowNull(bigNumber),\n\n gasLimit: bigNumber,\n to: Formatter.allowNull(address, null),\n value: bigNumber,\n nonce: number,\n data: data,\n\n r: Formatter.allowNull(this.uint256),\n s: Formatter.allowNull(this.uint256),\n v: Formatter.allowNull(number),\n\n creates: Formatter.allowNull(address, null),\n\n raw: Formatter.allowNull(data),\n };\n\n formats.transactionRequest = {\n from: Formatter.allowNull(address),\n nonce: Formatter.allowNull(number),\n gasLimit: Formatter.allowNull(bigNumber),\n gasPrice: Formatter.allowNull(bigNumber),\n maxPriorityFeePerGas: Formatter.allowNull(bigNumber),\n maxFeePerGas: Formatter.allowNull(bigNumber),\n to: Formatter.allowNull(address),\n value: Formatter.allowNull(bigNumber),\n data: Formatter.allowNull(strictData),\n type: Formatter.allowNull(number),\n accessList: Formatter.allowNull(this.accessList.bind(this), null),\n };\n\n formats.receiptLog = {\n transactionIndex: number,\n blockNumber: number,\n transactionHash: hash,\n address: address,\n topics: Formatter.arrayOf(hash),\n data: data,\n logIndex: number,\n blockHash: hash,\n };\n\n formats.receipt = {\n to: Formatter.allowNull(this.address, null),\n from: Formatter.allowNull(this.address, null),\n contractAddress: Formatter.allowNull(address, null),\n transactionIndex: number,\n // should be allowNull(hash), but broken-EIP-658 support is handled in receipt\n root: Formatter.allowNull(hex),\n gasUsed: bigNumber,\n logsBloom: Formatter.allowNull(data),// @TODO: should this be data?\n blockHash: hash,\n transactionHash: hash,\n logs: Formatter.arrayOf(this.receiptLog.bind(this)),\n blockNumber: number,\n confirmations: Formatter.allowNull(number, null),\n cumulativeGasUsed: bigNumber,\n effectiveGasPrice: Formatter.allowNull(bigNumber),\n status: Formatter.allowNull(number),\n type: type\n };\n\n formats.block = {\n hash: Formatter.allowNull(hash),\n parentHash: hash,\n number: number,\n\n timestamp: number,\n nonce: Formatter.allowNull(hex),\n difficulty: this.difficulty.bind(this),\n\n gasLimit: bigNumber,\n gasUsed: bigNumber,\n\n miner: Formatter.allowNull(address),\n extraData: data,\n\n transactions: Formatter.allowNull(Formatter.arrayOf(hash)),\n\n baseFeePerGas: Formatter.allowNull(bigNumber)\n };\n\n formats.blockWithTransactions = shallowCopy(formats.block);\n formats.blockWithTransactions.transactions = Formatter.allowNull(Formatter.arrayOf(this.transactionResponse.bind(this)));\n\n formats.filter = {\n fromBlock: Formatter.allowNull(blockTag, undefined),\n toBlock: Formatter.allowNull(blockTag, undefined),\n blockHash: Formatter.allowNull(hash, undefined),\n address: Formatter.allowNull(address, undefined),\n topics: Formatter.allowNull(this.topics.bind(this), undefined),\n };\n\n formats.filterLog = {\n blockNumber: Formatter.allowNull(number),\n blockHash: Formatter.allowNull(hash),\n transactionIndex: number,\n\n removed: Formatter.allowNull(this.boolean.bind(this)),\n\n address: address,\n data: Formatter.allowFalsish(data, \"0x\"),\n\n topics: Formatter.arrayOf(hash),\n\n transactionHash: hash,\n logIndex: number,\n };\n\n return formats;\n }\n\n accessList(accessList: Array): AccessList {\n return accessListify(accessList || []);\n }\n\n // Requires a BigNumberish that is within the IEEE754 safe integer range; returns a number\n // Strict! Used on input.\n number(number: any): number {\n if (number === \"0x\") { return 0; }\n return BigNumber.from(number).toNumber();\n }\n\n type(number: any): number {\n if (number === \"0x\" || number == null) { return 0; }\n return BigNumber.from(number).toNumber();\n }\n\n // Strict! Used on input.\n bigNumber(value: any): BigNumber {\n return BigNumber.from(value);\n }\n\n // Requires a boolean, \"true\" or \"false\"; returns a boolean\n boolean(value: any): boolean {\n if (typeof(value) === \"boolean\") { return value; }\n if (typeof(value) === \"string\") {\n value = value.toLowerCase();\n if (value === \"true\") { return true; }\n if (value === \"false\") { return false; }\n }\n throw new Error(\"invalid boolean - \" + value);\n }\n\n hex(value: any, strict?: boolean): string {\n if (typeof(value) === \"string\") {\n if (!strict && value.substring(0, 2) !== \"0x\") { value = \"0x\" + value; }\n if (isHexString(value)) {\n return value.toLowerCase();\n }\n }\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n }\n\n data(value: any, strict?: boolean): string {\n const result = this.hex(value, strict);\n if ((result.length % 2) !== 0) {\n throw new Error(\"invalid data; odd-length - \" + value);\n }\n return result;\n }\n\n // Requires an address\n // Strict! Used on input.\n address(value: any): string {\n return getAddress(value);\n }\n\n callAddress(value: any): string {\n if (!isHexString(value, 32)) { return null; }\n const address = getAddress(hexDataSlice(value, 12));\n return (address === AddressZero) ? null: address;\n }\n\n contractAddress(value: any): string {\n return getContractAddress(value);\n }\n\n // Strict! Used on input.\n blockTag(blockTag: any): string {\n if (blockTag == null) { return \"latest\"; }\n\n if (blockTag === \"earliest\") { return \"0x0\"; }\n\n switch (blockTag) {\n case \"earliest\": return \"0x0\";\n case \"latest\": case \"pending\": case \"safe\": case \"finalized\":\n return blockTag;\n }\n\n if (typeof(blockTag) === \"number\" || isHexString(blockTag)) {\n return hexValue(blockTag);\n }\n\n throw new Error(\"invalid blockTag\");\n }\n\n // Requires a hash, optionally requires 0x prefix; returns prefixed lowercase hash.\n hash(value: any, strict?: boolean): string {\n const result = this.hex(value, strict);\n if (hexDataLength(result) !== 32) {\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n }\n return result;\n }\n\n // Returns the difficulty as a number, or if too large (i.e. PoA network) null\n difficulty(value: any): number {\n if (value == null) { return null; }\n\n const v = BigNumber.from(value);\n\n try {\n return v.toNumber();\n } catch (error) { }\n\n return null;\n }\n\n uint256(value: any): string {\n if (!isHexString(value)) {\n throw new Error(\"invalid uint256\");\n }\n return hexZeroPad(value, 32);\n }\n\n _block(value: any, format: any): Block {\n if (value.author != null && value.miner == null) {\n value.miner = value.author;\n }\n // The difficulty may need to come from _difficulty in recursed blocks\n const difficulty = (value._difficulty != null) ? value._difficulty: value.difficulty;\n const result = Formatter.check(format, value);\n result._difficulty = ((difficulty == null) ? null: BigNumber.from(difficulty));\n return result;\n }\n\n block(value: any): Block {\n return this._block(value, this.formats.block);\n }\n\n blockWithTransactions(value: any): Block {\n return this._block(value, this.formats.blockWithTransactions);\n }\n\n // Strict! Used on input.\n transactionRequest(value: any): any {\n return Formatter.check(this.formats.transactionRequest, value);\n }\n\n transactionResponse(transaction: any): TransactionResponse {\n\n // Rename gas to gasLimit\n if (transaction.gas != null && transaction.gasLimit == null) {\n transaction.gasLimit = transaction.gas;\n }\n\n // Some clients (TestRPC) do strange things like return 0x0 for the\n // 0 address; correct this to be a real address\n if (transaction.to && BigNumber.from(transaction.to).isZero()) {\n transaction.to = \"0x0000000000000000000000000000000000000000\";\n }\n\n // Rename input to data\n if (transaction.input != null && transaction.data == null) {\n transaction.data = transaction.input;\n }\n\n // If to and creates are empty, populate the creates from the transaction\n if (transaction.to == null && transaction.creates == null) {\n transaction.creates = this.contractAddress(transaction);\n }\n\n if ((transaction.type === 1 || transaction.type === 2)&& transaction.accessList == null) {\n transaction.accessList = [ ];\n }\n\n const result: TransactionResponse = Formatter.check(this.formats.transaction, transaction);\n\n if (transaction.chainId != null) {\n let chainId = transaction.chainId;\n\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n\n result.chainId = chainId;\n\n } else {\n let chainId = transaction.networkId;\n\n // geth-etc returns chainId\n if (chainId == null && result.v == null) {\n chainId = transaction.chainId;\n }\n\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n\n if (typeof(chainId) !== \"number\" && result.v != null) {\n chainId = (result.v - 35) / 2;\n if (chainId < 0) { chainId = 0; }\n chainId = parseInt(chainId);\n }\n\n if (typeof(chainId) !== \"number\") { chainId = 0; }\n\n result.chainId = chainId;\n }\n\n // 0x0000... should actually be null\n if (result.blockHash && result.blockHash.replace(/0/g, \"\") === \"x\") {\n result.blockHash = null;\n }\n\n return result;\n }\n\n transaction(value: any): any {\n return parseTransaction(value);\n }\n\n receiptLog(value: any): any {\n return Formatter.check(this.formats.receiptLog, value);\n }\n\n receipt(value: any): TransactionReceipt {\n const result: TransactionReceipt = Formatter.check(this.formats.receipt, value);\n\n // RSK incorrectly implemented EIP-658, so we munge things a bit here for it\n if (result.root != null) {\n if (result.root.length <= 4) {\n // Could be 0x00, 0x0, 0x01 or 0x1\n const value = BigNumber.from(result.root).toNumber();\n if (value === 0 || value === 1) {\n // Make sure if both are specified, they match\n if (result.status != null && (result.status !== value)) {\n logger.throwArgumentError(\"alt-root-status/status mismatch\", \"value\", { root: result.root, status: result.status });\n }\n result.status = value;\n delete result.root;\n } else {\n logger.throwArgumentError(\"invalid alt-root-status\", \"value.root\", result.root);\n }\n } else if (result.root.length !== 66) {\n // Must be a valid bytes32\n logger.throwArgumentError(\"invalid root hash\", \"value.root\", result.root);\n }\n }\n\n if (result.status != null) {\n result.byzantium = true;\n }\n\n return result;\n }\n\n topics(value: any): any {\n if (Array.isArray(value)) {\n return value.map((v) => this.topics(v));\n\n } else if (value != null) {\n return this.hash(value, true);\n }\n\n return null;\n }\n\n filter(value: any): any {\n return Formatter.check(this.formats.filter, value);\n }\n\n filterLog(value: any): any {\n return Formatter.check(this.formats.filterLog, value);\n }\n\n static check(format: { [ name: string ]: FormatFunc }, object: any): any {\n const result: any = {};\n for (const key in format) {\n try {\n const value = format[key](object[key]);\n if (value !== undefined) { result[key] = value; }\n } catch (error) {\n error.checkKey = key;\n error.checkValue = object[key];\n throw error;\n }\n }\n return result;\n }\n\n // if value is null-ish, nullValue is returned\n static allowNull(format: FormatFunc, nullValue?: any): FormatFunc {\n return (function(value: any) {\n if (value == null) { return nullValue; }\n return format(value);\n });\n }\n\n // If value is false-ish, replaceValue is returned\n static allowFalsish(format: FormatFunc, replaceValue: any): FormatFunc {\n return (function(value: any) {\n if (!value) { return replaceValue; }\n return format(value);\n });\n }\n\n // Requires an Array satisfying check\n static arrayOf(format: FormatFunc): FormatFunc {\n return (function(array: any): Array {\n if (!Array.isArray(array)) { throw new Error(\"not an array\"); }\n\n const result: any = [];\n\n array.forEach(function(value) {\n result.push(format(value));\n });\n\n return result;\n });\n }\n}\n\nexport interface CommunityResourcable {\n isCommunityResource(): boolean;\n}\n\nexport function isCommunityResourcable(value: any): value is CommunityResourcable {\n return (value && typeof(value.isCommunityResource) === \"function\");\n}\n\nexport function isCommunityResource(value: any): boolean {\n return (isCommunityResourcable(value) && value.isCommunityResource());\n}\n\n// Show the throttle message only once\nlet throttleMessage = false;\nexport function showThrottleMessage() {\n if (throttleMessage) { return; }\n throttleMessage = true;\n\n console.log(\"========= NOTICE =========\")\n console.log(\"Request-Rate Exceeded (this message will not be repeated)\");\n console.log(\"\");\n console.log(\"The default API keys for each service are provided as a highly-throttled,\");\n console.log(\"community resource for low-traffic projects and early prototyping.\");\n console.log(\"\");\n console.log(\"While your application will continue to function, we highly recommended\");\n console.log(\"signing up for your own API keys to improve performance, increase your\");\n console.log(\"request rate/limit and enable other perks, such as metrics and advanced APIs.\");\n console.log(\"\");\n console.log(\"For more details: https:/\\/docs.ethers.io/api-keys/\");\n console.log(\"==========================\");\n}\n\n", "\"use strict\";\n\nimport {\n Block, BlockTag, BlockWithTransactions, EventType, Filter, FilterByBlockHash, ForkEvent,\n Listener, Log, Provider, TransactionReceipt, TransactionRequest, TransactionResponse\n} from \"@ethersproject/abstract-provider\";\nimport { encode as base64Encode } from \"@ethersproject/base64\";\nimport { Base58 } from \"@ethersproject/basex\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexConcat, hexDataLength, hexDataSlice, hexlify, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { HashZero } from \"@ethersproject/constants\";\nimport { dnsEncode, namehash } from \"@ethersproject/hash\";\nimport { getNetwork, Network, Networkish } from \"@ethersproject/networks\";\nimport { Deferrable, defineReadOnly, getStatic, resolveProperties } from \"@ethersproject/properties\";\nimport { Transaction } from \"@ethersproject/transactions\";\nimport { sha256 } from \"@ethersproject/sha2\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { fetchJson, poll } from \"@ethersproject/web\";\n\nimport bech32 from \"bech32\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Formatter } from \"./formatter\";\n\nconst MAX_CCIP_REDIRECTS = 10;\n\n//////////////////////////////\n// Event Serializeing\n\nfunction checkTopic(topic: string): string {\n if (topic == null) { return \"null\"; }\n if (hexDataLength(topic) !== 32) {\n logger.throwArgumentError(\"invalid topic\", \"topic\", topic);\n }\n return topic.toLowerCase();\n}\n\nfunction serializeTopics(topics: Array>): string {\n // Remove trailing null AND-topics; they are redundant\n topics = topics.slice();\n while (topics.length > 0 && topics[topics.length - 1] == null) { topics.pop(); }\n\n return topics.map((topic) => {\n if (Array.isArray(topic)) {\n\n // Only track unique OR-topics\n const unique: { [ topic: string ]: boolean } = { }\n topic.forEach((topic) => {\n unique[checkTopic(topic)] = true;\n });\n\n // The order of OR-topics does not matter\n const sorted = Object.keys(unique);\n sorted.sort();\n\n return sorted.join(\"|\");\n\n } else {\n return checkTopic(topic);\n }\n }).join(\"&\");\n}\n\nfunction deserializeTopics(data: string): Array> {\n if (data === \"\") { return [ ]; }\n\n return data.split(/&/g).map((topic) => {\n if (topic === \"\") { return [ ]; }\n\n const comps = topic.split(\"|\").map((topic) => {\n return ((topic === \"null\") ? null: topic);\n });\n\n return ((comps.length === 1) ? comps[0]: comps);\n });\n}\n\nfunction getEventTag(eventName: EventType): string {\n if (typeof(eventName) === \"string\") {\n eventName = eventName.toLowerCase();\n\n if (hexDataLength(eventName) === 32) {\n return \"tx:\" + eventName;\n }\n\n if (eventName.indexOf(\":\") === -1) {\n return eventName;\n }\n\n } else if (Array.isArray(eventName)) {\n return \"filter:*:\" + serializeTopics(eventName);\n\n } else if (ForkEvent.isForkEvent(eventName)) {\n logger.warn(\"not implemented\");\n throw new Error(\"not implemented\");\n\n } else if (eventName && typeof(eventName) === \"object\") {\n return \"filter:\" + (eventName.address || \"*\") + \":\" + serializeTopics(eventName.topics || []);\n }\n\n throw new Error(\"invalid event - \" + eventName);\n}\n\n//////////////////////////////\n// Helper Object\n\nfunction getTime() {\n return (new Date()).getTime();\n}\n\nfunction stall(duration: number): Promise {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n}\n\n//////////////////////////////\n// Provider Object\n\n\n/**\n * EventType\n * - \"block\"\n * - \"poll\"\n * - \"didPoll\"\n * - \"pending\"\n * - \"error\"\n * - \"network\"\n * - filter\n * - topics array\n * - transaction hash\n */\n\nconst PollableEvents = [ \"block\", \"network\", \"pending\", \"poll\" ];\n\nexport class Event {\n readonly listener: Listener;\n readonly once: boolean;\n readonly tag: string;\n\n _lastBlockNumber: number\n _inflight: boolean;\n\n constructor(tag: string, listener: Listener, once: boolean) {\n defineReadOnly(this, \"tag\", tag);\n defineReadOnly(this, \"listener\", listener);\n defineReadOnly(this, \"once\", once);\n\n this._lastBlockNumber = -2;\n this._inflight = false;\n }\n\n get event(): EventType {\n switch (this.type) {\n case \"tx\":\n return this.hash;\n case \"filter\":\n return this.filter;\n }\n return this.tag;\n }\n\n get type(): string {\n return this.tag.split(\":\")[0]\n }\n\n get hash(): string {\n const comps = this.tag.split(\":\");\n if (comps[0] !== \"tx\") { return null; }\n return comps[1];\n }\n\n get filter(): Filter {\n const comps = this.tag.split(\":\");\n if (comps[0] !== \"filter\") { return null; }\n const address = comps[1];\n\n const topics = deserializeTopics(comps[2]);\n const filter: Filter = { };\n\n if (topics.length > 0) { filter.topics = topics; }\n if (address && address !== \"*\") { filter.address = address; }\n\n return filter;\n }\n\n pollable(): boolean {\n return (this.tag.indexOf(\":\") >= 0 || PollableEvents.indexOf(this.tag) >= 0);\n }\n}\n\nexport interface EnsResolver {\n\n // Name this Resolver is associated with\n readonly name: string;\n\n // The address of the resolver\n readonly address: string;\n\n // Multichain address resolution (also normal address resolution)\n // See: https://eips.ethereum.org/EIPS/eip-2304\n getAddress(coinType?: 60): Promise\n\n // Contenthash field\n // See: https://eips.ethereum.org/EIPS/eip-1577\n getContentHash(): Promise;\n\n // Storage of text records\n // See: https://eips.ethereum.org/EIPS/eip-634\n getText(key: string): Promise;\n};\n\nexport interface EnsProvider {\n resolveName(name: string): Promise;\n lookupAddress(address: string): Promise;\n getResolver(name: string): Promise;\n}\n\ntype CoinInfo = {\n symbol: string,\n ilk?: string, // General family\n prefix?: string, // Bech32 prefix\n p2pkh?: number, // Pay-to-Public-Key-Hash Version\n p2sh?: number, // Pay-to-Script-Hash Version\n};\n\n// https://github.com/satoshilabs/slips/blob/master/slip-0044.md\nconst coinInfos: { [ coinType: string ]: CoinInfo } = {\n \"0\": { symbol: \"btc\", p2pkh: 0x00, p2sh: 0x05, prefix: \"bc\" },\n \"2\": { symbol: \"ltc\", p2pkh: 0x30, p2sh: 0x32, prefix: \"ltc\" },\n \"3\": { symbol: \"doge\", p2pkh: 0x1e, p2sh: 0x16 },\n \"60\": { symbol: \"eth\", ilk: \"eth\" },\n \"61\": { symbol: \"etc\", ilk: \"eth\" },\n \"700\": { symbol: \"xdai\", ilk: \"eth\" },\n};\n\nfunction bytes32ify(value: number): string {\n return hexZeroPad(BigNumber.from(value).toHexString(), 32);\n}\n\n// Compute the Base58Check encoded data (checksum is first 4 bytes of sha256d)\nfunction base58Encode(data: Uint8Array): string {\n return Base58.encode(concat([ data, hexDataSlice(sha256(sha256(data)), 0, 4) ]));\n}\n\nexport interface Avatar {\n url: string;\n linkage: Array<{ type: string, content: string }>;\n}\n\nconst matcherIpfs = new RegExp(\"^(ipfs):/\\/(.*)$\", \"i\");\nconst matchers = [\n new RegExp(\"^(https):/\\/(.*)$\", \"i\"),\n new RegExp(\"^(data):(.*)$\", \"i\"),\n matcherIpfs,\n new RegExp(\"^eip155:[0-9]+/(erc[0-9]+):(.*)$\", \"i\"),\n];\n\nfunction _parseString(result: string, start: number): null | string {\n try {\n return toUtf8String(_parseBytes(result, start));\n } catch(error) { }\n return null;\n}\n\nfunction _parseBytes(result: string, start: number): null | string {\n if (result === \"0x\") { return null; }\n\n const offset = BigNumber.from(hexDataSlice(result, start, start + 32)).toNumber();\n const length = BigNumber.from(hexDataSlice(result, offset, offset + 32)).toNumber();\n\n return hexDataSlice(result, offset + 32, offset + 32 + length);\n}\n\n// Trim off the ipfs:// prefix and return the default gateway URL\nfunction getIpfsLink(link: string): string {\n if (link.match(/^ipfs:\\/\\/ipfs\\//i)) {\n link = link.substring(12);\n } else if (link.match(/^ipfs:\\/\\//i)) {\n link = link.substring(7);\n } else {\n logger.throwArgumentError(\"unsupported IPFS format\", \"link\", link);\n }\n\n return `https:/\\/gateway.ipfs.io/ipfs/${ link }`;\n}\n\nfunction numPad(value: number): Uint8Array {\n const result = arrayify(value);\n if (result.length > 32) { throw new Error(\"internal; should not happen\"); }\n\n const padded = new Uint8Array(32);\n padded.set(result, 32 - result.length);\n return padded;\n}\n\nfunction bytesPad(value: Uint8Array): Uint8Array {\n if ((value.length % 32) === 0) { return value; }\n\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\n\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas: Array) {\n const result: Array = [ ];\n\n let byteCount = 0;\n\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(null);\n byteCount += 32;\n }\n\n for (let i = 0; i < datas.length; i++) {\n const data = arrayify(datas[i]);\n\n // Update the bytes offset\n result[i] = numPad(byteCount);\n\n // The length and padded value of data\n result.push(numPad(data.length));\n result.push(bytesPad(data));\n byteCount += 32 + Math.ceil(data.length / 32) * 32;\n }\n\n return hexConcat(result);\n}\n\nexport class Resolver implements EnsResolver {\n readonly provider: BaseProvider;\n\n readonly name: string;\n readonly address: string;\n\n readonly _resolvedAddress: null | string;\n\n // For EIP-2544 names, the ancestor that provided the resolver\n _supportsEip2544: null | Promise;\n\n // The resolvedAddress is only for creating a ReverseLookup resolver\n constructor(provider: BaseProvider, address: string, name: string, resolvedAddress?: string) {\n defineReadOnly(this, \"provider\", provider);\n defineReadOnly(this, \"name\", name);\n defineReadOnly(this, \"address\", provider.formatter.address(address));\n defineReadOnly(this, \"_resolvedAddress\", resolvedAddress);\n }\n\n supportsWildcard(): Promise {\n if (!this._supportsEip2544) {\n // supportsInterface(bytes4 = selector(\"resolve(bytes,bytes)\"))\n this._supportsEip2544 = this.provider.call({\n to: this.address,\n data: \"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000\"\n }).then((result) => {\n return BigNumber.from(result).eq(1);\n }).catch((error) => {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return false; }\n // Rethrow the error: link is down, etc. Let future attempts retry.\n this._supportsEip2544 = null;\n throw error;\n });\n }\n\n return this._supportsEip2544;\n }\n\n async _fetch(selector: string, parameters?: string): Promise {\n\n // e.g. keccak256(\"addr(bytes32,uint256)\")\n const tx = {\n to: this.address,\n ccipReadEnabled: true,\n data: hexConcat([ selector, namehash(this.name), (parameters || \"0x\") ])\n };\n\n // Wildcard support; use EIP-2544 to resolve the request\n let parseBytes = false;\n if (await this.supportsWildcard()) {\n parseBytes = true;\n\n // selector(\"resolve(bytes,bytes)\")\n tx.data = hexConcat([ \"0x9061b923\", encodeBytes([ dnsEncode(this.name), tx.data ]) ]);\n }\n\n try {\n let result = await this.provider.call(tx);\n if ((arrayify(result).length % 32) === 4) {\n logger.throwError(\"resolver threw error\", Logger.errors.CALL_EXCEPTION, {\n transaction: tx, data: result\n });\n }\n if (parseBytes) { result = _parseBytes(result, 0); }\n return result;\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return null; }\n throw error;\n }\n }\n\n async _fetchBytes(selector: string, parameters?: string): Promise {\n const result = await this._fetch(selector, parameters);\n if (result != null) { return _parseBytes(result, 0); }\n return null;\n }\n\n _getAddress(coinType: number, hexBytes: string): string {\n const coinInfo = coinInfos[String(coinType)];\n\n if (coinInfo == null) {\n logger.throwError(`unsupported coin type: ${ coinType }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `getAddress(${ coinType })`\n });\n }\n\n if (coinInfo.ilk === \"eth\") {\n return this.provider.formatter.address(hexBytes);\n }\n\n const bytes = arrayify(hexBytes);\n\n // P2PKH: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG\n if (coinInfo.p2pkh != null) {\n const p2pkh = hexBytes.match(/^0x76a9([0-9a-f][0-9a-f])([0-9a-f]*)88ac$/);\n if (p2pkh) {\n const length = parseInt(p2pkh[1], 16);\n if (p2pkh[2].length === length * 2 && length >= 1 && length <= 75) {\n return base58Encode(concat([ [ coinInfo.p2pkh ], (\"0x\" + p2pkh[2]) ]));\n }\n }\n }\n\n // P2SH: OP_HASH160 OP_EQUAL\n if (coinInfo.p2sh != null) {\n const p2sh = hexBytes.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);\n if (p2sh) {\n const length = parseInt(p2sh[1], 16);\n if (p2sh[2].length === length * 2 && length >= 1 && length <= 75) {\n return base58Encode(concat([ [ coinInfo.p2sh ], (\"0x\" + p2sh[2]) ]));\n }\n }\n }\n\n // Bech32\n if (coinInfo.prefix != null) {\n const length = bytes[1];\n\n // https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#witness-program\n let version = bytes[0];\n if (version === 0x00) {\n if (length !== 20 && length !== 32) {\n version = -1;\n }\n } else {\n version = -1;\n }\n\n if (version >= 0 && bytes.length === 2 + length && length >= 1 && length <= 75) {\n const words = bech32.toWords(bytes.slice(2));\n words.unshift(version);\n return bech32.encode(coinInfo.prefix, words);\n }\n }\n\n return null;\n }\n\n\n async getAddress(coinType?: number): Promise {\n if (coinType == null) { coinType = 60; }\n\n // If Ethereum, use the standard `addr(bytes32)`\n if (coinType === 60) {\n try {\n // keccak256(\"addr(bytes32)\")\n const result = await this._fetch(\"0x3b3b57de\");\n\n // No address\n if (result === \"0x\" || result === HashZero) { return null; }\n\n return this.provider.formatter.callAddress(result);\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return null; }\n throw error;\n }\n }\n\n // keccak256(\"addr(bytes32,uint256\")\n const hexBytes = await this._fetchBytes(\"0xf1cb7e06\", bytes32ify(coinType));\n\n // No address\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n // Compute the address\n const address = this._getAddress(coinType, hexBytes);\n\n if (address == null) {\n logger.throwError(`invalid or unsupported coin data`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `getAddress(${ coinType })`,\n coinType: coinType,\n data: hexBytes\n });\n }\n\n return address;\n }\n\n async getAvatar(): Promise {\n const linkage: Array<{ type: string, content: string }> = [ { type: \"name\", content: this.name } ];\n try {\n // test data for ricmoo.eth\n //const avatar = \"eip155:1/erc721:0x265385c7f4132228A0d54EB1A9e7460b91c0cC68/29233\";\n const avatar = await this.getText(\"avatar\");\n if (avatar == null) { return null; }\n\n for (let i = 0; i < matchers.length; i++) {\n const match = avatar.match(matchers[i]);\n if (match == null) { continue; }\n\n const scheme = match[1].toLowerCase();\n\n switch (scheme) {\n case \"https\":\n linkage.push({ type: \"url\", content: avatar });\n return { linkage, url: avatar };\n\n case \"data\":\n linkage.push({ type: \"data\", content: avatar });\n return { linkage, url: avatar };\n\n case \"ipfs\":\n linkage.push({ type: \"ipfs\", content: avatar });\n return { linkage, url: getIpfsLink(avatar) };\n\n case \"erc721\":\n case \"erc1155\": {\n // Depending on the ERC type, use tokenURI(uint256) or url(uint256)\n const selector = (scheme === \"erc721\") ? \"0xc87b56dd\": \"0x0e89341c\";\n linkage.push({ type: scheme, content: avatar });\n\n // The owner of this name\n const owner = (this._resolvedAddress || await this.getAddress());\n\n const comps = (match[2] || \"\").split(\"/\");\n if (comps.length !== 2) { return null; }\n\n const addr = await this.provider.formatter.address(comps[0]);\n const tokenId = hexZeroPad(BigNumber.from(comps[1]).toHexString(), 32);\n\n // Check that this account owns the token\n if (scheme === \"erc721\") {\n // ownerOf(uint256 tokenId)\n const tokenOwner = this.provider.formatter.callAddress(await this.provider.call({\n to: addr, data: hexConcat([ \"0x6352211e\", tokenId ])\n }));\n if (owner !== tokenOwner) { return null; }\n linkage.push({ type: \"owner\", content: tokenOwner });\n\n } else if (scheme === \"erc1155\") {\n // balanceOf(address owner, uint256 tokenId)\n const balance = BigNumber.from(await this.provider.call({\n to: addr, data: hexConcat([ \"0x00fdd58e\", hexZeroPad(owner, 32), tokenId ])\n }));\n if (balance.isZero()) { return null; }\n linkage.push({ type: \"balance\", content: balance.toString() });\n }\n\n // Call the token contract for the metadata URL\n const tx = {\n to: this.provider.formatter.address(comps[0]),\n data: hexConcat([ selector, tokenId ])\n };\n\n let metadataUrl = _parseString(await this.provider.call(tx), 0);\n if (metadataUrl == null) { return null; }\n linkage.push({ type: \"metadata-url-base\", content: metadataUrl });\n\n // ERC-1155 allows a generic {id} in the URL\n if (scheme === \"erc1155\") {\n metadataUrl = metadataUrl.replace(\"{id}\", tokenId.substring(2));\n linkage.push({ type: \"metadata-url-expanded\", content: metadataUrl });\n }\n\n // Transform IPFS metadata links\n if (metadataUrl.match(/^ipfs:/i)) {\n metadataUrl = getIpfsLink(metadataUrl);\n }\n\n linkage.push({ type: \"metadata-url\", content: metadataUrl });\n\n // Get the token metadata\n const metadata = await fetchJson(metadataUrl);\n if (!metadata) { return null; }\n linkage.push({ type: \"metadata\", content: JSON.stringify(metadata) });\n\n // Pull the image URL out\n let imageUrl = metadata.image;\n if (typeof(imageUrl) !== \"string\") { return null; }\n\n if (imageUrl.match(/^(https:\\/\\/|data:)/i)) {\n // Allow\n } else {\n // Transform IPFS link to gateway\n const ipfs = imageUrl.match(matcherIpfs);\n if (ipfs == null) { return null; }\n\n linkage.push({ type: \"url-ipfs\", content: imageUrl });\n imageUrl = getIpfsLink(imageUrl);\n }\n\n linkage.push({ type: \"url\", content: imageUrl });\n\n return { linkage, url: imageUrl };\n }\n }\n }\n } catch (error) { }\n\n return null;\n }\n\n async getContentHash(): Promise {\n\n // keccak256(\"contenthash()\")\n const hexBytes = await this._fetchBytes(\"0xbc1c58d1\");\n\n // No contenthash\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n // IPFS (CID: 1, Type: DAG-PB)\n const ipfs = hexBytes.match(/^0xe3010170(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipfs) {\n const length = parseInt(ipfs[3], 16);\n if (ipfs[4].length === length * 2) {\n return \"ipfs:/\\/\" + Base58.encode(\"0x\" + ipfs[1]);\n }\n }\n\n // IPNS (CID: 1, Type: libp2p-key)\n const ipns = hexBytes.match(/^0xe5010172(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipns) {\n const length = parseInt(ipns[3], 16);\n if (ipns[4].length === length * 2) {\n return \"ipns:/\\/\" + Base58.encode(\"0x\" + ipns[1]);\n }\n }\n\n // Swarm (CID: 1, Type: swarm-manifest; hash/length hard-coded to keccak256/32)\n const swarm = hexBytes.match(/^0xe40101fa011b20([0-9a-f]*)$/)\n if (swarm) {\n if (swarm[1].length === (32 * 2)) {\n return \"bzz:/\\/\" + swarm[1]\n }\n }\n\n const skynet = hexBytes.match(/^0x90b2c605([0-9a-f]*)$/);\n if (skynet) {\n if (skynet[1].length === (34 * 2)) {\n // URL Safe base64; https://datatracker.ietf.org/doc/html/rfc4648#section-5\n const urlSafe: Record = { \"=\": \"\", \"+\": \"-\", \"/\": \"_\" };\n const hash = base64Encode(\"0x\" + skynet[1]).replace(/[=+\\/]/g, (a) => (urlSafe[a]));\n return \"sia:/\\/\" + hash;\n }\n }\n\n return logger.throwError(`invalid or unsupported content hash data`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getContentHash()\",\n data: hexBytes\n });\n }\n\n async getText(key: string): Promise {\n\n // The key encoded as parameter to fetchBytes\n let keyBytes = toUtf8Bytes(key);\n\n // The nodehash consumes the first slot, so the string pointer targets\n // offset 64, with the length at offset 64 and data starting at offset 96\n keyBytes = concat([ bytes32ify(64), bytes32ify(keyBytes.length), keyBytes ]);\n\n // Pad to word-size (32 bytes)\n if ((keyBytes.length % 32) !== 0) {\n keyBytes = concat([ keyBytes, hexZeroPad(\"0x\", 32 - (key.length % 32)) ])\n }\n\n const hexBytes = await this._fetchBytes(\"0x59d1d43c\", hexlify(keyBytes));\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n return toUtf8String(hexBytes);\n }\n}\n\nlet defaultFormatter: Formatter = null;\n\nlet nextPollId = 1;\n\nexport class BaseProvider extends Provider implements EnsProvider {\n _networkPromise: Promise;\n _network: Network;\n\n _events: Array;\n\n formatter: Formatter;\n\n // To help mitigate the eventually consistent nature of the blockchain\n // we keep a mapping of events we emit. If we emit an event X, we expect\n // that a user should be able to query for that event in the callback,\n // if the node returns null, we stall the response until we get back a\n // meaningful value, since we may be hitting a re-org, or a node that\n // has not indexed the event yet.\n // Events:\n // - t:{hash} - Transaction hash\n // - b:{hash} - BlockHash\n // - block - The most recent emitted block\n _emitted: { [ eventName: string ]: number | \"pending\" };\n\n _pollingInterval: number;\n _poller: NodeJS.Timer;\n _bootstrapPoll: NodeJS.Timer;\n\n _lastBlockNumber: number;\n _maxFilterBlockRange: number;\n\n _fastBlockNumber: number;\n _fastBlockNumberPromise: Promise;\n _fastQueryDate: number;\n\n _maxInternalBlockNumber: number;\n _internalBlockNumber: Promise<{ blockNumber: number, reqTime: number, respTime: number }>;\n\n readonly anyNetwork: boolean;\n\n disableCcipRead: boolean;\n\n\n /**\n * ready\n *\n * A Promise that resolves only once the provider is ready.\n *\n * Sub-classes that call the super with a network without a chainId\n * MUST set this. Standard named networks have a known chainId.\n *\n */\n\n constructor(network: Networkish | Promise) {\n super();\n\n // Events being listened to\n this._events = [];\n\n this._emitted = { block: -2 };\n\n this.disableCcipRead = false;\n\n this.formatter = new.target.getFormatter();\n\n // If network is any, this Provider allows the underlying\n // network to change dynamically, and we auto-detect the\n // current network\n defineReadOnly(this, \"anyNetwork\", (network === \"any\"));\n if (this.anyNetwork) { network = this.detectNetwork(); }\n\n if (network instanceof Promise) {\n this._networkPromise = network;\n\n // Squash any \"unhandled promise\" errors; that do not need to be handled\n network.catch((error) => { });\n\n // Trigger initial network setting (async)\n this._ready().catch((error) => { });\n\n } else {\n const knownNetwork = getStatic<(network: Networkish) => Network>(new.target, \"getNetwork\")(network);\n if (knownNetwork) {\n defineReadOnly(this, \"_network\", knownNetwork);\n this.emit(\"network\", knownNetwork, null);\n\n } else {\n logger.throwArgumentError(\"invalid network\", \"network\", network);\n }\n }\n\n this._maxInternalBlockNumber = -1024;\n\n this._lastBlockNumber = -2;\n this._maxFilterBlockRange = 10;\n\n this._pollingInterval = 4000;\n\n this._fastQueryDate = 0;\n }\n\n async _ready(): Promise {\n if (this._network == null) {\n let network: Network = null;\n if (this._networkPromise) {\n try {\n network = await this._networkPromise;\n } catch (error) { }\n }\n\n // Try the Provider's network detection (this MUST throw if it cannot)\n if (network == null) {\n network = await this.detectNetwork();\n }\n\n // This should never happen; every Provider sub-class should have\n // suggested a network by here (or have thrown).\n if (!network) {\n logger.throwError(\"no network detected\", Logger.errors.UNKNOWN_ERROR, { });\n }\n\n // Possible this call stacked so do not call defineReadOnly again\n if (this._network == null) {\n if (this.anyNetwork) {\n this._network = network;\n } else {\n defineReadOnly(this, \"_network\", network);\n }\n this.emit(\"network\", network, null);\n }\n }\n\n return this._network;\n }\n\n // This will always return the most recently established network.\n // For \"any\", this can change (a \"network\" event is emitted before\n // any change is reflected); otherwise this cannot change\n get ready(): Promise {\n return poll(() => {\n return this._ready().then((network) => {\n return network;\n }, (error) => {\n // If the network isn't running yet, we will wait\n if (error.code === Logger.errors.NETWORK_ERROR && error.event === \"noNetwork\") {\n return undefined;\n }\n throw error;\n });\n });\n }\n\n // @TODO: Remove this and just create a singleton formatter\n static getFormatter(): Formatter {\n if (defaultFormatter == null) {\n defaultFormatter = new Formatter();\n }\n return defaultFormatter;\n }\n\n // @TODO: Remove this and just use getNetwork\n static getNetwork(network: Networkish): Network {\n return getNetwork((network == null) ? \"homestead\": network);\n }\n\n async ccipReadFetch(tx: Transaction, calldata: string, urls: Array): Promise {\n if (this.disableCcipRead || urls.length === 0) { return null; }\n\n const sender = tx.to.toLowerCase();\n const data = calldata.toLowerCase();\n\n const errorMessages: Array = [ ];\n\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n\n // URL expansion\n const href = url.replace(\"{sender}\", sender).replace(\"{data}\", data);\n\n // If no {data} is present, use POST; otherwise GET\n const json: string | null = (url.indexOf(\"{data}\") >= 0) ? null: JSON.stringify({ data, sender });\n\n const result = await fetchJson({ url: href, errorPassThrough: true }, json, (value, response) => {\n value.status = response.statusCode;\n return value;\n });\n\n if (result.data) { return result.data; }\n\n const errorMessage = (result.message || \"unknown error\");\n\n // 4xx indicates the result is not present; stop\n if (result.status >= 400 && result.status < 500) {\n return logger.throwError(`response not found during CCIP fetch: ${ errorMessage }`, Logger.errors.SERVER_ERROR, { url, errorMessage });\n }\n\n // 5xx indicates server issue; try the next url\n errorMessages.push(errorMessage);\n }\n\n return logger.throwError(`error encountered during CCIP fetch: ${ errorMessages.map((m) => JSON.stringify(m)).join(\", \") }`, Logger.errors.SERVER_ERROR, {\n urls, errorMessages\n });\n }\n\n // Fetches the blockNumber, but will reuse any result that is less\n // than maxAge old or has been requested since the last request\n async _getInternalBlockNumber(maxAge: number): Promise {\n await this._ready();\n\n // Allowing stale data up to maxAge old\n if (maxAge > 0) {\n\n // While there are pending internal block requests...\n while (this._internalBlockNumber) {\n\n // ...\"remember\" which fetch we started with\n const internalBlockNumber = this._internalBlockNumber;\n\n try {\n // Check the result is not too stale\n const result = await internalBlockNumber;\n if ((getTime() - result.respTime) <= maxAge) {\n return result.blockNumber;\n }\n\n // Too old; fetch a new value\n break;\n\n } catch(error) {\n\n // The fetch rejected; if we are the first to get the\n // rejection, drop through so we replace it with a new\n // fetch; all others blocked will then get that fetch\n // which won't match the one they \"remembered\" and loop\n if (this._internalBlockNumber === internalBlockNumber) {\n break;\n }\n }\n }\n }\n\n const reqTime = getTime();\n\n const checkInternalBlockNumber = resolveProperties({\n blockNumber: this.perform(\"getBlockNumber\", { }),\n networkError: this.getNetwork().then((network) => (null), (error) => (error))\n }).then(({ blockNumber, networkError }) => {\n if (networkError) {\n // Unremember this bad internal block number\n if (this._internalBlockNumber === checkInternalBlockNumber) {\n this._internalBlockNumber = null;\n }\n throw networkError;\n }\n\n const respTime = getTime();\n\n blockNumber = BigNumber.from(blockNumber).toNumber();\n if (blockNumber < this._maxInternalBlockNumber) { blockNumber = this._maxInternalBlockNumber; }\n\n this._maxInternalBlockNumber = blockNumber;\n this._setFastBlockNumber(blockNumber); // @TODO: Still need this?\n return { blockNumber, reqTime, respTime };\n });\n\n this._internalBlockNumber = checkInternalBlockNumber;\n\n // Swallow unhandled exceptions; if needed they are handled else where\n checkInternalBlockNumber.catch((error) => {\n // Don't null the dead (rejected) fetch, if it has already been updated\n if (this._internalBlockNumber === checkInternalBlockNumber) {\n this._internalBlockNumber = null;\n }\n });\n\n return (await checkInternalBlockNumber).blockNumber;\n }\n\n async poll(): Promise {\n const pollId = nextPollId++;\n\n // Track all running promises, so we can trigger a post-poll once they are complete\n const runners: Array> = [];\n\n let blockNumber: number = null;\n try {\n blockNumber = await this._getInternalBlockNumber(100 + this.pollingInterval / 2);\n } catch (error) {\n this.emit(\"error\", error);\n return;\n }\n this._setFastBlockNumber(blockNumber);\n\n // Emit a poll event after we have the latest (fast) block number\n this.emit(\"poll\", pollId, blockNumber);\n\n // If the block has not changed, meh.\n if (blockNumber === this._lastBlockNumber) {\n this.emit(\"didPoll\", pollId);\n return;\n }\n\n // First polling cycle, trigger a \"block\" events\n if (this._emitted.block === -2) {\n this._emitted.block = blockNumber - 1;\n }\n\n if (Math.abs(((this._emitted.block)) - blockNumber) > 1000) {\n logger.warn(`network block skew detected; skipping block events (emitted=${ this._emitted.block } blockNumber${ blockNumber })`);\n this.emit(\"error\", logger.makeError(\"network block skew detected\", Logger.errors.NETWORK_ERROR, {\n blockNumber: blockNumber,\n event: \"blockSkew\",\n previousBlockNumber: this._emitted.block\n }));\n this.emit(\"block\", blockNumber);\n\n } else {\n // Notify all listener for each block that has passed\n for (let i = (this._emitted.block) + 1; i <= blockNumber; i++) {\n this.emit(\"block\", i);\n }\n }\n\n // The emitted block was updated, check for obsolete events\n if ((this._emitted.block) !== blockNumber) {\n this._emitted.block = blockNumber;\n\n Object.keys(this._emitted).forEach((key) => {\n // The block event does not expire\n if (key === \"block\") { return; }\n\n // The block we were at when we emitted this event\n const eventBlockNumber = this._emitted[key];\n\n // We cannot garbage collect pending transactions or blocks here\n // They should be garbage collected by the Provider when setting\n // \"pending\" events\n if (eventBlockNumber === \"pending\") { return; }\n\n // Evict any transaction hashes or block hashes over 12 blocks\n // old, since they should not return null anyways\n if (blockNumber - eventBlockNumber > 12) {\n delete this._emitted[key];\n }\n });\n }\n\n // First polling cycle\n if (this._lastBlockNumber === -2) {\n this._lastBlockNumber = blockNumber - 1;\n }\n // Find all transaction hashes we are waiting on\n this._events.forEach((event) => {\n switch (event.type) {\n case \"tx\": {\n const hash = event.hash;\n let runner = this.getTransactionReceipt(hash).then((receipt) => {\n if (!receipt || receipt.blockNumber == null) { return null; }\n this._emitted[\"t:\" + hash] = receipt.blockNumber;\n this.emit(hash, receipt);\n return null;\n }).catch((error: Error) => { this.emit(\"error\", error); });\n\n runners.push(runner);\n\n break;\n }\n\n case \"filter\": {\n // We only allow a single getLogs to be in-flight at a time\n if (!event._inflight) {\n event._inflight = true;\n\n // This is the first filter for this event, so we want to\n // restrict events to events that happened no earlier than now\n if (event._lastBlockNumber === -2) {\n event._lastBlockNumber = blockNumber - 1;\n }\n\n // Filter from the last *known* event; due to load-balancing\n // and some nodes returning updated block numbers before\n // indexing events, a logs result with 0 entries cannot be\n // trusted and we must retry a range which includes it again\n const filter = event.filter;\n filter.fromBlock = event._lastBlockNumber + 1;\n filter.toBlock = blockNumber;\n\n // Prevent fitler ranges from growing too wild, since it is quite\n // likely there just haven't been any events to move the lastBlockNumber.\n const minFromBlock = filter.toBlock - this._maxFilterBlockRange;\n if (minFromBlock > filter.fromBlock) { filter.fromBlock = minFromBlock; }\n\n if (filter.fromBlock < 0) { filter.fromBlock = 0; }\n\n const runner = this.getLogs(filter).then((logs) => {\n // Allow the next getLogs\n event._inflight = false;\n\n if (logs.length === 0) { return; }\n\n logs.forEach((log: Log) => {\n // Only when we get an event for a given block number\n // can we trust the events are indexed\n if (log.blockNumber > event._lastBlockNumber) {\n event._lastBlockNumber = log.blockNumber;\n }\n\n // Make sure we stall requests to fetch blocks and txs\n this._emitted[\"b:\" + log.blockHash] = log.blockNumber;\n this._emitted[\"t:\" + log.transactionHash] = log.blockNumber;\n\n this.emit(filter, log);\n });\n }).catch((error: Error) => {\n this.emit(\"error\", error);\n\n // Allow another getLogs (the range was not updated)\n event._inflight = false;\n });\n runners.push(runner);\n }\n\n break;\n }\n }\n });\n\n this._lastBlockNumber = blockNumber;\n\n // Once all events for this loop have been processed, emit \"didPoll\"\n Promise.all(runners).then(() => {\n this.emit(\"didPoll\", pollId);\n }).catch((error) => { this.emit(\"error\", error); });\n\n return;\n }\n\n // Deprecated; do not use this\n resetEventsBlock(blockNumber: number): void {\n this._lastBlockNumber = blockNumber - 1;\n if (this.polling) { this.poll(); }\n }\n\n get network(): Network {\n return this._network;\n }\n\n // This method should query the network if the underlying network\n // can change, such as when connected to a JSON-RPC backend\n async detectNetwork(): Promise {\n return logger.throwError(\"provider does not support network detection\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"provider.detectNetwork\"\n });\n }\n\n async getNetwork(): Promise {\n const network = await this._ready();\n\n // Make sure we are still connected to the same network; this is\n // only an external call for backends which can have the underlying\n // network change spontaneously\n const currentNetwork = await this.detectNetwork();\n if (network.chainId !== currentNetwork.chainId) {\n\n // We are allowing network changes, things can get complex fast;\n // make sure you know what you are doing if you use \"any\"\n if (this.anyNetwork) {\n this._network = currentNetwork;\n\n // Reset all internal block number guards and caches\n this._lastBlockNumber = -2;\n this._fastBlockNumber = null;\n this._fastBlockNumberPromise = null;\n this._fastQueryDate = 0;\n this._emitted.block = -2;\n this._maxInternalBlockNumber = -1024;\n this._internalBlockNumber = null;\n\n // The \"network\" event MUST happen before this method resolves\n // so any events have a chance to unregister, so we stall an\n // additional event loop before returning from /this/ call\n this.emit(\"network\", currentNetwork, network);\n await stall(0);\n\n return this._network;\n }\n\n const error = logger.makeError(\"underlying network changed\", Logger.errors.NETWORK_ERROR, {\n event: \"changed\",\n network: network,\n detectedNetwork: currentNetwork\n });\n\n this.emit(\"error\", error);\n throw error;\n }\n\n return network;\n }\n\n get blockNumber(): number {\n this._getInternalBlockNumber(100 + this.pollingInterval / 2).then((blockNumber) => {\n this._setFastBlockNumber(blockNumber);\n }, (error) => { });\n\n return (this._fastBlockNumber != null) ? this._fastBlockNumber: -1;\n }\n\n get polling(): boolean {\n return (this._poller != null);\n }\n\n set polling(value: boolean) {\n if (value && !this._poller) {\n this._poller = setInterval(() => { this.poll(); }, this.pollingInterval);\n\n if (!this._bootstrapPoll) {\n this._bootstrapPoll = setTimeout(() => {\n this.poll();\n\n // We block additional polls until the polling interval\n // is done, to prevent overwhelming the poll function\n this._bootstrapPoll = setTimeout(() => {\n // If polling was disabled, something may require a poke\n // since starting the bootstrap poll and it was disabled\n if (!this._poller) { this.poll(); }\n\n // Clear out the bootstrap so we can do another\n this._bootstrapPoll = null;\n }, this.pollingInterval);\n }, 0);\n }\n\n } else if (!value && this._poller) {\n clearInterval(this._poller);\n this._poller = null;\n }\n }\n\n get pollingInterval(): number {\n return this._pollingInterval;\n }\n\n set pollingInterval(value: number) {\n if (typeof(value) !== \"number\" || value <= 0 || parseInt(String(value)) != value) {\n throw new Error(\"invalid polling interval\");\n }\n\n this._pollingInterval = value;\n\n if (this._poller) {\n clearInterval(this._poller);\n this._poller = setInterval(() => { this.poll(); }, this._pollingInterval);\n }\n }\n\n _getFastBlockNumber(): Promise {\n const now = getTime();\n\n // Stale block number, request a newer value\n if ((now - this._fastQueryDate) > 2 * this._pollingInterval) {\n this._fastQueryDate = now;\n this._fastBlockNumberPromise = this.getBlockNumber().then((blockNumber) => {\n if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {\n this._fastBlockNumber = blockNumber;\n }\n return this._fastBlockNumber;\n });\n }\n\n return this._fastBlockNumberPromise;\n }\n\n _setFastBlockNumber(blockNumber: number): void {\n // Older block, maybe a stale request\n if (this._fastBlockNumber != null && blockNumber < this._fastBlockNumber) { return; }\n\n // Update the time we updated the blocknumber\n this._fastQueryDate = getTime();\n\n // Newer block number, use it\n if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {\n this._fastBlockNumber = blockNumber;\n this._fastBlockNumberPromise = Promise.resolve(blockNumber);\n }\n }\n\n async waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number): Promise {\n return this._waitForTransaction(transactionHash, (confirmations == null) ? 1: confirmations, timeout || 0, null);\n }\n\n async _waitForTransaction(transactionHash: string, confirmations: number, timeout: number, replaceable: { data: string, from: string, nonce: number, to: string, value: BigNumber, startBlock: number }): Promise {\n const receipt = await this.getTransactionReceipt(transactionHash);\n\n // Receipt is already good\n if ((receipt ? receipt.confirmations: 0) >= confirmations) { return receipt; }\n\n // Poll until the receipt is good...\n return new Promise((resolve, reject) => {\n const cancelFuncs: Array<() => void> = [];\n\n let done = false;\n const alreadyDone = function() {\n if (done) { return true; }\n done = true;\n cancelFuncs.forEach((func) => { func(); });\n return false;\n };\n\n const minedHandler = (receipt: TransactionReceipt) => {\n if (receipt.confirmations < confirmations) { return; }\n if (alreadyDone()) { return; }\n resolve(receipt);\n }\n this.on(transactionHash, minedHandler);\n cancelFuncs.push(() => { this.removeListener(transactionHash, minedHandler); });\n\n if (replaceable) {\n let lastBlockNumber = replaceable.startBlock;\n let scannedBlock: number = null;\n const replaceHandler = async (blockNumber: number) => {\n if (done) { return; }\n\n // Wait 1 second; this is only used in the case of a fault, so\n // we will trade off a little bit of latency for more consistent\n // results and fewer JSON-RPC calls\n await stall(1000);\n\n this.getTransactionCount(replaceable.from).then(async (nonce) => {\n if (done) { return; }\n\n if (nonce <= replaceable.nonce) {\n lastBlockNumber = blockNumber;\n\n } else {\n // First check if the transaction was mined\n {\n const mined = await this.getTransaction(transactionHash);\n if (mined && mined.blockNumber != null) { return; }\n }\n\n // First time scanning. We start a little earlier for some\n // wiggle room here to handle the eventually consistent nature\n // of blockchain (e.g. the getTransactionCount was for a\n // different block)\n if (scannedBlock == null) {\n scannedBlock = lastBlockNumber - 3;\n if (scannedBlock < replaceable.startBlock) {\n scannedBlock = replaceable.startBlock;\n }\n }\n\n while (scannedBlock <= blockNumber) {\n if (done) { return; }\n\n const block = await this.getBlockWithTransactions(scannedBlock);\n for (let ti = 0; ti < block.transactions.length; ti++) {\n const tx = block.transactions[ti];\n\n // Successfully mined!\n if (tx.hash === transactionHash) { return; }\n\n // Matches our transaction from and nonce; its a replacement\n if (tx.from === replaceable.from && tx.nonce === replaceable.nonce) {\n if (done) { return; }\n\n // Get the receipt of the replacement\n const receipt = await this.waitForTransaction(tx.hash, confirmations);\n\n // Already resolved or rejected (prolly a timeout)\n if (alreadyDone()) { return; }\n\n // The reason we were replaced\n let reason = \"replaced\";\n if (tx.data === replaceable.data && tx.to === replaceable.to && tx.value.eq(replaceable.value)) {\n reason = \"repriced\";\n } else if (tx.data === \"0x\" && tx.from === tx.to && tx.value.isZero()) {\n reason = \"cancelled\"\n }\n\n // Explain why we were replaced\n reject(logger.makeError(\"transaction was replaced\", Logger.errors.TRANSACTION_REPLACED, {\n cancelled: (reason === \"replaced\" || reason === \"cancelled\"),\n reason,\n replacement: this._wrapTransaction(tx),\n hash: transactionHash,\n receipt\n }));\n\n return;\n }\n }\n scannedBlock++;\n }\n }\n\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n\n }, (error) => {\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n });\n };\n\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n\n cancelFuncs.push(() => {\n this.removeListener(\"block\", replaceHandler);\n });\n }\n\n if (typeof(timeout) === \"number\" && timeout > 0) {\n const timer = setTimeout(() => {\n if (alreadyDone()) { return; }\n reject(logger.makeError(\"timeout exceeded\", Logger.errors.TIMEOUT, { timeout: timeout }));\n }, timeout);\n if (timer.unref) { timer.unref(); }\n\n cancelFuncs.push(() => { clearTimeout(timer); });\n }\n });\n }\n\n async getBlockNumber(): Promise {\n return this._getInternalBlockNumber(0);\n }\n\n async getGasPrice(): Promise {\n await this.getNetwork();\n\n const result = await this.perform(\"getGasPrice\", { });\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getGasPrice\",\n result, error\n });\n }\n }\n\n async getBalance(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getBalance\", params);\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getBalance\",\n params, result, error\n });\n }\n }\n\n async getTransactionCount(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getTransactionCount\", params);\n try {\n return BigNumber.from(result).toNumber();\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getTransactionCount\",\n params, result, error\n });\n }\n }\n\n async getCode(addressOrName: string | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getCode\", params);\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getCode\",\n params, result, error\n });\n }\n }\n\n async getStorageAt(addressOrName: string | Promise, position: BigNumberish | Promise, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag),\n position: Promise.resolve(position).then((p) => hexValue(p))\n });\n const result = await this.perform(\"getStorageAt\", params);\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getStorageAt\",\n params, result, error\n });\n }\n }\n\n // This should be called by any subclass wrapping a TransactionResponse\n _wrapTransaction(tx: Transaction, hash?: string, startBlock?: number): TransactionResponse {\n if (hash != null && hexDataLength(hash) !== 32) { throw new Error(\"invalid response - sendTransaction\"); }\n\n const result = tx;\n\n // Check the hash we expect is the same as the hash the server reported\n if (hash != null && tx.hash !== hash) {\n logger.throwError(\"Transaction hash mismatch from Provider.sendTransaction.\", Logger.errors.UNKNOWN_ERROR, { expectedHash: tx.hash, returnedHash: hash });\n }\n\n result.wait = async (confirms?: number, timeout?: number) => {\n if (confirms == null) { confirms = 1; }\n if (timeout == null) { timeout = 0; }\n\n // Get the details to detect replacement\n let replacement = undefined;\n if (confirms !== 0 && startBlock != null) {\n replacement = {\n data: tx.data,\n from: tx.from,\n nonce: tx.nonce,\n to: tx.to,\n value: tx.value,\n startBlock\n };\n }\n\n const receipt = await this._waitForTransaction(tx.hash, confirms, timeout, replacement);\n if (receipt == null && confirms === 0) { return null; }\n\n // No longer pending, allow the polling loop to garbage collect this\n this._emitted[\"t:\" + tx.hash] = receipt.blockNumber;\n\n if (receipt.status === 0) {\n logger.throwError(\"transaction failed\", Logger.errors.CALL_EXCEPTION, {\n transactionHash: tx.hash,\n transaction: tx,\n receipt: receipt\n });\n }\n return receipt;\n };\n\n return result;\n }\n\n async sendTransaction(signedTransaction: string | Promise): Promise {\n await this.getNetwork();\n const hexTx = await Promise.resolve(signedTransaction).then(t => hexlify(t));\n const tx = this.formatter.transaction(signedTransaction);\n if (tx.confirmations == null) { tx.confirmations = 0; }\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n try {\n const hash = await this.perform(\"sendTransaction\", { signedTransaction: hexTx });\n return this._wrapTransaction(tx, hash, blockNumber);\n } catch (error) {\n (error).transaction = tx;\n (error).transactionHash = tx.hash;\n throw error;\n }\n }\n\n async _getTransactionRequest(transaction: Deferrable): Promise {\n const values: any = await transaction;\n\n const tx: any = { };\n\n [\"from\", \"to\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? this._getAddress(v): null))\n });\n\n [\"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"value\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? BigNumber.from(v): null));\n });\n\n [\"type\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => ((v != null) ? v: null));\n });\n\n if (values.accessList) {\n tx.accessList = this.formatter.accessList(values.accessList);\n }\n\n [\"data\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? hexlify(v): null));\n });\n\n return this.formatter.transactionRequest(await resolveProperties(tx));\n }\n\n async _getFilter(filter: Filter | FilterByBlockHash | Promise): Promise {\n filter = await filter;\n\n const result: any = { };\n\n if (filter.address != null) {\n result.address = this._getAddress(filter.address);\n }\n\n [\"blockHash\", \"topics\"].forEach((key) => {\n if ((filter)[key] == null) { return; }\n result[key] = (filter)[key];\n });\n\n [\"fromBlock\", \"toBlock\"].forEach((key) => {\n if ((filter)[key] == null) { return; }\n result[key] = this._getBlockTag((filter)[key]);\n });\n\n return this.formatter.filter(await resolveProperties(result));\n }\n\n async _call(transaction: TransactionRequest, blockTag: BlockTag, attempt: number): Promise {\n if (attempt >= MAX_CCIP_REDIRECTS) {\n logger.throwError(\"CCIP read exceeded maximum redirections\", Logger.errors.SERVER_ERROR, {\n redirects: attempt, transaction\n });\n }\n\n const txSender = transaction.to;\n\n const result = await this.perform(\"call\", { transaction, blockTag });\n\n // CCIP Read request via OffchainLookup(address,string[],bytes,bytes4,bytes)\n if (attempt >= 0 && blockTag === \"latest\" && txSender != null && result.substring(0, 10) === \"0x556f1830\" && (hexDataLength(result) % 32 === 4)) {\n try {\n const data = hexDataSlice(result, 4);\n\n // Check the sender of the OffchainLookup matches the transaction\n const sender = hexDataSlice(data, 0, 32);\n if (!BigNumber.from(sender).eq(txSender)) {\n logger.throwError(\"CCIP Read sender did not match\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n\n // Read the URLs from the response\n const urls: Array = [];\n const urlsOffset = BigNumber.from(hexDataSlice(data, 32, 64)).toNumber();\n const urlsLength = BigNumber.from(hexDataSlice(data, urlsOffset, urlsOffset + 32)).toNumber();\n const urlsData = hexDataSlice(data, urlsOffset + 32);\n for (let u = 0; u < urlsLength; u++) {\n const url = _parseString(urlsData, u * 32);\n if (url == null) {\n logger.throwError(\"CCIP Read contained corrupt URL string\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n urls.push(url);\n }\n\n // Get the CCIP calldata to forward\n const calldata = _parseBytes(data, 64);\n\n // Get the callbackSelector (bytes4)\n if (!BigNumber.from(hexDataSlice(data, 100, 128)).isZero()) {\n logger.throwError(\"CCIP Read callback selector included junk\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n const callbackSelector = hexDataSlice(data, 96, 100);\n\n // Get the extra data to send back to the contract as context\n const extraData = _parseBytes(data, 128);\n\n const ccipResult = await this.ccipReadFetch(transaction, calldata, urls);\n if (ccipResult == null) {\n logger.throwError(\"CCIP Read disabled or provided no URLs\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n\n const tx = {\n to: txSender,\n data: hexConcat([ callbackSelector, encodeBytes([ ccipResult, extraData ]) ])\n };\n\n return this._call(tx, blockTag, attempt + 1);\n\n } catch (error) {\n if (error.code === Logger.errors.SERVER_ERROR) { throw error; }\n }\n }\n\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"call\",\n params: { transaction, blockTag }, result, error\n });\n }\n\n }\n\n async call(transaction: Deferrable, blockTag?: BlockTag | Promise): Promise {\n await this.getNetwork();\n const resolved = await resolveProperties({\n transaction: this._getTransactionRequest(transaction),\n blockTag: this._getBlockTag(blockTag),\n ccipReadEnabled: Promise.resolve(transaction.ccipReadEnabled)\n });\n return this._call(resolved.transaction, resolved.blockTag, resolved.ccipReadEnabled ? 0: -1);\n }\n\n async estimateGas(transaction: Deferrable): Promise {\n await this.getNetwork();\n const params = await resolveProperties({\n transaction: this._getTransactionRequest(transaction)\n });\n\n const result = await this.perform(\"estimateGas\", params);\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"estimateGas\",\n params, result, error\n });\n }\n }\n\n async _getAddress(addressOrName: string | Promise): Promise {\n addressOrName = await addressOrName;\n if (typeof(addressOrName) !== \"string\") {\n logger.throwArgumentError(\"invalid address or ENS name\", \"name\", addressOrName);\n }\n\n const address = await this.resolveName(addressOrName);\n if (address == null) {\n logger.throwError(\"ENS name not configured\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `resolveName(${ JSON.stringify(addressOrName) })`\n });\n }\n return address;\n }\n\n async _getBlock(blockHashOrBlockTag: BlockTag | string | Promise, includeTransactions?: boolean): Promise {\n await this.getNetwork();\n\n blockHashOrBlockTag = await blockHashOrBlockTag;\n\n // If blockTag is a number (not \"latest\", etc), this is the block number\n let blockNumber = -128;\n\n const params: { [key: string]: any } = {\n includeTransactions: !!includeTransactions\n };\n\n if (isHexString(blockHashOrBlockTag, 32)) {\n params.blockHash = blockHashOrBlockTag;\n } else {\n try {\n params.blockTag = await this._getBlockTag(blockHashOrBlockTag);\n if (isHexString(params.blockTag)) {\n blockNumber = parseInt(params.blockTag.substring(2), 16);\n }\n } catch (error) {\n logger.throwArgumentError(\"invalid block hash or block tag\", \"blockHashOrBlockTag\", blockHashOrBlockTag);\n }\n }\n\n return poll(async () => {\n const block = await this.perform(\"getBlock\", params);\n\n // Block was not found\n if (block == null) {\n\n // For blockhashes, if we didn't say it existed, that blockhash may\n // not exist. If we did see it though, perhaps from a log, we know\n // it exists, and this node is just not caught up yet.\n if (params.blockHash != null) {\n if (this._emitted[\"b:\" + params.blockHash] == null) { return null; }\n }\n\n // For block tags, if we are asking for a future block, we return null\n if (params.blockTag != null) {\n if (blockNumber > this._emitted.block) { return null; }\n }\n\n // Retry on the next block\n return undefined;\n }\n\n // Add transactions\n if (includeTransactions) {\n let blockNumber: number = null;\n for (let i = 0; i < block.transactions.length; i++) {\n const tx = block.transactions[i];\n if (tx.blockNumber == null) {\n tx.confirmations = 0;\n\n } else if (tx.confirmations == null) {\n if (blockNumber == null) {\n blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n }\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - tx.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n tx.confirmations = confirmations;\n }\n }\n\n const blockWithTxs: any = this.formatter.blockWithTransactions(block);\n blockWithTxs.transactions = blockWithTxs.transactions.map((tx: TransactionResponse) => this._wrapTransaction(tx));\n return blockWithTxs;\n }\n\n return this.formatter.block(block);\n\n }, { oncePoll: this });\n }\n\n getBlock(blockHashOrBlockTag: BlockTag | string | Promise): Promise {\n return >(this._getBlock(blockHashOrBlockTag, false));\n }\n\n getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise): Promise {\n return >(this._getBlock(blockHashOrBlockTag, true));\n }\n\n async getTransaction(transactionHash: string | Promise): Promise {\n await this.getNetwork();\n transactionHash = await transactionHash;\n\n const params = { transactionHash: this.formatter.hash(transactionHash, true) };\n\n return poll(async () => {\n const result = await this.perform(\"getTransaction\", params);\n\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return null;\n }\n return undefined;\n }\n\n const tx = this.formatter.transactionResponse(result);\n\n if (tx.blockNumber == null) {\n tx.confirmations = 0;\n\n } else if (tx.confirmations == null) {\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - tx.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n tx.confirmations = confirmations;\n }\n\n return this._wrapTransaction(tx);\n }, { oncePoll: this });\n }\n\n async getTransactionReceipt(transactionHash: string | Promise): Promise {\n await this.getNetwork();\n\n transactionHash = await transactionHash;\n\n const params = { transactionHash: this.formatter.hash(transactionHash, true) };\n\n return poll(async () => {\n const result = await this.perform(\"getTransactionReceipt\", params);\n\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return null;\n }\n return undefined;\n }\n\n // \"geth-etc\" returns receipts before they are ready\n if (result.blockHash == null) { return undefined; }\n\n const receipt = this.formatter.receipt(result);\n\n if (receipt.blockNumber == null) {\n receipt.confirmations = 0;\n\n } else if (receipt.confirmations == null) {\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - receipt.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n receipt.confirmations = confirmations;\n }\n\n return receipt;\n }, { oncePoll: this });\n }\n\n async getLogs(filter: Filter | FilterByBlockHash | Promise): Promise> {\n await this.getNetwork();\n const params = await resolveProperties({ filter: this._getFilter(filter) });\n const logs: Array = await this.perform(\"getLogs\", params);\n logs.forEach((log) => {\n if (log.removed == null) { log.removed = false; }\n });\n return Formatter.arrayOf(this.formatter.filterLog.bind(this.formatter))(logs);\n }\n\n async getEtherPrice(): Promise {\n await this.getNetwork();\n return this.perform(\"getEtherPrice\", { });\n }\n\n async _getBlockTag(blockTag: BlockTag | Promise): Promise {\n blockTag = await blockTag;\n\n if (typeof(blockTag) === \"number\" && blockTag < 0) {\n if (blockTag % 1) {\n logger.throwArgumentError(\"invalid BlockTag\", \"blockTag\", blockTag);\n }\n\n let blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n blockNumber += blockTag;\n if (blockNumber < 0) { blockNumber = 0; }\n return this.formatter.blockTag(blockNumber)\n }\n\n return this.formatter.blockTag(blockTag);\n }\n\n\n async getResolver(name: string): Promise {\n let currentName = name;\n while (true) {\n if (currentName === \"\" || currentName === \".\") { return null; }\n\n // Optimization since the eth node cannot change and does\n // not have a wildcard resolver\n if (name !== \"eth\" && currentName === \"eth\") { return null; }\n\n // Check the current node for a resolver\n const addr = await this._getResolver(currentName, \"getResolver\");\n\n // Found a resolver!\n if (addr != null) {\n const resolver = new Resolver(this, addr, name);\n\n // Legacy resolver found, using EIP-2544 so it isn't safe to use\n if (currentName !== name && !(await resolver.supportsWildcard())) { return null; }\n\n return resolver;\n }\n\n // Get the parent node\n currentName = currentName.split(\".\").slice(1).join(\".\");\n }\n\n }\n\n async _getResolver(name: string, operation?: string): Promise {\n if (operation == null) { operation = \"ENS\"; }\n\n const network = await this.getNetwork();\n\n // No ENS...\n if (!network.ensAddress) {\n logger.throwError(\n \"network does not support ENS\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { operation, network: network.name }\n );\n }\n\n try {\n // keccak256(\"resolver(bytes32)\")\n const addrData = await this.call({\n to: network.ensAddress,\n data: (\"0x0178b8bf\" + namehash(name).substring(2))\n });\n return this.formatter.callAddress(addrData);\n } catch (error) {\n // ENS registry cannot throw errors on resolver(bytes32)\n }\n\n return null;\n }\n\n async resolveName(name: string | Promise): Promise {\n name = await name;\n\n // If it is already an address, nothing to resolve\n try {\n return Promise.resolve(this.formatter.address(name));\n } catch (error) {\n // If is is a hexstring, the address is bad (See #694)\n if (isHexString(name)) { throw error; }\n }\n\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name\", \"name\", name);\n }\n\n // Get the addr from the resolver\n const resolver = await this.getResolver(name);\n if (!resolver) { return null; }\n\n return await resolver.getAddress();\n }\n\n async lookupAddress(address: string | Promise): Promise {\n address = await address;\n address = this.formatter.address(address);\n\n const node = address.substring(2).toLowerCase() + \".addr.reverse\";\n\n const resolverAddr = await this._getResolver(node, \"lookupAddress\");\n if (resolverAddr == null) { return null; }\n\n // keccak(\"name(bytes32)\")\n const name = _parseString(await this.call({\n to: resolverAddr,\n data: (\"0x691f3431\" + namehash(node).substring(2))\n }), 0);\n\n const addr = await this.resolveName(name);\n if (addr != address) { return null; }\n\n return name;\n }\n\n async getAvatar(nameOrAddress: string): Promise {\n let resolver: Resolver = null;\n if (isHexString(nameOrAddress)) {\n // Address; reverse lookup\n const address = this.formatter.address(nameOrAddress);\n\n const node = address.substring(2).toLowerCase() + \".addr.reverse\";\n\n const resolverAddress = await this._getResolver(node, \"getAvatar\");\n if (!resolverAddress) { return null; }\n\n // Try resolving the avatar against the addr.reverse resolver\n resolver = new Resolver(this, resolverAddress, node);\n try {\n const avatar = await resolver.getAvatar();\n if (avatar) { return avatar.url; }\n } catch (error) {\n if (error.code !== Logger.errors.CALL_EXCEPTION) { throw error; }\n }\n\n // Try getting the name and performing forward lookup; allowing wildcards\n try {\n // keccak(\"name(bytes32)\")\n const name = _parseString(await this.call({\n to: resolverAddress,\n data: (\"0x691f3431\" + namehash(node).substring(2))\n }), 0);\n resolver = await this.getResolver(name);\n } catch (error) {\n if (error.code !== Logger.errors.CALL_EXCEPTION) { throw error; }\n return null;\n }\n\n } else {\n // ENS name; forward lookup with wildcard\n resolver = await this.getResolver(nameOrAddress);\n if (!resolver) { return null; }\n }\n\n const avatar = await resolver.getAvatar();\n if (avatar == null) { return null; }\n\n return avatar.url;\n }\n\n perform(method: string, params: any): Promise {\n return logger.throwError(method + \" not implemented\", Logger.errors.NOT_IMPLEMENTED, { operation: method });\n }\n\n _startEvent(event: Event): void {\n this.polling = (this._events.filter((e) => e.pollable()).length > 0);\n }\n\n _stopEvent(event: Event): void {\n this.polling = (this._events.filter((e) => e.pollable()).length > 0);\n }\n\n _addEventListener(eventName: EventType, listener: Listener, once: boolean): this {\n const event = new Event(getEventTag(eventName), listener, once)\n this._events.push(event);\n this._startEvent(event);\n\n return this;\n }\n\n on(eventName: EventType, listener: Listener): this {\n return this._addEventListener(eventName, listener, false);\n }\n\n once(eventName: EventType, listener: Listener): this {\n return this._addEventListener(eventName, listener, true);\n }\n\n\n emit(eventName: EventType, ...args: Array): boolean {\n let result = false;\n\n let stopped: Array = [ ];\n\n let eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag) { return true; }\n\n setTimeout(() => {\n event.listener.apply(this, args);\n }, 0);\n\n result = true;\n\n if (event.once) {\n stopped.push(event);\n return false;\n }\n\n return true;\n });\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return result;\n }\n\n listenerCount(eventName?: EventType): number {\n if (!eventName) { return this._events.length; }\n\n let eventTag = getEventTag(eventName);\n return this._events.filter((event) => {\n return (event.tag === eventTag);\n }).length;\n }\n\n listeners(eventName?: EventType): Array {\n if (eventName == null) {\n return this._events.map((event) => event.listener);\n }\n\n let eventTag = getEventTag(eventName);\n return this._events\n .filter((event) => (event.tag === eventTag))\n .map((event) => event.listener);\n }\n\n off(eventName: EventType, listener?: Listener): this {\n if (listener == null) {\n return this.removeAllListeners(eventName);\n }\n\n const stopped: Array = [ ];\n\n let found = false;\n\n let eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag || event.listener != listener) { return true; }\n if (found) { return true; }\n found = true;\n stopped.push(event);\n return false;\n });\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return this;\n }\n\n removeAllListeners(eventName?: EventType): this {\n let stopped: Array = [ ];\n if (eventName == null) {\n stopped = this._events;\n\n this._events = [ ];\n } else {\n const eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag) { return true; }\n stopped.push(event);\n return false;\n });\n }\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return this;\n }\n}\n", "\"use strict\";\n\n// See: https://github.com/ethereum/wiki/wiki/JSON-RPC\n\nimport { Provider, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { Signer, TypedDataDomain, TypedDataField, TypedDataSigner } from \"@ethersproject/abstract-signer\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { Bytes, hexlify, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { _TypedDataEncoder } from \"@ethersproject/hash\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { checkProperties, deepCopy, Deferrable, defineReadOnly, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { AccessList, accessListify } from \"@ethersproject/transactions\";\nimport { ConnectionInfo, fetchJson, poll } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BaseProvider, Event } from \"./base-provider\";\n\n\nconst errorGas = [ \"call\", \"estimateGas\" ];\n\nfunction spelunk(value: any, requireData: boolean): null | { message: string, data: null | string } {\n if (value == null) { return null; }\n\n // These *are* the droids we're looking for.\n if (typeof(value.message) === \"string\" && value.message.match(\"reverted\")) {\n const data = isHexString(value.data) ? value.data: null;\n if (!requireData || data) {\n return { message: value.message, data };\n }\n }\n\n // Spelunk further...\n if (typeof(value) === \"object\") {\n for (const key in value) {\n const result = spelunk(value[key], requireData);\n if (result) { return result; }\n }\n return null;\n }\n\n // Might be a JSON string we can further descend...\n if (typeof(value) === \"string\") {\n try {\n return spelunk(JSON.parse(value), requireData);\n } catch (error) { }\n }\n\n return null;\n}\n\nfunction checkError(method: string, error: any, params: any): any {\n\n const transaction = params.transaction || params.signedTransaction;\n\n // Undo the \"convenience\" some nodes are attempting to prevent backwards\n // incompatibility; maybe for v6 consider forwarding reverts as errors\n if (method === \"call\") {\n const result = spelunk(error, true);\n if (result) { return result.data; }\n\n // Nothing descriptive..\n logger.throwError(\"missing revert data in call exception; Transaction reverted without a reason string\", Logger.errors.CALL_EXCEPTION, {\n data: \"0x\", transaction, error\n });\n }\n\n if (method === \"estimateGas\") {\n // Try to find something, with a preference on SERVER_ERROR body\n let result = spelunk(error.body, false);\n if (result == null) { result = spelunk(error, false); }\n\n // Found \"reverted\", this is a CALL_EXCEPTION\n if (result) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n reason: result.message, method, transaction, error\n });\n }\n }\n\n // @TODO: Should we spelunk for message too?\n\n let message = error.message;\n if (error.code === Logger.errors.SERVER_ERROR && error.error && typeof(error.error.message) === \"string\") {\n message = error.error.message;\n } else if (typeof(error.body) === \"string\") {\n message = error.body;\n } else if (typeof(error.responseText) === \"string\") {\n message = error.responseText;\n }\n message = (message || \"\").toLowerCase();\n\n // \"insufficient funds for gas * price + value + cost(data)\"\n if (message.match(/insufficient funds|base fee exceeds gas limit|InsufficientFunds/i)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.errors.INSUFFICIENT_FUNDS, {\n error, method, transaction\n });\n }\n\n // \"nonce too low\"\n if (message.match(/nonce (is )?too low/i)) {\n logger.throwError(\"nonce has already been used\", Logger.errors.NONCE_EXPIRED, {\n error, method, transaction\n });\n }\n\n // \"replacement transaction underpriced\"\n if (message.match(/replacement transaction underpriced|transaction gas price.*too low/i)) {\n logger.throwError(\"replacement fee too low\", Logger.errors.REPLACEMENT_UNDERPRICED, {\n error, method, transaction\n });\n }\n\n // \"replacement transaction underpriced\"\n if (message.match(/only replay-protected/i)) {\n logger.throwError(\"legacy pre-eip-155 transactions not supported\", Logger.errors.UNSUPPORTED_OPERATION, {\n error, method, transaction\n });\n }\n\n if (errorGas.indexOf(method) >= 0 && message.match(/gas required exceeds allowance|always failing transaction|execution reverted|revert/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error, method, transaction\n });\n }\n\n throw error;\n}\n\nfunction timer(timeout: number): Promise {\n return new Promise(function(resolve) {\n setTimeout(resolve, timeout);\n });\n}\n\nfunction getResult(payload: { error?: { code?: number, data?: any, message?: string }, result?: any }): any {\n if (payload.error) {\n // @TODO: not any\n const error: any = new Error(payload.error.message);\n error.code = payload.error.code;\n error.data = payload.error.data;\n throw error;\n }\n\n return payload.result;\n}\n\nfunction getLowerCase(value: string): string {\n if (value) { return value.toLowerCase(); }\n return value;\n}\n\nconst _constructorGuard = {};\n\nexport class JsonRpcSigner extends Signer implements TypedDataSigner {\n readonly provider: JsonRpcProvider;\n _index: number;\n _address: string;\n\n constructor(constructorGuard: any, provider: JsonRpcProvider, addressOrIndex?: string | number) {\n super();\n\n if (constructorGuard !== _constructorGuard) {\n throw new Error(\"do not call the JsonRpcSigner constructor directly; use provider.getSigner\");\n }\n\n defineReadOnly(this, \"provider\", provider);\n\n if (addressOrIndex == null) { addressOrIndex = 0; }\n\n if (typeof(addressOrIndex) === \"string\") {\n defineReadOnly(this, \"_address\", this.provider.formatter.address(addressOrIndex));\n defineReadOnly(this, \"_index\", null);\n\n } else if (typeof(addressOrIndex) === \"number\") {\n defineReadOnly(this, \"_index\", addressOrIndex);\n defineReadOnly(this, \"_address\", null);\n\n } else {\n logger.throwArgumentError(\"invalid address or index\", \"addressOrIndex\", addressOrIndex);\n }\n }\n\n connect(provider: Provider): JsonRpcSigner {\n return logger.throwError(\"cannot alter JSON-RPC Signer connection\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"connect\"\n });\n }\n\n connectUnchecked(): JsonRpcSigner {\n return new UncheckedJsonRpcSigner(_constructorGuard, this.provider, this._address || this._index);\n }\n\n getAddress(): Promise {\n if (this._address) {\n return Promise.resolve(this._address);\n }\n\n return this.provider.send(\"eth_accounts\", []).then((accounts) => {\n if (accounts.length <= this._index) {\n logger.throwError(\"unknown account #\" + this._index, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getAddress\"\n });\n }\n return this.provider.formatter.address(accounts[this._index])\n });\n }\n\n sendUncheckedTransaction(transaction: Deferrable): Promise {\n transaction = shallowCopy(transaction);\n\n const fromAddress = this.getAddress().then((address) => {\n if (address) { address = address.toLowerCase(); }\n return address;\n });\n\n // The JSON-RPC for eth_sendTransaction uses 90000 gas; if the user\n // wishes to use this, it is easy to specify explicitly, otherwise\n // we look it up for them.\n if (transaction.gasLimit == null) {\n const estimate = shallowCopy(transaction);\n estimate.from = fromAddress;\n transaction.gasLimit = this.provider.estimateGas(estimate);\n }\n\n if (transaction.to != null) {\n transaction.to = Promise.resolve(transaction.to).then(async (to) => {\n if (to == null) { return null; }\n const address = await this.provider.resolveName(to);\n if (address == null) {\n logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n }\n return address;\n });\n }\n\n return resolveProperties({\n tx: resolveProperties(transaction),\n sender: fromAddress\n }).then(({ tx, sender }) => {\n\n if (tx.from != null) {\n if (tx.from.toLowerCase() !== sender) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n } else {\n tx.from = sender;\n }\n\n const hexTx = (this.provider.constructor).hexlifyTransaction(tx, { from: true });\n\n return this.provider.send(\"eth_sendTransaction\", [ hexTx ]).then((hash) => {\n return hash;\n }, (error) => {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected transaction\", Logger.errors.ACTION_REJECTED, {\n action: \"sendTransaction\",\n transaction: tx\n });\n }\n\n return checkError(\"sendTransaction\", error, hexTx);\n });\n });\n }\n\n signTransaction(transaction: Deferrable): Promise {\n return logger.throwError(\"signing transactions is unsupported\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signTransaction\"\n });\n }\n\n async sendTransaction(transaction: Deferrable): Promise {\n // This cannot be mined any earlier than any recent block\n const blockNumber = await this.provider._getInternalBlockNumber(100 + 2 * this.provider.pollingInterval);\n\n // Send the transaction\n const hash = await this.sendUncheckedTransaction(transaction);\n\n try {\n // Unfortunately, JSON-RPC only provides and opaque transaction hash\n // for a response, and we need the actual transaction, so we poll\n // for it; it should show up very quickly\n return await poll(async () => {\n const tx = await this.provider.getTransaction(hash);\n if (tx === null) { return undefined; }\n return this.provider._wrapTransaction(tx, hash, blockNumber);\n }, { oncePoll: this.provider });\n } catch (error) {\n (error).transactionHash = hash;\n throw error;\n }\n }\n\n async signMessage(message: Bytes | string): Promise {\n const data = ((typeof(message) === \"string\") ? toUtf8Bytes(message): message);\n const address = await this.getAddress();\n try {\n return await this.provider.send(\"personal_sign\", [ hexlify(data), address.toLowerCase() ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"signMessage\",\n from: address,\n messageData: message\n });\n }\n throw error;\n }\n }\n\n async _legacySignMessage(message: Bytes | string): Promise {\n const data = ((typeof(message) === \"string\") ? toUtf8Bytes(message): message);\n const address = await this.getAddress();\n\n try {\n // https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign\n return await this.provider.send(\"eth_sign\", [ address.toLowerCase(), hexlify(data) ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"_legacySignMessage\",\n from: address,\n messageData: message\n });\n }\n throw error;\n }\n }\n\n async _signTypedData(domain: TypedDataDomain, types: Record>, value: Record): Promise {\n // Populate any ENS names (in-place)\n const populated = await _TypedDataEncoder.resolveNames(domain, types, value, (name: string) => {\n return this.provider.resolveName(name);\n });\n\n const address = await this.getAddress();\n\n try {\n return await this.provider.send(\"eth_signTypedData_v4\", [\n address.toLowerCase(),\n JSON.stringify(_TypedDataEncoder.getPayload(populated.domain, types, populated.value))\n ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"_signTypedData\",\n from: address,\n messageData: { domain: populated.domain, types, value: populated.value }\n });\n }\n throw error;\n }\n }\n\n async unlock(password: string): Promise {\n const provider = this.provider;\n\n const address = await this.getAddress();\n\n return provider.send(\"personal_unlockAccount\", [ address.toLowerCase(), password, null ]);\n }\n}\n\nclass UncheckedJsonRpcSigner extends JsonRpcSigner {\n sendTransaction(transaction: Deferrable): Promise {\n return this.sendUncheckedTransaction(transaction).then((hash) => {\n return {\n hash: hash,\n nonce: null,\n gasLimit: null,\n gasPrice: null,\n data: null,\n value: null,\n chainId: null,\n confirmations: 0,\n from: null,\n wait: (confirmations?: number) => { return this.provider.waitForTransaction(hash, confirmations); }\n };\n });\n }\n}\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, gasLimit: true, gasPrice:true, nonce: true, to: true, value: true,\n type: true, accessList: true,\n maxFeePerGas: true, maxPriorityFeePerGas: true\n}\n\nexport class JsonRpcProvider extends BaseProvider {\n readonly connection: ConnectionInfo;\n\n _pendingFilter: Promise;\n _nextId: number;\n\n // During any given event loop, the results for a given call will\n // all be the same, so we can dedup the calls to save requests and\n // bandwidth. @TODO: Try out generalizing this against send?\n _eventLoopCache: Record>;\n get _cache(): Record> {\n if (this._eventLoopCache == null) {\n this._eventLoopCache = { };\n }\n return this._eventLoopCache;\n }\n\n constructor(url?: ConnectionInfo | string, network?: Networkish) {\n let networkOrReady: Networkish | Promise = network;\n\n // The network is unknown, query the JSON-RPC for it\n if (networkOrReady == null) {\n networkOrReady = new Promise((resolve, reject) => {\n setTimeout(() => {\n this.detectNetwork().then((network) => {\n resolve(network);\n }, (error) => {\n reject(error);\n });\n }, 0);\n });\n }\n\n super(networkOrReady);\n\n // Default URL\n if (!url) { url = getStatic<() => string>(this.constructor, \"defaultUrl\")(); }\n\n if (typeof(url) === \"string\") {\n defineReadOnly(this, \"connection\",Object.freeze({\n url: url\n }));\n } else {\n defineReadOnly(this, \"connection\", Object.freeze(shallowCopy(url)));\n }\n\n this._nextId = 42;\n }\n\n static defaultUrl(): string {\n return \"http:/\\/localhost:8545\";\n }\n\n detectNetwork(): Promise {\n if (!this._cache[\"detectNetwork\"]) {\n this._cache[\"detectNetwork\"] = this._uncachedDetectNetwork();\n\n // Clear this cache at the beginning of the next event loop\n setTimeout(() => {\n this._cache[\"detectNetwork\"] = null;\n }, 0);\n }\n return this._cache[\"detectNetwork\"];\n }\n\n async _uncachedDetectNetwork(): Promise {\n await timer(0);\n\n let chainId = null;\n try {\n chainId = await this.send(\"eth_chainId\", [ ]);\n } catch (error) {\n try {\n chainId = await this.send(\"net_version\", [ ]);\n } catch (error) { }\n }\n\n if (chainId != null) {\n const getNetwork = getStatic<(network: Networkish) => Network>(this.constructor, \"getNetwork\");\n try {\n return getNetwork(BigNumber.from(chainId).toNumber());\n } catch (error) {\n return logger.throwError(\"could not detect network\", Logger.errors.NETWORK_ERROR, {\n chainId: chainId,\n event: \"invalidNetwork\",\n serverError: error\n });\n }\n }\n\n return logger.throwError(\"could not detect network\", Logger.errors.NETWORK_ERROR, {\n event: \"noNetwork\"\n });\n }\n\n getSigner(addressOrIndex?: string | number): JsonRpcSigner {\n return new JsonRpcSigner(_constructorGuard, this, addressOrIndex);\n }\n\n getUncheckedSigner(addressOrIndex?: string | number): UncheckedJsonRpcSigner {\n return this.getSigner(addressOrIndex).connectUnchecked();\n }\n\n listAccounts(): Promise> {\n return this.send(\"eth_accounts\", []).then((accounts: Array) => {\n return accounts.map((a) => this.formatter.address(a));\n });\n }\n\n send(method: string, params: Array): Promise {\n const request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n\n this.emit(\"debug\", {\n action: \"request\",\n request: deepCopy(request),\n provider: this\n });\n\n // We can expand this in the future to any call, but for now these\n // are the biggest wins and do not require any serializing parameters.\n const cache = ([ \"eth_chainId\", \"eth_blockNumber\" ].indexOf(method) >= 0);\n if (cache && this._cache[method]) {\n return this._cache[method];\n }\n\n const result = fetchJson(this.connection, JSON.stringify(request), getResult).then((result) => {\n this.emit(\"debug\", {\n action: \"response\",\n request: request,\n response: result,\n provider: this\n });\n\n return result;\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: this\n });\n\n throw error;\n });\n\n // Cache the fetch, but clear it on the next event loop\n if (cache) {\n this._cache[method] = result;\n setTimeout(() => {\n this._cache[method] = null;\n }, 0);\n }\n\n return result;\n }\n\n prepareRequest(method: string, params: any): [ string, Array ] {\n switch (method) {\n case \"getBlockNumber\":\n return [ \"eth_blockNumber\", [] ];\n\n case \"getGasPrice\":\n return [ \"eth_gasPrice\", [] ];\n\n case \"getBalance\":\n return [ \"eth_getBalance\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getTransactionCount\":\n return [ \"eth_getTransactionCount\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getCode\":\n return [ \"eth_getCode\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getStorageAt\":\n return [ \"eth_getStorageAt\", [ getLowerCase(params.address), hexZeroPad(params.position, 32), params.blockTag ] ];\n\n case \"sendTransaction\":\n return [ \"eth_sendRawTransaction\", [ params.signedTransaction ] ]\n\n case \"getBlock\":\n if (params.blockTag) {\n return [ \"eth_getBlockByNumber\", [ params.blockTag, !!params.includeTransactions ] ];\n } else if (params.blockHash) {\n return [ \"eth_getBlockByHash\", [ params.blockHash, !!params.includeTransactions ] ];\n }\n return null;\n\n case \"getTransaction\":\n return [ \"eth_getTransactionByHash\", [ params.transactionHash ] ];\n\n case \"getTransactionReceipt\":\n return [ \"eth_getTransactionReceipt\", [ params.transactionHash ] ];\n\n case \"call\": {\n const hexlifyTransaction = getStatic<(t: TransactionRequest, a?: { [key: string]: boolean }) => { [key: string]: string }>(this.constructor, \"hexlifyTransaction\");\n return [ \"eth_call\", [ hexlifyTransaction(params.transaction, { from: true }), params.blockTag ] ];\n }\n\n case \"estimateGas\": {\n const hexlifyTransaction = getStatic<(t: TransactionRequest, a?: { [key: string]: boolean }) => { [key: string]: string }>(this.constructor, \"hexlifyTransaction\");\n return [ \"eth_estimateGas\", [ hexlifyTransaction(params.transaction, { from: true }) ] ];\n }\n\n case \"getLogs\":\n if (params.filter && params.filter.address != null) {\n params.filter.address = getLowerCase(params.filter.address);\n }\n return [ \"eth_getLogs\", [ params.filter ] ];\n\n default:\n break;\n }\n\n return null;\n }\n\n async perform(method: string, params: any): Promise {\n // Legacy networks do not like the type field being passed along (which\n // is fair), so we delete type if it is 0 and a non-EIP-1559 network\n if (method === \"call\" || method === \"estimateGas\") {\n const tx = params.transaction;\n if (tx && tx.type != null && BigNumber.from(tx.type).isZero()) {\n // If there are no EIP-1559 properties, it might be non-EIP-1559\n if (tx.maxFeePerGas == null && tx.maxPriorityFeePerGas == null) {\n const feeData = await this.getFeeData();\n if (feeData.maxFeePerGas == null && feeData.maxPriorityFeePerGas == null) {\n // Network doesn't know about EIP-1559 (and hence type)\n params = shallowCopy(params);\n params.transaction = shallowCopy(tx);\n delete params.transaction.type;\n }\n }\n }\n }\n\n const args = this.prepareRequest(method, params);\n\n if (args == null) {\n logger.throwError(method + \" not implemented\", Logger.errors.NOT_IMPLEMENTED, { operation: method });\n }\n try {\n return await this.send(args[0], args[1])\n } catch (error) {\n return checkError(method, error, params);\n }\n }\n\n _startEvent(event: Event): void {\n if (event.tag === \"pending\") { this._startPending(); }\n super._startEvent(event);\n }\n\n _startPending(): void {\n if (this._pendingFilter != null) { return; }\n const self = this;\n\n const pendingFilter: Promise = this.send(\"eth_newPendingTransactionFilter\", []);\n this._pendingFilter = pendingFilter;\n\n pendingFilter.then(function(filterId) {\n function poll() {\n self.send(\"eth_getFilterChanges\", [ filterId ]).then(function(hashes: Array) {\n if (self._pendingFilter != pendingFilter) { return null; }\n\n let seq = Promise.resolve();\n hashes.forEach(function(hash) {\n // @TODO: This should be garbage collected at some point... How? When?\n self._emitted[\"t:\" + hash.toLowerCase()] = \"pending\";\n seq = seq.then(function() {\n return self.getTransaction(hash).then(function(tx) {\n self.emit(\"pending\", tx);\n return null;\n });\n });\n });\n\n return seq.then(function() {\n return timer(1000);\n });\n }).then(function() {\n if (self._pendingFilter != pendingFilter) {\n self.send(\"eth_uninstallFilter\", [ filterId ]);\n return;\n }\n setTimeout(function() { poll(); }, 0);\n\n return null;\n }).catch((error: Error) => { });\n }\n poll();\n\n return filterId;\n }).catch((error: Error) => { });\n }\n\n _stopEvent(event: Event): void {\n if (event.tag === \"pending\" && this.listenerCount(\"pending\") === 0) {\n this._pendingFilter = null;\n }\n super._stopEvent(event);\n }\n\n // Convert an ethers.js transaction into a JSON-RPC transaction\n // - gasLimit => gas\n // - All values hexlified\n // - All numeric values zero-striped\n // - All addresses are lowercased\n // NOTE: This allows a TransactionRequest, but all values should be resolved\n // before this is called\n // @TODO: This will likely be removed in future versions and prepareRequest\n // will be the preferred method for this.\n static hexlifyTransaction(transaction: TransactionRequest, allowExtra?: { [key: string]: boolean }): { [key: string]: string | AccessList } {\n // Check only allowed properties are given\n const allowed = shallowCopy(allowedTransactionKeys);\n if (allowExtra) {\n for (const key in allowExtra) {\n if (allowExtra[key]) { allowed[key] = true; }\n }\n }\n\n checkProperties(transaction, allowed);\n\n const result: { [key: string]: string | AccessList } = {};\n\n // JSON-RPC now requires numeric values to be \"quantity\" values\n [\"chainId\", \"gasLimit\", \"gasPrice\", \"type\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"value\"].forEach(function(key) {\n if ((transaction)[key] == null) { return; }\n const value = hexValue(BigNumber.from((transaction)[key]));\n if (key === \"gasLimit\") { key = \"gas\"; }\n result[key] = value;\n });\n\n [\"from\", \"to\", \"data\"].forEach(function(key) {\n if ((transaction)[key] == null) { return; }\n result[key] = hexlify((transaction)[key]);\n });\n\n if ((transaction).accessList) {\n result[\"accessList\"] = accessListify((transaction).accessList);\n }\n\n return result;\n }\n}\n", "'use strict';\n\nmodule.exports = {\n BINARY_TYPES: ['nodebuffer', 'arraybuffer', 'fragments'],\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n EMPTY_BUFFER: Buffer.alloc(0),\n NOOP: () => {}\n};\n", "var fs = require('fs')\nvar path = require('path')\nvar os = require('os')\n\n// Workaround to fix webpack's build warnings: 'the request of a dependency is an expression'\nvar runtimeRequire = typeof __webpack_require__ === 'function' ? __non_webpack_require__ : require // eslint-disable-line\n\nvar vars = (process.config && process.config.variables) || {}\nvar prebuildsOnly = !!process.env.PREBUILDS_ONLY\nvar abi = process.versions.modules // TODO: support old node where this is undef\nvar runtime = isElectron() ? 'electron' : 'node'\nvar arch = os.arch()\nvar platform = os.platform()\nvar libc = process.env.LIBC || (isAlpine(platform) ? 'musl' : 'glibc')\nvar armv = process.env.ARM_VERSION || (arch === 'arm64' ? '8' : vars.arm_version) || ''\nvar uv = (process.versions.uv || '').split('.')[0]\n\nmodule.exports = load\n\nfunction load (dir) {\n return runtimeRequire(load.path(dir))\n}\n\nload.path = function (dir) {\n dir = path.resolve(dir || '.')\n\n try {\n var name = runtimeRequire(path.join(dir, 'package.json')).name.toUpperCase().replace(/-/g, '_')\n if (process.env[name + '_PREBUILD']) dir = process.env[name + '_PREBUILD']\n } catch (err) {}\n\n if (!prebuildsOnly) {\n var release = getFirst(path.join(dir, 'build/Release'), matchBuild)\n if (release) return release\n\n var debug = getFirst(path.join(dir, 'build/Debug'), matchBuild)\n if (debug) return debug\n }\n\n var prebuild = resolve(dir)\n if (prebuild) return prebuild\n\n var nearby = resolve(path.dirname(process.execPath))\n if (nearby) return nearby\n\n var target = [\n 'platform=' + platform,\n 'arch=' + arch,\n 'runtime=' + runtime,\n 'abi=' + abi,\n 'uv=' + uv,\n armv ? 'armv=' + armv : '',\n 'libc=' + libc,\n 'node=' + process.versions.node,\n process.versions.electron ? 'electron=' + process.versions.electron : '',\n typeof __webpack_require__ === 'function' ? 'webpack=true' : '' // eslint-disable-line\n ].filter(Boolean).join(' ')\n\n throw new Error('No native build was found for ' + target + '\\n loaded from: ' + dir + '\\n')\n\n function resolve (dir) {\n // Find matching \"prebuilds/-\" directory\n var tuples = readdirSync(path.join(dir, 'prebuilds')).map(parseTuple)\n var tuple = tuples.filter(matchTuple(platform, arch)).sort(compareTuples)[0]\n if (!tuple) return\n\n // Find most specific flavor first\n var prebuilds = path.join(dir, 'prebuilds', tuple.name)\n var parsed = readdirSync(prebuilds).map(parseTags)\n var candidates = parsed.filter(matchTags(runtime, abi))\n var winner = candidates.sort(compareTags(runtime))[0]\n if (winner) return path.join(prebuilds, winner.file)\n }\n}\n\nfunction readdirSync (dir) {\n try {\n return fs.readdirSync(dir)\n } catch (err) {\n return []\n }\n}\n\nfunction getFirst (dir, filter) {\n var files = readdirSync(dir).filter(filter)\n return files[0] && path.join(dir, files[0])\n}\n\nfunction matchBuild (name) {\n return /\\.node$/.test(name)\n}\n\nfunction parseTuple (name) {\n // Example: darwin-x64+arm64\n var arr = name.split('-')\n if (arr.length !== 2) return\n\n var platform = arr[0]\n var architectures = arr[1].split('+')\n\n if (!platform) return\n if (!architectures.length) return\n if (!architectures.every(Boolean)) return\n\n return { name, platform, architectures }\n}\n\nfunction matchTuple (platform, arch) {\n return function (tuple) {\n if (tuple == null) return false\n if (tuple.platform !== platform) return false\n return tuple.architectures.includes(arch)\n }\n}\n\nfunction compareTuples (a, b) {\n // Prefer single-arch prebuilds over multi-arch\n return a.architectures.length - b.architectures.length\n}\n\nfunction parseTags (file) {\n var arr = file.split('.')\n var extension = arr.pop()\n var tags = { file: file, specificity: 0 }\n\n if (extension !== 'node') return\n\n for (var i = 0; i < arr.length; i++) {\n var tag = arr[i]\n\n if (tag === 'node' || tag === 'electron' || tag === 'node-webkit') {\n tags.runtime = tag\n } else if (tag === 'napi') {\n tags.napi = true\n } else if (tag.slice(0, 3) === 'abi') {\n tags.abi = tag.slice(3)\n } else if (tag.slice(0, 2) === 'uv') {\n tags.uv = tag.slice(2)\n } else if (tag.slice(0, 4) === 'armv') {\n tags.armv = tag.slice(4)\n } else if (tag === 'glibc' || tag === 'musl') {\n tags.libc = tag\n } else {\n continue\n }\n\n tags.specificity++\n }\n\n return tags\n}\n\nfunction matchTags (runtime, abi) {\n return function (tags) {\n if (tags == null) return false\n if (tags.runtime !== runtime && !runtimeAgnostic(tags)) return false\n if (tags.abi !== abi && !tags.napi) return false\n if (tags.uv && tags.uv !== uv) return false\n if (tags.armv && tags.armv !== armv) return false\n if (tags.libc && tags.libc !== libc) return false\n\n return true\n }\n}\n\nfunction runtimeAgnostic (tags) {\n return tags.runtime === 'node' && tags.napi\n}\n\nfunction compareTags (runtime) {\n // Precedence: non-agnostic runtime, abi over napi, then by specificity.\n return function (a, b) {\n if (a.runtime !== b.runtime) {\n return a.runtime === runtime ? -1 : 1\n } else if (a.abi !== b.abi) {\n return a.abi ? -1 : 1\n } else if (a.specificity !== b.specificity) {\n return a.specificity > b.specificity ? -1 : 1\n } else {\n return 0\n }\n }\n}\n\nfunction isElectron () {\n if (process.versions && process.versions.electron) return true\n if (process.env.ELECTRON_RUN_AS_NODE) return true\n return typeof window !== 'undefined' && window.process && window.process.type === 'renderer'\n}\n\nfunction isAlpine (platform) {\n return platform === 'linux' && fs.existsSync('/etc/alpine-release')\n}\n\n// Exposed for unit tests\n// TODO: move to lib\nload.parseTags = parseTags\nload.matchTags = matchTags\nload.compareTags = compareTags\nload.parseTuple = parseTuple\nload.matchTuple = matchTuple\nload.compareTuples = compareTuples\n", "'use strict';\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nconst mask = (source, mask, output, offset, length) => {\n for (var i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n};\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nconst unmask = (buffer, mask) => {\n // Required until https://github.com/nodejs/node/issues/9006 is resolved.\n const length = buffer.length;\n for (var i = 0; i < length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n};\n\nmodule.exports = { mask, unmask };\n", "'use strict';\n\ntry {\n module.exports = require('node-gyp-build')(__dirname);\n} catch (e) {\n module.exports = require('./fallback');\n}\n", "'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) return target.slice(0, offset);\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n // Required until https://github.com/nodejs/node/issues/9006 is resolved.\n const length = buffer.length;\n for (let i = 0; i < length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.byteLength === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = Buffer.from(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\ntry {\n const bufferUtil = require('bufferutil');\n const bu = bufferUtil.BufferUtil || bufferUtil;\n\n module.exports = {\n concat,\n mask(source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bu.mask(source, mask, output, offset, length);\n },\n toArrayBuffer,\n toBuffer,\n unmask(buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bu.unmask(buffer, mask);\n }\n };\n} catch (e) /* istanbul ignore next */ {\n module.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n };\n}\n", "'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n", "'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode, NOOP } = require('./constants');\n\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {Buffer} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {Buffer} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n //\n // An `'error'` event is emitted, only on Node.js < 10.0.0, if the\n // `zlib.DeflateRaw` instance is closed while data is being processed.\n // This can happen if `PerMessageDeflate#cleanup()` is called at the wrong\n // time due to an abnormal WebSocket closure.\n //\n this._deflate.on('error', NOOP);\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) data = data.slice(0, data.length - 4);\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n", "'use strict';\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0x00) { // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) { // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) { // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80 || // overlong\n buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0 // surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) { // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80 || // overlong\n buf[i] === 0xf4 && buf[i + 1] > 0x8f || buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = isValidUTF8;\n", "'use strict';\n\ntry {\n module.exports = require('node-gyp-build')(__dirname);\n} catch (e) {\n module.exports = require('./fallback');\n}\n", "'use strict';\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\ntry {\n let isValidUTF8 = require('utf-8-validate');\n\n /* istanbul ignore if */\n if (typeof isValidUTF8 === 'object') {\n isValidUTF8 = isValidUTF8.Validation.isValidUTF8; // utf-8-validate@<3.0.0\n }\n\n module.exports = {\n isValidStatusCode,\n isValidUTF8(buf) {\n return buf.length < 150 ? _isValidUTF8(buf) : isValidUTF8(buf);\n }\n };\n} catch (e) /* istanbul ignore next */ {\n module.exports = {\n isValidStatusCode,\n isValidUTF8: _isValidUTF8\n };\n}\n", "'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends stream.Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {String} [binaryType=nodebuffer] The type for binary data\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Boolean} [isServer=false] Specifies whether to operate in client or\n * server mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(binaryType, extensions, isServer, maxPayload) {\n super();\n\n this._binaryType = binaryType || BINARY_TYPES[0];\n this[kWebSocket] = undefined;\n this._extensions = extensions || {};\n this._isServer = !!isServer;\n this._maxPayload = maxPayload | 0;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._state = GET_INFO;\n this._loop = false;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = buf.slice(n);\n return buf.slice(0, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = buf.slice(n);\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n let err;\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n err = this.getInfo();\n break;\n case GET_PAYLOAD_LENGTH_16:\n err = this.getPayloadLength16();\n break;\n case GET_PAYLOAD_LENGTH_64:\n err = this.getPayloadLength64();\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n err = this.getData(cb);\n break;\n default:\n // `INFLATING`\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n cb(err);\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getInfo() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n this._loop = false;\n return error(RangeError, 'RSV2 and RSV3 must be clear', true, 1002);\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n this._loop = false;\n return error(RangeError, 'RSV1 must be clear', true, 1002);\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n this._loop = false;\n return error(RangeError, 'RSV1 must be clear', true, 1002);\n }\n\n if (!this._fragmented) {\n this._loop = false;\n return error(RangeError, 'invalid opcode 0', true, 1002);\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n this._loop = false;\n return error(RangeError, `invalid opcode ${this._opcode}`, true, 1002);\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n this._loop = false;\n return error(RangeError, 'FIN must be set', true, 1002);\n }\n\n if (compressed) {\n this._loop = false;\n return error(RangeError, 'RSV1 must be clear', true, 1002);\n }\n\n if (this._payloadLength > 0x7d) {\n this._loop = false;\n return error(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002\n );\n }\n } else {\n this._loop = false;\n return error(RangeError, `invalid opcode ${this._opcode}`, true, 1002);\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n this._loop = false;\n return error(RangeError, 'MASK must be set', true, 1002);\n }\n } else if (this._masked) {\n this._loop = false;\n return error(RangeError, 'MASK must be clear', true, 1002);\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength16() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength64() {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n this._loop = false;\n return error(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009\n );\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n return this.haveLength();\n }\n\n /**\n * Payload length has been read.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n haveLength() {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n this._loop = false;\n return error(RangeError, 'Max payload size exceeded', false, 1009);\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n if (this._masked) unmask(data, this._mask);\n }\n\n if (this._opcode > 0x07) return this.controlMessage(data);\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its lenght is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n return this.dataMessage();\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n return cb(\n error(RangeError, 'Max payload size exceeded', false, 1009)\n );\n }\n\n this._fragments.push(buf);\n }\n\n const er = this.dataMessage();\n if (er) return cb(er);\n\n this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @return {(Error|undefined)} A possible error\n * @private\n */\n dataMessage() {\n if (this._fin) {\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else {\n data = fragments;\n }\n\n this.emit('message', data);\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!isValidUTF8(buf)) {\n this._loop = false;\n return error(Error, 'invalid UTF-8 sequence', true, 1007);\n }\n\n this.emit('message', buf.toString());\n }\n }\n\n this._state = GET_INFO;\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data) {\n if (this._opcode === 0x08) {\n this._loop = false;\n\n if (data.length === 0) {\n this.emit('conclude', 1005, '');\n this.end();\n } else if (data.length === 1) {\n return error(RangeError, 'invalid payload length 1', true, 1002);\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n return error(RangeError, `invalid status code ${code}`, true, 1002);\n }\n\n const buf = data.slice(2);\n\n if (!isValidUTF8(buf)) {\n return error(Error, 'invalid UTF-8 sequence', true, 1007);\n }\n\n this.emit('conclude', code, buf.toString());\n this.end();\n }\n } else if (this._opcode === 0x09) {\n this.emit('ping', data);\n } else {\n this.emit('pong', data);\n }\n\n this._state = GET_INFO;\n }\n}\n\nmodule.exports = Receiver;\n\n/**\n * Builds an error object.\n *\n * @param {(Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @return {(Error|RangeError)} The error\n * @private\n */\nfunction error(ErrorCtor, message, prefix, statusCode) {\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, error);\n err[kStatusCode] = statusCode;\n return err;\n}\n", "'use strict';\n\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER } = require('./constants');\nconst { isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst mask = Buffer.alloc(4);\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {net.Socket} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n */\n constructor(socket, extensions) {\n this._extensions = extensions || {};\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._deflating = false;\n this._queue = [];\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {Buffer} data The data to frame\n * @param {Object} options Options object\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {Buffer[]} The framed data as a list of `Buffer` instances\n * @public\n */\n static frame(data, options) {\n const merge = options.mask && options.readOnly;\n let offset = options.mask ? 6 : 2;\n let payloadLength = data.length;\n\n if (data.length >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (data.length > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? data.length + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(data.length, 2);\n } else if (payloadLength === 127) {\n target.writeUInt32BE(0, 2);\n target.writeUInt32BE(data.length, 6);\n }\n\n if (!options.mask) return [target, data];\n\n randomFillSync(mask, 0, 4);\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (merge) {\n applyMask(data, mask, target, offset, data.length);\n return [target];\n }\n\n applyMask(data, mask, data, 0, data.length);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {String} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || data === '') {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n buf.write(data, 2);\n }\n\n if (this._deflating) {\n this.enqueue([this.doClose, buf, mask, cb]);\n } else {\n this.doClose(buf, mask, cb);\n }\n }\n\n /**\n * Frames and sends a close message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @private\n */\n doClose(data, mask, cb) {\n this.sendFrame(\n Sender.frame(data, {\n fin: true,\n rsv1: false,\n opcode: 0x08,\n mask,\n readOnly: false\n }),\n cb\n );\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n const buf = toBuffer(data);\n\n if (buf.length > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n if (this._deflating) {\n this.enqueue([this.doPing, buf, mask, toBuffer.readOnly, cb]);\n } else {\n this.doPing(buf, mask, toBuffer.readOnly, cb);\n }\n }\n\n /**\n * Frames and sends a ping message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Boolean} [readOnly=false] Specifies whether `data` can be modified\n * @param {Function} [cb] Callback\n * @private\n */\n doPing(data, mask, readOnly, cb) {\n this.sendFrame(\n Sender.frame(data, {\n fin: true,\n rsv1: false,\n opcode: 0x09,\n mask,\n readOnly\n }),\n cb\n );\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n const buf = toBuffer(data);\n\n if (buf.length > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n if (this._deflating) {\n this.enqueue([this.doPong, buf, mask, toBuffer.readOnly, cb]);\n } else {\n this.doPong(buf, mask, toBuffer.readOnly, cb);\n }\n }\n\n /**\n * Frames and sends a pong message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Boolean} [readOnly=false] Specifies whether `data` can be modified\n * @param {Function} [cb] Callback\n * @private\n */\n doPong(data, mask, readOnly, cb) {\n this.sendFrame(\n Sender.frame(data, {\n fin: true,\n rsv1: false,\n opcode: 0x0a,\n mask,\n readOnly\n }),\n cb\n );\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const buf = toBuffer(data);\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (rsv1 && perMessageDeflate) {\n rsv1 = buf.length >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n if (perMessageDeflate) {\n const opts = {\n fin: options.fin,\n rsv1,\n opcode,\n mask: options.mask,\n readOnly: toBuffer.readOnly\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, buf, this._compress, opts, cb]);\n } else {\n this.dispatch(buf, this._compress, opts, cb);\n }\n } else {\n this.sendFrame(\n Sender.frame(buf, {\n fin: options.fin,\n rsv1: false,\n opcode,\n mask: options.mask,\n readOnly: toBuffer.readOnly\n }),\n cb\n );\n }\n }\n\n /**\n * Dispatches a data message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += data.length;\n this._deflating = true;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < this._queue.length; i++) {\n const callback = this._queue[i][4];\n\n if (typeof callback === 'function') callback(err);\n }\n\n return;\n }\n\n this._bufferedBytes -= data.length;\n this._deflating = false;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (!this._deflating && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[1].length;\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[1].length;\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {Buffer[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n", "'use strict';\n\n/**\n * Class representing an event.\n *\n * @private\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @param {Object} target A reference to the target to which the event was\n * dispatched\n */\n constructor(type, target) {\n this.target = target;\n this.type = type;\n }\n}\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n * @private\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {(String|Buffer|ArrayBuffer|Buffer[])} data The received data\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(data, target) {\n super('message', target);\n\n this.data = data;\n }\n}\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n * @private\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {Number} code The status code explaining why the connection is being\n * closed\n * @param {String} reason A human-readable string explaining why the\n * connection is closing\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(code, reason, target) {\n super('close', target);\n\n this.wasClean = target._closeFrameReceived && target._closeFrameSent;\n this.reason = reason;\n this.code = code;\n }\n}\n\n/**\n * Class representing an open event.\n *\n * @extends Event\n * @private\n */\nclass OpenEvent extends Event {\n /**\n * Create a new `OpenEvent`.\n *\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(target) {\n super('open', target);\n }\n}\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n * @private\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {Object} error The error that generated this event\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(error, target) {\n super('error', target);\n\n this.message = error.message;\n this.error = error;\n }\n}\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {Function} listener The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean`` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, listener, options) {\n if (typeof listener !== 'function') return;\n\n function onMessage(data) {\n listener.call(this, new MessageEvent(data, this));\n }\n\n function onClose(code, message) {\n listener.call(this, new CloseEvent(code, message, this));\n }\n\n function onError(error) {\n listener.call(this, new ErrorEvent(error, this));\n }\n\n function onOpen() {\n listener.call(this, new OpenEvent(this));\n }\n\n const method = options && options.once ? 'once' : 'on';\n\n if (type === 'message') {\n onMessage._listener = listener;\n this[method](type, onMessage);\n } else if (type === 'close') {\n onClose._listener = listener;\n this[method](type, onClose);\n } else if (type === 'error') {\n onError._listener = listener;\n this[method](type, onError);\n } else if (type === 'open') {\n onOpen._listener = listener;\n this[method](type, onOpen);\n } else {\n this[method](type, listener);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {Function} listener The listener to remove\n * @public\n */\n removeEventListener(type, listener) {\n const listeners = this.listeners(type);\n\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i] === listener || listeners[i]._listener === listener) {\n this.removeListener(type, listeners[i]);\n }\n }\n }\n};\n\nmodule.exports = EventTarget;\n", "'use strict';\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n\n if (header === undefined || header === '') return offers;\n\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 /* ' ' */ || code === 0x09 /* '\\t' */) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n", "'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n GUID,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst { addEventListener, removeEventListener } = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst protocolVersions = [8, 13];\nconst closeTimeout = 30 * 1000;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|url.URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = '';\n this._closeTimer = null;\n this._extensions = {};\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (Array.isArray(protocols)) {\n protocols = protocols.join(', ');\n } else if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = undefined;\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._isServer = true;\n }\n }\n\n /**\n * This deviates from the WHATWG interface since ws doesn't support the\n * required default \"blob\" type (instead we define a custom \"nodebuffer\"\n * type).\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {net.Socket} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Number} [maxPayload=0] The maximum allowed message size\n * @private\n */\n setSocket(socket, head, maxPayload) {\n const receiver = new Receiver(\n this.binaryType,\n this._extensions,\n this._isServer,\n maxPayload\n );\n\n this._sender = new Sender(socket, this._extensions);\n this._receiver = receiver;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n socket.setTimeout(0);\n socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {String} [data] A string explaining why the connection is closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (this._closeFrameSent && this._closeFrameReceived) this._socket.end();\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n if (this._closeFrameReceived) this._socket.end();\n });\n\n //\n // Specify a timeout for the closing handshake to complete.\n //\n this._closeTimer = setTimeout(\n this._socket.destroy.bind(this._socket),\n closeTimeout\n );\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\nreadyStates.forEach((readyState, i) => {\n const descriptor = { enumerable: true, value: i };\n\n Object.defineProperty(WebSocket.prototype, readyState, descriptor);\n Object.defineProperty(WebSocket, readyState, descriptor);\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n configurable: true,\n enumerable: true,\n /**\n * Return the listener of the event.\n *\n * @return {(Function|undefined)} The event listener or `undefined`\n * @public\n */\n get() {\n const listeners = this.listeners(method);\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i]._listener) return listeners[i]._listener;\n }\n\n return undefined;\n },\n /**\n * Add a listener for the event.\n *\n * @param {Function} listener The listener to add\n * @public\n */\n set(listener) {\n const listeners = this.listeners(method);\n for (let i = 0; i < listeners.length; i++) {\n //\n // Remove only the listeners added via `addEventListener`.\n //\n if (listeners[i]._listener) this.removeListener(method, listeners[i]);\n }\n this.addEventListener(method, listener);\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|url.URL)} address The URL to which to connect\n * @param {String} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n createConnection: undefined,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: undefined,\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n websocket._url = address.href;\n } else {\n parsedUrl = new URL(address);\n websocket._url = address;\n }\n\n const isUnixSocket = parsedUrl.protocol === 'ws+unix:';\n\n if (!parsedUrl.host && (!isUnixSocket || !parsedUrl.pathname)) {\n throw new Error(`Invalid URL: ${websocket.url}`);\n }\n\n const isSecure =\n parsedUrl.protocol === 'wss:' || parsedUrl.protocol === 'https:';\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const get = isSecure ? https.get : http.get;\n let perMessageDeflate;\n\n opts.createConnection = isSecure ? tlsConnect : netConnect;\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket',\n ...opts.headers\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols) {\n opts.headers['Sec-WebSocket-Protocol'] = protocols;\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isUnixSocket) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req = (websocket._req = get(opts));\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req.aborted) return;\n\n req = websocket._req = null;\n websocket._readyState = WebSocket.CLOSING;\n websocket.emit('error', err);\n websocket.emitClose();\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n const addr = new URL(location, address);\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the `upgrade`\n // event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n const protList = (protocols || '').split(/, */);\n let protError;\n\n if (!protocols && serverProt) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (protocols && !serverProt) {\n protError = 'Server sent no subprotocol';\n } else if (serverProt && !protList.includes(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n if (perMessageDeflate) {\n try {\n const extensions = parse(res.headers['sec-websocket-extensions']);\n\n if (extensions[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n } catch (err) {\n abortHandshake(\n websocket,\n socket,\n 'Invalid Sec-WebSocket-Extensions header'\n );\n return;\n }\n }\n\n websocket.setSocket(socket, head, opts.maxPayload);\n });\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket)} stream The request to abort or the\n * socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n stream.once('abort', websocket.emitClose.bind(websocket));\n websocket.emit('error', err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n cb(err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {String} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._socket.removeListener('data', socketOnData);\n websocket._socket.resume();\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n this[kWebSocket]._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n websocket._socket.removeListener('data', socketOnData);\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._closeCode = err[kStatusCode];\n websocket.emit('error', err);\n websocket._socket.destroy();\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {(String|Buffer|ArrayBuffer|Buffer[])} data The message\n * @private\n */\nfunction receiverOnMessage(data) {\n this[kWebSocket].emit('message', data);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n websocket.pong(data, !websocket._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * The listener of the `net.Socket` `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written and `readable.read()`\n // will return `null`. If instead, the socket is paused, any possible buffered\n // data will be read as a single chunk and emitted synchronously in a single\n // `'data'` event.\n //\n websocket._socket.read();\n websocket._receiver.end();\n\n this.removeListener('data', socketOnData);\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the `net.Socket` `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the `net.Socket` `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the `net.Socket` `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n", "'use strict';\n\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {stream.Duplex} The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {stream.Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let resumeOnReceiverDrain = true;\n\n function receiverOnDrain() {\n if (resumeOnReceiverDrain) ws._socket.resume();\n }\n\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n ws._receiver.removeAllListeners('drain');\n ws._receiver.on('drain', receiverOnDrain);\n });\n } else {\n ws._receiver.removeAllListeners('drain');\n ws._receiver.on('drain', receiverOnDrain);\n }\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg) {\n if (!duplex.push(msg)) {\n resumeOnReceiverDrain = false;\n ws._socket.pause();\n }\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.readyState === ws.OPEN && !resumeOnReceiverDrain) {\n resumeOnReceiverDrain = true;\n if (!ws._receiver._writableState.needDrain) ws._socket.resume();\n }\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n", "'use strict';\n\nconst EventEmitter = require('events');\nconst { createHash } = require('crypto');\nconst { createServer, STATUS_CODES } = require('http');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst WebSocket = require('./websocket');\nconst { format, parse } = require('./extension');\nconst { GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {http.Server} [options.server] A pre-created HTTP/S server to use\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n maxPayload: 100 * 1024 * 1024,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n ...options\n };\n\n if (options.port == null && !options.server && !options.noServer) {\n throw new TypeError(\n 'One of the \"port\", \"server\", or \"noServer\" options must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = createServer((req, res) => {\n const body = STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) this.clients = new Set();\n this.options = options;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Close the server.\n *\n * @param {Function} [cb] Callback\n * @public\n */\n close(cb) {\n if (cb) this.once('close', cb);\n\n //\n // Terminate all associated clients.\n //\n if (this.clients) {\n for (const client of this.clients) client.terminate();\n }\n\n const server = this._server;\n\n if (server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // Close the http server if it was internally created.\n //\n if (this.options.port != null) {\n server.close(() => this.emit('close'));\n return;\n }\n }\n\n process.nextTick(emitClose, this);\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {net.Socket} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key =\n req.headers['sec-websocket-key'] !== undefined\n ? req.headers['sec-websocket-key'].trim()\n : false;\n const version = +req.headers['sec-websocket-version'];\n const extensions = {};\n\n if (\n req.method !== 'GET' ||\n req.headers.upgrade.toLowerCase() !== 'websocket' ||\n !key ||\n !keyRegex.test(key) ||\n (version !== 8 && version !== 13) ||\n !this.shouldHandle(req)\n ) {\n return abortHandshake(socket, 400);\n }\n\n if (this.options.perMessageDeflate) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = parse(req.headers['sec-websocket-extensions']);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n return abortHandshake(socket, 400);\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(key, extensions, req, socket, head, cb);\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(key, extensions, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Object} extensions The accepted extensions\n * @param {http.IncomingMessage} req The request object\n * @param {net.Socket} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(key, extensions, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new WebSocket(null);\n let protocol = req.headers['sec-websocket-protocol'];\n\n if (protocol) {\n protocol = protocol.split(',').map(trim);\n\n //\n // Optionally call external protocol selection handler.\n //\n if (this.options.handleProtocols) {\n protocol = this.options.handleProtocols(protocol, req);\n } else {\n protocol = protocol[0];\n }\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, this.options.maxPayload);\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => this.clients.delete(ws));\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of \n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server.emit('close');\n}\n\n/**\n * Handle premature socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {net.Socket} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n if (socket.writable) {\n message = message || STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.write(\n `HTTP/1.1 ${code} ${STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n }\n\n socket.removeListener('error', socketOnError);\n socket.destroy();\n}\n\n/**\n * Remove whitespace characters from both ends of a string.\n *\n * @param {String} str The string\n * @return {String} A new string representing `str` stripped of whitespace\n * characters from both its beginning and end\n * @private\n */\nfunction trim(str) {\n return str.trim();\n}\n", "'use strict';\n\nconst WebSocket = require('./lib/websocket');\n\nWebSocket.createWebSocketStream = require('./lib/stream');\nWebSocket.Server = require('./lib/websocket-server');\nWebSocket.Receiver = require('./lib/receiver');\nWebSocket.Sender = require('./lib/sender');\n\nmodule.exports = WebSocket;\n", "import WebSocket from \"ws\";\n\nexport { WebSocket }\n", "\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Event } from \"./base-provider\";\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\nimport { WebSocket } from \"./ws\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n/**\n * Notes:\n *\n * This provider differs a bit from the polling providers. One main\n * difference is how it handles consistency. The polling providers\n * will stall responses to ensure a consistent state, while this\n * WebSocket provider assumes the connected backend will manage this.\n *\n * For example, if a polling provider emits an event which indicates\n * the event occurred in blockhash XXX, a call to fetch that block by\n * its hash XXX, if not present will retry until it is present. This\n * can occur when querying a pool of nodes that are mildly out of sync\n * with each other.\n */\n\nlet NextId = 1;\n\nexport type InflightRequest = {\n callback: (error: Error, result: any) => void;\n payload: string;\n};\n\nexport type Subscription = {\n tag: string;\n processFunc: (payload: any) => void;\n};\n\nexport interface WebSocketLike {\n onopen: ((...args: Array) => any) | null;\n onmessage: ((...args: Array) => any) | null;\n onerror: ((...args: Array) => any) | null;\n\n readyState: number;\n\n send(payload: any): void;\n close(code?: number, reason?: string): void;\n}\n\n// For more info about the Real-time Event API see:\n// https://geth.ethereum.org/docs/rpc/pubsub\n\nexport class WebSocketProvider extends JsonRpcProvider {\n readonly _websocket: any;\n readonly _requests: { [ name: string ]: InflightRequest };\n readonly _detectNetwork: Promise;\n\n // Maps event tag to subscription ID (we dedupe identical events)\n readonly _subIds: { [ tag: string ]: Promise };\n\n // Maps Subscription ID to Subscription\n readonly _subs: { [ name: string ]: Subscription };\n\n _wsReady: boolean;\n\n constructor(url: string | WebSocketLike, network?: Networkish) {\n\n // This will be added in the future; please open an issue to expedite\n if (network === \"any\") {\n logger.throwError(\"WebSocketProvider does not support 'any' network yet\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"network:any\"\n });\n }\n\n if (typeof(url) === \"string\") {\n super(url, network);\n } else {\n super(\"_websocket\", network);\n }\n\n this._pollingInterval = -1;\n\n this._wsReady = false;\n\n if (typeof(url) === \"string\") {\n defineReadOnly(this, \"_websocket\", new WebSocket(this.connection.url));\n } else {\n defineReadOnly(this, \"_websocket\", url);\n }\n\n defineReadOnly(this, \"_requests\", { });\n defineReadOnly(this, \"_subs\", { });\n defineReadOnly(this, \"_subIds\", { });\n defineReadOnly(this, \"_detectNetwork\", super.detectNetwork());\n\n // Stall sending requests until the socket is open...\n this.websocket.onopen = () => {\n this._wsReady = true;\n Object.keys(this._requests).forEach((id) => {\n this.websocket.send(this._requests[id].payload);\n });\n };\n\n this.websocket.onmessage = (messageEvent: { data: string }) => {\n const data = messageEvent.data;\n const result = JSON.parse(data);\n if (result.id != null) {\n const id = String(result.id);\n const request = this._requests[id];\n delete this._requests[id];\n\n if (result.result !== undefined) {\n request.callback(null, result.result);\n\n this.emit(\"debug\", {\n action: \"response\",\n request: JSON.parse(request.payload),\n response: result.result,\n provider: this\n });\n\n } else {\n let error: Error = null;\n if (result.error) {\n error = new Error(result.error.message || \"unknown error\");\n defineReadOnly(error, \"code\", result.error.code || null);\n defineReadOnly(error, \"response\", data);\n } else {\n error = new Error(\"unknown error\");\n }\n\n request.callback(error, undefined);\n\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: JSON.parse(request.payload),\n provider: this\n });\n\n }\n\n } else if (result.method === \"eth_subscription\") {\n // Subscription...\n const sub = this._subs[result.params.subscription];\n if (sub) {\n //this.emit.apply(this, );\n sub.processFunc(result.params.result)\n }\n\n } else {\n console.warn(\"this should not happen\");\n }\n };\n\n // This Provider does not actually poll, but we want to trigger\n // poll events for things that depend on them (like stalling for\n // block and transaction lookups)\n const fauxPoll = setInterval(() => {\n this.emit(\"poll\");\n }, 1000);\n if (fauxPoll.unref) { fauxPoll.unref(); }\n }\n\n // Cannot narrow the type of _websocket, as that is not backwards compatible\n // so we add a getter and let the WebSocket be a public API.\n get websocket(): WebSocketLike { return this._websocket; }\n\n detectNetwork(): Promise {\n return this._detectNetwork;\n }\n\n get pollingInterval(): number {\n return 0;\n }\n\n resetEventsBlock(blockNumber: number): void {\n logger.throwError(\"cannot reset events block on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resetEventBlock\"\n });\n }\n\n set pollingInterval(value: number) {\n logger.throwError(\"cannot set polling interval on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPollingInterval\"\n });\n }\n\n async poll(): Promise {\n return null;\n }\n\n set polling(value: boolean) {\n if (!value) { return; }\n\n logger.throwError(\"cannot set polling on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPolling\"\n });\n }\n\n send(method: string, params?: Array): Promise {\n const rid = NextId++;\n\n return new Promise((resolve, reject) => {\n function callback(error: Error, result: any) {\n if (error) { return reject(error); }\n return resolve(result);\n }\n\n const payload = JSON.stringify({\n method: method,\n params: params,\n id: rid,\n jsonrpc: \"2.0\"\n });\n\n this.emit(\"debug\", {\n action: \"request\",\n request: JSON.parse(payload),\n provider: this\n });\n\n this._requests[String(rid)] = { callback, payload };\n\n if (this._wsReady) { this.websocket.send(payload); }\n });\n }\n\n static defaultUrl(): string {\n return \"ws:/\\/localhost:8546\";\n }\n\n async _subscribe(tag: string, param: Array, processFunc: (result: any) => void): Promise {\n let subIdPromise = this._subIds[tag];\n if (subIdPromise == null) {\n subIdPromise = Promise.all(param).then((param) => {\n return this.send(\"eth_subscribe\", param);\n });\n this._subIds[tag] = subIdPromise;\n }\n const subId = await subIdPromise;\n this._subs[subId] = { tag, processFunc };\n }\n\n _startEvent(event: Event): void {\n switch (event.type) {\n case \"block\":\n this._subscribe(\"block\", [ \"newHeads\" ], (result: any) => {\n const blockNumber = BigNumber.from(result.number).toNumber();\n this._emitted.block = blockNumber;\n this.emit(\"block\", blockNumber);\n });\n break;\n\n case \"pending\":\n this._subscribe(\"pending\", [ \"newPendingTransactions\" ], (result: any) => {\n this.emit(\"pending\", result);\n });\n break;\n\n case \"filter\":\n this._subscribe(event.tag, [ \"logs\", this._getFilter(event.filter) ], (result: any) => {\n if (result.removed == null) { result.removed = false; }\n this.emit(event.filter, this.formatter.filterLog(result));\n });\n break;\n\n case \"tx\": {\n const emitReceipt = (event: Event) => {\n const hash = event.hash;\n this.getTransactionReceipt(hash).then((receipt) => {\n if (!receipt) { return; }\n this.emit(hash, receipt);\n });\n };\n\n // In case it is already mined\n emitReceipt(event);\n\n // To keep things simple, we start up a single newHeads subscription\n // to keep an eye out for transactions we are watching for.\n // Starting a subscription for an event (i.e. \"tx\") that is already\n // running is (basically) a nop.\n this._subscribe(\"tx\", [ \"newHeads\" ], (result: any) => {\n this._events.filter((e) => (e.type === \"tx\")).forEach(emitReceipt);\n });\n break;\n }\n\n // Nothing is needed\n case \"debug\":\n case \"poll\":\n case \"willPoll\":\n case \"didPoll\":\n case \"error\":\n break;\n\n default:\n console.log(\"unhandled:\", event);\n break;\n }\n }\n\n _stopEvent(event: Event): void {\n let tag = event.tag;\n\n if (event.type === \"tx\") {\n // There are remaining transaction event listeners\n if (this._events.filter((e) => (e.type === \"tx\")).length) {\n return;\n }\n tag = \"tx\";\n } else if (this.listenerCount(event.event)) {\n // There are remaining event listeners\n return;\n }\n\n const subId = this._subIds[tag];\n if (!subId) { return; }\n\n delete this._subIds[tag];\n subId.then((subId) => {\n if (!this._subs[subId]) { return; }\n delete this._subs[subId];\n this.send(\"eth_unsubscribe\", [ subId ]);\n });\n }\n\n async destroy(): Promise {\n // Wait until we have connected before trying to disconnect\n if (this.websocket.readyState === WebSocket.CONNECTING) {\n await (new Promise((resolve) => {\n this.websocket.onopen = function() {\n resolve(true);\n };\n\n this.websocket.onerror = function() {\n resolve(false);\n };\n }));\n }\n\n // Hangup\n // See: https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes\n this.websocket.close(1000);\n }\n}\n", "\n\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly, getStatic } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { CommunityResourcable } from \"./formatter\";\nimport { JsonRpcProvider, JsonRpcSigner } from \"./json-rpc-provider\";\n\ntype getUrlFunc = (network: Network, apiKey: string) => string | ConnectionInfo;\n\n// A StaticJsonRpcProvider is useful when you *know* for certain that\n// the backend will never change, as it never calls eth_chainId to\n// verify its backend. However, if the backend does change, the effects\n// are undefined and may include:\n// - inconsistent results\n// - locking up the UI\n// - block skew warnings\n// - wrong results\n// If the network is not explicit (i.e. auto-detection is expected), the\n// node MUST be running and available to respond to requests BEFORE this\n// is instantiated.\nexport class StaticJsonRpcProvider extends JsonRpcProvider {\n async detectNetwork(): Promise {\n let network = this.network;\n if (network == null) {\n network = await super.detectNetwork();\n\n if (!network) {\n logger.throwError(\"no network detected\", Logger.errors.UNKNOWN_ERROR, { });\n }\n\n // If still not set, set it\n if (this._network == null) {\n // A static network does not support \"any\"\n defineReadOnly(this, \"_network\", network);\n\n this.emit(\"network\", network, null);\n }\n }\n return network;\n }\n}\n\nexport abstract class UrlJsonRpcProvider extends StaticJsonRpcProvider implements CommunityResourcable {\n readonly apiKey: any;\n\n constructor(network?: Networkish, apiKey?: any) {\n logger.checkAbstract(new.target, UrlJsonRpcProvider);\n\n // Normalize the Network and API Key\n network = getStatic<(network: Networkish) => Network>(new.target, \"getNetwork\")(network);\n apiKey = getStatic<(apiKey: string) => string>(new.target, \"getApiKey\")(apiKey);\n\n const connection = getStatic(new.target, \"getUrl\")(network, apiKey);\n\n super(connection, network);\n\n if (typeof(apiKey) === \"string\") {\n defineReadOnly(this, \"apiKey\", apiKey);\n } else if (apiKey != null) {\n Object.keys(apiKey).forEach((key) => {\n defineReadOnly(this, key, apiKey[key]);\n });\n }\n }\n\n _startPending(): void {\n logger.warn(\"WARNING: API provider does not support pending filters\");\n }\n\n isCommunityResource(): boolean {\n return false;\n }\n\n getSigner(address?: string): JsonRpcSigner {\n return logger.throwError(\n \"API provider does not support signing\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { operation: \"getSigner\" }\n );\n }\n\n listAccounts(): Promise> {\n return Promise.resolve([]);\n }\n\n // Return a defaultApiKey if null, otherwise validate the API key\n static getApiKey(apiKey: any): any {\n return apiKey;\n }\n\n // Returns the url or connection for the given network and API key. The\n // API key will have been sanitized by the getApiKey first, so any validation\n // or transformations can be done there.\n static getUrl(network: Network, apiKey: any): string | ConnectionInfo {\n return logger.throwError(\"not implemented; sub-classes must override getUrl\", Logger.errors.NOT_IMPLEMENTED, {\n operation: \"getUrl\"\n });\n }\n}\n", "\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { CommunityResourcable, showThrottleMessage } from \"./formatter\";\nimport { WebSocketProvider } from \"./websocket-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\n// This key was provided to ethers.js by Alchemy to be used by the\n// default provider, but it is recommended that for your own\n// production environments, that you acquire your own API key at:\n// https://dashboard.alchemyapi.io\n\nconst defaultApiKey = \"_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC\"\n\nexport class AlchemyWebSocketProvider extends WebSocketProvider implements CommunityResourcable {\n readonly apiKey: string;\n\n constructor(network?: Networkish, apiKey?: any) {\n const provider = new AlchemyProvider(network, apiKey);\n\n const url = provider.connection.url.replace(/^http/i, \"ws\")\n .replace(\".alchemyapi.\", \".ws.alchemyapi.\");\n\n super(url, provider.network);\n defineReadOnly(this, \"apiKey\", provider.apiKey);\n }\n\n isCommunityResource(): boolean {\n return (this.apiKey === defaultApiKey);\n }\n}\n\nexport class AlchemyProvider extends UrlJsonRpcProvider {\n\n static getWebSocketProvider(network?: Networkish, apiKey?: any): AlchemyWebSocketProvider {\n return new AlchemyWebSocketProvider(network, apiKey);\n }\n\n static getApiKey(apiKey: any): any {\n if (apiKey == null) { return defaultApiKey; }\n if (apiKey && typeof(apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey;\n }\n\n static getUrl(network: Network, apiKey: string): ConnectionInfo {\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"eth-mainnet.alchemyapi.io/v2/\";\n break;\n case \"goerli\":\n host = \"eth-goerli.g.alchemy.com/v2/\";\n break;\n case \"matic\":\n host = \"polygon-mainnet.g.alchemy.com/v2/\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.g.alchemy.com/v2/\";\n break;\n case \"arbitrum\":\n host = \"arb-mainnet.g.alchemy.com/v2/\";\n break;\n case \"arbitrum-goerli\":\n host = \"arb-goerli.g.alchemy.com/v2/\";\n break;\n case \"optimism\":\n host = \"opt-mainnet.g.alchemy.com/v2/\";\n break;\n case \"optimism-goerli\":\n host = \"opt-goerli.g.alchemy.com/v2/\"\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n\n return {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + apiKey),\n throttleCallback: (attempt: number, url: string) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n }\n\n isCommunityResource(): boolean {\n return (this.apiKey === defaultApiKey);\n }\n}\n", "\nimport { Network } from \"@ethersproject/networks\";\n\nimport { showThrottleMessage } from \"./formatter\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport type { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n\nconst defaultApiKey = \"9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972\";\n\nfunction getHost(name: string): string {\n switch (name) {\n case \"homestead\":\n return \"rpc.ankr.com/eth/\";\n case \"ropsten\":\n return \"rpc.ankr.com/eth_ropsten/\";\n case \"rinkeby\":\n return \"rpc.ankr.com/eth_rinkeby/\";\n case \"goerli\":\n return \"rpc.ankr.com/eth_goerli/\";\n\n case \"matic\":\n return \"rpc.ankr.com/polygon/\";\n\n case \"arbitrum\":\n return \"rpc.ankr.com/arbitrum/\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"name\", name);\n}\n\nexport class AnkrProvider extends UrlJsonRpcProvider {\n readonly apiKey: string;\n\n isCommunityResource(): boolean {\n return (this.apiKey === defaultApiKey);\n }\n\n static getApiKey(apiKey: any): any {\n if (apiKey == null) { return defaultApiKey; }\n return apiKey;\n }\n\n static getUrl(network: Network, apiKey: any): ConnectionInfo {\n if (apiKey == null) { apiKey = defaultApiKey; }\n const connection: ConnectionInfo = {\n allowGzip: true,\n url: (\"https:/\\/\" + getHost(network.name) + apiKey),\n throttleCallback: (attempt: number, url: string) => {\n if (apiKey.apiKey === defaultApiKey) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n\n if (apiKey.projectSecret != null) {\n connection.user = \"\";\n connection.password = apiKey.projectSecret\n }\n\n return connection;\n }\n}\n", "\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport class CloudflareProvider extends UrlJsonRpcProvider {\n\n static getApiKey(apiKey: any): any {\n if (apiKey != null) {\n logger.throwArgumentError(\"apiKey not supported for cloudflare\", \"apiKey\", apiKey);\n }\n return null;\n }\n\n static getUrl(network: Network, apiKey?: any): string {\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"https://cloudflare-eth.com/\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n\n return host;\n }\n\n async perform(method: string, params: any): Promise {\n // The Cloudflare provider does not support eth_blockNumber,\n // so we get the latest block and pull it from that\n if (method === \"getBlockNumber\") {\n const block = await super.perform(\"getBlock\", { blockTag: \"latest\" });\n return block.number;\n }\n\n return super.perform(method, params);\n }\n}\n", "\"use strict\";\n\nimport { BlockTag, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { hexlify, hexValue, isHexString } from \"@ethersproject/bytes\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly } from \"@ethersproject/properties\";\nimport { accessListify } from \"@ethersproject/transactions\";\nimport { ConnectionInfo, fetchJson } from \"@ethersproject/web\";\n\nimport { showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BaseProvider } from \"./base-provider\";\n\n\n// The transaction has already been sanitized by the calls in Provider\nfunction getTransactionPostData(transaction: TransactionRequest): Record {\n const result: Record = { };\n for (let key in transaction) {\n if ((transaction)[key] == null) { continue; }\n let value = (transaction)[key];\n if (key === \"type\" && value === 0) { continue; }\n\n // Quantity-types require no leading zero, unless 0\n if (({ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true })[key]) {\n value = hexValue(hexlify(value));\n } else if (key === \"accessList\") {\n value = \"[\" + accessListify(value).map((set) => {\n return `{address:\"${ set.address }\",storageKeys:[\"${ set.storageKeys.join('\",\"') }\"]}`;\n }).join(\",\") + \"]\";\n } else {\n value = hexlify(value);\n }\n result[key] = value;\n }\n return result;\n}\n\nfunction getResult(result: { status?: number, message?: string, result?: any }): any {\n // getLogs, getHistory have weird success responses\n if (result.status == 0 && (result.message === \"No records found\" || result.message === \"No transactions found\")) {\n return result.result;\n }\n\n if (result.status != 1 || typeof(result.message) !== \"string\" || !result.message.match(/^OK/)) {\n const error: any = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n if ((result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n error.throttleRetry = true;\n }\n throw error;\n }\n\n return result.result;\n}\n\nfunction getJsonResult(result: { jsonrpc: string, result?: any, error?: { code?: number, data?: any, message?: string} } ): any {\n // This response indicates we are being throttled\n if (result && (result).status == 0 && (result).message == \"NOTOK\" && (result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n const error: any = new Error(\"throttled response\");\n error.result = JSON.stringify(result);\n error.throttleRetry = true;\n throw error;\n }\n\n if (result.jsonrpc != \"2.0\") {\n // @TODO: not any\n const error: any = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n throw error;\n }\n\n if (result.error) {\n // @TODO: not any\n const error: any = new Error(result.error.message || \"unknown error\");\n if (result.error.code) { error.code = result.error.code; }\n if (result.error.data) { error.data = result.error.data; }\n throw error;\n }\n\n return result.result;\n}\n\n// The blockTag was normalized as a string by the Provider pre-perform operations\nfunction checkLogTag(blockTag: string): number | \"latest\" {\n if (blockTag === \"pending\") { throw new Error(\"pending not supported\"); }\n if (blockTag === \"latest\") { return blockTag; }\n\n return parseInt(blockTag.substring(2), 16);\n}\n\n\nfunction checkError(method: string, error: any, transaction: any): any {\n // Undo the \"convenience\" some nodes are attempting to prevent backwards\n // incompatibility; maybe for v6 consider forwarding reverts as errors\n if (method === \"call\" && error.code === Logger.errors.SERVER_ERROR) {\n const e = error.error;\n\n // Etherscan keeps changing their string\n if (e && (e.message.match(/reverted/i) || e.message.match(/VM execution error/i))) {\n // Etherscan prefixes the data like \"Reverted 0x1234\"\n let data = e.data;\n if (data) { data = \"0x\" + data.replace(/^.*0x/i, \"\"); }\n\n if (isHexString(data)) { return data; }\n\n logger.throwError(\"missing revert data in call exception\", Logger.errors.CALL_EXCEPTION, {\n error, data: \"0x\"\n });\n }\n }\n\n // Get the message from any nested error structure\n let message = error.message;\n if (error.code === Logger.errors.SERVER_ERROR) {\n if (error.error && typeof(error.error.message) === \"string\") {\n message = error.error.message;\n } else if (typeof(error.body) === \"string\") {\n message = error.body;\n } else if (typeof(error.responseText) === \"string\") {\n message = error.responseText;\n }\n }\n message = (message || \"\").toLowerCase();\n\n // \"Insufficient funds. The account you tried to send transaction from does not have enough funds. Required 21464000000000 and got: 0\"\n if (message.match(/insufficient funds/)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.errors.INSUFFICIENT_FUNDS, {\n error, method, transaction\n });\n }\n\n // \"Transaction with the same hash was already imported.\"\n if (message.match(/same hash was already imported|transaction nonce is too low|nonce too low/)) {\n logger.throwError(\"nonce has already been used\", Logger.errors.NONCE_EXPIRED, {\n error, method, transaction\n });\n }\n\n // \"Transaction gas price is too low. There is another transaction with same nonce in the queue. Try increasing the gas price or incrementing the nonce.\"\n if (message.match(/another transaction with same nonce/)) {\n logger.throwError(\"replacement fee too low\", Logger.errors.REPLACEMENT_UNDERPRICED, {\n error, method, transaction\n });\n }\n\n if (message.match(/execution failed due to an exception|execution reverted/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error, method, transaction\n });\n }\n\n throw error;\n}\n\nexport class EtherscanProvider extends BaseProvider{\n readonly baseUrl: string;\n readonly apiKey: string | null;\n\n constructor(network?: Networkish, apiKey?: string) {\n super(network);\n\n defineReadOnly(this, \"baseUrl\", this.getBaseUrl());\n defineReadOnly(this, \"apiKey\", apiKey || null);\n }\n\n getBaseUrl(): string {\n switch(this.network ? this.network.name: \"invalid\") {\n case \"homestead\":\n return \"https:/\\/api.etherscan.io\";\n case \"goerli\":\n return \"https:/\\/api-goerli.etherscan.io\";\n case \"sepolia\":\n return \"https:/\\/api-sepolia.etherscan.io\";\n case \"matic\":\n return \"https:/\\/api.polygonscan.com\";\n case \"maticmum\":\n return \"https:/\\/api-testnet.polygonscan.com\";\n case \"arbitrum\":\n return \"https:/\\/api.arbiscan.io\";\n case \"arbitrum-goerli\":\n return \"https:/\\/api-goerli.arbiscan.io\";\n case \"optimism\":\n return \"https:/\\/api-optimistic.etherscan.io\";\n case \"optimism-goerli\":\n return \"https:/\\/api-goerli-optimistic.etherscan.io\";\n default:\n }\n\n return logger.throwArgumentError(\"unsupported network\", \"network\", this.network.name);\n }\n\n getUrl(module: string, params: Record): string {\n const query = Object.keys(params).reduce((accum, key) => {\n const value = params[key];\n if (value != null) {\n accum += `&${ key }=${ value }`\n }\n return accum\n }, \"\");\n const apiKey = ((this.apiKey) ? `&apikey=${ this.apiKey }`: \"\");\n return `${ this.baseUrl }/api?module=${ module }${ query }${ apiKey }`;\n }\n\n getPostUrl(): string {\n return `${ this.baseUrl }/api`;\n }\n\n getPostData(module: string, params: Record): Record {\n params.module = module;\n params.apikey = this.apiKey;\n return params;\n }\n\n async fetch(module: string, params: Record, post?: boolean): Promise {\n const url = (post ? this.getPostUrl(): this.getUrl(module, params));\n const payload = (post ? this.getPostData(module, params): null);\n const procFunc = (module === \"proxy\") ? getJsonResult: getResult;\n\n this.emit(\"debug\", {\n action: \"request\",\n request: url,\n provider: this\n });\n\n const connection: ConnectionInfo = {\n url: url,\n throttleSlotInterval: 1000,\n throttleCallback: (attempt: number, url: string) => {\n if (this.isCommunityResource()) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n\n let payloadStr: string = null;\n if (payload) {\n connection.headers = { \"content-type\": \"application/x-www-form-urlencoded; charset=UTF-8\" };\n payloadStr = Object.keys(payload).map((key) => {\n return `${ key }=${ payload[key] }`\n }).join(\"&\");\n }\n\n const result = await fetchJson(connection, payloadStr, procFunc || getJsonResult);\n\n this.emit(\"debug\", {\n action: \"response\",\n request: url,\n response: deepCopy(result),\n provider: this\n });\n\n return result;\n }\n\n async detectNetwork(): Promise {\n return this.network;\n }\n\n async perform(method: string, params: any): Promise {\n\n switch (method) {\n case \"getBlockNumber\":\n return this.fetch(\"proxy\", { action: \"eth_blockNumber\" });\n\n case \"getGasPrice\":\n return this.fetch(\"proxy\", { action: \"eth_gasPrice\" });\n\n case \"getBalance\":\n // Returns base-10 result\n return this.fetch(\"account\", {\n action: \"balance\",\n address: params.address,\n tag: params.blockTag\n });\n\n case \"getTransactionCount\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionCount\",\n address: params.address,\n tag: params.blockTag\n });\n\n case \"getCode\":\n return this.fetch(\"proxy\", {\n action: \"eth_getCode\",\n address: params.address,\n tag: params.blockTag\n });\n\n case \"getStorageAt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getStorageAt\",\n address: params.address,\n position: params.position,\n tag: params.blockTag\n });\n\n case \"sendTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_sendRawTransaction\",\n hex: params.signedTransaction\n }, true).catch((error) => {\n return checkError(\"sendTransaction\", error, params.signedTransaction);\n });\n\n case \"getBlock\":\n if (params.blockTag) {\n return this.fetch(\"proxy\", {\n action: \"eth_getBlockByNumber\",\n tag: params.blockTag,\n boolean: (params.includeTransactions ? \"true\": \"false\")\n });\n }\n throw new Error(\"getBlock by blockHash not implemented\");\n\n case \"getTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionByHash\",\n txhash: params.transactionHash\n });\n\n case \"getTransactionReceipt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionReceipt\",\n txhash: params.transactionHash\n });\n\n case \"call\": {\n if (params.blockTag !== \"latest\") {\n throw new Error(\"EtherscanProvider does not support blockTag for call\");\n }\n\n const postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_call\";\n\n try {\n return await this.fetch(\"proxy\", postData, true);\n } catch (error) {\n return checkError(\"call\", error, params.transaction);\n }\n }\n\n case \"estimateGas\": {\n const postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_estimateGas\";\n\n try {\n return await this.fetch(\"proxy\", postData, true);\n } catch (error) {\n return checkError(\"estimateGas\", error, params.transaction);\n }\n }\n\n case \"getLogs\": {\n const args: Record = { action: \"getLogs\" }\n\n if (params.filter.fromBlock) {\n args.fromBlock = checkLogTag(params.filter.fromBlock);\n }\n\n if (params.filter.toBlock) {\n args.toBlock = checkLogTag(params.filter.toBlock);\n }\n\n if (params.filter.address) {\n args.address = params.filter.address;\n }\n\n // @TODO: We can handle slightly more complicated logs using the logs API\n if (params.filter.topics && params.filter.topics.length > 0) {\n if (params.filter.topics.length > 1) {\n logger.throwError(\"unsupported topic count\", Logger.errors.UNSUPPORTED_OPERATION, { topics: params.filter.topics });\n }\n\n if (params.filter.topics.length === 1) {\n const topic0 = params.filter.topics[0];\n if (typeof(topic0) !== \"string\" || topic0.length !== 66) {\n logger.throwError(\"unsupported topic format\", Logger.errors.UNSUPPORTED_OPERATION, { topic0: topic0 });\n }\n args.topic0 = topic0;\n }\n }\n\n const logs: Array = await this.fetch(\"logs\", args);\n\n // Cache txHash => blockHash\n let blocks: { [tag: string]: string } = {};\n\n // Add any missing blockHash to the logs\n for (let i = 0; i < logs.length; i++) {\n const log = logs[i];\n if (log.blockHash != null) { continue; }\n if (blocks[log.blockNumber] == null) {\n const block = await this.getBlock(log.blockNumber);\n if (block) {\n blocks[log.blockNumber] = block.hash;\n }\n }\n log.blockHash = blocks[log.blockNumber];\n }\n\n return logs;\n }\n\n case \"getEtherPrice\":\n if (this.network.name !== \"homestead\") { return 0.0; }\n return parseFloat((await this.fetch(\"stats\", { action: \"ethprice\" })).ethusd);\n\n default:\n break;\n }\n\n return super.perform(method, params);\n }\n\n // Note: The `page` page parameter only allows pagination within the\n // 10,000 window available without a page and offset parameter\n // Error: Result window is too large, PageNo x Offset size must\n // be less than or equal to 10000\n async getHistory(addressOrName: string | Promise, startBlock?: BlockTag, endBlock?: BlockTag): Promise> {\n const params = {\n action: \"txlist\",\n address: (await this.resolveName(addressOrName)),\n startblock: ((startBlock == null) ? 0: startBlock),\n endblock: ((endBlock == null) ? 99999999: endBlock),\n sort: \"asc\"\n };\n\n const result = await this.fetch(\"account\", params);\n\n return result.map((tx: any) => {\n [\"contractAddress\", \"to\"].forEach(function(key) {\n if (tx[key] == \"\") { delete tx[key]; }\n });\n if (tx.creates == null && tx.contractAddress != null) {\n tx.creates = tx.contractAddress;\n }\n const item = this.formatter.transactionResponse(tx);\n if (tx.timeStamp) { item.timestamp = parseInt(tx.timeStamp); }\n return item;\n });\n }\n\n isCommunityResource(): boolean {\n return (this.apiKey == null);\n }\n}\n", "\"use strict\";\n\nimport { Block, BlockWithTransactions, Provider } from \"@ethersproject/abstract-provider\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { Network } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { shuffled } from \"@ethersproject/random\";\nimport { poll } from \"@ethersproject/web\";\n\nimport { BaseProvider } from \"./base-provider\";\nimport { isCommunityResource } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction now() { return (new Date()).getTime(); }\n\n// Returns to network as long as all agree, or null if any is null.\n// Throws an error if any two networks do not match.\nfunction checkNetworks(networks: Array): Network {\n let result = null;\n\n for (let i = 0; i < networks.length; i++) {\n const network = networks[i];\n\n // Null! We do not know our network; bail.\n if (network == null) { return null; }\n\n if (result) {\n // Make sure the network matches the previous networks\n if (!(result.name === network.name && result.chainId === network.chainId &&\n ((result.ensAddress === network.ensAddress) || (result.ensAddress == null && network.ensAddress == null)))) {\n\n logger.throwArgumentError(\"provider mismatch\", \"networks\", networks);\n }\n } else {\n result = network;\n }\n }\n\n return result;\n}\n\nfunction median(values: Array, maxDelta?: number): number {\n values = values.slice().sort();\n const middle = Math.floor(values.length / 2);\n\n // Odd length; take the middle\n if (values.length % 2) {\n return values[middle];\n }\n\n // Even length; take the average of the two middle\n const a = values[middle - 1], b = values[middle];\n\n if (maxDelta != null && Math.abs(a - b) > maxDelta) {\n return null;\n }\n\n return (a + b) / 2;\n}\n\nfunction serialize(value: any): string {\n if (value === null) {\n return \"null\";\n } else if (typeof(value) === \"number\" || typeof(value) === \"boolean\") {\n return JSON.stringify(value);\n } else if (typeof(value) === \"string\") {\n return value;\n } else if (BigNumber.isBigNumber(value)) {\n return value.toString();\n } else if (Array.isArray(value)) {\n return JSON.stringify(value.map((i) => serialize(i)));\n } else if (typeof(value) === \"object\") {\n const keys = Object.keys(value);\n keys.sort();\n return \"{\" + keys.map((key) => {\n let v = value[key];\n if (typeof(v) === \"function\") {\n v = \"[function]\";\n } else {\n v = serialize(v);\n }\n return JSON.stringify(key) + \":\" + v;\n }).join(\",\") + \"}\";\n }\n\n throw new Error(\"unknown value type: \" + typeof(value));\n}\n\n// Next request ID to use for emitting debug info\nlet nextRid = 1;\n\n\nexport interface FallbackProviderConfig {\n // The Provider\n provider: Provider;\n\n // The priority to favour this Provider; lower values are used first (higher priority)\n priority?: number;\n\n // Timeout before also triggering the next provider; this does not stop\n // this provider and if its result comes back before a quorum is reached\n // it will be incorporated into the vote\n // - lower values will cause more network traffic but may result in a\n // faster result.\n stallTimeout?: number;\n\n // How much this provider contributes to the quorum; sometimes a specific\n // provider may be more reliable or trustworthy than others, but usually\n // this should be left as the default\n weight?: number;\n};\n\n// A Staller is used to provide a delay to give a Provider a chance to response\n// before asking the next Provider to try.\ntype Staller = {\n wait: (func: () => void) => Promise\n getPromise: () => Promise,\n cancel: () => void\n};\n\nfunction stall(duration: number): Staller {\n let cancel: () => void = null;\n\n let timer: NodeJS.Timer = null;\n let promise = >(new Promise((resolve) => {\n cancel = function() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n resolve();\n }\n timer = setTimeout(cancel, duration);\n }));\n\n const wait = (func: () => void) => {\n promise = promise.then(func);\n return promise;\n }\n\n function getPromise(): Promise {\n return promise;\n }\n\n return { cancel, getPromise, wait };\n}\n\nconst ForwardErrors = [\n Logger.errors.CALL_EXCEPTION,\n Logger.errors.INSUFFICIENT_FUNDS,\n Logger.errors.NONCE_EXPIRED,\n Logger.errors.REPLACEMENT_UNDERPRICED,\n Logger.errors.UNPREDICTABLE_GAS_LIMIT\n];\n\nconst ForwardProperties = [\n \"address\",\n \"args\",\n \"errorArgs\",\n \"errorSignature\",\n \"method\",\n \"transaction\",\n];\n\n\n// @TODO: Make this an object with staller and cancel built-in\ninterface RunningConfig extends FallbackProviderConfig {\n start?: number;\n done?: boolean;\n cancelled?: boolean;\n runner?: Promise;\n staller?: Staller;\n result?: any;\n error?: Error;\n};\n\nfunction exposeDebugConfig(config: RunningConfig, now?: number): any {\n const result: any = {\n weight: config.weight\n };\n Object.defineProperty(result, \"provider\", { get: () => config.provider });\n if (config.start) { result.start = config.start; }\n if (now) { result.duration = (now - config.start); }\n if (config.done) {\n if (config.error) {\n result.error = config.error;\n } else {\n result.result = config.result || null;\n }\n }\n return result;\n}\n\nfunction normalizedTally(normalize: (value: any) => string, quorum: number): (configs: Array) => any {\n return function(configs: Array): any {\n\n // Count the votes for each result\n const tally: { [ key: string]: { count: number, result: any } } = { };\n configs.forEach((c) => {\n const value = normalize(c.result);\n if (!tally[value]) { tally[value] = { count: 0, result: c.result }; }\n tally[value].count++;\n });\n\n // Check for a quorum on any given result\n const keys = Object.keys(tally);\n for (let i = 0; i < keys.length; i++) {\n const check = tally[keys[i]];\n if (check.count >= quorum) {\n return check.result;\n }\n }\n\n // No quroum\n return undefined;\n }\n}\nfunction getProcessFunc(provider: FallbackProvider, method: string, params: { [ key: string ]: any }): (configs: Array) => any {\n\n let normalize = serialize;\n\n switch (method) {\n case \"getBlockNumber\":\n // Return the median value, unless there is (median + 1) is also\n // present, in which case that is probably true and the median\n // is going to be stale soon. In the event of a malicious node,\n // the lie will be true soon enough.\n return function(configs: Array): number {\n const values = configs.map((c) => c.result);\n\n // Get the median block number\n let blockNumber = median(configs.map((c) => c.result), 2);\n if (blockNumber == null) { return undefined; }\n\n blockNumber = Math.ceil(blockNumber);\n\n // If the next block height is present, its prolly safe to use\n if (values.indexOf(blockNumber + 1) >= 0) { blockNumber++; }\n\n // Don't ever roll back the blockNumber\n if (blockNumber >= provider._highestBlockNumber) {\n provider._highestBlockNumber = blockNumber;\n }\n\n return provider._highestBlockNumber;\n };\n\n case \"getGasPrice\":\n // Return the middle (round index up) value, similar to median\n // but do not average even entries and choose the higher.\n // Malicious actors must compromise 50% of the nodes to lie.\n return function(configs: Array): BigNumber {\n const values = configs.map((c) => c.result);\n values.sort();\n return values[Math.floor(values.length / 2)];\n }\n\n case \"getEtherPrice\":\n // Returns the median price. Malicious actors must compromise at\n // least 50% of the nodes to lie (in a meaningful way).\n return function(configs: Array): number {\n return median(configs.map((c) => c.result));\n }\n\n // No additional normalizing required; serialize is enough\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n case \"getStorageAt\":\n case \"call\":\n case \"estimateGas\":\n case \"getLogs\":\n break;\n\n // We drop the confirmations from transactions as it is approximate\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n normalize = function(tx: any): string {\n if (tx == null) { return null; }\n\n tx = shallowCopy(tx);\n tx.confirmations = -1;\n return serialize(tx);\n }\n break;\n\n // We drop the confirmations from transactions as it is approximate\n case \"getBlock\":\n // We drop the confirmations from transactions as it is approximate\n if (params.includeTransactions) {\n normalize = function(block: BlockWithTransactions): string {\n if (block == null) { return null; }\n\n block = shallowCopy(block);\n block.transactions = block.transactions.map((tx) => {\n tx = shallowCopy(tx);\n tx.confirmations = -1;\n return tx;\n });\n return serialize(block);\n };\n } else {\n normalize = function(block: Block): string {\n if (block == null) { return null; }\n return serialize(block);\n }\n }\n break;\n\n default:\n throw new Error(\"unknown method: \" + method);\n }\n\n // Return the result if and only if the expected quorum is\n // satisfied and agreed upon for the final result.\n return normalizedTally(normalize, provider.quorum);\n\n}\n\n// If we are doing a blockTag query, we need to make sure the backend is\n// caught up to the FallbackProvider, before sending a request to it.\nasync function waitForSync(config: RunningConfig, blockNumber: number): Promise {\n const provider = (config.provider);\n\n if ((provider.blockNumber != null && provider.blockNumber >= blockNumber) || blockNumber === -1) {\n return provider;\n }\n\n return poll(() => {\n return new Promise((resolve, reject) => {\n setTimeout(function() {\n\n // We are synced\n if (provider.blockNumber >= blockNumber) { return resolve(provider); }\n\n // We're done; just quit\n if (config.cancelled) { return resolve(null); }\n\n // Try again, next block\n return resolve(undefined);\n }, 0);\n });\n }, { oncePoll: provider });\n}\n\nasync function getRunner(config: RunningConfig, currentBlockNumber: number, method: string, params: { [ key: string]: any }): Promise {\n let provider = config.provider;\n\n switch (method) {\n case \"getBlockNumber\":\n case \"getGasPrice\":\n return provider[method]();\n case \"getEtherPrice\":\n if ((provider).getEtherPrice) {\n return (provider).getEtherPrice();\n }\n break;\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider[method](params.address, params.blockTag || \"latest\");\n case \"getStorageAt\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider.getStorageAt(params.address, params.position, params.blockTag || \"latest\");\n case \"getBlock\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider[(params.includeTransactions ? \"getBlockWithTransactions\": \"getBlock\")](params.blockTag || params.blockHash);\n case \"call\":\n case \"estimateGas\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n if (method === \"call\" && params.blockTag) {\n return provider[method](params.transaction, params.blockTag);\n }\n return provider[method](params.transaction);\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n return provider[method](params.transactionHash);\n case \"getLogs\": {\n let filter = params.filter;\n if ((filter.fromBlock && isHexString(filter.fromBlock)) || (filter.toBlock && isHexString(filter.toBlock))) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider.getLogs(filter);\n }\n }\n\n return logger.throwError(\"unknown method error\", Logger.errors.UNKNOWN_ERROR, {\n method: method,\n params: params\n });\n}\n\nexport class FallbackProvider extends BaseProvider {\n readonly providerConfigs: ReadonlyArray;\n readonly quorum: number;\n\n // Due to the highly asyncronous nature of the blockchain, we need\n // to make sure we never unroll the blockNumber due to our random\n // sample of backends\n _highestBlockNumber: number;\n\n constructor(providers: Array, quorum?: number) {\n if (providers.length === 0) {\n logger.throwArgumentError(\"missing providers\", \"providers\", providers);\n }\n\n const providerConfigs: Array = providers.map((configOrProvider, index) => {\n if (Provider.isProvider(configOrProvider)) {\n const stallTimeout = isCommunityResource(configOrProvider) ? 2000: 750;\n const priority = 1;\n return Object.freeze({ provider: configOrProvider, weight: 1, stallTimeout, priority });\n }\n\n const config: FallbackProviderConfig = shallowCopy(configOrProvider);\n\n if (config.priority == null) { config.priority = 1; }\n if (config.stallTimeout == null) {\n config.stallTimeout = isCommunityResource(configOrProvider) ? 2000: 750;\n }\n if (config.weight == null) { config.weight = 1; }\n\n const weight = config.weight;\n if (weight % 1 || weight > 512 || weight < 1) {\n logger.throwArgumentError(\"invalid weight; must be integer in [1, 512]\", `providers[${ index }].weight`, weight);\n }\n\n return Object.freeze(config);\n });\n\n const total = providerConfigs.reduce((accum, c) => (accum + c.weight), 0);\n\n if (quorum == null) {\n quorum = total / 2;\n } else if (quorum > total) {\n logger.throwArgumentError(\"quorum will always fail; larger than total weight\", \"quorum\", quorum);\n }\n\n // Are all providers' networks are known\n let networkOrReady: Network | Promise = checkNetworks(providerConfigs.map((c) => ((c.provider)).network));\n\n // Not all networks are known; we must stall\n if (networkOrReady == null) {\n networkOrReady = new Promise((resolve, reject) => {\n setTimeout(() => {\n this.detectNetwork().then(resolve, reject);\n }, 0);\n });\n }\n\n super(networkOrReady);\n\n // Preserve a copy, so we do not get mutated\n defineReadOnly(this, \"providerConfigs\", Object.freeze(providerConfigs));\n defineReadOnly(this, \"quorum\", quorum);\n\n this._highestBlockNumber = -1;\n }\n\n async detectNetwork(): Promise {\n const networks = await Promise.all(this.providerConfigs.map((c) => c.provider.getNetwork()));\n return checkNetworks(networks);\n }\n\n async perform(method: string, params: { [name: string]: any }): Promise {\n // Sending transactions is special; always broadcast it to all backends\n if (method === \"sendTransaction\") {\n const results: Array = await Promise.all(this.providerConfigs.map((c) => {\n return c.provider.sendTransaction(params.signedTransaction).then((result) => {\n return result.hash;\n }, (error) => {\n return error;\n });\n }));\n\n // Any success is good enough (other errors are likely \"already seen\" errors\n for (let i = 0; i < results.length; i++) {\n const result = results[i];\n if (typeof(result) === \"string\") { return result; }\n }\n\n // They were all an error; pick the first error\n throw results[0];\n }\n\n // We need to make sure we are in sync with our backends, so we need\n // to know this before we can make a lot of calls\n if (this._highestBlockNumber === -1 && method !== \"getBlockNumber\") {\n await this.getBlockNumber();\n }\n\n const processFunc = getProcessFunc(this, method, params);\n\n // Shuffle the providers and then sort them by their priority; we\n // shallowCopy them since we will store the result in them too\n const configs: Array = shuffled(this.providerConfigs.map(shallowCopy));\n configs.sort((a, b) => (a.priority - b.priority));\n\n const currentBlockNumber = this._highestBlockNumber;\n\n let i = 0;\n let first = true;\n while (true) {\n const t0 = now();\n\n // Compute the inflight weight (exclude anything past)\n let inflightWeight = configs.filter((c) => (c.runner && ((t0 - c.start) < c.stallTimeout)))\n .reduce((accum, c) => (accum + c.weight), 0);\n\n // Start running enough to meet quorum\n while (inflightWeight < this.quorum && i < configs.length) {\n const config = configs[i++];\n\n const rid = nextRid++;\n\n config.start = now();\n config.staller = stall(config.stallTimeout);\n config.staller.wait(() => { config.staller = null; });\n\n config.runner = getRunner(config, currentBlockNumber, method, params).then((result) => {\n config.done = true;\n config.result = result;\n\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, now()),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n\n }, (error) => {\n config.done = true;\n config.error = error;\n\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, now()),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n });\n\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, null),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n\n inflightWeight += config.weight;\n }\n\n // Wait for anything meaningful to finish or stall out\n const waiting: Array> = [ ];\n configs.forEach((c) => {\n if (c.done || !c.runner) { return; }\n waiting.push(c.runner);\n if (c.staller) { waiting.push(c.staller.getPromise()); }\n });\n\n if (waiting.length) { await Promise.race(waiting); }\n\n // Check the quorum and process the results; the process function\n // may additionally decide the quorum is not met\n const results = configs.filter((c) => (c.done && c.error == null));\n if (results.length >= this.quorum) {\n const result = processFunc(results);\n if (result !== undefined) {\n // Shut down any stallers\n configs.forEach(c => {\n if (c.staller) { c.staller.cancel(); }\n c.cancelled = true;\n });\n return result;\n }\n if (!first) { await stall(100).getPromise(); }\n first = false;\n }\n\n // No result, check for errors that should be forwarded\n const errors = configs.reduce((accum, c) => {\n if (!c.done || c.error == null) { return accum; }\n\n const code = ((c.error)).code;\n if (ForwardErrors.indexOf(code) >= 0) {\n if (!accum[code]) { accum[code] = { error: c.error, weight: 0 }; }\n accum[code].weight += c.weight;\n }\n\n return accum;\n }, <{ [ code: string ]: { error: Error, weight: number } }>({ }));\n\n Object.keys(errors).forEach((errorCode: string) => {\n const tally = errors[errorCode];\n if (tally.weight < this.quorum) { return; }\n\n // Shut down any stallers\n configs.forEach(c => {\n if (c.staller) { c.staller.cancel(); }\n c.cancelled = true;\n });\n\n const e = (tally.error);\n\n const props: { [ name: string ]: any } = { };\n ForwardProperties.forEach((name) => {\n if (e[name] == null) { return; }\n props[name] = e[name];\n });\n\n logger.throwError(e.reason || e.message, errorCode, props);\n });\n\n // All configs have run to completion; we will never get more data\n if (configs.filter((c) => !c.done).length === 0) { break; }\n }\n\n // Shut down any stallers; shouldn't be any\n configs.forEach(c => {\n if (c.staller) { c.staller.cancel(); }\n c.cancelled = true;\n });\n\n return logger.throwError(\"failed to meet quorum\", Logger.errors.SERVER_ERROR, {\n method: method,\n params: params,\n //results: configs.map((c) => c.result),\n //errors: configs.map((c) => c.error),\n results: configs.map((c) => exposeDebugConfig(c)),\n provider: this\n });\n }\n}\n", "\"use strict\";\n\nimport { connect } from \"net\";\n\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Networkish } from \"@ethersproject/networks\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n\n\nexport class IpcProvider extends JsonRpcProvider {\n readonly path: string;\n\n constructor(path: string, network?: Networkish) {\n if (path == null) {\n logger.throwError(\"missing path\", Logger.errors.MISSING_ARGUMENT, { arg: \"path\" });\n }\n\n super(\"ipc://\" + path, network);\n\n defineReadOnly(this, \"path\", path);\n }\n\n // @TODO: Create a connection to the IPC path and use filters instead of polling for block\n\n send(method: string, params: Array): Promise {\n // This method is very simple right now. We create a new socket\n // connection each time, which may be slower, but the main\n // advantage we are aiming for now is security. This simplifies\n // multiplexing requests (since we do not need to multiplex).\n\n let payload = JSON.stringify({\n method: method,\n params: params,\n id: 42,\n jsonrpc: \"2.0\"\n });\n\n return new Promise((resolve, reject) => {\n let response = Buffer.alloc(0);\n\n let stream = connect(this.path);\n\n stream.on(\"data\", (data) => {\n response = Buffer.concat([ response, data ]);\n });\n\n stream.on(\"end\", () => {\n try {\n resolve(JSON.parse(response.toString()).result);\n // @TODO: Better pull apart the error\n stream.destroy();\n } catch (error) {\n reject(error);\n stream.destroy();\n }\n });\n\n stream.on(\"error\", (error) => {\n reject(error);\n stream.destroy();\n });\n\n stream.write(payload);\n stream.end();\n });\n }\n}\n", "\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { CommunityResourcable, showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\n\nconst defaultProjectId = \"84842078b09946638c03157f83405213\"\n\nexport class InfuraWebSocketProvider extends WebSocketProvider implements CommunityResourcable {\n readonly apiKey: string;\n readonly projectId: string;\n readonly projectSecret: string;\n\n constructor(network?: Networkish, apiKey?: any) {\n const provider = new InfuraProvider(network, apiKey);\n const connection = provider.connection;\n if (connection.password) {\n logger.throwError(\"INFURA WebSocket project secrets unsupported\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"InfuraProvider.getWebSocketProvider()\"\n });\n }\n\n const url = connection.url.replace(/^http/i, \"ws\").replace(\"/v3/\", \"/ws/v3/\");\n super(url, network);\n\n defineReadOnly(this, \"apiKey\", provider.projectId);\n defineReadOnly(this, \"projectId\", provider.projectId);\n defineReadOnly(this, \"projectSecret\", provider.projectSecret);\n }\n\n isCommunityResource(): boolean {\n return (this.projectId === defaultProjectId);\n }\n}\n\nexport class InfuraProvider extends UrlJsonRpcProvider {\n readonly projectId: string;\n readonly projectSecret: string;\n\n static getWebSocketProvider(network?: Networkish, apiKey?: any): InfuraWebSocketProvider {\n return new InfuraWebSocketProvider(network, apiKey);\n }\n\n static getApiKey(apiKey: any): any {\n const apiKeyObj: { apiKey: string, projectId: string, projectSecret: string } = {\n apiKey: defaultProjectId,\n projectId: defaultProjectId,\n projectSecret: null\n };\n\n if (apiKey == null) { return apiKeyObj; }\n\n if (typeof(apiKey) === \"string\") {\n apiKeyObj.projectId = apiKey;\n\n } else if (apiKey.projectSecret != null) {\n logger.assertArgument((typeof(apiKey.projectId) === \"string\"),\n \"projectSecret requires a projectId\", \"projectId\", apiKey.projectId);\n logger.assertArgument((typeof(apiKey.projectSecret) === \"string\"),\n \"invalid projectSecret\", \"projectSecret\", \"[REDACTED]\");\n\n apiKeyObj.projectId = apiKey.projectId;\n apiKeyObj.projectSecret = apiKey.projectSecret;\n\n } else if (apiKey.projectId) {\n apiKeyObj.projectId = apiKey.projectId;\n }\n\n apiKeyObj.apiKey = apiKeyObj.projectId;\n\n return apiKeyObj;\n }\n\n static getUrl(network: Network, apiKey: any): ConnectionInfo {\n let host: string = null;\n switch(network ? network.name: \"unknown\") {\n case \"homestead\":\n host = \"mainnet.infura.io\";\n break;\n case \"goerli\":\n host = \"goerli.infura.io\";\n break;\n case \"sepolia\":\n host = \"sepolia.infura.io\";\n break;\n case \"matic\":\n host = \"polygon-mainnet.infura.io\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.infura.io\";\n break;\n case \"optimism\":\n host = \"optimism-mainnet.infura.io\";\n break;\n case \"optimism-goerli\":\n host = \"optimism-goerli.infura.io\";\n break;\n case \"arbitrum\":\n host = \"arbitrum-mainnet.infura.io\";\n break;\n case \"arbitrum-goerli\":\n host = \"arbitrum-goerli.infura.io\";\n break;\n default:\n logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n\n const connection: ConnectionInfo = {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + \"/v3/\" + apiKey.projectId),\n throttleCallback: (attempt: number, url: string) => {\n if (apiKey.projectId === defaultProjectId) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n\n if (apiKey.projectSecret != null) {\n connection.user = \"\";\n connection.password = apiKey.projectSecret\n }\n\n return connection;\n }\n\n isCommunityResource(): boolean {\n return (this.projectId === defaultProjectId);\n }\n}\n", "\nimport { deepCopy } from \"@ethersproject/properties\";\nimport { fetchJson } from \"@ethersproject/web\";\n\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n\n// Experimental\n\nexport class JsonRpcBatchProvider extends JsonRpcProvider {\n _pendingBatchAggregator: NodeJS.Timer;\n _pendingBatch: Array<{\n request: { method: string, params: Array, id: number, jsonrpc: \"2.0\" },\n resolve: (result: any) => void,\n reject: (error: Error) => void\n }>;\n\n send(method: string, params: Array): Promise {\n const request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n\n if (this._pendingBatch == null) {\n this._pendingBatch = [ ];\n }\n\n const inflightRequest: any = { request, resolve: null, reject: null };\n\n const promise = new Promise((resolve, reject) => {\n inflightRequest.resolve = resolve;\n inflightRequest.reject = reject;\n });\n\n this._pendingBatch.push(inflightRequest);\n\n if (!this._pendingBatchAggregator) {\n // Schedule batch for next event loop + short duration\n this._pendingBatchAggregator = setTimeout(() => {\n\n // Get teh current batch and clear it, so new requests\n // go into the next batch\n const batch = this._pendingBatch;\n this._pendingBatch = null;\n this._pendingBatchAggregator = null;\n\n // Get the request as an array of requests\n const request = batch.map((inflight) => inflight.request);\n\n this.emit(\"debug\", {\n action: \"requestBatch\",\n request: deepCopy(request),\n provider: this\n });\n\n return fetchJson(this.connection, JSON.stringify(request)).then((result) => {\n this.emit(\"debug\", {\n action: \"response\",\n request: request,\n response: result,\n provider: this\n });\n\n // For each result, feed it to the correct Promise, depending\n // on whether it was a success or error\n batch.forEach((inflightRequest, index) => {\n const payload = result[index];\n if (payload.error) {\n const error = new Error(payload.error.message);\n (error).code = payload.error.code;\n (error).data = payload.error.data;\n inflightRequest.reject(error);\n } else {\n inflightRequest.resolve(payload.result);\n }\n });\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: this\n });\n\n batch.forEach((inflightRequest) => {\n inflightRequest.reject(error);\n });\n });\n\n }, 10);\n }\n\n return promise;\n }\n}\n", "/* istanbul ignore file */\n\n\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n// Special API key provided by Nodesmith for ethers.js\nconst defaultApiKey = \"ETHERS_JS_SHARED\";\n\nexport class NodesmithProvider extends UrlJsonRpcProvider {\n\n static getApiKey(apiKey: any): any {\n if (apiKey && typeof(apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey || defaultApiKey;\n }\n\n static getUrl(network: Network, apiKey?: any): string {\n logger.warn(\"NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.\");\n\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc\";\n break;\n case \"ropsten\":\n host = \"https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc\";\n break;\n case \"rinkeby\":\n host = \"https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc\";\n break;\n case \"goerli\":\n host = \"https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc\";\n break;\n case \"kovan\":\n host = \"https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n\n return (host + \"?apiKey=\" + apiKey);\n }\n}\n", "\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nconst defaultApplicationId = \"62e1ad51b37b8e00394bda3b\";\n\n\nexport class PocketProvider extends UrlJsonRpcProvider {\n readonly applicationId: string;\n readonly applicationSecretKey: string;\n readonly loadBalancer: boolean;\n\n static getApiKey(apiKey: any): any {\n const apiKeyObj: { applicationId: string, applicationSecretKey: string, loadBalancer: boolean } = {\n applicationId: null,\n loadBalancer: true,\n applicationSecretKey: null\n };\n\n // Parse applicationId and applicationSecretKey\n if (apiKey == null) {\n apiKeyObj.applicationId = defaultApplicationId;\n\n } else if (typeof (apiKey) === \"string\") {\n apiKeyObj.applicationId = apiKey;\n\n } else if (apiKey.applicationSecretKey != null) {\n apiKeyObj.applicationId = apiKey.applicationId;\n apiKeyObj.applicationSecretKey = apiKey.applicationSecretKey;\n\n } else if (apiKey.applicationId) {\n apiKeyObj.applicationId = apiKey.applicationId;\n\n } else {\n logger.throwArgumentError(\"unsupported PocketProvider apiKey\", \"apiKey\", apiKey);\n }\n\n return apiKeyObj;\n }\n\n static getUrl(network: Network, apiKey: any): ConnectionInfo {\n let host: string = null;\n switch (network ? network.name : \"unknown\") {\n case \"goerli\":\n host = \"eth-goerli.gateway.pokt.network\";\n break;\n case \"homestead\":\n host = \"eth-mainnet.gateway.pokt.network\";\n break;\n case \"kovan\":\n host = \"poa-kovan.gateway.pokt.network\";\n break;\n case \"matic\":\n host = \"poly-mainnet.gateway.pokt.network\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai-rpc.gateway.pokt.network\";\n break;\n case \"rinkeby\":\n host = \"eth-rinkeby.gateway.pokt.network\";\n break;\n case \"ropsten\":\n host = \"eth-ropsten.gateway.pokt.network\";\n break;\n default:\n logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n\n const url = `https:/\\/${ host }/v1/lb/${ apiKey.applicationId }`\n\n const connection: ConnectionInfo = { headers: { }, url };\n if (apiKey.applicationSecretKey != null) {\n connection.user = \"\";\n connection.password = apiKey.applicationSecretKey\n }\n\n return connection;\n }\n\n isCommunityResource(): boolean {\n return (this.applicationId === defaultApplicationId);\n }\n}\n", "\"use strict\";\n\nimport { Networkish } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n\n// Exported Types\nexport type ExternalProvider = {\n isMetaMask?: boolean;\n isStatus?: boolean;\n host?: string;\n path?: string;\n sendAsync?: (request: { method: string, params?: Array }, callback: (error: any, response: any) => void) => void\n send?: (request: { method: string, params?: Array }, callback: (error: any, response: any) => void) => void\n request?: (request: { method: string, params?: Array }) => Promise\n}\n\nlet _nextId = 1;\n\nexport type JsonRpcFetchFunc = (method: string, params?: Array) => Promise;\n\ntype Web3LegacySend = (request: any, callback: (error: Error, response: any) => void) => void;\n\nfunction buildWeb3LegacyFetcher(provider: ExternalProvider, sendFunc: Web3LegacySend) : JsonRpcFetchFunc {\n const fetcher = \"Web3LegacyFetcher\";\n\n return function(method: string, params: Array): Promise {\n const request = {\n method: method,\n params: params,\n id: (_nextId++),\n jsonrpc: \"2.0\"\n };\n\n return new Promise((resolve, reject) => {\n this.emit(\"debug\", {\n action: \"request\",\n fetcher,\n request: deepCopy(request),\n provider: this\n });\n\n sendFunc(request, (error, response) => {\n\n if (error) {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher,\n error,\n request,\n provider: this\n });\n\n return reject(error);\n }\n\n this.emit(\"debug\", {\n action: \"response\",\n fetcher,\n request,\n response,\n provider: this\n });\n\n if (response.error) {\n const error = new Error(response.error.message);\n (error).code = response.error.code;\n (error).data = response.error.data;\n return reject(error);\n }\n\n resolve(response.result);\n });\n });\n }\n}\n\nfunction buildEip1193Fetcher(provider: ExternalProvider): JsonRpcFetchFunc {\n return function(method: string, params: Array): Promise {\n if (params == null) { params = [ ]; }\n\n const request = { method, params };\n\n this.emit(\"debug\", {\n action: \"request\",\n fetcher: \"Eip1193Fetcher\",\n request: deepCopy(request),\n provider: this\n });\n\n return provider.request(request).then((response) => {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher: \"Eip1193Fetcher\",\n request,\n response,\n provider: this\n });\n\n return response;\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher: \"Eip1193Fetcher\",\n request,\n error,\n provider: this\n });\n\n throw error;\n });\n }\n}\n\nexport class Web3Provider extends JsonRpcProvider {\n readonly provider: ExternalProvider;\n readonly jsonRpcFetchFunc: JsonRpcFetchFunc;\n\n constructor(provider: ExternalProvider | JsonRpcFetchFunc, network?: Networkish) {\n if (provider == null) {\n logger.throwArgumentError(\"missing provider\", \"provider\", provider);\n }\n\n let path: string = null;\n let jsonRpcFetchFunc: JsonRpcFetchFunc = null;\n let subprovider: ExternalProvider = null;\n\n if (typeof(provider) === \"function\") {\n path = \"unknown:\";\n jsonRpcFetchFunc = provider;\n\n } else {\n path = provider.host || provider.path || \"\";\n if (!path && provider.isMetaMask) {\n path = \"metamask\";\n }\n\n subprovider = provider;\n\n if (provider.request) {\n if (path === \"\") { path = \"eip-1193:\"; }\n jsonRpcFetchFunc = buildEip1193Fetcher(provider);\n } else if (provider.sendAsync) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.sendAsync.bind(provider));\n } else if (provider.send) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.send.bind(provider));\n } else {\n logger.throwArgumentError(\"unsupported provider\", \"provider\", provider);\n }\n\n if (!path) { path = \"unknown:\"; }\n }\n\n super(path, network);\n\n defineReadOnly(this, \"jsonRpcFetchFunc\", jsonRpcFetchFunc);\n defineReadOnly(this, \"provider\", subprovider);\n }\n\n send(method: string, params: Array): Promise {\n return this.jsonRpcFetchFunc(method, params);\n }\n}\n", "\"use strict\";\n\nimport {\n Block,\n BlockTag,\n EventType,\n FeeData,\n Filter,\n Log,\n Listener,\n Provider,\n TransactionReceipt,\n TransactionRequest,\n TransactionResponse\n} from \"@ethersproject/abstract-provider\";\n\nimport { getNetwork } from \"@ethersproject/networks\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\n\nimport { BaseProvider, EnsProvider, EnsResolver, Resolver } from \"./base-provider\";\n\nimport { AlchemyProvider, AlchemyWebSocketProvider } from \"./alchemy-provider\";\nimport { AnkrProvider } from \"./ankr-provider\";\nimport { CloudflareProvider } from \"./cloudflare-provider\";\nimport { EtherscanProvider } from \"./etherscan-provider\";\nimport { FallbackProvider, FallbackProviderConfig } from \"./fallback-provider\";\nimport { IpcProvider } from \"./ipc-provider\";\nimport { InfuraProvider, InfuraWebSocketProvider } from \"./infura-provider\";\nimport { JsonRpcProvider, JsonRpcSigner } from \"./json-rpc-provider\";\nimport { JsonRpcBatchProvider } from \"./json-rpc-batch-provider\";\nimport { NodesmithProvider } from \"./nodesmith-provider\";\nimport { PocketProvider } from \"./pocket-provider\";\nimport { StaticJsonRpcProvider, UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\nimport { Web3Provider } from \"./web3-provider\";\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { ExternalProvider, JsonRpcFetchFunc } from \"./web3-provider\";\n\nimport { CommunityResourcable, Formatter, isCommunityResourcable, isCommunityResource, showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n////////////////////////\n// Helper Functions\n\nfunction getDefaultProvider(network?: Networkish, options?: any): BaseProvider {\n if (network == null) { network = \"homestead\"; }\n\n // If passed a URL, figure out the right type of provider based on the scheme\n if (typeof(network) === \"string\") {\n // @TODO: Add support for IpcProvider; maybe if it ends in \".ipc\"?\n\n // Handle http and ws (and their secure variants)\n const match = network.match(/^(ws|http)s?:/i);\n if (match) {\n switch (match[1].toLowerCase()) {\n case \"http\": case \"https\":\n return new JsonRpcProvider(network);\n case \"ws\": case \"wss\":\n return new WebSocketProvider(network);\n default:\n logger.throwArgumentError(\"unsupported URL scheme\", \"network\", network);\n }\n }\n }\n\n const n = getNetwork(network);\n if (!n || !n._defaultProvider) {\n logger.throwError(\"unsupported getDefaultProvider network\", Logger.errors.NETWORK_ERROR, {\n operation: \"getDefaultProvider\",\n network: network\n });\n }\n\n return n._defaultProvider({\n FallbackProvider,\n\n AlchemyProvider,\n AnkrProvider,\n CloudflareProvider,\n EtherscanProvider,\n InfuraProvider,\n JsonRpcProvider,\n NodesmithProvider,\n PocketProvider,\n Web3Provider,\n\n IpcProvider,\n }, options);\n}\n\n////////////////////////\n// Exports\n\nexport {\n\n // Abstract Providers (or Abstract-ish)\n Provider,\n BaseProvider,\n\n Resolver,\n\n UrlJsonRpcProvider,\n\n ///////////////////////\n // Concrete Providers\n\n FallbackProvider,\n\n AlchemyProvider,\n AlchemyWebSocketProvider,\n AnkrProvider,\n CloudflareProvider,\n EtherscanProvider,\n InfuraProvider,\n InfuraWebSocketProvider,\n JsonRpcProvider,\n JsonRpcBatchProvider,\n NodesmithProvider,\n PocketProvider,\n StaticJsonRpcProvider,\n Web3Provider,\n WebSocketProvider,\n\n IpcProvider,\n\n\n ///////////////////////\n // Signer\n\n JsonRpcSigner,\n\n\n ///////////////////////\n // Functions\n\n getDefaultProvider,\n getNetwork,\n isCommunityResource,\n isCommunityResourcable,\n showThrottleMessage,\n\n\n ///////////////////////\n // Objects\n\n Formatter,\n\n\n ///////////////////////\n // Types\n\n Block,\n BlockTag,\n EventType,\n FeeData,\n Filter,\n Log,\n Listener,\n TransactionReceipt,\n TransactionRequest,\n TransactionResponse,\n\n ExternalProvider,\n JsonRpcFetchFunc,\n\n FallbackProviderConfig,\n\n Network,\n Networkish,\n\n EnsProvider,\n EnsResolver,\n\n CommunityResourcable\n};\n\n", "export const version = \"solidity/5.7.0\";\n", "\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, concat, hexlify, zeroPad } from \"@ethersproject/bytes\";\nimport { keccak256 as hashKeccak256 } from \"@ethersproject/keccak256\";\nimport { sha256 as hashSha256 } from \"@ethersproject/sha2\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nconst regexBytes = new RegExp(\"^bytes([0-9]+)$\");\nconst regexNumber = new RegExp(\"^(u?int)([0-9]*)$\");\nconst regexArray = new RegExp(\"^(.*)\\\\[([0-9]*)\\\\]$\");\n\nconst Zeros = \"0000000000000000000000000000000000000000000000000000000000000000\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n\nfunction _pack(type: string, value: any, isArray?: boolean): Uint8Array {\n switch(type) {\n case \"address\":\n if (isArray) { return zeroPad(value, 32); }\n return arrayify(value);\n case \"string\":\n return toUtf8Bytes(value);\n case \"bytes\":\n return arrayify(value);\n case \"bool\":\n value = (value ? \"0x01\": \"0x00\");\n if (isArray) { return zeroPad(value, 32); }\n return arrayify(value);\n }\n\n let match = type.match(regexNumber);\n if (match) {\n //let signed = (match[1] === \"int\")\n let size = parseInt(match[2] || \"256\")\n\n if ((match[2] && String(size) !== match[2]) || (size % 8 !== 0) || size === 0 || size > 256) {\n logger.throwArgumentError(\"invalid number type\", \"type\", type)\n }\n\n if (isArray) { size = 256; }\n\n value = BigNumber.from(value).toTwos(size);\n\n return zeroPad(value, size / 8);\n }\n\n match = type.match(regexBytes);\n if (match) {\n const size = parseInt(match[1]);\n\n if (String(size) !== match[1] || size === 0 || size > 32) {\n logger.throwArgumentError(\"invalid bytes type\", \"type\", type)\n }\n if (arrayify(value).byteLength !== size) {\n logger.throwArgumentError(`invalid value for ${ type }`, \"value\", value)\n }\n if (isArray) { return arrayify((value + Zeros).substring(0, 66)); }\n return value;\n }\n\n match = type.match(regexArray);\n if (match && Array.isArray(value)) {\n const baseType = match[1];\n const count = parseInt(match[2] || String(value.length));\n if (count != value.length) {\n logger.throwArgumentError(`invalid array length for ${ type }`, \"value\", value)\n }\n const result: Array = [];\n value.forEach(function(value) {\n result.push(_pack(baseType, value, true));\n });\n return concat(result);\n }\n\n return logger.throwArgumentError(\"invalid type\", \"type\", type)\n}\n\n// @TODO: Array Enum\n\nexport function pack(types: ReadonlyArray, values: ReadonlyArray) {\n if (types.length != values.length) {\n logger.throwArgumentError(\"wrong number of values; expected ${ types.length }\", \"values\", values)\n }\n const tight: Array = [];\n types.forEach(function(type, index) {\n tight.push(_pack(type, values[index]));\n });\n return hexlify(concat(tight));\n}\n\nexport function keccak256(types: ReadonlyArray, values: ReadonlyArray) {\n return hashKeccak256(pack(types, values));\n}\n\nexport function sha256(types: ReadonlyArray, values: ReadonlyArray) {\n return hashSha256(pack(types, values));\n}\n", "export const version = \"units/5.7.0\";\n", "\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { formatFixed, parseFixed } from \"@ethersproject/bignumber\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst names = [\n \"wei\",\n \"kwei\",\n \"mwei\",\n \"gwei\",\n \"szabo\",\n \"finney\",\n \"ether\",\n];\n\n\n// Some environments have issues with RegEx that contain back-tracking, so we cannot\n// use them.\nexport function commify(value: string | number): string {\n const comps = String(value).split(\".\");\n\n if (comps.length > 2 || !comps[0].match(/^-?[0-9]*$/) || (comps[1] && !comps[1].match(/^[0-9]*$/)) || value === \".\" || value === \"-.\") {\n logger.throwArgumentError(\"invalid value\", \"value\", value);\n }\n\n // Make sure we have at least one whole digit (0 if none)\n let whole = comps[0];\n\n let negative = \"\";\n if (whole.substring(0, 1) === \"-\") {\n negative = \"-\";\n whole = whole.substring(1);\n }\n\n // Make sure we have at least 1 whole digit with no leading zeros\n while (whole.substring(0, 1) === \"0\") { whole = whole.substring(1); }\n if (whole === \"\") { whole = \"0\"; }\n\n let suffix = \"\";\n if (comps.length === 2) { suffix = \".\" + (comps[1] || \"0\"); }\n while (suffix.length > 2 && suffix[suffix.length - 1] === \"0\") {\n suffix = suffix.substring(0, suffix.length - 1);\n }\n\n const formatted = [];\n while (whole.length) {\n if (whole.length <= 3) {\n formatted.unshift(whole);\n break;\n } else {\n const index = whole.length - 3;\n formatted.unshift(whole.substring(index));\n whole = whole.substring(0, index);\n }\n }\n\n return negative + formatted.join(\",\") + suffix;\n}\n\nexport function formatUnits(value: BigNumberish, unitName?: string | BigNumberish): string {\n if (typeof(unitName) === \"string\") {\n const index = names.indexOf(unitName);\n if (index !== -1) { unitName = 3 * index; }\n }\n return formatFixed(value, (unitName != null) ? unitName: 18);\n}\n\nexport function parseUnits(value: string, unitName?: BigNumberish): BigNumber {\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(\"value must be a string\", \"value\", value);\n }\n if (typeof(unitName) === \"string\") {\n const index = names.indexOf(unitName);\n if (index !== -1) { unitName = 3 * index; }\n }\n return parseFixed(value, (unitName != null) ? unitName: 18);\n}\n\nexport function formatEther(wei: BigNumberish): string {\n return formatUnits(wei, 18);\n}\n\nexport function parseEther(ether: string): BigNumber {\n return parseUnits(ether, 18);\n}\n\n", "\"use strict\";\n\nimport { AbiCoder, checkResultErrors, ConstructorFragment, defaultAbiCoder, ErrorFragment, EventFragment, FormatTypes, Fragment, FunctionFragment, Indexed, Interface, LogDescription, ParamType, Result, TransactionDescription }from \"@ethersproject/abi\";\nimport { getAddress, getCreate2Address, getContractAddress, getIcapAddress, isAddress } from \"@ethersproject/address\";\nimport * as base64 from \"@ethersproject/base64\";\nimport { Base58 as base58 } from \"@ethersproject/basex\";\nimport { arrayify, concat, hexConcat, hexDataSlice, hexDataLength, hexlify, hexStripZeros, hexValue, hexZeroPad, isBytes, isBytesLike, isHexString, joinSignature, zeroPad, splitSignature, stripZeros } from \"@ethersproject/bytes\";\nimport { _TypedDataEncoder, dnsEncode, hashMessage, id, isValidName, namehash } from \"@ethersproject/hash\";\nimport { defaultPath, entropyToMnemonic, getAccountPath, HDNode, isValidMnemonic, mnemonicToEntropy, mnemonicToSeed } from \"@ethersproject/hdnode\";\nimport { getJsonWalletAddress } from \"@ethersproject/json-wallets\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { computeHmac, ripemd160, sha256, sha512 } from \"@ethersproject/sha2\";\nimport { keccak256 as solidityKeccak256, pack as solidityPack, sha256 as soliditySha256 } from \"@ethersproject/solidity\";\nimport { randomBytes, shuffled } from \"@ethersproject/random\";\nimport { checkProperties, deepCopy, defineReadOnly, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey, SigningKey } from \"@ethersproject/signing-key\";\nimport { formatBytes32String, nameprep, parseBytes32String, _toEscapedUtf8String, toUtf8Bytes, toUtf8CodePoints, toUtf8String, Utf8ErrorFuncs } from \"@ethersproject/strings\";\nimport { accessListify, computeAddress, parse as parseTransaction, recoverAddress, serialize as serializeTransaction, TransactionTypes } from \"@ethersproject/transactions\";\nimport { commify, formatEther, parseEther, formatUnits, parseUnits } from \"@ethersproject/units\";\nimport { verifyMessage, verifyTypedData } from \"@ethersproject/wallet\";\nimport { _fetchData, fetchJson, poll } from \"@ethersproject/web\";\n\n////////////////////////\n// Enums\n\nimport { SupportedAlgorithm } from \"@ethersproject/sha2\";\nimport { UnicodeNormalizationForm, Utf8ErrorReason } from \"@ethersproject/strings\";\nimport { UnsignedTransaction } from \"@ethersproject/transactions\";\n\n////////////////////////\n// Types and Interfaces\n\nimport { CoerceFunc } from \"@ethersproject/abi\";\nimport { Bytes, BytesLike, Hexable } from \"@ethersproject/bytes\"\nimport { Mnemonic } from \"@ethersproject/hdnode\";\nimport { EncryptOptions, ProgressCallback } from \"@ethersproject/json-wallets\";\nimport { Deferrable } from \"@ethersproject/properties\";\nimport { Utf8ErrorFunc } from \"@ethersproject/strings\";\nimport { AccessList, AccessListish } from \"@ethersproject/transactions\";\nimport { ConnectionInfo, FetchJsonResponse, OnceBlockable, OncePollable, PollOptions } from \"@ethersproject/web\";\n\n////////////////////////\n// Exports\n\nexport {\n AbiCoder,\n defaultAbiCoder,\n\n Fragment,\n ConstructorFragment,\n ErrorFragment,\n EventFragment,\n FunctionFragment,\n ParamType,\n FormatTypes,\n\n checkResultErrors,\n Result,\n\n Logger,\n\n RLP,\n\n _fetchData,\n fetchJson,\n poll,\n\n checkProperties,\n deepCopy,\n defineReadOnly,\n getStatic,\n resolveProperties,\n shallowCopy,\n\n arrayify,\n\n concat,\n stripZeros,\n zeroPad,\n\n isBytes,\n isBytesLike,\n\n defaultPath,\n HDNode,\n SigningKey,\n\n Interface,\n\n LogDescription,\n TransactionDescription,\n\n base58,\n base64,\n\n hexlify,\n isHexString,\n hexConcat,\n hexStripZeros,\n hexValue,\n hexZeroPad,\n hexDataLength,\n hexDataSlice,\n\n nameprep,\n _toEscapedUtf8String,\n toUtf8Bytes,\n toUtf8CodePoints,\n toUtf8String,\n Utf8ErrorFuncs,\n\n formatBytes32String,\n parseBytes32String,\n\n dnsEncode,\n hashMessage,\n namehash,\n isValidName,\n id,\n\n _TypedDataEncoder,\n\n getAddress,\n getIcapAddress,\n getContractAddress,\n getCreate2Address,\n isAddress,\n\n formatEther,\n parseEther,\n\n formatUnits,\n parseUnits,\n\n commify,\n\n computeHmac,\n keccak256,\n ripemd160,\n sha256,\n sha512,\n\n randomBytes,\n shuffled,\n\n solidityPack,\n solidityKeccak256,\n soliditySha256,\n\n splitSignature,\n joinSignature,\n\n accessListify,\n parseTransaction,\n serializeTransaction,\n TransactionTypes,\n\n getJsonWalletAddress,\n\n computeAddress,\n recoverAddress,\n\n computePublicKey,\n recoverPublicKey,\n\n verifyMessage,\n verifyTypedData,\n\n getAccountPath,\n mnemonicToEntropy,\n entropyToMnemonic,\n isValidMnemonic,\n mnemonicToSeed,\n\n\n ////////////////////////\n // Enums\n\n SupportedAlgorithm,\n\n UnicodeNormalizationForm,\n Utf8ErrorReason,\n\n ////////////////////////\n // Types\n\n Bytes,\n BytesLike,\n Hexable,\n\n AccessList,\n AccessListish,\n UnsignedTransaction,\n\n CoerceFunc,\n\n Indexed,\n\n Mnemonic,\n\n Deferrable,\n\n Utf8ErrorFunc,\n\n ConnectionInfo,\n OnceBlockable,\n OncePollable,\n PollOptions,\n FetchJsonResponse,\n\n EncryptOptions,\n ProgressCallback\n}\n\n", "export const version = \"ethers/5.7.2\";\n", "\"use strict\";\n\nimport { BaseContract, Contract, ContractFactory } from \"@ethersproject/contracts\";\n\nimport { BigNumber, FixedNumber } from \"@ethersproject/bignumber\";\n\nimport { Signer, VoidSigner } from \"@ethersproject/abstract-signer\";\nimport { Wallet } from \"@ethersproject/wallet\";\n\nimport * as constants from \"@ethersproject/constants\";\n\nimport * as providers from \"@ethersproject/providers\";\nimport { getDefaultProvider } from \"@ethersproject/providers\";\n\nimport { Wordlist, wordlists} from \"@ethersproject/wordlists\";\n\nimport * as utils from \"./utils\";\n\nimport { ErrorCode as errors, Logger } from \"@ethersproject/logger\";\n\n////////////////////////\n// Types\n\nimport type { TypedDataDomain, TypedDataField } from \"@ethersproject/abstract-signer\";\nimport { BigNumberish } from \"@ethersproject/bignumber\";\nimport { Bytes, BytesLike, Signature } from \"@ethersproject/bytes\";\nimport { Transaction, UnsignedTransaction } from \"@ethersproject/transactions\";\n\n\n////////////////////////\n// Compile-Time Constants\n\n// This is generated by \"npm run dist\"\nimport { version } from \"./_version\";\n\nconst logger = new Logger(version);\n\n////////////////////////\n// Types\n\nimport {\n ContractFunction,\n ContractReceipt,\n ContractTransaction,\n\n Event,\n EventFilter,\n\n Overrides,\n PayableOverrides,\n CallOverrides,\n\n PopulatedTransaction,\n\n ContractInterface\n} from \"@ethersproject/contracts\";\n\n\n////////////////////////\n// Exports\n\nexport {\n Signer,\n\n Wallet,\n VoidSigner,\n\n getDefaultProvider,\n providers,\n\n BaseContract,\n Contract,\n ContractFactory,\n\n BigNumber,\n FixedNumber,\n\n constants,\n errors,\n\n logger,\n\n utils,\n\n wordlists,\n\n\n ////////////////////////\n // Compile-Time Constants\n\n version,\n\n\n ////////////////////////\n // Types\n\n ContractFunction,\n ContractReceipt,\n ContractTransaction,\n Event,\n EventFilter,\n\n Overrides,\n PayableOverrides,\n CallOverrides,\n\n PopulatedTransaction,\n\n ContractInterface,\n\n TypedDataDomain,\n TypedDataField,\n\n BigNumberish,\n\n Bytes,\n BytesLike,\n\n Signature,\n\n Transaction,\n UnsignedTransaction,\n\n Wordlist\n};\n\n", "\"use strict\";\n\n// To modify this file, you must update ./misc/admin/lib/cmds/update-exports.js\n\nimport * as ethers from \"./ethers\";\n\ntry {\n const anyGlobal = (window as any);\n\n if (anyGlobal._ethers == null) {\n anyGlobal._ethers = ethers;\n }\n} catch (error) { }\n\nexport { ethers };\n\nexport {\n Signer,\n\n Wallet,\n VoidSigner,\n\n getDefaultProvider,\n providers,\n\n BaseContract,\n Contract,\n ContractFactory,\n\n BigNumber,\n FixedNumber,\n\n constants,\n errors,\n\n logger,\n\n utils,\n\n wordlists,\n\n\n ////////////////////////\n // Compile-Time Constants\n\n version,\n\n\n ////////////////////////\n // Types\n\n ContractFunction,\n ContractReceipt,\n ContractTransaction,\n Event,\n EventFilter,\n\n Overrides,\n PayableOverrides,\n CallOverrides,\n\n PopulatedTransaction,\n\n ContractInterface,\n\n TypedDataDomain,\n TypedDataField,\n\n BigNumberish,\n\n Bytes,\n BytesLike,\n\n Signature,\n\n Transaction,\n UnsignedTransaction,\n\n Wordlist\n} from \"./ethers\";\n", "import serverless from 'serverless-http'\nimport express from 'express'\nimport cors from 'cors'\nimport { APIGatewayEventRequestContext, APIGatewayProxyEvent } from 'aws-lambda'\nimport signupLogin from './routes/signupLogin'\nimport signup from './routes/signup'\nimport login from './routes/login'\nimport auth from './routes/auth'\nimport users from './routes/users'\n\nconst app = express()\napp.use(express.json())\napp.use(cors())\n\napp.use('/signupLogin', signupLogin)\napp.use('/signup', signup)\napp.use('/login', login)\napp.use('/auth', auth)\napp.use('/users', users)\n\nexport const handler = async function (event: APIGatewayProxyEvent, context: APIGatewayEventRequestContext) {\n const serverlessApp = serverless(app)\n return await serverlessApp(event, context)\n}", "import express from 'express'\nimport useEthers from '../providers/ethers'\nimport { Account } from '@casimir/types'\nimport { SignupLoginCredentials } from '@casimir/types/src/interfaces/SignupLoginCredentials'\nimport useUsers from '../providers/users'\nimport { userCollection } from '../collections/users'\n\nconst { verifyMessage } = useEthers()\nconst { updateMessage } = useUsers()\nconst router = express.Router()\n\n// Signup or Login\nrouter.use('/', async (req: express.Request, res: express.Response) => {\n const { body } = req\n const { provider, address, currency, message, signedMessage } = body as SignupLoginCredentials\n const user = userCollection.find(user => user.address === address.toLowerCase())\n if (user && !user?.accounts) { // signup\n console.log('got into this block in signupLogin.ts')\n const accounts: Array = [\n {\n address: address,\n currency: currency,\n balance: '1000000000000000000',\n balanceSnapshots: [{ date: '2023-02-06', balance: '1000000000000000000' }, { date: '2023-02-05', balance: '100000000000000000' }],\n roi: 0,\n walletProvider: provider\n },\n ]\n user.accounts = accounts\n console.log('user :>> ', user)\n res.setHeader('Content-Type', 'application/json')\n res.status(200)\n res.json({\n message: user.accounts.length ? 'Sign Up Successful' : 'Problem creating new user',\n error: false,\n data: user ? user : null\n })\n } else { // login\n const response = verifyMessage({ address, message, signedMessage, provider })\n updateMessage(provider, address) // send back token if successful\n res.setHeader('Content-Type', 'application/json')\n res.status(200)\n res.json({\n message: response ? 'Login successful' : 'Login failed',\n error: false,\n data: user,\n })\n }\n})\n\nexport default router", "import { ethers } from 'ethers'\nimport { LoginCredentials } from '@casimir/types'\n\nexport default function useEthers() {\n\n /**\n * Verifies a user's login attempt with an address, message and signed message\n * \n * @param {LoginCredentials} loginCredentials - The user's address, message and signed message \n * @returns {boolean} - The response from the login request\n */\n function verifyMessage(loginCredentials: LoginCredentials): boolean {\n const { address, message, signedMessage } = loginCredentials\n try {\n if (!address.length || !message.length || !signedMessage.length) {\n return false\n } else {\n const recoveredAddress = ethers.utils.verifyMessage(message, signedMessage)\n return address.toLowerCase() === recoveredAddress.toLowerCase()\n }\n } catch (error) {\n console.log('error :>> ', error)\n return false\n }\n }\n\n return { verifyMessage }\n}\n", "import { User } from '@casimir/types'\n\nconst user: User = {\n address: '0xd557a5745d4560B24D36A68b52351ffF9c86A212'.toLowerCase(),\n accounts: [\n {\n address: '0xd557a5745d4560B24D36A68b52351ffF9c86A212'.toLowerCase(),\n currency: 'ETH',\n balance: '1000000000000000000',\n balanceSnapshots: [{ date: '2023-02-06', balance: '1000000000000000000' }, { date: '2023-02-05', balance: '100000000000000000' }],\n roi: 0.25,\n walletProvider: 'MetaMask'\n },\n {\n address: '0x1dc336d94890b10e1a47b6e34cdee1009ee7b942'.toLowerCase(),\n currency: 'ETH',\n balance: '1000000000000000000',\n balanceSnapshots: [{ date: '2023-02-06', balance: '1000000000000000000' }, { date: '2023-02-05', balance: '100000000000000000' }],\n roi: 0.25,\n walletProvider: 'CoinbaseWallet'\n },\n {\n address: '0x8222Ef172A2117D1C4739E35234E097630D94376'.toLowerCase(),\n currency: 'ETH',\n balance: '1000000000000000000',\n balanceSnapshots: [{ date: '2023-02-06', balance: '1000000000000000000' }, { date: '2023-02-05', balance: '100000000000000000' }],\n roi: 0.25,\n walletProvider: 'Ledger'\n },\n {\n address: 'bc1qpttwf0df8jkx54dl04anwgmyt27lj6vj885lyr'.toLowerCase(),\n currency: 'BTC',\n balance: '100000000',\n balanceSnapshots: [{ date: '2023-02-06', balance: '100000000' }, { date: '2023-02-05', balance: '100000000' }],\n roi: 0.25,\n walletProvider: 'Ledger'\n },\n {\n address: '0x8222Ef172A2117D1C4739E35234E097630D94377'.toLowerCase(), // Fake address\n currency: 'ETH',\n balance: '1000000000000000000',\n balanceSnapshots: [{ date: '2023-02-06', balance: '1000000000000000000' }, { date: '2023-02-05', balance: '100000000000000000' }],\n roi: 0.25,\n walletProvider: 'Trezor'\n },\n {\n address: '0x8222Ef172A2117D1C4739E35234E097630D94378'.toLowerCase(), // Fake address\n currency: 'ETH',\n balance: '1000000000000000000',\n balanceSnapshots: [{ date: '2023-02-06', balance: '1000000000000000000' }, { date: '2023-02-05', balance: '100000000000000000' }],\n roi: 0.25,\n walletProvider: 'WalletConnect'\n },\n ],\n nonce: '1234567890',\n}\n\nexport const userCollection : Array = [user]", "import { userCollection } from '../collections/users'\nimport { ProviderString } from '@casimir/types'\nimport { User } from '@casimir/types'\n\nexport default function useUsers() {\n function getMessage (address: string) {\n const user = userCollection.find(user => user.address === address)\n if (user) {\n return user.nonce\n }\n return ''\n }\n\n function updateMessage (provider: ProviderString, address: string) {\n const user = userCollection.find(user => user.address === address)\n console.log('user in updateMessage in users.ts :>> ', user)\n provider = provider.toLowerCase()\n if (user) {\n user.nonce = generateNonce()\n } else {\n console.log('Create new user here?')\n const user: User = {\n address,\n nonce: generateNonce(),\n }\n userCollection.push(user)\n }\n }\n \n function generateNonce() {\n return (Math.floor(Math.random()\n * (Number.MAX_SAFE_INTEGER - 1)) + 1).toString()\n }\n \n return { getMessage, updateMessage, generateNonce }\n}", "import express from 'express'\nimport { SignupLoginCredentials } from '@casimir/types/src/interfaces/SignupLoginCredentials'\nimport { userCollection } from '../collections/users'\n\nconst router = express.Router()\n\n// TODO: Remove if we're not using.\nrouter.use('/', async (req: express.Request, res: express.Response) => {\n try {\n const { body } = req\n const { address, provider, currency } = body as SignupLoginCredentials\n const user = userCollection.find(user => user.address === address.toLowerCase())\n console.log('user :>> ', user)\n const newUser = {\n address: address.toLowerCase(),\n accounts: [\n {\n address,\n currency,\n balance: '1000000000000000000',\n balanceSnapshots: [{ date: '2023-02-06', balance: '1000000000000000000' }, { date: '2023-02-05', balance: '100000000000000000' }],\n roi: 0,\n walletProvider: provider\n },\n ],\n nonce: generateNonce()\n }\n if (!user) {\n console.log('pushing in user')\n userCollection.push(newUser)\n }\n res.setHeader('Content-Type', 'application/json')\n res.status(200)\n res.json({\n message: user ? 'Account already exists at that address' : 'Sign Up Successful',\n error: false,\n data: user ? user : newUser\n })\n } catch (err) {\n console.log('err :>> ', err)\n res.status(500)\n res.json({\n message: 'Error signing up',\n error: true\n })\n }\n})\n\nfunction generateNonce() {\n return (Math.floor(Math.random()\n * (Number.MAX_SAFE_INTEGER - 1)) + 1).toString()\n}\n\nexport default router", "import express from 'express'\nimport useEthers from '../providers/ethers'\nimport { LoginCredentials } from '@casimir/types'\nimport useUsers from '../providers/users'\nimport { userCollection } from '../collections/users'\n\nconst { verifyMessage } = useEthers()\nconst { updateMessage } = useUsers()\nconst router = express.Router()\n\n// TODO: Remove if we're not using.\nrouter.use('/', async (req: express.Request, res: express.Response) => {\n const { body } = req\n const { address, message, signedMessage, provider } = body as LoginCredentials\n const response = verifyMessage({ address, message, signedMessage, provider })\n if (response) updateMessage(provider, address) // send back token if successful\n const user = userCollection.find(user => user.address === address.toLowerCase())\n res.setHeader('Content-Type', 'application/json')\n res.status(200)\n res.json({\n message: response ? 'Login successful' : 'Login failed',\n error: false,\n data: user,\n })\n})\n\nexport default router", "import express from 'express'\nimport useUsers from '../providers/users'\nimport { userCollection } from '../collections/users'\nconst router = express.Router()\n\nconst { getMessage, updateMessage } = useUsers()\n\nrouter.get('/:provider/:address', async (req: express.Request, res: express.Response) => {\n const { provider, address } = req.params\n updateMessage(provider, address)\n const message = getMessage(address)\n if (message) {\n res.setHeader('Content-Type', 'application/json')\n res.status(200)\n res.json({ message })\n } else {\n res.status(404)\n res.send()\n }\n})\n\n\n// TODO: Is this being used at all?\nrouter.post('/:address', async (req: express.Request, res: express.Response) => {\n const { address } = req.params\n const { message } = req.body\n const user = userCollection.find(user => user.address === address)\n if (user) {\n user.nonce = message\n res.setHeader('Content-Type', 'application/json')\n res.status(200)\n res.json({\n message: `Message updated to: ${message}`,\n error: false\n })\n } else {\n res.status(404)\n res.json({\n message: 'User not found',\n error: true\n })\n }\n})\n\nexport default router", "import express from 'express'\nimport { userCollection } from '../collections/users'\nconst router = express.Router()\n\nrouter.put('/update-primary-account', async (req: express.Request, res: express.Response) => {\n let { primaryAddress, updatedProvider, updatedAddress } = req.body\n primaryAddress = primaryAddress.toLowerCase()\n updatedProvider = updatedProvider.toLowerCase()\n updatedAddress = updatedAddress.toLowerCase()\n const user = userCollection.find(user => user.address === primaryAddress)\n if (user) {\n user.address = updatedAddress\n }\n res.setHeader('Content-Type', 'application/json')\n res.status(200)\n res.json({\n message: 'Primary account updated',\n error: false,\n data: user\n })\n})\n\nrouter.post('/add-sub-account', async (req: express.Request, res: express.Response) => {\n try {\n const { account } = req.body\n let { address } = req.body\n address = address.toLowerCase()\n const existingUser = userCollection.find(user => user.address === address)\n if (existingUser) {\n existingUser.accounts?.push(account)\n }\n res.setHeader('Content-Type', 'application/json')\n res.status(200)\n res.json({\n message: 'Account added',\n error: false,\n data: existingUser\n })\n } catch (err) {\n console.log('err :>> ', err)\n res.status(500)\n res.json({\n message: 'Error adding account',\n error: true\n })\n }\n})\n\nrouter.post('/remove-sub-account', async (req: express.Request, res: express.Response) => {\n try {\n const { provider, address, currency } = req.body\n let { primaryAddress } = req.body\n primaryAddress = primaryAddress.toLowerCase()\n const existingUser = userCollection.find(user => user.address === primaryAddress)\n let accountedRemoved = false\n if (existingUser) {\n existingUser.accounts = existingUser.accounts?.filter(account => {\n const notAddress = account.walletProvider !== provider || account.address !== address || account.currency !== currency\n if (!notAddress) {\n accountedRemoved = true\n } else {\n return account\n }\n })\n }\n if (accountedRemoved) {\n res.setHeader('Content-Type', 'application/json')\n res.status(200)\n res.json({\n message: 'Account removed',\n error: false,\n data: existingUser\n })\n } else {\n res.setHeader('Content-Type', 'application/json')\n res.status(200)\n res.json({\n message: 'Account not found',\n error: true,\n data: existingUser\n })\n }\n } catch (err) {\n console.log('err :>> ', err)\n res.status(500)\n res.json({\n message: 'Error adding account',\n error: true\n })\n }\n})\n\nexport default router"], - "mappings": "yoBAAA,IAAAA,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEAA,GAAO,QAAU,eAAsBC,EAAMC,KAAcC,EAAS,CAClE,aAAM,IAAI,QAAQ,CAACC,EAASC,IAAW,CACrC,GAAIJ,EAAK,UAAYA,EAAK,SAAU,CAClCG,EAAQ,EACR,MACF,CAEA,IAAIE,EAAW,GAEf,SAASC,EAAKC,EAAK,CACbF,IAIJA,EAAW,GAEXL,EAAK,eAAe,QAASM,CAAI,EACjCN,EAAK,eAAe,MAAOM,CAAI,EAC/BN,EAAK,eAAe,SAAUM,CAAI,EAE9BC,EACFH,EAAOG,CAAG,EAEVJ,EAAQ,EAEZ,CAEAH,EAAK,KAAK,QAASM,CAAI,EACvBN,EAAK,KAAK,MAAOM,CAAI,EACrBN,EAAK,KAAK,SAAUM,CAAI,CAC1B,CAAC,EAEG,OAAOL,GAAc,WACvB,MAAMA,EAAUD,EAAM,GAAGE,CAAO,EACvB,OAAOD,GAAc,UAAYA,IAAc,MACxD,OAAO,OAAOD,EAAMC,CAAS,EAGxBD,CACT,ICzCA,IAAAQ,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAMC,GAAO,QAAQ,QAEfC,GAAY;AAAA;AAAA,EAEZC,GAAO,OAAO,EACdC,GAAU,OAAO,EAEvB,SAASC,GAAUC,EAAM,CACvB,GAAI,OAAO,SAASA,CAAI,EACtB,OAAOA,EAAK,SAAS,MAAM,EACtB,GAAI,OAAOA,GAAS,SACzB,OAAOA,EAEP,MAAM,IAAI,MAAM,wCAAwC,OAAOA,GAAM,CAEzE,CAEA,SAASC,GAAQC,EAAQF,EAAM,CAC7B,GAAI,OAAO,SAASA,CAAI,GAAK,OAAOA,GAAS,UAAYA,aAAgB,WACvEE,EAAOL,IAAM,KAAK,OAAO,KAAKG,CAAI,CAAC,MAEnC,OAAM,IAAI,MAAM,wCAAwC,OAAOA,GAAM,CAEzE,CAEAN,GAAO,QAAU,MAAMS,WAA2BR,GAAK,cAAe,CAEpE,OAAO,KAAKS,EAAK,CACf,IAAMC,EAAW,IAAIF,GAAmBC,CAAG,EAE3C,OAAAC,EAAS,WAAaD,EAAI,WAC1BC,EAASP,IAAWM,EAAI,QACxBC,EAASR,IAAQ,CAAC,OAAO,KAAKO,EAAI,IAAI,CAAC,EACvCC,EAAS,IAAI,EAENA,CACT,CAEA,OAAO,KAAKD,EAAK,CACf,OAAO,OAAO,OAAOA,EAAIP,GAAK,CAChC,CAEA,OAAO,QAAQO,EAAK,CAClB,IAAME,EAAU,OAAOF,EAAI,YAAe,WACtCA,EAAI,WAAW,EACfA,EAAI,SAER,OAAO,OAAO,OAAOE,EAASF,EAAIN,GAAQ,CAC5C,CAEA,IAAI,SAAU,CACZ,OAAO,KAAKA,GACd,CAEA,UAAUS,EAAKC,EAAO,CAChB,KAAK,aACP,KAAKV,IAASS,GAAOC,EAErB,MAAM,UAAUD,EAAKC,CAAK,CAE9B,CAEA,UAAUC,EAAYC,EAAQC,EAAK,CACjC,IAAML,EAAU,OAAOI,GAAW,SAC9BC,EACAD,EAEJ,QAAWE,KAAQN,EAGjB,GAFA,KAAK,UAAUM,EAAMN,EAAQM,EAAK,EAE9B,CAAC,KAAK,aAGR,MAIJ,MAAM,UAAUH,EAAYC,EAAQC,CAAG,CACzC,CAEA,YAAY,CAAE,OAAAE,CAAO,EAAG,CACtB,MAAM,CAAE,OAAAA,CAAO,CAAC,EAEhB,KAAKhB,IAAQ,CAAC,EACd,KAAKC,IAAW,CAAC,EAEjB,KAAK,4BAA8B,GACnC,KAAK,gBAAkB,GACvB,KAAK,QAAU,GAEf,KAAK,aAAa,CAChB,eAAgB,CAAC,EACjB,SAAU,GACV,GAAI,SAAS,UACb,eAAgB,SAAS,UACzB,QAAS,SAAS,UAClB,KAAM,SAAS,UACf,OAAQ,SAAS,UACjB,MAAO,CAACE,EAAMc,EAAUC,IAAO,CAM7B,GALI,OAAOD,GAAa,aACtBC,EAAKD,EACLA,EAAW,MAGT,KAAK,UAAY,IAAM,KAAK,aAC9Bb,GAAQ,KAAMD,CAAI,MACb,CACL,IAAMgB,EAASjB,GAAUC,CAAI,EACvBiB,EAAQD,EAAO,QAAQpB,EAAS,EAEtC,GAAIqB,IAAU,GAAI,CAChB,IAAMC,EAAYF,EAAO,MAAMC,EAAQrB,GAAU,MAAM,EAEnDsB,GACFjB,GAAQ,KAAMiB,CAAS,EAGzB,KAAK,aAAe,EACtB,CACF,CAEI,OAAOH,GAAO,YAChBA,EAAG,CAEP,CACF,CAAC,EAED,KAAK,KAAK,SAAU,IAAM,CACxB,KAAK,KAAK,OAAO,CACnB,CAAC,CACH,CAEF,ICtIA,IAAAI,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAMC,GAAO,QAAQ,QACfC,GAAW,KAEjB,SAASC,GAAOC,EAAI,CAClB,OAAOC,GAAW,CAChB,IAAMC,EAAW,IAAIJ,GAASG,CAAO,EAErC,OAAAD,EAAGC,EAASC,CAAQ,EAEbA,CACT,CACF,CAEAN,GAAO,QAAU,SAAsBO,EAAK,CAC1C,GAAIA,aAAeN,GAAK,OACtB,OAAOI,GAAW,CAChB,IAAMC,EAAW,IAAIJ,GAASG,CAAO,EACrC,OAAAE,EAAI,KAAK,UAAWF,EAASC,CAAQ,EAC9BA,CACT,EAGF,GAAI,OAAOC,EAAI,UAAa,WAC1B,OAAOJ,GAAOI,EAAI,SAAS,CAAC,EAG9B,GAAI,OAAOA,EAAI,QAAW,WACxB,OAAOJ,GAAO,CAACE,EAASC,IAAa,CACnCC,EAAI,OAAOF,EAASC,CAAQ,CAC9B,CAAC,EAGH,GAAI,OAAOC,EAAI,SAAY,WACzB,OAAOJ,GAAO,CAACE,EAASC,IAAa,CACnCC,EAAI,QAAQF,EAASC,CAAQ,CAC/B,CAAC,EAGH,GAAI,OAAOC,EAAI,YAAe,WAC5B,OAAOJ,GAAO,CAACE,EAASC,IAAa,CACnCC,EAAI,WAAWF,EAASC,CAAQ,CAClC,CAAC,EAGH,GAAI,OAAOC,GAAQ,WACjB,OAAOJ,GAAOI,CAAG,EAGnB,GAAIA,EAAI,QAAU,OAAOA,EAAI,OAAO,OAAS,WAC3C,OAAOJ,GAAO,CAACK,EAAKC,IAAQ,CAC1B,GAAM,CAAE,IAAAC,EAAK,OAAAC,EAAQ,QAAAC,EAAS,KAAAC,CAAK,EAAIL,EACvCD,EAAI,OAAO,MAAM,CAAE,IAAAG,EAAK,OAAAC,EAAQ,QAAAC,EAAS,KAAAC,CAAK,EAAGJ,CAAG,CACtD,CAAC,EAGH,GAAIF,EAAI,OAAS,OAAOA,EAAI,MAAM,WAAc,WAC9C,OAAOJ,GAAOI,EAAI,MAAM,UAAU,CAChC,IAAAA,CACF,CAAC,CAAC,EAGJ,GAAI,OAAOA,EAAI,QAAW,WACxB,MAAO,OAAMF,GAAW,CACtB,GAAM,CAAE,OAAAM,EAAQ,IAAAD,EAAK,QAAAE,EAAS,KAAAC,CAAK,EAAIR,EAEjCI,EAAM,MAAMF,EAAI,OAAO,CAAE,OAAAI,EAAQ,IAAAD,EAAK,QAAAE,EAAS,QAASC,CAAK,CAAC,EAEpE,OAAOX,GAAS,KAAKO,CAAG,CAC1B,EAGF,GAAI,OAAOF,EAAI,MAAS,WACtB,OAAOJ,GAAOI,EAAI,IAAI,EAGxB,MAAM,IAAI,MAAM,uBAAuB,CACzC,IC9EA,IAAAO,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,SAASC,GAAeC,EAAO,IAAKC,EAAU,CAC5C,GAAIA,EAAU,CACZ,IAAMC,EAAgBF,EAAK,QAAQC,CAAQ,EAE3C,GAAIC,EAAgB,GAClB,OAAOF,EAAK,OAAOE,EAAgBD,EAAS,MAAM,GAAK,GAE3D,CAEA,OAAOD,CACT,CAEA,SAASG,GAASC,EAClB,CACE,OAAQ,OAAOA,GAAU,UAAYA,aAAiB,MACxD,CAGA,SAASC,GAA0BD,EACnC,CACE,GAAG,CAACD,GAASC,CAAK,EAEhB,OAAOA,EAGT,IAAIE,EACJ,GAAI,CACFA,EAAU,mBAAmBF,EAAM,QAAQ,OAAQ,KAAK,CAAC,CAC3D,MAAE,CACAE,EAAUF,EAAM,QAAQ,OAAQ,KAAK,CACvC,CAEA,OAAOE,CACT,CAEA,SAASC,GAAmBH,EAAO,CAEjC,GAAID,GAASC,CAAK,EAChB,OAAOC,GAA0BD,CAAK,EACjC,GAAI,MAAM,QAAQA,CAAK,EAAG,CAE/B,IAAMI,EAAe,CAAC,EAEtB,QAASC,KAASL,EAChBI,EAAa,KAAKD,GAAmBH,EAAMK,EAAM,CAAC,EAGpD,OAAOD,CAET,SAAWJ,aAAiB,OAAQ,CAElC,IAAMM,EAAgB,CAAC,EAEvB,QAASC,KAAO,OAAO,KAAKP,CAAK,EAC/BM,EAAcL,GAA0BM,CAAG,GAAKJ,GAAmBH,EAAMO,EAAI,EAG/E,OAAOD,CACT,CAEA,OAAON,CACT,CAEAN,GAAO,QAAU,SAAsBc,EAAKC,EAAS,CACnD,IAAMC,EAAQF,GAAO,CAAC,EAEtB,OAAAE,EAAM,eAAiBA,EAAM,gBAAkB,CAAC,EAChDA,EAAM,KAAOA,EAAM,MAAQ,GAC3BA,EAAM,QAAUA,EAAM,SAAW,CAAC,EAI9B,QAASA,EAAM,iBAEbA,EAAM,kCACRA,EAAM,gCAAkCP,GAAmBO,EAAM,+BAA+B,GAG9FA,EAAM,wBACRA,EAAM,sBAAwBP,GAAmBO,EAAM,qBAAqB,IAK5EA,EAAM,UAAY,OACpBA,EAAM,eAAe,WAAaA,EAAM,eAAe,YAAc,CAAC,EACtEA,EAAM,eAAe,KAAK,OAASA,EAAM,eAAe,KAAK,QAAU,MACvEA,EAAM,QAAUf,GAAee,EAAM,aAAeA,EAAM,QAASD,EAAQ,QAAQ,IAEnFC,EAAM,eAAe,SAAWA,EAAM,eAAe,UAAY,CAAC,EAClEA,EAAM,WAAaA,EAAM,YAAc,MACvCA,EAAM,KAAOf,GAAee,EAAM,aAAeA,EAAM,KAAMD,EAAQ,QAAQ,GAGxEC,CACT,ICjGA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAMC,GAAO,QAAQ,QAErBD,GAAO,QAAU,cAAgCC,GAAK,eAAgB,CACpE,YAAY,CAAE,OAAAC,EAAQ,IAAAC,EAAK,QAAAC,EAAS,KAAAC,EAAM,cAAAC,CAAc,EAAG,CACzD,MAAM,CACJ,UAAW,GACX,SAAU,GACV,cAAAA,EACA,QAAS,KAAO,CAAE,KAAM,GAAI,GAC5B,IAAK,SAAS,UACd,QAAS,SAAS,SACpB,CAAC,EAEG,OAAOF,EAAQ,kBAAsB,MACvCA,EAAQ,kBAAoB,OAAO,WAAWC,CAAI,GAGpD,OAAO,OAAO,KAAM,CAClB,GAAIC,EACJ,SAAU,GACV,YAAa,MACb,iBAAkB,IAClB,iBAAkB,IAClB,OAAAJ,EACA,QAAAE,EACA,KAAAC,EACA,IAAAF,CACF,CAAC,EAED,KAAK,MAAQ,IAAM,CACjB,KAAK,KAAKE,CAAI,EACd,KAAK,KAAK,IAAI,CAChB,CACF,CAEF,ICrCA,IAAAE,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAMC,GAAM,QAAQ,OAEdC,GAAU,KAEhB,SAASC,GAAcC,EAAO,CAC5B,OAAIA,EAAM,UAAY,MACbA,EAAM,eAAe,KAAK,OAE5BA,EAAM,UACf,CAEA,SAASC,GAAqBD,EAAO,CACnC,OAAIA,EAAM,UAAY,MACbA,EAAM,eAAe,KAAK,SAE5BA,EAAM,eAAe,SAAS,QACvC,CAEA,SAASE,GAAeF,EAAO,CAC7B,IAAMG,EAAgBH,EAAM,UAAY,OAAS,MAAM,QAAQA,EAAM,OAAO,EACxE,CAAE,OAAQA,EAAM,QAAQ,KAAK,IAAI,CAAE,EACnC,CAAC,EAEL,OAAIA,EAAM,kBACD,OAAO,KAAKA,EAAM,iBAAiB,EAAE,OAAO,CAACI,EAASC,KAC3DD,EAAQC,EAAI,YAAY,GAAKL,EAAM,kBAAkBK,GAAK,KAAK,IAAI,EAC5DD,GACND,CAAa,EAGX,OAAO,KAAKH,EAAM,OAAO,EAAE,OAAO,CAACI,EAASC,KACjDD,EAAQC,EAAI,YAAY,GAAKL,EAAM,QAAQK,GACpCD,GACND,CAAa,CAClB,CAEA,SAASG,GAAYN,EAAO,CAC1B,IAAMO,EAAO,OAAOP,EAAM,KAE1B,GAAI,OAAO,SAASA,EAAM,IAAI,EAC5B,OAAOA,EAAM,KACR,GAAIO,IAAS,SAClB,OAAO,OAAO,KAAKP,EAAM,KAAMA,EAAM,gBAAkB,SAAW,MAAM,EACnE,GAAIO,IAAS,SAClB,OAAO,OAAO,KAAK,KAAK,UAAUP,EAAM,IAAI,CAAC,EAG/C,MAAM,IAAI,MAAM,+BAA+B,OAAOA,EAAM,MAAM,CACpE,CAEA,SAASQ,GAAWR,EAAO,CACzB,GAAIA,EAAM,UAAY,MACpB,OAAOH,GAAI,OAAO,CAChB,SAAUG,EAAM,QAChB,OAAQA,EAAM,cAChB,CAAC,EAGH,IAAMS,EAAQT,EAAM,iCAAmC,CAAC,EACxD,OAAIA,EAAM,uBACR,OAAO,KAAKA,EAAM,qBAAqB,EAAE,QAASK,GAAQ,CACpD,MAAM,QAAQI,EAAMJ,EAAI,EACrBI,EAAMJ,GAAK,SAASL,EAAM,sBAAsBK,EAAI,GACvDI,EAAMJ,GAAK,KAAKL,EAAM,sBAAsBK,EAAI,EAGlDI,EAAMJ,GAAO,CAACL,EAAM,sBAAsBK,EAAI,CAElD,CAAC,EAEIR,GAAI,OAAO,CAChB,SAAUG,EAAM,KAChB,MAAOS,CACT,CAAC,CACH,CAEAb,GAAO,QAAU,CAACI,EAAOU,EAASC,IAAY,CAC5C,IAAMC,EAASb,GAAcC,CAAK,EAC5Ba,EAAgBZ,GAAqBD,CAAK,EAC1CI,EAAUF,GAAeF,CAAK,EAC9Bc,EAAOR,GAAYN,CAAK,EACxBe,EAAMP,GAAWR,CAAK,EAE5B,GAAI,OAAOW,EAAQ,WAAc,UAAYA,EAAQ,UAAU,OAAS,EAAG,CACzE,IAAMK,EAASL,EAAQ,UAAU,YAAY,EACvCM,EAAYb,EAAQY,IAAWhB,EAAM,eAAe,UACtDiB,IACFb,EAAQY,GAAUC,EAEtB,CAEA,IAAMC,EAAM,IAAIpB,GAAQ,CACtB,OAAAc,EACA,QAAAR,EACA,KAAAU,EACA,cAAAD,EACA,IAAAE,CACF,CAAC,EAED,OAAAG,EAAI,eAAiBlB,EAAM,eAC3BkB,EAAI,WAAa,CACf,MAAAlB,EACA,QAAAU,CACF,EAEOQ,CACT,IC5GA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAMC,GAAmB,CAAC,OAAQ,UAAW,IAAI,EAC3CC,IAAwB,QAAQ,IAAI,sBAAwB,IAAI,MAAM,GAAG,EAE/E,SAASC,GAAiBC,EAAS,CACjC,IAAMC,EAAkBD,EAAQ,oBAEhC,GAAI,OAAOC,GAAoB,SAC7B,OAAOA,EAAgB,MAAM,GAAG,EAAE,KAAKC,GACrCL,GAAiB,KAAKM,GAAkBD,EAAM,QAAQC,CAAc,IAAM,EAAE,CAC9E,CAEJ,CAEA,SAASC,GAAgBJ,EAASK,EAAS,CACzC,IAAMC,EAAe,CAAC,EAAE,OAAOD,EAAQ,OACnCA,EAAQ,OACRP,EACJ,EAAE,IAAIS,GACJ,IAAI,OAAO,IAAIA,EAAU,QAAQ,MAAO,IAAI,IAAI,CAClD,EAEMC,GAAeR,EAAQ,iBAAmB,IAAI,MAAM,GAAG,EAAE,GAC/D,MAAO,CAAC,CAACQ,GAAeF,EAAa,KAAKC,GAAaA,EAAU,KAAKC,CAAW,CAAC,CACpF,CAEAZ,GAAO,QAAU,SAAkBI,EAASK,EAAS,CACnD,OAAIA,EAAQ,SAAW,GACd,GAGLA,EAAQ,SAAW,GACd,GAGL,OAAOA,EAAQ,QAAW,WACrBA,EAAQ,OAAOL,CAAO,EAGxBD,GAAiBC,CAAO,GAAKI,GAAgBJ,EAASK,CAAO,CACtE,ICzCA,IAAAI,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEAA,GAAO,QAAU,SAAyBC,EAAS,CACjD,OAAO,OAAO,KAAKA,CAAO,EAAE,OAAO,CAACC,EAAMC,IAAQ,CAC9C,IAAMC,EAAQH,EAAQE,GAExB,OAAI,MAAM,QAAQC,CAAK,GACrBF,EAAK,kBAAkBC,GAAOC,EAC1BD,EAAI,YAAY,IAAM,eACxBD,EAAK,QAAQC,GAAOC,EAAM,KAAK,IAAI,IAGnCF,EAAK,QAAQC,GAAOC,GAAS,KAAO,GAAKA,EAAM,SAAS,EAGnDF,CACX,EAAG,CACC,QAAS,CAAC,EACV,kBAAmB,CAAC,CACtB,CAAC,CACL,ICpBA,IAAAG,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAMC,GAAW,KACXC,GAAW,KACXC,GAAkB,KAExBH,GAAO,QAAU,CAACI,EAAOC,EAAUC,IAAY,CAC7C,GAAM,CAAE,WAAAC,CAAW,EAAIF,EACjB,CAAC,QAAAG,EAAS,kBAAAC,CAAkB,EAAIN,GAAgBD,GAAS,QAAQG,CAAQ,CAAC,EAE5EK,EAAU,CAAC,EAEXD,EAAkB,gBACpBC,EAAUD,EAAkB,eAG9B,IAAME,EAAkBV,GAASO,EAASF,CAAO,EAC3CM,EAAWD,EAAkB,SAAW,OAC1CE,EAAOX,GAAS,KAAKG,CAAQ,EAAE,SAASO,CAAQ,EAEpD,GAAIJ,EAAQ,uBAAyB,WAAaH,EAAS,gBAAiB,CAC1E,IAAMS,EAAMZ,GAAS,KAAKG,CAAQ,EAAE,SAAS,EAAE,MAAM;AAAA,CAAM,EACrDU,EAAS,CAAC,EAChB,QAASC,EAAI,EAAGA,EAAIF,EAAI,OAAQE,GAAI,EAAG,CACrC,IAAMC,EAAO,SAASH,EAAIE,GAAI,EAAE,EAC1BE,EAAQJ,EAAIE,EAAI,GAClBE,GACFH,EAAO,KAAKG,EAAM,UAAU,EAAGD,CAAI,CAAC,CAExC,CACAJ,EAAOE,EAAO,KAAK,EAAE,CACvB,CAEA,IAAII,EAAoB,CAAE,WAAAZ,EAAY,QAAAC,EAAS,gBAAAG,EAAiB,KAAAE,CAAK,EAErE,OAAIT,EAAM,UAAY,OAASM,EAAQ,SACrCS,EAAkB,QAAaT,IAG5B,CAACN,EAAM,SAAWA,EAAM,UAAY,QAAU,OAAO,KAAKK,CAAiB,EAAE,SAChFU,EAAkB,kBAAuBV,GAGpCU,CACT,IC5CA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,KAAMC,GAAe,KAEfC,GAAgB,KAChBC,GAAiB,KAEvBH,GAAO,QAAUI,GACRC,GAAe,MAAOC,EAAQC,EAAU,CAAC,IAAM,CACpD,IAAMC,EAAQP,GAAaK,EAAQF,CAAO,EAEpCK,EAAUP,GAAcM,EAAOD,EAASH,CAAO,EAC/CM,EAAW,MAAML,EAAYI,EAASD,EAAOD,CAAO,EAE1D,OAAOJ,GAAeK,EAAOE,EAAUN,CAAO,CAChD,ICbF,IAAAO,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,SAASC,GAAO,CAAE,YAAAC,EAAa,IAAAC,CAAI,EAAG,CAClC,OAAID,IAIG,OAAOC,GAAQ,SAAWA,EAAM,IAC3C,CAEA,SAASC,GAAkBC,EAAS,CAChC,IAAMC,EAAiB,CAAC,EACxBA,EAAe,SAAW,CAAC,EAC3B,IAAMC,EAAcF,EAAQ,QAAQ,mBAC9BG,EAAWH,EAAQ,QAAQ,aAC3BI,EAAKF,GAA6BC,GAAsB,GAC9D,OAAIC,IACAH,EAAe,SAAS,SAAWG,EAAG,MAAM,GAAG,EAAE,IAE9CH,CACX,CAEAN,GAAO,QAAU,SAAwBU,EAAKC,EAAS,CACnD,IAAMN,EAAUK,GAAO,CAAC,EAQxB,GANAL,EAAQ,eAAiBD,GAAkBM,CAAG,EAC9CL,EAAQ,OAASA,EAAQ,QAAU,MACnCA,EAAQ,IAAMJ,GAAOI,CAAO,EAC5BA,EAAQ,KAAOA,EAAQ,MAAQ,GAC/BA,EAAQ,QAAUA,EAAQ,SAAW,CAAC,EAElCM,EAAQ,SAAU,CAClB,IAAMC,EAAgBP,EAAQ,IAAI,QAAQM,EAAQ,QAAQ,EAEtDC,EAAgB,KAChBP,EAAQ,IAAMA,EAAQ,IAAI,OAAOO,EAAgBD,EAAQ,SAAS,MAAM,EAEhF,CAEA,OAAON,CACX,ICxCA,IAAAQ,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAMC,GAAM,QAAQ,OAEdC,GAAU,KAEhB,SAASC,GAAeC,EAAS,CAC7B,OAAO,OAAO,KAAKA,EAAQ,OAAO,EAAE,OAAO,CAACC,EAASC,KACjDD,EAAQC,EAAI,YAAY,GAAKF,EAAQ,QAAQE,GACtCD,GACR,CAAC,CAAC,CACT,CAEA,SAASE,GAAYH,EAAS,CAC1B,IAAMI,EAAO,OAAOJ,EAAQ,QAE5B,GAAI,OAAO,SAASA,EAAQ,OAAO,EAC/B,OAAOA,EAAQ,QACZ,GAAII,IAAS,SAChB,OAAO,OAAO,KAAKJ,EAAQ,QAAS,MAAM,EACvC,GAAII,IAAS,SAChB,OAAO,OAAO,KAAK,KAAK,UAAUJ,EAAQ,OAAO,CAAC,EAGtD,MAAM,IAAI,MAAM,iCAAiC,OAAOA,EAAQ,SAAS,CAC7E,CAEAJ,GAAO,QAAWI,GAAY,CAC1B,IAAMK,EAASL,EAAQ,OACjBM,EAAQN,EAAQ,MAChBC,EAAUF,GAAeC,CAAO,EAChCO,EAAOJ,GAAYH,CAAO,EAE1BQ,EAAM,IAAIV,GAAQ,CACpB,OAAAO,EACA,QAAAJ,EACA,KAAAM,EACA,IAAKV,GAAI,OAAO,CACZ,SAAUG,EAAQ,IAClB,MAAAM,CACJ,CAAC,CACL,CAAC,EACD,OAAAE,EAAI,eAAiBR,EAAQ,eACtBQ,CACX,IC5CA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAMC,GAAmB,CAAC,OAAQ,UAAW,IAAI,EAC3CC,IAAwB,QAAQ,IAAI,sBAAwB,IAAI,MAAM,GAAG,EAE/E,SAASC,GAAiBC,EAAS,CACjC,IAAMC,EAAkBD,EAAQ,oBAEhC,GAAI,OAAOC,GAAoB,SAC7B,OAAOA,EAAgB,MAAM,GAAG,EAAE,KAAKC,GACrCL,GAAiB,KAAKM,GAAkBD,EAAM,QAAQC,CAAc,IAAM,EAAE,CAC9E,CAEJ,CAEA,SAASC,GAAgBJ,EAASK,EAAS,CACzC,IAAMC,EAAe,CAAC,EAAE,OAAOD,EAAQ,OACnCA,EAAQ,OACRP,EACJ,EAAE,IAAIS,GACJ,IAAI,OAAO,IAAIA,EAAU,QAAQ,MAAO,IAAI,IAAI,CAClD,EAEMC,GAAeR,EAAQ,iBAAmB,IAAI,MAAM,GAAG,EAAE,GAC/D,MAAO,CAAC,CAACQ,GAAeF,EAAa,KAAKC,GAAaA,EAAU,KAAKC,CAAW,CAAC,CACpF,CAEAZ,GAAO,QAAU,SAAkBI,EAASK,EAAS,CACnD,OAAIA,EAAQ,SAAW,GACd,GAGLA,EAAQ,SAAW,GACd,GAGL,OAAOA,EAAQ,QAAW,WACrBA,EAAQ,OAAOL,CAAO,EAGxBD,GAAiBC,CAAO,GAAKI,GAAgBJ,EAASK,CAAO,CACtE,mjNCzCA,IAAAI,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAMC,GAAsB,KAA6B,WAEzDD,GAAO,QAAU,SAAyBE,EAAS,CACjD,OAAO,OAAO,KAAKA,CAAO,EAAE,OAAO,CAACC,EAAMC,IAAQ,CAC9C,IAAMC,EAAQH,EAAQE,GAEtB,OAAI,MAAM,QAAQC,CAAK,EACjBD,EAAI,YAAY,IAAM,aACxBC,EAAM,QAAQ,CAACC,EAAQC,IAAM,CAC3BJ,EAAKF,GAAoBM,IAAMD,CACjC,CAAC,EAEDH,EAAKC,GAAOC,EAAM,KAAK,IAAI,EAG7BF,EAAKC,GAAOC,GAAS,KAAO,GAAKA,EAAM,SAAS,EAG3CF,CACT,EAAG,CAAC,CAAC,CACT,ICtBA,IAAAK,GAAAC,EAAA,CAAAC,GAAAC,KAAA,KAAMC,GAAW,KACXC,GAAW,KACXC,GAAkB,KAExBH,GAAO,QAAU,CAACI,EAAUC,IAAY,CACpC,GAAM,CAAE,WAAAC,CAAW,EAAIF,EACjBG,EAAUJ,GAAgBD,GAAS,QAAQE,CAAQ,CAAC,EAE1D,GAAIG,EAAQ,uBAAyB,WAAaH,EAAS,gBACvD,MAAM,IAAI,MAAM,gCAAgC,EAGpD,IAAMI,EAAkBP,GAASM,EAASF,CAAO,EAC3CI,EAAWD,EAAkB,SAAW,OACxCE,EAAOR,GAAS,KAAKE,CAAQ,EAAE,SAASK,CAAQ,EAEtD,MAAO,CAAE,OAAQH,EAAY,QAAAC,EAAS,gBAAAC,EAAiB,KAAAE,CAAK,CAChE,ICjBA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,KAAMC,GAAiB,KACjBC,GAAgB,KAChBC,GAAiB,KAEvBH,GAAO,QAAUI,GACNC,GAAe,MAAOC,EAASC,IAAQ,CAC1C,IAAMC,EAAQP,GAAeM,EAAKH,CAAO,EACnCK,EAAUP,GAAcM,EAAOJ,CAAO,EACtCM,EAAW,MAAML,EAAYI,EAASH,EAASE,CAAK,EAC1D,OAAAF,EAAQ,IAAII,CAAQ,EACbP,GAAeO,EAAUN,CAAO,CAC3C,ICXJ,IAAAO,GAAAC,EAAA,CAAAC,GAAAC,KAAA,KAAMC,GAAM,KACNC,GAAQ,KAERC,GAAY,CAChB,IAAAF,GACA,MAAAC,EACF,EAEAF,GAAO,QAAU,SAAqBI,EAAS,CAC7C,GAAM,CAAE,SAAAC,EAAW,KAAM,EAAID,EAE7B,GAAIC,KAAYF,GACd,OAAOA,GAAUE,GAAUD,CAAO,EAGpC,MAAM,IAAI,MAAM,wBAAwBC,GAAU,CACpD,IChBA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAMC,GAAS,KACTC,GAAe,KACfC,GAAc,KAEdC,GAAiB,CACrB,UAAW,cACb,EAEAJ,GAAO,QAAU,SAAUK,EAAKC,EAAM,CACpC,IAAMC,EAAU,OAAO,OAAO,CAAC,EAAGH,GAAgBE,CAAI,EAEhDE,EAAYN,GAAaG,CAAG,EAGlC,OAFiBF,GAAYI,CAAO,EAEpB,MAAOE,KAAYC,IAAY,CAC7C,MAAMT,GAAOQ,EAASF,EAAQ,QAAS,GAAGG,CAAO,EACjD,IAAMC,EAAW,MAAMH,EAAUC,CAAO,EACxC,aAAMR,GAAOU,EAAUJ,EAAQ,SAAU,GAAGG,CAAO,EAC5CC,CACT,CAAC,CACH,ICtBA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAUA,IAAIC,GAAW,QAAQ,QAAQ,SAM/BD,GAAO,QAAUE,GAMjB,IAAIC,GAAW,QAAQ,IAAI,EAM3B,SAASC,GAAmBC,EAAKC,EAAW,CAI1C,QAHIC,EAAOF,EAAI,MAAM,OAAO,EACxBG,EAAK,OAAOF,CAAS,EAAE,YAAY,EAE9B,EAAI,EAAG,EAAIC,EAAK,OAAQ,IAAK,CACpC,IAAIE,EAAMF,EAAK,GAGf,GAAIE,IAAQA,IAAQ,KAAOA,EAAI,YAAY,IAAMD,GAC/C,MAAO,EAEX,CAEA,MAAO,EACT,CAMA,SAASE,GAAiCC,EAAKC,EAAMC,EAAS,CAC5D,IAAIC,EAAa,OAAO,yBAAyBH,EAAKC,CAAI,EACtDG,EAAQD,EAAW,MAEvB,OAAAA,EAAW,IAAM,UAAmB,CAAE,OAAOC,CAAM,EAE/CD,EAAW,WACbA,EAAW,IAAM,SAAiBL,EAAK,CAAE,OAAQM,EAAQN,CAAK,GAGhE,OAAOK,EAAW,MAClB,OAAOA,EAAW,SAElB,OAAO,eAAeH,EAAKC,EAAME,CAAU,EAEpCA,CACT,CAMA,SAASE,GAAuBC,EAAO,CAGrC,QAFIZ,EAAM,GAEDa,EAAI,EAAGA,EAAID,EAAOC,IACzBb,GAAO,QAAUa,EAGnB,OAAOb,EAAI,OAAO,CAAC,CACrB,CAMA,SAASc,GAAmBC,EAAO,CACjC,IAAIf,EAAM,KAAK,KAAO,KAAO,KAAK,UAE9B,KAAK,UACPA,GAAO,eAAiB,KAAK,SAG/B,QAASa,EAAI,EAAGA,EAAIE,EAAM,OAAQF,IAChCb,GAAO;AAAA,SAAce,EAAMF,GAAG,SAAS,EAGzC,OAAOb,CACT,CAMA,SAASH,GAAMI,EAAW,CACxB,GAAI,CAACA,EACH,MAAM,IAAI,UAAU,gCAAgC,EAGtD,IAAIc,EAAQC,GAAS,EACjBC,EAAOC,GAAiBH,EAAM,EAAE,EAChCI,EAAOF,EAAK,GAEhB,SAASG,EAAWZ,EAAS,CAE3Ba,GAAI,KAAKD,EAAWZ,CAAO,CAC7B,CAEA,OAAAY,EAAU,MAAQD,EAClBC,EAAU,SAAWE,GAAUrB,CAAS,EACxCmB,EAAU,WAAanB,EACvBmB,EAAU,QAAUG,GAAStB,CAAS,EACtCmB,EAAU,QAAU,OAAO,OAAO,IAAI,EAEtCA,EAAU,SAAWI,GACrBJ,EAAU,SAAWK,GAEdL,CACT,CAcA,SAASM,GAAgBC,EAASC,EAAM,CACtC,IAAIC,EAAQ,OAAOF,EAAQ,eAAkB,WACzCA,EAAQ,UAAUC,CAAI,EAAE,OACxBD,EAAQ,cAAcC,CAAI,EAE9B,OAAOC,EAAQ,CACjB,CAMA,SAASP,GAAWrB,EAAW,CAC7B,GAAI,QAAQ,cAEV,MAAO,GAGT,IAAID,EAAM,QAAQ,IAAI,gBAAkB,GAGxC,OAAOD,GAAkBC,EAAKC,CAAS,CACzC,CAMA,SAASsB,GAAUtB,EAAW,CAC5B,GAAI,QAAQ,iBAEV,MAAO,GAGT,IAAID,EAAM,QAAQ,IAAI,mBAAqB,GAG3C,OAAOD,GAAkBC,EAAKC,CAAS,CACzC,CAMA,SAASoB,GAAKb,EAASS,EAAM,CAC3B,IAAIa,EAAeJ,GAAe,QAAS,aAAa,EAGxD,GAAI,GAACI,GAAgB,KAAK,UAI1B,KAAIC,EACAC,EACAC,EACAC,EACArB,EAAI,EACJsB,EAAO,GACPpB,EAAQC,GAAS,EACjBG,EAAO,KAAK,MAgBhB,IAdIF,GAEFiB,EAAUjB,EACVgB,EAAWf,GAAiBH,EAAM,EAAE,EACpCkB,EAAS,KAAOC,EAAQ,KACxBf,EAAOc,EAAS,KAGhBpB,EAAI,EACJqB,EAAUhB,GAAiBH,EAAMF,EAAE,EACnCoB,EAAWC,GAINrB,EAAIE,EAAM,OAAQF,IAIvB,GAHAkB,EAASb,GAAiBH,EAAMF,EAAE,EAClCmB,EAAWD,EAAO,GAEdC,IAAab,EACfgB,EAAO,WACEH,IAAa,KAAK,MAC3Bb,EAAO,KAAK,cACHgB,EACT,MAIJ,IAAIC,EAAML,EACNG,EAAQ,KAAK,GAAG,EAAI,KAAOH,EAAO,KAAK,GAAG,EAC1C,OAEJ,GAAI,EAAAK,IAAQ,QAAaA,KAAO,KAAK,SAKrC,MAAK,QAAQA,GAAO,GAGpB,IAAIC,EAAM7B,EAQV,GAPK6B,IACHA,EAAMJ,IAAaC,GAAW,CAACD,EAAS,KACpCK,GAAeJ,CAAO,EACtBI,GAAeL,CAAQ,GAIzBH,EAAc,CAChB,IAAIS,EAAMC,GAAiB,KAAK,WAAYH,EAAKtB,EAAM,MAAMF,CAAC,CAAC,EAC/D,QAAQ,KAAK,cAAe0B,CAAG,EAC/B,MACF,CAGA,IAAIE,EAAS,QAAQ,OAAO,MACxBC,GACAC,GACAC,EAASH,EAAO,KAAK,KAAMJ,EAAKN,EAAQhB,EAAM,MAAMF,CAAC,CAAC,EAC1D,QAAQ,OAAO,MAAM+B,EAAS;AAAA,EAAM,MAAM,GAC5C,CAMA,SAAS1B,GAAkBe,EAAU,CACnC,IAAId,EAAOc,EAAS,YAAY,GAAK,cACjCY,EAAOZ,EAAS,cAAc,EAC9Ba,EAAOb,EAAS,gBAAgB,EAEhCA,EAAS,OAAO,IAClBd,EAAOc,EAAS,cAAc,EAAI,KAAOd,GAG3C,IAAIF,EAAO,CAACE,EAAM0B,EAAMC,CAAI,EAE5B,OAAA7B,EAAK,SAAWgB,EAChBhB,EAAK,KAAOgB,EAAS,gBAAgB,EAE9BhB,CACT,CAMA,SAASqB,GAAgBrB,EAAM,CAC7B,IAAIgB,EAAWhB,EAAK,SAChB8B,EAAW9B,EAAK,KAGf8B,IACHA,EAAW,cAAgBC,GAAe/B,CAAI,EAAI,KAGpD,IAAIgC,EAAUhB,EAAS,QAAQ,EAC3BiB,EAAWD,GAAWhB,EAAS,YAAY,EAG/C,OAAIiB,IAAa,WACfA,EAAW,QAITA,IAAa,aACfA,EAAWD,EAAQ,MAAQC,GAGtBA,GAAYjB,EAAS,cAAc,EACtCiB,EAAW,IAAMH,EACjBA,CACN,CAMA,SAASJ,GAAaN,EAAKN,EAAQhB,EAAO,CACxC,IAAIoC,EAAY,IAAI,KAAK,EAAE,YAAY,EAEnCC,EAAYD,EACd,IAAM,KAAK,WACX,eAAiBd,EAGnB,GAAI,KAAK,QAAS,CAChB,QAASxB,EAAI,EAAGA,EAAIE,EAAM,OAAQF,IAChCuC,GAAa;AAAA,SAAcrC,EAAMF,GAAG,SAAS,EAG/C,OAAOuC,CACT,CAEA,OAAIrB,IACFqB,GAAa,OAASJ,GAAejB,CAAM,GAGtCqB,CACT,CAMA,SAASV,GAAaL,EAAKN,EAAQhB,EAAO,CACxC,IAAIqC,EAAY,aAAe,KAAK,WAAa,sDAElCf,EAAM,WAGrB,GAAI,KAAK,QAAS,CAChB,QAAS,EAAI,EAAG,EAAItB,EAAM,OAAQ,IAChCqC,GAAa;AAAA,iBAAsBrC,EAAM,GAAG,SAAS,EAAI,WAG3D,OAAOqC,CACT,CAEA,OAAIrB,IACFqB,GAAa,YAAcJ,GAAejB,CAAM,EAAI,YAG/CqB,CACT,CAMA,SAASJ,GAAgBf,EAAU,CACjC,OAAOrC,GAASE,GAAUmC,EAAS,EAAE,EACnC,IAAMA,EAAS,GACf,IAAMA,EAAS,EACnB,CAMA,SAASjB,IAAY,CACnB,IAAIqC,EAAQ,MAAM,gBACd/C,EAAM,CAAC,EACPgD,EAAO,MAAM,kBAEjB,MAAM,kBAAoBC,GAC1B,MAAM,gBAAkB,KAAK,IAAI,GAAIF,CAAK,EAG1C,MAAM,kBAAkB/C,CAAG,EAG3B,IAAIS,EAAQT,EAAI,MAAM,MAAM,CAAC,EAE7B,aAAM,kBAAoBgD,EAC1B,MAAM,gBAAkBD,EAEjBtC,CACT,CAMA,SAASwC,GAAyBjD,EAAKS,EAAO,CAC5C,OAAOA,CACT,CAMA,SAASS,GAAcgC,EAAIhD,EAAS,CAClC,GAAI,OAAOgD,GAAO,WAChB,MAAM,IAAI,UAAU,gCAAgC,EAGtD,IAAIC,EAAO9C,GAAsB6C,EAAG,MAAM,EACtCzC,EAAQC,GAAS,EACjBC,EAAOC,GAAiBH,EAAM,EAAE,EAEpCE,EAAK,KAAOuC,EAAG,KAGf,IAAIE,EAAe,IAAI,SAAS,KAAM,MAAO,YAAa,UAAW,OACnE;AAAA,mBACsBD,EAAO;AAAA;AAAA,EAG1B,EAAED,EAAInC,GAAK,KAAMb,EAASS,CAAI,EAEnC,OAAOyC,CACT,CAMA,SAASjC,GAAcnB,EAAKC,EAAMC,EAAS,CACzC,GAAI,CAACF,GAAQ,OAAOA,GAAQ,UAAY,OAAOA,GAAQ,WACrD,MAAM,IAAI,UAAU,6BAA6B,EAGnD,IAAIG,EAAa,OAAO,yBAAyBH,EAAKC,CAAI,EAE1D,GAAI,CAACE,EACH,MAAM,IAAI,UAAU,oCAAoC,EAG1D,GAAI,CAACA,EAAW,aACd,MAAM,IAAI,UAAU,+BAA+B,EAGrD,IAAIW,EAAY,KACZL,EAAQC,GAAS,EACjBC,EAAOC,GAAiBH,EAAM,EAAE,EAGpCE,EAAK,KAAOV,EAGR,UAAWE,IACbA,EAAaJ,GAAgCC,EAAKC,EAAMC,CAAO,GAGjE,IAAImD,EAAMlD,EAAW,IACjBmD,EAAMnD,EAAW,IAGjB,OAAOkD,GAAQ,aACjBlD,EAAW,IAAM,UAAmB,CAClC,OAAAY,GAAI,KAAKD,EAAWZ,EAASS,CAAI,EAC1B0C,EAAI,MAAM,KAAM,SAAS,CAClC,GAIE,OAAOC,GAAQ,aACjBnD,EAAW,IAAM,UAAmB,CAClC,OAAAY,GAAI,KAAKD,EAAWZ,EAASS,CAAI,EAC1B2C,EAAI,MAAM,KAAM,SAAS,CAClC,GAGF,OAAO,eAAetD,EAAKC,EAAME,CAAU,CAC7C,CAMA,SAAS+B,GAAkBvC,EAAWO,EAASO,EAAO,CACpD,IAAI8C,EAAQ,IAAI,MACZC,EAEJ,cAAO,eAAeD,EAAO,cAAe,CAC1C,MAAOrB,EACT,CAAC,EAED,OAAO,eAAeqB,EAAO,UAAW,CACtC,aAAc,GACd,WAAY,GACZ,MAAOrD,EACP,SAAU,EACZ,CAAC,EAED,OAAO,eAAeqD,EAAO,OAAQ,CACnC,WAAY,GACZ,aAAc,GACd,MAAO,mBACP,SAAU,EACZ,CAAC,EAED,OAAO,eAAeA,EAAO,YAAa,CACxC,aAAc,GACd,WAAY,GACZ,MAAO5D,EACP,SAAU,EACZ,CAAC,EAED,OAAO,eAAe4D,EAAO,QAAS,CACpC,aAAc,GACd,WAAY,GACZ,IAAK,UAAY,CACf,OAAIC,IAAgB,OACXA,EAIDA,EAAchD,GAAkB,KAAK,KAAMC,CAAK,CAC1D,EACA,IAAK,SAAiBX,EAAK,CACzB0D,EAAc1D,CAChB,CACF,CAAC,EAEMyD,CACT,ICzhBA,IAAAE,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAcAA,GAAO,QAAUC,GACjBD,GAAO,QAAQ,OAASE,GACxBF,GAAO,QAAQ,MAAQG,GAOvB,IAAIC,GAAwB,wBAExBC,GAAuB,wBAEvBC,GAAM,CACR,EAAI,EACJ,GAAI,GAAK,GACT,GAAI,GAAK,GACT,GAAI,GAAK,GACT,GAAI,KAAK,IAAI,KAAM,CAAC,EACpB,GAAI,KAAK,IAAI,KAAM,CAAC,CACtB,EAEIC,GAAc,gDAiBlB,SAASN,GAAMO,EAAOC,EAAS,CAC7B,OAAI,OAAOD,GAAU,SACZL,GAAMK,CAAK,EAGhB,OAAOA,GAAU,SACZN,GAAOM,EAAOC,CAAO,EAGvB,IACT,CAoBA,SAASP,GAAOM,EAAOC,EAAS,CAC9B,GAAI,CAAC,OAAO,SAASD,CAAK,EACxB,OAAO,KAGT,IAAIE,EAAM,KAAK,IAAIF,CAAK,EACpBG,EAAsBF,GAAWA,EAAQ,oBAAuB,GAChEG,EAAiBH,GAAWA,EAAQ,eAAkB,GACtDI,EAAiBJ,GAAWA,EAAQ,gBAAkB,OAAaA,EAAQ,cAAgB,EAC3FK,EAAgB,QAAQL,GAAWA,EAAQ,aAAa,EACxDM,EAAQN,GAAWA,EAAQ,MAAS,IAEpC,CAACM,GAAQ,CAACT,GAAIS,EAAK,YAAY,MAC7BL,GAAOJ,GAAI,GACbS,EAAO,KACEL,GAAOJ,GAAI,GACpBS,EAAO,KACEL,GAAOJ,GAAI,GACpBS,EAAO,KACEL,GAAOJ,GAAI,GACpBS,EAAO,KACEL,GAAOJ,GAAI,GACpBS,EAAO,KAEPA,EAAO,KAIX,IAAIC,EAAMR,EAAQF,GAAIS,EAAK,YAAY,GACnCE,EAAMD,EAAI,QAAQH,CAAa,EAEnC,OAAKC,IACHG,EAAMA,EAAI,QAAQZ,GAAsB,IAAI,GAG1CM,IACFM,EAAMA,EAAI,MAAM,GAAG,EAAE,IAAI,SAAUC,EAAGC,EAAG,CACvC,OAAOA,IAAM,EACTD,EAAE,QAAQd,GAAuBO,CAAkB,EACnDO,CACN,CAAC,EAAE,KAAK,GAAG,GAGND,EAAML,EAAgBG,CAC/B,CAaA,SAASZ,GAAMa,EAAK,CAClB,GAAI,OAAOA,GAAQ,UAAY,CAAC,MAAMA,CAAG,EACvC,OAAOA,EAGT,GAAI,OAAOA,GAAQ,SACjB,OAAO,KAIT,IAAII,EAAUb,GAAY,KAAKS,CAAG,EAC9BK,EACAN,EAAO,IAYX,OAVKK,GAMHC,EAAa,WAAWD,EAAQ,EAAE,EAClCL,EAAOK,EAAQ,GAAG,YAAY,IAL9BC,EAAa,SAASL,EAAK,EAAE,EAC7BD,EAAO,KAOL,MAAMM,CAAU,EACX,KAGF,KAAK,MAAMf,GAAIS,GAAQM,CAAU,CAC1C,ICzKA,IAAAC,GAAAC,EAAAC,IAAA,cAsBA,IAAIC,GAAe,mKACfC,GAAc,wCACdC,GAAe,gCAQfC,GAAc,6BAKdC,GAAe,WASfC,GAAc,6DAOlBN,GAAQ,OAASO,GACjBP,GAAQ,MAAQQ,GAUhB,SAASD,GAAQE,EAAK,CACpB,GAAI,CAACA,GAAO,OAAOA,GAAQ,SACzB,MAAM,IAAI,UAAU,0BAA0B,EAGhD,IAAIC,EAAaD,EAAI,WACjBE,EAAOF,EAAI,KAEf,GAAI,CAACE,GAAQ,CAACL,GAAY,KAAKK,CAAI,EACjC,MAAM,IAAI,UAAU,cAAc,EAGpC,IAAIC,EAASD,EAGb,GAAID,GAAc,OAAOA,GAAe,SAItC,QAHIG,EACAC,EAAS,OAAO,KAAKJ,CAAU,EAAE,KAAK,EAEjCK,EAAI,EAAGA,EAAID,EAAO,OAAQC,IAAK,CAGtC,GAFAF,EAAQC,EAAOC,GAEX,CAACZ,GAAa,KAAKU,CAAK,EAC1B,MAAM,IAAI,UAAU,wBAAwB,EAG9CD,GAAU,KAAOC,EAAQ,IAAMG,GAAQN,EAAWG,EAAM,CAC1D,CAGF,OAAOD,CACT,CAUA,SAASJ,GAAOI,EAAQ,CACtB,GAAI,CAACA,EACH,MAAM,IAAI,UAAU,6BAA6B,EAInD,IAAIK,EAAS,OAAOL,GAAW,SAC3BM,GAAeN,CAAM,EACrBA,EAEJ,GAAI,OAAOK,GAAW,SACpB,MAAM,IAAI,UAAU,4CAA4C,EAGlE,IAAIE,EAAQF,EAAO,QAAQ,GAAG,EAC1BN,EAAOQ,IAAU,GACjBF,EAAO,MAAM,EAAGE,CAAK,EAAE,KAAK,EAC5BF,EAAO,KAAK,EAEhB,GAAI,CAACX,GAAY,KAAKK,CAAI,EACxB,MAAM,IAAI,UAAU,oBAAoB,EAG1C,IAAIF,EAAM,IAAIW,GAAYT,EAAK,YAAY,CAAC,EAG5C,GAAIQ,IAAU,GAAI,CAChB,IAAIE,EACAC,EACAC,EAIJ,IAFAtB,GAAa,UAAYkB,EAEjBG,EAAQrB,GAAa,KAAKgB,CAAM,GAAI,CAC1C,GAAIK,EAAM,QAAUH,EAClB,MAAM,IAAI,UAAU,0BAA0B,EAGhDA,GAASG,EAAM,GAAG,OAClBD,EAAMC,EAAM,GAAG,YAAY,EAC3BC,EAAQD,EAAM,GAEVC,EAAM,WAAW,CAAC,IAAM,KAE1BA,EAAQA,EAAM,MAAM,EAAG,EAAE,EAGrBA,EAAM,QAAQ,IAAI,IAAM,KAC1BA,EAAQA,EAAM,QAAQnB,GAAa,IAAI,IAI3CK,EAAI,WAAWY,GAAOE,CACxB,CAEA,GAAIJ,IAAUF,EAAO,OACnB,MAAM,IAAI,UAAU,0BAA0B,CAElD,CAEA,OAAOR,CACT,CAUA,SAASS,GAAgBT,EAAK,CAC5B,IAAIQ,EAUJ,GARI,OAAOR,EAAI,WAAc,WAE3BQ,EAASR,EAAI,UAAU,cAAc,EAC5B,OAAOA,EAAI,SAAY,WAEhCQ,EAASR,EAAI,SAAWA,EAAI,QAAQ,iBAGlC,OAAOQ,GAAW,SACpB,MAAM,IAAI,UAAU,4CAA4C,EAGlE,OAAOA,CACT,CAUA,SAASD,GAASQ,EAAK,CACrB,IAAIC,EAAM,OAAOD,CAAG,EAGpB,GAAIrB,GAAa,KAAKsB,CAAG,EACvB,OAAOA,EAGT,GAAIA,EAAI,OAAS,GAAK,CAACvB,GAAY,KAAKuB,CAAG,EACzC,MAAM,IAAI,UAAU,yBAAyB,EAG/C,MAAO,IAAMA,EAAI,QAAQpB,GAAc,MAAM,EAAI,GACnD,CAMA,SAASe,GAAaT,EAAM,CAC1B,KAAK,WAAa,OAAO,OAAO,IAAI,EACpC,KAAK,KAAOA,CACd,IChOA,IAAAe,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEAA,GAAO,QAAU,OAAO,iBAAmB,CAAE,UAAW,CAAC,CAAE,YAAa,MAAQC,GAAaC,IAE7F,SAASD,GAAYE,EAAKC,EAAO,CAC/B,OAAAD,EAAI,UAAYC,EACTD,CACT,CAEA,SAASD,GAAiBC,EAAKC,EAAO,CACpC,QAASC,KAAQD,EACV,OAAO,UAAU,eAAe,KAAKD,EAAKE,CAAI,IACjDF,EAAIE,GAAQD,EAAMC,IAGtB,OAAOF,CACT,oiDChBA,IAAAG,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAcA,IAAIC,GAAQ,KAOZD,GAAO,QAAUE,GAGjBA,GAAO,QAAUD,GAGjBC,GAAO,KAAOC,GAA6BF,EAAK,EAGhDC,GAAO,MAAQE,GAAqBH,EAAK,EAGzCC,GAAO,SAAW,CAChB,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,EACP,EAGAA,GAAO,MAAQ,CACb,IAAK,GACL,IAAK,GACL,IAAK,EACP,EAGAA,GAAO,MAAQ,CACb,IAAK,GACL,IAAK,GACL,IAAK,EACP,EAOA,SAASC,GAA8BF,EAAO,CAC5C,IAAII,EAAM,CAAC,EAEX,cAAO,KAAKJ,CAAK,EAAE,QAAQ,SAAsBK,EAAM,CACrD,IAAIC,EAAUN,EAAMK,GAChBJ,EAAS,OAAOI,CAAI,EAGxBD,EAAIE,EAAQ,YAAY,GAAKL,CAC/B,CAAC,EAEMG,CACT,CAOA,SAASD,GAAsBH,EAAO,CACpC,OAAO,OAAO,KAAKA,CAAK,EAAE,IAAI,SAAkBK,EAAM,CACpD,OAAO,OAAOA,CAAI,CACpB,CAAC,CACH,CAOA,SAASE,GAAeD,EAAS,CAC/B,IAAIE,EAAMF,EAAQ,YAAY,EAE9B,GAAI,CAAC,OAAO,UAAU,eAAe,KAAKL,GAAO,KAAMO,CAAG,EACxD,MAAM,IAAI,MAAM,4BAA8BF,EAAU,GAAG,EAG7D,OAAOL,GAAO,KAAKO,EACrB,CAOA,SAASC,GAAkBJ,EAAM,CAC/B,GAAI,CAAC,OAAO,UAAU,eAAe,KAAKJ,GAAO,QAASI,CAAI,EAC5D,MAAM,IAAI,MAAM,wBAA0BA,CAAI,EAGhD,OAAOJ,GAAO,QAAQI,EACxB,CAgBA,SAASJ,GAAQI,EAAM,CACrB,GAAI,OAAOA,GAAS,SAClB,OAAOI,GAAiBJ,CAAI,EAG9B,GAAI,OAAOA,GAAS,SAClB,MAAM,IAAI,UAAU,iCAAiC,EAIvD,IAAIK,EAAI,SAASL,EAAM,EAAE,EACzB,OAAK,MAAMK,CAAC,EAILH,GAAcF,CAAI,EAHhBI,GAAiBC,CAAC,CAI7B,ICjJA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAAI,OAAO,OAAO,QAAW,WAE3BA,GAAO,QAAU,SAAkBC,EAAMC,EAAW,CAC9CA,IACFD,EAAK,OAASC,EACdD,EAAK,UAAY,OAAO,OAAOC,EAAU,UAAW,CAClD,YAAa,CACX,MAAOD,EACP,WAAY,GACZ,SAAU,GACV,aAAc,EAChB,CACF,CAAC,EAEL,EAGAD,GAAO,QAAU,SAAkBC,EAAMC,EAAW,CAClD,GAAIA,EAAW,CACbD,EAAK,OAASC,EACd,IAAIC,EAAW,UAAY,CAAC,EAC5BA,EAAS,UAAYD,EAAU,UAC/BD,EAAK,UAAY,IAAIE,EACrBF,EAAK,UAAU,YAAcA,CAC/B,CACF,ICzBF,IAAAG,GAAAC,EAAA,CAAAC,GAAAC,KAAA,IAAI,CAGF,GAFIC,GAAO,QAAQ,QAEf,OAAOA,GAAK,UAAa,WAAY,KAAM,GAC/CD,GAAO,QAAUC,GAAK,QACxB,MAAE,CAEAD,GAAO,QAAU,IACnB,CAPM,IAAAC,KCDN,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAaAA,GAAO,QAAUC,GAUjB,SAASA,GAAcC,EAAK,CAC1B,OAAOA,EACJ,MAAM,GAAG,EACT,IAAI,SAAUC,EAAO,CACpB,OAAOA,EAAM,MAAM,EAAG,CAAC,EAAE,YAAY,EAAIA,EAAM,MAAM,CAAC,CACxD,CAAC,EACA,KAAK,EAAE,EACP,QAAQ,gBAAiB,EAAE,CAChC,IC/BA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAcA,IAAIC,GAAY,KAAgB,aAAa,EACzCC,GAAiB,KACjBC,GAAW,KACXC,GAAW,KACXC,GAAe,KAOnBL,GAAO,QAAUM,GACjBN,GAAO,QAAQ,UAAYO,GAA2B,EACtDP,GAAO,QAAQ,YAAcQ,GAA0BR,GAAO,QAAQ,SAAS,EAG/ES,GAA2BT,GAAO,QAASG,GAAS,MAAOH,GAAO,QAAQ,SAAS,EAOnF,SAASU,GAAWC,EAAQ,CAC1B,OAAO,OAAO,OAAOA,CAAM,EAAE,OAAO,CAAC,EAAI,IAAI,CAC/C,CASA,SAASL,IAAe,CAMtB,QAJIM,EACAC,EACAF,EAAS,IACTG,EAAQ,CAAC,EACJ,EAAI,EAAG,EAAI,UAAU,OAAQ,IAAK,CACzC,IAAIC,EAAM,UAAU,GAChBC,EAAO,OAAOD,EAClB,GAAIC,IAAS,UAAYD,aAAe,MACtCH,EAAMG,EACNJ,EAASC,EAAI,QAAUA,EAAI,YAAcD,UAChCK,IAAS,UAAY,IAAM,EACpCL,EAASI,UACAC,IAAS,SAClBH,EAAME,UACGC,IAAS,SAClBF,EAAQC,MAER,OAAM,IAAI,UAAU,cAAgB,EAAI,GAAK,qBAAuBC,CAAI,CAE5E,CAEI,OAAOL,GAAW,WAAaA,EAAS,KAAOA,GAAU,MAC3DV,GAAU,yDAAyD,GAGjE,OAAOU,GAAW,UACnB,CAACR,GAAS,QAAQQ,KAAYA,EAAS,KAAOA,GAAU,QACzDA,EAAS,KAIX,IAAIM,EAAYX,GAAYK,IAAWL,GAAYI,GAAUC,CAAM,GAE9DC,IAEHA,EAAMK,EACF,IAAIA,EAAUJ,CAAG,EACjB,IAAI,MAAMA,GAAOV,GAAS,QAAQQ,EAAO,EAC7C,MAAM,kBAAkBC,EAAKN,EAAW,IAGtC,CAACW,GAAa,EAAEL,aAAeK,IAAcL,EAAI,SAAWD,KAE9DC,EAAI,OAASD,EAAS,IACtBC,EAAI,OAASA,EAAI,WAAaD,GAGhC,QAASO,KAAOJ,EACVI,IAAQ,UAAYA,IAAQ,eAC9BN,EAAIM,GAAOJ,EAAMI,IAIrB,OAAON,CACT,CAOA,SAASL,IAA8B,CACrC,SAASU,GAAa,CACpB,MAAM,IAAI,UAAU,iCAAiC,CACvD,CAEA,OAAAb,GAASa,EAAW,KAAK,EAElBA,CACT,CAOA,SAASE,GAA8BF,EAAWG,EAAMC,EAAM,CAC5D,IAAIC,EAAYC,GAAYH,CAAI,EAEhC,SAASI,EAAaC,EAAS,CAE7B,IAAIZ,EAAMY,GAA4BtB,GAAS,QAAQkB,GACnDT,EAAM,IAAI,MAAMC,CAAG,EAGvB,aAAM,kBAAkBD,EAAKY,CAAW,EAGxCtB,GAAeU,EAAKY,EAAY,SAAS,EAGzC,OAAO,eAAeZ,EAAK,UAAW,CACpC,WAAY,GACZ,aAAc,GACd,MAAOC,EACP,SAAU,EACZ,CAAC,EAGD,OAAO,eAAeD,EAAK,OAAQ,CACjC,WAAY,GACZ,aAAc,GACd,MAAOU,EACP,SAAU,EACZ,CAAC,EAEMV,CACT,CAEA,OAAAR,GAASoB,EAAaP,CAAS,EAC/BS,GAASF,EAAaF,CAAS,EAE/BE,EAAY,UAAU,OAASH,EAC/BG,EAAY,UAAU,WAAaH,EACnCG,EAAY,UAAU,OAAS,GAExBA,CACT,CAOA,SAAShB,GAA2BS,EAAW,CAC7C,OAAO,SAAsBU,EAAK,CAChC,MAAI,CAACA,GAAO,OAAOA,GAAQ,SAClB,GAGLA,aAAeV,EACV,GAGFU,aAAe,OACpB,OAAOA,EAAI,QAAW,WACtB,OAAOA,EAAI,YAAe,UAAYA,EAAI,SAAWA,EAAI,UAC7D,CACF,CAOA,SAASC,GAA8BX,EAAWG,EAAMC,EAAM,CAC5D,IAAIC,EAAYC,GAAYH,CAAI,EAEhC,SAASS,EAAaJ,EAAS,CAE7B,IAAIZ,EAAMY,GAA4BtB,GAAS,QAAQkB,GACnDT,EAAM,IAAI,MAAMC,CAAG,EAGvB,aAAM,kBAAkBD,EAAKiB,CAAW,EAGxC3B,GAAeU,EAAKiB,EAAY,SAAS,EAGzC,OAAO,eAAejB,EAAK,UAAW,CACpC,WAAY,GACZ,aAAc,GACd,MAAOC,EACP,SAAU,EACZ,CAAC,EAGD,OAAO,eAAeD,EAAK,OAAQ,CACjC,WAAY,GACZ,aAAc,GACd,MAAOU,EACP,SAAU,EACZ,CAAC,EAEMV,CACT,CAEA,OAAAR,GAASyB,EAAaZ,CAAS,EAC/BS,GAASG,EAAaP,CAAS,EAE/BO,EAAY,UAAU,OAASR,EAC/BQ,EAAY,UAAU,WAAaR,EACnCQ,EAAY,UAAU,OAAS,GAExBA,CACT,CAOA,SAASH,GAAUI,EAAMV,EAAM,CAC7B,IAAIW,EAAO,OAAO,yBAAyBD,EAAM,MAAM,EAEnDC,GAAQA,EAAK,eACfA,EAAK,MAAQX,EACb,OAAO,eAAeU,EAAM,OAAQC,CAAI,EAE5C,CAOA,SAAStB,GAA4BV,EAASiC,EAAOf,EAAW,CAC9De,EAAM,QAAQ,SAAsBX,EAAM,CACxC,IAAIY,EACAb,EAAOf,GAAaF,GAAS,QAAQkB,EAAK,EAE9C,OAAQX,GAAUW,CAAI,EAAG,CACvB,IAAK,KACHY,EAAYd,GAA6BF,EAAWG,EAAMC,CAAI,EAC9D,MACF,IAAK,KACHY,EAAYL,GAA6BX,EAAWG,EAAMC,CAAI,EAC9D,KACJ,CAEIY,IAEFlC,EAAQsB,GAAQY,EAChBlC,EAAQqB,GAAQa,EAEpB,CAAC,CACH,CAOA,SAASV,GAAaH,EAAM,CAC1B,OAAOA,EAAK,OAAO,EAAE,IAAM,QACvBA,EAAO,QACPA,CACN,IChSA,IAAAc,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAIA,IAAIC,GAAI,IACJC,GAAID,GAAI,GACRE,GAAID,GAAI,GACRE,GAAID,GAAI,GACRE,GAAID,GAAI,OAgBZJ,GAAO,QAAU,SAASM,EAAKC,EAAS,CACtCA,EAAUA,GAAW,CAAC,EACtB,IAAIC,EAAO,OAAOF,EAClB,GAAIE,IAAS,UAAYF,EAAI,OAAS,EACpC,OAAOG,GAAMH,CAAG,EACX,GAAIE,IAAS,UAAY,MAAMF,CAAG,IAAM,GAC7C,OAAOC,EAAQ,KAAOG,GAAQJ,CAAG,EAAIK,GAASL,CAAG,EAEnD,MAAM,IAAI,MACR,wDACE,KAAK,UAAUA,CAAG,CACtB,CACF,EAUA,SAASG,GAAMG,EAAK,CAElB,GADAA,EAAM,OAAOA,CAAG,EACZ,EAAAA,EAAI,OAAS,KAGjB,KAAIC,EAAQ,wHAAwH,KAClID,CACF,EACA,GAAI,EAACC,EAGL,KAAIC,EAAI,WAAWD,EAAM,EAAE,EACvBL,GAAQK,EAAM,IAAM,MAAM,YAAY,EAC1C,OAAQL,EAAM,CACZ,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,OAAOM,EAAIT,GACb,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOS,EAAIV,GACb,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,OAAOU,EAAIX,GACb,IAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOW,EAAIZ,GACb,IAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOY,EAAIb,GACb,IAAK,eACL,IAAK,cACL,IAAK,QACL,IAAK,OACL,IAAK,KACH,OAAOa,EACT,QACE,MACJ,GACF,CAUA,SAASH,GAASI,EAAI,CACpB,OAAIA,GAAMX,GACD,KAAK,MAAMW,EAAKX,EAAC,EAAI,IAE1BW,GAAMZ,GACD,KAAK,MAAMY,EAAKZ,EAAC,EAAI,IAE1BY,GAAMb,GACD,KAAK,MAAMa,EAAKb,EAAC,EAAI,IAE1Ba,GAAMd,GACD,KAAK,MAAMc,EAAKd,EAAC,EAAI,IAEvBc,EAAK,IACd,CAUA,SAASL,GAAQK,EAAI,CACnB,OAAOC,GAAOD,EAAIX,GAAG,KAAK,GACxBY,GAAOD,EAAIZ,GAAG,MAAM,GACpBa,GAAOD,EAAIb,GAAG,QAAQ,GACtBc,GAAOD,EAAId,GAAG,QAAQ,GACtBc,EAAK,KACT,CAMA,SAASC,GAAOD,EAAID,EAAGG,EAAM,CAC3B,GAAI,EAAAF,EAAKD,GAGT,OAAIC,EAAKD,EAAI,IACJ,KAAK,MAAMC,EAAKD,CAAC,EAAI,IAAMG,EAE7B,KAAK,KAAKF,EAAKD,CAAC,EAAI,IAAMG,EAAO,GAC1C,ICvJA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAQAD,GAAUC,GAAO,QAAUC,GAAY,MAAQA,GAAY,QAAaA,GACxEF,GAAQ,OAASG,GACjBH,GAAQ,QAAUI,GAClBJ,GAAQ,OAASK,GACjBL,GAAQ,QAAUM,GAClBN,GAAQ,SAAW,KAMnBA,GAAQ,MAAQ,CAAC,EACjBA,GAAQ,MAAQ,CAAC,EAQjBA,GAAQ,WAAa,CAAC,EAMtB,IAAIO,GASJ,SAASC,GAAYC,EAAW,CAC9B,IAAIC,EAAO,EAAGC,EAEd,IAAKA,KAAKF,EACRC,GAAUA,GAAQ,GAAKA,EAAQD,EAAU,WAAWE,CAAC,EACrDD,GAAQ,EAGV,OAAOV,GAAQ,OAAO,KAAK,IAAIU,CAAI,EAAIV,GAAQ,OAAO,OACxD,CAUA,SAASE,GAAYO,EAAW,CAE9B,SAASG,GAAQ,CAEf,GAAI,EAACA,EAAM,QAEX,KAAIC,EAAOD,EAGPE,EAAO,CAAC,IAAI,KACZC,EAAKD,GAAQP,IAAYO,GAC7BD,EAAK,KAAOE,EACZF,EAAK,KAAON,GACZM,EAAK,KAAOC,EACZP,GAAWO,EAIX,QADIE,EAAO,IAAI,MAAM,UAAU,MAAM,EAC5BL,EAAI,EAAGA,EAAIK,EAAK,OAAQL,IAC/BK,EAAKL,GAAK,UAAUA,GAGtBK,EAAK,GAAKhB,GAAQ,OAAOgB,EAAK,EAAE,EAEf,OAAOA,EAAK,IAAzB,UAEFA,EAAK,QAAQ,IAAI,EAInB,IAAIC,EAAQ,EACZD,EAAK,GAAKA,EAAK,GAAG,QAAQ,gBAAiB,SAASE,EAAOC,EAAQ,CAEjE,GAAID,IAAU,KAAM,OAAOA,EAC3BD,IACA,IAAIG,EAAYpB,GAAQ,WAAWmB,GACnC,GAAmB,OAAOC,GAAtB,WAAiC,CACnC,IAAIC,EAAML,EAAKC,GACfC,EAAQE,EAAU,KAAKP,EAAMQ,CAAG,EAGhCL,EAAK,OAAOC,EAAO,CAAC,EACpBA,GACF,CACA,OAAOC,CACT,CAAC,EAGDlB,GAAQ,WAAW,KAAKa,EAAMG,CAAI,EAElC,IAAIM,EAAQV,EAAM,KAAOZ,GAAQ,KAAO,QAAQ,IAAI,KAAK,OAAO,EAChEsB,EAAM,MAAMT,EAAMG,CAAI,EACxB,CAEA,OAAAJ,EAAM,UAAYH,EAClBG,EAAM,QAAUZ,GAAQ,QAAQS,CAAS,EACzCG,EAAM,UAAYZ,GAAQ,UAAU,EACpCY,EAAM,MAAQJ,GAAYC,CAAS,EAGhB,OAAOT,GAAQ,MAA9B,YACFA,GAAQ,KAAKY,CAAK,EAGbA,CACT,CAUA,SAASP,GAAOkB,EAAY,CAC1BvB,GAAQ,KAAKuB,CAAU,EAEvBvB,GAAQ,MAAQ,CAAC,EACjBA,GAAQ,MAAQ,CAAC,EAKjB,QAHIwB,GAAS,OAAOD,GAAe,SAAWA,EAAa,IAAI,MAAM,QAAQ,EACzEE,EAAMD,EAAM,OAEPb,EAAI,EAAGA,EAAIc,EAAKd,IACnB,CAACa,EAAMb,KACXY,EAAaC,EAAMb,GAAG,QAAQ,MAAO,KAAK,EACtCY,EAAW,KAAO,IACpBvB,GAAQ,MAAM,KAAK,IAAI,OAAO,IAAMuB,EAAW,OAAO,CAAC,EAAI,GAAG,CAAC,EAE/DvB,GAAQ,MAAM,KAAK,IAAI,OAAO,IAAMuB,EAAa,GAAG,CAAC,EAG3D,CAQA,SAASnB,IAAU,CACjBJ,GAAQ,OAAO,EAAE,CACnB,CAUA,SAASM,GAAQoB,EAAM,CACrB,IAAIf,EAAGc,EACP,IAAKd,EAAI,EAAGc,EAAMzB,GAAQ,MAAM,OAAQW,EAAIc,EAAKd,IAC/C,GAAIX,GAAQ,MAAMW,GAAG,KAAKe,CAAI,EAC5B,MAAO,GAGX,IAAKf,EAAI,EAAGc,EAAMzB,GAAQ,MAAM,OAAQW,EAAIc,EAAKd,IAC/C,GAAIX,GAAQ,MAAMW,GAAG,KAAKe,CAAI,EAC5B,MAAO,GAGX,MAAO,EACT,CAUA,SAASvB,GAAOkB,EAAK,CACnB,OAAIA,aAAe,MAAcA,EAAI,OAASA,EAAI,QAC3CA,CACT,ICzMA,IAAAM,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAMAD,GAAUC,GAAO,QAAU,KAC3BD,GAAQ,IAAME,GACdF,GAAQ,WAAaG,GACrBH,GAAQ,KAAOI,GACfJ,GAAQ,KAAOK,GACfL,GAAQ,UAAYM,GACpBN,GAAQ,QAAyB,OAAO,OAAtB,KACe,OAAO,OAAO,QAA7B,IACE,OAAO,QAAQ,MACfO,GAAa,EAMjCP,GAAQ,OAAS,CACf,gBACA,cACA,YACA,aACA,aACA,SACF,EAUA,SAASM,IAAY,CAInB,OAAI,OAAO,OAAW,KAAe,OAAO,SAAW,OAAO,QAAQ,OAAS,WACtE,GAKD,OAAO,SAAa,KAAe,SAAS,iBAAmB,SAAS,gBAAgB,OAAS,SAAS,gBAAgB,MAAM,kBAErI,OAAO,OAAW,KAAe,OAAO,UAAY,OAAO,QAAQ,SAAY,OAAO,QAAQ,WAAa,OAAO,QAAQ,QAG1H,OAAO,UAAc,KAAe,UAAU,WAAa,UAAU,UAAU,YAAY,EAAE,MAAM,gBAAgB,GAAK,SAAS,OAAO,GAAI,EAAE,GAAK,IAEnJ,OAAO,UAAc,KAAe,UAAU,WAAa,UAAU,UAAU,YAAY,EAAE,MAAM,oBAAoB,CAC5H,CAMAN,GAAQ,WAAW,EAAI,SAASQ,EAAG,CACjC,GAAI,CACF,OAAO,KAAK,UAAUA,CAAC,CACzB,OAASC,EAAP,CACA,MAAO,+BAAiCA,EAAI,OAC9C,CACF,EASA,SAASN,GAAWO,EAAM,CACxB,IAAIJ,EAAY,KAAK,UASrB,GAPAI,EAAK,IAAMJ,EAAY,KAAO,IAC1B,KAAK,WACJA,EAAY,MAAQ,KACrBI,EAAK,IACJJ,EAAY,MAAQ,KACrB,IAAMN,GAAQ,SAAS,KAAK,IAAI,EAEhC,EAACM,EAEL,KAAIK,EAAI,UAAY,KAAK,MACzBD,EAAK,OAAO,EAAG,EAAGC,EAAG,gBAAgB,EAKrC,IAAIC,EAAQ,EACRC,EAAQ,EACZH,EAAK,GAAG,QAAQ,cAAe,SAASI,EAAO,CAChCA,IAAT,OACJF,IACaE,IAAT,OAGFD,EAAQD,GAEZ,CAAC,EAEDF,EAAK,OAAOG,EAAO,EAAGF,CAAC,EACzB,CASA,SAAST,IAAM,CAGb,OAAoB,OAAO,SAApB,UACF,QAAQ,KACR,SAAS,UAAU,MAAM,KAAK,QAAQ,IAAK,QAAS,SAAS,CACpE,CASA,SAASE,GAAKW,EAAY,CACxB,GAAI,CACUA,GAAR,KACFf,GAAQ,QAAQ,WAAW,OAAO,EAElCA,GAAQ,QAAQ,MAAQe,CAE5B,MAAE,CAAU,CACd,CASA,SAASV,IAAO,CACd,IAAIW,EACJ,GAAI,CACFA,EAAIhB,GAAQ,QAAQ,KACtB,MAAE,CAAU,CAGZ,MAAI,CAACgB,GAAK,OAAO,QAAY,KAAe,QAAS,UACnDA,EAAI,QAAQ,IAAI,OAGXA,CACT,CAMAhB,GAAQ,OAAOK,GAAK,CAAC,EAarB,SAASE,IAAe,CACtB,GAAI,CACF,OAAO,OAAO,YAChB,MAAE,CAAW,CACf,ICxLA,IAAAU,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAIA,IAAIC,GAAM,QAAQ,OACdC,GAAO,QAAQ,QAQnBH,GAAUC,GAAO,QAAU,KAC3BD,GAAQ,KAAOI,GACfJ,GAAQ,IAAMK,GACdL,GAAQ,WAAaM,GACrBN,GAAQ,KAAOO,GACfP,GAAQ,KAAOQ,GACfR,GAAQ,UAAYS,GAMpBT,GAAQ,OAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAQlCA,GAAQ,YAAc,OAAO,KAAK,QAAQ,GAAG,EAAE,OAAO,SAAUU,EAAK,CACnE,MAAO,WAAW,KAAKA,CAAG,CAC5B,CAAC,EAAE,OAAO,SAAUC,EAAKD,EAAK,CAE5B,IAAIE,EAAOF,EACR,UAAU,CAAC,EACX,YAAY,EACZ,QAAQ,YAAa,SAAUG,EAAGC,EAAG,CAAE,OAAOA,EAAE,YAAY,CAAE,CAAC,EAG9DC,EAAM,QAAQ,IAAIL,GACtB,MAAI,2BAA2B,KAAKK,CAAG,EAAGA,EAAM,GACvC,6BAA6B,KAAKA,CAAG,EAAGA,EAAM,GAC9CA,IAAQ,OAAQA,EAAM,KAC1BA,EAAM,OAAOA,CAAG,EAErBJ,EAAIC,GAAQG,EACLJ,CACT,EAAG,CAAC,CAAC,EASL,IAAIK,GAAK,SAAS,QAAQ,IAAI,SAAU,EAAE,GAAK,EAErCA,KAAN,GAAkBA,KAAN,GACdb,GAAK,UAAU,UAAU,CAAC,EAAG,yKAAyK,EAAE,EAG1M,IAAIc,GAAeD,KAAN,EAAW,QAAQ,OACbA,KAAN,EAAW,QAAQ,OACnBE,GAA0BF,EAAE,EAMzC,SAASP,IAAY,CACnB,MAAO,WAAYT,GAAQ,YACvB,QAAQA,GAAQ,YAAY,MAAM,EAClCE,GAAI,OAAOc,EAAE,CACnB,CAMAhB,GAAQ,WAAW,EAAI,SAASmB,EAAG,CACjC,YAAK,YAAY,OAAS,KAAK,UACxBhB,GAAK,QAAQgB,EAAG,KAAK,WAAW,EACpC,MAAM;AAAA,CAAI,EAAE,IAAI,SAASC,EAAK,CAC7B,OAAOA,EAAI,KAAK,CAClB,CAAC,EAAE,KAAK,GAAG,CACf,EAMApB,GAAQ,WAAW,EAAI,SAASmB,EAAG,CACjC,YAAK,YAAY,OAAS,KAAK,UACxBhB,GAAK,QAAQgB,EAAG,KAAK,WAAW,CACzC,EAQA,SAASb,GAAWe,EAAM,CACxB,IAAIC,EAAO,KAAK,UACZb,EAAY,KAAK,UAErB,GAAIA,EAAW,CACb,IAAIc,EAAI,KAAK,MACTC,EAAS,WAAeD,EAAI,MAAQD,EAAO,WAE/CD,EAAK,GAAKG,EAASH,EAAK,GAAG,MAAM;AAAA,CAAI,EAAE,KAAK;AAAA,EAAOG,CAAM,EACzDH,EAAK,KAAK,SAAaE,EAAI,KAAOvB,GAAQ,SAAS,KAAK,IAAI,EAAI,SAAW,CAC7E,MACEqB,EAAK,GAAK,IAAI,KAAK,EAAE,YAAY,EAC7B,IAAMC,EAAO,IAAMD,EAAK,EAEhC,CAMA,SAAShB,IAAM,CACb,OAAOY,GAAO,MAAMd,GAAK,OAAO,MAAMA,GAAM,SAAS,EAAI;AAAA,CAAI,CAC/D,CASA,SAASI,GAAKkB,EAAY,CACZA,GAAR,KAGF,OAAO,QAAQ,IAAI,MAEnB,QAAQ,IAAI,MAAQA,CAExB,CASA,SAASjB,IAAO,CACd,OAAO,QAAQ,IAAI,KACrB,CASA,SAASU,GAA2BF,EAAI,CACtC,IAAIC,EACAS,EAAW,QAAQ,QAAQ,UAAU,EAIzC,OAAQA,EAAS,gBAAgBV,CAAE,EAAG,CACpC,IAAK,MACHC,EAAS,IAAIf,GAAI,YAAYc,CAAE,EAC/BC,EAAO,MAAQ,MAIXA,EAAO,SAAWA,EAAO,QAAQ,OACnCA,EAAO,QAAQ,MAAM,EAEvB,MAEF,IAAK,OACH,IAAIU,EAAK,QAAQ,MACjBV,EAAS,IAAIU,EAAG,gBAAgBX,EAAI,CAAE,UAAW,EAAM,CAAC,EACxDC,EAAO,MAAQ,KACf,MAEF,IAAK,OACL,IAAK,MACH,IAAIW,EAAM,QAAQ,OAClBX,EAAS,IAAIW,EAAI,OAAO,CACtB,GAAIZ,EACJ,SAAU,GACV,SAAU,EACZ,CAAC,EAMDC,EAAO,SAAW,GAClBA,EAAO,KAAO,KACdA,EAAO,MAAQ,OAIXA,EAAO,SAAWA,EAAO,QAAQ,OACnCA,EAAO,QAAQ,MAAM,EAEvB,MAEF,QAEE,MAAM,IAAI,MAAM,yCAAyC,CAC7D,CAGA,OAAAA,EAAO,GAAKD,EAEZC,EAAO,SAAW,GAEXA,CACT,CASA,SAASb,GAAMyB,EAAO,CACpBA,EAAM,YAAc,CAAC,EAGrB,QADIC,EAAO,OAAO,KAAK9B,GAAQ,WAAW,EACjC+B,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAC/BF,EAAM,YAAYC,EAAKC,IAAM/B,GAAQ,YAAY8B,EAAKC,GAE1D,CAMA/B,GAAQ,OAAOQ,GAAK,CAAC,ICvPrB,IAAAwB,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAKI,OAAO,QAAY,KAAe,QAAQ,OAAS,WACrDA,GAAO,QAAU,KAEjBA,GAAO,QAAU,OCRnB,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAcA,IAAIC,GAAe,QAAQ,UAAU,aACjCC,GAAa,QAAQ,MAAM,WAC3BC,GAAS,QAAQ,UACjBC,GAAO,QAAQ,QAOnBJ,GAAO,QAAUK,GAUjB,SAASA,GAASC,EAAQC,EAAU,CAClC,OAAIC,GAAeF,CAAM,EACvBG,GAAkBH,CAAM,EACfI,GAAaJ,CAAM,EAC5BK,GAAkBL,CAAM,EACfM,GAAWN,CAAM,GAC1BA,EAAO,QAAQ,EAGbO,GAAeP,CAAM,GAAKC,IAC5BD,EAAO,mBAAmB,OAAO,EACjCA,EAAO,YAAY,QAASQ,EAAI,GAG3BR,CACT,CASA,SAASG,GAAmBH,EAAQ,CAClCA,EAAO,QAAQ,EAEX,OAAOA,EAAO,OAAU,YAE1BA,EAAO,GAAG,OAAQS,EAAW,CAEjC,CAYA,SAASC,GAAiBV,EAAQ,CAChC,GAAIA,EAAO,YAAc,GAAM,CAC7B,IAAIW,EAAOX,EAAO,WAAa,KAC3B,WACA,UAEJA,EAAOW,GAAQ,CACb,MAAO,UAAY,CAAE,KAAKA,GAAQ,IAAK,CACzC,CACF,CAEAX,EAAO,MAAM,CACf,CAkBA,SAASK,GAAmBL,EAAQ,CAC9B,OAAOA,EAAO,SAAY,WAGxBA,EAAO,UAETA,EAAO,QAAQ,EACXA,EAAO,aACTA,EAAO,WAAa,GACpBA,EAAO,KAAK,QAASY,EAAmB,GAExCZ,EAAO,SAAS,MAAM,GAEfA,EAAO,UAAYA,EAAO,WAAaH,GAAO,UAAU,UAAU,SAE3EG,EAAO,QAAQ,EACNA,EAAO,UAAY,OAAOA,EAAO,OAAU,YAEpDA,EAAO,UAAY,GACnBA,EAAO,MAAM,GAIbA,EAAO,QAAQ,EAER,OAAOA,EAAO,OAAU,YAEjCU,GAAgBV,CAAM,CAE1B,CAOA,SAASM,GAAYN,EAAQ,CAC3B,OAAOA,aAAkBH,IACvB,OAAOG,EAAO,SAAY,UAC9B,CAOA,SAASO,GAAgBM,EAAK,CAC5B,OAAOA,aAAelB,EACxB,CAOA,SAASO,GAAgBF,EAAQ,CAC/B,OAAOA,aAAkBJ,EAC3B,CAOA,SAASQ,GAAcJ,EAAQ,CAC7B,OAAOA,aAAkBF,GAAK,MAC5BE,aAAkBF,GAAK,QACvBE,aAAkBF,GAAK,SACvBE,aAAkBF,GAAK,YACvBE,aAAkBF,GAAK,SACvBE,aAAkBF,GAAK,YACvBE,aAAkBF,GAAK,KAC3B,CAOA,SAASU,IAAQ,CAAC,CAQlB,SAASI,IAAuB,CAC9B,KAAK,SAAS,MAAM,CACtB,CAOA,SAASH,IAAe,CAClB,OAAO,KAAK,IAAO,UAErB,KAAK,MAAM,CAEf,IChNA,IAAAK,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAIA,IAAIC,GAAS,QAAQ,UACjBC,GAASD,GAAO,OAEhBE,GAAQ,CAAC,EAETC,GAEJ,IAAKA,MAAOH,GACN,CAACA,GAAO,eAAeG,EAAG,GAC1BA,KAAQ,cAAgBA,KAAQ,WACpCD,GAAMC,IAAOH,GAAOG,KAGtB,IAAIC,GAAQF,GAAM,OAAS,CAAC,EAC5B,IAAKC,MAAOF,GACN,CAACA,GAAO,eAAeE,EAAG,GAC1BA,KAAQ,eAAiBA,KAAQ,oBACrCC,GAAMD,IAAOF,GAAOE,KAGtBD,GAAM,OAAO,UAAYD,GAAO,WAE5B,CAACG,GAAM,MAAQA,GAAM,OAAS,WAAW,QAC3CA,GAAM,KAAO,SAAUC,EAAOC,EAAkBC,EAAQ,CACtD,GAAI,OAAOF,GAAU,SACnB,MAAM,IAAI,UAAU,kEAAoE,OAAOA,CAAK,EAEtG,GAAIA,GAAS,OAAOA,EAAM,OAAW,IACnC,MAAM,IAAI,UAAU,kHAAoH,OAAOA,CAAK,EAEtJ,OAAOJ,GAAOI,EAAOC,EAAkBC,CAAM,CAC/C,GAGGH,GAAM,QACTA,GAAM,MAAQ,SAAUI,EAAMC,EAAMC,EAAU,CAC5C,GAAI,OAAOF,GAAS,SAClB,MAAM,IAAI,UAAU,6DAA+D,OAAOA,CAAI,EAEhG,GAAIA,EAAO,GAAKA,GAAQ,GAAK,GAAK,IAChC,MAAM,IAAI,WAAW,cAAgBA,EAAO,gCAAgC,EAE9E,IAAIG,EAAMV,GAAOO,CAAI,EACrB,MAAI,CAACC,GAAQA,EAAK,SAAW,EAC3BE,EAAI,KAAK,CAAC,EACD,OAAOD,GAAa,SAC7BC,EAAI,KAAKF,EAAMC,CAAQ,EAEvBC,EAAI,KAAKF,CAAI,EAERE,CACT,GAGF,GAAI,CAACT,GAAM,iBACT,GAAI,CACFA,GAAM,iBAAmB,QAAQ,QAAQ,QAAQ,EAAE,gBACrD,MAAE,CAGF,CAGGA,GAAM,YACTA,GAAM,UAAY,CAChB,WAAYA,GAAM,UACpB,EACIA,GAAM,mBACRA,GAAM,UAAU,kBAAoBA,GAAM,mBAI9CH,GAAO,QAAUG,KC5EjB,IAAAU,GAAAC,EAAAC,IAAA,cAEA,IAAIC,GAAU,SAEdD,GAAQ,WAAaE,GACrB,SAASA,GAAkBC,EAASC,EAAS,CACzC,KAAK,QAAUD,EACf,KAAK,OAAS,EAClB,CAEAD,GAAkB,UAAU,MAAQ,SAASG,EAAK,CAC9C,OAAI,KAAK,SACLA,EAAMJ,GAAUI,EAChB,KAAK,OAAS,IAGX,KAAK,QAAQ,MAAMA,CAAG,CACjC,EAEAH,GAAkB,UAAU,IAAM,UAAW,CACzC,OAAO,KAAK,QAAQ,IAAI,CAC5B,EAKAF,GAAQ,SAAWM,GACnB,SAASA,GAAgBC,EAASH,EAAS,CACvC,KAAK,QAAUG,EACf,KAAK,KAAO,GACZ,KAAK,QAAUH,GAAW,CAAC,CAC/B,CAEAE,GAAgB,UAAU,MAAQ,SAASE,EAAK,CAC5C,IAAIC,EAAM,KAAK,QAAQ,MAAMD,CAAG,EAChC,OAAI,KAAK,MAAQ,CAACC,IAGdA,EAAI,KAAOR,KACXQ,EAAMA,EAAI,MAAM,CAAC,EACb,OAAO,KAAK,QAAQ,UAAa,YACjC,KAAK,QAAQ,SAAS,GAG9B,KAAK,KAAO,IACLA,CACX,EAEAH,GAAgB,UAAU,IAAM,UAAW,CACvC,OAAO,KAAK,QAAQ,IAAI,CAC5B,IClDA,IAAAI,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cACA,IAAIC,GAAS,KAAwB,OAIrCD,GAAO,QAAU,CAEb,KAAQ,CAAE,KAAM,YAAa,SAAU,EAAI,EAC3C,MAAQ,CAAE,KAAM,YAAa,SAAU,EAAI,EAC3C,cAAe,OAEf,KAAQ,CAAE,KAAM,YAAa,SAAU,EAAI,EAC3C,QAAS,OAET,OAAQ,CAAE,KAAM,WAAY,EAC5B,OAAQ,CAAE,KAAM,WAAY,EAC5B,IAAQ,CAAE,KAAM,WAAY,EAG5B,UAAWE,EACf,EAIA,SAASA,GAAcC,EAAcC,EAAO,CACxC,KAAK,IAAMD,EAAa,aACxB,KAAK,SAAWA,EAAa,SAEzB,KAAK,MAAQ,SACb,KAAK,QAAUE,GACV,KAAK,MAAQ,UAClB,KAAK,IAAM,OACX,KAAK,QAAUC,GAGXL,GAAO,KAAK,eAAgB,KAAK,EAAE,SAAS,IAAM,cAClD,KAAK,QAAUM,GACf,KAAK,mBAAqBH,EAAM,oBAG5C,CAEAF,GAAc,UAAU,QAAUM,GAClCN,GAAc,UAAU,QAAUO,GAKlC,IAAIC,GAAgB,QAAQ,kBAAkB,cAEzCA,GAAc,UAAU,MACzBA,GAAc,UAAU,IAAM,UAAW,CAAC,GAG9C,SAASD,GAAgBE,EAASC,EAAO,CACrCF,GAAc,KAAK,KAAME,EAAM,GAAG,CACtC,CAEAH,GAAgB,UAAYC,GAAc,UAM1C,SAASF,GAAgBG,EAASC,EAAO,CACrC,KAAK,IAAMA,EAAM,GACrB,CAEAJ,GAAgB,UAAU,MAAQ,SAASK,EAAK,CAC5C,OAAOZ,GAAO,KAAKY,EAAK,KAAK,GAAG,CACpC,EAEAL,GAAgB,UAAU,IAAM,UAAW,CAC3C,EAMA,SAASH,GAAsBM,EAASC,EAAO,CAC3C,KAAK,QAAU,EACnB,CAEAP,GAAsB,UAAU,MAAQ,SAASQ,EAAK,CAClDA,EAAM,KAAK,QAAUA,EACrB,IAAIC,EAAgBD,EAAI,OAAUA,EAAI,OAAS,EAC/C,YAAK,QAAUA,EAAI,MAAMC,CAAa,EACtCD,EAAMA,EAAI,MAAM,EAAGC,CAAa,EAEzBb,GAAO,KAAKY,EAAK,QAAQ,CACpC,EAEAR,GAAsB,UAAU,IAAM,UAAW,CAC7C,OAAOJ,GAAO,KAAK,KAAK,QAAS,QAAQ,CAC7C,EAMA,SAASK,GAAqBK,EAASC,EAAO,CAC9C,CAEAN,GAAqB,UAAU,MAAQ,SAASO,EAAK,CAEjD,QADIE,EAAMd,GAAO,MAAMY,EAAI,OAAS,CAAC,EAAGG,EAAS,EACxCC,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAAK,CACjC,IAAIC,EAAWL,EAAI,WAAWI,CAAC,EAG3BC,EAAW,IACXH,EAAIC,KAAYE,EACXA,EAAW,MAChBH,EAAIC,KAAY,KAAQE,IAAa,GACrCH,EAAIC,KAAY,KAAQE,EAAW,MAGnCH,EAAIC,KAAY,KAAQE,IAAa,IACrCH,EAAIC,KAAY,KAASE,IAAa,EAAK,IAC3CH,EAAIC,KAAY,KAAQE,EAAW,IAE3C,CACA,OAAOH,EAAI,MAAM,EAAGC,CAAM,CAC9B,EAEAV,GAAqB,UAAU,IAAM,UAAW,CAChD,EAKA,SAASC,GAAqBI,EAASC,EAAO,CAC1C,KAAK,IAAM,EACX,KAAK,UAAY,EACjB,KAAK,SAAW,EAChB,KAAK,mBAAqBA,EAAM,kBACpC,CAEAL,GAAqB,UAAU,MAAQ,SAASQ,EAAK,CAGjD,QAFII,EAAM,KAAK,IAAKC,EAAY,KAAK,UAAWC,EAAW,KAAK,SAC5DC,EAAM,GACDL,EAAI,EAAGA,EAAIF,EAAI,OAAQE,IAAK,CACjC,IAAIM,EAAUR,EAAIE,IACbM,EAAU,OAAU,KACjBH,EAAY,IACZE,GAAO,KAAK,mBACZF,EAAY,GAGZG,EAAU,IACVD,GAAO,OAAO,aAAaC,CAAO,EAC3BA,EAAU,KACjBJ,EAAMI,EAAU,GAChBH,EAAY,EAAGC,EAAW,GACnBE,EAAU,KACjBJ,EAAMI,EAAU,GAChBH,EAAY,EAAGC,EAAW,GAE1BC,GAAO,KAAK,oBAGZF,EAAY,GACZD,EAAOA,GAAO,EAAMI,EAAU,GAC9BH,IAAaC,IACTD,IAAc,IAEVC,IAAa,GAAKF,EAAM,KAAQA,EAAM,EACtCG,GAAO,KAAK,mBACPD,IAAa,GAAKF,EAAM,KAC7BG,GAAO,KAAK,mBAGZA,GAAO,OAAO,aAAaH,CAAG,IAGtCG,GAAO,KAAK,kBAGxB,CACA,YAAK,IAAMH,EAAK,KAAK,UAAYC,EAAW,KAAK,SAAWC,EACrDC,CACX,EAEAf,GAAqB,UAAU,IAAM,UAAW,CAC5C,IAAIe,EAAM,EACV,OAAI,KAAK,UAAY,IACjBA,GAAO,KAAK,oBACTA,CACX,IC3LA,IAAAE,GAAAC,EAAAC,IAAA,cACA,IAAIC,GAAS,KAAwB,OAMrCD,GAAQ,QAAUE,GAClB,SAASA,IAAe,CACxB,CAEAA,GAAa,UAAU,QAAUC,GACjCD,GAAa,UAAU,QAAUE,GACjCF,GAAa,UAAU,SAAW,GAKlC,SAASC,IAAiB,CAC1B,CAEAA,GAAe,UAAU,MAAQ,SAASE,EAAK,CAE3C,QADIC,EAAML,GAAO,KAAKI,EAAK,MAAM,EACxBE,EAAI,EAAGA,EAAID,EAAI,OAAQC,GAAK,EAAG,CACpC,IAAIC,EAAMF,EAAIC,GAAID,EAAIC,GAAKD,EAAIC,EAAE,GAAID,EAAIC,EAAE,GAAKC,CACpD,CACA,OAAOF,CACX,EAEAH,GAAe,UAAU,IAAM,UAAW,CAC1C,EAKA,SAASC,IAAiB,CACtB,KAAK,aAAe,EACxB,CAEAA,GAAe,UAAU,MAAQ,SAASE,EAAK,CAC3C,GAAIA,EAAI,QAAU,EACd,MAAO,GAEX,IAAIG,EAAOR,GAAO,MAAMK,EAAI,OAAS,CAAC,EAClCC,EAAI,EAAGG,EAAI,EAQf,IANI,KAAK,eAAiB,KACtBD,EAAK,GAAKH,EAAI,GACdG,EAAK,GAAK,KAAK,aACfF,EAAI,EAAGG,EAAI,GAGRH,EAAID,EAAI,OAAO,EAAGC,GAAK,EAAGG,GAAI,EACjCD,EAAKC,GAAKJ,EAAIC,EAAE,GAChBE,EAAKC,EAAE,GAAKJ,EAAIC,GAGpB,YAAK,aAAgBA,GAAKD,EAAI,OAAO,EAAKA,EAAIA,EAAI,OAAO,GAAK,GAEvDG,EAAK,MAAM,EAAGC,CAAC,EAAE,SAAS,MAAM,CAC3C,EAEAN,GAAe,UAAU,IAAM,UAAW,CAC1C,EAWAJ,GAAQ,MAAQW,GAChB,SAASA,GAAWC,EAAcC,EAAO,CACrC,KAAK,MAAQA,CACjB,CAEAF,GAAW,UAAU,QAAUG,GAC/BH,GAAW,UAAU,QAAUI,GAK/B,SAASD,GAAaE,EAASC,EAAO,CAClCD,EAAUA,GAAW,CAAC,EAClBA,EAAQ,SAAW,SACnBA,EAAQ,OAAS,IACrB,KAAK,QAAUC,EAAM,MAAM,WAAW,WAAYD,CAAO,CAC7D,CAEAF,GAAa,UAAU,MAAQ,SAAST,EAAK,CACzC,OAAO,KAAK,QAAQ,MAAMA,CAAG,CACjC,EAEAS,GAAa,UAAU,IAAM,UAAW,CACpC,OAAO,KAAK,QAAQ,IAAI,CAC5B,EAKA,SAASC,GAAaC,EAASC,EAAO,CAClC,KAAK,QAAU,KACf,KAAK,aAAe,CAAC,EACrB,KAAK,gBAAkB,EAEvB,KAAK,QAAUD,GAAW,CAAC,EAC3B,KAAK,MAAQC,EAAM,KACvB,CAEAF,GAAa,UAAU,MAAQ,SAAST,EAAK,CACzC,GAAI,CAAC,KAAK,QAAS,CAKf,GAHA,KAAK,aAAa,KAAKA,CAAG,EAC1B,KAAK,iBAAmBA,EAAI,OAExB,KAAK,gBAAkB,GACvB,MAAO,GAGX,IAAIA,EAAML,GAAO,OAAO,KAAK,YAAY,EACrCiB,EAAWC,GAAeb,EAAK,KAAK,QAAQ,eAAe,EAC/D,KAAK,QAAU,KAAK,MAAM,WAAWY,EAAU,KAAK,OAAO,EAC3D,KAAK,aAAa,OAAS,KAAK,gBAAkB,CACtD,CAEA,OAAO,KAAK,QAAQ,MAAMZ,CAAG,CACjC,EAEAS,GAAa,UAAU,IAAM,UAAW,CACpC,GAAI,CAAC,KAAK,QAAS,CACf,IAAIT,EAAML,GAAO,OAAO,KAAK,YAAY,EACrCiB,EAAWC,GAAeb,EAAK,KAAK,QAAQ,eAAe,EAC/D,KAAK,QAAU,KAAK,MAAM,WAAWY,EAAU,KAAK,OAAO,EAE3D,IAAIE,EAAM,KAAK,QAAQ,MAAMd,CAAG,EAC5Be,EAAQ,KAAK,QAAQ,IAAI,EAE7B,OAAOA,EAASD,EAAMC,EAASD,CACnC,CACA,OAAO,KAAK,QAAQ,IAAI,CAC5B,EAEA,SAASD,GAAeb,EAAKgB,EAAiB,CAC1C,IAAIC,EAAMD,GAAmB,WAE7B,GAAIhB,EAAI,QAAU,EAEd,GAAIA,EAAI,IAAM,KAAQA,EAAI,IAAM,IAC5BiB,EAAM,mBACDjB,EAAI,IAAM,KAAQA,EAAI,IAAM,IACjCiB,EAAM,eACL,CAOD,QAHIC,EAAe,EAAGC,EAAe,EACjCC,EAAO,KAAK,IAAIpB,EAAI,OAAUA,EAAI,OAAS,EAAI,EAAE,EAE5CC,EAAI,EAAGA,EAAImB,EAAMnB,GAAK,EACvBD,EAAIC,KAAO,GAAKD,EAAIC,EAAE,KAAO,GAAGkB,IAChCnB,EAAIC,KAAO,GAAKD,EAAIC,EAAE,KAAO,GAAGiB,IAGpCC,EAAeD,EACfD,EAAM,WACDE,EAAeD,IACpBD,EAAM,WACd,CAGJ,OAAOA,CACX,IC9KA,IAAAI,GAAAC,EAAAC,IAAA,cACA,IAAIC,GAAS,KAAwB,OAKrCD,GAAQ,KAAOE,GACfF,GAAQ,cAAgB,OACxB,SAASE,GAAUC,EAAcC,EAAO,CACpC,KAAK,MAAQA,CACjB,CAEAF,GAAU,UAAU,QAAUG,GAC9BH,GAAU,UAAU,QAAUI,GAC9BJ,GAAU,UAAU,SAAW,GAK/B,IAAIK,GAAiB,sCAErB,SAASF,GAAYG,EAASC,EAAO,CACjC,KAAK,MAAQA,EAAM,KACvB,CAEAJ,GAAY,UAAU,MAAQ,SAASK,EAAK,CAGxC,OAAOT,GAAO,KAAKS,EAAI,QAAQH,GAAgB,SAASI,EAAO,CAC3D,MAAO,KAAOA,IAAU,IAAM,GAC1B,KAAK,MAAM,OAAOA,EAAO,UAAU,EAAE,SAAS,QAAQ,EAAE,QAAQ,MAAO,EAAE,GACvE,GACV,EAAE,KAAK,IAAI,CAAC,CAAC,CACjB,EAEAN,GAAY,UAAU,IAAM,UAAW,CACvC,EAKA,SAASC,GAAYE,EAASC,EAAO,CACjC,KAAK,MAAQA,EAAM,MACnB,KAAK,SAAW,GAChB,KAAK,YAAc,EACvB,CAEA,IAAIG,GAAc,iBACdC,GAAc,CAAC,EACnB,IAASC,GAAI,EAAGA,GAAI,IAAKA,KACrBD,GAAYC,IAAKF,GAAY,KAAK,OAAO,aAAaE,EAAC,CAAC,EADnD,IAAAA,GAGLC,GAAW,IAAI,WAAW,CAAC,EAC3BC,GAAY,IAAI,WAAW,CAAC,EAC5BC,GAAU,IAAI,WAAW,CAAC,EAE9BX,GAAY,UAAU,MAAQ,SAASY,EAAK,CAOxC,QANIC,EAAM,GAAIC,EAAQ,EAClBC,EAAW,KAAK,SAChBC,EAAc,KAAK,YAIdR,EAAI,EAAGA,EAAII,EAAI,OAAQJ,IAC5B,GAAI,CAACO,EAEGH,EAAIJ,IAAMC,KACVI,GAAO,KAAK,MAAM,OAAOD,EAAI,MAAME,EAAON,CAAC,EAAG,OAAO,EACrDM,EAAQN,EAAE,EACVO,EAAW,YAGX,CAACR,GAAYK,EAAIJ,IAAK,CACtB,GAAIA,GAAKM,GAASF,EAAIJ,IAAME,GACxBG,GAAO,QACJ,CACH,IAAII,EAASD,EAAcJ,EAAI,MAAME,EAAON,CAAC,EAAE,SAAS,EACxDK,GAAO,KAAK,MAAM,OAAOlB,GAAO,KAAKsB,EAAQ,QAAQ,EAAG,UAAU,CACtE,CAEIL,EAAIJ,IAAME,IACVF,IAEJM,EAAQN,EAAE,EACVO,EAAW,GACXC,EAAc,EAClB,CAIR,GAAI,CAACD,EACDF,GAAO,KAAK,MAAM,OAAOD,EAAI,MAAME,CAAK,EAAG,OAAO,MAC/C,CACH,IAAIG,EAASD,EAAcJ,EAAI,MAAME,CAAK,EAAE,SAAS,EAEjDI,EAAeD,EAAO,OAAUA,EAAO,OAAS,EACpDD,EAAcC,EAAO,MAAMC,CAAY,EACvCD,EAASA,EAAO,MAAM,EAAGC,CAAY,EAErCL,GAAO,KAAK,MAAM,OAAOlB,GAAO,KAAKsB,EAAQ,QAAQ,EAAG,UAAU,CACtE,CAEA,YAAK,SAAWF,EAChB,KAAK,YAAcC,EAEZH,CACX,EAEAb,GAAY,UAAU,IAAM,UAAW,CACnC,IAAIa,EAAM,GACV,OAAI,KAAK,UAAY,KAAK,YAAY,OAAS,IAC3CA,EAAM,KAAK,MAAM,OAAOlB,GAAO,KAAK,KAAK,YAAa,QAAQ,EAAG,UAAU,GAE/E,KAAK,SAAW,GAChB,KAAK,YAAc,GACZkB,CACX,EAeAnB,GAAQ,SAAWyB,GACnB,SAASA,GAActB,EAAcC,EAAO,CACxC,KAAK,MAAQA,CACjB,CAEAqB,GAAc,UAAU,QAAUC,GAClCD,GAAc,UAAU,QAAUE,GAClCF,GAAc,UAAU,SAAW,GAKnC,SAASC,GAAgBlB,EAASC,EAAO,CACrC,KAAK,MAAQA,EAAM,MACnB,KAAK,SAAW,GAChB,KAAK,YAAcR,GAAO,MAAM,CAAC,EACjC,KAAK,eAAiB,CAC1B,CAEAyB,GAAgB,UAAU,MAAQ,SAAShB,EAAK,CAM5C,QALIW,EAAW,KAAK,SAChBC,EAAc,KAAK,YACnBM,EAAiB,KAAK,eACtBV,EAAMjB,GAAO,MAAMS,EAAI,OAAO,EAAI,EAAE,EAAGmB,EAAS,EAE3Cf,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAAK,CACjC,IAAIgB,EAAQpB,EAAI,WAAWI,CAAC,EACxB,IAAQgB,GAASA,GAAS,KACtBT,IACIO,EAAiB,IACjBC,GAAUX,EAAI,MAAMI,EAAY,MAAM,EAAGM,CAAc,EAAE,SAAS,QAAQ,EAAE,QAAQ,MAAO,GAAG,EAAE,QAAQ,MAAO,EAAE,EAAGC,CAAM,EAC1HD,EAAiB,GAGrBV,EAAIW,KAAYb,GAChBK,EAAW,IAGVA,IACDH,EAAIW,KAAYC,EAEZA,IAAUb,KACVC,EAAIW,KAAYb,OAInBK,IACDH,EAAIW,KAAYZ,GAChBI,EAAW,IAEXA,IACAC,EAAYM,KAAoBE,GAAS,EACzCR,EAAYM,KAAoBE,EAAQ,IAEpCF,GAAkBN,EAAY,SAC9BO,GAAUX,EAAI,MAAMI,EAAY,SAAS,QAAQ,EAAE,QAAQ,MAAO,GAAG,EAAGO,CAAM,EAC9ED,EAAiB,IAIjC,CAEA,YAAK,SAAWP,EAChB,KAAK,eAAiBO,EAEfV,EAAI,MAAM,EAAGW,CAAM,CAC9B,EAEAH,GAAgB,UAAU,IAAM,UAAW,CACvC,IAAIR,EAAMjB,GAAO,MAAM,EAAE,EAAG4B,EAAS,EACrC,OAAI,KAAK,WACD,KAAK,eAAiB,IACtBA,GAAUX,EAAI,MAAM,KAAK,YAAY,MAAM,EAAG,KAAK,cAAc,EAAE,SAAS,QAAQ,EAAE,QAAQ,MAAO,GAAG,EAAE,QAAQ,MAAO,EAAE,EAAGW,CAAM,EACpI,KAAK,eAAiB,GAG1BX,EAAIW,KAAYb,GAChB,KAAK,SAAW,IAGbE,EAAI,MAAM,EAAGW,CAAM,CAC9B,EAKA,SAASF,GAAgBnB,EAASC,EAAO,CACrC,KAAK,MAAQA,EAAM,MACnB,KAAK,SAAW,GAChB,KAAK,YAAc,EACvB,CAEA,IAAIsB,GAAkBlB,GAAY,MAAM,EACxCkB,GAAgB,IAAI,WAAW,CAAC,GAAK,GAErCJ,GAAgB,UAAU,MAAQ,SAAST,EAAK,CAQ5C,QAPIC,EAAM,GAAIC,EAAQ,EAClBC,EAAW,KAAK,SAChBC,EAAc,KAAK,YAKdR,EAAI,EAAGA,EAAII,EAAI,OAAQJ,IAC5B,GAAI,CAACO,EAEGH,EAAIJ,IAAMG,KACVE,GAAO,KAAK,MAAM,OAAOD,EAAI,MAAME,EAAON,CAAC,EAAG,OAAO,EACrDM,EAAQN,EAAE,EACVO,EAAW,YAGX,CAACU,GAAgBb,EAAIJ,IAAK,CAC1B,GAAIA,GAAKM,GAASF,EAAIJ,IAAME,GACxBG,GAAO,QACJ,CACH,IAAII,EAASD,EAAcJ,EAAI,MAAME,EAAON,CAAC,EAAE,SAAS,EAAE,QAAQ,KAAM,GAAG,EAC3EK,GAAO,KAAK,MAAM,OAAOlB,GAAO,KAAKsB,EAAQ,QAAQ,EAAG,UAAU,CACtE,CAEIL,EAAIJ,IAAME,IACVF,IAEJM,EAAQN,EAAE,EACVO,EAAW,GACXC,EAAc,EAClB,CAIR,GAAI,CAACD,EACDF,GAAO,KAAK,MAAM,OAAOD,EAAI,MAAME,CAAK,EAAG,OAAO,MAC/C,CACH,IAAIG,EAASD,EAAcJ,EAAI,MAAME,CAAK,EAAE,SAAS,EAAE,QAAQ,KAAM,GAAG,EAEpEI,EAAeD,EAAO,OAAUA,EAAO,OAAS,EACpDD,EAAcC,EAAO,MAAMC,CAAY,EACvCD,EAASA,EAAO,MAAM,EAAGC,CAAY,EAErCL,GAAO,KAAK,MAAM,OAAOlB,GAAO,KAAKsB,EAAQ,QAAQ,EAAG,UAAU,CACtE,CAEA,YAAK,SAAWF,EAChB,KAAK,YAAcC,EAEZH,CACX,EAEAQ,GAAgB,UAAU,IAAM,UAAW,CACvC,IAAIR,EAAM,GACV,OAAI,KAAK,UAAY,KAAK,YAAY,OAAS,IAC3CA,EAAM,KAAK,MAAM,OAAOlB,GAAO,KAAK,KAAK,YAAa,QAAQ,EAAG,UAAU,GAE/E,KAAK,SAAW,GAChB,KAAK,YAAc,GACZkB,CACX,IC/RA,IAAAa,GAAAC,EAAAC,IAAA,cACA,IAAIC,GAAS,KAAwB,OAKrCD,GAAQ,MAAQE,GAChB,SAASA,GAAUC,EAAcC,EAAO,CACpC,GAAI,CAACD,EACD,MAAM,IAAI,MAAM,wCAAwC,EAG5D,GAAI,CAACA,EAAa,OAAUA,EAAa,MAAM,SAAW,KAAOA,EAAa,MAAM,SAAW,IAC3F,MAAM,IAAI,MAAM,aAAaA,EAAa,KAAK,qDAAqD,EAExG,GAAIA,EAAa,MAAM,SAAW,IAAK,CAEnC,QADIE,EAAc,GACTC,EAAI,EAAGA,EAAI,IAAKA,IACrBD,GAAe,OAAO,aAAaC,CAAC,EACxCH,EAAa,MAAQE,EAAcF,EAAa,KACpD,CAEA,KAAK,UAAYF,GAAO,KAAKE,EAAa,MAAO,MAAM,EAKvD,QAFII,EAAYN,GAAO,MAAM,MAAOG,EAAM,sBAAsB,WAAW,CAAC,CAAC,EAEpEE,EAAI,EAAGA,EAAIH,EAAa,MAAM,OAAQG,IAC3CC,EAAUJ,EAAa,MAAM,WAAWG,CAAC,GAAKA,EAElD,KAAK,UAAYC,CACrB,CAEAL,GAAU,UAAU,QAAUM,GAC9BN,GAAU,UAAU,QAAUO,GAG9B,SAASD,GAAYE,EAASC,EAAO,CACjC,KAAK,UAAYA,EAAM,SAC3B,CAEAH,GAAY,UAAU,MAAQ,SAASI,EAAK,CAExC,QADIC,EAAMZ,GAAO,MAAMW,EAAI,MAAM,EACxBN,EAAI,EAAGA,EAAIM,EAAI,OAAQN,IAC5BO,EAAIP,GAAK,KAAK,UAAUM,EAAI,WAAWN,CAAC,GAE5C,OAAOO,CACX,EAEAL,GAAY,UAAU,IAAM,UAAW,CACvC,EAGA,SAASC,GAAYC,EAASC,EAAO,CACjC,KAAK,UAAYA,EAAM,SAC3B,CAEAF,GAAY,UAAU,MAAQ,SAASI,EAAK,CAKxC,QAHIC,EAAY,KAAK,UACjBC,EAASd,GAAO,MAAMY,EAAI,OAAO,CAAC,EAClCG,EAAO,EAAGC,EAAO,EACZX,EAAI,EAAGA,EAAIO,EAAI,OAAQP,IAC5BU,EAAOH,EAAIP,GAAG,EAAGW,EAAOX,EAAE,EAC1BS,EAAOE,GAAQH,EAAUE,GACzBD,EAAOE,EAAK,GAAKH,EAAUE,EAAK,GAEpC,OAAOD,EAAO,SAAS,MAAM,CACjC,EAEAN,GAAY,UAAU,IAAM,UAAW,CACvC,ICvEA,IAAAS,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAIAA,GAAO,QAAU,CAEb,MAAS,cACT,YAAe,CACX,KAAQ,QACR,MAAS,4rBACb,EAEA,IAAO,QACP,OAAU,QACV,MAAS,CACL,KAAQ,QACR,MAAS,4vBACb,EAEA,IAAO,CACH,KAAQ,QACR,MAAS,gvBACb,EAGA,UAAa,QACb,QAAW,QACX,QAAW,QACX,YAAe,QACf,YAAe,QACf,QAAW,QACX,MAAS,QACT,OAAU,QACV,OAAU,QACV,SAAY,QACZ,UAAa,QACb,GAAM,QAEN,OAAU,WACV,OAAU,WACV,OAAU,WACV,OAAU,WACV,OAAU,WACV,OAAU,YACV,OAAU,YACV,OAAU,YACV,OAAU,YACV,QAAW,YAEX,YAAe,WACf,YAAe,WACf,YAAe,WACf,YAAe,WACf,mBAAsB,WACtB,iBAAoB,WACpB,gBAAoB,WACpB,iBAAoB,WACpB,YAAe,WACf,YAAe,YAEf,GAAM,WACN,GAAM,WACN,GAAM,WACN,GAAM,WACN,GAAM,WACN,GAAM,YACN,GAAM,YACN,GAAM,YACN,GAAM,YACN,IAAO,YAEP,QAAW,WACX,QAAW,WACX,SAAY,WACZ,SAAY,WACZ,SAAY,WACZ,SAAY,WACZ,SAAY,WACZ,SAAY,WACZ,SAAY,WACZ,SAAY,WACZ,SAAY,WACZ,SAAY,YACZ,SAAY,SACZ,SAAY,YACZ,SAAY,YACZ,SAAY,YACZ,SAAY,YAEZ,MAAS,WACT,OAAU,WAEV,SAAY,WAEZ,OAAU,WACV,QAAW,WACX,QAAW,WACX,QAAW,WAEX,MAAU,WACV,OAAW,WACX,QAAY,WACZ,QAAY,WAEZ,OAAU,WACV,QAAW,WAEX,QAAW,WACX,SAAY,WAEZ,KAAQ,YACR,MAAS,YAET,OAAU,YACV,QAAW,YACX,UAAa,YAEb,QAAW,SACX,YAAe,SACf,YAAe,SAEf,IAAS,WACT,MAAS,WACT,MAAS,cACT,MAAS,aACT,MAAS,aAET,iBAAoB,QACpB,cAAiB,QACjB,oBAAuB,QACvB,SAAY,QACZ,mBAAsB,QACtB,KAAQ,QAER,KAAQ,SACR,OAAU,SACV,OAAU,SACV,QAAW,SACX,OAAU,SACV,OAAU,SACV,OAAU,SACV,WAAc,SAEd,QAAW,QACX,MAAS,QACT,OAAU,QACV,QAAW,QAEX,QAAW,QACX,MAAS,QACT,QAAW,QAEX,aAAgB,SAEhB,SAAY,OACZ,UAAa,OAEb,SAAY,WACZ,GAAM,WAEN,kBAAqB,WACrB,eAAkB,WAClB,GAAM,WAEN,WAAc,WACd,GAAM,WACN,OAAU,WACV,QAAW,WACX,QAAW,WAEX,IAAO,YACP,YAAe,WACnB,IC5KA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAGAA,GAAO,QAAU,CACf,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,aACP,IAAO,QACP,KAAQ,SACR,KAAQ,SACR,KAAQ,SACR,KAAQ,SACR,KAAQ,SACR,KAAQ,SACR,KAAQ,SACR,KAAQ,SACR,KAAQ,cACR,KAAQ,cACR,KAAQ,cACR,KAAQ,cACR,KAAQ,cACR,KAAQ,cACR,KAAQ,cACR,KAAQ,cACR,KAAQ,cACR,MAAS,WACT,MAAS,WACT,MAAS,WACT,MAAS,WACT,MAAS,WACT,MAAS,WACT,MAAS,WACT,MAAS,WACT,MAAS,WACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,WAAc,CACZ,KAAQ,QACR,MAAS,gwBACX,EACA,OAAU,aACV,MAAS,aACT,YAAe,CACb,KAAQ,QACR,MAAS,gqBACX,EACA,QAAW,cACX,OAAU,cACV,YAAe,CACb,KAAQ,QACR,MAAS,ouBACX,EACA,QAAW,cACX,OAAU,cACV,YAAe,CACb,KAAQ,QACR,MAAS,kkBACX,EACA,QAAW,cACX,OAAU,cACV,YAAe,CACb,KAAQ,QACR,MAAS,wtBACX,EACA,QAAW,cACX,OAAU,cACV,YAAe,CACb,KAAQ,QACR,MAAS,8kBACX,EACA,QAAW,cACX,OAAU,cACV,YAAe,CACb,KAAQ,QACR,MAAS,osBACX,EACA,QAAW,cACX,OAAU,cACV,YAAe,CACb,KAAQ,QACR,MAAS,4qBACX,EACA,QAAW,cACX,OAAU,cACV,YAAe,CACb,KAAQ,QACR,MAAS,kqBACX,EACA,QAAW,cACX,OAAU,cACV,YAAe,CACb,KAAQ,QACR,MAAS,8lBACX,EACA,QAAW,cACX,OAAU,cACV,SAAY,CACV,KAAQ,QACR,MAAS,kgBACX,EACA,QAAW,WACX,SAAY,CACV,KAAQ,QACR,MAAS,onBACX,EACA,QAAW,WACX,SAAY,CACV,KAAQ,QACR,MAAS,wkBACX,EACA,QAAW,WACX,SAAY,CACV,KAAQ,QACR,MAAS,smBACX,EACA,QAAW,WACX,SAAY,CACV,KAAQ,QACR,MAAS,4rBACX,EACA,QAAW,WACX,SAAY,CACV,KAAQ,QACR,MAAS,4rBACX,EACA,QAAW,WACX,SAAY,CACV,KAAQ,QACR,MAAS,kqBACX,EACA,QAAW,WACX,SAAY,CACV,KAAQ,QACR,MAAS,soBACX,EACA,QAAW,WACX,SAAY,CACV,KAAQ,QACR,MAAS,8gBACX,EACA,QAAW,WACX,UAAa,CACX,KAAQ,QACR,MAAS,8lBACX,EACA,QAAW,YACX,UAAa,CACX,KAAQ,QACR,MAAS,gsBACX,EACA,QAAW,YACX,UAAa,CACX,KAAQ,QACR,MAAS,0mBACX,EACA,QAAW,YACX,UAAa,CACX,KAAQ,QACR,MAAS,gkBACX,EACA,QAAW,YACX,UAAa,CACX,KAAQ,QACR,MAAS,khBACX,EACA,QAAW,YACX,UAAa,CACX,KAAQ,QACR,MAAS,klBACX,EACA,QAAW,YACX,MAAS,CACP,KAAQ,QACR,MAAS,wpBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,svBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,0qBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,kkBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,8qBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,svBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,ssBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,8kBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,kkBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,opBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,wpBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,8sBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,wpBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS;AAAA,s2BACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,wpBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,0vBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,kuBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,4gBACX,EACA,OAAU,QACV,SAAY,QACZ,OAAU,CACR,KAAQ,QACR,MAAS,svBACX,EACA,QAAW,SACX,UAAa,SACb,OAAU,CACR,KAAQ,QACR,MAAS,4rBACX,EACA,QAAW,SACX,UAAa,SACb,OAAU,CACR,KAAQ,QACR,MAAS,4vBACX,EACA,QAAW,SACX,UAAa,SACb,OAAU,CACR,KAAQ,QACR,MAAS,oiBACX,EACA,QAAW,SACX,UAAa,SACb,OAAU,CACR,KAAQ,QACR,MAAS,0rBACX,EACA,QAAW,SACX,UAAa,SACb,OAAU,CACR,KAAQ,QACR,MAAS,0vBACX,EACA,QAAW,SACX,UAAa,SACb,OAAU,CACR,KAAQ,QACR,MAAS,ktBACX,EACA,QAAW,SACX,UAAa,SACb,OAAU,CACR,KAAQ,QACR,MAAS,siBACX,EACA,QAAW,SACX,UAAa,SACb,YAAe,CACb,KAAQ,QACR,MAAS,omBACX,EACA,YAAe,CACb,KAAQ,QACR,MAAS,ouBACX,EACA,SAAY,CACV,KAAQ,QACR,MAAS,orBACX,EACA,WAAc,CACZ,KAAQ,QACR,MAAS,olBACX,EACA,SAAY,CACV,KAAQ,QACR,MAAS,gmBACX,EACA,WAAc,CACZ,KAAQ,QACR,MAAS,wmBACX,EACA,QAAW,CACT,KAAQ,QACR,MAAS,wvBACX,EACA,WAAc,CACZ,KAAQ,QACR,MAAS,kmBACX,EACA,WAAc,CACZ,KAAQ,QACR,MAAS,suBACX,EACA,MAAS,CACP,KAAQ,QACR,MAAS,svBACX,EACA,MAAS,CACP,KAAQ,QACR,MAAS,svBACX,EACA,OAAU,CACR,KAAQ,QACR,MAAS,svBACX,EACA,MAAS,CACP,KAAQ,QACR,MAAS,suBACX,EACA,SAAY,CACV,KAAQ,QACR,MAAS,mqBACX,EACA,OAAU,CACR,KAAQ,QACR,MAAS,ouBACX,EACA,KAAQ,CACN,KAAQ,QACR,MAAS;AAAA,o2BACX,EACA,gBAAmB,CACjB,KAAQ,QACR,MAAS,goBACX,EACA,WAAc,CACZ,KAAQ,QACR,MAAS,8nBACX,EACA,MAAS,CACP,KAAQ,QACR,MAAS,8uBACX,EACA,OAAU,CACR,KAAQ,QACR,MAAS;AAAA,g1BACX,EACA,SAAY,CACV,KAAQ,QACR,MAAS;AAAA,y4BACX,EACA,SAAY,CACV,KAAQ,QACR,MAAS;AAAA,w4BACX,EACA,SAAY,CACV,KAAQ,QACR,MAAS,whBACX,EACA,UAAa,CACX,KAAQ,QACR,MAAS,gmBACX,EACA,MAAS,CACP,KAAQ,QACR,MAAS,kwBACX,EACA,OAAU,CACR,KAAQ,QACR,MAAS,kwBACX,CACF,IClcA,IAAAC,GAAAC,EAAAC,IAAA,cACA,IAAIC,GAAS,KAAwB,OAMrCD,GAAQ,MAAQE,GAEhB,IAAIC,GAAa,GACbC,GAAe,GACfC,GAAa,IACbC,GAAa,KACbC,GAAkB,IAAI,MAAM,GAAK,EACjCC,GAAW,GAEf,IAASC,GAAI,EAAGA,GAAI,IAAOA,KACvBF,GAAgBE,IAAKN,GADhB,IAAAM,GAKT,SAASP,GAAUQ,EAAcC,EAAO,CAEpC,GADA,KAAK,aAAeD,EAAa,aAC7B,CAACA,EACD,MAAM,IAAI,MAAM,wCAAwC,EAC5D,GAAI,CAACA,EAAa,MACd,MAAM,IAAI,MAAM,aAAe,KAAK,aAAe,gBAAgB,EAGvE,IAAIE,EAAeF,EAAa,MAAM,EAYtC,KAAK,aAAe,CAAC,EACrB,KAAK,aAAa,GAAKH,GAAgB,MAAM,CAAC,EAG9C,KAAK,eAAiB,CAAC,EAGvB,QAASE,EAAI,EAAGA,EAAIG,EAAa,OAAQH,IACrC,KAAK,gBAAgBG,EAAaH,EAAE,EAExC,KAAK,mBAAqBE,EAAM,mBAUhC,KAAK,YAAc,CAAC,EAMpB,KAAK,eAAiB,CAAC,EAGvB,IAAIE,EAAkB,CAAC,EACvB,GAAIH,EAAa,eACb,QAASD,EAAI,EAAGA,EAAIC,EAAa,eAAe,OAAQD,IAAK,CACzD,IAAIK,EAAMJ,EAAa,eAAeD,GACtC,GAAI,OAAOK,GAAQ,SACfD,EAAgBC,GAAO,OAEvB,SAASC,EAAID,EAAI,KAAMC,GAAKD,EAAI,GAAIC,IAChCF,EAAgBE,GAAK,EACjC,CAMJ,GAHA,KAAK,iBAAiB,EAAG,EAAGF,CAAe,EAGvCH,EAAa,UACb,QAASM,KAASN,EAAa,UACvB,OAAO,UAAU,eAAe,KAAKA,EAAa,UAAWM,CAAK,GAClE,KAAK,eAAeA,EAAM,WAAW,CAAC,EAAGN,EAAa,UAAUM,EAAM,EASlF,GANA,KAAK,UAAa,KAAK,YAAY,GAAGL,EAAM,sBAAsB,WAAW,CAAC,GAC1E,KAAK,YAAcR,KAAY,KAAK,UAAY,KAAK,YAAY,GAAG,MACpE,KAAK,YAAcA,KAAY,KAAK,UAAY,IAAI,WAAW,CAAC,GAIhE,OAAOO,EAAa,SAAY,WAAY,CAC5C,KAAK,QAAUA,EAAa,QAAQ,EASpC,QANIO,EAAmB,KAAK,aAAa,OACrCC,EAAgB,KAAK,aAAaD,GAAoBV,GAAgB,MAAM,CAAC,EAE7EY,EAAoB,KAAK,aAAa,OACtCC,EAAiB,KAAK,aAAaD,GAAqBZ,GAAgB,MAAM,CAAC,EAE1EE,EAAI,IAAMA,GAAK,IAAMA,IAG1B,QAFIY,EAAoBf,GAAa,KAAK,aAAa,GAAGG,GACtDa,EAAiB,KAAK,aAAaD,GAC9BN,EAAI,GAAMA,GAAK,GAAMA,IAC1BO,EAAeP,GAAKT,GAAaW,EAEzC,QAASR,EAAI,IAAMA,GAAK,IAAMA,IAC1BS,EAAcT,GAAKH,GAAaa,EACpC,QAASV,EAAI,GAAMA,GAAK,GAAMA,IAC1BW,EAAeX,GAAKL,EAC5B,CACJ,CAEAF,GAAU,UAAU,QAAUqB,GAC9BrB,GAAU,UAAU,QAAUsB,GAG9BtB,GAAU,UAAU,mBAAqB,SAASuB,EAAM,CAEpD,QADIC,EAAQ,CAAC,EACND,EAAO,EAAGA,IAAS,EACtBC,EAAM,KAAKD,EAAO,GAAI,EACtBC,EAAM,QAAU,GAChBA,EAAM,KAAK,CAAC,EAGhB,QADIC,EAAO,KAAK,aAAa,GACpBlB,EAAIiB,EAAM,OAAO,EAAGjB,EAAI,EAAGA,IAAK,CACrC,IAAIK,EAAMa,EAAKD,EAAMjB,IAErB,GAAIK,GAAOX,GACPwB,EAAKD,EAAMjB,IAAMH,GAAa,KAAK,aAAa,OAChD,KAAK,aAAa,KAAKqB,EAAOpB,GAAgB,MAAM,CAAC,CAAC,UAEjDO,GAAOR,GACZqB,EAAO,KAAK,aAAarB,GAAaQ,OAGtC,OAAM,IAAI,MAAM,qBAAuB,KAAK,aAAe,WAAaW,EAAK,SAAS,EAAE,CAAC,CACjG,CACA,OAAOE,CACX,EAGAzB,GAAU,UAAU,gBAAkB,SAAS0B,EAAO,CAElD,IAAIC,EAAU,SAASD,EAAM,GAAI,EAAE,EAG/BE,EAAa,KAAK,mBAAmBD,CAAO,EAChDA,EAAUA,EAAU,IAGpB,QAASE,EAAI,EAAGA,EAAIH,EAAM,OAAQG,IAAK,CACnC,IAAIC,EAAOJ,EAAMG,GACjB,GAAI,OAAOC,GAAS,SAChB,QAASC,EAAI,EAAGA,EAAID,EAAK,QAAS,CAC9B,IAAIE,EAAOF,EAAK,WAAWC,GAAG,EAC9B,GAAI,OAAUC,GAAQA,EAAO,MAAQ,CACjC,IAAIC,EAAYH,EAAK,WAAWC,GAAG,EACnC,GAAI,OAAUE,GAAaA,EAAY,MACnCL,EAAWD,KAAa,OAAWK,EAAO,OAAU,MAASC,EAAY,WAEzE,OAAM,IAAI,MAAM,+BAAkC,KAAK,aAAe,aAAeP,EAAM,EAAE,CACrG,SACS,KAASM,GAAQA,GAAQ,KAAQ,CAGtC,QAFIE,EAAM,KAAQF,EAAO,EACrBG,EAAM,CAAC,EACFC,EAAI,EAAGA,EAAIF,EAAKE,IACrBD,EAAI,KAAKL,EAAK,WAAWC,GAAG,CAAC,EAEjCH,EAAWD,KAAaxB,GAAY,KAAK,eAAe,OACxD,KAAK,eAAe,KAAKgC,CAAG,CAChC,MAEIP,EAAWD,KAAaK,CAChC,SAEK,OAAOF,GAAS,SAErB,QADIO,EAAWT,EAAWD,EAAU,GAAK,EAChCI,EAAI,EAAGA,EAAID,EAAMC,IACtBH,EAAWD,KAAaU,QAG5B,OAAM,IAAI,MAAM,mBAAqB,OAAOP,EAAO,cAAiB,KAAK,aAAe,aAAeJ,EAAM,EAAE,CACvH,CACA,GAAIC,EAAU,IACV,MAAM,IAAI,MAAM,sBAAyB,KAAK,aAAe,YAAcD,EAAM,GAAK,aAAeC,CAAO,CACpH,EAGA3B,GAAU,UAAU,iBAAmB,SAASsC,EAAO,CACnD,IAAIC,EAAOD,GAAS,EACpB,OAAI,KAAK,YAAYC,KAAU,SAC3B,KAAK,YAAYA,GAAQlC,GAAgB,MAAM,CAAC,GAC7C,KAAK,YAAYkC,EAC5B,EAEAvC,GAAU,UAAU,eAAiB,SAASsC,EAAOE,EAAU,CAC3D,IAAIC,EAAS,KAAK,iBAAiBH,CAAK,EACpCI,EAAMJ,EAAQ,IACdG,EAAOC,IAAQvC,GACf,KAAK,eAAeA,GAAUsC,EAAOC,IAAMpC,IAAYkC,EAClDC,EAAOC,IAAQzC,KACpBwC,EAAOC,GAAOF,EACtB,EAEAxC,GAAU,UAAU,mBAAqB,SAASmC,EAAKK,EAAU,CAG7D,IAAIF,EAAQH,EAAI,GACZM,EAAS,KAAK,iBAAiBH,CAAK,EACpCI,EAAMJ,EAAQ,IAEdb,EACAgB,EAAOC,IAAQvC,GAEfsB,EAAO,KAAK,eAAetB,GAAUsC,EAAOC,KAI5CjB,EAAO,CAAC,EACJgB,EAAOC,KAASzC,KAAYwB,EAAKnB,IAAYmC,EAAOC,IACxDD,EAAOC,GAAOvC,GAAY,KAAK,eAAe,OAC9C,KAAK,eAAe,KAAKsB,CAAI,GAIjC,QAASZ,EAAI,EAAGA,EAAIsB,EAAI,OAAO,EAAGtB,IAAK,CACnC,IAAI8B,EAASlB,EAAKa,GACd,OAAOK,GAAW,SAClBlB,EAAOkB,GAEPlB,EAAOA,EAAKa,GAAS,CAAC,EAClBK,IAAW,SACXlB,EAAKnB,IAAYqC,GAE7B,CAGAL,EAAQH,EAAIA,EAAI,OAAO,GACvBV,EAAKa,GAASE,CAClB,EAEAxC,GAAU,UAAU,iBAAmB,SAAS4C,EAASC,EAAQlC,EAAiB,CAE9E,QADIc,EAAO,KAAK,aAAamB,GACpB,EAAI,EAAG,EAAI,IAAO,IAAK,CAC5B,IAAIN,EAAQb,EAAK,GACbqB,EAASD,EAAS,EAClBlC,EAAgBmC,KAGhBR,GAAS,EACT,KAAK,eAAeA,EAAOQ,CAAM,EAC5BR,GAASlC,GACd,KAAK,iBAAiBA,GAAakC,EAAOQ,GAAU,EAAGnC,CAAe,EACjE2B,GAASnC,IACd,KAAK,mBAAmB,KAAK,eAAeA,GAAYmC,GAAQQ,CAAM,EAC9E,CACJ,EAMA,SAASzB,GAAY0B,EAASC,EAAO,CAEjC,KAAK,cAAgB,GACrB,KAAK,OAAS,OAGd,KAAK,YAAcA,EAAM,YACzB,KAAK,eAAiBA,EAAM,eAC5B,KAAK,sBAAwBA,EAAM,UACnC,KAAK,QAAUA,EAAM,OACzB,CAEA3B,GAAY,UAAU,MAAQ,SAAS4B,EAAK,CAMxC,QALIC,EAASnD,GAAO,MAAMkD,EAAI,QAAU,KAAK,QAAU,EAAI,EAAE,EACzDE,EAAgB,KAAK,cACrBC,EAAS,KAAK,OAAQC,EAAW,GACjC9C,EAAI,EAAGM,EAAI,IAEF,CAET,GAAIwC,IAAa,GAAI,CACjB,GAAI9C,GAAK0C,EAAI,OAAQ,MACrB,IAAIX,EAAQW,EAAI,WAAW1C,GAAG,CAClC,KACK,CACD,IAAI+B,EAAQe,EACZA,EAAW,EACf,CAGA,GAAI,OAAUf,GAASA,EAAQ,MAC3B,GAAIA,EAAQ,MACR,GAAIa,IAAkB,GAAI,CACtBA,EAAgBb,EAChB,QACJ,MACIa,EAAgBb,EAEhBA,EAAQrC,QAGRkD,IAAkB,IAClBb,EAAQ,OAAWa,EAAgB,OAAU,MAASb,EAAQ,OAC9Da,EAAgB,IAGhBb,EAAQrC,QAKXkD,IAAkB,KAEvBE,EAAWf,EAAOA,EAAQrC,GAC1BkD,EAAgB,IAIpB,IAAIX,EAAWvC,GACf,GAAImD,IAAW,QAAad,GAASrC,GAAY,CAC7C,IAAIqD,EAAUF,EAAOd,GACrB,GAAI,OAAOgB,GAAY,SAAU,CAC7BF,EAASE,EACT,QAEJ,MAAW,OAAOA,GAAW,SACzBd,EAAWc,EAEJA,GAAW,OAGlBA,EAAUF,EAAO9C,IACbgD,IAAY,SACZd,EAAWc,EACXD,EAAWf,IASnBc,EAAS,MACb,SACSd,GAAS,EAAG,CACjB,IAAIiB,EAAW,KAAK,YAAYjB,GAAS,GAIzC,GAHIiB,IAAa,SACbf,EAAWe,EAASjB,EAAQ,MAE5BE,GAAYrC,GAAW,CACvBiD,EAAS,KAAK,eAAejD,GAAUqC,GACvC,QACJ,CAEA,GAAIA,GAAYvC,IAAc,KAAK,QAAS,CAExC,IAAIuD,EAAMC,GAAQ,KAAK,QAAQ,OAAQnB,CAAK,EAC5C,GAAIkB,GAAO,GAAI,CACX,IAAIhB,EAAW,KAAK,QAAQ,QAAQgB,IAAQlB,EAAQ,KAAK,QAAQ,OAAOkB,IACxEN,EAAOrC,KAAO,IAAO,KAAK,MAAM2B,EAAW,KAAK,EAAGA,EAAWA,EAAW,MACzEU,EAAOrC,KAAO,GAAO,KAAK,MAAM2B,EAAW,IAAI,EAAGA,EAAWA,EAAW,KACxEU,EAAOrC,KAAO,IAAO,KAAK,MAAM2B,EAAW,EAAE,EAAGA,EAAWA,EAAW,GACtEU,EAAOrC,KAAO,GAAO2B,EACrB,QACJ,CACJ,CACJ,CAGIA,IAAavC,KACbuC,EAAW,KAAK,uBAEhBA,EAAW,IACXU,EAAOrC,KAAO2B,EAETA,EAAW,OAChBU,EAAOrC,KAAO2B,GAAY,EAC1BU,EAAOrC,KAAO2B,EAAW,MAGzBU,EAAOrC,KAAO2B,GAAY,GAC1BU,EAAOrC,KAAQ2B,GAAY,EAAK,IAChCU,EAAOrC,KAAO2B,EAAW,IAEjC,CAEA,YAAK,OAASY,EACd,KAAK,cAAgBD,EACdD,EAAO,MAAM,EAAGrC,CAAC,CAC5B,EAEAQ,GAAY,UAAU,IAAM,UAAW,CACnC,GAAI,OAAK,gBAAkB,IAAM,KAAK,SAAW,QAGjD,KAAI6B,EAASnD,GAAO,MAAM,EAAE,EAAGc,EAAI,EAEnC,GAAI,KAAK,OAAQ,CACb,IAAI2B,EAAW,KAAK,OAAOlC,IACvBkC,IAAa,SACTA,EAAW,IACXU,EAAOrC,KAAO2B,GAGdU,EAAOrC,KAAO2B,GAAY,EAC1BU,EAAOrC,KAAO2B,EAAW,MAKjC,KAAK,OAAS,MAClB,CAEA,OAAI,KAAK,gBAAkB,KAEvBU,EAAOrC,KAAO,KAAK,sBACnB,KAAK,cAAgB,IAGlBqC,EAAO,MAAM,EAAGrC,CAAC,EAC5B,EAGAQ,GAAY,UAAU,QAAUoC,GAKhC,SAASnC,GAAYyB,EAASC,EAAO,CAEjC,KAAK,QAAU,EACf,KAAK,QAAUjD,GAAO,MAAM,CAAC,EAG7B,KAAK,aAAeiD,EAAM,aAC1B,KAAK,eAAiBA,EAAM,eAC5B,KAAK,mBAAqBA,EAAM,mBAChC,KAAK,QAAUA,EAAM,OACzB,CAEA1B,GAAY,UAAU,MAAQ,SAASoC,EAAK,CACxC,IAAIR,EAASnD,GAAO,MAAM2D,EAAI,OAAO,CAAC,EAClCd,EAAU,KAAK,QACfe,EAAU,KAAK,QAASC,EAAgB,KAAK,QAAQ,OACrDC,EAAW,CAAC,KAAK,QAAQ,OACzBvB,EAEAsB,EAAgB,IAChBD,EAAU5D,GAAO,OAAO,CAAC4D,EAASD,EAAI,MAAM,EAAG,EAAE,CAAC,CAAC,GAEvD,QAASnD,EAAI,EAAGM,EAAI,EAAGN,EAAImD,EAAI,OAAQnD,IAAK,CACxC,IAAIuD,EAAWvD,GAAK,EAAKmD,EAAInD,GAAKoD,EAAQpD,EAAIqD,GAG1CtB,EAAQ,KAAK,aAAaM,GAASkB,GAEvC,GAAI,EAAAxB,GAAS,GAGR,GAAIA,IAAUrC,GAGfM,EAAIsD,EACJvB,EAAQ,KAAK,mBAAmB,WAAW,CAAC,UAEvCA,IAAUpC,GAAc,CAC7B,IAAI6D,EAAUF,GAAY,EAAKH,EAAI,MAAMG,EAAUtD,EAAE,CAAC,EAAIoD,EAAQ,MAAME,EAAWD,EAAerD,EAAE,EAAIqD,CAAa,EACjHI,GAAOD,EAAO,GAAG,KAAM,OAASA,EAAO,GAAG,IAAM,MAAQA,EAAO,GAAG,KAAM,IAAMA,EAAO,GAAG,IACxFP,EAAMC,GAAQ,KAAK,QAAQ,QAASO,CAAG,EAC3C1B,EAAQ,KAAK,QAAQ,OAAOkB,GAAOQ,EAAM,KAAK,QAAQ,QAAQR,EAClE,SACSlB,GAASlC,GAAY,CAC1BwC,EAAUxC,GAAakC,EACvB,QACJ,SACSA,GAASnC,GAAW,CAEzB,QADIgC,EAAM,KAAK,eAAehC,GAAYmC,GACjCT,EAAI,EAAGA,EAAIM,EAAI,OAAS,EAAGN,IAChCS,EAAQH,EAAIN,GACZqB,EAAOrC,KAAOyB,EAAQ,IACtBY,EAAOrC,KAAOyB,GAAS,EAE3BA,EAAQH,EAAIA,EAAI,OAAO,EAC3B,KAEI,OAAM,IAAI,MAAM,2DAA6DG,EAAQ,OAASM,EAAU,IAAMkB,CAAO,EAGzH,GAAIxB,EAAQ,MAAQ,CAChBA,GAAS,MACT,IAAI2B,EAAY,MAAS,KAAK,MAAM3B,EAAQ,IAAK,EACjDY,EAAOrC,KAAOoD,EAAY,IAC1Bf,EAAOrC,KAAOoD,GAAa,EAE3B3B,EAAQ,MAASA,EAAQ,IAC7B,CACAY,EAAOrC,KAAOyB,EAAQ,IACtBY,EAAOrC,KAAOyB,GAAS,EAGvBM,EAAU,EAAGiB,EAAWtD,EAAE,CAC9B,CAEA,YAAK,QAAUqC,EACf,KAAK,QAAWiB,GAAY,EAAKH,EAAI,MAAMG,CAAQ,EAAIF,EAAQ,MAAME,EAAWD,CAAa,EACtFV,EAAO,MAAM,EAAGrC,CAAC,EAAE,SAAS,MAAM,CAC7C,EAEAS,GAAY,UAAU,IAAM,UAAW,CAInC,QAHI4C,EAAM,GAGH,KAAK,QAAQ,OAAS,GAAG,CAE5BA,GAAO,KAAK,mBACZ,IAAIR,EAAM,KAAK,QAAQ,MAAM,CAAC,EAG9B,KAAK,QAAU3D,GAAO,MAAM,CAAC,EAC7B,KAAK,QAAU,EACX2D,EAAI,OAAS,IACbQ,GAAO,KAAK,MAAMR,CAAG,EAC7B,CAEA,YAAK,QAAU,EACRQ,CACX,EAGA,SAAST,GAAQU,EAAOvD,EAAK,CACzB,GAAIuD,EAAM,GAAKvD,EACX,MAAO,GAGX,QADImB,EAAI,EAAGqC,EAAID,EAAM,OACdpC,EAAIqC,EAAE,GAAG,CACZ,IAAIC,EAAMtC,EAAI,KAAK,OAAOqC,EAAErC,EAAE,GAAG,CAAC,EAC9BoC,EAAME,IAAQzD,EACdmB,EAAIsC,EAEJD,EAAIC,CACZ,CACA,OAAOtC,CACX,onzYCziBA,IAAAuC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAMAA,GAAO,QAAU,CAkCb,SAAY,CACR,KAAM,QACN,MAAO,UAAW,CAAE,MAAO,KAAkC,EAC7D,UAAW,CAAC,OAAU,GAAM,SAAU,GAAI,EAC1C,eAAgB,CAAC,CAAC,KAAM,MAAQ,GAAI,KAAM,CAAC,CAC/C,EACA,WAAc,WACd,QAAW,WACX,KAAQ,WACR,WAAc,WACd,MAAS,WACT,MAAS,WACT,WAAc,WACd,MAAS,WACT,IAAO,WACP,MAAS,WAET,MAAS,CACL,KAAM,QACN,MAAO,UAAW,CAAE,MAAO,KAA+B,EAC1D,UAAW,CAAC,OAAU,GAAM,SAAU,GAAI,CAC9C,EAYA,OAAU,QACV,SAAY,QACZ,WAAc,QACd,SAAY,QACZ,gBAAmB,QACnB,MAAS,QAGT,WAAc,QACd,MAAS,QACT,IAAO,QACP,MAAS,CACL,KAAM,QACN,MAAO,UAAW,CAAE,MAAO,KAA+B,CAC9D,EAGA,IAAO,CACH,KAAM,QACN,MAAO,UAAW,CAAE,MAAO,MAA+B,OAAO,IAAkC,CAAE,CACzG,EACA,KAAQ,MACR,QAAW,MAOX,QAAW,CACP,KAAM,QACN,MAAO,UAAW,CAAE,MAAO,MAA+B,OAAO,IAAkC,CAAE,EACrG,QAAS,UAAW,CAAE,MAAO,KAAwC,EACrE,eAAgB,CAAC,GAAI,EACrB,UAAW,CAAC,SAAK,KAAM,CAC3B,EAEA,QAAW,UAKX,WAAc,QACd,MAAS,QACT,IAAO,QACP,MAAS,CACL,KAAM,QACN,MAAO,UAAW,CAAE,MAAO,KAA+B,CAC9D,EAEA,QAAW,QACX,cAAiB,QACjB,MAAS,QACT,SAAY,QACZ,OAAU,QACV,YAAe,QACf,YAAe,QACf,QAAW,QA0BX,WAAc,QACd,MAAS,QACT,IAAO,QACP,MAAS,CACL,KAAM,QACN,MAAO,UAAW,CAAE,MAAO,KAA+B,CAC9D,EAGA,KAAQ,YACR,UAAa,CACT,KAAM,QACN,MAAO,UAAW,CAAE,MAAO,MAA+B,OAAO,IAAmC,CAAE,EACtG,eAAgB,CAAC,KAAM,CAC3B,EAEA,OAAU,YACV,OAAU,YACV,OAAU,WACd,IC/KA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAIA,IAAIC,GAAU,CACV,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACJ,EAGA,IAASC,GAAI,EAAGA,GAAID,GAAQ,OAAQC,KAAK,CACjCF,GAASC,GAAQC,IACrB,IAASC,MAAOH,GACR,OAAO,UAAU,eAAe,KAAKA,GAAQG,EAAG,IAChDJ,GAAQI,IAAOH,GAAOG,IAClC,CAJQ,IAAAH,GACKG,GAFJD,KChBT,IAAAE,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAS,QAAQ,UAAU,OAC3BC,GAAY,QAAQ,UAAU,UAIlCF,GAAO,QAAU,SAASG,EAAO,CAG7BA,EAAM,aAAe,SAAsBC,EAAUC,EAAS,CAC1D,OAAO,IAAIC,GAAuBH,EAAM,WAAWC,EAAUC,CAAO,EAAGA,CAAO,CAClF,EAEAF,EAAM,aAAe,SAAsBC,EAAUC,EAAS,CAC1D,OAAO,IAAIE,GAAuBJ,EAAM,WAAWC,EAAUC,CAAO,EAAGA,CAAO,CAClF,EAEAF,EAAM,gBAAkB,GAIxBA,EAAM,uBAAyBG,GAC/BH,EAAM,uBAAyBI,GAC/BJ,EAAM,SAAWI,GAAuB,UAAU,OACtD,EAIA,SAASD,GAAuBE,EAAMH,EAAS,CAC3C,KAAK,KAAOG,EACZH,EAAUA,GAAW,CAAC,EACtBA,EAAQ,cAAgB,GACxBH,GAAU,KAAK,KAAMG,CAAO,CAChC,CAEAC,GAAuB,UAAY,OAAO,OAAOJ,GAAU,UAAW,CAClE,YAAa,CAAE,MAAOI,EAAuB,CACjD,CAAC,EAEDA,GAAuB,UAAU,WAAa,SAASG,EAAOL,EAAUM,EAAM,CAC1E,GAAI,OAAOD,GAAS,SAChB,OAAOC,EAAK,IAAI,MAAM,mDAAmD,CAAC,EAC9E,GAAI,CACA,IAAIC,EAAM,KAAK,KAAK,MAAMF,CAAK,EAC3BE,GAAOA,EAAI,QAAQ,KAAK,KAAKA,CAAG,EACpCD,EAAK,CACT,OACOE,EAAP,CACIF,EAAKE,CAAC,CACV,CACJ,EAEAN,GAAuB,UAAU,OAAS,SAASI,EAAM,CACrD,GAAI,CACA,IAAIC,EAAM,KAAK,KAAK,IAAI,EACpBA,GAAOA,EAAI,QAAQ,KAAK,KAAKA,CAAG,EACpCD,EAAK,CACT,OACOE,EAAP,CACIF,EAAKE,CAAC,CACV,CACJ,EAEAN,GAAuB,UAAU,QAAU,SAASO,EAAI,CACpD,IAAIC,EAAS,CAAC,EACd,YAAK,GAAG,QAASD,CAAE,EACnB,KAAK,GAAG,OAAQ,SAASJ,EAAO,CAAEK,EAAO,KAAKL,CAAK,CAAG,CAAC,EACvD,KAAK,GAAG,MAAO,UAAW,CACtBI,EAAG,KAAMZ,GAAO,OAAOa,CAAM,CAAC,CAClC,CAAC,EACM,IACX,EAIA,SAASP,GAAuBC,EAAMH,EAAS,CAC3C,KAAK,KAAOG,EACZH,EAAUA,GAAW,CAAC,EACtBA,EAAQ,SAAW,KAAK,SAAW,OACnCH,GAAU,KAAK,KAAMG,CAAO,CAChC,CAEAE,GAAuB,UAAY,OAAO,OAAOL,GAAU,UAAW,CAClE,YAAa,CAAE,MAAOK,EAAuB,CACjD,CAAC,EAEDA,GAAuB,UAAU,WAAa,SAASE,EAAOL,EAAUM,EAAM,CAC1E,GAAI,CAACT,GAAO,SAASQ,CAAK,EACtB,OAAOC,EAAK,IAAI,MAAM,mDAAmD,CAAC,EAC9E,GAAI,CACA,IAAIC,EAAM,KAAK,KAAK,MAAMF,CAAK,EAC3BE,GAAOA,EAAI,QAAQ,KAAK,KAAKA,EAAK,KAAK,QAAQ,EACnDD,EAAK,CACT,OACOE,EAAP,CACIF,EAAKE,CAAC,CACV,CACJ,EAEAL,GAAuB,UAAU,OAAS,SAASG,EAAM,CACrD,GAAI,CACA,IAAIC,EAAM,KAAK,KAAK,IAAI,EACpBA,GAAOA,EAAI,QAAQ,KAAK,KAAKA,EAAK,KAAK,QAAQ,EACnDD,EAAK,CACT,OACOE,EAAP,CACIF,EAAKE,CAAC,CACV,CACJ,EAEAL,GAAuB,UAAU,QAAU,SAASM,EAAI,CACpD,IAAIF,EAAM,GACV,YAAK,GAAG,QAASE,CAAE,EACnB,KAAK,GAAG,OAAQ,SAASJ,EAAO,CAAEE,GAAOF,CAAO,CAAC,EACjD,KAAK,GAAG,MAAO,UAAW,CACtBI,EAAG,KAAMF,CAAG,CAChB,CAAC,EACM,IACX,ICvHA,IAAAI,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cACA,IAAIC,GAAS,QAAQ,UAAU,OAK/BD,GAAO,QAAU,SAAUE,EAAO,CAC9B,IAAIC,EAAW,OAKfD,EAAM,+BAAiC,EAAED,GAAO,MAAQ,IAAIA,GAAO,CAAC,YAAa,YAEjFC,EAAM,oBAAsB,UAA+B,CACvD,GAAI,CAAAC,EAGJ,IAFAA,EAAW,CAAC,EAER,CAACD,EAAM,+BAAgC,CACvC,QAAQ,MAAM,qGAAqG,EACnH,QAAQ,MAAM,sFAAsF,EACpG,MACJ,CAEA,IAAIE,EAAsB,CACtB,IAAO,GAAM,KAAQ,GAAM,QAAS,GAAM,MAAS,GAAM,OAAU,GACnE,OAAU,GAAM,KAAQ,GAAM,QAAS,GAAM,QAAW,GAAM,WAAY,EAC9E,EAEAH,GAAO,iBAAmB,SAASI,EAAK,CACpC,OAAOA,GAAOD,EAAoBC,EAAI,YAAY,EACtD,EAGA,IAAIC,EAAa,QAAQ,UAAU,WA2InC,GAzIAH,EAAS,mBAAqBG,EAAW,UAAU,SACnDA,EAAW,UAAU,SAAW,SAASC,EAAUC,EAAOC,EAAK,CAI3D,OAHAF,EAAW,OAAOA,GAAY,MAAM,EAAE,YAAY,EAG9CN,GAAO,iBAAiBM,CAAQ,EACzBJ,EAAS,mBAAmB,KAAK,KAAMI,EAAUC,EAAOC,CAAG,GAGlE,OAAOD,EAAS,MAAaA,EAAQ,GACrC,OAAOC,EAAO,MAAaA,EAAM,KAAK,QACnCP,EAAM,OAAO,KAAK,MAAMM,EAAOC,CAAG,EAAGF,CAAQ,EACxD,EAEAJ,EAAS,gBAAkBG,EAAW,UAAU,MAChDA,EAAW,UAAU,MAAQ,SAASI,EAAQC,EAAQC,EAAQL,EAAU,CAGpE,GAAI,SAASI,CAAM,EACV,SAASC,CAAM,IAChBL,EAAWK,EACXA,EAAS,YAEV,CACH,IAAIC,EAAON,EACXA,EAAWI,EACXA,EAASC,EACTA,EAASC,CACb,CAEAF,EAAS,CAACA,GAAU,EACpB,IAAIG,EAAY,KAAK,OAASH,EAY9B,GAXKC,GAGDA,EAAS,CAACA,EACNA,EAASE,IACTF,EAASE,IAJbF,EAASE,EAObP,EAAW,OAAOA,GAAY,MAAM,EAAE,YAAY,EAG9CN,GAAO,iBAAiBM,CAAQ,EAChC,OAAOJ,EAAS,gBAAgB,KAAK,KAAMO,EAAQC,EAAQC,EAAQL,CAAQ,EAE/E,GAAIG,EAAO,OAAS,IAAME,EAAS,GAAKD,EAAS,GAC7C,MAAM,IAAI,WAAW,uCAAuC,EAGhE,IAAII,EAAMb,EAAM,OAAOQ,EAAQH,CAAQ,EACvC,OAAIQ,EAAI,OAASH,IAAQA,EAASG,EAAI,QACtCA,EAAI,KAAK,KAAMJ,EAAQ,EAAGC,CAAM,EACzBA,CACX,EAIAT,EAAS,iBAAmBF,GAAO,WACnCA,GAAO,WAAa,SAASM,EAAU,CACnC,OAAON,GAAO,iBAAiBM,CAAQ,GAAKL,EAAM,eAAeK,CAAQ,CAC7E,EAEAJ,EAAS,iBAAmBF,GAAO,WACnCA,GAAO,WAAaK,EAAW,WAAa,SAASU,EAAKT,EAAU,CAIhE,OAHAA,EAAW,OAAOA,GAAY,MAAM,EAAE,YAAY,EAG9CN,GAAO,iBAAiBM,CAAQ,EACzBJ,EAAS,iBAAiB,KAAK,KAAMa,EAAKT,CAAQ,EAGtDL,EAAM,OAAOc,EAAKT,CAAQ,EAAE,MACvC,EAEAJ,EAAS,eAAiBF,GAAO,UAAU,SAC3CA,GAAO,UAAU,SAAW,SAASM,EAAUC,EAAOC,EAAK,CAIvD,OAHAF,EAAW,OAAOA,GAAY,MAAM,EAAE,YAAY,EAG9CN,GAAO,iBAAiBM,CAAQ,EACzBJ,EAAS,eAAe,KAAK,KAAMI,EAAUC,EAAOC,CAAG,GAG9D,OAAOD,EAAS,MAAaA,EAAQ,GACrC,OAAOC,EAAO,MAAaA,EAAM,KAAK,QACnCP,EAAM,OAAO,KAAK,MAAMM,EAAOC,CAAG,EAAGF,CAAQ,EACxD,EAEAJ,EAAS,YAAcF,GAAO,UAAU,MACxCA,GAAO,UAAU,MAAQ,SAASS,EAAQC,EAAQC,EAAQL,EAAU,CAChE,IAAIU,EAAUN,EAAQO,EAAUN,EAAQO,EAAYZ,EAGpD,GAAI,SAASI,CAAM,EACV,SAASC,CAAM,IAChBL,EAAWK,EACXA,EAAS,YAEV,CACH,IAAIC,EAAON,EACXA,EAAWI,EACXA,EAASC,EACTA,EAASC,CACb,CAKA,GAHAN,EAAW,OAAOA,GAAY,MAAM,EAAE,YAAY,EAG9CN,GAAO,iBAAiBM,CAAQ,EAChC,OAAOJ,EAAS,YAAY,KAAK,KAAMO,EAAQO,EAASC,EAASC,CAAS,EAE9ER,EAAS,CAACA,GAAU,EACpB,IAAIG,EAAY,KAAK,OAASH,EAU9B,GATKC,GAGDA,EAAS,CAACA,EACNA,EAASE,IACTF,EAASE,IAJbF,EAASE,EAQTJ,EAAO,OAAS,IAAME,EAAS,GAAKD,EAAS,GAC7C,MAAM,IAAI,WAAW,uCAAuC,EAGhE,IAAII,EAAMb,EAAM,OAAOQ,EAAQH,CAAQ,EACvC,OAAIQ,EAAI,OAASH,IAAQA,EAASG,EAAI,QACtCA,EAAI,KAAK,KAAMJ,EAAQ,EAAGC,CAAM,EACzBA,CAGX,EAIIV,EAAM,gBAAiB,CACvB,IAAIkB,EAAW,QAAQ,UAAU,SAEjCjB,EAAS,oBAAsBiB,EAAS,UAAU,YAClDA,EAAS,UAAU,YAAc,SAAqBf,EAAKgB,EAAS,CAGhE,KAAK,eAAe,QAAUnB,EAAM,WAAWG,EAAKgB,CAAO,EAC3D,KAAK,eAAe,SAAWhB,CACnC,EAEAe,EAAS,UAAU,QAAUlB,EAAM,QACvC,EACJ,EAGAA,EAAM,wBAA0B,UAAmC,CAC/D,GAAI,EAACA,EAAM,+BAEX,IAAI,CAACC,EACD,MAAM,IAAI,MAAM,wGAAwG,EAE5H,OAAOF,GAAO,iBAEd,IAAIK,EAAa,QAAQ,UAAU,WAUnC,GARAA,EAAW,UAAU,SAAWH,EAAS,mBACzCG,EAAW,UAAU,MAAQH,EAAS,gBAEtCF,GAAO,WAAaE,EAAS,iBAC7BF,GAAO,WAAaE,EAAS,iBAC7BF,GAAO,UAAU,SAAWE,EAAS,eACrCF,GAAO,UAAU,MAAQE,EAAS,YAE9BD,EAAM,gBAAiB,CACvB,IAAIkB,EAAW,QAAQ,UAAU,SAEjCA,EAAS,UAAU,YAAcjB,EAAS,oBAC1C,OAAOiB,EAAS,UAAU,OAC9B,CAEAjB,EAAW,OACf,CACJ,ICxNA,IAAAmB,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAIA,IAAIC,GAAS,KAAwB,OAEjCC,GAAc,KACdC,GAAQH,GAAO,QAInBG,GAAM,UAAY,KAGlBA,GAAM,mBAAqB,SAC3BA,GAAM,sBAAwB,IAG9BA,GAAM,OAAS,SAAgBC,EAAKC,EAAUC,EAAS,CACnDF,EAAM,IAAMA,GAAO,IAEnB,IAAIG,EAAUJ,GAAM,WAAWE,EAAUC,CAAO,EAE5CE,EAAMD,EAAQ,MAAMH,CAAG,EACvBK,EAAQF,EAAQ,IAAI,EAExB,OAAQE,GAASA,EAAM,OAAS,EAAKR,GAAO,OAAO,CAACO,EAAKC,CAAK,CAAC,EAAID,CACvE,EAEAL,GAAM,OAAS,SAAgBO,EAAKL,EAAUC,EAAS,CAC/C,OAAOI,GAAQ,WACVP,GAAM,oBACP,QAAQ,MAAM,0IAA0I,EACxJA,GAAM,kBAAoB,IAG9BO,EAAMT,GAAO,KAAK,IAAMS,GAAO,IAAK,QAAQ,GAGhD,IAAIC,EAAUR,GAAM,WAAWE,EAAUC,CAAO,EAE5CE,EAAMG,EAAQ,MAAMD,CAAG,EACvBD,EAAQE,EAAQ,IAAI,EAExB,OAAOF,EAASD,EAAMC,EAASD,CACnC,EAEAL,GAAM,eAAiB,SAAwBS,EAAK,CAChD,GAAI,CACA,OAAAT,GAAM,SAASS,CAAG,EACX,EACX,MAAE,CACE,MAAO,EACX,CACJ,EAGAT,GAAM,WAAaA,GAAM,OACzBA,GAAM,aAAeA,GAAM,OAG3BA,GAAM,gBAAkB,CAAC,EACzBA,GAAM,SAAW,SAAkBE,EAAU,CACpCF,GAAM,YACPA,GAAM,UAAY,MAOtB,QAJIS,EAAMT,GAAM,sBAAsBE,CAAQ,EAG1CQ,EAAe,CAAC,IACP,CACT,IAAIC,EAAQX,GAAM,gBAAgBS,GAClC,GAAIE,EACA,OAAOA,EAEX,IAAIC,EAAWZ,GAAM,UAAUS,GAE/B,OAAQ,OAAOG,EAAU,CACrB,IAAK,SACDH,EAAMG,EACN,MAEJ,IAAK,SACD,QAASC,KAAOD,EACZF,EAAaG,GAAOD,EAASC,GAE5BH,EAAa,eACdA,EAAa,aAAeD,GAEhCA,EAAMG,EAAS,KACf,MAEJ,IAAK,WACD,OAAKF,EAAa,eACdA,EAAa,aAAeD,GAIhCE,EAAQ,IAAIC,EAASF,EAAcV,EAAK,EAExCA,GAAM,gBAAgBU,EAAa,cAAgBC,EAC5CA,EAEX,QACI,MAAM,IAAI,MAAM,6BAA+BT,EAAW,oBAAoBO,EAAI,IAAI,CAC9F,CACJ,CACJ,EAEAT,GAAM,sBAAwB,SAASE,EAAU,CAE7C,OAAQ,GAAGA,GAAU,YAAY,EAAE,QAAQ,qBAAsB,EAAE,CACvE,EAEAF,GAAM,WAAa,SAAoBE,EAAUC,EAAS,CACtD,IAAIQ,EAAQX,GAAM,SAASE,CAAQ,EAC/BE,EAAU,IAAIO,EAAM,QAAQR,EAASQ,CAAK,EAE9C,OAAIA,EAAM,UAAYR,GAAWA,EAAQ,SACrCC,EAAU,IAAIL,GAAY,WAAWK,EAASD,CAAO,GAElDC,CACX,EAEAJ,GAAM,WAAa,SAAoBE,EAAUC,EAAS,CACtD,IAAIQ,EAAQX,GAAM,SAASE,CAAQ,EAC/BM,EAAU,IAAIG,EAAM,QAAQR,EAASQ,CAAK,EAE9C,OAAIA,EAAM,UAAY,EAAER,GAAWA,EAAQ,WAAa,MACpDK,EAAU,IAAIT,GAAY,SAASS,EAASL,CAAO,GAEhDK,CACX,EAIA,IAAIM,GAAU,OAAO,QAAY,KAAe,QAAQ,UAAY,QAAQ,SAAS,KACjFA,KAGIC,GAAaD,GAAQ,MAAM,GAAG,EAAE,IAAI,MAAM,GAC1CC,GAAW,GAAK,GAAKA,GAAW,IAAM,KACtC,KAAqBf,EAAK,EAI9B,KAAyBA,EAAK,GAN1B,IAAAe,KC7IR,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAaAA,GAAO,QAAUC,GAOjB,SAASC,GAAqBC,EAAQ,CAGpC,QAFIC,EAAYD,EAAO,UAAU,MAAM,EAE9BE,EAAI,EAAGA,EAAID,EAAU,OAAQC,IACpC,GAAID,EAAUC,GAAG,OAAS,SACxB,MAAO,GAIX,MAAO,EACT,CASA,SAASJ,GAAOE,EAAQ,CACtB,GAAI,CAACA,EACH,MAAM,IAAI,UAAU,6BAA6B,EAGnD,GAAI,OAAOA,EAAO,QAAW,WAAY,CAEvCA,EAAO,OAAO,EACd,MACF,CAGA,GAAI,EAACD,GAAqBC,CAAM,EAOhC,QAHIG,EACAF,EAAYD,EAAO,UAAU,OAAO,EAE/BE,EAAI,EAAGA,EAAID,EAAU,OAAQC,IACpCC,EAAWF,EAAUC,GAEjB,EAAAC,EAAS,OAAS,WAAaA,EAAS,OAAS,YAKrDA,EAAS,KAAKH,CAAM,CAExB,ICpEA,IAAAI,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAcA,IAAIC,GAAaC,GAAqB,EAClCC,GAAQ,KACRC,GAAc,KACdC,GAAQ,KACRC,GAAS,KAObN,GAAO,QAAUO,GAOjB,IAAIC,GAAgC,6BASpC,SAASC,GAAYC,EAAU,CAC7B,GAAI,CAACA,EAAU,OAAO,KAEtB,GAAI,CACF,OAAOL,GAAM,WAAWK,CAAQ,CAClC,OAAS,EAAP,CAEA,MAAKF,GAA8B,KAAK,EAAE,OAAO,EAG3CJ,GAAY,IAAK,iCAAkC,CACvD,SAAUM,EACV,KAAM,sBACR,CAAC,EANyD,CAO5D,CACF,CAWA,SAASH,GAAYI,EAAQC,EAASC,EAAU,CAC9C,IAAIC,EAAOD,EACPE,EAAOH,GAAW,CAAC,EAevB,IAbIA,IAAY,IAAQ,OAAOA,GAAY,YAEzCG,EAAO,CACL,SAAUH,CACZ,GAGE,OAAOA,GAAY,aACrBE,EAAOF,EACPG,EAAO,CAAC,GAIND,IAAS,QAAa,OAAOA,GAAS,WACxC,MAAM,IAAI,UAAU,sCAAsC,EAI5D,GAAI,CAACA,GAAQ,CAAC,OAAO,QACnB,MAAM,IAAI,UAAU,+BAA+B,EAIrD,IAAIJ,EAAWK,EAAK,WAAa,GAC7BA,EAAK,SACL,QAGAC,EAAQb,GAAM,MAAMY,EAAK,KAAK,EAG9BE,EAASF,EAAK,QAAU,MAAQ,CAAC,MAAMA,EAAK,MAAM,EAClD,SAASA,EAAK,OAAQ,EAAE,EACxB,KAEJ,OAAID,EAEKI,GAAWP,EAAQD,EAAUO,EAAQD,EAAOG,GAAKL,CAAI,CAAC,EAGxD,IAAI,QAAQ,SAAmBM,EAASC,EAAQ,CACrDH,GAAWP,EAAQD,EAAUO,EAAQD,EAAO,SAAiBM,EAAKC,EAAK,CACrE,GAAID,EAAK,OAAOD,EAAOC,CAAG,EAC1BF,EAAQG,CAAG,CACb,CAAC,CACH,CAAC,CACH,CASA,SAASC,GAAMb,EAAQ,CAErBL,GAAOK,CAAM,EAGT,OAAOA,EAAO,OAAU,YAC1BA,EAAO,MAAM,CAEjB,CAaA,SAASO,GAAYP,EAAQD,EAAUO,EAAQD,EAAOH,EAAU,CAC9D,IAAIY,EAAW,GACXC,EAAO,GAKX,GAAIV,IAAU,MAAQC,IAAW,MAAQA,EAASD,EAChD,OAAOF,EAAKV,GAAY,IAAK,2BAA4B,CACvD,SAAUa,EACV,OAAQA,EACR,MAAOD,EACP,KAAM,kBACR,CAAC,CAAC,EAQJ,IAAIW,EAAQhB,EAAO,eACnB,GAAIA,EAAO,UAAagB,IAAUA,EAAM,UAAYA,EAAM,SAExD,OAAOb,EAAKV,GAAY,IAAK,oCAAqC,CAChE,KAAM,qBACR,CAAC,CAAC,EAGJ,GAAI,OAAOO,EAAO,SAAa,KAAe,CAACA,EAAO,SACpD,OAAOG,EAAKV,GAAY,IAAK,yBAA0B,CACrD,KAAM,qBACR,CAAC,CAAC,EAGJ,IAAIwB,EAAW,EACXC,EAEJ,GAAI,CACFA,EAAUpB,GAAWC,CAAQ,CAC/B,OAASY,EAAP,CACA,OAAOR,EAAKQ,CAAG,CACjB,CAEA,IAAIQ,EAASD,EACT,GACA,CAAC,EAGLlB,EAAO,GAAG,UAAWoB,CAAS,EAC9BpB,EAAO,GAAG,QAASqB,CAAO,EAC1BrB,EAAO,GAAG,OAAQsB,CAAM,EACxBtB,EAAO,GAAG,MAAOuB,CAAK,EACtBvB,EAAO,GAAG,QAASuB,CAAK,EAGxBR,EAAO,GAEP,SAASZ,GAAQ,CAIf,QAHIqB,EAAO,IAAI,MAAM,UAAU,MAAM,EAG5BC,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAC/BD,EAAKC,GAAK,UAAUA,GAItBX,EAAW,GAEPC,EACF,QAAQ,SAASW,CAAc,EAE/BA,EAAe,EAGjB,SAASA,GAAkB,CACzBL,EAAQ,EAEJG,EAAK,IAEPX,GAAKb,CAAM,EAGbE,EAAS,MAAM,KAAMsB,CAAI,CAC3B,CACF,CAEA,SAASJ,GAAa,CAChBN,GAEJX,EAAKV,GAAY,IAAK,kBAAmB,CACvC,KAAM,eACN,SAAUa,EACV,OAAQA,EACR,SAAUW,EACV,KAAM,iBACR,CAAC,CAAC,CACJ,CAEA,SAASK,EAAQK,EAAO,CAClBb,IAEJG,GAAYU,EAAM,OAEdtB,IAAU,MAAQY,EAAWZ,EAC/BF,EAAKV,GAAY,IAAK,2BAA4B,CAChD,MAAOY,EACP,SAAUY,EACV,KAAM,kBACR,CAAC,CAAC,EACOC,EACTC,GAAUD,EAAQ,MAAMS,CAAK,EAE7BR,EAAO,KAAKQ,CAAK,EAErB,CAEA,SAASJ,EAAOZ,EAAK,CACnB,GAAI,CAAAG,EACJ,IAAIH,EAAK,OAAOR,EAAKQ,CAAG,EAExB,GAAIL,IAAW,MAAQW,IAAaX,EAClCH,EAAKV,GAAY,IAAK,4CAA6C,CACjE,SAAUa,EACV,OAAQA,EACR,SAAUW,EACV,KAAM,sBACR,CAAC,CAAC,MACG,CACL,IAAIW,EAASV,EACTC,GAAUD,EAAQ,IAAI,GAAK,IAC3B,OAAO,OAAOC,CAAM,EACxBhB,EAAK,KAAMyB,CAAM,CACnB,EACF,CAEA,SAASP,GAAW,CAClBF,EAAS,KAETnB,EAAO,eAAe,UAAWoB,CAAS,EAC1CpB,EAAO,eAAe,OAAQsB,CAAM,EACpCtB,EAAO,eAAe,MAAOuB,CAAK,EAClCvB,EAAO,eAAe,QAASuB,CAAK,EACpCvB,EAAO,eAAe,QAASqB,CAAO,CACxC,CACF,CAOA,SAAS9B,IAAwB,CAC/B,GAAI,CACF,MAAO,SAAQ,cACjB,MAAE,CACA,MAAO,CAAC,CACV,CACF,CAQA,SAASiB,GAAMqB,EAAI,CACjB,IAAIC,EAQJ,OALIxC,GAAW,gBACbwC,EAAM,IAAIxC,GAAW,cAAcuC,EAAG,MAAQ,oBAAoB,GAIhE,CAACC,GAAO,CAACA,EAAI,gBACRD,EAIFC,EAAI,gBAAgB,KAAKA,EAAKD,EAAI,IAAI,CAC/C,ICxUA,IAAAE,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAaAA,GAAO,QAAUC,GAUjB,SAASA,GAAMC,EAAOC,EAAM,CAC1B,GAAI,CAAC,MAAM,QAAQD,CAAK,EACtB,MAAM,IAAI,UAAU,gDAAgD,EAItE,QAFIE,EAAW,CAAC,EAEPC,EAAI,EAAGA,EAAIH,EAAM,OAAQG,IAAK,CACrC,IAAIC,EAAMJ,EAAMG,GAEhB,GAAI,CAAC,MAAM,QAAQC,CAAG,GAAKA,EAAI,OAAS,EACtC,MAAM,IAAI,UAAU,2CAA2C,EAIjE,QAFIC,EAAKD,EAAI,GAEJE,EAAI,EAAGA,EAAIF,EAAI,OAAQE,IAAK,CACnC,IAAIC,EAAQH,EAAIE,GACZE,EAAKC,GAASF,EAAOG,CAAQ,EAGjCL,EAAG,GAAGE,EAAOC,CAAE,EAEfN,EAAS,KAAK,CACZ,GAAIG,EACJ,MAAOE,EACP,GAAIC,CACN,CAAC,CACH,CACF,CAEA,SAASE,GAAW,CAClBC,EAAQ,EACRV,EAAK,MAAM,KAAM,SAAS,CAC5B,CAEA,SAASU,GAAU,CAEjB,QADIC,EACKT,EAAI,EAAGA,EAAID,EAAS,OAAQC,IACnCS,EAAIV,EAASC,GACbS,EAAE,GAAG,eAAeA,EAAE,MAAOA,EAAE,EAAE,CAErC,CAEA,SAASC,EAAML,EAAI,CACjBP,EAAOO,CACT,CAEA,OAAAK,EAAM,OAASF,EAERE,CACT,CAOA,SAASJ,GAASF,EAAON,EAAM,CAC7B,OAAO,SAAiBa,EAAM,CAQ5B,QAPIC,EAAO,IAAI,MAAM,UAAU,MAAM,EACjCV,EAAK,KACLW,EAAMT,IAAU,QAChBO,EACA,KAGKX,EAAI,EAAGA,EAAIY,EAAK,OAAQZ,IAC/BY,EAAKZ,GAAK,UAAUA,GAGtBF,EAAKe,EAAKX,EAAIE,EAAOQ,CAAI,CAC3B,CACF,IC9FA,IAAAE,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAcAA,GAAO,QAAUC,GACjBD,GAAO,QAAQ,WAAaE,GAO5B,IAAIC,GAAaC,GAAqB,EAClCC,GAAQ,KAQRC,GAAQ,OAAO,cAAiB,WAChC,aACA,SAAUC,EAAI,CAAE,QAAQ,SAASA,EAAG,KAAK,MAAMA,EAAI,SAAS,CAAC,CAAE,EAYnE,SAASN,GAAYO,EAAKC,EAAU,CAClC,OAAIP,GAAWM,CAAG,IAAM,IACtBF,GAAMG,EAAU,KAAMD,CAAG,EAClBA,IAITE,GAAeF,EAAKG,GAAKF,CAAQ,CAAC,EAE3BD,EACT,CAUA,SAASN,GAAYM,EAAK,CACxB,IAAII,EAASJ,EAAI,OAEjB,GAAI,OAAOA,EAAI,UAAa,UAE1B,OAAO,QAAQA,EAAI,UAAaI,GAAU,CAACA,EAAO,QAAS,EAG7D,GAAI,OAAOJ,EAAI,UAAa,UAE1B,OAAO,QAAQA,EAAI,SAAW,CAACI,GAAU,CAACA,EAAO,UAAaJ,EAAI,UAAY,CAACA,EAAI,QAAS,CAKhG,CAUA,SAASK,GAAwBL,EAAKM,EAAU,CAC9C,IAAIC,EACAC,EACAC,EAAW,GAEf,SAASC,EAAUC,EAAO,CACxBJ,EAAM,OAAO,EACbC,EAAS,OAAO,EAEhBC,EAAW,GACXH,EAASK,CAAK,CAChB,CAGAJ,EAAQC,EAAWX,GAAM,CAAC,CAACG,EAAK,MAAO,QAAQ,CAAC,EAAGU,CAAQ,EAE3D,SAASE,EAAUR,EAAQ,CAEzBJ,EAAI,eAAe,SAAUY,CAAQ,EAEjC,CAAAH,GACAF,IAAUC,IAGdA,EAAWX,GAAM,CAAC,CAACO,EAAQ,QAAS,OAAO,CAAC,EAAGM,CAAQ,EACzD,CAEA,GAAIV,EAAI,OAAQ,CAEdY,EAASZ,EAAI,MAAM,EACnB,MACF,CAGAA,EAAI,GAAG,SAAUY,CAAQ,EAErBZ,EAAI,SAAW,QAEjBa,GAAkBb,EAAKY,CAAQ,CAEnC,CAUA,SAASV,GAAgBF,EAAKC,EAAU,CACtC,IAAIa,EAAWd,EAAI,cAGf,CAACc,GAAY,CAACA,EAAS,SACzBA,EAAWd,EAAI,aAAee,GAAef,CAAG,EAChDK,GAAuBL,EAAKc,CAAQ,GAGtCA,EAAS,MAAM,KAAKb,CAAQ,CAC9B,CAUA,SAASc,GAAgBf,EAAK,CAC5B,SAASC,EAAUe,EAAK,CAEtB,GADIhB,EAAI,eAAiBC,IAAUD,EAAI,aAAe,MAClD,EAACC,EAAS,MAEd,KAAIgB,EAAQhB,EAAS,MACrBA,EAAS,MAAQ,KAEjB,QAAS,EAAI,EAAG,EAAIgB,EAAM,OAAQ,IAChCA,EAAM,GAAGD,EAAKhB,CAAG,EAErB,CAEA,OAAAC,EAAS,MAAQ,CAAC,EAEXA,CACT,CAWA,SAASY,GAAmBK,EAAKZ,EAAU,CACzC,IAAIa,EAAeD,EAAI,aAEnB,OAAOC,GAAiB,aAG5BD,EAAI,aAAe,SAAwBd,EAAQ,CACjDe,EAAa,KAAK,KAAMf,CAAM,EAC9BE,EAASF,CAAM,CACjB,EACF,CAOA,SAASR,IAAwB,CAC/B,GAAI,CACF,MAAO,SAAQ,cACjB,MAAE,CACA,MAAO,CAAC,CACV,CACF,CAQA,SAASO,GAAMJ,EAAI,CACjB,IAAImB,EAQJ,OALIvB,GAAW,gBACbuB,EAAM,IAAIvB,GAAW,cAAcI,EAAG,MAAQ,oBAAoB,GAIhE,CAACmB,GAAO,CAACA,EAAI,gBACRnB,EAIFmB,EAAI,gBAAgB,KAAKA,EAAKnB,EAAI,IAAI,CAC/C,ICzOA,IAAAqB,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAaA,IAAIC,GAAc,KACdC,GAAU,KACVC,GAAU,KACVC,GAAQ,KACRC,GAAa,KACbC,GAAS,KACTC,GAAO,QAAQ,QAMnBP,GAAO,QAAUQ,GAcjB,SAASA,GAAMC,EAAKC,EAAKC,EAAMC,EAAOC,EAAOC,EAAS,CACpD,IAAIC,EACAC,EAAOF,EACPG,EAGJR,EAAI,MAAQ,GAGZ,IAAIS,EAAWF,EAAK,WAAa,KAC7BA,EAAK,SACL,KACAG,EAASH,EAAK,OAElB,GAAI,CAEFC,EAASG,GAAcX,EAAKI,EAAOG,EAAK,OAAO,EAC/CD,EAASE,EAAO,OAChBA,EAAO,OAAS,MAClB,OAASI,EAAP,CACA,OAAOV,EAAKU,CAAG,CACjB,CASA,GANAL,EAAK,OAASD,EACdC,EAAK,SAAWG,EACZ,KACAD,EAGAF,EAAK,WAAa,MAAQE,IAAa,MAAQ,CAACd,GAAM,eAAec,CAAQ,EAC/E,OAAOP,EAAKV,GAAY,IAAK,wBAA0BiB,EAAS,YAAY,EAAI,IAAK,CACnF,QAASA,EAAS,YAAY,EAC9B,KAAM,qBACR,CAAC,CAAC,EAIJL,EAAM,WAAW,EACjBV,GAAQc,EAAQD,EAAM,SAAUM,EAAOC,EAAM,CAC3C,GAAID,EAAO,CACT,IAAIE,EAEAF,EAAM,OAAS,uBAEjBE,EAASvB,GAAY,IAAK,wBAA0BiB,EAAS,YAAY,EAAI,IAAK,CAChF,QAASA,EAAS,YAAY,EAC9B,KAAM,qBACR,CAAC,EAGDM,EAASvB,GAAY,IAAKqB,CAAK,EAI7BL,IAAWR,IACbH,GAAOG,CAAG,EACVP,GAAQe,EAAQ,EAAI,GAItBQ,GAAKhB,EAAK,UAAuB,CAC/BE,EAAKV,GAAY,IAAKuB,CAAM,CAAC,CAC/B,CAAC,EACD,MACF,CAGA,GAAIL,EACF,GAAI,CACFN,EAAM,aAAa,EACnBM,EAAOV,EAAKC,EAAKa,EAAML,CAAQ,CACjC,OAASG,EAAP,CACAV,EAAKV,GAAY,IAAKoB,EAAK,CACzB,KAAME,EACN,KAAMF,EAAI,MAAQ,sBACpB,CAAC,CAAC,EACF,MACF,CAIF,IAAIK,EAAMH,EACV,GAAI,CACFV,EAAM,YAAY,EAClBa,EAAM,OAAOH,GAAS,UAAYL,IAAa,KAC3Cd,GAAM,OAAOmB,EAAML,CAAQ,EAC3BK,EACJd,EAAI,KAAOG,EAAMc,CAAG,CACtB,OAASL,EAAP,CACAV,EAAKV,GAAY,IAAKoB,EAAK,CACzB,KAAMK,EACN,KAAML,EAAI,MAAQ,qBACpB,CAAC,CAAC,EACF,MACF,CAEAV,EAAK,CACP,CAAC,CACH,CAYA,SAASS,GAAeX,EAAKI,EAAOc,EAAS,CAC3C,IAAIT,GAAYT,EAAI,QAAQ,qBAAuB,YAAY,YAAY,EACvEM,EAASN,EAAI,QAAQ,kBACrBQ,EAIJ,GAFAJ,EAAM,wBAAyBK,CAAQ,EAEnCS,IAAY,IAAST,IAAa,WACpC,MAAMjB,GAAY,IAAK,+BAAgC,CACrD,SAAUiB,EACV,KAAM,sBACR,CAAC,EAGH,OAAQA,EAAU,CAChB,IAAK,UACHD,EAASV,GAAK,cAAc,EAC5BM,EAAM,cAAc,EACpBJ,EAAI,KAAKQ,CAAM,EACf,MACF,IAAK,OACHA,EAASV,GAAK,aAAa,EAC3BM,EAAM,aAAa,EACnBJ,EAAI,KAAKQ,CAAM,EACf,MACF,IAAK,WACHA,EAASR,EACTQ,EAAO,OAASF,EAChB,MACF,QACE,MAAMd,GAAY,IAAK,iCAAmCiB,EAAW,IAAK,CACxE,SAAUA,EACV,KAAM,sBACR,CAAC,CACL,CAEA,OAAOD,CACT,CAUA,SAASQ,GAAMhB,EAAKmB,EAAU,CACxBvB,GAAW,WAAWI,CAAG,EAC3BmB,EAAS,IAAI,GAEbvB,GAAWI,EAAKmB,CAAQ,EACxBnB,EAAI,OAAO,EAEf,IC5MA,IAAAoB,GAAAC,EAAAC,IAAA,CA6BA,IAAIC,GAAc,yJACdC,GAAa,kCACbC,GAAc,sCAQdC,GAAa,uBAKbC,GAAc,WAkBdC,GAAoB,0CACpBC,GAAiB,yCACjBC,GAAa,yFAMjBR,GAAQ,OAASS,GACjBT,GAAQ,MAAQU,GAUhB,SAASD,GAAOE,EAAK,CACnB,GAAI,CAACA,GAAO,OAAOA,GAAQ,SACzB,MAAM,IAAI,UAAU,0BAA0B,EAGhD,IAAIC,EAAaD,EAAI,WACjBE,EAAUF,EAAI,QACdG,EAASH,EAAI,OACbI,EAAOJ,EAAI,KAEf,GAAI,CAACI,GAAQ,CAACR,GAAe,KAAKQ,CAAI,EACpC,MAAM,IAAI,UAAU,cAAc,EAGpC,GAAI,CAACF,GAAW,CAACP,GAAkB,KAAKO,CAAO,EAC7C,MAAM,IAAI,UAAU,iBAAiB,EAIvC,IAAIG,EAASD,EAAO,IAAMF,EAG1B,GAAIC,EAAQ,CACV,GAAI,CAACP,GAAe,KAAKO,CAAM,EAC7B,MAAM,IAAI,UAAU,gBAAgB,EAGtCE,GAAU,IAAMF,CAClB,CAGA,GAAIF,GAAc,OAAOA,GAAe,SAItC,QAHIK,EACAC,EAAS,OAAO,KAAKN,CAAU,EAAE,KAAK,EAEjCO,EAAI,EAAGA,EAAID,EAAO,OAAQC,IAAK,CAGtC,GAFAF,EAAQC,EAAOC,GAEX,CAAChB,GAAY,KAAKc,CAAK,EACzB,MAAM,IAAI,UAAU,wBAAwB,EAG9CD,GAAU,KAAOC,EAAQ,IAAMG,GAAQR,EAAWK,EAAM,CAC1D,CAGF,OAAOD,CACT,CAUA,SAASN,GAAMM,EAAQ,CACrB,GAAI,CAACA,EACH,MAAM,IAAI,UAAU,6BAA6B,EAQnD,GAJI,OAAOA,GAAW,WACpBA,EAASK,GAAeL,CAAM,GAG5B,OAAOA,GAAW,SACpB,MAAM,IAAI,UAAU,4CAA4C,EAGlE,IAAIM,EAAQN,EAAO,QAAQ,GAAG,EAC1BD,EAAOO,IAAU,GACjBN,EAAO,OAAO,EAAGM,CAAK,EACtBN,EAEAO,EACAC,EACAb,EAAMc,GAAUV,CAAI,EACpBG,EAAS,CAAC,EACVQ,EAIJ,IAFAzB,GAAY,UAAYqB,EAEjBE,EAAQvB,GAAY,KAAKe,CAAM,GAAG,CACvC,GAAIQ,EAAM,QAAUF,EAClB,MAAM,IAAI,UAAU,0BAA0B,EAGhDA,GAASE,EAAM,GAAG,OAClBD,EAAMC,EAAM,GAAG,YAAY,EAC3BE,EAAQF,EAAM,GAEVE,EAAM,KAAO,MAEfA,EAAQA,EACL,OAAO,EAAGA,EAAM,OAAS,CAAC,EAC1B,QAAQtB,GAAY,IAAI,GAG7Bc,EAAOK,GAAOG,CAChB,CAEA,GAAIJ,IAAU,IAAMA,IAAUN,EAAO,OACnC,MAAM,IAAI,UAAU,0BAA0B,EAGhD,OAAAL,EAAI,WAAaO,EAEVP,CACT,CAUA,SAASU,GAAeV,EAAK,CAC3B,GAAI,OAAOA,EAAI,WAAc,WAE3B,OAAOA,EAAI,UAAU,cAAc,EAGrC,GAAI,OAAOA,EAAI,SAAY,SAEzB,OAAOA,EAAI,SAAWA,EAAI,QAAQ,eAEtC,CAUA,SAASS,GAAQO,EAAK,CACpB,IAAIC,EAAM,OAAOD,CAAG,EAGpB,GAAIxB,GAAY,KAAKyB,CAAG,EACtB,OAAOA,EAGT,GAAIA,EAAI,OAAS,GAAK,CAAC1B,GAAW,KAAK0B,CAAG,EACxC,MAAM,IAAI,UAAU,yBAAyB,EAG/C,MAAO,IAAMA,EAAI,QAAQvB,GAAa,MAAM,EAAI,GAClD,CAUA,SAASoB,GAAUT,EAAQ,CACzB,IAAIQ,EAAQhB,GAAW,KAAKQ,EAAO,YAAY,CAAC,EAEhD,GAAI,CAACQ,EACH,MAAM,IAAI,UAAU,oBAAoB,EAG1C,IAAIT,EAAOS,EAAM,GACbX,EAAUW,EAAM,GAChBV,EAGAQ,EAAQT,EAAQ,YAAY,GAAG,EAC/BS,IAAU,KACZR,EAASD,EAAQ,OAAOS,EAAQ,CAAC,EACjCT,EAAUA,EAAQ,OAAO,EAAGS,CAAK,GAGnC,IAAIX,EAAM,CACR,KAAMI,EACN,QAASF,EACT,OAAQC,CACV,EAEA,OAAOH,CACT,u/qIC7QA,IAAAkB,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAWAA,GAAO,QAAU,OCXjB,IAAAC,GAAAC,EAAAC,IAAA,cAcA,IAAIC,GAAK,KACLC,GAAU,QAAQ,QAAQ,QAO1BC,GAAsB,0BACtBC,GAAmB,WAOvBJ,GAAQ,QAAUK,GAClBL,GAAQ,SAAW,CAAE,OAAQK,EAAQ,EACrCL,GAAQ,YAAcM,GACtBN,GAAQ,UAAYO,GACpBP,GAAQ,WAAa,OAAO,OAAO,IAAI,EACvCA,GAAQ,OAASQ,GACjBR,GAAQ,MAAQ,OAAO,OAAO,IAAI,EAGlCS,GAAaT,GAAQ,WAAYA,GAAQ,KAAK,EAS9C,SAASK,GAASK,EAAM,CACtB,GAAI,CAACA,GAAQ,OAAOA,GAAS,SAC3B,MAAO,GAIT,IAAIC,EAAQR,GAAoB,KAAKO,CAAI,EACrCE,EAAOD,GAASV,GAAGU,EAAM,GAAG,YAAY,GAE5C,OAAIC,GAAQA,EAAK,QACRA,EAAK,QAIVD,GAASP,GAAiB,KAAKO,EAAM,EAAE,EAClC,QAGF,EACT,CASA,SAASL,GAAaO,EAAK,CAEzB,GAAI,CAACA,GAAO,OAAOA,GAAQ,SACzB,MAAO,GAGT,IAAID,EAAOC,EAAI,QAAQ,GAAG,IAAM,GAC5Bb,GAAQ,OAAOa,CAAG,EAClBA,EAEJ,GAAI,CAACD,EACH,MAAO,GAIT,GAAIA,EAAK,QAAQ,SAAS,IAAM,GAAI,CAClC,IAAIP,EAAUL,GAAQ,QAAQY,CAAI,EAC9BP,IAASO,GAAQ,aAAeP,EAAQ,YAAY,EAC1D,CAEA,OAAOO,CACT,CASA,SAASL,GAAWG,EAAM,CACxB,GAAI,CAACA,GAAQ,OAAOA,GAAS,SAC3B,MAAO,GAIT,IAAIC,EAAQR,GAAoB,KAAKO,CAAI,EAGrCI,EAAOH,GAASX,GAAQ,WAAWW,EAAM,GAAG,YAAY,GAE5D,MAAI,CAACG,GAAQ,CAACA,EAAK,OACV,GAGFA,EAAK,EACd,CASA,SAASN,GAAQO,EAAM,CACrB,GAAI,CAACA,GAAQ,OAAOA,GAAS,SAC3B,MAAO,GAIT,IAAIR,EAAYL,GAAQ,KAAOa,CAAI,EAChC,YAAY,EACZ,OAAO,CAAC,EAEX,OAAKR,GAIEP,GAAQ,MAAMO,IAAc,EACrC,CAOA,SAASE,GAAcO,EAAYC,EAAO,CAExC,IAAIC,EAAa,CAAC,QAAS,SAAU,OAAW,MAAM,EAEtD,OAAO,KAAKjB,EAAE,EAAE,QAAQ,SAA0BS,EAAM,CACtD,IAAIE,EAAOX,GAAGS,GACVI,EAAOF,EAAK,WAEhB,GAAI,GAACE,GAAQ,CAACA,EAAK,QAKnB,CAAAE,EAAWN,GAAQI,EAGnB,QAASK,EAAI,EAAGA,EAAIL,EAAK,OAAQK,IAAK,CACpC,IAAIZ,EAAYO,EAAKK,GAErB,GAAIF,EAAMV,GAAY,CACpB,IAAIa,EAAOF,EAAW,QAAQjB,GAAGgB,EAAMV,IAAY,MAAM,EACrDc,EAAKH,EAAW,QAAQN,EAAK,MAAM,EAEvC,GAAIK,EAAMV,KAAe,6BACtBa,EAAOC,GAAOD,IAASC,GAAMJ,EAAMV,GAAW,OAAO,EAAG,EAAE,IAAM,gBAEjE,QAEJ,CAGAU,EAAMV,GAAaG,CACrB,EACF,CAAC,CACH,IC3LA,IAAAY,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAcA,IAAIC,GAAQ,KACRC,GAAO,KAOXF,GAAO,QAAUG,GACjBH,GAAO,QAAQ,GAAKI,GACpBJ,GAAO,QAAQ,QAAUK,GACzBL,GAAO,QAAQ,UAAYM,GAC3BN,GAAO,QAAQ,MAAQO,GAgBvB,SAASH,GAAQI,EAAOC,EAAQ,CAC9B,IAAIC,EACAC,EAAQF,EAGRG,EAAMC,GAAiBL,CAAK,EAGhC,GAAI,CAACI,EACH,MAAO,GAIT,GAAID,GAAS,CAAC,MAAM,QAAQA,CAAK,EAE/B,IADAA,EAAQ,IAAI,MAAM,UAAU,OAAS,CAAC,EACjCD,EAAI,EAAGA,EAAIC,EAAM,OAAQD,IAC5BC,EAAMD,GAAK,UAAUA,EAAI,GAK7B,GAAI,CAACC,GAAS,CAACA,EAAM,OACnB,OAAOC,EAGT,IAAIE,EACJ,IAAKJ,EAAI,EAAGA,EAAIC,EAAM,OAAQD,IAC5B,GAAIH,GAAUD,GAAUQ,EAAOH,EAAMD,EAAE,EAAGE,CAAG,EAC3C,OAAOE,EAAK,KAAO,KAAOA,EAAK,QAAQ,GAAG,IAAM,GAC5CF,EACAE,EAKR,MAAO,EACT,CAaA,SAAST,GAASU,EAAK,CACrB,OAAOA,EAAI,QAAQ,uBAAyB,QAC1C,CAAC,MAAMA,EAAI,QAAQ,iBAAiB,CACxC,CA4BA,SAASZ,GAAeY,EAAKN,EAAQ,CACnC,IAAIE,EAAQF,EAGZ,GAAI,CAACJ,GAAQU,CAAG,EACd,OAAO,KAIT,GAAI,UAAU,OAAS,EAAG,CACxBJ,EAAQ,IAAI,MAAM,UAAU,OAAS,CAAC,EACtC,QAASD,EAAI,EAAGA,EAAIC,EAAM,OAAQD,IAChCC,EAAMD,GAAK,UAAUA,EAAI,EAE7B,CAGA,IAAIF,EAAQO,EAAI,QAAQ,gBAExB,OAAOX,GAAOI,EAAOG,CAAK,CAC5B,CAkBA,SAASL,GAAWQ,EAAM,CACxB,GAAI,OAAOA,GAAS,SAElB,MAAO,GAGT,OAAQA,EAAM,CACZ,IAAK,aACH,MAAO,oCACT,IAAK,YACH,MAAO,aACX,CAEA,OAAIA,EAAK,KAAO,IAEP,MAAQA,EAGVA,EAAK,QAAQ,GAAG,IAAM,GACzBZ,GAAK,OAAOY,CAAI,EAChBA,CACN,CAaA,SAASP,GAAWS,EAAUC,EAAQ,CAEpC,GAAID,IAAa,GACf,MAAO,GAIT,IAAIE,EAAcD,EAAO,MAAM,GAAG,EAC9BE,EAAgBH,EAAS,MAAM,GAAG,EAQtC,OALIE,EAAY,SAAW,GAAKC,EAAc,SAAW,GAKrDA,EAAc,KAAO,KAAOA,EAAc,KAAOD,EAAY,GACxD,GAILC,EAAc,GAAG,OAAO,EAAG,CAAC,IAAM,KAC7BA,EAAc,GAAG,QAAUD,EAAY,GAAG,OAAS,GACxDC,EAAc,GAAG,OAAO,CAAC,IAAMD,EAAY,GAAG,OAAO,EAAIC,EAAc,GAAG,MAAM,EAIhF,EAAAA,EAAc,KAAO,KAAOA,EAAc,KAAOD,EAAY,GAKnE,CAUA,SAASE,GAAeZ,EAAO,CAE7B,IAAIM,EAAOb,GAAM,MAAMO,CAAK,EAG5B,OAAAM,EAAK,WAAa,OAGXb,GAAM,OAAOa,CAAI,CAC1B,CAUA,SAASD,GAAkBL,EAAO,CAChC,GAAI,CAACA,EACH,OAAO,KAGT,GAAI,CACF,OAAOY,GAAcZ,CAAK,CAC5B,MAAE,CACA,OAAO,IACT,CACF,ICzQA,IAAAa,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAcA,IAAIC,GAAQ,KACRC,GAAc,KACdC,GAAc,KACdC,GAAQ,KAAiB,kBAAkB,EAC3CC,GAAO,KACPC,GAAS,KAMbN,GAAO,QAAUO,GAcjB,IAAIC,GAAoB,4CAUxB,SAASD,GAAME,EAAS,CACtB,IAAIC,EAAOD,GAAW,CAAC,EAEnBE,EAAQ,OAAOD,EAAK,OAAU,SAC9BT,GAAM,MAAMS,EAAK,OAAS,OAAO,EACjCA,EAAK,MACLE,EAAUF,EAAK,UAAY,GAC3BG,EAAUH,EAAK,QACfI,EAASJ,EAAK,SAAW,GACzBK,EAAOL,EAAK,MAAQ,mBACpBM,EAASN,EAAK,QAAU,GAE5B,GAAIM,IAAW,IAAS,OAAOA,GAAW,WACxC,MAAM,IAAI,UAAU,gCAAgC,EAItD,IAAIC,EAAc,OAAOF,GAAS,WAC9BG,GAAYH,CAAI,EAChBA,EAEJ,SAASI,EAAOC,EAAM,CACpB,GAAIA,EAAK,SAAW,EAGlB,MAAO,CAAC,EAGV,GAAIN,EAAQ,CACV,IAAIO,EAAQC,GAAUF,CAAI,EAE1B,GAAIC,IAAU,KAAOA,IAAU,IAC7B,MAAAjB,GAAM,kBAAkB,EAClBmB,GAAwBH,EAAMC,CAAK,CAE7C,CAEA,GAAI,CACF,OAAAjB,GAAM,YAAY,EACX,KAAK,MAAMgB,EAAMP,CAAO,CACjC,OAASW,EAAP,CACA,MAAMC,GAAyBD,EAAG,CAChC,QAASA,EAAE,QACX,MAAOA,EAAE,KACX,CAAC,CACH,CACF,CAEA,OAAO,SAAqBE,EAAKC,EAAKC,EAAM,CAC1C,GAAIF,EAAI,MAAO,CACbtB,GAAM,qBAAqB,EAC3BwB,EAAK,EACL,MACF,CAKA,GAHAF,EAAI,KAAOA,EAAI,MAAQ,CAAC,EAGpB,CAACpB,GAAO,QAAQoB,CAAG,EAAG,CACxBtB,GAAM,iBAAiB,EACvBwB,EAAK,EACL,MACF,CAKA,GAHAxB,GAAM,kBAAmBsB,EAAI,QAAQ,eAAe,EAGhD,CAACT,EAAYS,CAAG,EAAG,CACrBtB,GAAM,cAAc,EACpBwB,EAAK,EACL,MACF,CAGA,IAAIC,EAAUC,GAAWJ,CAAG,GAAK,QACjC,GAAIG,EAAQ,MAAM,EAAG,CAAC,IAAM,OAAQ,CAClCzB,GAAM,iBAAiB,EACvBwB,EAAKzB,GAAY,IAAK,wBAA0B0B,EAAQ,YAAY,EAAI,IAAK,CAC3E,QAASA,EACT,KAAM,qBACR,CAAC,CAAC,EACF,MACF,CAGAxB,GAAKqB,EAAKC,EAAKC,EAAMT,EAAOf,GAAO,CACjC,SAAUyB,EACV,QAASjB,EACT,MAAOD,EACP,OAAQK,CACV,CAAC,CACH,CACF,CAWA,SAASO,GAAyBQ,EAAKC,EAAM,CAC3C,IAAIC,EAAQF,EAAI,QAAQC,CAAI,EACxBE,EAAUD,IAAU,GACpBF,EAAI,UAAU,EAAGE,CAAK,EAAI,IAC1B,GAEJ,GAAI,CACF,WAAK,MAAMC,CAAO,EAAoC,IAAI,YAAY,kBAAkB,CAC1F,OAASV,EAAP,CACA,OAAOC,GAAyBD,EAAG,CACjC,QAASA,EAAE,QAAQ,QAAQ,IAAKQ,CAAI,EACpC,MAAOR,EAAE,KACX,CAAC,CACH,CACF,CAUA,SAASF,GAAWS,EAAK,CACvB,IAAII,EAAQ3B,GAAkB,KAAKuB,CAAG,EAEtC,OAAOI,EACHA,EAAM,GACN,MACN,CASA,SAASL,GAAYJ,EAAK,CACxB,GAAI,CACF,OAAQxB,GAAY,MAAMwB,CAAG,EAAE,WAAW,SAAW,IAAI,YAAY,CACvE,MAAE,CACA,MACF,CACF,CAUA,SAASD,GAA0BW,EAAOC,EAAK,CAG7C,QAFIC,EAAO,OAAO,oBAAoBF,CAAK,EAElCG,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAAK,CACpC,IAAIC,EAAMF,EAAKC,GACXC,IAAQ,SAAWA,IAAQ,WAC7B,OAAOJ,EAAMI,EAEjB,CAGA,OAAAJ,EAAM,MAAQC,EAAI,MAAM,QAAQD,EAAM,QAASC,EAAI,OAAO,EAC1DD,EAAM,QAAUC,EAAI,QAEbD,CACT,CASA,SAASlB,GAAaH,EAAM,CAC1B,OAAO,SAAoBW,EAAK,CAC9B,OAAO,QAAQpB,GAAOoB,EAAKX,CAAI,CAAC,CAClC,CACF,IC3OA,IAAA0B,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAYA,IAAIC,GAAQ,KACRC,GAAQ,KAAiB,iBAAiB,EAC1CC,GAAO,KACPC,GAAS,KAMbJ,GAAO,QAAUK,GAUjB,SAASA,GAAKC,EAAS,CACrB,IAAIC,EAAOD,GAAW,CAAC,EAEnBE,EAAUD,EAAK,UAAY,GAC3BE,EAAQ,OAAOF,EAAK,OAAU,SAC9BN,GAAM,MAAMM,EAAK,OAAS,OAAO,EACjCA,EAAK,MACLG,EAAOH,EAAK,MAAQ,2BACpBI,EAASJ,EAAK,QAAU,GAE5B,GAAII,IAAW,IAAS,OAAOA,GAAW,WACxC,MAAM,IAAI,UAAU,gCAAgC,EAItD,IAAIC,EAAc,OAAOF,GAAS,WAC9BG,GAAYH,CAAI,EAChBA,EAEJ,SAASI,EAAOC,EAAK,CACnB,OAAOA,CACT,CAEA,OAAO,SAAoBC,EAAKC,EAAKC,EAAM,CACzC,GAAIF,EAAI,MAAO,CACbd,GAAM,qBAAqB,EAC3BgB,EAAK,EACL,MACF,CAKA,GAHAF,EAAI,KAAOA,EAAI,MAAQ,CAAC,EAGpB,CAACZ,GAAO,QAAQY,CAAG,EAAG,CACxBd,GAAM,iBAAiB,EACvBgB,EAAK,EACL,MACF,CAKA,GAHAhB,GAAM,kBAAmBc,EAAI,QAAQ,eAAe,EAGhD,CAACJ,EAAYI,CAAG,EAAG,CACrBd,GAAM,cAAc,EACpBgB,EAAK,EACL,MACF,CAGAf,GAAKa,EAAKC,EAAKC,EAAMJ,EAAOZ,GAAO,CACjC,SAAU,KACV,QAASM,EACT,MAAOC,EACP,OAAQE,CACV,CAAC,CACH,CACF,CASA,SAASE,GAAaH,EAAM,CAC1B,OAAO,SAAoBM,EAAK,CAC9B,OAAO,QAAQZ,GAAOY,EAAKN,CAAI,CAAC,CAClC,CACF,ICpGA,IAAAS,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAYA,IAAIC,GAAQ,KACRC,GAAc,KACdC,GAAQ,KAAiB,kBAAkB,EAC3CC,GAAO,KACPC,GAAS,KAMbL,GAAO,QAAUM,GAUjB,SAASA,GAAMC,EAAS,CACtB,IAAIC,EAAOD,GAAW,CAAC,EAEnBE,EAAiBD,EAAK,gBAAkB,QACxCE,EAAUF,EAAK,UAAY,GAC3BG,EAAQ,OAAOH,EAAK,OAAU,SAC9BP,GAAM,MAAMO,EAAK,OAAS,OAAO,EACjCA,EAAK,MACLI,EAAOJ,EAAK,MAAQ,aACpBK,EAASL,EAAK,QAAU,GAE5B,GAAIK,IAAW,IAAS,OAAOA,GAAW,WACxC,MAAM,IAAI,UAAU,gCAAgC,EAItD,IAAIC,EAAc,OAAOF,GAAS,WAC9BG,GAAYH,CAAI,EAChBA,EAEJ,SAASI,EAAOC,EAAK,CACnB,OAAOA,CACT,CAEA,OAAO,SAAqBC,EAAKC,EAAKC,EAAM,CAC1C,GAAIF,EAAI,MAAO,CACbf,GAAM,qBAAqB,EAC3BiB,EAAK,EACL,MACF,CAKA,GAHAF,EAAI,KAAOA,EAAI,MAAQ,CAAC,EAGpB,CAACb,GAAO,QAAQa,CAAG,EAAG,CACxBf,GAAM,iBAAiB,EACvBiB,EAAK,EACL,MACF,CAKA,GAHAjB,GAAM,kBAAmBe,EAAI,QAAQ,eAAe,EAGhD,CAACJ,EAAYI,CAAG,EAAG,CACrBf,GAAM,cAAc,EACpBiB,EAAK,EACL,MACF,CAGA,IAAIC,EAAUC,GAAWJ,CAAG,GAAKT,EAGjCL,GAAKc,EAAKC,EAAKC,EAAMJ,EAAOb,GAAO,CACjC,SAAUkB,EACV,QAASX,EACT,MAAOC,EACP,OAAQE,CACV,CAAC,CACH,CACF,CASA,SAASS,GAAYJ,EAAK,CACxB,GAAI,CACF,OAAQhB,GAAY,MAAMgB,CAAG,EAAE,WAAW,SAAW,IAAI,YAAY,CACvE,MAAE,CACA,MACF,CACF,CASA,SAASH,GAAaH,EAAM,CAC1B,OAAO,SAAoBM,EAAK,CAC9B,OAAO,QAAQb,GAAOa,EAAKN,CAAI,CAAC,CAClC,CACF,ICxHA,IAAAW,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAGAA,GAAO,QAAU,UAAsB,CACtC,GAAI,OAAO,QAAW,YAAc,OAAO,OAAO,uBAA0B,WAAc,MAAO,GACjG,GAAI,OAAO,OAAO,UAAa,SAAY,MAAO,GAElD,IAAIC,EAAM,CAAC,EACPC,EAAM,OAAO,MAAM,EACnBC,EAAS,OAAOD,CAAG,EAIvB,GAHI,OAAOA,GAAQ,UAEf,OAAO,UAAU,SAAS,KAAKA,CAAG,IAAM,mBACxC,OAAO,UAAU,SAAS,KAAKC,CAAM,IAAM,kBAAqB,MAAO,GAU3E,IAAIC,EAAS,GACbH,EAAIC,GAAOE,EACX,IAAKF,KAAOD,EAAO,MAAO,GAG1B,GAFI,OAAO,OAAO,MAAS,YAAc,OAAO,KAAKA,CAAG,EAAE,SAAW,GAEjE,OAAO,OAAO,qBAAwB,YAAc,OAAO,oBAAoBA,CAAG,EAAE,SAAW,EAAK,MAAO,GAE/G,IAAII,EAAO,OAAO,sBAAsBJ,CAAG,EAG3C,GAFII,EAAK,SAAW,GAAKA,EAAK,KAAOH,GAEjC,CAAC,OAAO,UAAU,qBAAqB,KAAKD,EAAKC,CAAG,EAAK,MAAO,GAEpE,GAAI,OAAO,OAAO,0BAA6B,WAAY,CAC1D,IAAII,EAAa,OAAO,yBAAyBL,EAAKC,CAAG,EACzD,GAAII,EAAW,QAAUF,GAAUE,EAAW,aAAe,GAAQ,MAAO,EAC7E,CAEA,MAAO,EACR,ICzCA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAa,OAAO,OAAW,KAAe,OAC9CC,GAAgB,KAEpBF,GAAO,QAAU,UAA4B,CAI5C,OAHI,OAAOC,IAAe,YACtB,OAAO,QAAW,YAClB,OAAOA,GAAW,KAAK,GAAM,UAC7B,OAAO,OAAO,KAAK,GAAM,SAAmB,GAEzCC,GAAc,CACtB,ICZA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAIA,IAAIC,GAAgB,kDAChBC,GAAQ,MAAM,UAAU,MACxBC,GAAQ,OAAO,UAAU,SACzBC,GAAW,oBAEfJ,GAAO,QAAU,SAAcK,EAAM,CACjC,IAAIC,EAAS,KACb,GAAI,OAAOA,GAAW,YAAcH,GAAM,KAAKG,CAAM,IAAMF,GACvD,MAAM,IAAI,UAAUH,GAAgBK,CAAM,EAyB9C,QAvBIC,EAAOL,GAAM,KAAK,UAAW,CAAC,EAE9BM,EACAC,EAAS,UAAY,CACrB,GAAI,gBAAgBD,EAAO,CACvB,IAAIE,EAASJ,EAAO,MAChB,KACAC,EAAK,OAAOL,GAAM,KAAK,SAAS,CAAC,CACrC,EACA,OAAI,OAAOQ,CAAM,IAAMA,EACZA,EAEJ,IACX,KACI,QAAOJ,EAAO,MACVD,EACAE,EAAK,OAAOL,GAAM,KAAK,SAAS,CAAC,CACrC,CAER,EAEIS,EAAc,KAAK,IAAI,EAAGL,EAAO,OAASC,EAAK,MAAM,EACrDK,EAAY,CAAC,EACRC,EAAI,EAAGA,EAAIF,EAAaE,IAC7BD,EAAU,KAAK,IAAMC,CAAC,EAK1B,GAFAL,EAAQ,SAAS,SAAU,oBAAsBI,EAAU,KAAK,GAAG,EAAI,2CAA2C,EAAEH,CAAM,EAEtHH,EAAO,UAAW,CAClB,IAAIQ,EAAQ,UAAiB,CAAC,EAC9BA,EAAM,UAAYR,EAAO,UACzBE,EAAM,UAAY,IAAIM,EACtBA,EAAM,UAAY,IACtB,CAEA,OAAON,CACX,ICnDA,IAAAO,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAiB,KAErBD,GAAO,QAAU,SAAS,UAAU,MAAQC,KCJ5C,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAO,KAEXD,GAAO,QAAUC,GAAK,KAAK,SAAS,KAAM,OAAO,UAAU,cAAc,ICJzE,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAEAC,GAAe,YACfC,GAAY,SACZC,GAAa,UAGbC,GAAwB,SAAUC,EAAkB,CACvD,GAAI,CACH,OAAOH,GAAU,yBAA2BG,EAAmB,gBAAgB,EAAE,CAClF,MAAE,CAAW,CACd,EAEIC,GAAQ,OAAO,yBACnB,GAAIA,GACH,GAAI,CACHA,GAAM,CAAC,EAAG,EAAE,CACb,MAAE,CACDA,GAAQ,IACT,CAGD,IAAIC,GAAiB,UAAY,CAChC,MAAM,IAAIJ,EACX,EACIK,GAAiBF,GACjB,UAAY,CACd,GAAI,CAEH,iBAAU,OACHC,EACR,MAAE,CACD,GAAI,CAEH,OAAOD,GAAM,UAAW,QAAQ,EAAE,GACnC,MAAE,CACD,OAAOC,EACR,CACD,CACD,EAAE,EACAA,GAECE,GAAa,KAAuB,EAEpCC,GAAW,OAAO,gBAAkB,SAAUC,EAAG,CAAE,OAAOA,EAAE,SAAW,EAEvEC,GAAY,CAAC,EAEbC,GAAa,OAAO,WAAe,IAAcb,GAAYU,GAAS,UAAU,EAEhFI,GAAa,CAChB,mBAAoB,OAAO,eAAmB,IAAcd,GAAY,eACxE,UAAW,MACX,gBAAiB,OAAO,YAAgB,IAAcA,GAAY,YAClE,2BAA4BS,GAAaC,GAAS,CAAC,EAAE,OAAO,UAAU,CAAC,EAAIV,GAC3E,mCAAoCA,GACpC,kBAAmBY,GACnB,mBAAoBA,GACpB,2BAA4BA,GAC5B,2BAA4BA,GAC5B,YAAa,OAAO,QAAY,IAAcZ,GAAY,QAC1D,WAAY,OAAO,OAAW,IAAcA,GAAY,OACxD,kBAAmB,OAAO,cAAkB,IAAcA,GAAY,cACtE,mBAAoB,OAAO,eAAmB,IAAcA,GAAY,eACxE,YAAa,QACb,aAAc,OAAO,SAAa,IAAcA,GAAY,SAC5D,SAAU,KACV,cAAe,UACf,uBAAwB,mBACxB,cAAe,UACf,uBAAwB,mBACxB,UAAW,MACX,SAAU,KACV,cAAe,UACf,iBAAkB,OAAO,aAAiB,IAAcA,GAAY,aACpE,iBAAkB,OAAO,aAAiB,IAAcA,GAAY,aACpE,yBAA0B,OAAO,qBAAyB,IAAcA,GAAY,qBACpF,aAAcE,GACd,sBAAuBU,GACvB,cAAe,OAAO,UAAc,IAAcZ,GAAY,UAC9D,eAAgB,OAAO,WAAe,IAAcA,GAAY,WAChE,eAAgB,OAAO,WAAe,IAAcA,GAAY,WAChE,aAAc,SACd,UAAW,MACX,sBAAuBS,GAAaC,GAASA,GAAS,CAAC,EAAE,OAAO,UAAU,CAAC,CAAC,EAAIV,GAChF,SAAU,OAAO,MAAS,SAAW,KAAOA,GAC5C,QAAS,OAAO,IAAQ,IAAcA,GAAY,IAClD,yBAA0B,OAAO,IAAQ,KAAe,CAACS,GAAaT,GAAYU,GAAS,IAAI,IAAI,EAAE,OAAO,UAAU,CAAC,EACvH,SAAU,KACV,WAAY,OACZ,WAAY,OACZ,eAAgB,WAChB,aAAc,SACd,YAAa,OAAO,QAAY,IAAcV,GAAY,QAC1D,UAAW,OAAO,MAAU,IAAcA,GAAY,MACtD,eAAgB,WAChB,mBAAoB,eACpB,YAAa,OAAO,QAAY,IAAcA,GAAY,QAC1D,WAAY,OACZ,QAAS,OAAO,IAAQ,IAAcA,GAAY,IAClD,yBAA0B,OAAO,IAAQ,KAAe,CAACS,GAAaT,GAAYU,GAAS,IAAI,IAAI,EAAE,OAAO,UAAU,CAAC,EACvH,sBAAuB,OAAO,kBAAsB,IAAcV,GAAY,kBAC9E,WAAY,OACZ,4BAA6BS,GAAaC,GAAS,GAAG,OAAO,UAAU,CAAC,EAAIV,GAC5E,WAAYS,GAAa,OAAST,GAClC,gBAAiBC,GACjB,mBAAoBO,GACpB,eAAgBK,GAChB,cAAeV,GACf,eAAgB,OAAO,WAAe,IAAcH,GAAY,WAChE,sBAAuB,OAAO,kBAAsB,IAAcA,GAAY,kBAC9E,gBAAiB,OAAO,YAAgB,IAAcA,GAAY,YAClE,gBAAiB,OAAO,YAAgB,IAAcA,GAAY,YAClE,aAAc,SACd,YAAa,OAAO,QAAY,IAAcA,GAAY,QAC1D,YAAa,OAAO,QAAY,IAAcA,GAAY,QAC1D,YAAa,OAAO,QAAY,IAAcA,GAAY,OAC3D,EAEA,GAAI,CACH,KAAK,KACN,OAASe,EAAP,CAEGC,GAAaN,GAASA,GAASK,CAAC,CAAC,EACrCD,GAAW,qBAAuBE,EACnC,CAFK,IAAAA,GAIDC,GAAS,SAASA,EAAOC,EAAM,CAClC,IAAIC,EACJ,GAAID,IAAS,kBACZC,EAAQf,GAAsB,sBAAsB,UAC1Cc,IAAS,sBACnBC,EAAQf,GAAsB,iBAAiB,UACrCc,IAAS,2BACnBC,EAAQf,GAAsB,uBAAuB,UAC3Cc,IAAS,mBAAoB,CACvC,IAAIE,EAAKH,EAAO,0BAA0B,EACtCG,IACHD,EAAQC,EAAG,UAEb,SAAWF,IAAS,2BAA4B,CAC/C,IAAIG,EAAMJ,EAAO,kBAAkB,EAC/BI,IACHF,EAAQT,GAASW,EAAI,SAAS,EAEhC,CAEA,OAAAP,GAAWI,GAAQC,EAEZA,CACR,EAEIG,GAAiB,CACpB,yBAA0B,CAAC,cAAe,WAAW,EACrD,mBAAoB,CAAC,QAAS,WAAW,EACzC,uBAAwB,CAAC,QAAS,YAAa,SAAS,EACxD,uBAAwB,CAAC,QAAS,YAAa,SAAS,EACxD,oBAAqB,CAAC,QAAS,YAAa,MAAM,EAClD,sBAAuB,CAAC,QAAS,YAAa,QAAQ,EACtD,2BAA4B,CAAC,gBAAiB,WAAW,EACzD,mBAAoB,CAAC,yBAA0B,WAAW,EAC1D,4BAA6B,CAAC,yBAA0B,YAAa,WAAW,EAChF,qBAAsB,CAAC,UAAW,WAAW,EAC7C,sBAAuB,CAAC,WAAY,WAAW,EAC/C,kBAAmB,CAAC,OAAQ,WAAW,EACvC,mBAAoB,CAAC,QAAS,WAAW,EACzC,uBAAwB,CAAC,YAAa,WAAW,EACjD,0BAA2B,CAAC,eAAgB,WAAW,EACvD,0BAA2B,CAAC,eAAgB,WAAW,EACvD,sBAAuB,CAAC,WAAY,WAAW,EAC/C,cAAe,CAAC,oBAAqB,WAAW,EAChD,uBAAwB,CAAC,oBAAqB,YAAa,WAAW,EACtE,uBAAwB,CAAC,YAAa,WAAW,EACjD,wBAAyB,CAAC,aAAc,WAAW,EACnD,wBAAyB,CAAC,aAAc,WAAW,EACnD,cAAe,CAAC,OAAQ,OAAO,EAC/B,kBAAmB,CAAC,OAAQ,WAAW,EACvC,iBAAkB,CAAC,MAAO,WAAW,EACrC,oBAAqB,CAAC,SAAU,WAAW,EAC3C,oBAAqB,CAAC,SAAU,WAAW,EAC3C,sBAAuB,CAAC,SAAU,YAAa,UAAU,EACzD,qBAAsB,CAAC,SAAU,YAAa,SAAS,EACvD,qBAAsB,CAAC,UAAW,WAAW,EAC7C,sBAAuB,CAAC,UAAW,YAAa,MAAM,EACtD,gBAAiB,CAAC,UAAW,KAAK,EAClC,mBAAoB,CAAC,UAAW,QAAQ,EACxC,oBAAqB,CAAC,UAAW,SAAS,EAC1C,wBAAyB,CAAC,aAAc,WAAW,EACnD,4BAA6B,CAAC,iBAAkB,WAAW,EAC3D,oBAAqB,CAAC,SAAU,WAAW,EAC3C,iBAAkB,CAAC,MAAO,WAAW,EACrC,+BAAgC,CAAC,oBAAqB,WAAW,EACjE,oBAAqB,CAAC,SAAU,WAAW,EAC3C,oBAAqB,CAAC,SAAU,WAAW,EAC3C,yBAA0B,CAAC,cAAe,WAAW,EACrD,wBAAyB,CAAC,aAAc,WAAW,EACnD,uBAAwB,CAAC,YAAa,WAAW,EACjD,wBAAyB,CAAC,aAAc,WAAW,EACnD,+BAAgC,CAAC,oBAAqB,WAAW,EACjE,yBAA0B,CAAC,cAAe,WAAW,EACrD,yBAA0B,CAAC,cAAe,WAAW,EACrD,sBAAuB,CAAC,WAAY,WAAW,EAC/C,qBAAsB,CAAC,UAAW,WAAW,EAC7C,qBAAsB,CAAC,UAAW,WAAW,CAC9C,EAEIC,GAAO,KACPC,GAAS,KACTC,GAAUF,GAAK,KAAK,SAAS,KAAM,MAAM,UAAU,MAAM,EACzDG,GAAeH,GAAK,KAAK,SAAS,MAAO,MAAM,UAAU,MAAM,EAC/DI,GAAWJ,GAAK,KAAK,SAAS,KAAM,OAAO,UAAU,OAAO,EAC5DK,GAAYL,GAAK,KAAK,SAAS,KAAM,OAAO,UAAU,KAAK,EAC3DM,GAAQN,GAAK,KAAK,SAAS,KAAM,OAAO,UAAU,IAAI,EAGtDO,GAAa,qGACbC,GAAe,WACfC,GAAe,SAAsBC,EAAQ,CAChD,IAAIC,EAAQN,GAAUK,EAAQ,EAAG,CAAC,EAC9BE,EAAOP,GAAUK,EAAQ,EAAE,EAC/B,GAAIC,IAAU,KAAOC,IAAS,IAC7B,MAAM,IAAIlC,GAAa,gDAAgD,EACjE,GAAIkC,IAAS,KAAOD,IAAU,IACpC,MAAM,IAAIjC,GAAa,gDAAgD,EAExE,IAAImC,EAAS,CAAC,EACd,OAAAT,GAASM,EAAQH,GAAY,SAAUO,EAAOC,EAAQC,EAAOC,EAAW,CACvEJ,EAAOA,EAAO,QAAUG,EAAQZ,GAASa,EAAWT,GAAc,IAAI,EAAIO,GAAUD,CACrF,CAAC,EACMD,CACR,EAGIK,GAAmB,SAA0BvB,EAAMwB,EAAc,CACpE,IAAIC,EAAgBzB,EAChB0B,EAMJ,GALIpB,GAAOF,GAAgBqB,CAAa,IACvCC,EAAQtB,GAAeqB,GACvBA,EAAgB,IAAMC,EAAM,GAAK,KAG9BpB,GAAOV,GAAY6B,CAAa,EAAG,CACtC,IAAIxB,EAAQL,GAAW6B,GAIvB,GAHIxB,IAAUP,KACbO,EAAQF,GAAO0B,CAAa,GAEzB,OAAOxB,EAAU,KAAe,CAACuB,EACpC,MAAM,IAAIvC,GAAW,aAAee,EAAO,sDAAsD,EAGlG,MAAO,CACN,MAAO0B,EACP,KAAMD,EACN,MAAOxB,CACR,CACD,CAEA,MAAM,IAAIlB,GAAa,aAAeiB,EAAO,kBAAkB,CAChE,EAEAnB,GAAO,QAAU,SAAsBmB,EAAMwB,EAAc,CAC1D,GAAI,OAAOxB,GAAS,UAAYA,EAAK,SAAW,EAC/C,MAAM,IAAIf,GAAW,2CAA2C,EAEjE,GAAI,UAAU,OAAS,GAAK,OAAOuC,GAAiB,UACnD,MAAM,IAAIvC,GAAW,2CAA2C,EAGjE,GAAI0B,GAAM,cAAeX,CAAI,IAAM,KAClC,MAAM,IAAIjB,GAAa,oFAAoF,EAE5G,IAAI4C,EAAQb,GAAad,CAAI,EACzB4B,EAAoBD,EAAM,OAAS,EAAIA,EAAM,GAAK,GAElDE,EAAYN,GAAiB,IAAMK,EAAoB,IAAKJ,CAAY,EACxEM,EAAoBD,EAAU,KAC9B5B,EAAQ4B,EAAU,MAClBE,EAAqB,GAErBL,EAAQG,EAAU,MAClBH,IACHE,EAAoBF,EAAM,GAC1BlB,GAAamB,EAAOpB,GAAQ,CAAC,EAAG,CAAC,EAAGmB,CAAK,CAAC,GAG3C,QAASM,EAAI,EAAGC,EAAQ,GAAMD,EAAIL,EAAM,OAAQK,GAAK,EAAG,CACvD,IAAIE,EAAOP,EAAMK,GACbhB,EAAQN,GAAUwB,EAAM,EAAG,CAAC,EAC5BjB,EAAOP,GAAUwB,EAAM,EAAE,EAC7B,IAEGlB,IAAU,KAAOA,IAAU,KAAOA,IAAU,KACzCC,IAAS,KAAOA,IAAS,KAAOA,IAAS,MAE3CD,IAAUC,EAEb,MAAM,IAAIlC,GAAa,sDAAsD,EAS9E,IAPImD,IAAS,eAAiB,CAACD,KAC9BF,EAAqB,IAGtBH,GAAqB,IAAMM,EAC3BJ,EAAoB,IAAMF,EAAoB,IAE1CtB,GAAOV,GAAYkC,CAAiB,EACvC7B,EAAQL,GAAWkC,WACT7B,GAAS,KAAM,CACzB,GAAI,EAAEiC,KAAQjC,GAAQ,CACrB,GAAI,CAACuB,EACJ,MAAM,IAAIvC,GAAW,sBAAwBe,EAAO,6CAA6C,EAElG,MACD,CACA,GAAIZ,IAAU4C,EAAI,GAAML,EAAM,OAAQ,CACrC,IAAIQ,EAAO/C,GAAMa,EAAOiC,CAAI,EAC5BD,EAAQ,CAAC,CAACE,EASNF,GAAS,QAASE,GAAQ,EAAE,kBAAmBA,EAAK,KACvDlC,EAAQkC,EAAK,IAEblC,EAAQA,EAAMiC,EAEhB,MACCD,EAAQ3B,GAAOL,EAAOiC,CAAI,EAC1BjC,EAAQA,EAAMiC,GAGXD,GAAS,CAACF,IACbnC,GAAWkC,GAAqB7B,EAElC,CACD,CACA,OAAOA,CACR,ICvVA,IAAAmC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAO,KACPC,GAAe,KAEfC,GAASD,GAAa,4BAA4B,EAClDE,GAAQF,GAAa,2BAA2B,EAChDG,GAAgBH,GAAa,kBAAmB,EAAI,GAAKD,GAAK,KAAKG,GAAOD,EAAM,EAEhFG,GAAQJ,GAAa,oCAAqC,EAAI,EAC9DK,GAAkBL,GAAa,0BAA2B,EAAI,EAC9DM,GAAON,GAAa,YAAY,EAEpC,GAAIK,GACH,GAAI,CACHA,GAAgB,CAAC,EAAG,IAAK,CAAE,MAAO,CAAE,CAAC,CACtC,MAAE,CAEDA,GAAkB,IACnB,CAGDP,GAAO,QAAU,SAAkBS,EAAkB,CACpD,IAAIC,EAAOL,GAAcJ,GAAMG,GAAO,SAAS,EAC/C,GAAIE,IAASC,GAAiB,CAC7B,IAAII,EAAOL,GAAMI,EAAM,QAAQ,EAC3BC,EAAK,cAERJ,GACCG,EACA,SACA,CAAE,MAAO,EAAIF,GAAK,EAAGC,EAAiB,QAAU,UAAU,OAAS,EAAE,CAAE,CACxE,CAEF,CACA,OAAOC,CACR,EAEA,IAAIE,GAAY,UAAqB,CACpC,OAAOP,GAAcJ,GAAME,GAAQ,SAAS,CAC7C,EAEII,GACHA,GAAgBP,GAAO,QAAS,QAAS,CAAE,MAAOY,EAAU,CAAC,EAE7DZ,GAAO,QAAQ,MAAQY,KC7CxB,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAe,KAEfC,GAAW,KAEXC,GAAWD,GAASD,GAAa,0BAA0B,CAAC,EAEhED,GAAO,QAAU,SAA4BI,EAAMC,EAAc,CAChE,IAAIC,EAAYL,GAAaG,EAAM,CAAC,CAACC,CAAY,EACjD,OAAI,OAAOC,GAAc,YAAcH,GAASC,EAAM,aAAa,EAAI,GAC/DF,GAASI,CAAS,EAEnBA,CACR,ICdA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAAAA,GAAO,QAAU,QAAQ,QAAQ,UCAjC,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,KAAIC,GAAS,OAAO,KAAQ,YAAc,IAAI,UAC1CC,GAAoB,OAAO,0BAA4BD,GAAS,OAAO,yBAAyB,IAAI,UAAW,MAAM,EAAI,KACzHE,GAAUF,IAAUC,IAAqB,OAAOA,GAAkB,KAAQ,WAAaA,GAAkB,IAAM,KAC/GE,GAAaH,IAAU,IAAI,UAAU,QACrCI,GAAS,OAAO,KAAQ,YAAc,IAAI,UAC1CC,GAAoB,OAAO,0BAA4BD,GAAS,OAAO,yBAAyB,IAAI,UAAW,MAAM,EAAI,KACzHE,GAAUF,IAAUC,IAAqB,OAAOA,GAAkB,KAAQ,WAAaA,GAAkB,IAAM,KAC/GE,GAAaH,IAAU,IAAI,UAAU,QACrCI,GAAa,OAAO,SAAY,YAAc,QAAQ,UACtDC,GAAaD,GAAa,QAAQ,UAAU,IAAM,KAClDE,GAAa,OAAO,SAAY,YAAc,QAAQ,UACtDC,GAAaD,GAAa,QAAQ,UAAU,IAAM,KAClDE,GAAa,OAAO,SAAY,YAAc,QAAQ,UACtDC,GAAeD,GAAa,QAAQ,UAAU,MAAQ,KACtDE,GAAiB,QAAQ,UAAU,QACnCC,GAAiB,OAAO,UAAU,SAClCC,GAAmB,SAAS,UAAU,SACtCC,GAAS,OAAO,UAAU,MAC1BC,GAAS,OAAO,UAAU,MAC1BC,GAAW,OAAO,UAAU,QAC5BC,GAAe,OAAO,UAAU,YAChCC,GAAe,OAAO,UAAU,YAChCC,GAAQ,OAAO,UAAU,KACzBC,GAAU,MAAM,UAAU,OAC1BC,GAAQ,MAAM,UAAU,KACxBC,GAAY,MAAM,UAAU,MAC5BC,GAAS,KAAK,MACdC,GAAgB,OAAO,QAAW,WAAa,OAAO,UAAU,QAAU,KAC1EC,GAAO,OAAO,sBACdC,GAAc,OAAO,QAAW,YAAc,OAAO,OAAO,UAAa,SAAW,OAAO,UAAU,SAAW,KAChHC,GAAoB,OAAO,QAAW,YAAc,OAAO,OAAO,UAAa,SAE/EC,GAAc,OAAO,QAAW,YAAc,OAAO,cAAgB,OAAO,OAAO,cAAgBD,GAAoB,SAAW,UAChI,OAAO,YACP,KACFE,GAAe,OAAO,UAAU,qBAEhCC,IAAO,OAAO,SAAY,WAAa,QAAQ,eAAiB,OAAO,kBACvE,CAAC,EAAE,YAAc,MAAM,UACjB,SAAUC,EAAG,CACX,OAAOA,EAAE,SACb,EACE,MAGV,SAASC,GAAoBC,EAAKC,EAAK,CACnC,GACID,IAAQ,KACLA,IAAQ,MACRA,IAAQA,GACPA,GAAOA,EAAM,MAASA,EAAM,KAC7Bd,GAAM,KAAK,IAAKe,CAAG,EAEtB,OAAOA,EAEX,IAAIC,EAAW,mCACf,GAAI,OAAOF,GAAQ,SAAU,CACzB,IAAIG,EAAMH,EAAM,EAAI,CAACV,GAAO,CAACU,CAAG,EAAIV,GAAOU,CAAG,EAC9C,GAAIG,IAAQH,EAAK,CACb,IAAII,EAAS,OAAOD,CAAG,EACnBE,EAAMvB,GAAO,KAAKmB,EAAKG,EAAO,OAAS,CAAC,EAC5C,OAAOrB,GAAS,KAAKqB,EAAQF,EAAU,KAAK,EAAI,IAAMnB,GAAS,KAAKA,GAAS,KAAKsB,EAAK,cAAe,KAAK,EAAG,KAAM,EAAE,CAC1H,CACJ,CACA,OAAOtB,GAAS,KAAKkB,EAAKC,EAAU,KAAK,CAC7C,CAEA,IAAII,GAAc,KACdC,GAAgBD,GAAY,OAC5BE,GAAgBC,GAASF,EAAa,EAAIA,GAAgB,KAE9D5C,GAAO,QAAU,SAAS+C,EAASC,EAAKC,EAASC,EAAOC,EAAM,CAC1D,IAAIC,EAAOH,GAAW,CAAC,EAEvB,GAAII,GAAID,EAAM,YAAY,GAAMA,EAAK,aAAe,UAAYA,EAAK,aAAe,SAChF,MAAM,IAAI,UAAU,kDAAkD,EAE1E,GACIC,GAAID,EAAM,iBAAiB,IAAM,OAAOA,EAAK,iBAAoB,SAC3DA,EAAK,gBAAkB,GAAKA,EAAK,kBAAoB,IACrDA,EAAK,kBAAoB,MAG/B,MAAM,IAAI,UAAU,wFAAwF,EAEhH,IAAIE,EAAgBD,GAAID,EAAM,eAAe,EAAIA,EAAK,cAAgB,GACtE,GAAI,OAAOE,GAAkB,WAAaA,IAAkB,SACxD,MAAM,IAAI,UAAU,+EAA+E,EAGvG,GACID,GAAID,EAAM,QAAQ,GACfA,EAAK,SAAW,MAChBA,EAAK,SAAW,KAChB,EAAE,SAASA,EAAK,OAAQ,EAAE,IAAMA,EAAK,QAAUA,EAAK,OAAS,GAEhE,MAAM,IAAI,UAAU,0DAA0D,EAElF,GAAIC,GAAID,EAAM,kBAAkB,GAAK,OAAOA,EAAK,kBAAqB,UAClE,MAAM,IAAI,UAAU,mEAAmE,EAE3F,IAAIG,EAAmBH,EAAK,iBAE5B,GAAI,OAAOJ,EAAQ,IACf,MAAO,YAEX,GAAIA,IAAQ,KACR,MAAO,OAEX,GAAI,OAAOA,GAAQ,UACf,OAAOA,EAAM,OAAS,QAG1B,GAAI,OAAOA,GAAQ,SACf,OAAOQ,GAAcR,EAAKI,CAAI,EAElC,GAAI,OAAOJ,GAAQ,SAAU,CACzB,GAAIA,IAAQ,EACR,MAAO,KAAWA,EAAM,EAAI,IAAM,KAEtC,IAAIV,EAAM,OAAOU,CAAG,EACpB,OAAOO,EAAmBnB,GAAoBY,EAAKV,CAAG,EAAIA,CAC9D,CACA,GAAI,OAAOU,GAAQ,SAAU,CACzB,IAAIS,EAAY,OAAOT,CAAG,EAAI,IAC9B,OAAOO,EAAmBnB,GAAoBY,EAAKS,CAAS,EAAIA,CACpE,CAEA,IAAIC,EAAW,OAAON,EAAK,MAAU,IAAc,EAAIA,EAAK,MAE5D,GADI,OAAOF,EAAU,MAAeA,EAAQ,GACxCA,GAASQ,GAAYA,EAAW,GAAK,OAAOV,GAAQ,SACpD,OAAOW,GAAQX,CAAG,EAAI,UAAY,WAGtC,IAAIY,EAASC,GAAUT,EAAMF,CAAK,EAElC,GAAI,OAAOC,EAAS,IAChBA,EAAO,CAAC,UACDW,GAAQX,EAAMH,CAAG,GAAK,EAC7B,MAAO,aAGX,SAASe,EAAQC,EAAOC,EAAMC,EAAU,CAKpC,GAJID,IACAd,EAAOzB,GAAU,KAAKyB,CAAI,EAC1BA,EAAK,KAAKc,CAAI,GAEdC,EAAU,CACV,IAAIC,EAAU,CACV,MAAOf,EAAK,KAChB,EACA,OAAIC,GAAID,EAAM,YAAY,IACtBe,EAAQ,WAAaf,EAAK,YAEvBL,EAASiB,EAAOG,EAASjB,EAAQ,EAAGC,CAAI,CACnD,CACA,OAAOJ,EAASiB,EAAOZ,EAAMF,EAAQ,EAAGC,CAAI,CAChD,CAEA,GAAI,OAAOH,GAAQ,YAAc,CAACoB,GAASpB,CAAG,EAAG,CAC7C,IAAIqB,EAAOC,GAAOtB,CAAG,EACjBuB,EAAOC,GAAWxB,EAAKe,CAAO,EAClC,MAAO,aAAeM,EAAO,KAAOA,EAAO,gBAAkB,KAAOE,EAAK,OAAS,EAAI,MAAQ9C,GAAM,KAAK8C,EAAM,IAAI,EAAI,KAAO,GAClI,CACA,GAAIzB,GAASE,CAAG,EAAG,CACf,IAAIyB,EAAY1C,GAAoBX,GAAS,KAAK,OAAO4B,CAAG,EAAG,yBAA0B,IAAI,EAAIlB,GAAY,KAAKkB,CAAG,EACrH,OAAO,OAAOA,GAAQ,UAAY,CAACjB,GAAoB2C,GAAUD,CAAS,EAAIA,CAClF,CACA,GAAIE,GAAU3B,CAAG,EAAG,CAGhB,QAFI4B,EAAI,IAAMtD,GAAa,KAAK,OAAO0B,EAAI,QAAQ,CAAC,EAChD6B,EAAQ7B,EAAI,YAAc,CAAC,EACtB8B,EAAI,EAAGA,EAAID,EAAM,OAAQC,IAC9BF,GAAK,IAAMC,EAAMC,GAAG,KAAO,IAAMC,GAAWC,GAAMH,EAAMC,GAAG,KAAK,EAAG,SAAU1B,CAAI,EAErF,OAAAwB,GAAK,IACD5B,EAAI,YAAcA,EAAI,WAAW,SAAU4B,GAAK,OACpDA,GAAK,KAAOtD,GAAa,KAAK,OAAO0B,EAAI,QAAQ,CAAC,EAAI,IAC/C4B,CACX,CACA,GAAIjB,GAAQX,CAAG,EAAG,CACd,GAAIA,EAAI,SAAW,EAAK,MAAO,KAC/B,IAAIiC,EAAKT,GAAWxB,EAAKe,CAAO,EAChC,OAAIH,GAAU,CAACsB,GAAiBD,CAAE,EACvB,IAAME,GAAaF,EAAIrB,CAAM,EAAI,IAErC,KAAOnC,GAAM,KAAKwD,EAAI,IAAI,EAAI,IACzC,CACA,GAAIG,GAAQpC,CAAG,EAAG,CACd,IAAIqC,EAAQb,GAAWxB,EAAKe,CAAO,EACnC,MAAI,EAAE,UAAW,MAAM,YAAc,UAAWf,GAAO,CAACf,GAAa,KAAKe,EAAK,OAAO,EAC3E,MAAQ,OAAOA,CAAG,EAAI,KAAOvB,GAAM,KAAKD,GAAQ,KAAK,YAAcuC,EAAQf,EAAI,KAAK,EAAGqC,CAAK,EAAG,IAAI,EAAI,KAE9GA,EAAM,SAAW,EAAY,IAAM,OAAOrC,CAAG,EAAI,IAC9C,MAAQ,OAAOA,CAAG,EAAI,KAAOvB,GAAM,KAAK4D,EAAO,IAAI,EAAI,IAClE,CACA,GAAI,OAAOrC,GAAQ,UAAYM,EAAe,CAC1C,GAAIT,IAAiB,OAAOG,EAAIH,KAAmB,YAAcF,GAC7D,OAAOA,GAAYK,EAAK,CAAE,MAAOU,EAAWR,CAAM,CAAC,EAChD,GAAII,IAAkB,UAAY,OAAON,EAAI,SAAY,WAC5D,OAAOA,EAAI,QAAQ,CAE3B,CACA,GAAIsC,GAAMtC,CAAG,EAAG,CACZ,IAAIuC,EAAW,CAAC,EAChB,OAAInF,IACAA,GAAW,KAAK4C,EAAK,SAAUgB,EAAOwB,EAAK,CACvCD,EAAS,KAAKxB,EAAQyB,EAAKxC,EAAK,EAAI,EAAI,OAASe,EAAQC,EAAOhB,CAAG,CAAC,CACxE,CAAC,EAEEyC,GAAa,MAAOtF,GAAQ,KAAK6C,CAAG,EAAGuC,EAAU3B,CAAM,CAClE,CACA,GAAI8B,GAAM1C,CAAG,EAAG,CACZ,IAAI2C,EAAW,CAAC,EAChB,OAAInF,IACAA,GAAW,KAAKwC,EAAK,SAAUgB,EAAO,CAClC2B,EAAS,KAAK5B,EAAQC,EAAOhB,CAAG,CAAC,CACrC,CAAC,EAEEyC,GAAa,MAAOlF,GAAQ,KAAKyC,CAAG,EAAG2C,EAAU/B,CAAM,CAClE,CACA,GAAIgC,GAAU5C,CAAG,EACb,OAAO6C,GAAiB,SAAS,EAErC,GAAIC,GAAU9C,CAAG,EACb,OAAO6C,GAAiB,SAAS,EAErC,GAAIE,GAAU/C,CAAG,EACb,OAAO6C,GAAiB,SAAS,EAErC,GAAIG,GAAShD,CAAG,EACZ,OAAO0B,GAAUX,EAAQ,OAAOf,CAAG,CAAC,CAAC,EAEzC,GAAIiD,GAASjD,CAAG,EACZ,OAAO0B,GAAUX,EAAQnC,GAAc,KAAKoB,CAAG,CAAC,CAAC,EAErD,GAAIkD,GAAUlD,CAAG,EACb,OAAO0B,GAAU3D,GAAe,KAAKiC,CAAG,CAAC,EAE7C,GAAImD,GAASnD,CAAG,EACZ,OAAO0B,GAAUX,EAAQ,OAAOf,CAAG,CAAC,CAAC,EAEzC,GAAI,CAACoD,GAAOpD,CAAG,GAAK,CAACoB,GAASpB,CAAG,EAAG,CAChC,IAAIqD,EAAK7B,GAAWxB,EAAKe,CAAO,EAC5BuC,EAAgBpE,GAAMA,GAAIc,CAAG,IAAM,OAAO,UAAYA,aAAe,QAAUA,EAAI,cAAgB,OACnGuD,EAAWvD,aAAe,OAAS,GAAK,iBACxCwD,EAAY,CAACF,GAAiBtE,IAAe,OAAOgB,CAAG,IAAMA,GAAOhB,MAAegB,EAAM7B,GAAO,KAAKsF,GAAMzD,CAAG,EAAG,EAAG,EAAE,EAAIuD,EAAW,SAAW,GAChJG,EAAiBJ,GAAiB,OAAOtD,EAAI,aAAgB,WAAa,GAAKA,EAAI,YAAY,KAAOA,EAAI,YAAY,KAAO,IAAM,GACnI2D,EAAMD,GAAkBF,GAAaD,EAAW,IAAM9E,GAAM,KAAKD,GAAQ,KAAK,CAAC,EAAGgF,GAAa,CAAC,EAAGD,GAAY,CAAC,CAAC,EAAG,IAAI,EAAI,KAAO,IACvI,OAAIF,EAAG,SAAW,EAAYM,EAAM,KAChC/C,EACO+C,EAAM,IAAMxB,GAAakB,EAAIzC,CAAM,EAAI,IAE3C+C,EAAM,KAAOlF,GAAM,KAAK4E,EAAI,IAAI,EAAI,IAC/C,CACA,OAAO,OAAOrD,CAAG,CACrB,EAEA,SAAS+B,GAAWH,EAAGgC,EAAcxD,EAAM,CACvC,IAAIyD,GAAazD,EAAK,YAAcwD,KAAkB,SAAW,IAAM,IACvE,OAAOC,EAAYjC,EAAIiC,CAC3B,CAEA,SAAS7B,GAAMJ,EAAG,CACd,OAAOxD,GAAS,KAAK,OAAOwD,CAAC,EAAG,KAAM,QAAQ,CAClD,CAEA,SAASjB,GAAQX,EAAK,CAAE,OAAOyD,GAAMzD,CAAG,IAAM,mBAAqB,CAAChB,IAAe,EAAE,OAAOgB,GAAQ,UAAYhB,MAAegB,GAAO,CACtI,SAASoD,GAAOpD,EAAK,CAAE,OAAOyD,GAAMzD,CAAG,IAAM,kBAAoB,CAAChB,IAAe,EAAE,OAAOgB,GAAQ,UAAYhB,MAAegB,GAAO,CACpI,SAASoB,GAASpB,EAAK,CAAE,OAAOyD,GAAMzD,CAAG,IAAM,oBAAsB,CAAChB,IAAe,EAAE,OAAOgB,GAAQ,UAAYhB,MAAegB,GAAO,CACxI,SAASoC,GAAQpC,EAAK,CAAE,OAAOyD,GAAMzD,CAAG,IAAM,mBAAqB,CAAChB,IAAe,EAAE,OAAOgB,GAAQ,UAAYhB,MAAegB,GAAO,CACtI,SAASmD,GAASnD,EAAK,CAAE,OAAOyD,GAAMzD,CAAG,IAAM,oBAAsB,CAAChB,IAAe,EAAE,OAAOgB,GAAQ,UAAYhB,MAAegB,GAAO,CACxI,SAASgD,GAAShD,EAAK,CAAE,OAAOyD,GAAMzD,CAAG,IAAM,oBAAsB,CAAChB,IAAe,EAAE,OAAOgB,GAAQ,UAAYhB,MAAegB,GAAO,CACxI,SAASkD,GAAUlD,EAAK,CAAE,OAAOyD,GAAMzD,CAAG,IAAM,qBAAuB,CAAChB,IAAe,EAAE,OAAOgB,GAAQ,UAAYhB,MAAegB,GAAO,CAG1I,SAASF,GAASE,EAAK,CACnB,GAAIjB,GACA,OAAOiB,GAAO,OAAOA,GAAQ,UAAYA,aAAe,OAE5D,GAAI,OAAOA,GAAQ,SACf,MAAO,GAEX,GAAI,CAACA,GAAO,OAAOA,GAAQ,UAAY,CAAClB,GACpC,MAAO,GAEX,GAAI,CACA,OAAAA,GAAY,KAAKkB,CAAG,EACb,EACX,MAAE,CAAW,CACb,MAAO,EACX,CAEA,SAASiD,GAASjD,EAAK,CACnB,GAAI,CAACA,GAAO,OAAOA,GAAQ,UAAY,CAACpB,GACpC,MAAO,GAEX,GAAI,CACA,OAAAA,GAAc,KAAKoB,CAAG,EACf,EACX,MAAE,CAAW,CACb,MAAO,EACX,CAEA,IAAI8D,GAAS,OAAO,UAAU,gBAAkB,SAAUtB,EAAK,CAAE,OAAOA,KAAO,IAAM,EACrF,SAASnC,GAAIL,EAAKwC,EAAK,CACnB,OAAOsB,GAAO,KAAK9D,EAAKwC,CAAG,CAC/B,CAEA,SAASiB,GAAMzD,EAAK,CAChB,OAAOhC,GAAe,KAAKgC,CAAG,CAClC,CAEA,SAASsB,GAAOyC,EAAG,CACf,GAAIA,EAAE,KAAQ,OAAOA,EAAE,KACvB,IAAIC,EAAI9F,GAAO,KAAKD,GAAiB,KAAK8F,CAAC,EAAG,sBAAsB,EACpE,OAAIC,EAAYA,EAAE,GACX,IACX,CAEA,SAASlD,GAAQmB,EAAIgC,EAAG,CACpB,GAAIhC,EAAG,QAAW,OAAOA,EAAG,QAAQgC,CAAC,EACrC,QAASnC,EAAI,EAAGoC,EAAIjC,EAAG,OAAQH,EAAIoC,EAAGpC,IAClC,GAAIG,EAAGH,KAAOmC,EAAK,OAAOnC,EAE9B,MAAO,EACX,CAEA,SAASQ,GAAM2B,EAAG,CACd,GAAI,CAAC9G,IAAW,CAAC8G,GAAK,OAAOA,GAAM,SAC/B,MAAO,GAEX,GAAI,CACA9G,GAAQ,KAAK8G,CAAC,EACd,GAAI,CACA1G,GAAQ,KAAK0G,CAAC,CAClB,MAAE,CACE,MAAO,EACX,CACA,OAAOA,aAAa,GACxB,MAAE,CAAW,CACb,MAAO,EACX,CAEA,SAASrB,GAAUqB,EAAG,CAClB,GAAI,CAACvG,IAAc,CAACuG,GAAK,OAAOA,GAAM,SAClC,MAAO,GAEX,GAAI,CACAvG,GAAW,KAAKuG,EAAGvG,EAAU,EAC7B,GAAI,CACAE,GAAW,KAAKqG,EAAGrG,EAAU,CACjC,MAAE,CACE,MAAO,EACX,CACA,OAAOqG,aAAa,OACxB,MAAE,CAAW,CACb,MAAO,EACX,CAEA,SAASlB,GAAUkB,EAAG,CAClB,GAAI,CAACnG,IAAgB,CAACmG,GAAK,OAAOA,GAAM,SACpC,MAAO,GAEX,GAAI,CACA,OAAAnG,GAAa,KAAKmG,CAAC,EACZ,EACX,MAAE,CAAW,CACb,MAAO,EACX,CAEA,SAASvB,GAAMuB,EAAG,CACd,GAAI,CAAC1G,IAAW,CAAC0G,GAAK,OAAOA,GAAM,SAC/B,MAAO,GAEX,GAAI,CACA1G,GAAQ,KAAK0G,CAAC,EACd,GAAI,CACA9G,GAAQ,KAAK8G,CAAC,CAClB,MAAE,CACE,MAAO,EACX,CACA,OAAOA,aAAa,GACxB,MAAE,CAAW,CACb,MAAO,EACX,CAEA,SAASnB,GAAUmB,EAAG,CAClB,GAAI,CAACrG,IAAc,CAACqG,GAAK,OAAOA,GAAM,SAClC,MAAO,GAEX,GAAI,CACArG,GAAW,KAAKqG,EAAGrG,EAAU,EAC7B,GAAI,CACAF,GAAW,KAAKuG,EAAGvG,EAAU,CACjC,MAAE,CACE,MAAO,EACX,CACA,OAAOuG,aAAa,OACxB,MAAE,CAAW,CACb,MAAO,EACX,CAEA,SAAStC,GAAUsC,EAAG,CAClB,MAAI,CAACA,GAAK,OAAOA,GAAM,SAAmB,GACtC,OAAO,YAAgB,KAAeA,aAAa,YAC5C,GAEJ,OAAOA,EAAE,UAAa,UAAY,OAAOA,EAAE,cAAiB,UACvE,CAEA,SAASzD,GAAclB,EAAKc,EAAM,CAC9B,GAAId,EAAI,OAASc,EAAK,gBAAiB,CACnC,IAAI+D,EAAY7E,EAAI,OAASc,EAAK,gBAC9BgE,EAAU,OAASD,EAAY,mBAAqBA,EAAY,EAAI,IAAM,IAC9E,OAAO3D,GAAcrC,GAAO,KAAKmB,EAAK,EAAGc,EAAK,eAAe,EAAGA,CAAI,EAAIgE,CAC5E,CAEA,IAAIxC,EAAIxD,GAAS,KAAKA,GAAS,KAAKkB,EAAK,WAAY,MAAM,EAAG,eAAgB+E,EAAO,EACrF,OAAOtC,GAAWH,EAAG,SAAUxB,CAAI,CACvC,CAEA,SAASiE,GAAQC,EAAG,CAChB,IAAIC,EAAID,EAAE,WAAW,CAAC,EAClBL,EAAI,CACJ,EAAG,IACH,EAAG,IACH,GAAI,IACJ,GAAI,IACJ,GAAI,GACR,EAAEM,GACF,OAAIN,EAAY,KAAOA,EAChB,OAASM,EAAI,GAAO,IAAM,IAAMlG,GAAa,KAAKkG,EAAE,SAAS,EAAE,CAAC,CAC3E,CAEA,SAAS7C,GAAUpC,EAAK,CACpB,MAAO,UAAYA,EAAM,GAC7B,CAEA,SAASuD,GAAiB2B,EAAM,CAC5B,OAAOA,EAAO,QAClB,CAEA,SAAS/B,GAAa+B,EAAMC,EAAMC,EAAS9D,EAAQ,CAC/C,IAAI+D,EAAgB/D,EAASuB,GAAauC,EAAS9D,CAAM,EAAInC,GAAM,KAAKiG,EAAS,IAAI,EACrF,OAAOF,EAAO,KAAOC,EAAO,MAAQE,EAAgB,GACxD,CAEA,SAASzC,GAAiBD,EAAI,CAC1B,QAASH,EAAI,EAAGA,EAAIG,EAAG,OAAQH,IAC3B,GAAIhB,GAAQmB,EAAGH,GAAI;AAAA,CAAI,GAAK,EACxB,MAAO,GAGf,MAAO,EACX,CAEA,SAASjB,GAAUT,EAAMF,EAAO,CAC5B,IAAI0E,EACJ,GAAIxE,EAAK,SAAW,IAChBwE,EAAa,YACN,OAAOxE,EAAK,QAAW,UAAYA,EAAK,OAAS,EACxDwE,EAAanG,GAAM,KAAK,MAAM2B,EAAK,OAAS,CAAC,EAAG,GAAG,MAEnD,QAAO,KAEX,MAAO,CACH,KAAMwE,EACN,KAAMnG,GAAM,KAAK,MAAMyB,EAAQ,CAAC,EAAG0E,CAAU,CACjD,CACJ,CAEA,SAASzC,GAAaF,EAAIrB,EAAQ,CAC9B,GAAIqB,EAAG,SAAW,EAAK,MAAO,GAC9B,IAAI4C,EAAa;AAAA,EAAOjE,EAAO,KAAOA,EAAO,KAC7C,OAAOiE,EAAapG,GAAM,KAAKwD,EAAI,IAAM4C,CAAU,EAAI;AAAA,EAAOjE,EAAO,IACzE,CAEA,SAASY,GAAWxB,EAAKe,EAAS,CAC9B,IAAI+D,EAAQnE,GAAQX,CAAG,EACnBiC,EAAK,CAAC,EACV,GAAI6C,EAAO,CACP7C,EAAG,OAASjC,EAAI,OAChB,QAAS,EAAI,EAAG,EAAIA,EAAI,OAAQ,IAC5BiC,EAAG,GAAK5B,GAAIL,EAAK,CAAC,EAAIe,EAAQf,EAAI,GAAIA,CAAG,EAAI,EAErD,CACA,IAAI+E,EAAO,OAAOlG,IAAS,WAAaA,GAAKmB,CAAG,EAAI,CAAC,EACjDgF,EACJ,GAAIjG,GAAmB,CACnBiG,EAAS,CAAC,EACV,QAASC,EAAI,EAAGA,EAAIF,EAAK,OAAQE,IAC7BD,EAAO,IAAMD,EAAKE,IAAMF,EAAKE,EAErC,CAEA,QAASzC,KAAOxC,EACR,CAACK,GAAIL,EAAKwC,CAAG,GACbsC,GAAS,OAAO,OAAOtC,CAAG,CAAC,IAAMA,GAAOA,EAAMxC,EAAI,QAClDjB,IAAqBiG,EAAO,IAAMxC,aAAgB,SAG3CjE,GAAM,KAAK,SAAUiE,CAAG,EAC/BP,EAAG,KAAKlB,EAAQyB,EAAKxC,CAAG,EAAI,KAAOe,EAAQf,EAAIwC,GAAMxC,CAAG,CAAC,EAEzDiC,EAAG,KAAKO,EAAM,KAAOzB,EAAQf,EAAIwC,GAAMxC,CAAG,CAAC,GAGnD,GAAI,OAAOnB,IAAS,WAChB,QAASqG,EAAI,EAAGA,EAAIH,EAAK,OAAQG,IACzBjG,GAAa,KAAKe,EAAK+E,EAAKG,EAAE,GAC9BjD,EAAG,KAAK,IAAMlB,EAAQgE,EAAKG,EAAE,EAAI,MAAQnE,EAAQf,EAAI+E,EAAKG,IAAKlF,CAAG,CAAC,EAI/E,OAAOiC,CACX,ICngBA,IAAAkD,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAe,KACfC,GAAY,KACZC,GAAU,KAEVC,GAAaH,GAAa,aAAa,EACvCI,GAAWJ,GAAa,YAAa,EAAI,EACzCK,GAAOL,GAAa,QAAS,EAAI,EAEjCM,GAAcL,GAAU,wBAAyB,EAAI,EACrDM,GAAcN,GAAU,wBAAyB,EAAI,EACrDO,GAAcP,GAAU,wBAAyB,EAAI,EACrDQ,GAAUR,GAAU,oBAAqB,EAAI,EAC7CS,GAAUT,GAAU,oBAAqB,EAAI,EAC7CU,GAAUV,GAAU,oBAAqB,EAAI,EAU7CW,GAAc,SAAUC,EAAMC,EAAK,CACtC,QAASC,EAAOF,EAAMG,GAAOA,EAAOD,EAAK,QAAU,KAAMA,EAAOC,EAC/D,GAAIA,EAAK,MAAQF,EAChB,OAAAC,EAAK,KAAOC,EAAK,KACjBA,EAAK,KAAOH,EAAK,KACjBA,EAAK,KAAOG,EACLA,CAGV,EAEIC,GAAU,SAAUC,EAASJ,EAAK,CACrC,IAAIK,EAAOP,GAAYM,EAASJ,CAAG,EACnC,OAAOK,GAAQA,EAAK,KACrB,EACIC,GAAU,SAAUF,EAASJ,EAAKO,EAAO,CAC5C,IAAIF,EAAOP,GAAYM,EAASJ,CAAG,EAC/BK,EACHA,EAAK,MAAQE,EAGbH,EAAQ,KAAO,CACd,IAAKJ,EACL,KAAMI,EAAQ,KACd,MAAOG,CACR,CAEF,EACIC,GAAU,SAAUJ,EAASJ,EAAK,CACrC,MAAO,CAAC,CAACF,GAAYM,EAASJ,CAAG,CAClC,EAEAf,GAAO,QAAU,UAA0B,CAC1C,IAAIwB,EACAC,EACAC,EACAC,EAAU,CACb,OAAQ,SAAUZ,EAAK,CACtB,GAAI,CAACY,EAAQ,IAAIZ,CAAG,EACnB,MAAM,IAAIX,GAAW,iCAAmCD,GAAQY,CAAG,CAAC,CAEtE,EACA,IAAK,SAAUA,EAAK,CACnB,GAAIV,IAAYU,IAAQ,OAAOA,GAAQ,UAAY,OAAOA,GAAQ,aACjE,GAAIS,EACH,OAAOjB,GAAYiB,EAAKT,CAAG,UAElBT,IACV,GAAImB,EACH,OAAOf,GAAQe,EAAIV,CAAG,UAGnBW,EACH,OAAOR,GAAQQ,EAAIX,CAAG,CAGzB,EACA,IAAK,SAAUA,EAAK,CACnB,GAAIV,IAAYU,IAAQ,OAAOA,GAAQ,UAAY,OAAOA,GAAQ,aACjE,GAAIS,EACH,OAAOf,GAAYe,EAAKT,CAAG,UAElBT,IACV,GAAImB,EACH,OAAOb,GAAQa,EAAIV,CAAG,UAGnBW,EACH,OAAOH,GAAQG,EAAIX,CAAG,EAGxB,MAAO,EACR,EACA,IAAK,SAAUA,EAAKO,EAAO,CACtBjB,IAAYU,IAAQ,OAAOA,GAAQ,UAAY,OAAOA,GAAQ,aAC5DS,IACJA,EAAM,IAAInB,IAEXG,GAAYgB,EAAKT,EAAKO,CAAK,GACjBhB,IACLmB,IACJA,EAAK,IAAInB,IAEVK,GAAQc,EAAIV,EAAKO,CAAK,IAEjBI,IAMJA,EAAK,CAAE,IAAK,CAAC,EAAG,KAAM,IAAK,GAE5BL,GAAQK,EAAIX,EAAKO,CAAK,EAExB,CACD,EACA,OAAOK,CACR,IC3HA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAU,OAAO,UAAU,QAC3BC,GAAkB,OAElBC,GAAS,CACT,QAAS,UACT,QAAS,SACb,EAEAH,GAAO,QAAU,CACb,QAAWG,GAAO,QAClB,WAAY,CACR,QAAS,SAAUC,EAAO,CACtB,OAAOH,GAAQ,KAAKG,EAAOF,GAAiB,GAAG,CACnD,EACA,QAAS,SAAUE,EAAO,CACtB,OAAO,OAAOA,CAAK,CACvB,CACJ,EACA,QAASD,GAAO,QAChB,QAASA,GAAO,OACpB,ICtBA,IAAAE,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAU,KAEVC,GAAM,OAAO,UAAU,eACvBC,GAAU,MAAM,QAEhBC,GAAY,UAAY,CAExB,QADIC,EAAQ,CAAC,EACJC,EAAI,EAAGA,EAAI,IAAK,EAAEA,EACvBD,EAAM,KAAK,MAAQC,EAAI,GAAK,IAAM,IAAMA,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,EAGzE,OAAOD,CACX,EAAE,EAEEE,GAAe,SAAsBC,EAAO,CAC5C,KAAOA,EAAM,OAAS,GAAG,CACrB,IAAIC,EAAOD,EAAM,IAAI,EACjBE,EAAMD,EAAK,IAAIA,EAAK,MAExB,GAAIN,GAAQO,CAAG,EAAG,CAGd,QAFIC,EAAY,CAAC,EAERC,EAAI,EAAGA,EAAIF,EAAI,OAAQ,EAAEE,EAC1B,OAAOF,EAAIE,GAAO,KAClBD,EAAU,KAAKD,EAAIE,EAAE,EAI7BH,EAAK,IAAIA,EAAK,MAAQE,CAC1B,CACJ,CACJ,EAEIE,GAAgB,SAAuBC,EAAQC,EAAS,CAExD,QADIL,EAAMK,GAAWA,EAAQ,aAAe,OAAO,OAAO,IAAI,EAAI,CAAC,EAC1D,EAAI,EAAG,EAAID,EAAO,OAAQ,EAAE,EAC7B,OAAOA,EAAO,GAAO,MACrBJ,EAAI,GAAKI,EAAO,IAIxB,OAAOJ,CACX,EAEIM,GAAQ,SAASA,EAAMC,EAAQH,EAAQC,EAAS,CAEhD,GAAI,CAACD,EACD,OAAOG,EAGX,GAAI,OAAOH,GAAW,SAAU,CAC5B,GAAIX,GAAQc,CAAM,EACdA,EAAO,KAAKH,CAAM,UACXG,GAAU,OAAOA,GAAW,UAC9BF,IAAYA,EAAQ,cAAgBA,EAAQ,kBAAqB,CAACb,GAAI,KAAK,OAAO,UAAWY,CAAM,KACpGG,EAAOH,GAAU,QAGrB,OAAO,CAACG,EAAQH,CAAM,EAG1B,OAAOG,CACX,CAEA,GAAI,CAACA,GAAU,OAAOA,GAAW,SAC7B,MAAO,CAACA,CAAM,EAAE,OAAOH,CAAM,EAGjC,IAAII,EAAcD,EAKlB,OAJId,GAAQc,CAAM,GAAK,CAACd,GAAQW,CAAM,IAClCI,EAAcL,GAAcI,EAAQF,CAAO,GAG3CZ,GAAQc,CAAM,GAAKd,GAAQW,CAAM,GACjCA,EAAO,QAAQ,SAAUL,EAAMH,EAAG,CAC9B,GAAIJ,GAAI,KAAKe,EAAQX,CAAC,EAAG,CACrB,IAAIa,EAAaF,EAAOX,GACpBa,GAAc,OAAOA,GAAe,UAAYV,GAAQ,OAAOA,GAAS,SACxEQ,EAAOX,GAAKU,EAAMG,EAAYV,EAAMM,CAAO,EAE3CE,EAAO,KAAKR,CAAI,CAExB,MACIQ,EAAOX,GAAKG,CAEpB,CAAC,EACMQ,GAGJ,OAAO,KAAKH,CAAM,EAAE,OAAO,SAAUM,EAAKC,EAAK,CAClD,IAAIC,EAAQR,EAAOO,GAEnB,OAAInB,GAAI,KAAKkB,EAAKC,CAAG,EACjBD,EAAIC,GAAOL,EAAMI,EAAIC,GAAMC,EAAOP,CAAO,EAEzCK,EAAIC,GAAOC,EAERF,CACX,EAAGF,CAAW,CAClB,EAEIK,GAAS,SAA4BN,EAAQH,EAAQ,CACrD,OAAO,OAAO,KAAKA,CAAM,EAAE,OAAO,SAAUM,EAAKC,EAAK,CAClD,OAAAD,EAAIC,GAAOP,EAAOO,GACXD,CACX,EAAGH,CAAM,CACb,EAEIO,GAAS,SAAUC,EAAKC,EAASC,EAAS,CAC1C,IAAIC,EAAiBH,EAAI,QAAQ,MAAO,GAAG,EAC3C,GAAIE,IAAY,aAEZ,OAAOC,EAAe,QAAQ,iBAAkB,QAAQ,EAG5D,GAAI,CACA,OAAO,mBAAmBA,CAAc,CAC5C,MAAE,CACE,OAAOA,CACX,CACJ,EAEIC,GAAS,SAAgBJ,EAAKK,EAAgBH,EAASI,EAAMC,EAAQ,CAGrE,GAAIP,EAAI,SAAW,EACf,OAAOA,EAGX,IAAIQ,EAASR,EAOb,GANI,OAAOA,GAAQ,SACfQ,EAAS,OAAO,UAAU,SAAS,KAAKR,CAAG,EACpC,OAAOA,GAAQ,WACtBQ,EAAS,OAAOR,CAAG,GAGnBE,IAAY,aACZ,OAAO,OAAOM,CAAM,EAAE,QAAQ,kBAAmB,SAAUC,EAAI,CAC3D,MAAO,SAAW,SAASA,EAAG,MAAM,CAAC,EAAG,EAAE,EAAI,KAClD,CAAC,EAIL,QADIC,EAAM,GACD7B,EAAI,EAAGA,EAAI2B,EAAO,OAAQ,EAAE3B,EAAG,CACpC,IAAI8B,EAAIH,EAAO,WAAW3B,CAAC,EAE3B,GACI8B,IAAM,IACHA,IAAM,IACNA,IAAM,IACNA,IAAM,KACLA,GAAK,IAAQA,GAAK,IAClBA,GAAK,IAAQA,GAAK,IAClBA,GAAK,IAAQA,GAAK,KAClBJ,IAAW/B,GAAQ,UAAYmC,IAAM,IAAQA,IAAM,IACzD,CACED,GAAOF,EAAO,OAAO3B,CAAC,EACtB,QACJ,CAEA,GAAI8B,EAAI,IAAM,CACVD,EAAMA,EAAM/B,GAASgC,GACrB,QACJ,CAEA,GAAIA,EAAI,KAAO,CACXD,EAAMA,GAAO/B,GAAS,IAAQgC,GAAK,GAAMhC,GAAS,IAAQgC,EAAI,KAC9D,QACJ,CAEA,GAAIA,EAAI,OAAUA,GAAK,MAAQ,CAC3BD,EAAMA,GAAO/B,GAAS,IAAQgC,GAAK,IAAOhC,GAAS,IAASgC,GAAK,EAAK,IAAShC,GAAS,IAAQgC,EAAI,KACpG,QACJ,CAEA9B,GAAK,EACL8B,EAAI,QAAaA,EAAI,OAAU,GAAOH,EAAO,WAAW3B,CAAC,EAAI,MAE7D6B,GAAO/B,GAAS,IAAQgC,GAAK,IACvBhC,GAAS,IAASgC,GAAK,GAAM,IAC7BhC,GAAS,IAASgC,GAAK,EAAK,IAC5BhC,GAAS,IAAQgC,EAAI,GAC/B,CAEA,OAAOD,CACX,EAEIE,GAAU,SAAiBf,EAAO,CAIlC,QAHId,EAAQ,CAAC,CAAE,IAAK,CAAE,EAAGc,CAAM,EAAG,KAAM,GAAI,CAAC,EACzCgB,EAAO,CAAC,EAEH,EAAI,EAAG,EAAI9B,EAAM,OAAQ,EAAE,EAKhC,QAJIC,EAAOD,EAAM,GACbE,EAAMD,EAAK,IAAIA,EAAK,MAEpB8B,EAAO,OAAO,KAAK7B,CAAG,EACjBE,EAAI,EAAGA,EAAI2B,EAAK,OAAQ,EAAE3B,EAAG,CAClC,IAAIS,EAAMkB,EAAK3B,GACX4B,EAAM9B,EAAIW,GACV,OAAOmB,GAAQ,UAAYA,IAAQ,MAAQF,EAAK,QAAQE,CAAG,IAAM,KACjEhC,EAAM,KAAK,CAAE,IAAKE,EAAK,KAAMW,CAAI,CAAC,EAClCiB,EAAK,KAAKE,CAAG,EAErB,CAGJ,OAAAjC,GAAaC,CAAK,EAEXc,CACX,EAEImB,GAAW,SAAkB/B,EAAK,CAClC,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAG,IAAM,iBACnD,EAEIgC,GAAW,SAAkBhC,EAAK,CAClC,MAAI,CAACA,GAAO,OAAOA,GAAQ,SAChB,GAGJ,CAAC,EAAEA,EAAI,aAAeA,EAAI,YAAY,UAAYA,EAAI,YAAY,SAASA,CAAG,EACzF,EAEIiC,GAAU,SAAiBC,EAAGC,EAAG,CACjC,MAAO,CAAC,EAAE,OAAOD,EAAGC,CAAC,CACzB,EAEIC,GAAW,SAAkBN,EAAKO,EAAI,CACtC,GAAI5C,GAAQqC,CAAG,EAAG,CAEd,QADIQ,EAAS,CAAC,EACL,EAAI,EAAG,EAAIR,EAAI,OAAQ,GAAK,EACjCQ,EAAO,KAAKD,EAAGP,EAAI,EAAE,CAAC,EAE1B,OAAOQ,CACX,CACA,OAAOD,EAAGP,CAAG,CACjB,EAEAxC,GAAO,QAAU,CACb,cAAea,GACf,OAAQU,GACR,QAASoB,GACT,QAASN,GACT,OAAQb,GACR,OAAQK,GACR,SAAUa,GACV,SAAUD,GACV,SAAUK,GACV,MAAO9B,EACX,IC3PA,IAAAiC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAiB,KACjBC,GAAQ,KACRC,GAAU,KACVC,GAAM,OAAO,UAAU,eAEvBC,GAAwB,CACxB,SAAU,SAAkBC,EAAQ,CAChC,OAAOA,EAAS,IACpB,EACA,MAAO,QACP,QAAS,SAAiBA,EAAQC,EAAK,CACnC,OAAOD,EAAS,IAAMC,EAAM,GAChC,EACA,OAAQ,SAAgBD,EAAQ,CAC5B,OAAOA,CACX,CACJ,EAEIE,GAAU,MAAM,QAChBC,GAAQ,OAAO,UAAU,MACzBC,GAAO,MAAM,UAAU,KACvBC,GAAc,SAAUC,EAAKC,EAAc,CAC3CH,GAAK,MAAME,EAAKJ,GAAQK,CAAY,EAAIA,EAAe,CAACA,CAAY,CAAC,CACzE,EAEIC,GAAQ,KAAK,UAAU,YAEvBC,GAAgBZ,GAAQ,QACxBa,GAAW,CACX,eAAgB,GAChB,UAAW,GACX,QAAS,QACT,gBAAiB,GACjB,UAAW,IACX,OAAQ,GACR,QAASd,GAAM,OACf,iBAAkB,GAClB,OAAQa,GACR,UAAWZ,GAAQ,WAAWY,IAE9B,QAAS,GACT,cAAe,SAAuBE,EAAM,CACxC,OAAOH,GAAM,KAAKG,CAAI,CAC1B,EACA,UAAW,GACX,mBAAoB,EACxB,EAEIC,GAAwB,SAA+BC,EAAG,CAC1D,OAAO,OAAOA,GAAM,UACb,OAAOA,GAAM,UACb,OAAOA,GAAM,WACb,OAAOA,GAAM,UACb,OAAOA,GAAM,QACxB,EAEIC,GAAW,CAAC,EAEZC,GAAY,SAASA,EACrBC,EACAhB,EACAiB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACF,CAME,QALIC,EAAMf,EAENgB,EAAQF,EACRG,EAAO,EACPC,EAAW,IACPF,EAAQA,EAAM,IAAIlB,EAAQ,KAAO,QAAkB,CAACoB,GAAU,CAElE,IAAIC,EAAMH,EAAM,IAAIhB,CAAM,EAE1B,GADAiB,GAAQ,EACJ,OAAOE,EAAQ,IAAa,CAC5B,GAAIA,IAAQF,EACR,MAAM,IAAI,WAAW,qBAAqB,EAE1CC,EAAW,EAEnB,CACI,OAAOF,EAAM,IAAIlB,EAAQ,EAAM,MAC/BmB,EAAO,EAEf,CAeA,GAbI,OAAOX,GAAW,WAClBS,EAAMT,EAAOtB,EAAQ+B,CAAG,EACjBA,aAAe,KACtBA,EAAMN,EAAcM,CAAG,EAChBd,IAAwB,SAAWf,GAAQ6B,CAAG,IACrDA,EAAMnC,GAAM,SAASmC,EAAK,SAAUK,EAAO,CACvC,OAAIA,aAAiB,KACVX,EAAcW,CAAK,EAEvBA,CACX,CAAC,GAGDL,IAAQ,KAAM,CACd,GAAIZ,EACA,OAAOE,GAAW,CAACO,EAAmBP,EAAQrB,EAAQU,GAAS,QAASmB,EAAS,MAAOH,CAAM,EAAI1B,EAGtG+B,EAAM,EACV,CAEA,GAAInB,GAAsBmB,CAAG,GAAKnC,GAAM,SAASmC,CAAG,EAAG,CACnD,GAAIV,EAAS,CACT,IAAIgB,EAAWT,EAAmB5B,EAASqB,EAAQrB,EAAQU,GAAS,QAASmB,EAAS,MAAOH,CAAM,EACnG,GAAIT,IAAwB,SAAWW,EAAkB,CAGrD,QAFIU,EAAcnC,GAAM,KAAK,OAAO4B,CAAG,EAAG,GAAG,EACzCQ,EAAe,GACVC,EAAI,EAAGA,EAAIF,EAAY,OAAQ,EAAEE,EACtCD,IAAiBC,IAAM,EAAI,GAAK,KAAOb,EAAUN,EAAQiB,EAAYE,GAAI9B,GAAS,QAASmB,EAAS,QAASH,CAAM,CAAC,EAExH,MAAO,CAACC,EAAUU,CAAQ,GAAKnB,GAAkBhB,GAAQ6B,CAAG,GAAKO,EAAY,SAAW,EAAI,KAAO,IAAM,IAAMC,CAAY,CAC/H,CACA,MAAO,CAACZ,EAAUU,CAAQ,EAAI,IAAMV,EAAUN,EAAQU,EAAKrB,GAAS,QAASmB,EAAS,QAASH,CAAM,CAAC,CAAC,CAC3G,CACA,MAAO,CAACC,EAAU3B,CAAM,EAAI,IAAM2B,EAAU,OAAOI,CAAG,CAAC,CAAC,CAC5D,CAEA,IAAIU,EAAS,CAAC,EAEd,GAAI,OAAOV,EAAQ,IACf,OAAOU,EAGX,IAAIC,EACJ,GAAIzB,IAAwB,SAAWf,GAAQ6B,CAAG,EAE9CW,EAAU,CAAC,CAAE,MAAOX,EAAI,OAAS,EAAIA,EAAI,KAAK,GAAG,GAAK,KAAO,MAAe,CAAC,UACtE7B,GAAQoB,CAAM,EACrBoB,EAAUpB,MACP,CACH,IAAIqB,EAAO,OAAO,KAAKZ,CAAG,EAC1BW,EAAUnB,EAAOoB,EAAK,KAAKpB,CAAI,EAAIoB,CACvC,CAIA,QAFIC,EAAiB1B,GAAkBhB,GAAQ6B,CAAG,GAAKA,EAAI,SAAW,EAAI/B,EAAS,KAAOA,EAEjF6C,EAAI,EAAGA,EAAIH,EAAQ,OAAQ,EAAEG,EAAG,CACrC,IAAI5C,EAAMyC,EAAQG,GACdT,EAAQ,OAAOnC,GAAQ,UAAY,OAAOA,EAAI,MAAU,IAAcA,EAAI,MAAQ8B,EAAI9B,GAE1F,GAAI,EAAAmB,GAAagB,IAAU,MAI3B,KAAIU,EAAY5C,GAAQ6B,CAAG,EACrB,OAAOd,GAAwB,WAAaA,EAAoB2B,EAAgB3C,CAAG,EAAI2C,EACvFA,GAAkBpB,EAAY,IAAMvB,EAAM,IAAMA,EAAM,KAE5D6B,EAAY,IAAId,EAAQiB,CAAI,EAC5B,IAAIc,EAAmBpD,GAAe,EACtCoD,EAAiB,IAAIjC,GAAUgB,CAAW,EAC1CzB,GAAYoC,EAAQ1B,EAChBqB,EACAU,EACA7B,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAkB,CACJ,CAAC,EACL,CAEA,OAAON,CACX,EAEIO,GAA4B,SAAmCC,EAAM,CACrE,GAAI,CAACA,EACD,OAAOvC,GAGX,GAAIuC,EAAK,UAAY,MAAQ,OAAOA,EAAK,QAAY,KAAe,OAAOA,EAAK,SAAY,WACxF,MAAM,IAAI,UAAU,+BAA+B,EAGvD,IAAIpB,EAAUoB,EAAK,SAAWvC,GAAS,QACvC,GAAI,OAAOuC,EAAK,QAAY,KAAeA,EAAK,UAAY,SAAWA,EAAK,UAAY,aACpF,MAAM,IAAI,UAAU,mEAAmE,EAG3F,IAAIvB,EAAS7B,GAAQ,QACrB,GAAI,OAAOoD,EAAK,OAAW,IAAa,CACpC,GAAI,CAACnD,GAAI,KAAKD,GAAQ,WAAYoD,EAAK,MAAM,EACzC,MAAM,IAAI,UAAU,iCAAiC,EAEzDvB,EAASuB,EAAK,MAClB,CACA,IAAItB,EAAY9B,GAAQ,WAAW6B,GAE/BJ,EAASZ,GAAS,OACtB,OAAI,OAAOuC,EAAK,QAAW,YAAc/C,GAAQ+C,EAAK,MAAM,KACxD3B,EAAS2B,EAAK,QAGX,CACH,eAAgB,OAAOA,EAAK,gBAAmB,UAAYA,EAAK,eAAiBvC,GAAS,eAC1F,UAAW,OAAOuC,EAAK,UAAc,IAAcvC,GAAS,UAAY,CAAC,CAACuC,EAAK,UAC/E,QAASpB,EACT,gBAAiB,OAAOoB,EAAK,iBAAoB,UAAYA,EAAK,gBAAkBvC,GAAS,gBAC7F,UAAW,OAAOuC,EAAK,UAAc,IAAcvC,GAAS,UAAYuC,EAAK,UAC7E,OAAQ,OAAOA,EAAK,QAAW,UAAYA,EAAK,OAASvC,GAAS,OAClE,QAAS,OAAOuC,EAAK,SAAY,WAAaA,EAAK,QAAUvC,GAAS,QACtE,iBAAkB,OAAOuC,EAAK,kBAAqB,UAAYA,EAAK,iBAAmBvC,GAAS,iBAChG,OAAQY,EACR,OAAQI,EACR,UAAWC,EACX,cAAe,OAAOsB,EAAK,eAAkB,WAAaA,EAAK,cAAgBvC,GAAS,cACxF,UAAW,OAAOuC,EAAK,WAAc,UAAYA,EAAK,UAAYvC,GAAS,UAC3E,KAAM,OAAOuC,EAAK,MAAS,WAAaA,EAAK,KAAO,KACpD,mBAAoB,OAAOA,EAAK,oBAAuB,UAAYA,EAAK,mBAAqBvC,GAAS,kBAC1G,CACJ,EAEAhB,GAAO,QAAU,SAAUsB,EAAQiC,EAAM,CACrC,IAAIlB,EAAMf,EACNkC,EAAUF,GAA0BC,CAAI,EAExCP,EACApB,EAEA,OAAO4B,EAAQ,QAAW,YAC1B5B,EAAS4B,EAAQ,OACjBnB,EAAMT,EAAO,GAAIS,CAAG,GACb7B,GAAQgD,EAAQ,MAAM,IAC7B5B,EAAS4B,EAAQ,OACjBR,EAAUpB,GAGd,IAAIqB,EAAO,CAAC,EAEZ,GAAI,OAAOZ,GAAQ,UAAYA,IAAQ,KACnC,MAAO,GAGX,IAAIoB,EACAF,GAAQA,EAAK,eAAelD,GAC5BoD,EAAcF,EAAK,YACZA,GAAQ,YAAaA,EAC5BE,EAAcF,EAAK,QAAU,UAAY,SAEzCE,EAAc,UAGlB,IAAIlC,EAAsBlB,GAAsBoD,GAChD,GAAIF,GAAQ,mBAAoBA,GAAQ,OAAOA,EAAK,gBAAmB,UACnE,MAAM,IAAI,UAAU,+CAA+C,EAEvE,IAAI/B,EAAiBD,IAAwB,SAAWgC,GAAQA,EAAK,eAEhEP,IACDA,EAAU,OAAO,KAAKX,CAAG,GAGzBmB,EAAQ,MACRR,EAAQ,KAAKQ,EAAQ,IAAI,EAI7B,QADIpB,EAAcnC,GAAe,EACxB6C,EAAI,EAAGA,EAAIE,EAAQ,OAAQ,EAAEF,EAAG,CACrC,IAAIvC,EAAMyC,EAAQF,GAEdU,EAAQ,WAAanB,EAAI9B,KAAS,MAGtCI,GAAYsC,EAAM5B,GACdgB,EAAI9B,GACJA,EACAgB,EACAC,EACAgC,EAAQ,mBACRA,EAAQ,UACRA,EAAQ,OAASA,EAAQ,QAAU,KACnCA,EAAQ,OACRA,EAAQ,KACRA,EAAQ,UACRA,EAAQ,cACRA,EAAQ,OACRA,EAAQ,UACRA,EAAQ,iBACRA,EAAQ,QACRpB,CACJ,CAAC,CACL,CAEA,IAAIsB,EAAST,EAAK,KAAKO,EAAQ,SAAS,EACpClD,EAASkD,EAAQ,iBAAmB,GAAO,IAAM,GAErD,OAAIA,EAAQ,kBACJA,EAAQ,UAAY,aAEpBlD,GAAU,uBAGVA,GAAU,mBAIXoD,EAAO,OAAS,EAAIpD,EAASoD,EAAS,EACjD,ICrUA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAQ,KAERC,GAAM,OAAO,UAAU,eACvBC,GAAU,MAAM,QAEhBC,GAAW,CACX,UAAW,GACX,gBAAiB,GACjB,YAAa,GACb,WAAY,GACZ,QAAS,QACT,gBAAiB,GACjB,MAAO,GACP,QAASH,GAAM,OACf,UAAW,IACX,MAAO,EACP,kBAAmB,GACnB,yBAA0B,GAC1B,eAAgB,IAChB,YAAa,GACb,aAAc,GACd,mBAAoB,EACxB,EAEII,GAA2B,SAAUC,EAAK,CAC1C,OAAOA,EAAI,QAAQ,YAAa,SAAUC,EAAIC,EAAW,CACrD,OAAO,OAAO,aAAa,SAASA,EAAW,EAAE,CAAC,CACtD,CAAC,CACL,EAEIC,GAAkB,SAAUC,EAAKC,EAAS,CAC1C,OAAID,GAAO,OAAOA,GAAQ,UAAYC,EAAQ,OAASD,EAAI,QAAQ,GAAG,EAAI,GAC/DA,EAAI,MAAM,GAAG,EAGjBA,CACX,EAOIE,GAAc,sBAGdC,GAAkB,iBAElBC,GAAc,SAAgCR,EAAKK,EAAS,CAC5D,IAAII,EAAM,CAAC,EACPC,EAAWL,EAAQ,kBAAoBL,EAAI,QAAQ,MAAO,EAAE,EAAIA,EAChEW,EAAQN,EAAQ,iBAAmB,IAAW,OAAYA,EAAQ,eAClEO,EAAQF,EAAS,MAAML,EAAQ,UAAWM,CAAK,EAC/CE,EAAY,GACZC,EAEAC,EAAUV,EAAQ,QACtB,GAAIA,EAAQ,gBACR,IAAKS,EAAI,EAAGA,EAAIF,EAAM,OAAQ,EAAEE,EACxBF,EAAME,GAAG,QAAQ,OAAO,IAAM,IAC1BF,EAAME,KAAOP,GACbQ,EAAU,QACHH,EAAME,KAAOR,KACpBS,EAAU,cAEdF,EAAYC,EACZA,EAAIF,EAAM,QAKtB,IAAKE,EAAI,EAAGA,EAAIF,EAAM,OAAQ,EAAEE,EAC5B,GAAIA,IAAMD,EAGV,KAAIG,EAAOJ,EAAME,GAEbG,EAAmBD,EAAK,QAAQ,IAAI,EACpCE,EAAMD,IAAqB,GAAKD,EAAK,QAAQ,GAAG,EAAIC,EAAmB,EAEvEE,EAAKf,EACLc,IAAQ,IACRC,EAAMd,EAAQ,QAAQW,EAAMlB,GAAS,QAASiB,EAAS,KAAK,EAC5DX,EAAMC,EAAQ,mBAAqB,KAAO,KAE1Cc,EAAMd,EAAQ,QAAQW,EAAK,MAAM,EAAGE,CAAG,EAAGpB,GAAS,QAASiB,EAAS,KAAK,EAC1EX,EAAMT,GAAM,SACRQ,GAAgBa,EAAK,MAAME,EAAM,CAAC,EAAGb,CAAO,EAC5C,SAAUe,EAAY,CAClB,OAAOf,EAAQ,QAAQe,EAAYtB,GAAS,QAASiB,EAAS,OAAO,CACzE,CACJ,GAGAX,GAAOC,EAAQ,0BAA4BU,IAAY,eACvDX,EAAML,GAAyBK,CAAG,GAGlCY,EAAK,QAAQ,KAAK,EAAI,KACtBZ,EAAMP,GAAQO,CAAG,EAAI,CAACA,CAAG,EAAIA,GAG7BR,GAAI,KAAKa,EAAKU,CAAG,EACjBV,EAAIU,GAAOxB,GAAM,QAAQc,EAAIU,GAAMf,CAAG,EAEtCK,EAAIU,GAAOf,EAInB,OAAOK,CACX,EAEIY,GAAc,SAAUC,EAAOlB,EAAKC,EAASkB,EAAc,CAG3D,QAFIC,EAAOD,EAAenB,EAAMD,GAAgBC,EAAKC,CAAO,EAEnDS,EAAIQ,EAAM,OAAS,EAAGR,GAAK,EAAG,EAAEA,EAAG,CACxC,IAAIL,EACAgB,EAAOH,EAAMR,GAEjB,GAAIW,IAAS,MAAQpB,EAAQ,YACzBI,EAAM,CAAC,EAAE,OAAOe,CAAI,MACjB,CACHf,EAAMJ,EAAQ,aAAe,OAAO,OAAO,IAAI,EAAI,CAAC,EACpD,IAAIqB,EAAYD,EAAK,OAAO,CAAC,IAAM,KAAOA,EAAK,OAAOA,EAAK,OAAS,CAAC,IAAM,IAAMA,EAAK,MAAM,EAAG,EAAE,EAAIA,EACjGE,EAAQ,SAASD,EAAW,EAAE,EAC9B,CAACrB,EAAQ,aAAeqB,IAAc,GACtCjB,EAAM,CAAE,EAAGe,CAAK,EAEhB,CAAC,MAAMG,CAAK,GACTF,IAASC,GACT,OAAOC,CAAK,IAAMD,GAClBC,GAAS,GACRtB,EAAQ,aAAesB,GAAStB,EAAQ,YAE5CI,EAAM,CAAC,EACPA,EAAIkB,GAASH,GACNE,IAAc,cACrBjB,EAAIiB,GAAaF,EAEzB,CAEAA,EAAOf,CACX,CAEA,OAAOe,CACX,EAEII,GAAY,SAA8BC,EAAUzB,EAAKC,EAASkB,EAAc,CAChF,GAAI,EAACM,EAKL,KAAIV,EAAMd,EAAQ,UAAYwB,EAAS,QAAQ,cAAe,MAAM,EAAIA,EAIpEC,EAAW,eACXC,EAAQ,gBAIRC,EAAU3B,EAAQ,MAAQ,GAAKyB,EAAS,KAAKX,CAAG,EAChDc,EAASD,EAAUb,EAAI,MAAM,EAAGa,EAAQ,KAAK,EAAIb,EAIjDe,EAAO,CAAC,EACZ,GAAID,EAAQ,CAER,GAAI,CAAC5B,EAAQ,cAAgBT,GAAI,KAAK,OAAO,UAAWqC,CAAM,GACtD,CAAC5B,EAAQ,gBACT,OAIR6B,EAAK,KAAKD,CAAM,CACpB,CAKA,QADInB,EAAI,EACDT,EAAQ,MAAQ,IAAM2B,EAAUD,EAAM,KAAKZ,CAAG,KAAO,MAAQL,EAAIT,EAAQ,OAAO,CAEnF,GADAS,GAAK,EACD,CAACT,EAAQ,cAAgBT,GAAI,KAAK,OAAO,UAAWoC,EAAQ,GAAG,MAAM,EAAG,EAAE,CAAC,GACvE,CAAC3B,EAAQ,gBACT,OAGR6B,EAAK,KAAKF,EAAQ,EAAE,CACxB,CAIA,OAAIA,GACAE,EAAK,KAAK,IAAMf,EAAI,MAAMa,EAAQ,KAAK,EAAI,GAAG,EAG3CX,GAAYa,EAAM9B,EAAKC,EAASkB,CAAY,EACvD,EAEIY,GAAwB,SAA+BC,EAAM,CAC7D,GAAI,CAACA,EACD,OAAOtC,GAGX,GAAIsC,EAAK,UAAY,MAAQA,EAAK,UAAY,QAAa,OAAOA,EAAK,SAAY,WAC/E,MAAM,IAAI,UAAU,+BAA+B,EAGvD,GAAI,OAAOA,EAAK,QAAY,KAAeA,EAAK,UAAY,SAAWA,EAAK,UAAY,aACpF,MAAM,IAAI,UAAU,mEAAmE,EAE3F,IAAIrB,EAAU,OAAOqB,EAAK,QAAY,IAActC,GAAS,QAAUsC,EAAK,QAE5E,MAAO,CACH,UAAW,OAAOA,EAAK,UAAc,IAActC,GAAS,UAAY,CAAC,CAACsC,EAAK,UAC/E,gBAAiB,OAAOA,EAAK,iBAAoB,UAAYA,EAAK,gBAAkBtC,GAAS,gBAC7F,YAAa,OAAOsC,EAAK,aAAgB,UAAYA,EAAK,YAActC,GAAS,YACjF,WAAY,OAAOsC,EAAK,YAAe,SAAWA,EAAK,WAAatC,GAAS,WAC7E,QAASiB,EACT,gBAAiB,OAAOqB,EAAK,iBAAoB,UAAYA,EAAK,gBAAkBtC,GAAS,gBAC7F,MAAO,OAAOsC,EAAK,OAAU,UAAYA,EAAK,MAAQtC,GAAS,MAC/D,QAAS,OAAOsC,EAAK,SAAY,WAAaA,EAAK,QAAUtC,GAAS,QACtE,UAAW,OAAOsC,EAAK,WAAc,UAAYzC,GAAM,SAASyC,EAAK,SAAS,EAAIA,EAAK,UAAYtC,GAAS,UAE5G,MAAQ,OAAOsC,EAAK,OAAU,UAAYA,EAAK,QAAU,GAAS,CAACA,EAAK,MAAQtC,GAAS,MACzF,kBAAmBsC,EAAK,oBAAsB,GAC9C,yBAA0B,OAAOA,EAAK,0BAA6B,UAAYA,EAAK,yBAA2BtC,GAAS,yBACxH,eAAgB,OAAOsC,EAAK,gBAAmB,SAAWA,EAAK,eAAiBtC,GAAS,eACzF,YAAasC,EAAK,cAAgB,GAClC,aAAc,OAAOA,EAAK,cAAiB,UAAYA,EAAK,aAAetC,GAAS,aACpF,mBAAoB,OAAOsC,EAAK,oBAAuB,UAAYA,EAAK,mBAAqBtC,GAAS,kBAC1G,CACJ,EAEAJ,GAAO,QAAU,SAAUM,EAAKoC,EAAM,CAClC,IAAI/B,EAAU8B,GAAsBC,CAAI,EAExC,GAAIpC,IAAQ,IAAMA,IAAQ,MAAQ,OAAOA,EAAQ,IAC7C,OAAOK,EAAQ,aAAe,OAAO,OAAO,IAAI,EAAI,CAAC,EASzD,QANIgC,EAAU,OAAOrC,GAAQ,SAAWQ,GAAYR,EAAKK,CAAO,EAAIL,EAChES,EAAMJ,EAAQ,aAAe,OAAO,OAAO,IAAI,EAAI,CAAC,EAIpD6B,EAAO,OAAO,KAAKG,CAAO,EACrBvB,EAAI,EAAGA,EAAIoB,EAAK,OAAQ,EAAEpB,EAAG,CAClC,IAAIK,EAAMe,EAAKpB,GACXwB,EAASV,GAAUT,EAAKkB,EAAQlB,GAAMd,EAAS,OAAOL,GAAQ,QAAQ,EAC1ES,EAAMd,GAAM,MAAMc,EAAK6B,EAAQjC,CAAO,CAC1C,CAEA,OAAIA,EAAQ,cAAgB,GACjBI,EAGJd,GAAM,QAAQc,CAAG,CAC5B,ICtQA,IAAA8B,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAY,KACZC,GAAQ,KACRC,GAAU,KAEdH,GAAO,QAAU,CACb,QAASG,GACT,MAAOD,GACP,UAAWD,EACf,ICVA,IAAAG,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAcA,IAAIC,GAAQ,KACRC,GAAc,KACdC,GAAc,KACdC,GAAQ,KAAiB,wBAAwB,EACjDC,GAAY,KAAgB,aAAa,EACzCC,GAAO,KACPC,GAAS,KAMbP,GAAO,QAAUQ,GAMjB,IAAIC,GAAU,OAAO,OAAO,IAAI,EAUhC,SAASD,GAAYE,EAAS,CAC5B,IAAIC,EAAOD,GAAW,CAAC,EAGnBC,EAAK,WAAa,QACpBN,GAAU,6CAA6C,EAGzD,IAAIO,EAAWD,EAAK,WAAa,GAC7BE,EAAUF,EAAK,UAAY,GAC3BG,EAAQ,OAAOH,EAAK,OAAU,SAC9BV,GAAM,MAAMU,EAAK,OAAS,OAAO,EACjCA,EAAK,MACLI,EAAOJ,EAAK,MAAQ,oCACpBK,EAASL,EAAK,QAAU,GAE5B,GAAIK,IAAW,IAAS,OAAOA,GAAW,WACxC,MAAM,IAAI,UAAU,gCAAgC,EAItD,IAAIC,EAAaL,EACbM,GAAeP,CAAI,EACnBQ,GAAaR,CAAI,EAGjBS,EAAc,OAAOL,GAAS,WAC9BM,GAAYN,CAAI,EAChBA,EAEJ,SAASO,EAAOC,EAAM,CACpB,OAAOA,EAAK,OACRN,EAAWM,CAAI,EACf,CAAC,CACP,CAEA,OAAO,SAA2BC,EAAKC,EAAKC,EAAM,CAChD,GAAIF,EAAI,MAAO,CACbpB,GAAM,qBAAqB,EAC3BsB,EAAK,EACL,MACF,CAKA,GAHAF,EAAI,KAAOA,EAAI,MAAQ,CAAC,EAGpB,CAACjB,GAAO,QAAQiB,CAAG,EAAG,CACxBpB,GAAM,iBAAiB,EACvBsB,EAAK,EACL,MACF,CAKA,GAHAtB,GAAM,kBAAmBoB,EAAI,QAAQ,eAAe,EAGhD,CAACJ,EAAYI,CAAG,EAAG,CACrBpB,GAAM,cAAc,EACpBsB,EAAK,EACL,MACF,CAGA,IAAIC,EAAUC,GAAWJ,CAAG,GAAK,QACjC,GAAIG,IAAY,QAAS,CACvBvB,GAAM,iBAAiB,EACvBsB,EAAKvB,GAAY,IAAK,wBAA0BwB,EAAQ,YAAY,EAAI,IAAK,CAC3E,QAASA,EACT,KAAM,qBACR,CAAC,CAAC,EACF,MACF,CAGArB,GAAKkB,EAAKC,EAAKC,EAAMJ,EAAOlB,GAAO,CACjC,MAAOA,GACP,SAAUuB,EACV,QAASd,EACT,MAAOC,EACP,OAAQE,CACV,CAAC,CACH,CACF,CAQA,SAASE,GAAgBR,EAAS,CAChC,IAAImB,EAAiBnB,EAAQ,iBAAmB,OAC5CA,EAAQ,eACR,IACAY,EAAQQ,GAAO,IAAI,EAEvB,GAAI,MAAMD,CAAc,GAAKA,EAAiB,EAC5C,MAAM,IAAI,UAAU,iDAAiD,EAGvE,OAAI,SAASA,CAAc,IACzBA,EAAiBA,EAAiB,GAG7B,SAAqBN,EAAM,CAChC,IAAIQ,EAAaC,GAAeT,EAAMM,CAAc,EAEpD,GAAIE,IAAe,OACjB,MAAA3B,GAAM,qBAAqB,EACrBD,GAAY,IAAK,sBAAuB,CAC5C,KAAM,qBACR,CAAC,EAGH,IAAI8B,EAAa,KAAK,IAAI,IAAKF,CAAU,EAEzC,OAAA3B,GAAM,4BAA4B,EAC3BkB,EAAMC,EAAM,CACjB,gBAAiB,GACjB,WAAYU,EACZ,MAAO,IACP,eAAgBJ,CAClB,CAAC,CACH,CACF,CASA,SAASD,GAAYJ,EAAK,CACxB,GAAI,CACF,OAAQtB,GAAY,MAAMsB,CAAG,EAAE,WAAW,SAAW,IAAI,YAAY,CACvE,MAAE,CACA,MACF,CACF,CAUA,SAASQ,GAAgBT,EAAMT,EAAO,CAIpC,QAHIoB,EAAQ,EACRC,EAAQ,GAEJA,EAAQZ,EAAK,QAAQ,IAAKY,CAAK,KAAO,IAI5C,GAHAD,IACAC,IAEID,IAAUpB,EACZ,OAIJ,OAAOoB,CACT,CAUA,SAASJ,GAAQM,EAAM,CACrB,IAAIC,EAAM5B,GAAQ2B,GAElB,GAAIC,IAAQ,OACV,OAAOA,EAAI,MAIb,OAAQD,EAAM,CACZ,IAAK,KACHC,EAAM,KACN,MACF,IAAK,cACHA,EAAM,QAAQ,eACd,KACJ,CAGA,OAAA5B,GAAQ2B,GAAQC,EAETA,EAAI,KACb,CAQA,SAASlB,GAAcT,EAAS,CAC9B,IAAImB,EAAiBnB,EAAQ,iBAAmB,OAC5CA,EAAQ,eACR,IACAY,EAAQQ,GAAO,aAAa,EAEhC,GAAI,MAAMD,CAAc,GAAKA,EAAiB,EAC5C,MAAM,IAAI,UAAU,iDAAiD,EAGvE,OAAI,SAASA,CAAc,IACzBA,EAAiBA,EAAiB,GAG7B,SAAqBN,EAAM,CAChC,IAAIQ,EAAaC,GAAeT,EAAMM,CAAc,EAEpD,GAAIE,IAAe,OACjB,MAAA3B,GAAM,qBAAqB,EACrBD,GAAY,IAAK,sBAAuB,CAC5C,KAAM,qBACR,CAAC,EAGH,OAAAC,GAAM,mBAAmB,EAClBkB,EAAMC,EAAM,OAAW,OAAW,CAAE,QAASM,CAAe,CAAC,CACtE,CACF,CASA,SAASR,GAAaN,EAAM,CAC1B,OAAO,SAAoBS,EAAK,CAC9B,OAAO,QAAQjB,GAAOiB,EAAKT,CAAI,CAAC,CAClC,CACF,IC3RA,IAAAuB,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAaA,IAAIC,GAAY,KAAgB,aAAa,EAOzCC,GAAU,OAAO,OAAO,IAAI,EAgBhCH,GAAUC,GAAO,QAAUC,GAAU,SAASE,GAC5C,wDAAwD,EAO1D,OAAO,eAAeJ,GAAS,OAAQ,CACrC,aAAc,GACd,WAAY,GACZ,IAAKK,GAAmB,MAAM,CAChC,CAAC,EAOD,OAAO,eAAeL,GAAS,MAAO,CACpC,aAAc,GACd,WAAY,GACZ,IAAKK,GAAmB,KAAK,CAC/B,CAAC,EAOD,OAAO,eAAeL,GAAS,OAAQ,CACrC,aAAc,GACd,WAAY,GACZ,IAAKK,GAAmB,MAAM,CAChC,CAAC,EAOD,OAAO,eAAeL,GAAS,aAAc,CAC3C,aAAc,GACd,WAAY,GACZ,IAAKK,GAAmB,YAAY,CACtC,CAAC,EAWD,SAASD,GAAYE,EAAS,CAE5B,IAAIC,EAAO,OAAO,OAAOD,GAAW,KAAM,CACxC,KAAM,CACJ,aAAc,GACd,WAAY,GACZ,MAAO,OACP,SAAU,EACZ,CACF,CAAC,EAEGE,EAAcR,GAAQ,WAAWO,CAAI,EACrCE,EAAQT,GAAQ,KAAKO,CAAI,EAE7B,OAAO,SAAqBG,EAAKC,EAAKC,EAAM,CAC1CH,EAAMC,EAAKC,EAAK,SAAUE,EAAK,CAC7B,GAAIA,EAAK,OAAOD,EAAKC,CAAG,EACxBL,EAAYE,EAAKC,EAAKC,CAAI,CAC5B,CAAC,CACH,CACF,CAOA,SAASP,GAAoBS,EAAM,CACjC,OAAO,UAAgB,CACrB,OAAOC,GAAWD,CAAI,CACxB,CACF,CAOA,SAASC,GAAYC,EAAY,CAC/B,IAAIC,EAASd,GAAQa,GAErB,GAAIC,IAAW,OACb,OAAOA,EAIT,OAAQD,EAAY,CAClB,IAAK,OACHC,EAAS,KACT,MACF,IAAK,MACHA,EAAS,KACT,MACF,IAAK,OACHA,EAAS,KACT,MACF,IAAK,aACHA,EAAS,KACT,KACJ,CAGA,OAAQd,GAAQa,GAAcC,CAChC,IC3JA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAcAA,GAAO,QAAUC,GAOjB,IAAIC,GAAiB,OAAO,UAAU,eAYtC,SAASD,GAAME,EAAMC,EAAKC,EAAU,CAClC,GAAI,CAACF,EACH,MAAM,IAAI,UAAU,2BAA2B,EAGjD,GAAI,CAACC,EACH,MAAM,IAAI,UAAU,0BAA0B,EAGhD,OAAIC,IAAa,SAEfA,EAAW,IAGb,OAAO,oBAAoBD,CAAG,EAAE,QAAQ,SAAgCE,EAAM,CAC5E,GAAI,GAACD,GAAYH,GAAe,KAAKC,EAAMG,CAAI,GAM/C,KAAIC,EAAa,OAAO,yBAAyBH,EAAKE,CAAI,EAC1D,OAAO,eAAeH,EAAMG,EAAMC,CAAU,EAC9C,CAAC,EAEMJ,CACT,IC3DA,IAAAK,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAIA,IAAIC,GAAI,IACJC,GAAID,GAAI,GACRE,GAAID,GAAI,GACRE,GAAID,GAAI,GACRE,GAAID,GAAI,OAgBZJ,GAAO,QAAU,SAASM,EAAKC,EAAS,CACtCA,EAAUA,GAAW,CAAC,EACtB,IAAIC,EAAO,OAAOF,EAClB,GAAIE,IAAS,UAAYF,EAAI,OAAS,EACpC,OAAOG,GAAMH,CAAG,EACX,GAAIE,IAAS,UAAY,MAAMF,CAAG,IAAM,GAC7C,OAAOC,EAAQ,KAAOG,GAAQJ,CAAG,EAAIK,GAASL,CAAG,EAEnD,MAAM,IAAI,MACR,wDACE,KAAK,UAAUA,CAAG,CACtB,CACF,EAUA,SAASG,GAAMG,EAAK,CAElB,GADAA,EAAM,OAAOA,CAAG,EACZ,EAAAA,EAAI,OAAS,KAGjB,KAAIC,EAAQ,wHAAwH,KAClID,CACF,EACA,GAAI,EAACC,EAGL,KAAIC,EAAI,WAAWD,EAAM,EAAE,EACvBL,GAAQK,EAAM,IAAM,MAAM,YAAY,EAC1C,OAAQL,EAAM,CACZ,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,OAAOM,EAAIT,GACb,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOS,EAAIV,GACb,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,OAAOU,EAAIX,GACb,IAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOW,EAAIZ,GACb,IAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOY,EAAIb,GACb,IAAK,eACL,IAAK,cACL,IAAK,QACL,IAAK,OACL,IAAK,KACH,OAAOa,EACT,QACE,MACJ,GACF,CAUA,SAASH,GAASI,EAAI,CACpB,OAAIA,GAAMX,GACD,KAAK,MAAMW,EAAKX,EAAC,EAAI,IAE1BW,GAAMZ,GACD,KAAK,MAAMY,EAAKZ,EAAC,EAAI,IAE1BY,GAAMb,GACD,KAAK,MAAMa,EAAKb,EAAC,EAAI,IAE1Ba,GAAMd,GACD,KAAK,MAAMc,EAAKd,EAAC,EAAI,IAEvBc,EAAK,IACd,CAUA,SAASL,GAAQK,EAAI,CACnB,OAAOC,GAAOD,EAAIX,GAAG,KAAK,GACxBY,GAAOD,EAAIZ,GAAG,MAAM,GACpBa,GAAOD,EAAIb,GAAG,QAAQ,GACtBc,GAAOD,EAAId,GAAG,QAAQ,GACtBc,EAAK,KACT,CAMA,SAASC,GAAOD,EAAID,EAAGG,EAAM,CAC3B,GAAI,EAAAF,EAAKD,GAGT,OAAIC,EAAKD,EAAI,IACJ,KAAK,MAAMC,EAAKD,CAAC,EAAI,IAAMG,EAE7B,KAAK,KAAKF,EAAKD,CAAC,EAAI,IAAMG,EAAO,GAC1C,ICvJA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAQAD,GAAUC,GAAO,QAAUC,GAAY,MAAQA,GAAY,QAAaA,GACxEF,GAAQ,OAASG,GACjBH,GAAQ,QAAUI,GAClBJ,GAAQ,OAASK,GACjBL,GAAQ,QAAUM,GAClBN,GAAQ,SAAW,KAMnBA,GAAQ,MAAQ,CAAC,EACjBA,GAAQ,MAAQ,CAAC,EAQjBA,GAAQ,WAAa,CAAC,EAMtB,IAAIO,GASJ,SAASC,GAAYC,EAAW,CAC9B,IAAIC,EAAO,EAAGC,EAEd,IAAKA,KAAKF,EACRC,GAAUA,GAAQ,GAAKA,EAAQD,EAAU,WAAWE,CAAC,EACrDD,GAAQ,EAGV,OAAOV,GAAQ,OAAO,KAAK,IAAIU,CAAI,EAAIV,GAAQ,OAAO,OACxD,CAUA,SAASE,GAAYO,EAAW,CAE9B,SAASG,GAAQ,CAEf,GAAI,EAACA,EAAM,QAEX,KAAIC,EAAOD,EAGPE,EAAO,CAAC,IAAI,KACZC,EAAKD,GAAQP,IAAYO,GAC7BD,EAAK,KAAOE,EACZF,EAAK,KAAON,GACZM,EAAK,KAAOC,EACZP,GAAWO,EAIX,QADIE,EAAO,IAAI,MAAM,UAAU,MAAM,EAC5BL,EAAI,EAAGA,EAAIK,EAAK,OAAQL,IAC/BK,EAAKL,GAAK,UAAUA,GAGtBK,EAAK,GAAKhB,GAAQ,OAAOgB,EAAK,EAAE,EAEf,OAAOA,EAAK,IAAzB,UAEFA,EAAK,QAAQ,IAAI,EAInB,IAAIC,EAAQ,EACZD,EAAK,GAAKA,EAAK,GAAG,QAAQ,gBAAiB,SAASE,EAAOC,EAAQ,CAEjE,GAAID,IAAU,KAAM,OAAOA,EAC3BD,IACA,IAAIG,EAAYpB,GAAQ,WAAWmB,GACnC,GAAmB,OAAOC,GAAtB,WAAiC,CACnC,IAAIC,EAAML,EAAKC,GACfC,EAAQE,EAAU,KAAKP,EAAMQ,CAAG,EAGhCL,EAAK,OAAOC,EAAO,CAAC,EACpBA,GACF,CACA,OAAOC,CACT,CAAC,EAGDlB,GAAQ,WAAW,KAAKa,EAAMG,CAAI,EAElC,IAAIM,EAAQV,EAAM,KAAOZ,GAAQ,KAAO,QAAQ,IAAI,KAAK,OAAO,EAChEsB,EAAM,MAAMT,EAAMG,CAAI,EACxB,CAEA,OAAAJ,EAAM,UAAYH,EAClBG,EAAM,QAAUZ,GAAQ,QAAQS,CAAS,EACzCG,EAAM,UAAYZ,GAAQ,UAAU,EACpCY,EAAM,MAAQJ,GAAYC,CAAS,EAGhB,OAAOT,GAAQ,MAA9B,YACFA,GAAQ,KAAKY,CAAK,EAGbA,CACT,CAUA,SAASP,GAAOkB,EAAY,CAC1BvB,GAAQ,KAAKuB,CAAU,EAEvBvB,GAAQ,MAAQ,CAAC,EACjBA,GAAQ,MAAQ,CAAC,EAKjB,QAHIwB,GAAS,OAAOD,GAAe,SAAWA,EAAa,IAAI,MAAM,QAAQ,EACzEE,EAAMD,EAAM,OAEPb,EAAI,EAAGA,EAAIc,EAAKd,IACnB,CAACa,EAAMb,KACXY,EAAaC,EAAMb,GAAG,QAAQ,MAAO,KAAK,EACtCY,EAAW,KAAO,IACpBvB,GAAQ,MAAM,KAAK,IAAI,OAAO,IAAMuB,EAAW,OAAO,CAAC,EAAI,GAAG,CAAC,EAE/DvB,GAAQ,MAAM,KAAK,IAAI,OAAO,IAAMuB,EAAa,GAAG,CAAC,EAG3D,CAQA,SAASnB,IAAU,CACjBJ,GAAQ,OAAO,EAAE,CACnB,CAUA,SAASM,GAAQoB,EAAM,CACrB,IAAIf,EAAGc,EACP,IAAKd,EAAI,EAAGc,EAAMzB,GAAQ,MAAM,OAAQW,EAAIc,EAAKd,IAC/C,GAAIX,GAAQ,MAAMW,GAAG,KAAKe,CAAI,EAC5B,MAAO,GAGX,IAAKf,EAAI,EAAGc,EAAMzB,GAAQ,MAAM,OAAQW,EAAIc,EAAKd,IAC/C,GAAIX,GAAQ,MAAMW,GAAG,KAAKe,CAAI,EAC5B,MAAO,GAGX,MAAO,EACT,CAUA,SAASvB,GAAOkB,EAAK,CACnB,OAAIA,aAAe,MAAcA,EAAI,OAASA,EAAI,QAC3CA,CACT,ICzMA,IAAAM,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAMAD,GAAUC,GAAO,QAAU,KAC3BD,GAAQ,IAAME,GACdF,GAAQ,WAAaG,GACrBH,GAAQ,KAAOI,GACfJ,GAAQ,KAAOK,GACfL,GAAQ,UAAYM,GACpBN,GAAQ,QAAyB,OAAO,OAAtB,KACe,OAAO,OAAO,QAA7B,IACE,OAAO,QAAQ,MACfO,GAAa,EAMjCP,GAAQ,OAAS,CACf,gBACA,cACA,YACA,aACA,aACA,SACF,EAUA,SAASM,IAAY,CAInB,OAAI,OAAO,OAAW,KAAe,OAAO,SAAW,OAAO,QAAQ,OAAS,WACtE,GAKD,OAAO,SAAa,KAAe,SAAS,iBAAmB,SAAS,gBAAgB,OAAS,SAAS,gBAAgB,MAAM,kBAErI,OAAO,OAAW,KAAe,OAAO,UAAY,OAAO,QAAQ,SAAY,OAAO,QAAQ,WAAa,OAAO,QAAQ,QAG1H,OAAO,UAAc,KAAe,UAAU,WAAa,UAAU,UAAU,YAAY,EAAE,MAAM,gBAAgB,GAAK,SAAS,OAAO,GAAI,EAAE,GAAK,IAEnJ,OAAO,UAAc,KAAe,UAAU,WAAa,UAAU,UAAU,YAAY,EAAE,MAAM,oBAAoB,CAC5H,CAMAN,GAAQ,WAAW,EAAI,SAASQ,EAAG,CACjC,GAAI,CACF,OAAO,KAAK,UAAUA,CAAC,CACzB,OAASC,EAAP,CACA,MAAO,+BAAiCA,EAAI,OAC9C,CACF,EASA,SAASN,GAAWO,EAAM,CACxB,IAAIJ,EAAY,KAAK,UASrB,GAPAI,EAAK,IAAMJ,EAAY,KAAO,IAC1B,KAAK,WACJA,EAAY,MAAQ,KACrBI,EAAK,IACJJ,EAAY,MAAQ,KACrB,IAAMN,GAAQ,SAAS,KAAK,IAAI,EAEhC,EAACM,EAEL,KAAIK,EAAI,UAAY,KAAK,MACzBD,EAAK,OAAO,EAAG,EAAGC,EAAG,gBAAgB,EAKrC,IAAIC,EAAQ,EACRC,EAAQ,EACZH,EAAK,GAAG,QAAQ,cAAe,SAASI,EAAO,CAChCA,IAAT,OACJF,IACaE,IAAT,OAGFD,EAAQD,GAEZ,CAAC,EAEDF,EAAK,OAAOG,EAAO,EAAGF,CAAC,EACzB,CASA,SAAST,IAAM,CAGb,OAAoB,OAAO,SAApB,UACF,QAAQ,KACR,SAAS,UAAU,MAAM,KAAK,QAAQ,IAAK,QAAS,SAAS,CACpE,CASA,SAASE,GAAKW,EAAY,CACxB,GAAI,CACUA,GAAR,KACFf,GAAQ,QAAQ,WAAW,OAAO,EAElCA,GAAQ,QAAQ,MAAQe,CAE5B,MAAE,CAAU,CACd,CASA,SAASV,IAAO,CACd,IAAIW,EACJ,GAAI,CACFA,EAAIhB,GAAQ,QAAQ,KACtB,MAAE,CAAU,CAGZ,MAAI,CAACgB,GAAK,OAAO,QAAY,KAAe,QAAS,UACnDA,EAAI,QAAQ,IAAI,OAGXA,CACT,CAMAhB,GAAQ,OAAOK,GAAK,CAAC,EAarB,SAASE,IAAe,CACtB,GAAI,CACF,OAAO,OAAO,YAChB,MAAE,CAAW,CACf,ICxLA,IAAAU,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAIA,IAAIC,GAAM,QAAQ,OACdC,GAAO,QAAQ,QAQnBH,GAAUC,GAAO,QAAU,KAC3BD,GAAQ,KAAOI,GACfJ,GAAQ,IAAMK,GACdL,GAAQ,WAAaM,GACrBN,GAAQ,KAAOO,GACfP,GAAQ,KAAOQ,GACfR,GAAQ,UAAYS,GAMpBT,GAAQ,OAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAQlCA,GAAQ,YAAc,OAAO,KAAK,QAAQ,GAAG,EAAE,OAAO,SAAUU,EAAK,CACnE,MAAO,WAAW,KAAKA,CAAG,CAC5B,CAAC,EAAE,OAAO,SAAUC,EAAKD,EAAK,CAE5B,IAAIE,EAAOF,EACR,UAAU,CAAC,EACX,YAAY,EACZ,QAAQ,YAAa,SAAUG,EAAGC,EAAG,CAAE,OAAOA,EAAE,YAAY,CAAE,CAAC,EAG9DC,EAAM,QAAQ,IAAIL,GACtB,MAAI,2BAA2B,KAAKK,CAAG,EAAGA,EAAM,GACvC,6BAA6B,KAAKA,CAAG,EAAGA,EAAM,GAC9CA,IAAQ,OAAQA,EAAM,KAC1BA,EAAM,OAAOA,CAAG,EAErBJ,EAAIC,GAAQG,EACLJ,CACT,EAAG,CAAC,CAAC,EASL,IAAIK,GAAK,SAAS,QAAQ,IAAI,SAAU,EAAE,GAAK,EAErCA,KAAN,GAAkBA,KAAN,GACdb,GAAK,UAAU,UAAU,CAAC,EAAG,yKAAyK,EAAE,EAG1M,IAAIc,GAAeD,KAAN,EAAW,QAAQ,OACbA,KAAN,EAAW,QAAQ,OACnBE,GAA0BF,EAAE,EAMzC,SAASP,IAAY,CACnB,MAAO,WAAYT,GAAQ,YACvB,QAAQA,GAAQ,YAAY,MAAM,EAClCE,GAAI,OAAOc,EAAE,CACnB,CAMAhB,GAAQ,WAAW,EAAI,SAASmB,EAAG,CACjC,YAAK,YAAY,OAAS,KAAK,UACxBhB,GAAK,QAAQgB,EAAG,KAAK,WAAW,EACpC,MAAM;AAAA,CAAI,EAAE,IAAI,SAASC,EAAK,CAC7B,OAAOA,EAAI,KAAK,CAClB,CAAC,EAAE,KAAK,GAAG,CACf,EAMApB,GAAQ,WAAW,EAAI,SAASmB,EAAG,CACjC,YAAK,YAAY,OAAS,KAAK,UACxBhB,GAAK,QAAQgB,EAAG,KAAK,WAAW,CACzC,EAQA,SAASb,GAAWe,EAAM,CACxB,IAAIC,EAAO,KAAK,UACZb,EAAY,KAAK,UAErB,GAAIA,EAAW,CACb,IAAIc,EAAI,KAAK,MACTC,EAAS,WAAeD,EAAI,MAAQD,EAAO,WAE/CD,EAAK,GAAKG,EAASH,EAAK,GAAG,MAAM;AAAA,CAAI,EAAE,KAAK;AAAA,EAAOG,CAAM,EACzDH,EAAK,KAAK,SAAaE,EAAI,KAAOvB,GAAQ,SAAS,KAAK,IAAI,EAAI,SAAW,CAC7E,MACEqB,EAAK,GAAK,IAAI,KAAK,EAAE,YAAY,EAC7B,IAAMC,EAAO,IAAMD,EAAK,EAEhC,CAMA,SAAShB,IAAM,CACb,OAAOY,GAAO,MAAMd,GAAK,OAAO,MAAMA,GAAM,SAAS,EAAI;AAAA,CAAI,CAC/D,CASA,SAASI,GAAKkB,EAAY,CACZA,GAAR,KAGF,OAAO,QAAQ,IAAI,MAEnB,QAAQ,IAAI,MAAQA,CAExB,CASA,SAASjB,IAAO,CACd,OAAO,QAAQ,IAAI,KACrB,CASA,SAASU,GAA2BF,EAAI,CACtC,IAAIC,EACAS,EAAW,QAAQ,QAAQ,UAAU,EAIzC,OAAQA,EAAS,gBAAgBV,CAAE,EAAG,CACpC,IAAK,MACHC,EAAS,IAAIf,GAAI,YAAYc,CAAE,EAC/BC,EAAO,MAAQ,MAIXA,EAAO,SAAWA,EAAO,QAAQ,OACnCA,EAAO,QAAQ,MAAM,EAEvB,MAEF,IAAK,OACH,IAAIU,EAAK,QAAQ,MACjBV,EAAS,IAAIU,EAAG,gBAAgBX,EAAI,CAAE,UAAW,EAAM,CAAC,EACxDC,EAAO,MAAQ,KACf,MAEF,IAAK,OACL,IAAK,MACH,IAAIW,EAAM,QAAQ,OAClBX,EAAS,IAAIW,EAAI,OAAO,CACtB,GAAIZ,EACJ,SAAU,GACV,SAAU,EACZ,CAAC,EAMDC,EAAO,SAAW,GAClBA,EAAO,KAAO,KACdA,EAAO,MAAQ,OAIXA,EAAO,SAAWA,EAAO,QAAQ,OACnCA,EAAO,QAAQ,MAAM,EAEvB,MAEF,QAEE,MAAM,IAAI,MAAM,yCAAyC,CAC7D,CAGA,OAAAA,EAAO,GAAKD,EAEZC,EAAO,SAAW,GAEXA,CACT,CASA,SAASb,GAAMyB,EAAO,CACpBA,EAAM,YAAc,CAAC,EAGrB,QADIC,EAAO,OAAO,KAAK9B,GAAQ,WAAW,EACjC+B,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAC/BF,EAAM,YAAYC,EAAKC,IAAM/B,GAAQ,YAAY8B,EAAKC,GAE1D,CAMA/B,GAAQ,OAAOQ,GAAK,CAAC,ICvPrB,IAAAwB,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAKI,OAAO,QAAY,KAAe,QAAQ,OAAS,WACrDA,GAAO,QAAU,KAEjBA,GAAO,QAAU,OCRnB,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAaAA,GAAO,QAAUC,GAQjB,IAAIC,GAAsB,2GAOtBC,GAAkC,2EAOlCC,GAAmC,aAoBvC,SAASH,GAAWI,EAAK,CACvB,OAAO,OAAOA,CAAG,EACd,QAAQF,GAAiCC,EAAgC,EACzE,QAAQF,GAAqB,SAAS,CAC3C,IC3DA,IAAAI,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAeA,IAAIC,GAAkB,UAOtBD,GAAO,QAAUE,GAUjB,SAASA,GAAWC,EAAQ,CAC1B,IAAIC,EAAM,GAAKD,EACXE,EAAQJ,GAAgB,KAAKG,CAAG,EAEpC,GAAI,CAACC,EACH,OAAOD,EAGT,IAAIE,EACAC,EAAO,GACPC,EAAQ,EACRC,EAAY,EAEhB,IAAKD,EAAQH,EAAM,MAAOG,EAAQJ,EAAI,OAAQI,IAAS,CACrD,OAAQJ,EAAI,WAAWI,CAAK,EAAG,CAC7B,IAAK,IACHF,EAAS,SACT,MACF,IAAK,IACHA,EAAS,QACT,MACF,IAAK,IACHA,EAAS,QACT,MACF,IAAK,IACHA,EAAS,OACT,MACF,IAAK,IACHA,EAAS,OACT,MACF,QACE,QACJ,CAEIG,IAAcD,IAChBD,GAAQH,EAAI,UAAUK,EAAWD,CAAK,GAGxCC,EAAYD,EAAQ,EACpBD,GAAQD,CACV,CAEA,OAAOG,IAAcD,EACjBD,EAAOH,EAAI,UAAUK,EAAWD,CAAK,EACrCD,CACN,IC7EA,IAAAG,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAcA,IAAIC,GAAM,QAAQ,OACdC,GAAQD,GAAI,MACZE,GAAMF,GAAI,IAOdD,GAAO,QAAUI,GACjBJ,GAAO,QAAQ,SAAWK,GAU1B,SAASD,GAAUE,EAAK,CACtB,IAAIL,EAAMK,EAAI,IAEd,GAAIL,IAAQ,OAKZ,KAAIM,EAASD,EAAI,WAEjB,OAAIE,GAAMP,EAAKM,CAAM,EAEZA,GAITA,EAASE,GAAUR,CAAG,EACtBM,EAAO,KAAON,EAENK,EAAI,WAAaC,GAC3B,CAUA,SAASF,GAAaC,EAAK,CACzB,IAAIL,EAAMK,EAAI,YAEd,GAAI,OAAOL,GAAQ,SAEjB,OAAOG,GAASE,CAAG,EAGrB,IAAIC,EAASD,EAAI,mBAEjB,OAAIE,GAAMP,EAAKM,CAAM,EAEZA,GAITA,EAASE,GAAUR,CAAG,EACtBM,EAAO,KAAON,EAENK,EAAI,mBAAqBC,EACnC,CAUA,SAASE,GAAWC,EAAK,CACvB,GAAI,OAAOA,GAAQ,UAAYA,EAAI,WAAW,CAAC,IAAM,GACnD,OAAOR,GAAMQ,CAAG,EAUlB,QAPIC,EAAWD,EACXE,EAAQ,KACRC,EAAS,KAKJ,EAAI,EAAG,EAAIH,EAAI,OAAQ,IAC9B,OAAQA,EAAI,WAAW,CAAC,EAAG,CACzB,IAAK,IACCG,IAAW,OACbF,EAAWD,EAAI,UAAU,EAAG,CAAC,EAC7BE,EAAQF,EAAI,UAAU,EAAI,CAAC,EAC3BG,EAASH,EAAI,UAAU,CAAC,GAE1B,MACF,IAAK,GACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,OACH,OAAOR,GAAMQ,CAAG,CACpB,CAGF,IAAIT,EAAME,KAAQ,OACd,IAAIA,GACJ,CAAC,EAEL,OAAAF,EAAI,KAAOS,EACXT,EAAI,KAAOS,EACXT,EAAI,SAAWU,EAEXE,IAAW,OACbZ,EAAI,MAAQW,EACZX,EAAI,OAASY,GAGRZ,CACT,CAWA,SAASO,GAAOP,EAAKa,EAAW,CAC9B,OAAO,OAAOA,GAAc,UAC1BA,IAAc,OACbX,KAAQ,QAAaW,aAAqBX,KAC3CW,EAAU,OAASb,CACvB,IC7JA,IAAAc,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAaA,IAAIC,GAAQ,KAAiB,cAAc,EACvCC,GAAY,KACZC,GAAa,KACbC,GAAa,KACbC,GAAW,KACXC,GAAW,KACXC,GAAS,KAOTC,GAAsB,WACtBC,GAAiB,MAGjBC,GAAQ,OAAO,cAAiB,WAChC,aACA,SAAUC,EAAI,CAAE,QAAQ,SAASA,EAAG,KAAK,MAAMA,EAAI,SAAS,CAAC,CAAE,EAC/DC,GAAaR,GAAW,WAS5B,SAASS,GAAoBC,EAAS,CACpC,IAAIC,EAAOZ,GAAWW,CAAO,EAC1B,QAAQL,GAAgB,MAAM,EAC9B,QAAQD,GAAqB,SAAS,EAEzC,MAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAOKO,EAAO;AAAA;AAAA;AAAA,CAGrB,CAOAf,GAAO,QAAUgB,GAYjB,SAASA,GAAcC,EAAKC,EAAKC,EAAS,CACxC,IAAIC,EAAOD,GAAW,CAAC,EAGnBE,EAAMD,EAAK,KAAO,QAAQ,IAAI,UAAY,cAG1CE,EAAUF,EAAK,QAEnB,OAAO,SAAUG,EAAK,CACpB,IAAIC,EACAC,EACAC,EAGJ,GAAI,CAACH,GAAOI,GAAYT,CAAG,EAAG,CAC5BjB,GAAM,+BAA+B,EACrC,MACF,CA+BA,GA5BIsB,GAEFG,EAASE,GAAmBL,CAAG,EAE3BG,IAAW,OAEbA,EAASG,GAAsBX,CAAG,EAGlCM,EAAUM,GAAgBP,CAAG,EAI/BE,EAAMM,GAAgBR,EAAKG,EAAQL,CAAG,IAGtCK,EAAS,IACTD,EAAM,UAAYR,EAAI,OAAS,IAAMf,GAAU8B,GAAgBf,CAAG,CAAC,GAGrEhB,GAAM,aAAcyB,CAAM,EAGtBH,GAAOD,GACTZ,GAAMY,EAASC,EAAKN,EAAKC,CAAG,EAI1BS,GAAYT,CAAG,EAAG,CACpBjB,GAAM,+BAAgCyB,CAAM,EAC5CT,EAAI,OAAO,QAAQ,EACnB,MACF,CAGAgB,GAAKhB,EAAKC,EAAKQ,EAAQF,EAASC,CAAG,CACrC,CACF,CAUA,SAASK,GAAiBP,EAAK,CAC7B,GAAI,GAACA,EAAI,SAAW,OAAOA,EAAI,SAAY,UAO3C,SAHIC,EAAU,OAAO,OAAO,IAAI,EAC5BU,EAAO,OAAO,KAAKX,EAAI,OAAO,EAEzBY,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAAK,CACpC,IAAIC,EAAMF,EAAKC,GACfX,EAAQY,GAAOb,EAAI,QAAQa,EAC7B,CAEA,OAAOZ,EACT,CAYA,SAASO,GAAiBR,EAAKG,EAAQL,EAAK,CAC1C,IAAII,EAEJ,OAAIJ,IAAQ,eAEVI,EAAMF,EAAI,MAGN,CAACE,GAAO,OAAOF,EAAI,UAAa,aAClCE,EAAMF,EAAI,SAAS,IAIhBE,GAAOnB,GAAS,QAAQoB,EACjC,CAUA,SAASE,GAAoBL,EAAK,CAEhC,GAAI,OAAOA,EAAI,QAAW,UAAYA,EAAI,QAAU,KAAOA,EAAI,OAAS,IACtE,OAAOA,EAAI,OAIb,GAAI,OAAOA,EAAI,YAAe,UAAYA,EAAI,YAAc,KAAOA,EAAI,WAAa,IAClF,OAAOA,EAAI,UAIf,CAaA,SAASS,GAAiBf,EAAK,CAC7B,GAAI,CACF,OAAOZ,GAAS,SAASY,CAAG,EAAE,QAChC,MAAE,CACA,MAAO,UACT,CACF,CAUA,SAASY,GAAuBX,EAAK,CACnC,IAAIQ,EAASR,EAAI,WAGjB,OAAI,OAAOQ,GAAW,UAAYA,EAAS,KAAOA,EAAS,OACzDA,EAAS,KAGJA,CACT,CAUA,SAASC,GAAaT,EAAK,CACzB,OAAO,OAAOA,EAAI,aAAgB,UAC9B,QAAQA,EAAI,OAAO,EACnBA,EAAI,WACV,CAaA,SAASe,GAAMhB,EAAKC,EAAKQ,EAAQF,EAASV,EAAS,CACjD,SAASuB,GAAS,CAEhB,IAAItB,EAAOF,GAAmBC,CAAO,EAsBrC,GAnBAI,EAAI,WAAaQ,EACjBR,EAAI,cAAgBZ,GAAS,QAAQoB,GAGrCR,EAAI,aAAa,kBAAkB,EACnCA,EAAI,aAAa,kBAAkB,EACnCA,EAAI,aAAa,eAAe,EAGhCoB,GAAWpB,EAAKM,CAAO,EAGvBN,EAAI,UAAU,0BAA2B,oBAAoB,EAC7DA,EAAI,UAAU,yBAA0B,SAAS,EAGjDA,EAAI,UAAU,eAAgB,0BAA0B,EACxDA,EAAI,UAAU,iBAAkB,OAAO,WAAWH,EAAM,MAAM,CAAC,EAE3DE,EAAI,SAAW,OAAQ,CACzBC,EAAI,IAAI,EACR,MACF,CAEAA,EAAI,IAAIH,EAAM,MAAM,CACtB,CAEA,GAAIH,GAAWK,CAAG,EAAG,CACnBoB,EAAM,EACN,MACF,CAGA9B,GAAOU,CAAG,EAGVb,GAAWa,EAAKoB,CAAK,EACrBpB,EAAI,OAAO,CACb,CAUA,SAASqB,GAAYpB,EAAKM,EAAS,CACjC,GAAI,EAACA,EAKL,QADIU,EAAO,OAAO,KAAKV,CAAO,EACrBW,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAAK,CACpC,IAAIC,EAAMF,EAAKC,GACfjB,EAAI,UAAUkB,EAAKZ,EAAQY,EAAI,CACjC,CACF,IC/UA,IAAAG,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAIA,IAAIC,GAAI,IACJC,GAAID,GAAI,GACRE,GAAID,GAAI,GACRE,GAAID,GAAI,GACRE,GAAID,GAAI,OAgBZJ,GAAO,QAAU,SAASM,EAAKC,EAAS,CACtCA,EAAUA,GAAW,CAAC,EACtB,IAAIC,EAAO,OAAOF,EAClB,GAAIE,IAAS,UAAYF,EAAI,OAAS,EACpC,OAAOG,GAAMH,CAAG,EACX,GAAIE,IAAS,UAAY,MAAMF,CAAG,IAAM,GAC7C,OAAOC,EAAQ,KAAOG,GAAQJ,CAAG,EAAIK,GAASL,CAAG,EAEnD,MAAM,IAAI,MACR,wDACE,KAAK,UAAUA,CAAG,CACtB,CACF,EAUA,SAASG,GAAMG,EAAK,CAElB,GADAA,EAAM,OAAOA,CAAG,EACZ,EAAAA,EAAI,OAAS,KAGjB,KAAIC,EAAQ,wHAAwH,KAClID,CACF,EACA,GAAI,EAACC,EAGL,KAAIC,EAAI,WAAWD,EAAM,EAAE,EACvBL,GAAQK,EAAM,IAAM,MAAM,YAAY,EAC1C,OAAQL,EAAM,CACZ,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,OAAOM,EAAIT,GACb,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOS,EAAIV,GACb,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,OAAOU,EAAIX,GACb,IAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOW,EAAIZ,GACb,IAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOY,EAAIb,GACb,IAAK,eACL,IAAK,cACL,IAAK,QACL,IAAK,OACL,IAAK,KACH,OAAOa,EACT,QACE,MACJ,GACF,CAUA,SAASH,GAASI,EAAI,CACpB,OAAIA,GAAMX,GACD,KAAK,MAAMW,EAAKX,EAAC,EAAI,IAE1BW,GAAMZ,GACD,KAAK,MAAMY,EAAKZ,EAAC,EAAI,IAE1BY,GAAMb,GACD,KAAK,MAAMa,EAAKb,EAAC,EAAI,IAE1Ba,GAAMd,GACD,KAAK,MAAMc,EAAKd,EAAC,EAAI,IAEvBc,EAAK,IACd,CAUA,SAASL,GAAQK,EAAI,CACnB,OAAOC,GAAOD,EAAIX,GAAG,KAAK,GACxBY,GAAOD,EAAIZ,GAAG,MAAM,GACpBa,GAAOD,EAAIb,GAAG,QAAQ,GACtBc,GAAOD,EAAId,GAAG,QAAQ,GACtBc,EAAK,KACT,CAMA,SAASC,GAAOD,EAAID,EAAGG,EAAM,CAC3B,GAAI,EAAAF,EAAKD,GAGT,OAAIC,EAAKD,EAAI,IACJ,KAAK,MAAMC,EAAKD,CAAC,EAAI,IAAMG,EAE7B,KAAK,KAAKF,EAAKD,CAAC,EAAI,IAAMG,EAAO,GAC1C,ICvJA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAQAD,GAAUC,GAAO,QAAUC,GAAY,MAAQA,GAAY,QAAaA,GACxEF,GAAQ,OAASG,GACjBH,GAAQ,QAAUI,GAClBJ,GAAQ,OAASK,GACjBL,GAAQ,QAAUM,GAClBN,GAAQ,SAAW,KAMnBA,GAAQ,MAAQ,CAAC,EACjBA,GAAQ,MAAQ,CAAC,EAQjBA,GAAQ,WAAa,CAAC,EAMtB,IAAIO,GASJ,SAASC,GAAYC,EAAW,CAC9B,IAAIC,EAAO,EAAGC,EAEd,IAAKA,KAAKF,EACRC,GAAUA,GAAQ,GAAKA,EAAQD,EAAU,WAAWE,CAAC,EACrDD,GAAQ,EAGV,OAAOV,GAAQ,OAAO,KAAK,IAAIU,CAAI,EAAIV,GAAQ,OAAO,OACxD,CAUA,SAASE,GAAYO,EAAW,CAE9B,SAASG,GAAQ,CAEf,GAAI,EAACA,EAAM,QAEX,KAAIC,EAAOD,EAGPE,EAAO,CAAC,IAAI,KACZC,EAAKD,GAAQP,IAAYO,GAC7BD,EAAK,KAAOE,EACZF,EAAK,KAAON,GACZM,EAAK,KAAOC,EACZP,GAAWO,EAIX,QADIE,EAAO,IAAI,MAAM,UAAU,MAAM,EAC5BL,EAAI,EAAGA,EAAIK,EAAK,OAAQL,IAC/BK,EAAKL,GAAK,UAAUA,GAGtBK,EAAK,GAAKhB,GAAQ,OAAOgB,EAAK,EAAE,EAEf,OAAOA,EAAK,IAAzB,UAEFA,EAAK,QAAQ,IAAI,EAInB,IAAIC,EAAQ,EACZD,EAAK,GAAKA,EAAK,GAAG,QAAQ,gBAAiB,SAASE,EAAOC,EAAQ,CAEjE,GAAID,IAAU,KAAM,OAAOA,EAC3BD,IACA,IAAIG,EAAYpB,GAAQ,WAAWmB,GACnC,GAAmB,OAAOC,GAAtB,WAAiC,CACnC,IAAIC,EAAML,EAAKC,GACfC,EAAQE,EAAU,KAAKP,EAAMQ,CAAG,EAGhCL,EAAK,OAAOC,EAAO,CAAC,EACpBA,GACF,CACA,OAAOC,CACT,CAAC,EAGDlB,GAAQ,WAAW,KAAKa,EAAMG,CAAI,EAElC,IAAIM,EAAQV,EAAM,KAAOZ,GAAQ,KAAO,QAAQ,IAAI,KAAK,OAAO,EAChEsB,EAAM,MAAMT,EAAMG,CAAI,EACxB,CAEA,OAAAJ,EAAM,UAAYH,EAClBG,EAAM,QAAUZ,GAAQ,QAAQS,CAAS,EACzCG,EAAM,UAAYZ,GAAQ,UAAU,EACpCY,EAAM,MAAQJ,GAAYC,CAAS,EAGhB,OAAOT,GAAQ,MAA9B,YACFA,GAAQ,KAAKY,CAAK,EAGbA,CACT,CAUA,SAASP,GAAOkB,EAAY,CAC1BvB,GAAQ,KAAKuB,CAAU,EAEvBvB,GAAQ,MAAQ,CAAC,EACjBA,GAAQ,MAAQ,CAAC,EAKjB,QAHIwB,GAAS,OAAOD,GAAe,SAAWA,EAAa,IAAI,MAAM,QAAQ,EACzEE,EAAMD,EAAM,OAEPb,EAAI,EAAGA,EAAIc,EAAKd,IACnB,CAACa,EAAMb,KACXY,EAAaC,EAAMb,GAAG,QAAQ,MAAO,KAAK,EACtCY,EAAW,KAAO,IACpBvB,GAAQ,MAAM,KAAK,IAAI,OAAO,IAAMuB,EAAW,OAAO,CAAC,EAAI,GAAG,CAAC,EAE/DvB,GAAQ,MAAM,KAAK,IAAI,OAAO,IAAMuB,EAAa,GAAG,CAAC,EAG3D,CAQA,SAASnB,IAAU,CACjBJ,GAAQ,OAAO,EAAE,CACnB,CAUA,SAASM,GAAQoB,EAAM,CACrB,IAAIf,EAAGc,EACP,IAAKd,EAAI,EAAGc,EAAMzB,GAAQ,MAAM,OAAQW,EAAIc,EAAKd,IAC/C,GAAIX,GAAQ,MAAMW,GAAG,KAAKe,CAAI,EAC5B,MAAO,GAGX,IAAKf,EAAI,EAAGc,EAAMzB,GAAQ,MAAM,OAAQW,EAAIc,EAAKd,IAC/C,GAAIX,GAAQ,MAAMW,GAAG,KAAKe,CAAI,EAC5B,MAAO,GAGX,MAAO,EACT,CAUA,SAASvB,GAAOkB,EAAK,CACnB,OAAIA,aAAe,MAAcA,EAAI,OAASA,EAAI,QAC3CA,CACT,ICzMA,IAAAM,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAMAD,GAAUC,GAAO,QAAU,KAC3BD,GAAQ,IAAME,GACdF,GAAQ,WAAaG,GACrBH,GAAQ,KAAOI,GACfJ,GAAQ,KAAOK,GACfL,GAAQ,UAAYM,GACpBN,GAAQ,QAAyB,OAAO,OAAtB,KACe,OAAO,OAAO,QAA7B,IACE,OAAO,QAAQ,MACfO,GAAa,EAMjCP,GAAQ,OAAS,CACf,gBACA,cACA,YACA,aACA,aACA,SACF,EAUA,SAASM,IAAY,CAInB,OAAI,OAAO,OAAW,KAAe,OAAO,SAAW,OAAO,QAAQ,OAAS,WACtE,GAKD,OAAO,SAAa,KAAe,SAAS,iBAAmB,SAAS,gBAAgB,OAAS,SAAS,gBAAgB,MAAM,kBAErI,OAAO,OAAW,KAAe,OAAO,UAAY,OAAO,QAAQ,SAAY,OAAO,QAAQ,WAAa,OAAO,QAAQ,QAG1H,OAAO,UAAc,KAAe,UAAU,WAAa,UAAU,UAAU,YAAY,EAAE,MAAM,gBAAgB,GAAK,SAAS,OAAO,GAAI,EAAE,GAAK,IAEnJ,OAAO,UAAc,KAAe,UAAU,WAAa,UAAU,UAAU,YAAY,EAAE,MAAM,oBAAoB,CAC5H,CAMAN,GAAQ,WAAW,EAAI,SAASQ,EAAG,CACjC,GAAI,CACF,OAAO,KAAK,UAAUA,CAAC,CACzB,OAASC,EAAP,CACA,MAAO,+BAAiCA,EAAI,OAC9C,CACF,EASA,SAASN,GAAWO,EAAM,CACxB,IAAIJ,EAAY,KAAK,UASrB,GAPAI,EAAK,IAAMJ,EAAY,KAAO,IAC1B,KAAK,WACJA,EAAY,MAAQ,KACrBI,EAAK,IACJJ,EAAY,MAAQ,KACrB,IAAMN,GAAQ,SAAS,KAAK,IAAI,EAEhC,EAACM,EAEL,KAAIK,EAAI,UAAY,KAAK,MACzBD,EAAK,OAAO,EAAG,EAAGC,EAAG,gBAAgB,EAKrC,IAAIC,EAAQ,EACRC,EAAQ,EACZH,EAAK,GAAG,QAAQ,cAAe,SAASI,EAAO,CAChCA,IAAT,OACJF,IACaE,IAAT,OAGFD,EAAQD,GAEZ,CAAC,EAEDF,EAAK,OAAOG,EAAO,EAAGF,CAAC,EACzB,CASA,SAAST,IAAM,CAGb,OAAoB,OAAO,SAApB,UACF,QAAQ,KACR,SAAS,UAAU,MAAM,KAAK,QAAQ,IAAK,QAAS,SAAS,CACpE,CASA,SAASE,GAAKW,EAAY,CACxB,GAAI,CACUA,GAAR,KACFf,GAAQ,QAAQ,WAAW,OAAO,EAElCA,GAAQ,QAAQ,MAAQe,CAE5B,MAAE,CAAU,CACd,CASA,SAASV,IAAO,CACd,IAAIW,EACJ,GAAI,CACFA,EAAIhB,GAAQ,QAAQ,KACtB,MAAE,CAAU,CAGZ,MAAI,CAACgB,GAAK,OAAO,QAAY,KAAe,QAAS,UACnDA,EAAI,QAAQ,IAAI,OAGXA,CACT,CAMAhB,GAAQ,OAAOK,GAAK,CAAC,EAarB,SAASE,IAAe,CACtB,GAAI,CACF,OAAO,OAAO,YAChB,MAAE,CAAW,CACf,ICxLA,IAAAU,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAIA,IAAIC,GAAM,QAAQ,OACdC,GAAO,QAAQ,QAQnBH,GAAUC,GAAO,QAAU,KAC3BD,GAAQ,KAAOI,GACfJ,GAAQ,IAAMK,GACdL,GAAQ,WAAaM,GACrBN,GAAQ,KAAOO,GACfP,GAAQ,KAAOQ,GACfR,GAAQ,UAAYS,GAMpBT,GAAQ,OAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAQlCA,GAAQ,YAAc,OAAO,KAAK,QAAQ,GAAG,EAAE,OAAO,SAAUU,EAAK,CACnE,MAAO,WAAW,KAAKA,CAAG,CAC5B,CAAC,EAAE,OAAO,SAAUC,EAAKD,EAAK,CAE5B,IAAIE,EAAOF,EACR,UAAU,CAAC,EACX,YAAY,EACZ,QAAQ,YAAa,SAAUG,EAAGC,EAAG,CAAE,OAAOA,EAAE,YAAY,CAAE,CAAC,EAG9DC,EAAM,QAAQ,IAAIL,GACtB,MAAI,2BAA2B,KAAKK,CAAG,EAAGA,EAAM,GACvC,6BAA6B,KAAKA,CAAG,EAAGA,EAAM,GAC9CA,IAAQ,OAAQA,EAAM,KAC1BA,EAAM,OAAOA,CAAG,EAErBJ,EAAIC,GAAQG,EACLJ,CACT,EAAG,CAAC,CAAC,EASL,IAAIK,GAAK,SAAS,QAAQ,IAAI,SAAU,EAAE,GAAK,EAErCA,KAAN,GAAkBA,KAAN,GACdb,GAAK,UAAU,UAAU,CAAC,EAAG,yKAAyK,EAAE,EAG1M,IAAIc,GAAeD,KAAN,EAAW,QAAQ,OACbA,KAAN,EAAW,QAAQ,OACnBE,GAA0BF,EAAE,EAMzC,SAASP,IAAY,CACnB,MAAO,WAAYT,GAAQ,YACvB,QAAQA,GAAQ,YAAY,MAAM,EAClCE,GAAI,OAAOc,EAAE,CACnB,CAMAhB,GAAQ,WAAW,EAAI,SAASmB,EAAG,CACjC,YAAK,YAAY,OAAS,KAAK,UACxBhB,GAAK,QAAQgB,EAAG,KAAK,WAAW,EACpC,MAAM;AAAA,CAAI,EAAE,IAAI,SAASC,EAAK,CAC7B,OAAOA,EAAI,KAAK,CAClB,CAAC,EAAE,KAAK,GAAG,CACf,EAMApB,GAAQ,WAAW,EAAI,SAASmB,EAAG,CACjC,YAAK,YAAY,OAAS,KAAK,UACxBhB,GAAK,QAAQgB,EAAG,KAAK,WAAW,CACzC,EAQA,SAASb,GAAWe,EAAM,CACxB,IAAIC,EAAO,KAAK,UACZb,EAAY,KAAK,UAErB,GAAIA,EAAW,CACb,IAAIc,EAAI,KAAK,MACTC,EAAS,WAAeD,EAAI,MAAQD,EAAO,WAE/CD,EAAK,GAAKG,EAASH,EAAK,GAAG,MAAM;AAAA,CAAI,EAAE,KAAK;AAAA,EAAOG,CAAM,EACzDH,EAAK,KAAK,SAAaE,EAAI,KAAOvB,GAAQ,SAAS,KAAK,IAAI,EAAI,SAAW,CAC7E,MACEqB,EAAK,GAAK,IAAI,KAAK,EAAE,YAAY,EAC7B,IAAMC,EAAO,IAAMD,EAAK,EAEhC,CAMA,SAAShB,IAAM,CACb,OAAOY,GAAO,MAAMd,GAAK,OAAO,MAAMA,GAAM,SAAS,EAAI;AAAA,CAAI,CAC/D,CASA,SAASI,GAAKkB,EAAY,CACZA,GAAR,KAGF,OAAO,QAAQ,IAAI,MAEnB,QAAQ,IAAI,MAAQA,CAExB,CASA,SAASjB,IAAO,CACd,OAAO,QAAQ,IAAI,KACrB,CASA,SAASU,GAA2BF,EAAI,CACtC,IAAIC,EACAS,EAAW,QAAQ,QAAQ,UAAU,EAIzC,OAAQA,EAAS,gBAAgBV,CAAE,EAAG,CACpC,IAAK,MACHC,EAAS,IAAIf,GAAI,YAAYc,CAAE,EAC/BC,EAAO,MAAQ,MAIXA,EAAO,SAAWA,EAAO,QAAQ,OACnCA,EAAO,QAAQ,MAAM,EAEvB,MAEF,IAAK,OACH,IAAIU,EAAK,QAAQ,MACjBV,EAAS,IAAIU,EAAG,gBAAgBX,EAAI,CAAE,UAAW,EAAM,CAAC,EACxDC,EAAO,MAAQ,KACf,MAEF,IAAK,OACL,IAAK,MACH,IAAIW,EAAM,QAAQ,OAClBX,EAAS,IAAIW,EAAI,OAAO,CACtB,GAAIZ,EACJ,SAAU,GACV,SAAU,EACZ,CAAC,EAMDC,EAAO,SAAW,GAClBA,EAAO,KAAO,KACdA,EAAO,MAAQ,OAIXA,EAAO,SAAWA,EAAO,QAAQ,OACnCA,EAAO,QAAQ,MAAM,EAEvB,MAEF,QAEE,MAAM,IAAI,MAAM,yCAAyC,CAC7D,CAGA,OAAAA,EAAO,GAAKD,EAEZC,EAAO,SAAW,GAEXA,CACT,CASA,SAASb,GAAMyB,EAAO,CACpBA,EAAM,YAAc,CAAC,EAGrB,QADIC,EAAO,OAAO,KAAK9B,GAAQ,WAAW,EACjC+B,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAC/BF,EAAM,YAAYC,EAAKC,IAAM/B,GAAQ,YAAY8B,EAAKC,GAE1D,CAMA/B,GAAQ,OAAOQ,GAAK,CAAC,ICvPrB,IAAAwB,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAKI,OAAO,QAAY,KAAe,QAAQ,OAAS,WACrDA,GAAO,QAAU,KAEjBA,GAAO,QAAU,OCRnB,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAKAA,GAAO,QAAUC,GAUjB,SAASC,GAAkBC,EAAOC,EAAQC,EAAO,CAC/C,QAASC,EAAI,EAAGA,EAAIH,EAAM,OAAQG,IAAK,CACrC,IAAIC,EAAQJ,EAAMG,GAEdD,EAAQ,GAAK,MAAM,QAAQE,CAAK,EAClCL,GAAiBK,EAAOH,EAAQC,EAAQ,CAAC,EAEzCD,EAAO,KAAKG,CAAK,CAErB,CAEA,OAAOH,CACT,CASA,SAASI,GAAgBL,EAAOC,EAAQ,CACtC,QAASE,EAAI,EAAGA,EAAIH,EAAM,OAAQG,IAAK,CACrC,IAAIC,EAAQJ,EAAMG,GAEd,MAAM,QAAQC,CAAK,EACrBC,GAAeD,EAAOH,CAAM,EAE5BA,EAAO,KAAKG,CAAK,CAErB,CAEA,OAAOH,CACT,CASA,SAASH,GAAcE,EAAOE,EAAO,CACnC,OAAIA,GAAS,KACJG,GAAeL,EAAO,CAAC,CAAC,EAG1BD,GAAiBC,EAAO,CAAC,EAAGE,CAAK,CAC1C,IC/DA,IAAAI,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAIAA,GAAO,QAAUC,GAKjB,IAAIC,GAAwB,YAkB5B,SAASD,GAAaE,EAAMC,EAAMC,EAAS,CACzCA,EAAUA,GAAW,CAAC,EACtBD,EAAOA,GAAQ,CAAC,EAChB,IAAIE,EAASD,EAAQ,OACjBE,EAAMF,EAAQ,MAAQ,GACtBG,EAAQH,EAAQ,UAAY,GAAK,IACjCI,EAAc,EACdC,EAAaN,EAAK,OAClBO,EAAI,EACJC,EAAO,EACPC,EAEJ,GAAIV,aAAgB,OAAQ,CAC1B,KAAOU,EAAIX,GAAsB,KAAKC,EAAK,MAAM,GAC/CC,EAAK,KAAK,CACR,KAAMQ,IACN,SAAU,GACV,OAAQC,EAAE,KACZ,CAAC,EAGH,OAAOV,CACT,CAEA,GAAI,MAAM,QAAQA,CAAI,EAIpB,OAAAA,EAAOA,EAAK,IAAI,SAAUW,EAAO,CAC/B,OAAOb,GAAaa,EAAOV,EAAMC,CAAO,EAAE,MAC5C,CAAC,EAEM,IAAI,OAAO,MAAQF,EAAK,KAAK,GAAG,EAAI,IAAKK,CAAK,EAyCvD,IAtCAL,GAAQ,IAAMA,GAAQG,EAAS,GAAKH,EAAKA,EAAK,OAAS,KAAO,IAAM,IAAM,OACvE,QAAQ,QAAS,MAAM,EACvB,QAAQ,YAAa,MAAM,EAC3B,QAAQ,4CAA6C,SAAUY,EAAOC,EAAOC,EAAQC,EAAKC,EAASC,EAAMC,EAAUC,EAAQ,CAC1HN,EAAQA,GAAS,GACjBC,EAASA,GAAU,GACnBE,EAAUA,GAAW,SAAWF,EAAS,OACzCI,EAAWA,GAAY,GAEvBjB,EAAK,KAAK,CACR,KAAMc,EACN,SAAU,CAAC,CAACG,EACZ,OAAQC,EAASb,CACnB,CAAC,EAED,IAAIc,EAAS,IACRF,EAAW,GAAKL,GACjB,MACAC,GAAUI,EAAWL,EAAQ,IAAMG,GAClCC,EAAO,WAAaH,EAAS,UAAY,IAC1C,IACAI,EAEJ,OAAAZ,GAAec,EAAO,OAASR,EAAM,OAE9BQ,CACT,CAAC,EACA,QAAQ,MAAO,SAAUH,EAAMI,EAAO,CAGrC,QAFIC,EAAMrB,EAAK,OAERqB,KAAQf,GAAcN,EAAKqB,GAAK,OAASD,GAC9CpB,EAAKqB,GAAK,QAAU,EAGtB,MAAO,MACT,CAAC,EAGIZ,EAAIX,GAAsB,KAAKC,CAAI,GAAG,CAI3C,QAHIuB,EAAc,EACdF,EAAQX,EAAE,MAEPV,EAAK,OAAO,EAAEqB,CAAK,IAAM,MAC9BE,IAIEA,EAAc,IAAM,KAIpBhB,EAAaC,IAAMP,EAAK,QAAUA,EAAKM,EAAaC,GAAG,OAASE,EAAE,QACpET,EAAK,OAAOM,EAAaC,EAAG,EAAG,CAC7B,KAAMC,IACN,SAAU,GACV,OAAQC,EAAE,KACZ,CAAC,EAGHF,IACF,CAGA,OAAAR,GAASI,EAAM,IAAOJ,EAAKA,EAAK,OAAS,KAAO,IAAM,GAAK,YAEpD,IAAI,OAAOA,EAAMK,CAAK,CAC/B,IChIA,IAAAmB,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAeA,IAAIC,GAAa,KACbC,GAAQ,KAAiB,sBAAsB,EAO/CC,GAAiB,OAAO,UAAU,eAOtCH,GAAO,QAAUI,GAEjB,SAASA,GAAMC,EAAMC,EAASC,EAAI,CAChC,GAAI,EAAE,gBAAgBH,IACpB,OAAO,IAAIA,GAAMC,EAAMC,EAASC,CAAE,EAGpCL,GAAM,SAAUG,CAAI,EACpB,IAAIG,EAAOF,GAAW,CAAC,EAEvB,KAAK,OAASC,EACd,KAAK,KAAOA,EAAG,MAAQ,cACvB,KAAK,OAAS,OACd,KAAK,KAAO,OACZ,KAAK,OAASN,GAAWI,EAAM,KAAK,KAAO,CAAC,EAAGG,CAAI,EAGnD,KAAK,OAAO,UAAYH,IAAS,IACjC,KAAK,OAAO,WAAaA,IAAS,KAAOG,EAAK,MAAQ,EACxD,CAYAJ,GAAM,UAAU,aAAe,SAAsBK,EAAOC,EAAKC,EAAKC,EAAM,CAC1E,IAAIL,EAAK,KAAK,OAEd,GAAIA,EAAG,SAAW,EAEhB,OAAOK,EAAKH,CAAK,EAGnB,GAAI,CACFF,EAAGE,EAAOC,EAAKC,EAAKC,CAAI,CAC1B,OAASC,EAAP,CACAD,EAAKC,CAAG,CACV,CACF,EAWAT,GAAM,UAAU,eAAiB,SAAgBM,EAAKC,EAAKC,EAAM,CAC/D,IAAIL,EAAK,KAAK,OAEd,GAAIA,EAAG,OAAS,EAEd,OAAOK,EAAK,EAGd,GAAI,CACFL,EAAGG,EAAKC,EAAKC,CAAI,CACnB,OAASC,EAAP,CACAD,EAAKC,CAAG,CACV,CACF,EAWAT,GAAM,UAAU,MAAQ,SAAeC,EAAM,CAC3C,IAAIS,EAEJ,GAAIT,GAAQ,KAAM,CAEhB,GAAI,KAAK,OAAO,WACd,YAAK,OAAS,CAAC,EACf,KAAK,KAAO,GACL,GAIT,GAAI,KAAK,OAAO,UACd,YAAK,OAAS,CAAC,EAAKU,GAAaV,CAAI,CAAC,EACtC,KAAK,KAAOA,EACL,GAITS,EAAQ,KAAK,OAAO,KAAKT,CAAI,CAC/B,CAEA,GAAI,CAACS,EACH,YAAK,OAAS,OACd,KAAK,KAAO,OACL,GAIT,KAAK,OAAS,CAAC,EACf,KAAK,KAAOA,EAAM,GAKlB,QAHIE,EAAO,KAAK,KACZC,EAAS,KAAK,OAETC,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAAK,CACrC,IAAIC,EAAMH,EAAKE,EAAI,GACfE,EAAOD,EAAI,KACXE,EAAMN,GAAaD,EAAMI,EAAE,GAE3BG,IAAQ,QAAa,CAAElB,GAAe,KAAKc,EAAQG,CAAI,KACzDH,EAAOG,GAAQC,EAEnB,CAEA,MAAO,EACT,EAUA,SAASN,GAAaM,EAAK,CACzB,GAAI,OAAOA,GAAQ,UAAYA,EAAI,SAAW,EAC5C,OAAOA,EAGT,GAAI,CACF,OAAO,mBAAmBA,CAAG,CAC/B,OAASR,EAAP,CACA,MAAIA,aAAe,WACjBA,EAAI,QAAU,2BAA8BQ,EAAM,IAClDR,EAAI,OAASA,EAAI,WAAa,KAG1BA,CACR,CACF,ICpLA,IAAAS,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAcA,IAAIC,GAAO,QAAQ,QAOnBD,GAAO,QAAUE,GAAsB,GAAKC,GAAoB,EAOhE,SAASD,IAAwB,CAC/B,OAAOD,GAAK,SAAWA,GAAK,QAAQ,IAAI,SAAyBG,EAAQ,CACvE,OAAOA,EAAO,YAAY,CAC5B,CAAC,CACH,CAOA,SAASD,IAAsB,CAC7B,MAAO,CACL,MACA,OACA,MACA,OACA,SACA,UACA,QACA,OACA,OACA,QACA,OACA,QACA,WACA,YACA,SACA,SACA,aACA,WACA,QACA,WACA,SACA,YACA,cACA,QACA,SACA,SACF,CACF,ICpEA,IAAAE,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAeA,IAAIC,GAAQ,KAAiB,sBAAsB,EAC/CC,GAAU,KACVC,GAAQ,KACRC,GAAU,KAOVC,GAAQ,MAAM,UAAU,MACxBC,GAAW,OAAO,UAAU,SAOhCN,GAAO,QAAUO,GASjB,SAASA,GAAMC,EAAM,CACnB,KAAK,KAAOA,EACZ,KAAK,MAAQ,CAAC,EAEdP,GAAM,SAAUO,CAAI,EAGpB,KAAK,QAAU,CAAC,CAClB,CAOAD,GAAM,UAAU,gBAAkB,SAAyBE,EAAQ,CACjE,GAAI,KAAK,QAAQ,KACf,MAAO,GAGT,IAAIC,EAAOD,EAAO,YAAY,EAE9B,OAAIC,IAAS,QAAU,CAAC,KAAK,QAAQ,OACnCA,EAAO,OAGF,QAAQ,KAAK,QAAQA,EAAK,CACnC,EAOAH,GAAM,UAAU,SAAW,UAAoB,CAC7C,IAAIH,EAAU,OAAO,KAAK,KAAK,OAAO,EAGlC,KAAK,QAAQ,KAAO,CAAC,KAAK,QAAQ,MACpCA,EAAQ,KAAK,MAAM,EAGrB,QAASO,EAAI,EAAGA,EAAIP,EAAQ,OAAQO,IAElCP,EAAQO,GAAKP,EAAQO,GAAG,YAAY,EAGtC,OAAOP,CACT,EAOAG,GAAM,UAAU,SAAW,SAAkBK,EAAKC,EAAKC,EAAM,CAC3D,IAAIC,EAAM,EACNC,EAAQ,KAAK,MACbC,EAAO,EAEX,GAAID,EAAM,SAAW,EACnB,OAAOF,EAAK,EAGd,IAAIL,EAASG,EAAI,OAAO,YAAY,EAChCH,IAAW,QAAU,CAAC,KAAK,QAAQ,OACrCA,EAAS,OAGXG,EAAI,MAAQ,KAEZM,EAAK,EAEL,SAASA,EAAKC,EAAK,CAEjB,GAAIA,GAAOA,IAAQ,QACjB,OAAOL,EAAK,EAId,GAAIK,GAAOA,IAAQ,SACjB,OAAOL,EAAKK,CAAG,EAIjB,GAAI,EAAEF,EAAO,IACX,OAAO,aAAaC,EAAMC,CAAG,EAG/B,IAAIC,EAAQJ,EAAMD,KAGlB,GAAI,CAACK,EACH,OAAON,EAAKK,CAAG,EAGbC,EAAM,QAAUA,EAAM,SAAWX,EACnCS,EAAKC,CAAG,EACCA,EACTC,EAAM,aAAaD,EAAKP,EAAKC,EAAKK,CAAI,EAEtCE,EAAM,eAAeR,EAAKC,EAAKK,CAAI,EAGrCD,EAAO,CACT,CACF,EA8BAV,GAAM,UAAU,IAAM,UAAe,CAGnC,QAFIc,EAAUnB,GAAQG,GAAM,KAAK,SAAS,CAAC,EAElCM,EAAI,EAAGA,EAAIU,EAAQ,OAAQV,IAAK,CACvC,IAAIW,EAASD,EAAQV,GAErB,GAAI,OAAOW,GAAW,WAAY,CAChC,IAAIC,EAAOjB,GAAS,KAAKgB,CAAM,EAC3BE,EAAM,sDAAwDD,EAClE,MAAM,IAAI,UAAUC,CAAG,CACzB,CAEA,IAAIJ,EAAQjB,GAAM,IAAK,CAAC,EAAGmB,CAAM,EACjCF,EAAM,OAAS,OAEf,KAAK,QAAQ,KAAO,GACpB,KAAK,MAAM,KAAKA,CAAK,CACvB,CAEA,OAAO,IACT,EAEAhB,GAAQ,QAAQ,SAASK,EAAO,CAC9BF,GAAM,UAAUE,GAAU,UAAU,CAGlC,QAFIY,EAAUnB,GAAQG,GAAM,KAAK,SAAS,CAAC,EAElCM,EAAI,EAAGA,EAAIU,EAAQ,OAAQV,IAAK,CACvC,IAAIW,EAASD,EAAQV,GAErB,GAAI,OAAOW,GAAW,WAAY,CAChC,IAAIC,EAAOjB,GAAS,KAAKgB,CAAM,EAC3BE,EAAM,SAAWf,EAAS,6CAA+Cc,EAC7E,MAAM,IAAI,MAAMC,CAAG,CACrB,CAEAvB,GAAM,QAASQ,EAAQ,KAAK,IAAI,EAEhC,IAAIW,EAAQjB,GAAM,IAAK,CAAC,EAAGmB,CAAM,EACjCF,EAAM,OAASX,EAEf,KAAK,QAAQA,GAAU,GACvB,KAAK,MAAM,KAAKW,CAAK,CACvB,CAEA,OAAO,IACT,CACF,CAAC,IChOD,IAAAK,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAeAD,GAAUC,GAAO,QAAU,SAASC,EAAGC,EAAE,CACvC,GAAID,GAAKC,EACP,QAASC,KAAOD,EACdD,EAAEE,GAAOD,EAAEC,GAGf,OAAOF,CACT,ICtBA,IAAAG,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAeA,IAAIC,GAAQ,KACRC,GAAQ,KACRC,GAAU,KACVC,GAAQ,KACRC,GAAQ,KAAiB,gBAAgB,EACzCC,GAAY,KAAgB,SAAS,EACrCC,GAAU,KACVC,GAAW,KACXC,GAAiB,KAOjBC,GAAe,qBACfC,GAAQ,MAAM,UAAU,MACxBC,GAAW,OAAO,UAAU,SAU5BC,GAAQb,GAAO,QAAU,SAASc,EAAS,CAC7C,IAAIC,EAAOD,GAAW,CAAC,EAEvB,SAASE,EAAOC,EAAKC,EAAKC,EAAM,CAC9BH,EAAO,OAAOC,EAAKC,EAAKC,CAAI,CAC9B,CAGA,OAAAV,GAAeO,EAAQH,EAAK,EAE5BG,EAAO,OAAS,CAAC,EACjBA,EAAO,QAAU,CAAC,EAClBA,EAAO,cAAgBD,EAAK,cAC5BC,EAAO,YAAcD,EAAK,YAC1BC,EAAO,OAASD,EAAK,OACrBC,EAAO,MAAQ,CAAC,EAETA,CACT,EAoCAH,GAAM,MAAQ,SAAeO,EAAMC,EAAI,CAErC,GAAI,OAAOD,GAAS,WAAY,CAC9Bd,GAAU,+CAA+C,EACzD,KAAK,QAAQ,KAAKc,CAAI,EACtB,MACF,CAGA,IAAIE,EAAS,KAAK,QACdC,EAAMD,EAAO,OACbE,EAEAJ,EAAK,KAAO,MACdd,GAAU,gBAAkB,KAAK,UAAUc,CAAI,EAAI,2BAA6B,KAAK,UAAUA,EAAK,MAAM,CAAC,CAAC,EAAI,eAAe,EAC/HA,EAAOA,EAAK,MAAM,CAAC,GAGrB,QAASK,EAAI,EAAGA,EAAIF,EAAK,EAAEE,GACrBD,EAAMF,EAAOG,GAAGL,EAAMC,CAAE,KAC1BA,EAAKG,GAMT,GAAmB,OAAOH,GAAtB,WACF,MAAM,IAAI,MAAM,4BAA8BD,EAAO,SAAWC,CAAE,EAGpE,OAAC,KAAK,OAAOD,GAAQ,KAAK,OAAOA,IAAS,CAAC,GAAG,KAAKC,CAAE,EAC9C,IACT,EAOAR,GAAM,OAAS,SAAgBI,EAAKC,EAAKQ,EAAK,CAC5C,IAAIC,EAAO,KAEXtB,GAAM,oBAAqBY,EAAI,OAAQA,EAAI,GAAG,EAE9C,IAAIW,EAAM,EACNC,EAAYC,GAAab,EAAI,GAAG,GAAK,GACrCc,EAAU,GACVC,EAAa,GACbC,EAAO,EACPC,EAAc,CAAC,EAIfpB,EAAU,CAAC,EAGXqB,EAAQR,EAAK,MAGbS,EAAenB,EAAI,OACnBoB,EAAYpB,EAAI,SAAW,GAC3BqB,EAAOC,GAAQb,EAAKT,EAAK,UAAW,OAAQ,QAAQ,EAGxDA,EAAI,KAAOE,EAGPF,EAAI,SAAW,YACjBqB,EAAOE,GAAKF,EAAM,SAASG,EAAKC,EAAK,CACnC,GAAIA,GAAO5B,EAAQ,SAAW,EAAG,OAAO2B,EAAIC,CAAG,EAC/CC,GAAoBzB,EAAKJ,EAAS2B,CAAG,CACvC,CAAC,GAIHxB,EAAI,QAAUoB,EACdpB,EAAI,YAAcA,EAAI,aAAeA,EAAI,IAEzCE,EAAK,EAEL,SAASA,EAAKuB,EAAK,CACjB,IAAIE,EAAaF,IAAQ,QACrB,KACAA,EAgBJ,GAbIV,IACFf,EAAI,IAAMA,EAAI,IAAI,MAAM,CAAC,EACzBe,EAAa,IAIXD,EAAQ,SAAW,IACrBd,EAAI,QAAUoB,EACdpB,EAAI,IAAMY,EAAYE,EAAUd,EAAI,IAAI,MAAMY,EAAU,MAAM,EAC9DE,EAAU,IAIRa,IAAe,SAAU,CAC3B,aAAaN,EAAM,IAAI,EACvB,MACF,CAGA,GAAIV,GAAOO,EAAM,OAAQ,CACvB,aAAaG,EAAMM,CAAU,EAC7B,MACF,CAGA,GAAI,EAAEX,EAAO,IACX,OAAO,aAAad,EAAMuB,CAAG,EAI/B,IAAIG,EAAOC,GAAY7B,CAAG,EAE1B,GAAI4B,GAAQ,KACV,OAAOP,EAAKM,CAAU,EAQxB,QAJIG,EACAC,EACAC,EAEGD,IAAU,IAAQpB,EAAMO,EAAM,QAUnC,GATAY,EAAQZ,EAAMP,KACdoB,EAAQE,GAAWH,EAAOF,CAAI,EAC9BI,EAAQF,EAAM,MAEV,OAAOC,GAAU,YAEnBJ,EAAaA,GAAcI,GAGzBA,IAAU,IAIV,EAACC,EAKL,IAAIL,EAAY,CAEdI,EAAQ,GACR,QACF,CAEA,IAAIG,EAASlC,EAAI,OACbmC,EAAaH,EAAM,gBAAgBE,CAAM,EAGzC,CAACC,GAAcD,IAAW,WAC5BE,GAAcvC,EAASmC,EAAM,SAAS,CAAC,EAIrC,CAACG,GAAcD,IAAW,SAC5BH,EAAQ,IAKZ,GAAIA,IAAU,GACZ,OAAOV,EAAKM,CAAU,EAIpBK,IACFhC,EAAI,MAAQgC,GAIdhC,EAAI,OAASU,EAAK,YACd2B,GAAYP,EAAM,OAAQX,CAAY,EACtCW,EAAM,OACV,IAAIQ,EAAYR,EAAM,KAGtBpB,EAAK,eAAeoB,EAAOb,EAAajB,EAAKC,EAAK,SAAUwB,EAAK,CAC3DA,EACFvB,EAAKyB,GAAcF,CAAG,EACbO,EACTF,EAAM,eAAe9B,EAAKC,EAAKC,CAAI,EAEnCqC,EAAYT,EAAOH,EAAYW,EAAWV,CAAI,EAGhDZ,EAAO,CACT,CAAC,CACH,CAEA,SAASuB,EAAYT,EAAOH,EAAYW,EAAWV,EAAM,CACvD,GAAIU,EAAU,SAAW,EAAG,CAE1B,GAAIA,IAAcV,EAAK,MAAM,EAAGU,EAAU,MAAM,EAAG,CACjDpC,EAAKyB,CAAU,EACf,MACF,CAGA,IAAIa,EAAIZ,EAAKU,EAAU,QACvB,GAAIE,GAAKA,IAAM,KAAOA,IAAM,IAAK,OAAOtC,EAAKyB,CAAU,EAIvDvC,GAAM,+BAAgCkD,EAAWtC,EAAI,GAAG,EACxDc,EAAUwB,EACVtC,EAAI,IAAMY,EAAYZ,EAAI,IAAI,MAAMY,EAAU,OAASE,EAAQ,MAAM,EAGjE,CAACF,GAAaZ,EAAI,IAAI,KAAO,MAC/BA,EAAI,IAAM,IAAMA,EAAI,IACpBe,EAAa,IAIff,EAAI,QAAUoB,GAAaN,EAAQA,EAAQ,OAAS,KAAO,IACvDA,EAAQ,UAAU,EAAGA,EAAQ,OAAS,CAAC,EACvCA,EACN,CAEA1B,GAAM,aAAc0C,EAAM,KAAMQ,EAAWtC,EAAI,WAAW,EAEtD2B,EACFG,EAAM,aAAaH,EAAY3B,EAAKC,EAAKC,CAAI,EAE7C4B,EAAM,eAAe9B,EAAKC,EAAKC,CAAI,CAEvC,CACF,EAOAN,GAAM,eAAiB,SAAwBkC,EAAOW,EAAQzC,EAAKC,EAAKoB,EAAM,CAC5E,IAAIhB,EAAS,KAAK,OAGdqC,EAAOZ,EAAM,KAGjB,GAAI,CAACY,GAAQA,EAAK,SAAW,EAC3B,OAAOrB,EAAK,EAGd,IAAIb,EAAI,EACJL,EACAwC,EAAa,EACbC,EACAC,EACAC,EACAC,EAIJ,SAASC,EAAMvB,EAAK,CAClB,GAAIA,EACF,OAAOJ,EAAKI,CAAG,EAGjB,GAAIjB,GAAKkC,EAAK,OACZ,OAAOrB,EAAK,EAUd,GAPAsB,EAAa,EACbC,EAAMF,EAAKlC,KACXL,EAAOyC,EAAI,KACXC,EAAW7C,EAAI,OAAOG,GACtB2C,EAAiBzC,EAAOF,GACxB4C,EAAcN,EAAOtC,GAEjB0C,IAAa,QAAa,CAACC,EAC7B,OAAOE,EAAM,EAIf,GAAID,IAAgBA,EAAY,QAAUF,GACpCE,EAAY,OAASA,EAAY,QAAU,SAE/C,OAAA/C,EAAI,OAAOG,GAAQ4C,EAAY,MAGxBC,EAAMD,EAAY,KAAK,EAGhCN,EAAOtC,GAAQ4C,EAAc,CAC3B,MAAO,KACP,MAAOF,EACP,MAAOA,CACT,EAEAI,EAAc,CAChB,CAGA,SAASA,EAAcxB,EAAK,CAC1B,IAAIrB,EAAK0C,EAAeH,KAKxB,GAFAI,EAAY,MAAQ/C,EAAI,OAAO4C,EAAI,MAE/BnB,EAAK,CAEPsB,EAAY,MAAQtB,EACpBuB,EAAMvB,CAAG,EACT,MACF,CAEA,GAAI,CAACrB,EAAI,OAAO4C,EAAM,EAEtB,GAAI,CACF5C,EAAGJ,EAAKC,EAAKgD,EAAeJ,EAAUD,EAAI,IAAI,CAChD,OAASM,EAAP,CACAD,EAAcC,CAAC,CACjB,CACF,CAEAF,EAAM,CACR,EAiBApD,GAAM,IAAM,SAAaQ,EAAI,CAC3B,IAAI+C,EAAS,EACTvB,EAAO,IAIX,GAAI,OAAOxB,GAAO,WAAY,CAG5B,QAFIgD,EAAMhD,EAEH,MAAM,QAAQgD,CAAG,GAAKA,EAAI,SAAW,GAC1CA,EAAMA,EAAI,GAIR,OAAOA,GAAQ,aACjBD,EAAS,EACTvB,EAAOxB,EAEX,CAEA,IAAIiD,EAAY/D,GAAQI,GAAM,KAAK,UAAWyD,CAAM,CAAC,EAErD,GAAIE,EAAU,SAAW,EACvB,MAAM,IAAI,UAAU,6CAA6C,EAGnE,QAAS7C,EAAI,EAAGA,EAAI6C,EAAU,OAAQ7C,IAAK,CACzC,IAAIJ,EAAKiD,EAAU7C,GAEnB,GAAI,OAAOJ,GAAO,WAChB,MAAM,IAAI,UAAU,yDAA2DkD,GAAQlD,CAAE,CAAC,EAI5FhB,GAAM,YAAawC,EAAMxB,EAAG,MAAQ,aAAa,EAEjD,IAAI0B,EAAQ,IAAI7C,GAAM2C,EAAM,CAC1B,UAAW,KAAK,cAChB,OAAQ,GACR,IAAK,EACP,EAAGxB,CAAE,EAEL0B,EAAM,MAAQ,OAEd,KAAK,MAAM,KAAKA,CAAK,CACvB,CAEA,OAAO,IACT,EAeAlC,GAAM,MAAQ,SAAegC,EAAM,CACjC,IAAII,EAAQ,IAAIhD,GAAM4C,CAAI,EAEtBE,EAAQ,IAAI7C,GAAM2C,EAAM,CAC1B,UAAW,KAAK,cAChB,OAAQ,KAAK,OACb,IAAK,EACP,EAAGI,EAAM,SAAS,KAAKA,CAAK,CAAC,EAE7B,OAAAF,EAAM,MAAQE,EAEd,KAAK,MAAM,KAAKF,CAAK,EACdE,CACT,EAGA9C,GAAQ,OAAO,KAAK,EAAE,QAAQ,SAASgD,EAAO,CAC5CtC,GAAMsC,GAAU,SAASN,EAAK,CAC5B,IAAII,EAAQ,KAAK,MAAMJ,CAAI,EAC3B,OAAAI,EAAME,GAAQ,MAAMF,EAAOtC,GAAM,KAAK,UAAW,CAAC,CAAC,EAC5C,IACT,CACF,CAAC,EAGD,SAAS0C,GAAcmB,EAAMC,EAAU,CACrC,QAAShD,EAAI,EAAGA,EAAIgD,EAAS,OAAQhD,IAAK,CACxC,IAAI0B,EAASsB,EAAShD,GAClB+C,EAAK,QAAQrB,CAAM,IAAM,IAC3BqB,EAAK,KAAKrB,CAAM,CAEpB,CACF,CAGA,SAASL,GAAY7B,EAAK,CACxB,GAAI,CACF,OAAOT,GAASS,CAAG,EAAE,QACvB,MAAE,CACA,MACF,CACF,CAGA,SAASa,GAAa4C,EAAK,CACzB,GAAI,SAAOA,GAAQ,UAAYA,EAAI,SAAW,GAAKA,EAAI,KAAO,KAI9D,KAAIC,EAAcD,EAAI,QAAQ,GAAG,EAC7BE,EAAaD,IAAgB,GAC7BA,EACAD,EAAI,OACJG,EAAYH,EAAI,MAAM,EAAGE,CAAU,EAAE,QAAQ,KAAK,EAEtD,OAAOC,IAAc,GACjBH,EAAI,UAAU,EAAGA,EAAI,QAAQ,IAAK,EAAIG,CAAS,CAAC,EAChD,OACN,CAGA,SAASN,GAAQO,EAAK,CACpB,IAAIC,EAAO,OAAOD,EAElB,OAAIC,IAAS,SACJA,EAIFnE,GAAS,KAAKkE,CAAG,EACrB,QAAQpE,GAAc,IAAI,CAC/B,CAUA,SAASwC,GAAWH,EAAOF,EAAM,CAC/B,GAAI,CACF,OAAOE,EAAM,MAAMF,CAAI,CACzB,OAASH,EAAP,CACA,OAAOA,CACT,CACF,CAGA,SAASY,GAAYhC,EAAQ0D,EAAQ,CACnC,GAAI,OAAOA,GAAW,UAAY,CAACA,EACjC,OAAO1D,EAIT,IAAIwD,EAAM1E,GAAM,CAAC,EAAG4E,CAAM,EAG1B,GAAI,EAAE,KAAK1D,IAAW,EAAE,KAAK0D,GAC3B,OAAO5E,GAAM0E,EAAKxD,CAAM,EAO1B,QAJIG,EAAI,EACJwD,EAAI,EAGDxD,KAAKH,GACVG,IAGF,KAAOwD,KAAKD,GACVC,IAIF,IAAKxD,IAAKA,GAAK,EAAGA,IAChBH,EAAOG,EAAIwD,GAAK3D,EAAOG,GAGnBA,EAAIwD,GACN,OAAO3D,EAAOG,GAIlB,OAAOrB,GAAM0E,EAAKxD,CAAM,CAC1B,CAGA,SAASiB,GAAQlB,EAAIyD,EAAK,CAIxB,QAHII,EAAQ,IAAI,MAAM,UAAU,OAAS,CAAC,EACtCC,EAAO,IAAI,MAAM,UAAU,OAAS,CAAC,EAEhC,EAAI,EAAG,EAAID,EAAM,OAAQ,IAChCA,EAAM,GAAK,UAAU,EAAI,GACzBC,EAAK,GAAKL,EAAII,EAAM,IAGtB,OAAO,UAAY,CAEjB,QAASzD,EAAI,EAAGA,EAAIyD,EAAM,OAAQzD,IAChCqD,EAAII,EAAMzD,IAAM0D,EAAK1D,GAGvB,OAAOJ,EAAG,MAAM,KAAM,SAAS,CACjC,CACF,CAGA,SAASsB,GAAoBzB,EAAKJ,EAASK,EAAM,CAC/C,GAAI,CACF,IAAIiE,EAAOtE,EAAQ,KAAK,GAAG,EAC3BI,EAAI,IAAI,QAASkE,CAAI,EACrBlE,EAAI,KAAKkE,CAAI,CACf,OAAS1C,EAAP,CACAvB,EAAKuB,CAAG,CACV,CACF,CAGA,SAASF,GAAKC,EAAKpB,EAAI,CACrB,OAAO,UAAiB,CACtB,IAAIgE,EAAO,IAAI,MAAM,UAAU,OAAS,CAAC,EAEzCA,EAAK,GAAK5C,EACV,QAAS,EAAI,EAAGlB,EAAM,UAAU,OAAQ,EAAIA,EAAK,IAC/C8D,EAAK,EAAI,GAAK,UAAU,GAG1BhE,EAAG,MAAM,KAAMgE,CAAI,CACrB,CACF,IChqBA,IAAAC,GAAAC,EAAAC,IAAA,cAeA,IAAIC,GAAiB,KAYrBD,GAAQ,KAAO,SAASE,EAAI,CAC1B,OAAO,SAAqBC,EAAKC,EAAKC,EAAK,CACrCH,EAAI,QAAQ,cAAc,GAAGE,EAAI,UAAU,eAAgB,SAAS,EACxED,EAAI,IAAMC,EACVA,EAAI,IAAMD,EACVA,EAAI,KAAOE,EAEXJ,GAAeE,EAAKD,EAAI,OAAO,EAC/BD,GAAeG,EAAKF,EAAI,QAAQ,EAEhCE,EAAI,OAASA,EAAI,QAAU,OAAO,OAAO,IAAI,EAE7CC,EAAK,CACP,CACF,ICzCA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAcA,IAAIC,GAAQ,KACRC,GAAW,KACXC,GAAK,KAQTH,GAAO,QAAU,SAAeI,EAAS,CACvC,IAAIC,EAAOJ,GAAM,CAAC,EAAGG,CAAO,EACxBE,EAAaH,GAAG,MAEpB,OAAI,OAAOC,GAAY,aACrBE,EAAaF,EACbC,EAAO,QAGLA,IAAS,QAAaA,EAAK,kBAAoB,SAEjDA,EAAK,gBAAkB,IAGlB,SAAeE,EAAKC,EAAKC,EAAK,CACnC,GAAI,CAACF,EAAI,MAAO,CACd,IAAIG,EAAMR,GAASK,CAAG,EAAE,MACxBA,EAAI,MAAQD,EAAWI,EAAKL,CAAI,CAClC,CAEAI,EAAK,CACP,CACF,IC9CA,IAAAE,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAeA,IAAIC,GAAQ,KAAiB,cAAc,EACvCC,GAAO,QAAQ,QACfC,GAAK,QAAQ,MAObC,GAAUF,GAAK,QACfG,GAAWH,GAAK,SAChBI,GAAUJ,GAAK,QACfK,GAAOL,GAAK,KACZM,GAAUN,GAAK,QAOnBF,GAAO,QAAUS,GAgBjB,SAASA,GAAKC,EAAMC,EAAS,CAC3B,IAAIC,EAAOD,GAAW,CAAC,EAOvB,GALA,KAAK,cAAgBC,EAAK,cAC1B,KAAK,IAAMN,GAAQI,CAAI,EACvB,KAAK,KAAOA,EACZ,KAAK,KAAOE,EAAK,KAEb,CAAC,KAAK,KAAO,CAAC,KAAK,cACrB,MAAM,IAAI,MAAM,gEAAgE,EAGlF,IAAIC,EAAWH,EAWf,GATK,KAAK,MAER,KAAK,IAAM,KAAK,cAAc,KAAO,IACjC,IAAM,KAAK,cACX,KAAK,cAETG,GAAY,KAAK,KAGf,CAACD,EAAK,QAAQ,KAAK,KAAM,CAE3B,IAAIE,EAAM,KAAK,IAAI,MAAM,CAAC,EAC1Bb,GAAM,eAAgBa,CAAG,EAGzB,IAAIC,EAAK,QAAQD,GAAK,UAEtB,GAAI,OAAOC,GAAO,WAChB,MAAM,IAAI,MAAM,WAAaD,EAAM,mCAAmC,EAGxEF,EAAK,QAAQ,KAAK,KAAOG,CAC3B,CAGA,KAAK,OAASH,EAAK,QAAQ,KAAK,KAGhC,KAAK,KAAO,KAAK,OAAOC,CAAQ,CAClC,CASAJ,GAAK,UAAU,OAAS,SAAgBC,EAAM,CAC5C,IAAIR,EACAc,EAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,EAE/Bf,GAAM,cAAeS,CAAI,EAEzB,QAAS,EAAI,EAAG,EAAIM,EAAM,QAAU,CAACd,EAAM,IAAK,CAC9C,IAAIe,EAAOD,EAAM,GAGbE,EAAMV,GAAQS,EAAMP,CAAI,EACxBS,EAAMf,GAAQc,CAAG,EACjBE,EAAOf,GAASa,CAAG,EAGvBhB,EAAO,KAAK,QAAQiB,EAAKC,CAAI,CAC/B,CAEA,OAAOlB,CACT,EAUAO,GAAK,UAAU,OAAS,SAAgBE,EAASU,EAAU,CACzDpB,GAAM,cAAe,KAAK,IAAI,EAC9B,KAAK,OAAO,KAAK,KAAMU,EAASU,CAAQ,CAC1C,EAUAZ,GAAK,UAAU,QAAU,SAAiBU,EAAKC,EAAM,CACnD,IAAIE,EAAM,KAAK,IAGXpB,EAAOK,GAAKY,EAAKC,CAAI,EACrBG,EAAOC,GAAQtB,CAAI,EAUvB,GARIqB,GAAQA,EAAK,OAAO,IAKxBrB,EAAOK,GAAKY,EAAKd,GAASe,EAAME,CAAG,EAAG,QAAUA,CAAG,EACnDC,EAAOC,GAAQtB,CAAI,EAEfqB,GAAQA,EAAK,OAAO,GACtB,OAAOrB,CAEX,EAUA,SAASsB,GAAQtB,EAAM,CACrBD,GAAM,YAAaC,CAAI,EAEvB,GAAI,CACF,OAAOC,GAAG,SAASD,CAAI,CACzB,MAAE,CACA,MACF,CACF,ICrLA,IAAAuB,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAEA,IAAIC,GAAS,QAAQ,UACjBC,GAASD,GAAO,OAGpB,SAASE,GAAWC,EAAKC,EAAK,CAC5B,QAASC,KAAOF,EACdC,EAAIC,GAAOF,EAAIE,EAEnB,CACIJ,GAAO,MAAQA,GAAO,OAASA,GAAO,aAAeA,GAAO,gBAC9DF,GAAO,QAAUC,IAGjBE,GAAUF,GAAQF,EAAO,EACzBA,GAAQ,OAASQ,IAGnB,SAASA,GAAYC,EAAKC,EAAkBC,EAAQ,CAClD,OAAOR,GAAOM,EAAKC,EAAkBC,CAAM,CAC7C,CAEAH,GAAW,UAAY,OAAO,OAAOL,GAAO,SAAS,EAGrDC,GAAUD,GAAQK,EAAU,EAE5BA,GAAW,KAAO,SAAUC,EAAKC,EAAkBC,EAAQ,CACzD,GAAI,OAAOF,GAAQ,SACjB,MAAM,IAAI,UAAU,+BAA+B,EAErD,OAAON,GAAOM,EAAKC,EAAkBC,CAAM,CAC7C,EAEAH,GAAW,MAAQ,SAAUI,EAAMC,EAAMC,EAAU,CACjD,GAAI,OAAOF,GAAS,SAClB,MAAM,IAAI,UAAU,2BAA2B,EAEjD,IAAIG,EAAMZ,GAAOS,CAAI,EACrB,OAAIC,IAAS,OACP,OAAOC,GAAa,SACtBC,EAAI,KAAKF,EAAMC,CAAQ,EAEvBC,EAAI,KAAKF,CAAI,EAGfE,EAAI,KAAK,CAAC,EAELA,CACT,EAEAP,GAAW,YAAc,SAAUI,EAAM,CACvC,GAAI,OAAOA,GAAS,SAClB,MAAM,IAAI,UAAU,2BAA2B,EAEjD,OAAOT,GAAOS,CAAI,CACpB,EAEAJ,GAAW,gBAAkB,SAAUI,EAAM,CAC3C,GAAI,OAAOA,GAAS,SAClB,MAAM,IAAI,UAAU,2BAA2B,EAEjD,OAAOV,GAAO,WAAWU,CAAI,CAC/B,IChEA,IAAAI,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAaAA,GAAO,QAAUC,GACjBD,GAAO,QAAQ,MAAQE,GAOvB,IAAIC,GAAW,QAAQ,QAAQ,SAC3BC,GAAS,KAAuB,OAOhCC,GAA8B,wCAO9BC,GAAoB,kBACpBC,GAA4B,qBAO5BC,GAAoB,yBAUpBC,GAAc,uBAOdC,GAAe,WA2BfC,GAAe,oKACfC,GAAc,0BACdC,GAAe,gCAwBfC,GAAmB,sIAgBnBC,GAA0B,mDAa9B,SAASd,GAAoBe,EAAUC,EAAS,CAC9C,IAAIC,EAAOD,GAAW,CAAC,EAGnBE,EAAOD,EAAK,MAAQ,aAGpBE,EAASC,GAAaL,EAAUE,EAAK,QAAQ,EAGjD,OAAOI,GAAO,IAAIC,GAAmBJ,EAAMC,CAAM,CAAC,CACpD,CAWA,SAASC,GAAcL,EAAUQ,EAAU,CACzC,GAAIR,IAAa,OAIjB,KAAII,EAAS,CAAC,EAEd,GAAI,OAAOJ,GAAa,SACtB,MAAM,IAAI,UAAU,2BAA2B,EAQjD,GAJIQ,IAAa,SACfA,EAAW,IAGT,OAAOA,GAAa,UAAY,OAAOA,GAAa,UACtD,MAAM,IAAI,UAAU,sCAAsC,EAG5D,GAAI,OAAOA,GAAa,UAAYhB,GAAkB,KAAKgB,CAAQ,EACjE,MAAM,IAAI,UAAU,oCAAoC,EAI1D,IAAIC,EAAOtB,GAASa,CAAQ,EAGxBU,EAAiBd,GAAY,KAAKa,CAAI,EAGtCE,EAAe,OAAOH,GAAa,SACnCA,GAAYI,GAAUH,CAAI,EAC1BtB,GAASqB,CAAQ,EACjBK,EAAc,OAAOF,GAAiB,UAAYA,IAAiBF,EAGvE,OAAII,GAAe,CAACH,GAAkBpB,GAAkB,KAAKmB,CAAI,KAC/DL,EAAO,aAAeK,IAIpBC,GAAkBG,KACpBT,EAAO,SAAWS,EACdF,EACAF,GAGCL,EACT,CAYA,SAASE,GAAQQ,EAAK,CACpB,IAAIC,EAAaD,EAAI,WACjBX,EAAOW,EAAI,KAEf,GAAI,CAACX,GAAQ,OAAOA,GAAS,UAAY,CAACN,GAAa,KAAKM,CAAI,EAC9D,MAAM,IAAI,UAAU,cAAc,EAIpC,IAAIa,EAAS,OAAOb,CAAI,EAAE,YAAY,EAGtC,GAAIY,GAAc,OAAOA,GAAe,SAItC,QAHIE,EACAb,EAAS,OAAO,KAAKW,CAAU,EAAE,KAAK,EAEjCG,EAAI,EAAGA,EAAId,EAAO,OAAQc,IAAK,CACtCD,EAAQb,EAAOc,GAEf,IAAIC,EAAMF,EAAM,OAAO,EAAE,IAAM,IAC3BG,GAAQL,EAAWE,EAAM,EACzBI,GAAQN,EAAWE,EAAM,EAE7BD,GAAU,KAAOC,EAAQ,IAAME,CACjC,CAGF,OAAOH,CACT,CAUA,SAASM,GAAaC,EAAK,CACzB,IAAIC,EAAQ1B,GAAiB,KAAKyB,CAAG,EAErC,GAAI,CAACC,EACH,MAAM,IAAI,UAAU,8BAA8B,EAGpD,IAAIC,EAAUD,EAAM,GAAG,YAAY,EAC/BE,EAAUF,EAAM,GAChBG,EAGAC,EAASF,EAAQ,QAAQnC,GAA2BsC,EAAO,EAE/D,OAAQJ,EAAS,CACf,IAAK,aACHE,EAAQf,GAAUgB,CAAM,EACxB,MACF,IAAK,QACHD,EAAQvC,GAAO,KAAKwC,EAAQ,QAAQ,EAAE,SAAS,MAAM,EACrD,MACF,QACE,MAAM,IAAI,UAAU,uCAAuC,CAC/D,CAEA,OAAOD,CACT,CAUA,SAASf,GAAWO,EAAK,CAEvB,OAAO,OAAOA,CAAG,EAAE,QAAQ3B,GAAmB,GAAG,CACnD,CAUA,SAASN,GAAO8B,EAAQ,CACtB,GAAI,CAACA,GAAU,OAAOA,GAAW,SAC/B,MAAM,IAAI,UAAU,6BAA6B,EAGnD,IAAIQ,EAAQzB,GAAwB,KAAKiB,CAAM,EAE/C,GAAI,CAACQ,EACH,MAAM,IAAI,UAAU,qBAAqB,EAI3C,IAAIM,EAAQN,EAAM,GAAG,OACjBrB,EAAOqB,EAAM,GAAG,YAAY,EAE5BO,EACAC,EAAQ,CAAC,EACT5B,EAAS,CAAC,EACVuB,EAQJ,IALAG,EAAQnC,GAAa,UAAY6B,EAAM,GAAG,OAAO,EAAE,IAAM,IACrDM,EAAQ,EACRA,EAGIN,EAAQ7B,GAAa,KAAKqB,CAAM,GAAI,CAC1C,GAAIQ,EAAM,QAAUM,EAClB,MAAM,IAAI,UAAU,0BAA0B,EAOhD,GAJAA,GAASN,EAAM,GAAG,OAClBO,EAAMP,EAAM,GAAG,YAAY,EAC3BG,EAAQH,EAAM,GAEVQ,EAAM,QAAQD,CAAG,IAAM,GACzB,MAAM,IAAI,UAAU,6BAA6B,EAKnD,GAFAC,EAAM,KAAKD,CAAG,EAEVA,EAAI,QAAQ,GAAG,EAAI,IAAMA,EAAI,OAAQ,CAEvCA,EAAMA,EAAI,MAAM,EAAG,EAAE,EACrBJ,EAAQL,GAAYK,CAAK,EAGzBvB,EAAO2B,GAAOJ,EACd,QACF,CAEI,OAAOvB,EAAO2B,IAAS,WAIvBJ,EAAM,KAAO,MAEfA,EAAQA,EACL,OAAO,EAAGA,EAAM,OAAS,CAAC,EAC1B,QAAQlC,GAAa,IAAI,GAG9BW,EAAO2B,GAAOJ,EAChB,CAEA,GAAIG,IAAU,IAAMA,IAAUd,EAAO,OACnC,MAAM,IAAI,UAAU,0BAA0B,EAGhD,OAAO,IAAIT,GAAmBJ,EAAMC,CAAM,CAC5C,CAWA,SAASyB,GAASN,EAAKU,EAAK,CAC1B,OAAO,OAAO,aAAa,SAASA,EAAK,EAAE,CAAC,CAC9C,CAUA,SAASC,GAASC,EAAM,CACtB,MAAO,IAAM,OAAOA,CAAI,EACrB,WAAW,CAAC,EACZ,SAAS,EAAE,EACX,YAAY,CACjB,CAUA,SAASd,GAASF,EAAK,CACrB,IAAII,EAAM,OAAOJ,CAAG,EAEpB,MAAO,IAAMI,EAAI,QAAQ7B,GAAc,MAAM,EAAI,GACnD,CAUA,SAAS0B,GAASD,EAAK,CACrB,IAAII,EAAM,OAAOJ,CAAG,EAGhBO,EAAU,mBAAmBH,CAAG,EACjC,QAAQlC,GAA6B6C,EAAO,EAE/C,MAAO,UAAcR,CACvB,CAWA,SAASnB,GAAoBJ,EAAMY,EAAY,CAC7C,KAAK,KAAOZ,EACZ,KAAK,WAAaY,CACpB,ICzcA,IAAAqB,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAIA,IAAIC,GAAI,IACJC,GAAID,GAAI,GACRE,GAAID,GAAI,GACRE,GAAID,GAAI,GACRE,GAAID,GAAI,OAgBZJ,GAAO,QAAU,SAASM,EAAKC,EAAS,CACtCA,EAAUA,GAAW,CAAC,EACtB,IAAIC,EAAO,OAAOF,EAClB,GAAIE,IAAS,UAAYF,EAAI,OAAS,EACpC,OAAOG,GAAMH,CAAG,EACX,GAAIE,IAAS,UAAY,MAAMF,CAAG,IAAM,GAC7C,OAAOC,EAAQ,KAAOG,GAAQJ,CAAG,EAAIK,GAASL,CAAG,EAEnD,MAAM,IAAI,MACR,wDACE,KAAK,UAAUA,CAAG,CACtB,CACF,EAUA,SAASG,GAAMG,EAAK,CAElB,GADAA,EAAM,OAAOA,CAAG,EACZ,EAAAA,EAAI,OAAS,KAGjB,KAAIC,EAAQ,wHAAwH,KAClID,CACF,EACA,GAAI,EAACC,EAGL,KAAIC,EAAI,WAAWD,EAAM,EAAE,EACvBL,GAAQK,EAAM,IAAM,MAAM,YAAY,EAC1C,OAAQL,EAAM,CACZ,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,OAAOM,EAAIT,GACb,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOS,EAAIV,GACb,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,OAAOU,EAAIX,GACb,IAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOW,EAAIZ,GACb,IAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOY,EAAIb,GACb,IAAK,eACL,IAAK,cACL,IAAK,QACL,IAAK,OACL,IAAK,KACH,OAAOa,EACT,QACE,MACJ,GACF,CAUA,SAASH,GAASI,EAAI,CACpB,OAAIA,GAAMX,GACD,KAAK,MAAMW,EAAKX,EAAC,EAAI,IAE1BW,GAAMZ,GACD,KAAK,MAAMY,EAAKZ,EAAC,EAAI,IAE1BY,GAAMb,GACD,KAAK,MAAMa,EAAKb,EAAC,EAAI,IAE1Ba,GAAMd,GACD,KAAK,MAAMc,EAAKd,EAAC,EAAI,IAEvBc,EAAK,IACd,CAUA,SAASL,GAAQK,EAAI,CACnB,OAAOC,GAAOD,EAAIX,GAAG,KAAK,GACxBY,GAAOD,EAAIZ,GAAG,MAAM,GACpBa,GAAOD,EAAIb,GAAG,QAAQ,GACtBc,GAAOD,EAAId,GAAG,QAAQ,GACtBc,EAAK,KACT,CAMA,SAASC,GAAOD,EAAID,EAAGG,EAAM,CAC3B,GAAI,EAAAF,EAAKD,GAGT,OAAIC,EAAKD,EAAI,IACJ,KAAK,MAAMC,EAAKD,CAAC,EAAI,IAAMG,EAE7B,KAAK,KAAKF,EAAKD,CAAC,EAAI,IAAMG,EAAO,GAC1C,ICvJA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAQAD,GAAUC,GAAO,QAAUC,GAAY,MAAQA,GAAY,QAAaA,GACxEF,GAAQ,OAASG,GACjBH,GAAQ,QAAUI,GAClBJ,GAAQ,OAASK,GACjBL,GAAQ,QAAUM,GAClBN,GAAQ,SAAW,KAMnBA,GAAQ,MAAQ,CAAC,EACjBA,GAAQ,MAAQ,CAAC,EAQjBA,GAAQ,WAAa,CAAC,EAMtB,IAAIO,GASJ,SAASC,GAAYC,EAAW,CAC9B,IAAIC,EAAO,EAAGC,EAEd,IAAKA,KAAKF,EACRC,GAAUA,GAAQ,GAAKA,EAAQD,EAAU,WAAWE,CAAC,EACrDD,GAAQ,EAGV,OAAOV,GAAQ,OAAO,KAAK,IAAIU,CAAI,EAAIV,GAAQ,OAAO,OACxD,CAUA,SAASE,GAAYO,EAAW,CAE9B,SAASG,GAAQ,CAEf,GAAI,EAACA,EAAM,QAEX,KAAIC,EAAOD,EAGPE,EAAO,CAAC,IAAI,KACZC,EAAKD,GAAQP,IAAYO,GAC7BD,EAAK,KAAOE,EACZF,EAAK,KAAON,GACZM,EAAK,KAAOC,EACZP,GAAWO,EAIX,QADIE,EAAO,IAAI,MAAM,UAAU,MAAM,EAC5BL,EAAI,EAAGA,EAAIK,EAAK,OAAQL,IAC/BK,EAAKL,GAAK,UAAUA,GAGtBK,EAAK,GAAKhB,GAAQ,OAAOgB,EAAK,EAAE,EAEf,OAAOA,EAAK,IAAzB,UAEFA,EAAK,QAAQ,IAAI,EAInB,IAAIC,EAAQ,EACZD,EAAK,GAAKA,EAAK,GAAG,QAAQ,gBAAiB,SAASE,EAAOC,EAAQ,CAEjE,GAAID,IAAU,KAAM,OAAOA,EAC3BD,IACA,IAAIG,EAAYpB,GAAQ,WAAWmB,GACnC,GAAmB,OAAOC,GAAtB,WAAiC,CACnC,IAAIC,EAAML,EAAKC,GACfC,EAAQE,EAAU,KAAKP,EAAMQ,CAAG,EAGhCL,EAAK,OAAOC,EAAO,CAAC,EACpBA,GACF,CACA,OAAOC,CACT,CAAC,EAGDlB,GAAQ,WAAW,KAAKa,EAAMG,CAAI,EAElC,IAAIM,EAAQV,EAAM,KAAOZ,GAAQ,KAAO,QAAQ,IAAI,KAAK,OAAO,EAChEsB,EAAM,MAAMT,EAAMG,CAAI,EACxB,CAEA,OAAAJ,EAAM,UAAYH,EAClBG,EAAM,QAAUZ,GAAQ,QAAQS,CAAS,EACzCG,EAAM,UAAYZ,GAAQ,UAAU,EACpCY,EAAM,MAAQJ,GAAYC,CAAS,EAGhB,OAAOT,GAAQ,MAA9B,YACFA,GAAQ,KAAKY,CAAK,EAGbA,CACT,CAUA,SAASP,GAAOkB,EAAY,CAC1BvB,GAAQ,KAAKuB,CAAU,EAEvBvB,GAAQ,MAAQ,CAAC,EACjBA,GAAQ,MAAQ,CAAC,EAKjB,QAHIwB,GAAS,OAAOD,GAAe,SAAWA,EAAa,IAAI,MAAM,QAAQ,EACzEE,EAAMD,EAAM,OAEPb,EAAI,EAAGA,EAAIc,EAAKd,IACnB,CAACa,EAAMb,KACXY,EAAaC,EAAMb,GAAG,QAAQ,MAAO,KAAK,EACtCY,EAAW,KAAO,IACpBvB,GAAQ,MAAM,KAAK,IAAI,OAAO,IAAMuB,EAAW,OAAO,CAAC,EAAI,GAAG,CAAC,EAE/DvB,GAAQ,MAAM,KAAK,IAAI,OAAO,IAAMuB,EAAa,GAAG,CAAC,EAG3D,CAQA,SAASnB,IAAU,CACjBJ,GAAQ,OAAO,EAAE,CACnB,CAUA,SAASM,GAAQoB,EAAM,CACrB,IAAIf,EAAGc,EACP,IAAKd,EAAI,EAAGc,EAAMzB,GAAQ,MAAM,OAAQW,EAAIc,EAAKd,IAC/C,GAAIX,GAAQ,MAAMW,GAAG,KAAKe,CAAI,EAC5B,MAAO,GAGX,IAAKf,EAAI,EAAGc,EAAMzB,GAAQ,MAAM,OAAQW,EAAIc,EAAKd,IAC/C,GAAIX,GAAQ,MAAMW,GAAG,KAAKe,CAAI,EAC5B,MAAO,GAGX,MAAO,EACT,CAUA,SAASvB,GAAOkB,EAAK,CACnB,OAAIA,aAAe,MAAcA,EAAI,OAASA,EAAI,QAC3CA,CACT,ICzMA,IAAAM,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAMAD,GAAUC,GAAO,QAAU,KAC3BD,GAAQ,IAAME,GACdF,GAAQ,WAAaG,GACrBH,GAAQ,KAAOI,GACfJ,GAAQ,KAAOK,GACfL,GAAQ,UAAYM,GACpBN,GAAQ,QAAyB,OAAO,OAAtB,KACe,OAAO,OAAO,QAA7B,IACE,OAAO,QAAQ,MACfO,GAAa,EAMjCP,GAAQ,OAAS,CACf,gBACA,cACA,YACA,aACA,aACA,SACF,EAUA,SAASM,IAAY,CAInB,OAAI,OAAO,OAAW,KAAe,OAAO,SAAW,OAAO,QAAQ,OAAS,WACtE,GAKD,OAAO,SAAa,KAAe,SAAS,iBAAmB,SAAS,gBAAgB,OAAS,SAAS,gBAAgB,MAAM,kBAErI,OAAO,OAAW,KAAe,OAAO,UAAY,OAAO,QAAQ,SAAY,OAAO,QAAQ,WAAa,OAAO,QAAQ,QAG1H,OAAO,UAAc,KAAe,UAAU,WAAa,UAAU,UAAU,YAAY,EAAE,MAAM,gBAAgB,GAAK,SAAS,OAAO,GAAI,EAAE,GAAK,IAEnJ,OAAO,UAAc,KAAe,UAAU,WAAa,UAAU,UAAU,YAAY,EAAE,MAAM,oBAAoB,CAC5H,CAMAN,GAAQ,WAAW,EAAI,SAASQ,EAAG,CACjC,GAAI,CACF,OAAO,KAAK,UAAUA,CAAC,CACzB,OAASC,EAAP,CACA,MAAO,+BAAiCA,EAAI,OAC9C,CACF,EASA,SAASN,GAAWO,EAAM,CACxB,IAAIJ,EAAY,KAAK,UASrB,GAPAI,EAAK,IAAMJ,EAAY,KAAO,IAC1B,KAAK,WACJA,EAAY,MAAQ,KACrBI,EAAK,IACJJ,EAAY,MAAQ,KACrB,IAAMN,GAAQ,SAAS,KAAK,IAAI,EAEhC,EAACM,EAEL,KAAIK,EAAI,UAAY,KAAK,MACzBD,EAAK,OAAO,EAAG,EAAGC,EAAG,gBAAgB,EAKrC,IAAIC,EAAQ,EACRC,EAAQ,EACZH,EAAK,GAAG,QAAQ,cAAe,SAASI,EAAO,CAChCA,IAAT,OACJF,IACaE,IAAT,OAGFD,EAAQD,GAEZ,CAAC,EAEDF,EAAK,OAAOG,EAAO,EAAGF,CAAC,EACzB,CASA,SAAST,IAAM,CAGb,OAAoB,OAAO,SAApB,UACF,QAAQ,KACR,SAAS,UAAU,MAAM,KAAK,QAAQ,IAAK,QAAS,SAAS,CACpE,CASA,SAASE,GAAKW,EAAY,CACxB,GAAI,CACUA,GAAR,KACFf,GAAQ,QAAQ,WAAW,OAAO,EAElCA,GAAQ,QAAQ,MAAQe,CAE5B,MAAE,CAAU,CACd,CASA,SAASV,IAAO,CACd,IAAIW,EACJ,GAAI,CACFA,EAAIhB,GAAQ,QAAQ,KACtB,MAAE,CAAU,CAGZ,MAAI,CAACgB,GAAK,OAAO,QAAY,KAAe,QAAS,UACnDA,EAAI,QAAQ,IAAI,OAGXA,CACT,CAMAhB,GAAQ,OAAOK,GAAK,CAAC,EAarB,SAASE,IAAe,CACtB,GAAI,CACF,OAAO,OAAO,YAChB,MAAE,CAAW,CACf,ICxLA,IAAAU,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAIA,IAAIC,GAAM,QAAQ,OACdC,GAAO,QAAQ,QAQnBH,GAAUC,GAAO,QAAU,KAC3BD,GAAQ,KAAOI,GACfJ,GAAQ,IAAMK,GACdL,GAAQ,WAAaM,GACrBN,GAAQ,KAAOO,GACfP,GAAQ,KAAOQ,GACfR,GAAQ,UAAYS,GAMpBT,GAAQ,OAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAQlCA,GAAQ,YAAc,OAAO,KAAK,QAAQ,GAAG,EAAE,OAAO,SAAUU,EAAK,CACnE,MAAO,WAAW,KAAKA,CAAG,CAC5B,CAAC,EAAE,OAAO,SAAUC,EAAKD,EAAK,CAE5B,IAAIE,EAAOF,EACR,UAAU,CAAC,EACX,YAAY,EACZ,QAAQ,YAAa,SAAUG,EAAGC,EAAG,CAAE,OAAOA,EAAE,YAAY,CAAE,CAAC,EAG9DC,EAAM,QAAQ,IAAIL,GACtB,MAAI,2BAA2B,KAAKK,CAAG,EAAGA,EAAM,GACvC,6BAA6B,KAAKA,CAAG,EAAGA,EAAM,GAC9CA,IAAQ,OAAQA,EAAM,KAC1BA,EAAM,OAAOA,CAAG,EAErBJ,EAAIC,GAAQG,EACLJ,CACT,EAAG,CAAC,CAAC,EASL,IAAIK,GAAK,SAAS,QAAQ,IAAI,SAAU,EAAE,GAAK,EAErCA,KAAN,GAAkBA,KAAN,GACdb,GAAK,UAAU,UAAU,CAAC,EAAG,yKAAyK,EAAE,EAG1M,IAAIc,GAAeD,KAAN,EAAW,QAAQ,OACbA,KAAN,EAAW,QAAQ,OACnBE,GAA0BF,EAAE,EAMzC,SAASP,IAAY,CACnB,MAAO,WAAYT,GAAQ,YACvB,QAAQA,GAAQ,YAAY,MAAM,EAClCE,GAAI,OAAOc,EAAE,CACnB,CAMAhB,GAAQ,WAAW,EAAI,SAASmB,EAAG,CACjC,YAAK,YAAY,OAAS,KAAK,UACxBhB,GAAK,QAAQgB,EAAG,KAAK,WAAW,EACpC,MAAM;AAAA,CAAI,EAAE,IAAI,SAASC,EAAK,CAC7B,OAAOA,EAAI,KAAK,CAClB,CAAC,EAAE,KAAK,GAAG,CACf,EAMApB,GAAQ,WAAW,EAAI,SAASmB,EAAG,CACjC,YAAK,YAAY,OAAS,KAAK,UACxBhB,GAAK,QAAQgB,EAAG,KAAK,WAAW,CACzC,EAQA,SAASb,GAAWe,EAAM,CACxB,IAAIC,EAAO,KAAK,UACZb,EAAY,KAAK,UAErB,GAAIA,EAAW,CACb,IAAIc,EAAI,KAAK,MACTC,EAAS,WAAeD,EAAI,MAAQD,EAAO,WAE/CD,EAAK,GAAKG,EAASH,EAAK,GAAG,MAAM;AAAA,CAAI,EAAE,KAAK;AAAA,EAAOG,CAAM,EACzDH,EAAK,KAAK,SAAaE,EAAI,KAAOvB,GAAQ,SAAS,KAAK,IAAI,EAAI,SAAW,CAC7E,MACEqB,EAAK,GAAK,IAAI,KAAK,EAAE,YAAY,EAC7B,IAAMC,EAAO,IAAMD,EAAK,EAEhC,CAMA,SAAShB,IAAM,CACb,OAAOY,GAAO,MAAMd,GAAK,OAAO,MAAMA,GAAM,SAAS,EAAI;AAAA,CAAI,CAC/D,CASA,SAASI,GAAKkB,EAAY,CACZA,GAAR,KAGF,OAAO,QAAQ,IAAI,MAEnB,QAAQ,IAAI,MAAQA,CAExB,CASA,SAASjB,IAAO,CACd,OAAO,QAAQ,IAAI,KACrB,CASA,SAASU,GAA2BF,EAAI,CACtC,IAAIC,EACAS,EAAW,QAAQ,QAAQ,UAAU,EAIzC,OAAQA,EAAS,gBAAgBV,CAAE,EAAG,CACpC,IAAK,MACHC,EAAS,IAAIf,GAAI,YAAYc,CAAE,EAC/BC,EAAO,MAAQ,MAIXA,EAAO,SAAWA,EAAO,QAAQ,OACnCA,EAAO,QAAQ,MAAM,EAEvB,MAEF,IAAK,OACH,IAAIU,EAAK,QAAQ,MACjBV,EAAS,IAAIU,EAAG,gBAAgBX,EAAI,CAAE,UAAW,EAAM,CAAC,EACxDC,EAAO,MAAQ,KACf,MAEF,IAAK,OACL,IAAK,MACH,IAAIW,EAAM,QAAQ,OAClBX,EAAS,IAAIW,EAAI,OAAO,CACtB,GAAIZ,EACJ,SAAU,GACV,SAAU,EACZ,CAAC,EAMDC,EAAO,SAAW,GAClBA,EAAO,KAAO,KACdA,EAAO,MAAQ,OAIXA,EAAO,SAAWA,EAAO,QAAQ,OACnCA,EAAO,QAAQ,MAAM,EAEvB,MAEF,QAEE,MAAM,IAAI,MAAM,yCAAyC,CAC7D,CAGA,OAAAA,EAAO,GAAKD,EAEZC,EAAO,SAAW,GAEXA,CACT,CASA,SAASb,GAAMyB,EAAO,CACpBA,EAAM,YAAc,CAAC,EAGrB,QADIC,EAAO,OAAO,KAAK9B,GAAQ,WAAW,EACjC+B,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAC/BF,EAAM,YAAYC,EAAKC,IAAM/B,GAAQ,YAAY8B,EAAKC,GAE1D,CAMA/B,GAAQ,OAAOQ,GAAK,CAAC,ICvPrB,IAAAwB,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAKI,OAAO,QAAY,KAAe,QAAQ,OAAS,WACrDA,GAAO,QAAU,KAEjBA,GAAO,QAAU,OCRnB,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAaAA,GAAO,QAAUC,GAOjB,IAAIC,GAAS,QAAQ,UACjBC,GAAQ,QAAQ,MAAM,MAOtBC,GAAW,OAAO,UAAU,SAUhC,SAASC,GAAWC,EAAQ,CAC1B,GAAIA,EAAO,SAAW,EAEpB,MAAO,kCAIT,IAAIC,EAAOL,GACR,WAAW,MAAM,EACjB,OAAOI,EAAQ,MAAM,EACrB,OAAO,QAAQ,EACf,UAAU,EAAG,EAAE,EAGdE,EAAM,OAAOF,GAAW,SACxB,OAAO,WAAWA,EAAQ,MAAM,EAChCA,EAAO,OAEX,MAAO,IAAME,EAAI,SAAS,EAAE,EAAI,IAAMD,EAAO,GAC/C,CAYA,SAASN,GAAMK,EAAQG,EAAS,CAC9B,GAAIH,GAAU,KACZ,MAAM,IAAI,UAAU,6BAA6B,EAInD,IAAII,EAAUC,GAAQL,CAAM,EACxBM,EAAOH,GAAW,OAAOA,EAAQ,MAAS,UAC1CA,EAAQ,KACRC,EAGJ,GAAI,CAACA,GAAW,OAAOJ,GAAW,UAAY,CAAC,OAAO,SAASA,CAAM,EACnE,MAAM,IAAI,UAAU,qDAAqD,EAI3E,IAAIO,EAAMH,EACNI,GAAQR,CAAM,EACdD,GAAUC,CAAM,EAEpB,OAAOM,EACH,KAAOC,EACPA,CACN,CAUA,SAASF,GAASI,EAAK,CAErB,OAAI,OAAOZ,IAAU,YAAcY,aAAeZ,GACzC,GAIFY,GAAO,OAAOA,GAAQ,UAC3B,UAAWA,GAAOX,GAAS,KAAKW,EAAI,KAAK,IAAM,iBAC/C,UAAWA,GAAOX,GAAS,KAAKW,EAAI,KAAK,IAAM,iBAC/C,QAASA,GAAO,OAAOA,EAAI,KAAQ,UACnC,SAAUA,GAAO,OAAOA,EAAI,MAAS,QACzC,CAUA,SAASD,GAASE,EAAM,CACtB,IAAIC,EAAQD,EAAK,MAAM,QAAQ,EAAE,SAAS,EAAE,EACxCE,EAAOF,EAAK,KAAK,SAAS,EAAE,EAEhC,MAAO,IAAME,EAAO,IAAMD,EAAQ,GACpC,IClIA,IAAAE,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAcA,IAAIC,GAAgC,iCAOpCD,GAAO,QAAUE,GAWjB,SAASA,GAAOC,EAAYC,EAAY,CAEtC,IAAIC,EAAgBF,EAAW,qBAC3BG,EAAYH,EAAW,iBAG3B,GAAI,CAACE,GAAiB,CAACC,EACrB,MAAO,GAMT,IAAIC,EAAeJ,EAAW,iBAC9B,GAAII,GAAgBN,GAA8B,KAAKM,CAAY,EACjE,MAAO,GAIT,GAAID,GAAaA,IAAc,IAAK,CAClC,IAAIE,EAAOJ,EAAW,KAEtB,GAAI,CAACI,EACH,MAAO,GAKT,QAFIC,EAAY,GACZC,EAAUC,GAAeL,CAAS,EAC7BM,EAAI,EAAGA,EAAIF,EAAQ,OAAQE,IAAK,CACvC,IAAIC,EAAQH,EAAQE,GACpB,GAAIC,IAAUL,GAAQK,IAAU,KAAOL,GAAQ,KAAOK,IAAUL,EAAM,CACpEC,EAAY,GACZ,KACF,CACF,CAEA,GAAIA,EACF,MAAO,EAEX,CAGA,GAAIJ,EAAe,CACjB,IAAIS,EAAeV,EAAW,iBAC1BW,EAAgB,CAACD,GAAgB,EAAEE,GAAcF,CAAY,GAAKE,GAAcX,CAAa,GAEjG,GAAIU,EACF,MAAO,EAEX,CAEA,MAAO,EACT,CASA,SAASC,GAAeC,EAAM,CAC5B,IAAIC,EAAYD,GAAQ,KAAK,MAAMA,CAAI,EAGvC,OAAO,OAAOC,GAAc,SACxBA,EACA,GACN,CASA,SAASP,GAAgBQ,EAAK,CAM5B,QALIC,EAAM,EACNC,EAAO,CAAC,EACRC,EAAQ,EAGH,EAAI,EAAGC,EAAMJ,EAAI,OAAQ,EAAII,EAAK,IACzC,OAAQJ,EAAI,WAAW,CAAC,EAAG,CACzB,IAAK,IACCG,IAAUF,IACZE,EAAQF,EAAM,EAAI,GAEpB,MACF,IAAK,IACHC,EAAK,KAAKF,EAAI,UAAUG,EAAOF,CAAG,CAAC,EACnCE,EAAQF,EAAM,EAAI,EAClB,MACF,QACEA,EAAM,EAAI,EACV,KACJ,CAIF,OAAAC,EAAK,KAAKF,EAAI,UAAUG,EAAOF,CAAG,CAAC,EAE5BC,CACT,w29BCxIA,IAAAG,GAAAC,EAAA,CAAAC,GAAAC,KAAA,KAAIC,GAAO,QAAQ,QACfC,GAAK,QAAQ,MAEjB,SAASC,IAAO,CAEd,KAAK,MAAQ,OAAO,OAAO,IAAI,EAG/B,KAAK,WAAa,OAAO,OAAO,IAAI,CACtC,CAWAA,GAAK,UAAU,OAAS,SAAUC,EAAK,CACrC,QAASC,KAAQD,EAAK,CAEpB,QADIE,EAAOF,EAAIC,GACNE,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAC3B,QAAQ,IAAI,YAAc,KAAK,MAAMD,EAAKC,KAC5C,QAAQ,MAAM,KAAK,UAAY,YAAY,QAAQ,OAAQ,EAAE,EAAG,YAAcD,EAAKC,GAAK,yBACtF,KAAK,MAAMD,EAAKC,IAAM,OAASF,CAAI,EAGvC,KAAK,MAAMC,EAAKC,IAAMF,EAInB,KAAK,WAAWA,KACnB,KAAK,WAAWA,GAAQC,EAAK,GAEjC,CACF,EAUAH,GAAK,UAAU,KAAO,SAASK,EAAM,CACnC,KAAK,SAAWA,EAEhB,IAAIJ,EAAM,CAAC,EACPK,EAAUP,GAAG,aAAaM,EAAM,OAAO,EACvCE,EAAQD,EAAQ,MAAM,SAAS,EAEnCC,EAAM,QAAQ,SAASC,EAAM,CAE3B,IAAIC,EAASD,EAAK,QAAQ,oBAAqB,EAAE,EAAE,MAAM,KAAK,EAC9DP,EAAIQ,EAAO,MAAM,GAAKA,CACxB,CAAC,EAED,KAAK,OAAOR,CAAG,EAEf,KAAK,SAAW,IAClB,EAKAD,GAAK,UAAU,OAAS,SAASF,EAAMY,EAAU,CAC/C,IAAIC,EAAMb,EAAK,QAAQ,cAAe,EAAE,EAAE,YAAY,EAEtD,OAAO,KAAK,MAAMa,IAAQD,GAAY,KAAK,YAC7C,EAKAV,GAAK,UAAU,UAAY,SAASY,EAAU,CAC5C,IAAIV,EAAOU,EAAS,MAAM,yBAAyB,EAAE,GAAG,YAAY,EACpE,OAAO,KAAK,WAAWV,EACzB,EAGA,IAAIW,GAAO,IAAIb,GAGfa,GAAK,OAAO,IAAuB,EAGnCA,GAAK,aAAeA,GAAK,OAAO,KAAK,EAMrCA,GAAK,KAAOb,GAKZa,GAAK,SAAW,CACd,OAAQ,SAASD,EAAUF,EAAU,CAEnC,MAAQ,0CAA2C,KAAKE,CAAQ,EAAI,QAAUF,CAChF,CACF,EAEAb,GAAO,QAAUgB,KC3GjB,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAIA,IAAIC,GAAI,IACJC,GAAID,GAAI,GACRE,GAAID,GAAI,GACRE,GAAID,GAAI,GACRE,GAAID,GAAI,EACRE,GAAIF,GAAI,OAgBZJ,GAAO,QAAU,SAAUO,EAAKC,EAAS,CACvCA,EAAUA,GAAW,CAAC,EACtB,IAAIC,EAAO,OAAOF,EAClB,GAAIE,IAAS,UAAYF,EAAI,OAAS,EACpC,OAAOG,GAAMH,CAAG,EACX,GAAIE,IAAS,UAAY,SAASF,CAAG,EAC1C,OAAOC,EAAQ,KAAOG,GAAQJ,CAAG,EAAIK,GAASL,CAAG,EAEnD,MAAM,IAAI,MACR,wDACE,KAAK,UAAUA,CAAG,CACtB,CACF,EAUA,SAASG,GAAMG,EAAK,CAElB,GADAA,EAAM,OAAOA,CAAG,EACZ,EAAAA,EAAI,OAAS,KAGjB,KAAIC,EAAQ,mIAAmI,KAC7ID,CACF,EACA,GAAI,EAACC,EAGL,KAAIC,EAAI,WAAWD,EAAM,EAAE,EACvBL,GAAQK,EAAM,IAAM,MAAM,YAAY,EAC1C,OAAQL,EAAM,CACZ,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,OAAOM,EAAIT,GACb,IAAK,QACL,IAAK,OACL,IAAK,IACH,OAAOS,EAAIV,GACb,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOU,EAAIX,GACb,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,OAAOW,EAAIZ,GACb,IAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOY,EAAIb,GACb,IAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOa,EAAId,GACb,IAAK,eACL,IAAK,cACL,IAAK,QACL,IAAK,OACL,IAAK,KACH,OAAOc,EACT,QACE,MACJ,GACF,CAUA,SAASH,GAASI,EAAI,CACpB,IAAIC,EAAQ,KAAK,IAAID,CAAE,EACvB,OAAIC,GAASb,GACJ,KAAK,MAAMY,EAAKZ,EAAC,EAAI,IAE1Ba,GAASd,GACJ,KAAK,MAAMa,EAAKb,EAAC,EAAI,IAE1Bc,GAASf,GACJ,KAAK,MAAMc,EAAKd,EAAC,EAAI,IAE1Be,GAAShB,GACJ,KAAK,MAAMe,EAAKf,EAAC,EAAI,IAEvBe,EAAK,IACd,CAUA,SAASL,GAAQK,EAAI,CACnB,IAAIC,EAAQ,KAAK,IAAID,CAAE,EACvB,OAAIC,GAASb,GACJc,GAAOF,EAAIC,EAAOb,GAAG,KAAK,EAE/Ba,GAASd,GACJe,GAAOF,EAAIC,EAAOd,GAAG,MAAM,EAEhCc,GAASf,GACJgB,GAAOF,EAAIC,EAAOf,GAAG,QAAQ,EAElCe,GAAShB,GACJiB,GAAOF,EAAIC,EAAOhB,GAAG,QAAQ,EAE/Be,EAAK,KACd,CAMA,SAASE,GAAOF,EAAIC,EAAOF,EAAGI,EAAM,CAClC,IAAIC,EAAWH,GAASF,EAAI,IAC5B,OAAO,KAAK,MAAMC,EAAKD,CAAC,EAAI,IAAMI,GAAQC,EAAW,IAAM,GAC7D,ICjKA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAcAA,GAAO,QAAUC,GAYjB,SAASA,GAAaC,EAAMC,EAAKC,EAAS,CACxC,GAAI,OAAOD,GAAQ,SACjB,MAAM,IAAI,UAAU,+BAA+B,EAGrD,IAAIE,EAAQF,EAAI,QAAQ,GAAG,EAE3B,GAAIE,IAAU,GACZ,MAAO,GAIT,IAAIC,EAAMH,EAAI,MAAME,EAAQ,CAAC,EAAE,MAAM,GAAG,EACpCE,EAAS,CAAC,EAGdA,EAAO,KAAOJ,EAAI,MAAM,EAAGE,CAAK,EAGhC,QAASG,EAAI,EAAGA,EAAIF,EAAI,OAAQE,IAAK,CACnC,IAAIC,EAAQH,EAAIE,GAAG,MAAM,GAAG,EACxBE,EAAQ,SAASD,EAAM,GAAI,EAAE,EAC7BE,EAAM,SAASF,EAAM,GAAI,EAAE,EAG3B,MAAMC,CAAK,GACbA,EAAQR,EAAOS,EACfA,EAAMT,EAAO,GAEJ,MAAMS,CAAG,IAClBA,EAAMT,EAAO,GAIXS,EAAMT,EAAO,IACfS,EAAMT,EAAO,GAIX,QAAMQ,CAAK,GAAK,MAAMC,CAAG,GAAKD,EAAQC,GAAOD,EAAQ,IAKzDH,EAAO,KAAK,CACV,MAAOG,EACP,IAAKC,CACP,CAAC,CACH,CAEA,OAAIJ,EAAO,OAAS,EAEX,GAGFH,GAAWA,EAAQ,QACtBQ,GAAcL,CAAM,EACpBA,CACN,CAOA,SAASK,GAAeL,EAAQ,CAG9B,QAFIM,EAAUN,EAAO,IAAIO,EAAY,EAAE,KAAKC,EAAgB,EAEnDC,EAAI,EAAGR,EAAI,EAAGA,EAAIK,EAAQ,OAAQL,IAAK,CAC9C,IAAIC,EAAQI,EAAQL,GAChBS,EAAUJ,EAAQG,GAElBP,EAAM,MAAQQ,EAAQ,IAAM,EAE9BJ,EAAQ,EAAEG,GAAKP,EACNA,EAAM,IAAMQ,EAAQ,MAE7BA,EAAQ,IAAMR,EAAM,IACpBQ,EAAQ,MAAQ,KAAK,IAAIA,EAAQ,MAAOR,EAAM,KAAK,EAEvD,CAGAI,EAAQ,OAASG,EAAI,EAGrB,IAAIE,EAAWL,EAAQ,KAAKM,EAAgB,EAAE,IAAIC,EAAe,EAGjE,OAAAF,EAAS,KAAOX,EAAO,KAEhBW,CACT,CAOA,SAASJ,GAAcL,EAAOJ,EAAO,CACnC,MAAO,CACL,MAAOI,EAAM,MACb,IAAKA,EAAM,IACX,MAAOJ,CACT,CACF,CAOA,SAASe,GAAiBX,EAAO,CAC/B,MAAO,CACL,MAAOA,EAAM,MACb,IAAKA,EAAM,GACb,CACF,CAOA,SAASU,GAAkBE,EAAGC,EAAG,CAC/B,OAAOD,EAAE,MAAQC,EAAE,KACrB,CAOA,SAASP,GAAkBM,EAAGC,EAAG,CAC/B,OAAOD,EAAE,MAAQC,EAAE,KACrB,ICjKA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAcA,IAAIC,GAAc,KACdC,GAAQ,KAAiB,MAAM,EAC/BC,GAAY,KAAgB,MAAM,EAClCC,GAAU,KACVC,GAAY,KACZC,GAAa,KACbC,GAAO,KACPC,GAAQ,KACRC,GAAK,QAAQ,MACbC,GAAO,KACPC,GAAK,KACLC,GAAa,KACbC,GAAa,KACbC,GAAO,QAAQ,QACfC,GAAW,KACXC,GAAS,QAAQ,UACjBC,GAAO,QAAQ,QAOfC,GAAUJ,GAAK,QACfK,GAAOL,GAAK,KACZM,GAAYN,GAAK,UACjBO,GAAUP,GAAK,QACfQ,GAAMR,GAAK,IAOXS,GAAqB,YAOrBC,GAAa,GAAK,GAAK,GAAK,IAAM,IAOlCC,GAAiB,6BAOrBzB,GAAO,QAAU0B,GACjB1B,GAAO,QAAQ,KAAOU,GAYtB,SAASgB,GAAMC,EAAKb,EAAMc,EAAS,CACjC,OAAO,IAAIC,GAAWF,EAAKb,EAAMc,CAAO,CAC1C,CAWA,SAASC,GAAYF,EAAKb,EAAMc,EAAS,CACvCZ,GAAO,KAAK,IAAI,EAEhB,IAAIc,EAAOF,GAAW,CAAC,EAsBvB,GApBA,KAAK,QAAUE,EACf,KAAK,KAAOhB,EACZ,KAAK,IAAMa,EAEX,KAAK,cAAgBG,EAAK,eAAiB,OACvC,QAAQA,EAAK,YAAY,EACzB,GAEJ,KAAK,cAAgBA,EAAK,eAAiB,OACvC,QAAQA,EAAK,YAAY,EACzB,GAEJ,KAAK,MAAQA,EAAK,OAAS,OACvB,QAAQA,EAAK,IAAI,EACjB,GAEJ,KAAK,UAAYA,EAAK,WAAa,OAC/BA,EAAK,SACL,SAEA,KAAK,YAAc,UAAY,KAAK,YAAc,SAAW,KAAK,YAAc,OAClF,MAAM,IAAI,UAAU,sDAAsD,EAG5E,KAAK,QAAU,QAAQA,EAAK,MAAM,EAE9BA,EAAK,SAAW,QAClB3B,GAAU,2BAA8B,KAAK,QAAU,QAAU,UAAY,WAAY,EAIvF2B,EAAK,WAAa,SACpB,KAAK,UAAY,QAGnB,KAAK,YAAcA,EAAK,aAAe,OACnCC,GAAcD,EAAK,WAAY,mBAAmB,EAClD,CAAC,EAEL,KAAK,WAAaA,EAAK,YAAc,OACjC,QAAQA,EAAK,SAAS,EACtB,GAEJ,KAAK,OAASA,EAAK,QAAU,OACzBC,GAAcD,EAAK,MAAO,cAAc,EACxC,CAAC,YAAY,EAEjB,KAAK,cAAgBA,EAAK,eAAiB,OACvC,QAAQA,EAAK,YAAY,EACzB,GAEJ,KAAK,QAAUA,EAAK,QAAUA,EAAK,OACnC,KAAK,QAAU,OAAO,KAAK,SAAY,SACnCnB,GAAG,KAAK,OAAO,EACf,OAAO,KAAK,OAAO,EACvB,KAAK,QAAW,MAAM,KAAK,OAAO,EAE9B,EADA,KAAK,IAAI,KAAK,IAAI,EAAG,KAAK,OAAO,EAAGa,EAAU,EAGlD,KAAK,MAAQM,EAAK,KACdT,GAAQS,EAAK,IAAI,EACjB,KAEA,CAAC,KAAK,OAASA,EAAK,MACtB,KAAK,KAAKA,EAAK,IAAI,CAEvB,CAMAb,GAAK,SAASY,GAAYb,EAAM,EAUhCa,GAAW,UAAU,KAAO1B,GAAU,SAAS,SAAe6B,EAAK,CACjE,YAAK,MAAQ,QAAQA,CAAG,EACxB9B,GAAM,UAAW,KAAK,KAAK,EACpB,IACT,EAAG,gCAAgC,EAUnC2B,GAAW,UAAU,OAAS1B,GAAU,SAAS,SAAiB6B,EAAK,CACrE,YAAK,QAAU,QAAQA,CAAG,EAC1B,KAAK,UAAY,OACjB9B,GAAM,YAAa,KAAK,OAAO,EACxB,IACT,EAAG,kCAAkC,EAWrC2B,GAAW,UAAU,MAAQ1B,GAAU,SAAS,SAAgB8B,EAAO,CACrE,IAAIC,EAASD,EAAaF,GAAcE,EAAO,gBAAgB,EAA1C,CAAC,EACtB,OAAA/B,GAAM,WAAY+B,CAAK,EACvB,KAAK,OAASC,EACP,IACT,EAAG,kCAAkC,EAUrCL,GAAW,UAAU,KAAO,SAAef,EAAM,CAC/C,YAAK,MAAQO,GAAQ,OAAOP,CAAI,CAAC,EACjCZ,GAAM,UAAW,KAAK,KAAK,EACpB,IACT,EAEA2B,GAAW,UAAU,KAAO1B,GAAU,SAAS0B,GAAW,UAAU,KAClE,gCAAgC,EAElCA,GAAW,UAAU,KAAO1B,GAAU,SAAS0B,GAAW,UAAU,KAClE,gCAAgC,EAUlCA,GAAW,UAAU,OAAS1B,GAAU,SAAS,SAAiBgC,EAAQ,CACxE,YAAK,QAAU,OAAOA,GAAW,SAC7BxB,GAAGwB,CAAM,EACT,OAAOA,CAAM,EACjB,KAAK,QAAW,MAAM,KAAK,OAAO,EAE9B,EADA,KAAK,IAAI,KAAK,IAAI,EAAG,KAAK,OAAO,EAAGX,EAAU,EAElDtB,GAAM,aAAc,KAAK,OAAO,EACzB,IACT,EAAG,oCAAoC,EAUvC2B,GAAW,UAAU,MAAQ,SAAgBO,EAAQC,EAAK,CAExD,GAAIC,GAAa,KAAM,OAAO,EAC5B,OAAO,KAAK,KAAK,QAASC,GAAgBH,EAAQC,CAAG,CAAC,EAGxD,IAAIG,EAAM,KAAK,IACXC,EAAM1B,GAAS,QAAQqB,IAAW,OAAOA,CAAM,EAC/CM,EAAMC,GAAmB,QAASrC,GAAWmC,CAAG,CAAC,EAGrDG,GAAaJ,CAAG,EAGZH,GAAOA,EAAI,SACbQ,GAAWL,EAAKH,EAAI,OAAO,EAI7BG,EAAI,WAAaJ,EACjBI,EAAI,UAAU,eAAgB,0BAA0B,EACxDA,EAAI,UAAU,iBAAkB,OAAO,WAAWE,CAAG,CAAC,EACtDF,EAAI,UAAU,0BAA2B,oBAAoB,EAC7DA,EAAI,UAAU,yBAA0B,SAAS,EACjDA,EAAI,IAAIE,CAAG,CACb,EASAb,GAAW,UAAU,iBAAmB,UAA6B,CACnE,OAAO,KAAK,KAAK,KAAK,KAAK,OAAS,KAAO,GAC7C,EASAA,GAAW,UAAU,iBAAmB,UAA6B,CACnE,OAAO,KAAK,IAAI,QAAQ,aACtB,KAAK,IAAI,QAAQ,wBACjB,KAAK,IAAI,QAAQ,kBACjB,KAAK,IAAI,QAAQ,oBACrB,EASAA,GAAW,UAAU,sBAAwB,UAAkC,CAC7E,IAAIF,EAAM,KAAK,IACXa,EAAM,KAAK,IAGXM,EAAQnB,EAAI,QAAQ,YACxB,GAAImB,EAAO,CACT,IAAIvC,EAAOiC,EAAI,UAAU,MAAM,EAC/B,MAAO,CAACjC,GAASuC,IAAU,KAAOC,GAAeD,CAAK,EAAE,MAAM,SAAUA,EAAO,CAC7E,OAAOA,IAAUvC,GAAQuC,IAAU,KAAOvC,GAAQ,KAAOuC,IAAUvC,CACrE,CAAC,CACH,CAGA,IAAIyC,EAAkBC,GAActB,EAAI,QAAQ,sBAAsB,EACtE,GAAI,CAAC,MAAMqB,CAAe,EAAG,CAC3B,IAAIE,EAAeD,GAAcT,EAAI,UAAU,eAAe,CAAC,EAC/D,OAAO,MAAMU,CAAY,GAAKA,EAAeF,CAC/C,CAEA,MAAO,EACT,EAQAnB,GAAW,UAAU,0BAA4B,UAAsC,CACrF,IAAIW,EAAM,KAAK,IAEfA,EAAI,aAAa,kBAAkB,EACnCA,EAAI,aAAa,kBAAkB,EACnCA,EAAI,aAAa,gBAAgB,EACjCA,EAAI,aAAa,eAAe,EAChCA,EAAI,aAAa,cAAc,CACjC,EAQAX,GAAW,UAAU,YAAc,UAAwB,CACzD,IAAIW,EAAM,KAAK,IACftC,GAAM,cAAc,EACpB,KAAK,0BAA0B,EAC/BsC,EAAI,WAAa,IACjBA,EAAI,IAAI,CACV,EAQAX,GAAW,UAAU,mBAAqB,UAA+B,CACvE,IAAIQ,EAAM,IAAI,MAAM,wCAAyC,EAC7DnC,GAAM,sBAAsB,EAC5B,KAAK,MAAM,IAAKmC,CAAG,CACrB,EAUAR,GAAW,UAAU,WAAa,UAAuB,CACvD,IAAIsB,EAAa,KAAK,IAAI,WAC1B,OAAQA,GAAc,KAAOA,EAAa,KACxCA,IAAe,GACnB,EASAtB,GAAW,UAAU,YAAc,SAAsBuB,EAAO,CAC9D,OAAQA,EAAM,KAAM,CAClB,IAAK,eACL,IAAK,SACL,IAAK,UACH,KAAK,MAAM,IAAKA,CAAK,EACrB,MACF,QACE,KAAK,MAAM,IAAKA,CAAK,EACrB,KACJ,CACF,EASAvB,GAAW,UAAU,QAAU,UAAoB,CACjD,OAAOrB,GAAM,KAAK,IAAI,QAAS,CAC7B,KAAM,KAAK,IAAI,UAAU,MAAM,EAC/B,gBAAiB,KAAK,IAAI,UAAU,eAAe,CACrD,CAAC,CACH,EASAqB,GAAW,UAAU,aAAe,UAAyB,CAC3D,IAAIwB,EAAU,KAAK,IAAI,QAAQ,YAE/B,GAAI,CAACA,EACH,MAAO,GAIT,GAAIA,EAAQ,QAAQ,GAAG,IAAM,GAAI,CAC/B,IAAI9C,EAAO,KAAK,IAAI,UAAU,MAAM,EACpC,OAAO,QAAQA,GAAQ8C,EAAQ,QAAQ9C,CAAI,IAAM,EAAE,CACrD,CAGA,IAAI2C,EAAe,KAAK,IAAI,UAAU,eAAe,EACrD,OAAOD,GAAcC,CAAY,GAAKD,GAAcI,CAAO,CAC7D,EASAxB,GAAW,UAAU,SAAW,SAAmBf,EAAM,CACvD,IAAI0B,EAAM,KAAK,IAEf,GAAIF,GAAa,KAAM,WAAW,EAAG,CACnC,KAAK,KAAK,YAAaE,EAAK1B,CAAI,EAChC,MACF,CAEA,GAAI,KAAK,iBAAiB,EAAG,CAC3B,KAAK,MAAM,GAAG,EACd,MACF,CAEA,IAAIwC,EAAMjD,GAAUkD,GAAuB,KAAK,KAAO,GAAG,CAAC,EACvDb,EAAMC,GAAmB,cAAe,2BAA6BrC,GAAWgD,CAAG,EAAI,KACzFhD,GAAWgD,CAAG,EAAI,MAAM,EAG1Bd,EAAI,WAAa,IACjBA,EAAI,UAAU,eAAgB,0BAA0B,EACxDA,EAAI,UAAU,iBAAkB,OAAO,WAAWE,CAAG,CAAC,EACtDF,EAAI,UAAU,0BAA2B,oBAAoB,EAC7DA,EAAI,UAAU,yBAA0B,SAAS,EACjDA,EAAI,UAAU,WAAYc,CAAG,EAC7Bd,EAAI,IAAIE,CAAG,CACb,EAUAb,GAAW,UAAU,KAAO,SAAeW,EAAK,CAE9C,IAAIgB,EAAO,KAAK,MAGhB,KAAK,IAAMhB,EAGX,IAAI1B,EAAO2C,GAAO,KAAK,IAAI,EAC3B,GAAI3C,IAAS,GACX,YAAK,MAAM,GAAG,EACP0B,EAIT,GAAI,CAAC1B,EAAK,QAAQ,IAAI,EACpB,YAAK,MAAM,GAAG,EACP0B,EAGT,IAAIkB,EACJ,GAAIF,IAAS,KAAM,CAOjB,GALI1C,IACFA,EAAOM,GAAU,IAAME,GAAMR,CAAI,GAI/BW,GAAe,KAAKX,CAAI,EAC1B,OAAAZ,GAAM,sBAAuBY,CAAI,EACjC,KAAK,MAAM,GAAG,EACP0B,EAITkB,EAAQ5C,EAAK,MAAMQ,EAAG,EAGtBR,EAAOM,GAAUD,GAAKqC,EAAM1C,CAAI,CAAC,CACnC,KAAO,CAEL,GAAIW,GAAe,KAAKX,CAAI,EAC1B,OAAAZ,GAAM,sBAAuBY,CAAI,EACjC,KAAK,MAAM,GAAG,EACP0B,EAITkB,EAAQtC,GAAUN,CAAI,EAAE,MAAMQ,EAAG,EAGjCR,EAAOO,GAAQP,CAAI,CACrB,CAGA,GAAI6C,GAAgBD,CAAK,EAAG,CAC1B,IAAIE,EAAS,KAAK,UAUlB,OAPIA,IAAW,SACbA,EAASF,EAAMA,EAAM,OAAS,GAAG,KAAO,IACnC,KAAK,QAAU,QAAU,SAC1B,SAGNxD,GAAM,kBAAmB0D,EAAQ9C,CAAI,EAC7B8C,EAAQ,CACd,IAAK,QACH,MACF,IAAK,OACH,YAAK,MAAM,GAAG,EACPpB,EACT,IAAK,SACL,QACE,YAAK,MAAM,GAAG,EACPA,CACX,CACF,CAGA,OAAI,KAAK,OAAO,QAAU,KAAK,iBAAiB,GAC9C,KAAK,UAAU1B,CAAI,EACZ0B,IAGT,KAAK,SAAS1B,CAAI,EACX0B,EACT,EASAX,GAAW,UAAU,KAAO,SAAef,EAAM+C,EAAM,CACrD,IAAIC,EAAMD,EAAK,KACXjC,EAAU,KAAK,QACfE,EAAO,CAAC,EACRU,EAAM,KAAK,IACXb,EAAM,KAAK,IACXoC,EAASpC,EAAI,QAAQ,MACrBqC,EAASpC,EAAQ,OAAS,EAE9B,GAAIqC,GAAYzB,CAAG,EAAG,CAEpB,KAAK,mBAAmB,EACxB,MACF,CAWA,GATAtC,GAAM,YAAaY,CAAI,EAGvB,KAAK,UAAUA,EAAM+C,CAAI,EAGzB,KAAK,KAAK/C,CAAI,EAGV,KAAK,iBAAiB,EAAG,CAC3B,GAAI,KAAK,sBAAsB,EAAG,CAChC,KAAK,MAAM,GAAG,EACd,MACF,CAEA,GAAI,KAAK,WAAW,GAAK,KAAK,QAAQ,EAAG,CACvC,KAAK,YAAY,EACjB,MACF,CACF,CAIA,GADAgD,EAAM,KAAK,IAAI,EAAGA,EAAME,CAAM,EAC1BpC,EAAQ,MAAQ,OAAW,CAC7B,IAAIsC,EAAQtC,EAAQ,IAAMoC,EAAS,EAC/BF,EAAMI,IAAOJ,EAAMI,EACzB,CAGA,GAAI,KAAK,eAAiB3C,GAAmB,KAAKwC,CAAM,EAAG,CAazD,GAXAA,EAASlD,GAAWiD,EAAKC,EAAQ,CAC/B,QAAS,EACX,CAAC,EAGI,KAAK,aAAa,IACrB7D,GAAM,aAAa,EACnB6D,EAAS,IAIPA,IAAW,GACb,OAAA7D,GAAM,qBAAqB,EAG3BsC,EAAI,UAAU,gBAAiB2B,GAAa,QAASL,CAAG,CAAC,EAGlD,KAAK,MAAM,IAAK,CACrB,QAAS,CAAE,gBAAiBtB,EAAI,UAAU,eAAe,CAAE,CAC7D,CAAC,EAICuB,IAAW,IAAMA,EAAO,SAAW,IACrC7D,GAAM,WAAY6D,CAAM,EAGxBvB,EAAI,WAAa,IACjBA,EAAI,UAAU,gBAAiB2B,GAAa,QAASL,EAAKC,EAAO,EAAE,CAAC,EAGpEC,GAAUD,EAAO,GAAG,MACpBD,EAAMC,EAAO,GAAG,IAAMA,EAAO,GAAG,MAAQ,EAE5C,CAGA,QAASK,KAAQxC,EACfE,EAAKsC,GAAQxC,EAAQwC,GAWvB,GAPAtC,EAAK,MAAQkC,EACblC,EAAK,IAAM,KAAK,IAAIkC,EAAQA,EAASF,EAAM,CAAC,EAG5CtB,EAAI,UAAU,iBAAkBsB,CAAG,EAG/BnC,EAAI,SAAW,OAAQ,CACzBa,EAAI,IAAI,EACR,MACF,CAEA,KAAK,OAAO1B,EAAMgB,CAAI,CACxB,EAQAD,GAAW,UAAU,SAAW,SAAmBf,EAAM,CACvD,IAAIuD,EAAI,EACJC,EAAO,KAEXpE,GAAM,YAAaY,CAAI,EACvBL,GAAG,KAAKK,EAAM,SAAiBuB,EAAKwB,EAAM,CACxC,GAAIxB,GAAOA,EAAI,OAAS,UAAY,CAACnB,GAAQJ,CAAI,GAAKA,EAAKA,EAAK,OAAS,KAAOQ,GAE9E,OAAOiD,EAAKlC,CAAG,EAEjB,GAAIA,EAAK,OAAOiC,EAAK,YAAYjC,CAAG,EACpC,GAAIwB,EAAK,YAAY,EAAG,OAAOS,EAAK,SAASxD,CAAI,EACjDwD,EAAK,KAAK,OAAQxD,EAAM+C,CAAI,EAC5BS,EAAK,KAAKxD,EAAM+C,CAAI,CACtB,CAAC,EAED,SAASU,EAAMlC,EAAK,CAClB,GAAIiC,EAAK,YAAY,QAAUD,EAC7B,OAAOhC,EACHiC,EAAK,YAAYjC,CAAG,EACpBiC,EAAK,MAAM,GAAG,EAGpB,IAAIE,EAAI1D,EAAO,IAAMwD,EAAK,YAAYD,KAEtCnE,GAAM,YAAasE,CAAC,EACpB/D,GAAG,KAAK+D,EAAG,SAAUnC,EAAKwB,EAAM,CAC9B,GAAIxB,EAAK,OAAOkC,EAAKlC,CAAG,EACxB,GAAIwB,EAAK,YAAY,EAAG,OAAOU,EAAK,EACpCD,EAAK,KAAK,OAAQE,EAAGX,CAAI,EACzBS,EAAK,KAAKE,EAAGX,CAAI,CACnB,CAAC,CACH,CACF,EAQAhC,GAAW,UAAU,UAAY,SAAoBf,EAAM,CACzD,IAAIuD,EAAI,GACJC,EAAO,KAEX,SAASC,EAAMlC,EAAK,CAClB,GAAI,EAAEgC,GAAKC,EAAK,OAAO,OACrB,OAAIjC,EAAYiC,EAAK,YAAYjC,CAAG,EAC7BiC,EAAK,MAAM,GAAG,EAGvB,IAAIE,EAAIrD,GAAKL,EAAMwD,EAAK,OAAOD,EAAE,EAEjCnE,GAAM,YAAasE,CAAC,EACpB/D,GAAG,KAAK+D,EAAG,SAAUnC,EAAKwB,EAAM,CAC9B,GAAIxB,EAAK,OAAOkC,EAAKlC,CAAG,EACxB,GAAIwB,EAAK,YAAY,EAAG,OAAOU,EAAK,EACpCD,EAAK,KAAK,OAAQE,EAAGX,CAAI,EACzBS,EAAK,KAAKE,EAAGX,CAAI,CACnB,CAAC,CACH,CAEAU,EAAK,CACP,EAUA1C,GAAW,UAAU,OAAS,SAAiBf,EAAMc,EAAS,CAC5D,IAAI0C,EAAO,KACP9B,EAAM,KAAK,IAGXiC,EAAShE,GAAG,iBAAiBK,EAAMc,CAAO,EAC9C,KAAK,KAAK,SAAU6C,CAAM,EAC1BA,EAAO,KAAKjC,CAAG,EAGf,SAASkC,GAAW,CAClBtE,GAAQqE,EAAQ,EAAI,CACtB,CAGA7D,GAAW4B,EAAKkC,CAAO,EAGvBD,EAAO,GAAG,QAAS,SAAkBpC,EAAK,CAExCqC,EAAQ,EAGRJ,EAAK,YAAYjC,CAAG,CACtB,CAAC,EAGDoC,EAAO,GAAG,MAAO,UAAkB,CACjCH,EAAK,KAAK,KAAK,CACjB,CAAC,CACH,EAUAzC,GAAW,UAAU,KAAO,SAAef,EAAM,CAC/C,IAAI0B,EAAM,KAAK,IAEf,GAAI,CAAAA,EAAI,UAAU,cAAc,EAEhC,KAAImC,EAAOjE,GAAK,OAAOI,CAAI,EAE3B,GAAI,CAAC6D,EAAM,CACTzE,GAAM,iBAAiB,EACvB,MACF,CAEA,IAAI0E,EAAUlE,GAAK,SAAS,OAAOiE,CAAI,EAEvCzE,GAAM,kBAAmByE,CAAI,EAC7BnC,EAAI,UAAU,eAAgBmC,GAAQC,EAAU,aAAeA,EAAU,GAAG,EAC9E,EAWA/C,GAAW,UAAU,UAAY,SAAoBf,EAAM+C,EAAM,CAC/D,IAAIrB,EAAM,KAAK,IASf,GAPA,KAAK,KAAK,UAAWA,EAAK1B,EAAM+C,CAAI,EAEhC,KAAK,eAAiB,CAACrB,EAAI,UAAU,eAAe,IACtDtC,GAAM,eAAe,EACrBsC,EAAI,UAAU,gBAAiB,OAAO,GAGpC,KAAK,eAAiB,CAACA,EAAI,UAAU,eAAe,EAAG,CACzD,IAAIqC,EAAe,mBAAqB,KAAK,MAAM,KAAK,QAAU,GAAI,EAElE,KAAK,aACPA,GAAgB,eAGlB3E,GAAM,mBAAoB2E,CAAY,EACtCrC,EAAI,UAAU,gBAAiBqC,CAAY,CAC7C,CAEA,GAAI,KAAK,eAAiB,CAACrC,EAAI,UAAU,eAAe,EAAG,CACzD,IAAIsC,EAAWjB,EAAK,MAAM,YAAY,EACtC3D,GAAM,cAAe4E,CAAQ,EAC7BtC,EAAI,UAAU,gBAAiBsC,CAAQ,CACzC,CAEA,GAAI,KAAK,OAAS,CAACtC,EAAI,UAAU,MAAM,EAAG,CACxC,IAAIR,EAAMzB,GAAKsD,CAAI,EACnB3D,GAAM,UAAW8B,CAAG,EACpBQ,EAAI,UAAU,OAAQR,CAAG,CAC3B,CACF,EASA,SAASY,GAAcJ,EAAK,CAG1B,QAFIuC,EAAUC,GAAexC,CAAG,EAEvB6B,EAAI,EAAGA,EAAIU,EAAQ,OAAQV,IAClC7B,EAAI,aAAauC,EAAQV,EAAE,CAE/B,CAQA,SAASd,GAAwB0B,EAAK,CACpC,QAASZ,EAAI,EAAGA,EAAIY,EAAI,QAClBA,EAAIZ,KAAO,IADeA,IAC9B,CAKF,OAAOA,EAAI,EACP,IAAMY,EAAI,OAAOZ,CAAC,EAClBY,CACN,CAQA,SAAStB,GAAiBD,EAAO,CAC/B,QAASW,EAAI,EAAGA,EAAIX,EAAM,OAAQW,IAAK,CACrC,IAAIa,EAAOxB,EAAMW,GACjB,GAAIa,EAAK,OAAS,GAAKA,EAAK,KAAO,IACjC,MAAO,EAEX,CAEA,MAAO,EACT,CAUA,SAASf,GAAcQ,EAAMQ,EAAMC,EAAO,CACxC,OAAOT,EAAO,KAAOS,EAAQA,EAAM,MAAQ,IAAMA,EAAM,IAAM,KAAO,IAAMD,CAC5E,CAUA,SAASxC,GAAoB0C,EAAOC,EAAM,CACxC,MAAO;AAAA;AAAA;AAAA;AAAA,SAIOD,EAAQ;AAAA;AAAA;AAAA,OAGVC,EAAO;AAAA;AAAA;AAAA,CAGrB,CAUA,SAAS/C,GAAiBH,EAAQC,EAAK,CACrC,OAAKA,EAIEA,aAAe,MAClBpC,GAAYmC,EAAQC,EAAK,CAAE,OAAQ,EAAM,CAAC,EAC1CpC,GAAYmC,EAAQC,CAAG,EALlBpC,GAAYmC,CAAM,CAM7B,CAYA,SAASqB,GAAQ3C,EAAM,CACrB,GAAI,CACF,OAAO,mBAAmBA,CAAI,CAChC,MAAE,CACA,MAAO,EACT,CACF,CAUA,SAASkE,GAAgBxC,EAAK,CAC5B,OAAO,OAAOA,EAAI,gBAAmB,WACjC,OAAO,KAAKA,EAAI,UAAY,CAAC,CAAC,EAC9BA,EAAI,eAAe,CACzB,CAcA,SAASF,GAAciD,EAASZ,EAAM,CACpC,IAAIa,EAAQ,OAAOD,EAAQ,eAAkB,WACzCA,EAAQ,UAAUZ,CAAI,EAAE,OACxBY,EAAQ,cAAcZ,CAAI,EAE9B,OAAOa,EAAQ,CACjB,CAUA,SAASvB,GAAazB,EAAK,CACzB,OAAO,OAAOA,EAAI,aAAgB,UAC9B,QAAQA,EAAI,OAAO,EACnBA,EAAI,WACV,CAUA,SAAST,GAAeC,EAAKyD,EAAM,CAGjC,QAFIC,EAAO,CAAC,EAAE,OAAO1D,GAAO,CAAC,CAAC,EAErBqC,EAAI,EAAGA,EAAIqB,EAAK,OAAQrB,IAC/B,GAAI,OAAOqB,EAAKrB,IAAO,SACrB,MAAM,IAAI,UAAUoB,EAAO,oCAAoC,EAInE,OAAOC,CACT,CASA,SAASzC,GAAe0C,EAAM,CAC5B,IAAIC,EAAYD,GAAQ,KAAK,MAAMA,CAAI,EAEvC,OAAO,OAAOC,GAAc,SACxBA,EACA,GACN,CASA,SAAS7C,GAAgBkC,EAAK,CAM5B,QALIY,EAAM,EACNH,EAAO,CAAC,EACRI,EAAQ,EAGH,EAAI,EAAGhC,EAAMmB,EAAI,OAAQ,EAAInB,EAAK,IACzC,OAAQmB,EAAI,WAAW,CAAC,EAAG,CACzB,IAAK,IACCa,IAAUD,IACZC,EAAQD,EAAM,EAAI,GAEpB,MACF,IAAK,IACCC,IAAUD,GACZH,EAAK,KAAKT,EAAI,UAAUa,EAAOD,CAAG,CAAC,EAErCC,EAAQD,EAAM,EAAI,EAClB,MACF,QACEA,EAAM,EAAI,EACV,KACJ,CAIF,OAAIC,IAAUD,GACZH,EAAK,KAAKT,EAAI,UAAUa,EAAOD,CAAG,CAAC,EAG9BH,CACT,CAUA,SAAS7C,GAAYL,EAAKuC,EAAS,CAGjC,QAFIgB,EAAO,OAAO,KAAKhB,CAAO,EAErBV,EAAI,EAAGA,EAAI0B,EAAK,OAAQ1B,IAAK,CACpC,IAAI2B,EAAMD,EAAK1B,GACf7B,EAAI,UAAUwD,EAAKjB,EAAQiB,EAAI,CACjC,CACF,ICtnCA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAaAA,GAAO,QAAUC,GAUjB,SAASA,GAAWC,EAAK,CACvB,GAAI,CAACA,EACH,MAAM,IAAI,UAAU,0BAA0B,EAIhD,IAAIC,EAAaC,GAAMF,EAAI,QAAQ,oBAAsB,EAAE,EACvDG,EAAaC,GAAcJ,CAAG,EAC9BK,EAAQ,CAACF,CAAU,EAAE,OAAOF,CAAU,EAG1C,OAAOI,CACT,CAUA,SAASD,GAAeJ,EAAK,CAC3B,OAAOA,EAAI,OACPA,EAAI,OAAO,cACXA,EAAI,WAAW,aACrB,CASA,SAASE,GAAOI,EAAQ,CAMtB,QALIC,EAAMD,EAAO,OACbE,EAAO,CAAC,EACRC,EAAQH,EAAO,OAGV,EAAIA,EAAO,OAAS,EAAG,GAAK,EAAG,IACtC,OAAQA,EAAO,WAAW,CAAC,EAAG,CAC5B,IAAK,IACCG,IAAUF,IACZE,EAAQF,EAAM,GAEhB,MACF,IAAK,IACCE,IAAUF,GACZC,EAAK,KAAKF,EAAO,UAAUG,EAAOF,CAAG,CAAC,EAExCE,EAAQF,EAAM,EACd,MACF,QACEE,EAAQ,EACR,KACJ,CAIF,OAAIA,IAAUF,GACZC,EAAK,KAAKF,EAAO,UAAUG,EAAOF,CAAG,CAAC,EAGjCC,CACT,ICzFA,IAAAE,GAAAC,EAAA,CAAAC,GAAAC,KAAA,EAAC,UAAW,CACV,IAAIC,EAAYC,EAAQC,EAAUC,EAAaC,EAAUC,EAAaC,EAAWC,EAAMC,EAEvFP,EAAS,CAAC,EAEVM,EAAO,KAEF,OAAOR,GAAW,KAAeA,KAAW,MAASA,GAAO,QAC/DA,GAAO,QAAUE,EAEjBM,EAAK,OAAYN,EAGnBK,EAAY,SAASG,EAAOC,EAAQC,EAAUC,EAAU,CACtD,IAAIC,EAAMC,EACV,GAAIL,EAAM,SAAWC,EAAO,OAC1B,MAAM,IAAI,MAAM,8DAA8D,EAGhF,IADAG,EAAO,EACAD,EAAW,GAAG,CAKnB,GAJAE,EAAQH,EAAWC,EACfE,EAAQ,IACVA,EAAQ,GAENL,EAAMI,IAASC,IAAUJ,EAAOG,IAASC,EAC3C,MAAO,GAETF,GAAYD,EACZE,GAAQ,CACV,CACA,MAAO,EACT,EAEAZ,EAAO,YAAc,SAASc,EAASC,EAAWC,EAAa,CAC7D,IAAIC,EAAGC,EAAKC,EAAWC,EAAcC,EACjCL,GAAe,OACjBA,EAAc,WAEhB,IAAKG,KAAaJ,EAKhB,IAJAK,EAAeL,EAAUI,GACrBC,EAAa,IAAM,EAAEA,EAAa,aAAc,SAClDA,EAAe,CAACA,CAAY,GAEzBH,EAAI,EAAGC,EAAME,EAAa,OAAQH,EAAIC,EAAKD,IAE9C,GADAI,EAASD,EAAaH,GAClBH,EAAQ,KAAK,IAAMO,EAAO,GAAG,KAAK,GAChCP,EAAQ,MAAM,MAAMA,EAASO,CAAM,EACrC,OAAOF,EAKf,OAAOH,CACT,EAEAhB,EAAO,KAAQ,UAAW,CACxB,SAASsB,EAAKC,EAAQ,CACpB,IAAIN,EAAGC,EAAKM,EACZ,GAAID,EAAO,SAAW,EACpB,MAAM,IAAI,MAAM,sCAAsC,EAExD,IAAKN,EAAI,EAAGC,EAAMK,EAAO,OAAQN,EAAIC,EAAKD,IAExC,GADAO,EAAQD,EAAON,GACX,EAAG,GAAKO,GAASA,GAAS,KAC5B,MAAM,IAAI,MAAM,yCAAyC,EAG7D,KAAK,OAASD,CAChB,CAEA,OAAAD,EAAK,UAAU,KAAO,UAAW,CAC/B,MAAO,MACT,EAEAA,EAAK,UAAU,SAAW,UAAW,CACnC,OAAO,KAAK,OAAO,KAAK,GAAG,CAC7B,EAEAA,EAAK,UAAU,mBAAqB,UAAW,CAC7C,OAAO,KAAK,SAAS,CACvB,EAEAA,EAAK,UAAU,YAAc,UAAW,CACtC,OAAO,KAAK,OAAO,MAAM,CAAC,CAC5B,EAEAA,EAAK,UAAU,MAAQ,SAASG,EAAOC,EAAW,CAChD,IAAIC,EAIJ,GAHID,IAAc,SAChBC,EAAMF,EAAOA,EAAQE,EAAI,GAAID,EAAYC,EAAI,IAE3CF,EAAM,KAAK,IAAM,OACnB,MAAM,IAAI,MAAM,qDAAqD,EAEvE,OAAOpB,EAAU,KAAK,OAAQoB,EAAM,OAAQ,EAAGC,CAAS,CAC1D,EAEAJ,EAAK,UAAU,cAAgB,CAC7B,YAAa,CAAC,CAAC,IAAIA,EAAK,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,CAAC,CAAC,EACzC,UAAW,CAAC,CAAC,IAAIA,EAAK,CAAC,IAAK,IAAK,IAAK,GAAG,CAAC,EAAG,EAAE,CAAC,EAChD,UAAW,CAAC,CAAC,IAAIA,EAAK,CAAC,IAAK,EAAG,EAAG,CAAC,CAAC,EAAG,CAAC,CAAC,EACzC,UAAW,CAAC,CAAC,IAAIA,EAAK,CAAC,IAAK,IAAK,EAAG,CAAC,CAAC,EAAG,EAAE,CAAC,EAC5C,SAAU,CAAC,CAAC,IAAIA,EAAK,CAAC,IAAK,EAAG,EAAG,CAAC,CAAC,EAAG,CAAC,CAAC,EACxC,gBAAiB,CAAC,CAAC,IAAIA,EAAK,CAAC,IAAK,GAAI,EAAG,CAAC,CAAC,EAAG,EAAE,CAAC,EACjD,QAAW,CAAC,CAAC,IAAIA,EAAK,CAAC,GAAI,EAAG,EAAG,CAAC,CAAC,EAAG,CAAC,EAAG,CAAC,IAAIA,EAAK,CAAC,IAAK,GAAI,EAAG,CAAC,CAAC,EAAG,EAAE,EAAG,CAAC,IAAIA,EAAK,CAAC,IAAK,IAAK,EAAG,CAAC,CAAC,EAAG,EAAE,CAAC,EAC3G,SAAU,CAAC,CAAC,IAAIA,EAAK,CAAC,IAAK,EAAG,EAAG,CAAC,CAAC,EAAG,EAAE,EAAG,CAAC,IAAIA,EAAK,CAAC,IAAK,EAAG,EAAG,CAAC,CAAC,EAAG,EAAE,EAAG,CAAC,IAAIA,EAAK,CAAC,IAAK,GAAI,GAAI,CAAC,CAAC,EAAG,EAAE,EAAG,CAAC,IAAIA,EAAK,CAAC,IAAK,GAAI,IAAK,CAAC,CAAC,EAAG,EAAE,EAAG,CAAC,IAAIA,EAAK,CAAC,IAAK,EAAG,IAAK,CAAC,CAAC,EAAG,EAAE,EAAG,CAAC,IAAIA,EAAK,CAAC,IAAK,EAAG,EAAG,CAAC,CAAC,EAAG,CAAC,CAAC,CACjN,EAEAA,EAAK,UAAU,MAAQ,UAAW,CAChC,OAAOtB,EAAO,YAAY,KAAM,KAAK,aAAa,CACpD,EAEAsB,EAAK,UAAU,oBAAsB,UAAW,CAC9C,OAAOtB,EAAO,KAAK,MAAM,UAAa,KAAK,SAAS,CAAE,CACxD,EAEAsB,EAAK,UAAU,2BAA6B,UAAW,CACrD,IAAIM,EAAMC,EAAGZ,EAAGO,EAAOM,EAAMC,EAAOC,EAcpC,IAbAA,EAAY,CACV,EAAG,EACH,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,CACP,EACAJ,EAAO,EACPE,EAAO,GACFD,EAAIZ,EAAI,EAAGA,GAAK,EAAGY,EAAIZ,GAAK,GAE/B,GADAO,EAAQ,KAAK,OAAOK,GAChBL,KAASQ,EAAW,CAEtB,GADAD,EAAQC,EAAUR,GACdM,GAAQC,IAAU,EACpB,OAAO,KAELA,IAAU,IACZD,EAAO,IAETF,GAAQG,CACV,KACE,QAAO,KAGX,MAAO,IAAKH,CACd,EAEON,CAET,EAAG,EAEHrB,EAAW,uBAEXC,EAAc,CACZ,UAAW,IAAI,OAAO,IAAMD,EAAW,MAAQA,EAAW,MAAQA,EAAW,MAAQA,EAAW,IAAK,GAAG,EACxG,UAAW,IAAI,OAAO,IAAMA,EAAW,IAAK,GAAG,CACjD,EAEAD,EAAO,KAAK,OAAS,SAASiC,EAAQ,CACpC,IAAIC,EAAOC,EAAcvB,EAAMC,EAAOuB,EAQtC,GAPAD,EAAe,SAASF,EAAQ,CAC9B,OAAIA,EAAO,KAAO,KAAOA,EAAO,KAAO,IAC9B,SAASA,EAAQ,CAAC,EAElB,SAASA,CAAM,CAE1B,EACIC,EAAQD,EAAO,MAAM/B,EAAY,SAAS,EAC5C,OAAQ,UAAW,CACjB,IAAIe,EAAGC,EAAKS,EAAKU,EAGjB,IAFAV,EAAMO,EAAM,MAAM,EAAG,CAAC,EACtBG,EAAU,CAAC,EACNpB,EAAI,EAAGC,EAAMS,EAAI,OAAQV,EAAIC,EAAKD,IACrCL,EAAOe,EAAIV,GACXoB,EAAQ,KAAKF,EAAavB,CAAI,CAAC,EAEjC,OAAOyB,CACT,EAAG,EACE,GAAIH,EAAQD,EAAO,MAAM/B,EAAY,SAAS,EAAG,CAEtD,GADAkC,EAAQD,EAAaD,EAAM,EAAE,EACzBE,EAAQ,YAAcA,EAAQ,EAChC,MAAM,IAAI,MAAM,uCAAuC,EAEzD,OAAS,UAAW,CAClB,IAAInB,EAAGoB,EAEP,IADAA,EAAU,CAAC,EACNxB,EAAQI,EAAI,EAAGA,GAAK,GAAIJ,EAAQI,GAAK,EACxCoB,EAAQ,KAAMD,GAASvB,EAAS,GAAI,EAEtC,OAAOwB,CACT,EAAG,EAAG,QAAQ,CAChB,KACE,QAAO,IAEX,EAEArC,EAAO,KAAQ,UAAW,CACxB,SAASsC,EAAKC,EAAOC,EAAQ,CAC3B,IAAIX,EAAGZ,EAAGwB,EAAGvB,EAAKN,EAAMe,EACxB,GAAIY,EAAM,SAAW,GAEnB,IADA,KAAK,MAAQ,CAAC,EACTV,EAAIZ,EAAI,EAAGA,GAAK,GAAIY,EAAIZ,GAAK,EAChC,KAAK,MAAM,KAAMsB,EAAMV,IAAM,EAAKU,EAAMV,EAAI,EAAE,UAEvCU,EAAM,SAAW,EAC1B,KAAK,MAAQA,MAEb,OAAM,IAAI,MAAM,2CAA2C,EAG7D,IADAZ,EAAM,KAAK,MACNc,EAAI,EAAGvB,EAAMS,EAAI,OAAQc,EAAIvB,EAAKuB,IAErC,GADA7B,EAAOe,EAAIc,GACP,EAAG,GAAK7B,GAAQA,GAAQ,OAC1B,MAAM,IAAI,MAAM,yCAAyC,EAGzD4B,IACF,KAAK,OAASA,EAElB,CAEA,OAAAF,EAAK,UAAU,KAAO,UAAW,CAC/B,MAAO,MACT,EAEAA,EAAK,UAAU,SAAW,UAAW,CACnC,OAAO,KAAK,mBAAmB,EAAE,QAAQ,mBAAoB,IAAI,CACnE,EAEAA,EAAK,UAAU,gBAAkB,UAAW,CAC1C,IAAII,EAAgBC,EAAiBT,EAAOU,EAAOX,EAKnD,IAJAW,EAAQ,uBACRX,EAAS,KAAK,mBAAmB,EACjCS,EAAiB,EACjBC,EAAkB,GACVT,EAAQU,EAAM,KAAKX,CAAM,GAC3BC,EAAM,GAAG,OAASS,IACpBD,EAAiBR,EAAM,MACvBS,EAAkBT,EAAM,GAAG,QAG/B,OAAIS,EAAkB,EACbV,EAEFA,EAAO,UAAU,EAAGS,CAAc,EAAI,KAAOT,EAAO,UAAUS,EAAiBC,CAAe,CACvG,EAEAL,EAAK,UAAU,YAAc,UAAW,CACtC,IAAIO,EAAO5B,EAAGC,EAAKN,EAAMe,EAGzB,IAFAkB,EAAQ,CAAC,EACTlB,EAAM,KAAK,MACNV,EAAI,EAAGC,EAAMS,EAAI,OAAQV,EAAIC,EAAKD,IACrCL,EAAOe,EAAIV,GACX4B,EAAM,KAAKjC,GAAQ,CAAC,EACpBiC,EAAM,KAAKjC,EAAO,GAAI,EAExB,OAAOiC,CACT,EAEAP,EAAK,UAAU,mBAAqB,UAAW,CAC7C,IAAIQ,EAAMlC,EAAMmC,EAChB,OAAAD,EAAS,UAAW,CAClB,IAAI7B,EAAGC,EAAKS,EAAKU,EAGjB,IAFAV,EAAM,KAAK,MACXU,EAAU,CAAC,EACNpB,EAAI,EAAGC,EAAMS,EAAI,OAAQV,EAAIC,EAAKD,IACrCL,EAAOe,EAAIV,GACXoB,EAAQ,KAAKzB,EAAK,SAAS,EAAE,CAAC,EAEhC,OAAOyB,CACT,EAAG,KAAK,IAAI,EAAG,KAAK,GAAG,EACvBU,EAAS,GACL,KAAK,SACPA,EAAS,IAAM,KAAK,QAEfD,EAAOC,CAChB,EAEAT,EAAK,UAAU,oBAAsB,UAAW,CAC9C,IAAIQ,EAAMlC,EAAMmC,EAChB,OAAAD,EAAS,UAAW,CAClB,IAAI7B,EAAGC,EAAKS,EAAKU,EAGjB,IAFAV,EAAM,KAAK,MACXU,EAAU,CAAC,EACNpB,EAAI,EAAGC,EAAMS,EAAI,OAAQV,EAAIC,EAAKD,IACrCL,EAAOe,EAAIV,GACXoB,EAAQ,KAAKzB,EAAK,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CAAC,EAEjD,OAAOyB,CACT,EAAG,KAAK,IAAI,EAAG,KAAK,GAAG,EACvBU,EAAS,GACL,KAAK,SACPA,EAAS,IAAM,KAAK,QAEfD,EAAOC,CAChB,EAEAT,EAAK,UAAU,MAAQ,SAASb,EAAOC,EAAW,CAChD,IAAIC,EAIJ,GAHID,IAAc,SAChBC,EAAMF,EAAOA,EAAQE,EAAI,GAAID,EAAYC,EAAI,IAE3CF,EAAM,KAAK,IAAM,OACnB,MAAM,IAAI,MAAM,qDAAqD,EAEvE,OAAOpB,EAAU,KAAK,MAAOoB,EAAM,MAAO,GAAIC,CAAS,CACzD,EAEAY,EAAK,UAAU,cAAgB,CAC7B,YAAa,CAAC,IAAIA,EAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,GAAG,EACrD,UAAW,CAAC,IAAIA,EAAK,CAAC,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,EAAE,EACvD,UAAW,CAAC,IAAIA,EAAK,CAAC,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,CAAC,EACtD,SAAU,CAAC,IAAIA,EAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,GAAG,EAClD,YAAa,CAAC,IAAIA,EAAK,CAAC,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,CAAC,EACxD,WAAY,CAAC,IAAIA,EAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,MAAQ,EAAG,CAAC,CAAC,EAAG,EAAE,EACxD,QAAS,CAAC,IAAIA,EAAK,CAAC,EAAG,EAAG,EAAG,EAAG,MAAQ,EAAG,EAAG,CAAC,CAAC,EAAG,EAAE,EACrD,QAAS,CAAC,IAAIA,EAAK,CAAC,IAAM,MAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,EAAE,EACxD,OAAQ,CAAC,IAAIA,EAAK,CAAC,KAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,EAAE,EACpD,OAAQ,CAAC,IAAIA,EAAK,CAAC,KAAQ,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,EAAE,EACpD,SAAU,CAAC,CAAC,IAAIA,EAAK,CAAC,KAAQ,KAAO,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,EAAE,CAAC,CAC9D,EAEAA,EAAK,UAAU,MAAQ,UAAW,CAChC,OAAOtC,EAAO,YAAY,KAAM,KAAK,aAAa,CACpD,EAEAsC,EAAK,UAAU,oBAAsB,UAAW,CAC9C,OAAO,KAAK,MAAM,IAAM,YAC1B,EAEAA,EAAK,UAAU,cAAgB,UAAW,CACxC,IAAIU,EAAMC,EAAKtB,EACf,GAAI,CAAC,KAAK,oBAAoB,EAC5B,MAAM,IAAI,MAAM,0DAA0D,EAE5E,OAAAA,EAAM,KAAK,MAAM,MAAM,EAAE,EAAGqB,EAAOrB,EAAI,GAAIsB,EAAMtB,EAAI,GAC9C,IAAI3B,EAAO,KAAK,CAACgD,GAAQ,EAAGA,EAAO,IAAMC,GAAO,EAAGA,EAAM,GAAI,CAAC,CACvE,EAEAX,EAAK,UAAU,2BAA6B,UAAW,CACrD,IAAIV,EAAMC,EAAGZ,EAAGL,EAAMkB,EAAMC,EAAOC,EAsBnC,IArBAA,EAAY,CACV,EAAG,GACH,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,GACP,MAAO,EACP,MAAO,EACP,MAAO,EACP,MAAO,EACP,MAAO,EACP,MAAO,EACP,MAAO,EACP,MAAO,EACP,MAAO,EACP,MAAO,CACT,EACAJ,EAAO,EACPE,EAAO,GACFD,EAAIZ,EAAI,EAAGA,GAAK,EAAGY,EAAIZ,GAAK,GAE/B,GADAL,EAAO,KAAK,MAAMiB,GACdjB,KAAQoB,EAAW,CAErB,GADAD,EAAQC,EAAUpB,GACdkB,GAAQC,IAAU,EACpB,OAAO,KAELA,IAAU,KACZD,EAAO,IAETF,GAAQG,CACV,KACE,QAAO,KAGX,MAAO,KAAMH,CACf,EAEOU,CAET,EAAG,EAEHnC,EAAW,oBAEXI,EAAY,gBAEZH,EAAc,CACZ,UAAW,IAAI,OAAOG,EAAW,GAAG,EACpC,OAAU,IAAI,OAAO,UAAYJ,EAAW,uBAAyBI,EAAY,MAAO,GAAG,EAC3F,aAAc,IAAI,OAAQ,QAAUJ,EAAW,cAAgBA,EAAW,OAAUF,EAAW,MAAQA,EAAW,MAAQA,EAAW,MAAQA,IAAa,IAAMM,EAAY,OAAQ,GAAG,CACzL,EAEAR,EAAa,SAASkC,EAAQM,EAAO,CACnC,IAAIW,EAAYC,EAAWvC,EAAMwC,EAAaC,EAAkBb,EAChE,GAAIP,EAAO,QAAQ,IAAI,IAAMA,EAAO,YAAY,IAAI,EAClD,OAAO,KAST,IAPAO,GAAUP,EAAO,MAAM7B,EAAY,SAAY,GAAK,CAAC,GAAG,GACpDoC,IACFA,EAASA,EAAO,UAAU,CAAC,EAC3BP,EAASA,EAAO,QAAQ,OAAQ,EAAE,GAEpCiB,EAAa,EACbC,EAAY,IACJA,EAAYlB,EAAO,QAAQ,IAAKkB,EAAY,CAAC,IAAM,GACzDD,IAQF,GANIjB,EAAO,OAAO,EAAG,CAAC,IAAM,MAC1BiB,IAEEjB,EAAO,OAAO,GAAI,CAAC,IAAM,MAC3BiB,IAEEA,EAAaX,EACf,OAAO,KAIT,IAFAc,EAAmBd,EAAQW,EAC3BE,EAAc,IACPC,KACLD,GAAe,KAEjB,OAAAnB,EAASA,EAAO,QAAQ,KAAMmB,CAAW,EACrCnB,EAAO,KAAO,MAChBA,EAASA,EAAO,MAAM,CAAC,GAErBA,EAAOA,EAAO,OAAS,KAAO,MAChCA,EAASA,EAAO,MAAM,EAAG,EAAE,GAE7BM,EAAS,UAAW,CAClB,IAAItB,EAAGC,EAAKS,EAAKU,EAGjB,IAFAV,EAAMM,EAAO,MAAM,GAAG,EACtBI,EAAU,CAAC,EACNpB,EAAI,EAAGC,EAAMS,EAAI,OAAQV,EAAIC,EAAKD,IACrCL,EAAOe,EAAIV,GACXoB,EAAQ,KAAK,SAASzB,EAAM,EAAE,CAAC,EAEjC,OAAOyB,CACT,EAAG,EACI,CACL,MAAOE,EACP,OAAQC,CACV,CACF,EAEAxC,EAAO,KAAK,OAAS,SAASiC,EAAQ,CACpC,IAAIa,EAAM7B,EAAGC,EAAKgB,EAAOV,EAAOD,EAAQiB,EACxC,GAAIpC,EAAY,OAAU,KAAK6B,CAAM,EACnC,OAAOlC,EAAWkC,EAAQ,CAAC,EACtB,IAAIC,EAAQD,EAAO,MAAM7B,EAAY,YAAe,KACzDoC,EAASN,EAAM,IAAM,GACrBY,EAAO/C,EAAWmC,EAAM,GAAG,MAAM,EAAG,EAAE,EAAIM,EAAQ,CAAC,EAC/CM,EAAK,OAAO,CAEd,IADAvB,EAAS,CAAC,SAASW,EAAM,EAAE,EAAG,SAASA,EAAM,EAAE,EAAG,SAASA,EAAM,EAAE,EAAG,SAASA,EAAM,EAAE,CAAC,EACnFjB,EAAI,EAAGC,EAAMK,EAAO,OAAQN,EAAIC,EAAKD,IAExC,GADAO,EAAQD,EAAON,GACX,EAAG,GAAKO,GAASA,GAAS,KAC5B,OAAO,KAGX,OAAAsB,EAAK,MAAM,KAAKvB,EAAO,IAAM,EAAIA,EAAO,EAAE,EAC1CuB,EAAK,MAAM,KAAKvB,EAAO,IAAM,EAAIA,EAAO,EAAE,EACnC,CACL,MAAOuB,EAAK,MACZ,OAAQA,EAAK,MACf,CACF,CAEF,OAAO,IACT,EAEA9C,EAAO,KAAK,OAASA,EAAO,KAAK,OAAS,SAASiC,EAAQ,CACzD,OAAO,KAAK,OAAOA,CAAM,IAAM,IACjC,EAEAjC,EAAO,KAAK,QAAU,SAASiC,EAAQ,CACrC,IAAIqB,EACJ,GAAI,CACF,WAAI,KAAK,KAAK,OAAOrB,CAAM,CAAC,EACrB,EACT,OAASsB,EAAP,CACA,OAAAD,EAAIC,EACG,EACT,CACF,EAEAvD,EAAO,KAAK,uBAAyB,SAASiC,EAAQ,CACpD,MAAI,GAAAjC,EAAO,KAAK,QAAQiC,CAAM,GAAKA,EAAO,MAAM,mCAAmC,EAKrF,EAEAjC,EAAO,KAAK,QAAU,SAASiC,EAAQ,CACrC,IAAIa,EAAMQ,EACV,GAAI,OAAOrB,GAAW,UAAYA,EAAO,QAAQ,GAAG,IAAM,GACxD,MAAO,GAET,GAAI,CACF,OAAAa,EAAO,KAAK,OAAOb,CAAM,EACzB,IAAI,KAAKa,EAAK,MAAOA,EAAK,MAAM,EACzB,EACT,OAASS,EAAP,CACA,OAAAD,EAAIC,EACG,EACT,CACF,EAEAvD,EAAO,KAAK,MAAQ,SAASiC,EAAQ,CACnC,IAAIM,EAEJ,GADAA,EAAQ,KAAK,OAAON,CAAM,EACtBM,IAAU,KACZ,MAAM,IAAI,MAAM,iDAAiD,EAEnE,OAAO,IAAI,KAAKA,CAAK,CACvB,EAEAvC,EAAO,KAAK,MAAQ,SAASiC,EAAQ,CACnC,IAAIa,EAEJ,GADAA,EAAO,KAAK,OAAOb,CAAM,EACrBa,EAAK,QAAU,KACjB,MAAM,IAAI,MAAM,iDAAiD,EAEnE,OAAO,IAAI,KAAKA,EAAK,MAAOA,EAAK,MAAM,CACzC,EAEA9C,EAAO,KAAK,UAAY,SAASiC,EAAQ,CACvC,IAAIuB,EAAYtB,EAAOuB,EACvB,IAAIvB,EAAQD,EAAO,MAAM,eAAe,KACtCuB,EAAa,SAAStB,EAAM,EAAE,EAC1BsB,GAAc,GAAKA,GAAc,IACnC,OAAAC,EAAS,CAAC,KAAK,MAAMvB,EAAM,EAAE,EAAGsB,CAAU,EAC1C,OAAO,eAAeC,EAAQ,WAAY,CACxC,MAAO,UAAW,CAChB,OAAO,KAAK,KAAK,GAAG,CACtB,CACF,CAAC,EACMA,EAGX,MAAM,IAAI,MAAM,yDAAyD,CAC3E,EAEAzD,EAAO,KAAK,2BAA6B,SAAS0D,EAAQ,CACxD,IAAIC,EAAkBC,EAAGrC,EAEzB,GADAmC,EAAS,SAASA,CAAM,EACpBA,EAAS,GAAKA,EAAS,GACzB,MAAM,IAAI,MAAM,oCAAoC,EAKtD,IAHAnC,EAAS,CAAC,EAAG,EAAG,EAAG,CAAC,EACpBqC,EAAI,EACJD,EAAmB,KAAK,MAAMD,EAAS,CAAC,EACjCE,EAAID,GACTpC,EAAOqC,GAAK,IACZA,IAEF,OAAID,EAAmB,IACrBpC,EAAOoC,GAAoB,KAAK,IAAI,EAAGD,EAAS,CAAC,EAAI,GAAK,EAAKA,EAAS,GAEnE,IAAI,KAAKnC,CAAM,CACxB,EAEAvB,EAAO,KAAK,yBAA2B,SAASiC,EAAQ,CACtD,IAAIL,EAAMiC,EAAOhC,EAAGiC,EAAmBvC,EAAQwC,EAC/C,GAAI,CAMF,IALAnC,EAAO,KAAK,UAAUK,CAAM,EAC5B6B,EAAoBlC,EAAK,GAAG,YAAY,EACxCmC,EAAmB,KAAK,2BAA2BnC,EAAK,EAAE,EAAE,YAAY,EACxEL,EAAS,CAAC,EACVM,EAAI,EACGA,EAAI,GACTN,EAAO,KAAK,SAASuC,EAAkBjC,GAAI,EAAE,EAAI,SAASkC,EAAiBlC,GAAI,EAAE,EAAI,GAAG,EACxFA,IAEF,OAAO,IAAI,KAAKN,CAAM,CACxB,OAASgC,EAAP,CACA,MAAAM,EAAQN,EACF,IAAI,MAAM,oDAAoD,CACtE,CACF,EAEAvD,EAAO,KAAK,uBAAyB,SAASiC,EAAQ,CACpD,IAAIL,EAAMiC,EAAOhC,EAAGiC,EAAmBvC,EAAQwC,EAC/C,GAAI,CAMF,IALAnC,EAAO,KAAK,UAAUK,CAAM,EAC5B6B,EAAoBlC,EAAK,GAAG,YAAY,EACxCmC,EAAmB,KAAK,2BAA2BnC,EAAK,EAAE,EAAE,YAAY,EACxEL,EAAS,CAAC,EACVM,EAAI,EACGA,EAAI,GACTN,EAAO,KAAK,SAASuC,EAAkBjC,GAAI,EAAE,EAAI,SAASkC,EAAiBlC,GAAI,EAAE,CAAC,EAClFA,IAEF,OAAO,IAAI,KAAKN,CAAM,CACxB,OAASgC,EAAP,CACA,MAAAM,EAAQN,EACF,IAAI,MAAM,oDAAoD,CACtE,CACF,EAEAvD,EAAO,KAAK,UAAY,SAASiC,EAAQ,CACvC,IAAIuB,EAAYtB,EAAOuB,EACvB,IAAIvB,EAAQD,EAAO,MAAM,eAAe,KACtCuB,EAAa,SAAStB,EAAM,EAAE,EAC1BsB,GAAc,GAAKA,GAAc,KACnC,OAAAC,EAAS,CAAC,KAAK,MAAMvB,EAAM,EAAE,EAAGsB,CAAU,EAC1C,OAAO,eAAeC,EAAQ,WAAY,CACxC,MAAO,UAAW,CAChB,OAAO,KAAK,KAAK,GAAG,CACtB,CACF,CAAC,EACMA,EAGX,MAAM,IAAI,MAAM,yDAAyD,CAC3E,EAEAzD,EAAO,QAAU,SAASiC,EAAQ,CAChC,OAAOjC,EAAO,KAAK,QAAQiC,CAAM,GAAKjC,EAAO,KAAK,QAAQiC,CAAM,CAClE,EAEAjC,EAAO,MAAQ,SAASiC,EAAQ,CAC9B,GAAIjC,EAAO,KAAK,QAAQiC,CAAM,EAC5B,OAAOjC,EAAO,KAAK,MAAMiC,CAAM,EAC1B,GAAIjC,EAAO,KAAK,QAAQiC,CAAM,EACnC,OAAOjC,EAAO,KAAK,MAAMiC,CAAM,EAE/B,MAAM,IAAI,MAAM,sDAAsD,CAE1E,EAEAjC,EAAO,UAAY,SAASiC,EAAQ,CAClC,IAAIqB,EACJ,GAAI,CACF,OAAOtD,EAAO,KAAK,UAAUiC,CAAM,CACrC,OAASsB,EAAP,CACAD,EAAIC,EACJ,GAAI,CACF,OAAOvD,EAAO,KAAK,UAAUiC,CAAM,CACrC,OAASsB,EAAP,CACA,MAAAD,EAAIC,EACE,IAAI,MAAM,2DAA2D,CAC7E,CACF,CACF,EAEAvD,EAAO,cAAgB,SAAS6C,EAAO,CACrC,IAAImB,EAEJ,GADAA,EAASnB,EAAM,OACXmB,IAAW,EACb,OAAO,IAAIhE,EAAO,KAAK6C,CAAK,EACvB,GAAImB,IAAW,GACpB,OAAO,IAAIhE,EAAO,KAAK6C,CAAK,EAE5B,MAAM,IAAI,MAAM,8DAA8D,CAElF,EAEA7C,EAAO,QAAU,SAASiC,EAAQ,CAChC,IAAIa,EAEJ,OADAA,EAAO,KAAK,MAAMb,CAAM,EACpBa,EAAK,KAAK,IAAM,QAAUA,EAAK,oBAAoB,EAC9CA,EAAK,cAAc,EAEnBA,CAEX,CAEF,GAAG,KAAKjD,EAAI,IChqBZ,IAAAoE,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAaAA,GAAO,QAAUC,GACjBD,GAAO,QAAQ,IAAME,GACrBF,GAAO,QAAQ,QAAUG,GAOzB,IAAIC,GAAY,KACZC,GAAS,KAOTC,GAAe,WACfC,GAAOF,GAAO,QACdG,GAAUH,GAAO,MAOjBI,GAAY,CACd,UAAW,CAAC,iBAAkB,WAAW,EACzC,SAAU,CAAC,cAAe,SAAS,EACnC,YAAa,CAAC,aAAc,gBAAiB,iBAAkB,UAAU,CAC3E,EAWA,SAASP,GAAUQ,EAAKC,EAAO,CAE7B,IAAIC,EAAQR,GAAUM,CAAG,EAEzB,GAAI,CAACC,EAEH,OAAOC,EAGL,OAAOD,GAAU,aACnBA,EAAQR,GAAQQ,CAAK,GAGvB,QAASE,EAAI,EAAGA,EAAID,EAAM,OAAS,EAAGC,IAChCF,EAAMC,EAAMC,GAAIA,CAAC,IAErBD,EAAM,OAASC,EAAI,GAGrB,OAAOD,CACT,CASA,SAAST,GAASW,EAAK,CACrB,GAAI,CAACA,EACH,MAAM,IAAI,UAAU,sBAAsB,EAG5C,IAAIH,EAEJ,GAAI,OAAOG,GAAQ,SACjBH,EAAQ,CAACG,CAAG,UACH,MAAM,QAAQA,CAAG,EAC1BH,EAAQG,EAAI,MAAM,MAElB,OAAM,IAAI,UAAU,4BAA4B,EAGlD,QAASD,EAAI,EAAGA,EAAIF,EAAM,OAAQE,IAChCC,EAAMH,EAAME,GAEP,OAAO,UAAU,eAAe,KAAKJ,GAAWK,CAAG,IAKxDA,EAAML,GAAUK,GAChBH,EAAM,OAAO,MAAMA,EAAO,CAACE,EAAG,CAAC,EAAE,OAAOC,CAAG,CAAC,EAC5CD,GAAKC,EAAI,OAAS,GAGpB,OAAOC,GAAaC,GAAoBL,CAAK,CAAC,CAChD,CASA,SAASK,GAAqBC,EAAK,CAGjC,QAFIC,EAAe,IAAI,MAAMD,EAAI,MAAM,EAE9BJ,EAAI,EAAGA,EAAII,EAAI,OAAQJ,IAC9BK,EAAaL,GAAKM,GAAgBF,EAAIJ,EAAE,EAG1C,OAAOK,CACT,CASA,SAASH,GAAcG,EAAc,CAEnC,IAAIE,EAAMF,EAAa,OACvB,OAAOE,IAAQ,EACXC,GACAD,IAAQ,EACNE,GAAYJ,EAAa,EAAE,EAC3BK,GAAWL,CAAY,CAC/B,CASA,SAASC,GAAiBK,EAAM,CAC9B,IAAIC,EAAMD,EAAK,YAAY,GAAG,EAC1BE,EAAMD,IAAQ,GACdD,EAAK,UAAU,EAAGC,CAAG,EACrBD,EAEJ,GAAI,CAACjB,GAAKmB,CAAG,EACX,MAAM,IAAI,UAAU,uBAAyBA,CAAG,EAGlD,IAAIC,EAAKnB,GAAQkB,CAAG,EAEhBD,IAAQ,IAAME,EAAG,KAAK,IAAM,QAAUA,EAAG,oBAAoB,IAE/DA,EAAKA,EAAG,cAAc,GAGxB,IAAIC,EAAMD,EAAG,KAAK,IAAM,OACpB,IACA,GAEAE,EAAQJ,IAAQ,GAChBD,EAAK,UAAUC,EAAM,EAAGD,EAAK,MAAM,EACnC,KAYJ,GAVIK,IAAU,KACZA,EAAQD,EACCtB,GAAa,KAAKuB,CAAK,EAChCA,EAAQ,SAASA,EAAO,EAAE,EACjBF,EAAG,KAAK,IAAM,QAAUpB,GAAKsB,CAAK,EAC3CA,EAAQC,GAAaD,CAAK,EAE1BA,EAAQ,KAGNA,GAAS,GAAKA,EAAQD,EACxB,MAAM,IAAI,UAAU,6BAA+BJ,CAAI,EAGzD,MAAO,CAACG,EAAIE,CAAK,CACnB,CASA,SAASC,GAAcC,EAAS,CAC9B,IAAIJ,EAAKnB,GAAQuB,CAAO,EACpBC,EAAOL,EAAG,KAAK,EAEnB,OAAOK,IAAS,OACZL,EAAG,2BAA2B,EAC9B,IACN,CAUA,SAAS1B,GAAWS,EAAKC,EAAO,CAC9B,GAAI,CAACD,EACH,MAAM,IAAI,UAAU,0BAA0B,EAGhD,GAAI,CAACC,EACH,MAAM,IAAI,UAAU,4BAA4B,EAGlD,IAAIC,EAAQV,GAASQ,EAAKC,CAAK,EAC3BsB,EAAOrB,EAAMA,EAAM,OAAS,GAEhC,OAAOqB,CACT,CAQA,SAASZ,IAAa,CACpB,MAAO,EACT,CASA,SAASE,GAAYW,EAAS,CAC5B,OAAO,SAAgBD,EAAM,CAC3B,GAAI,CAAC1B,GAAK0B,CAAI,EAAG,MAAO,GAMxB,QAJIN,EAAKnB,GAAQyB,CAAI,EACjBE,EACAH,EAAOL,EAAG,KAAK,EAEVd,EAAI,EAAGA,EAAIqB,EAAQ,OAAQrB,IAAK,CACvC,IAAIuB,EAASF,EAAQrB,GACjBwB,EAAWD,EAAO,GAClBE,EAAaD,EAAS,KAAK,EAC3BE,EAAcH,EAAO,GACrBI,EAAUb,EAEd,GAAIK,IAASM,EAAY,CACvB,GAAIA,IAAe,QAAU,CAACX,EAAG,oBAAoB,EAEnD,SAGGQ,IAEHA,EAASG,IAAe,OACpBX,EAAG,cAAc,EACjBA,EAAG,oBAAoB,GAG7Ba,EAAUL,CACZ,CAEA,GAAIK,EAAQ,MAAMH,EAAUE,CAAW,EACrC,MAAO,EAEX,CAEA,MAAO,EACT,CACF,CASA,SAASjB,GAAac,EAAQ,CAC5B,IAAIC,EAAWD,EAAO,GAClBE,EAAaD,EAAS,KAAK,EAC3BI,EAAeH,IAAe,OAC9BC,EAAcH,EAAO,GAEzB,OAAO,SAAgBH,EAAM,CAC3B,GAAI,CAAC1B,GAAK0B,CAAI,EAAG,MAAO,GAExB,IAAIN,EAAKnB,GAAQyB,CAAI,EACjBD,EAAOL,EAAG,KAAK,EAEnB,GAAIK,IAASM,EAAY,CACvB,GAAIG,GAAgB,CAACd,EAAG,oBAAoB,EAE1C,MAAO,GAITA,EAAKc,EACDd,EAAG,cAAc,EACjBA,EAAG,oBAAoB,CAC7B,CAEA,OAAOA,EAAG,MAAMU,EAAUE,CAAW,CACvC,CACF,ICtUA,IAAAG,GAAAC,EAAAC,IAAA,cAcA,IAAIC,GAAS,KAAuB,OAChCC,GAAqB,KACrBC,GAAc,KACdC,GAAY,KAAgB,SAAS,EACrCC,GAAU,KACVC,GAAO,KAAgB,KACvBC,GAAO,KACPC,GAAY,KACZC,GAAK,KACLC,GAAc,QAAQ,eAW1BV,GAAQ,KAAOW,GAAoB,CAAE,KAAM,EAAM,CAAC,EAWlDX,GAAQ,MAAQW,GAAoB,CAAE,KAAM,EAAK,CAAC,EAUlDX,GAAQ,WAAa,SAASY,EAAK,CAGjC,GAFYA,EAAK,KAAb,KACQA,EAAK,KAAb,MAA6BA,EAAK,KAAd,MAA4BA,EAAK,KAAb,MAC7BA,EAAK,UAAU,EAAG,CAAC,IAA9B,OAAiC,MAAO,EAC9C,EAUAZ,GAAQ,QAAUI,GAAU,SAASC,GACnC,qDAAqD,EAUvDL,GAAQ,cAAgB,SAASa,EAAK,CACpC,MAAO,CAACA,EAAK,QAAQ,GAAG,EACpBC,GAAaD,CAAI,EACjB,CAAE,MAAOP,GAAK,OAAOO,CAAI,EAAG,OAAQ,CAAC,CAAE,CAC7C,EAUAb,GAAQ,eAAiB,SAASe,EAAM,CAGtC,QAFIC,EAAM,CAAC,EAEFC,EAAI,EAAGA,EAAIF,EAAM,OAAQ,EAAEE,EAClCD,EAAI,KAAKhB,GAAQ,cAAce,EAAME,EAAE,CAAC,EAG1C,OAAOD,CACT,EAWAhB,GAAQ,mBAAqBI,GAAU,SAASF,GAC9C,sEAAsE,EAaxE,SAASY,GAAaI,EAAKC,EAAO,CAIhC,QAHIC,EAAQF,EAAI,MAAM,OAAO,EACzBF,EAAM,CAAE,MAAOI,EAAM,GAAI,QAAS,EAAG,OAAQ,CAAC,EAAG,cAAeD,CAAM,EAEjE,EAAI,EAAG,EAAIC,EAAM,OAAQ,EAAE,EAAG,CACrC,IAAIC,EAAMD,EAAM,GAAG,MAAM,OAAO,EACpBC,EAAI,KAAZ,IACFL,EAAI,QAAU,WAAWK,EAAI,EAAE,EAE/BL,EAAI,OAAOK,EAAI,IAAMA,EAAI,EAE7B,CAEA,OAAOL,CACT,CAUAhB,GAAQ,YAAc,SAASsB,EAAK,CAClC,IAAIC,EAEJ,GAAI,OAAOD,GAAQ,WACjB,OAAOA,EAGT,OAAQA,EAAK,CACX,IAAK,GACL,IAAK,OACHC,EAAKvB,GAAQ,MACb,MACF,IAAK,GACH,MACF,IAAK,SACHuB,EAAKvB,GAAQ,KACb,MACF,QACE,MAAM,IAAI,UAAU,oCAAsCsB,CAAG,CACjE,CAEA,OAAOC,CACT,EAUAvB,GAAQ,mBAAqB,SAA4BsB,EAAK,CAC5D,IAAIC,EAEJ,GAAI,OAAOD,GAAQ,WACjB,OAAOA,EAGT,OAAQA,EAAK,CACX,IAAK,GACL,IAAK,SACHC,EAAKb,GAAY,MACjB,MACF,IAAK,GACHa,EAAKC,GACL,MACF,IAAK,WACHD,EAAKE,GACL,MACF,QACE,MAAM,IAAI,UAAU,4CAA8CH,CAAG,CACzE,CAEA,OAAOC,CACT,EAUAvB,GAAQ,aAAe,SAASsB,EAAK,CACnC,OAAI,OAAOA,GAAQ,WAAmBA,EAElCA,IAAQ,GAEH,UAAU,CAAE,MAAO,EAAK,EAG7B,OAAOA,GAAQ,SAEV,SAASI,EAAGT,EAAE,CAAE,OAAOA,EAAIK,CAAI,GAGpC,OAAOA,GAAQ,WAEjBA,EAAMA,EAAI,MAAM,GAAG,EAChB,IAAI,SAAUK,EAAG,CAAE,OAAOA,EAAE,KAAK,CAAE,CAAC,GAGlCnB,GAAU,QAAQc,GAAO,CAAC,CAAC,EACpC,EAWAtB,GAAQ,WAAa,SAAoBa,EAAMe,EAAS,CACtD,GAAI,CAACf,GAAQ,CAACe,EACZ,OAAOf,EAIT,IAAIgB,EAAS1B,GAAY,MAAMU,CAAI,EAGnC,OAAAgB,EAAO,WAAW,QAAUD,EAGrBzB,GAAY,OAAO0B,CAAM,CAClC,EAWA,SAASlB,GAAqBmB,EAAS,CACrC,OAAO,SAAuBC,EAAMC,EAAU,CAC5C,IAAIC,EAAOhC,GAAO,SAAS8B,CAAI,EAE3BA,EADA9B,GAAO,KAAK8B,EAAMC,CAAQ,EAG9B,OAAOzB,GAAK0B,EAAKH,CAAO,CAC1B,CACF,CASA,SAASL,GAAyBP,EAAK,CACrC,OAAOT,GAAG,MAAMS,EAAK,CACnB,gBAAiB,EACnB,CAAC,CACH,CASA,SAASM,IAAY,CACnB,MAAO,CAAC,CACV,IC/SA,IAAAU,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAeA,IAAIC,GAAe,KACfC,GAAS,KACTC,GAAU,KACVC,GAAa,KACbC,GAAQ,KACRC,GAAQ,KAAiB,qBAAqB,EAC9CC,GAAO,KACPC,GAAO,QAAQ,QACfC,GAAc,KAAmB,YACjCC,GAAqB,KAAmB,mBACxCC,GAAe,KAAmB,aAClCC,GAAY,KAAgB,SAAS,EACrCC,GAAU,KACVC,GAAQ,KACRC,GAAU,QAAQ,QAAQ,QAC1BC,GAAiB,KAOjBC,GAAiB,OAAO,UAAU,eAClCC,GAAQ,MAAM,UAAU,MAMxBC,GAAMpB,GAAUC,GAAO,QAAU,CAAC,EAOlCoB,GAA0B,+BAY9BD,GAAI,KAAO,UAAgB,CACzB,KAAK,MAAQ,CAAC,EACd,KAAK,QAAU,CAAC,EAChB,KAAK,SAAW,CAAC,EAEjB,KAAK,qBAAqB,CAC5B,EAOAA,GAAI,qBAAuB,UAAgC,CACzD,IAAIE,EAAM,QAAQ,IAAI,UAAY,cAGlC,KAAK,OAAO,cAAc,EAC1B,KAAK,IAAI,OAAQ,MAAM,EACvB,KAAK,IAAI,MAAOA,CAAG,EACnB,KAAK,IAAI,eAAgB,UAAU,EACnC,KAAK,IAAI,mBAAoB,CAAC,EAC9B,KAAK,IAAI,cAAe,EAAK,EAG7B,OAAO,eAAe,KAAK,SAAUD,GAAyB,CAC5D,aAAc,GACd,MAAO,EACT,CAAC,EAEDd,GAAM,qBAAsBe,CAAG,EAE/B,KAAK,GAAG,QAAS,SAAiBC,EAAQ,CAEpC,KAAK,SAASF,MAA6B,IAC1C,OAAOE,EAAO,SAAS,mBAAsB,aAChD,OAAO,KAAK,SAAS,eACrB,OAAO,KAAK,SAAS,mBAIvBN,GAAe,KAAK,QAASM,EAAO,OAAO,EAC3CN,GAAe,KAAK,SAAUM,EAAO,QAAQ,EAC7CN,GAAe,KAAK,QAASM,EAAO,OAAO,EAC3CN,GAAe,KAAK,SAAUM,EAAO,QAAQ,CAC/C,CAAC,EAGD,KAAK,OAAS,OAAO,OAAO,IAAI,EAGhC,KAAK,UAAY,IAGjB,KAAK,OAAO,SAAW,KAAK,SAG5B,KAAK,IAAI,OAAQf,EAAI,EACrB,KAAK,IAAI,QAASQ,GAAQ,OAAO,CAAC,EAClC,KAAK,IAAI,sBAAuB,UAAU,EAEtCM,IAAQ,cACV,KAAK,OAAO,YAAY,EAG1B,OAAO,eAAe,KAAM,SAAU,CACpC,IAAK,UAAW,CACd,MAAM,IAAI,MAAM;AAAA,iFAAiH,CACnI,CACF,CAAC,CACH,EAUAF,GAAI,WAAa,UAAsB,CAChC,KAAK,UACR,KAAK,QAAU,IAAIjB,GAAO,CACxB,cAAe,KAAK,QAAQ,wBAAwB,EACpD,OAAQ,KAAK,QAAQ,gBAAgB,CACvC,CAAC,EAED,KAAK,QAAQ,IAAIG,GAAM,KAAK,IAAI,iBAAiB,CAAC,CAAC,EACnD,KAAK,QAAQ,IAAID,GAAW,KAAK,IAAI,CAAC,EAE1C,EAWAe,GAAI,OAAS,SAAgBI,EAAKC,EAAKC,EAAU,CAC/C,IAAIC,EAAS,KAAK,QAGdC,EAAOF,GAAYxB,GAAasB,EAAKC,EAAK,CAC5C,IAAK,KAAK,IAAI,KAAK,EACnB,QAASI,GAAS,KAAK,IAAI,CAC7B,CAAC,EAGD,GAAI,CAACF,EAAQ,CACXpB,GAAM,0BAA0B,EAChCqB,EAAK,EACL,MACF,CAEAD,EAAO,OAAOH,EAAKC,EAAKG,CAAI,CAC9B,EAYAR,GAAI,IAAM,SAAaU,EAAI,CACzB,IAAIC,EAAS,EACTC,EAAO,IAIX,GAAI,OAAOF,GAAO,WAAY,CAG5B,QAFIG,EAAMH,EAEH,MAAM,QAAQG,CAAG,GAAKA,EAAI,SAAW,GAC1CA,EAAMA,EAAI,GAIR,OAAOA,GAAQ,aACjBF,EAAS,EACTC,EAAOF,EAEX,CAEA,IAAII,EAAMpB,GAAQK,GAAM,KAAK,UAAWY,CAAM,CAAC,EAE/C,GAAIG,EAAI,SAAW,EACjB,MAAM,IAAI,UAAU,0CAA0C,EAIhE,KAAK,WAAW,EAChB,IAAIP,EAAS,KAAK,QAElB,OAAAO,EAAI,QAAQ,SAAUJ,EAAI,CAExB,GAAI,CAACA,GAAM,CAACA,EAAG,QAAU,CAACA,EAAG,IAC3B,OAAOH,EAAO,IAAIK,EAAMF,CAAE,EAG5BvB,GAAM,oBAAqByB,CAAI,EAC/BF,EAAG,UAAYE,EACfF,EAAG,OAAS,KAGZH,EAAO,IAAIK,EAAM,SAAqBR,EAAKC,EAAKU,EAAM,CACpD,IAAIC,EAAOZ,EAAI,IACfM,EAAG,OAAON,EAAKC,EAAK,SAAUY,EAAK,CACjCpB,GAAeO,EAAKY,EAAK,OAAO,EAChCnB,GAAeQ,EAAKW,EAAK,QAAQ,EACjCD,EAAKE,CAAG,CACV,CAAC,CACH,CAAC,EAGDP,EAAG,KAAK,QAAS,IAAI,CACvB,EAAG,IAAI,EAEA,IACT,EAYAV,GAAI,MAAQ,SAAeY,EAAM,CAC/B,YAAK,WAAW,EACT,KAAK,QAAQ,MAAMA,CAAI,CAChC,EAoCAZ,GAAI,OAAS,SAAgBkB,EAAKR,EAAI,CACpC,GAAI,OAAOA,GAAO,WAChB,MAAM,IAAI,MAAM,4BAA4B,EAI9C,IAAIS,EAAYD,EAAI,KAAO,IACvB,IAAMA,EACNA,EAGJ,YAAK,QAAQC,GAAaT,EAEnB,IACT,EAcAV,GAAI,MAAQ,SAAeoB,EAAMV,EAAI,CAGnC,GAFA,KAAK,WAAW,EAEZ,MAAM,QAAQU,CAAI,EAAG,CACvB,QAASC,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAC/B,KAAK,MAAMD,EAAKC,GAAIX,CAAE,EAGxB,OAAO,IACT,CAEA,YAAK,QAAQ,MAAMU,EAAMV,CAAE,EAEpB,IACT,EAiBAV,GAAI,IAAM,SAAasB,EAASC,EAAK,CACnC,GAAI,UAAU,SAAW,EAAG,CAI1B,QAFIC,EAAW,KAAK,SAEbA,GAAYA,IAAa,OAAO,WAAW,CAChD,GAAI1B,GAAe,KAAK0B,EAAUF,CAAO,EACvC,OAAOE,EAASF,GAGlBE,EAAW,OAAO,eAAeA,CAAQ,CAC3C,CAEA,MACF,CAQA,OANArC,GAAM,iBAAkBmC,EAASC,CAAG,EAGpC,KAAK,SAASD,GAAWC,EAGjBD,EAAS,CACf,IAAK,OACH,KAAK,IAAI,UAAWhC,GAAYiC,CAAG,CAAC,EACpC,MACF,IAAK,eACH,KAAK,IAAI,kBAAmBhC,GAAmBgC,CAAG,CAAC,EACnD,MACF,IAAK,cACH,KAAK,IAAI,iBAAkB/B,GAAa+B,CAAG,CAAC,EAG5C,OAAO,eAAe,KAAK,SAAUtB,GAAyB,CAC5D,aAAc,GACd,MAAO,EACT,CAAC,EAED,KACJ,CAEA,OAAO,IACT,EAgBAD,GAAI,KAAO,UAAgB,CACzB,OAAO,KAAK,OACR,KAAK,OAAO,KAAK,EAAI,KAAK,UAC1B,EACN,EAiBAA,GAAI,QAAU,SAAiBsB,EAAS,CACtC,OAAO,QAAQ,KAAK,IAAIA,CAAO,CAAC,CAClC,EAiBAtB,GAAI,SAAW,SAAkBsB,EAAS,CACxC,MAAO,CAAC,KAAK,IAAIA,CAAO,CAC1B,EAUAtB,GAAI,OAAS,SAAgBsB,EAAS,CACpC,OAAO,KAAK,IAAIA,EAAS,EAAI,CAC/B,EAUAtB,GAAI,QAAU,SAAiBsB,EAAS,CACtC,OAAO,KAAK,IAAIA,EAAS,EAAK,CAChC,EAMAtC,GAAQ,QAAQ,SAASyC,EAAO,CAC9BzB,GAAIyB,GAAU,SAASb,EAAK,CAC1B,GAAIa,IAAW,OAAS,UAAU,SAAW,EAE3C,OAAO,KAAK,IAAIb,CAAI,EAGtB,KAAK,WAAW,EAEhB,IAAIc,EAAQ,KAAK,QAAQ,MAAMd,CAAI,EACnC,OAAAc,EAAMD,GAAQ,MAAMC,EAAO3B,GAAM,KAAK,UAAW,CAAC,CAAC,EAC5C,IACT,CACF,CAAC,EAYDC,GAAI,IAAM,SAAaY,EAAM,CAC3B,KAAK,WAAW,EAKhB,QAHIc,EAAQ,KAAK,QAAQ,MAAMd,CAAI,EAC/Be,EAAO5B,GAAM,KAAK,UAAW,CAAC,EAEzB,EAAI,EAAG,EAAIf,GAAQ,OAAQ,IAClC0C,EAAM1C,GAAQ,IAAI,MAAM0C,EAAOC,CAAI,EAGrC,OAAO,IACT,EAIA3B,GAAI,IAAMP,GAAU,SAASO,GAAI,OAAQ,iCAAiC,EAmB1EA,GAAI,OAAS,SAAgBoB,EAAMQ,EAAStB,EAAU,CACpD,IAAIuB,EAAQ,KAAK,MACbrB,EAAOF,EACPwB,EAAU,KAAK,QACfC,EAAOH,EACPI,EAAgB,CAAC,EACjBC,EA8BJ,GA3BI,OAAOL,GAAY,aACrBpB,EAAOoB,EACPG,EAAO,CAAC,GAIVpC,GAAMqC,EAAe,KAAK,MAAM,EAG5BD,EAAK,SACPpC,GAAMqC,EAAeD,EAAK,OAAO,EAInCpC,GAAMqC,EAAeD,CAAI,EAGrBC,EAAc,OAAS,OACzBA,EAAc,MAAQ,KAAK,QAAQ,YAAY,GAI7CA,EAAc,QAChBC,EAAOJ,EAAMT,IAIX,CAACa,EAAM,CACT,IAAI7C,EAAO,KAAK,IAAI,MAAM,EAQ1B,GANA6C,EAAO,IAAI7C,EAAKgC,EAAM,CACpB,cAAe,KAAK,IAAI,aAAa,EACrC,KAAM,KAAK,IAAI,OAAO,EACtB,QAASU,CACX,CAAC,EAEG,CAACG,EAAK,KAAM,CACd,IAAIC,EAAO,MAAM,QAAQD,EAAK,IAAI,GAAKA,EAAK,KAAK,OAAS,EACtD,gBAAkBA,EAAK,KAAK,MAAM,EAAG,EAAE,EAAE,KAAK,MAAM,EAAI,SAAWA,EAAK,KAAKA,EAAK,KAAK,OAAS,GAAK,IACrG,cAAgBA,EAAK,KAAO,IAC5BhB,EAAM,IAAI,MAAM,0BAA4BG,EAAO,cAAgBc,CAAI,EAC3E,OAAAjB,EAAI,KAAOgB,EACJzB,EAAKS,CAAG,CACjB,CAGIe,EAAc,QAChBH,EAAMT,GAAQa,EAElB,CAGAE,GAAUF,EAAMD,EAAexB,CAAI,CACrC,EAuBAR,GAAI,OAAS,UAAkB,CAC7B,IAAIoC,EAAS/C,GAAK,aAAa,IAAI,EACnC,OAAO+C,EAAO,OAAO,MAAMA,EAAQ,SAAS,CAC9C,EASA,SAAS3B,GAASQ,EAAK,CAEjB,KAAK,IAAI,KAAK,IAAM,QAAQ,QAAQ,MAAMA,EAAI,OAASA,EAAI,SAAS,CAAC,CAC3E,CAOA,SAASkB,GAAUF,EAAML,EAAStB,EAAU,CAC1C,GAAI,CACF2B,EAAK,OAAOL,EAAStB,CAAQ,CAC/B,OAASW,EAAP,CACAX,EAASW,CAAG,CACd,CACF,ICppBA,IAAAoB,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAeAA,GAAO,QAAUC,GACjBD,GAAO,QAAQ,kBAAoBC,GAOnC,IAAIC,GAAsB,8BAO1B,SAASC,GAAmBC,EAAQ,CAGlC,QAFIC,EAAUD,EAAO,MAAM,GAAG,EAErBE,EAAI,EAAGC,EAAI,EAAGD,EAAID,EAAQ,OAAQC,IAAK,CAC9C,IAAIE,EAAUC,GAAaJ,EAAQC,GAAG,KAAK,EAAGA,CAAC,EAE3CE,IACFH,EAAQE,KAAOC,EAEnB,CAGA,OAAAH,EAAQ,OAASE,EAEVF,CACT,CAOA,SAASI,GAAaC,EAAKJ,EAAG,CAC5B,IAAIK,EAAQT,GAAoB,KAAKQ,CAAG,EACxC,GAAI,CAACC,EAAO,OAAO,KAEnB,IAAIH,EAAUG,EAAM,GAChBC,EAAI,EACR,GAAID,EAAM,GAER,QADIE,EAASF,EAAM,GAAG,MAAM,GAAG,EACtBJ,EAAI,EAAGA,EAAIM,EAAO,OAAQN,IAAK,CACtC,IAAIO,EAAID,EAAON,GAAG,KAAK,EAAE,MAAM,GAAG,EAClC,GAAIO,EAAE,KAAO,IAAK,CAChBF,EAAI,WAAWE,EAAE,EAAE,EACnB,KACF,CACF,CAGF,MAAO,CACL,QAASN,EACT,EAAGI,EACH,EAAGN,CACL,CACF,CAOA,SAASS,GAAmBP,EAASQ,EAAUC,EAAO,CAGpD,QAFIC,EAAW,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,CAAC,EAExB,EAAI,EAAG,EAAIF,EAAS,OAAQ,IAAK,CACxC,IAAIG,EAAOC,GAAQZ,EAASQ,EAAS,GAAIC,CAAK,EAE1CE,IAASD,EAAS,EAAIC,EAAK,GAAKD,EAAS,EAAIC,EAAK,GAAKD,EAAS,EAAIC,EAAK,GAAK,IAChFD,EAAWC,EAEf,CAEA,OAAOD,CACT,CAOA,SAASE,GAAQZ,EAASW,EAAMF,EAAO,CACrC,IAAII,EAAI,EACR,GAAGF,EAAK,QAAQ,YAAY,IAAMX,EAAQ,YAAY,EACpDa,GAAK,UACIF,EAAK,UAAY,IAC1B,OAAO,KAGT,MAAO,CACL,EAAGF,EACH,EAAGE,EAAK,EACR,EAAGA,EAAK,EACR,EAAGE,CACL,CACF,CAOA,SAASpB,GAAkBG,EAAQkB,EAAU,CAE3C,IAAIjB,EAAUF,GAAmBC,IAAW,OAAY,IAAMA,GAAU,EAAE,EAE1E,GAAI,CAACkB,EAEH,OAAOjB,EACJ,OAAOkB,EAAS,EAChB,KAAKC,EAAY,EACjB,IAAIC,EAAc,EAGvB,IAAIC,EAAaJ,EAAS,IAAI,SAAqBK,EAAMV,EAAO,CAC9D,OAAOF,GAAmBY,EAAMtB,EAASY,CAAK,CAChD,CAAC,EAGD,OAAOS,EAAW,OAAOH,EAAS,EAAE,KAAKC,EAAY,EAAE,IAAI,SAAoBN,EAAU,CACvF,OAAOI,EAASI,EAAW,QAAQR,CAAQ,EAC7C,CAAC,CACH,CAOA,SAASM,GAAaI,EAAGC,EAAG,CAC1B,OAAQA,EAAE,EAAID,EAAE,GAAOC,EAAE,EAAID,EAAE,GAAOA,EAAE,EAAIC,EAAE,GAAOD,EAAE,EAAIC,EAAE,GAAM,CACrE,CAOA,SAASJ,GAAeN,EAAM,CAC5B,OAAOA,EAAK,OACd,CAOA,SAASI,GAAUJ,EAAM,CACvB,OAAOA,EAAK,EAAI,CAClB,ICxKA,IAAAW,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAeAA,GAAO,QAAUC,GACjBD,GAAO,QAAQ,mBAAqBC,GAOpC,IAAIC,GAAuB,8BAO3B,SAASC,GAAoBC,EAAQ,CAKnC,QAJIC,EAAUD,EAAO,MAAM,GAAG,EAC1BE,EAAc,GACdC,EAAa,EAER,EAAI,EAAGC,EAAI,EAAG,EAAIH,EAAQ,OAAQ,IAAK,CAC9C,IAAII,EAAWC,GAAcL,EAAQ,GAAG,KAAK,EAAG,CAAC,EAE7CI,IACFJ,EAAQG,KAAOC,EACfH,EAAcA,GAAeK,GAAQ,WAAYF,CAAQ,EACzDF,EAAa,KAAK,IAAIA,EAAYE,EAAS,GAAK,CAAC,EAErD,CAEA,OAAKH,IAKHD,EAAQG,KAAO,CACb,SAAU,WACV,EAAGD,EACH,CACF,GAIFF,EAAQ,OAASG,EAEVH,CACT,CAOA,SAASK,GAAcE,EAAKC,EAAG,CAC7B,IAAIC,EAAQZ,GAAqB,KAAKU,CAAG,EACzC,GAAI,CAACE,EAAO,OAAO,KAEnB,IAAIL,EAAWK,EAAM,GACjBC,EAAI,EACR,GAAID,EAAM,GAER,QADIE,EAASF,EAAM,GAAG,MAAM,GAAG,EACtBN,EAAI,EAAGA,EAAIQ,EAAO,OAAQR,IAAK,CACtC,IAAIS,EAAID,EAAOR,GAAG,KAAK,EAAE,MAAM,GAAG,EAClC,GAAIS,EAAE,KAAO,IAAK,CAChBF,EAAI,WAAWE,EAAE,EAAE,EACnB,KACF,CACF,CAGF,MAAO,CACL,SAAUR,EACV,EAAGM,EACH,EAAGF,CACL,CACF,CAOA,SAASK,GAAoBT,EAAUU,EAAUC,EAAO,CAGtD,QAFIC,EAAW,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,CAAC,EAExB,EAAI,EAAG,EAAIF,EAAS,OAAQ,IAAK,CACxC,IAAIG,EAAOX,GAAQF,EAAUU,EAAS,GAAIC,CAAK,EAE3CE,IAASD,EAAS,EAAIC,EAAK,GAAKD,EAAS,EAAIC,EAAK,GAAKD,EAAS,EAAIC,EAAK,GAAK,IAChFD,EAAWC,EAEf,CAEA,OAAOD,CACT,CAOA,SAASV,GAAQF,EAAUa,EAAMF,EAAO,CACtC,IAAIG,EAAI,EACR,GAAGD,EAAK,SAAS,YAAY,IAAMb,EAAS,YAAY,EACtDc,GAAK,UACID,EAAK,WAAa,IAC3B,OAAO,KAGT,MAAO,CACL,EAAGF,EACH,EAAGE,EAAK,EACR,EAAGA,EAAK,EACR,EAAGC,CACL,CACF,CAOA,SAAStB,GAAmBG,EAAQoB,EAAU,CAC5C,IAAInB,EAAUF,GAAoBC,GAAU,EAAE,EAE9C,GAAI,CAACoB,EAEH,OAAOnB,EACJ,OAAOoB,EAAS,EAChB,KAAKC,EAAY,EACjB,IAAIC,EAAe,EAGxB,IAAIC,EAAaJ,EAAS,IAAI,SAAqBK,EAAMT,EAAO,CAC9D,OAAOF,GAAoBW,EAAMxB,EAASe,CAAK,CACjD,CAAC,EAGD,OAAOQ,EAAW,OAAOH,EAAS,EAAE,KAAKC,EAAY,EAAE,IAAI,SAAqBL,EAAU,CACxF,OAAOG,EAASI,EAAW,QAAQP,CAAQ,EAC7C,CAAC,CACH,CAOA,SAASK,GAAaI,EAAGC,EAAG,CAC1B,OAAQA,EAAE,EAAID,EAAE,GAAOC,EAAE,EAAID,EAAE,GAAOA,EAAE,EAAIC,EAAE,GAAOD,EAAE,EAAIC,EAAE,GAAM,CACrE,CAOA,SAASJ,GAAgBL,EAAM,CAC7B,OAAOA,EAAK,QACd,CAOA,SAASG,GAAUH,EAAM,CACvB,OAAOA,EAAK,EAAI,CAClB,ICvLA,IAAAU,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAeAA,GAAO,QAAUC,GACjBD,GAAO,QAAQ,mBAAqBC,GAOpC,IAAIC,GAAuB,+CAO3B,SAASC,GAAoBC,EAAQ,CAGnC,QAFIC,EAAUD,EAAO,MAAM,GAAG,EAErBE,EAAI,EAAGC,EAAI,EAAGD,EAAID,EAAQ,OAAQC,IAAK,CAC9C,IAAIE,EAAWC,GAAcJ,EAAQC,GAAG,KAAK,EAAGA,CAAC,EAE7CE,IACFH,EAAQE,KAAOC,EAEnB,CAGA,OAAAH,EAAQ,OAASE,EAEVF,CACT,CAOA,SAASI,GAAcC,EAAKJ,EAAG,CAC7B,IAAIK,EAAQT,GAAqB,KAAKQ,CAAG,EACzC,GAAI,CAACC,EAAO,OAAO,KAEnB,IAAIC,EAASD,EAAM,GACfE,EAASF,EAAM,GACfG,EAAOF,EAEPC,IAAQC,GAAQ,IAAMD,GAE1B,IAAIE,EAAI,EACR,GAAIJ,EAAM,GAER,QADIK,EAASL,EAAM,GAAG,MAAM,GAAG,EACtBJ,EAAI,EAAGA,EAAIS,EAAO,OAAQT,IAAK,CACtC,IAAIU,EAAID,EAAOT,GAAG,MAAM,GAAG,EACvBU,EAAE,KAAO,MAAKF,EAAI,WAAWE,EAAE,EAAE,EACvC,CAGF,MAAO,CACL,OAAQL,EACR,OAAQC,EACR,EAAGE,EACH,EAAGT,EACH,KAAMQ,CACR,CACF,CAOA,SAASI,GAAoBV,EAAUW,EAAUC,EAAO,CAGtD,QAFIC,EAAW,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,CAAC,EAExB,EAAI,EAAG,EAAIF,EAAS,OAAQ,IAAK,CACxC,IAAIG,EAAOC,GAAQf,EAAUW,EAAS,GAAIC,CAAK,EAE3CE,IAASD,EAAS,EAAIC,EAAK,GAAKD,EAAS,EAAIC,EAAK,GAAKD,EAAS,EAAIC,EAAK,GAAK,IAChFD,EAAWC,EAEf,CAEA,OAAOD,CACT,CAOA,SAASE,GAAQf,EAAUc,EAAMF,EAAO,CACtC,IAAIH,EAAIR,GAAcD,CAAQ,EAC9B,GAAI,CAACS,EAAG,OAAO,KACf,IAAIO,EAAI,EACR,GAAGF,EAAK,KAAK,YAAY,IAAML,EAAE,KAAK,YAAY,EAChDO,GAAK,UACIF,EAAK,OAAO,YAAY,IAAML,EAAE,KAAK,YAAY,EAC1DO,GAAK,UACIF,EAAK,KAAK,YAAY,IAAML,EAAE,OAAO,YAAY,EAC1DO,GAAK,UACIF,EAAK,OAAS,IACvB,OAAO,KAGT,MAAO,CACL,EAAGF,EACH,EAAGE,EAAK,EACR,EAAGA,EAAK,EACR,EAAGE,CACL,CACF,CAOA,SAASvB,GAAmBG,EAAQqB,EAAU,CAE5C,IAAIpB,EAAUF,GAAoBC,IAAW,OAAY,IAAMA,GAAU,EAAE,EAE3E,GAAI,CAACqB,EAEH,OAAOpB,EACJ,OAAOqB,EAAS,EAChB,KAAKC,EAAY,EACjB,IAAIC,EAAe,EAGxB,IAAIC,EAAaJ,EAAS,IAAI,SAAqBK,EAAMV,EAAO,CAC9D,OAAOF,GAAoBY,EAAMzB,EAASe,CAAK,CACjD,CAAC,EAGD,OAAOS,EAAW,OAAOH,EAAS,EAAE,KAAKC,EAAY,EAAE,IAAI,SAAqBN,EAAU,CACxF,OAAOI,EAASI,EAAW,QAAQR,CAAQ,EAC7C,CAAC,CACH,CAOA,SAASM,GAAaI,EAAGC,EAAG,CAC1B,OAAQA,EAAE,EAAID,EAAE,GAAOC,EAAE,EAAID,EAAE,GAAOA,EAAE,EAAIC,EAAE,GAAOD,EAAE,EAAIC,EAAE,GAAM,CACrE,CAOA,SAASJ,GAAgBN,EAAM,CAC7B,OAAOA,EAAK,IACd,CAOA,SAASI,GAAUJ,EAAM,CACvB,OAAOA,EAAK,EAAI,CAClB,IClLA,IAAAW,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAeAA,GAAO,QAAUC,GACjBD,GAAO,QAAQ,oBAAsBC,GAOrC,IAAIC,GAAwB,2CAO5B,SAASC,GAAYC,EAAQ,CAG3B,QAFIC,EAAUC,GAAgBF,CAAM,EAE3BG,EAAI,EAAGC,EAAI,EAAGD,EAAIF,EAAQ,OAAQE,IAAK,CAC9C,IAAIE,EAAYC,GAAeL,EAAQE,GAAG,KAAK,EAAGA,CAAC,EAE/CE,IACFJ,EAAQG,KAAOC,EAEnB,CAGA,OAAAJ,EAAQ,OAASG,EAEVH,CACT,CAOA,SAASK,GAAeC,EAAKJ,EAAG,CAC9B,IAAIK,EAAQV,GAAsB,KAAKS,CAAG,EAC1C,GAAI,CAACC,EAAO,OAAO,KAEnB,IAAIC,EAAS,OAAO,OAAO,IAAI,EAC3BC,EAAI,EACJC,EAAUH,EAAM,GAChBI,EAAOJ,EAAM,GAEjB,GAAIA,EAAM,GAGR,QAFIK,EAAOC,GAAgBN,EAAM,EAAE,EAAE,IAAIO,EAAiB,EAEjDX,EAAI,EAAGA,EAAIS,EAAK,OAAQT,IAAK,CACpC,IAAIY,EAAOH,EAAKT,GACZa,EAAMD,EAAK,GAAG,YAAY,EAC1BE,EAAMF,EAAK,GAGXG,EAAQD,GAAOA,EAAI,KAAO,KAAOA,EAAIA,EAAI,OAAS,KAAO,IACzDA,EAAI,OAAO,EAAGA,EAAI,OAAS,CAAC,EAC5BA,EAEJ,GAAID,IAAQ,IAAK,CACfP,EAAI,WAAWS,CAAK,EACpB,KACF,CAGAV,EAAOQ,GAAOE,CAChB,CAGF,MAAO,CACL,KAAMP,EACN,QAASD,EACT,OAAQF,EACR,EAAGC,EACH,EAAGP,CACL,CACF,CAOA,SAASiB,GAAqBR,EAAMS,EAAUC,EAAO,CAGnD,QAFIC,EAAW,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,CAAC,EAExB,EAAI,EAAG,EAAIF,EAAS,OAAQ,IAAK,CACxC,IAAIG,EAAOC,GAAQb,EAAMS,EAAS,GAAIC,CAAK,EAEvCE,IAASD,EAAS,EAAIC,EAAK,GAAKD,EAAS,EAAIC,EAAK,GAAKD,EAAS,EAAIC,EAAK,GAAK,IAChFD,EAAWC,EAEf,CAEA,OAAOD,CACT,CAOA,SAASE,GAAQb,EAAMY,EAAMF,EAAO,CAClC,IAAII,EAAIpB,GAAeM,CAAI,EACvBe,EAAI,EAER,GAAI,CAACD,EACH,OAAO,KAGT,GAAGF,EAAK,KAAK,YAAY,GAAKE,EAAE,KAAK,YAAY,EAC/CC,GAAK,UACGH,EAAK,MAAQ,IACrB,OAAO,KAGT,GAAGA,EAAK,QAAQ,YAAY,GAAKE,EAAE,QAAQ,YAAY,EACrDC,GAAK,UACGH,EAAK,SAAW,IACxB,OAAO,KAGT,IAAII,EAAO,OAAO,KAAKJ,EAAK,MAAM,EAClC,GAAII,EAAK,OAAS,EAChB,GAAIA,EAAK,MAAM,SAAUC,EAAG,CAC1B,OAAOL,EAAK,OAAOK,IAAM,MAAQL,EAAK,OAAOK,IAAM,IAAI,YAAY,IAAMH,EAAE,OAAOG,IAAM,IAAI,YAAY,CAC1G,CAAC,EACCF,GAAK,MAEL,QAAO,KAIX,MAAO,CACL,EAAGL,EACH,EAAGE,EAAK,EACR,EAAGA,EAAK,EACR,EAAGG,CACL,CACF,CAOA,SAAS9B,GAAoBG,EAAQ8B,EAAU,CAE7C,IAAI7B,EAAUF,GAAYC,IAAW,OAAY,MAAQA,GAAU,EAAE,EAErE,GAAI,CAAC8B,EAEH,OAAO7B,EACJ,OAAO8B,EAAS,EAChB,KAAKC,EAAY,EACjB,IAAIC,EAAW,EAGpB,IAAIC,EAAaJ,EAAS,IAAI,SAAqBlB,EAAMU,EAAO,CAC9D,OAAOF,GAAqBR,EAAMX,EAASqB,CAAK,CAClD,CAAC,EAGD,OAAOY,EAAW,OAAOH,EAAS,EAAE,KAAKC,EAAY,EAAE,IAAI,SAAiBT,EAAU,CACpF,OAAOO,EAASI,EAAW,QAAQX,CAAQ,EAC7C,CAAC,CACH,CAOA,SAASS,GAAaG,EAAGC,EAAG,CAC1B,OAAQA,EAAE,EAAID,EAAE,GAAOC,EAAE,EAAID,EAAE,GAAOA,EAAE,EAAIC,EAAE,GAAOD,EAAE,EAAIC,EAAE,GAAM,CACrE,CAOA,SAASH,GAAYT,EAAM,CACzB,OAAOA,EAAK,KAAO,IAAMA,EAAK,OAChC,CAOA,SAASO,GAAUP,EAAM,CACvB,OAAOA,EAAK,EAAI,CAClB,CAOA,SAASa,GAAWC,EAAQ,CAI1B,QAHIC,EAAQ,EACRjB,EAAQ,GAEJA,EAAQgB,EAAO,QAAQ,IAAKhB,CAAK,KAAO,IAC9CiB,IACAjB,IAGF,OAAOiB,CACT,CAOA,SAASxB,GAAkBR,EAAK,CAC9B,IAAIe,EAAQf,EAAI,QAAQ,GAAG,EACvBU,EACAC,EAEJ,OAAII,IAAU,GACZL,EAAMV,GAENU,EAAMV,EAAI,OAAO,EAAGe,CAAK,EACzBJ,EAAMX,EAAI,OAAOe,EAAQ,CAAC,GAGrB,CAACL,EAAKC,CAAG,CAClB,CAOA,SAAShB,GAAgBF,EAAQ,CAG/B,QAFIC,EAAUD,EAAO,MAAM,GAAG,EAErBG,EAAI,EAAGC,EAAI,EAAGD,EAAIF,EAAQ,OAAQE,IACrCkC,GAAWpC,EAAQG,EAAE,EAAI,GAAK,EAChCH,EAAQ,EAAEG,GAAKH,EAAQE,GAEvBF,EAAQG,IAAM,IAAMH,EAAQE,GAKhC,OAAAF,EAAQ,OAASG,EAAI,EAEdH,CACT,CAOA,SAASa,GAAgBP,EAAK,CAG5B,QAFIiC,EAAajC,EAAI,MAAM,GAAG,EAErBJ,EAAI,EAAGC,EAAI,EAAGD,EAAIqC,EAAW,OAAQrC,IACxCkC,GAAWG,EAAWpC,EAAE,EAAI,GAAK,EACnCoC,EAAW,EAAEpC,GAAKoC,EAAWrC,GAE7BqC,EAAWpC,IAAM,IAAMoC,EAAWrC,GAKtCqC,EAAW,OAASpC,EAAI,EAExB,QAASD,EAAI,EAAGA,EAAIqC,EAAW,OAAQrC,IACrCqC,EAAWrC,GAAKqC,EAAWrC,GAAG,KAAK,EAGrC,OAAOqC,CACT,ICrSA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAUA,IAAIC,GAAoB,KACpBC,GAAqB,KACrBC,GAAqB,KACrBC,GAAsB,KAO1BJ,GAAO,QAAUK,GACjBL,GAAO,QAAQ,WAAaK,GAQ5B,SAASA,GAAWC,EAAS,CAC3B,GAAI,EAAE,gBAAgBD,IACpB,OAAO,IAAIA,GAAWC,CAAO,EAG/B,KAAK,QAAUA,CACjB,CAEAD,GAAW,UAAU,QAAU,SAAiBE,EAAW,CACzD,IAAIC,EAAM,KAAK,SAASD,CAAS,EACjC,OAAOC,GAAOA,EAAI,EACpB,EAEAH,GAAW,UAAU,SAAW,SAAkBE,EAAW,CAC3D,OAAON,GAAkB,KAAK,QAAQ,QAAQ,kBAAmBM,CAAS,CAC5E,EAEAF,GAAW,UAAU,SAAW,SAAkBE,EAAW,CAC3D,IAAIC,EAAM,KAAK,UAAUD,CAAS,EAClC,OAAOC,GAAOA,EAAI,EACpB,EAEAH,GAAW,UAAU,UAAY,SAAmBE,EAAW,CAC7D,OAAOL,GAAmB,KAAK,QAAQ,QAAQ,mBAAoBK,CAAS,CAC9E,EAEAF,GAAW,UAAU,SAAW,SAAkBE,EAAW,CAC3D,IAAIC,EAAM,KAAK,UAAUD,CAAS,EAClC,OAAOC,GAAOA,EAAI,EACpB,EAEAH,GAAW,UAAU,UAAY,SAAmBE,EAAW,CAC7D,OAAOJ,GAAmB,KAAK,QAAQ,QAAQ,mBAAoBI,CAAS,CAC9E,EAEAF,GAAW,UAAU,UAAY,SAAmBE,EAAW,CAC7D,IAAIC,EAAM,KAAK,WAAWD,CAAS,EACnC,OAAOC,GAAOA,EAAI,EACpB,EAEAH,GAAW,UAAU,WAAa,SAAoBE,EAAW,CAC/D,OAAOH,GAAoB,KAAK,QAAQ,QAAQ,OAAQG,CAAS,CACnE,EAGAF,GAAW,UAAU,iBAAmBA,GAAW,UAAU,QAC7DA,GAAW,UAAU,kBAAoBA,GAAW,UAAU,SAC9DA,GAAW,UAAU,kBAAoBA,GAAW,UAAU,SAC9DA,GAAW,UAAU,mBAAqBA,GAAW,UAAU,UAC/DA,GAAW,UAAU,kBAAoBA,GAAW,UAAU,SAC9DA,GAAW,UAAU,mBAAqBA,GAAW,UAAU,UAC/DA,GAAW,UAAU,mBAAqBA,GAAW,UAAU,UAC/DA,GAAW,UAAU,oBAAsBA,GAAW,UAAU,aCjFhE,IAAAI,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAcA,IAAIC,GAAa,KACbC,GAAO,KAOXF,GAAO,QAAUG,GASjB,SAASA,GAASC,EAAK,CACrB,GAAI,EAAE,gBAAgBD,IACpB,OAAO,IAAIA,GAAQC,CAAG,EAGxB,KAAK,QAAUA,EAAI,QACnB,KAAK,WAAa,IAAIH,GAAWG,CAAG,CACtC,CA2CAD,GAAQ,UAAU,KAClBA,GAAQ,UAAU,MAAQ,SAAUE,EAAQ,CAC1C,IAAIC,EAAQD,EAGZ,GAAIC,GAAS,CAAC,MAAM,QAAQA,CAAK,EAAG,CAClCA,EAAQ,IAAI,MAAM,UAAU,MAAM,EAClC,QAASC,EAAI,EAAGA,EAAID,EAAM,OAAQC,IAChCD,EAAMC,GAAK,UAAUA,EAEzB,CAGA,GAAI,CAACD,GAASA,EAAM,SAAW,EAC7B,OAAO,KAAK,WAAW,WAAW,EAIpC,GAAI,CAAC,KAAK,QAAQ,OAChB,OAAOA,EAAM,GAGf,IAAIE,EAAQF,EAAM,IAAIG,EAAS,EAC3BC,EAAU,KAAK,WAAW,WAAWF,EAAM,OAAOG,EAAS,CAAC,EAC5DC,EAAQF,EAAQ,GAEpB,OAAOE,EACHN,EAAME,EAAM,QAAQI,CAAK,GACzB,EACN,EAeAT,GAAQ,UAAU,SAClBA,GAAQ,UAAU,UAAY,SAAUU,EAAY,CAClD,IAAIC,EAAYD,EAGhB,GAAIC,GAAa,CAAC,MAAM,QAAQA,CAAS,EAAG,CAC1CA,EAAY,IAAI,MAAM,UAAU,MAAM,EACtC,QAASP,EAAI,EAAGA,EAAIO,EAAU,OAAQP,IACpCO,EAAUP,GAAK,UAAUA,EAE7B,CAGA,MAAI,CAACO,GAAaA,EAAU,SAAW,EAC9B,KAAK,WAAW,UAAU,EAG5B,KAAK,WAAW,UAAUA,CAAS,EAAE,IAAM,EACpD,EAeAX,GAAQ,UAAU,QAClBA,GAAQ,UAAU,SAAW,SAAUY,EAAW,CAChD,IAAIC,EAAWD,EAGf,GAAIC,GAAY,CAAC,MAAM,QAAQA,CAAQ,EAAG,CACxCA,EAAW,IAAI,MAAM,UAAU,MAAM,EACrC,QAAST,EAAI,EAAGA,EAAIS,EAAS,OAAQT,IACnCS,EAAST,GAAK,UAAUA,EAE5B,CAGA,MAAI,CAACS,GAAYA,EAAS,SAAW,EAC5B,KAAK,WAAW,SAAS,EAG3B,KAAK,WAAW,SAASA,CAAQ,EAAE,IAAM,EAClD,EAeAb,GAAQ,UAAU,KAClBA,GAAQ,UAAU,MAClBA,GAAQ,UAAU,SAClBA,GAAQ,UAAU,UAAY,SAAUc,EAAY,CAClD,IAAIC,EAAYD,EAGhB,GAAIC,GAAa,CAAC,MAAM,QAAQA,CAAS,EAAG,CAC1CA,EAAY,IAAI,MAAM,UAAU,MAAM,EACtC,QAASX,EAAI,EAAGA,EAAIW,EAAU,OAAQX,IACpCW,EAAUX,GAAK,UAAUA,EAE7B,CAGA,MAAI,CAACW,GAAaA,EAAU,SAAW,EAC9B,KAAK,WAAW,UAAU,EAG5B,KAAK,WAAW,UAAUA,CAAS,EAAE,IAAM,EACpD,EAUA,SAAST,GAAWU,EAAM,CACxB,OAAOA,EAAK,QAAQ,GAAG,IAAM,GACzBjB,GAAK,OAAOiB,CAAI,EAChBA,CACN,CAUA,SAASR,GAAWQ,EAAM,CACxB,OAAO,OAAOA,GAAS,QACzB,IC7OA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAeA,IAAIC,GAAU,KACVC,GAAY,KAAgB,SAAS,EACrCC,GAAO,QAAQ,OAAO,KACtBC,GAAS,KACTC,GAAO,QAAQ,QACfC,GAAQ,KACRC,GAAa,KACbC,GAAQ,KACRC,GAAY,KAOZC,GAAM,OAAO,OAAOL,GAAK,gBAAgB,SAAS,EAOtDL,GAAO,QAAUU,GA0BjBA,GAAI,IACJA,GAAI,OAAS,SAAgBC,EAAM,CACjC,GAAI,CAACA,EACH,MAAM,IAAI,UAAU,sCAAsC,EAG5D,GAAI,OAAOA,GAAS,SAClB,MAAM,IAAI,UAAU,kCAAkC,EAGxD,IAAIC,EAAKD,EAAK,YAAY,EAE1B,OAAQC,EAAI,CACV,IAAK,UACL,IAAK,WACH,OAAO,KAAK,QAAQ,UACf,KAAK,QAAQ,QACpB,QACE,OAAO,KAAK,QAAQA,EACxB,CACF,EAgDAF,GAAI,QAAU,UAAU,CACtB,IAAIG,EAASZ,GAAQ,IAAI,EACzB,OAAOY,EAAO,MAAM,MAAMA,EAAQ,SAAS,CAC7C,EAUAH,GAAI,iBAAmB,UAAU,CAC/B,IAAIG,EAASZ,GAAQ,IAAI,EACzB,OAAOY,EAAO,UAAU,MAAMA,EAAQ,SAAS,CACjD,EAEAH,GAAI,gBAAkBR,GAAU,SAASQ,GAAI,iBAC3C,mDAAmD,EAWrDA,GAAI,gBAAkB,UAAU,CAC9B,IAAIG,EAASZ,GAAQ,IAAI,EACzB,OAAOY,EAAO,SAAS,MAAMA,EAAQ,SAAS,CAChD,EAEAH,GAAI,eAAiBR,GAAU,SAASQ,GAAI,gBAC1C,iDAAiD,EAWnDA,GAAI,iBAAmB,UAAU,CAC/B,IAAIG,EAASZ,GAAQ,IAAI,EACzB,OAAOY,EAAO,UAAU,MAAMA,EAAQ,SAAS,CACjD,EAEAH,GAAI,gBAAkBR,GAAU,SAASQ,GAAI,iBAC3C,mDAAmD,EA2BrDA,GAAI,MAAQ,SAAeI,EAAMC,EAAS,CACxC,IAAIC,EAAQ,KAAK,IAAI,OAAO,EAC5B,GAAI,EAACA,EACL,OAAOT,GAAWO,EAAME,EAAOD,CAAO,CACxC,EAmBAL,GAAI,MAAQ,SAAeC,EAAMM,EAAc,CAC7C,IAAIC,EAAS,KAAK,QAAU,CAAC,EACzBC,EAAO,KAAK,MAAQ,CAAC,EACrBC,EAAQ,KAAK,OAAS,CAAC,EAEvBC,EAAO,UAAU,SAAW,EAC5B,OACA,gBAGJ,OAFAnB,GAAU,aAAemB,EAAO,mDAAmD,EAEvEH,EAAOP,IAAf,MAAwBO,EAAO,eAAeP,CAAI,EAAUO,EAAOP,GAC3DQ,EAAKR,IAAb,KAA2BQ,EAAKR,GACxBS,EAAMT,IAAd,KAA4BS,EAAMT,GAE/BM,CACT,EA4BAP,GAAI,GAAK,SAAYY,EAAO,CAC1B,IAAIC,EAAMD,EAGV,GAAI,CAAC,MAAM,QAAQA,CAAK,EAAG,CACzBC,EAAM,IAAI,MAAM,UAAU,MAAM,EAChC,QAASC,EAAI,EAAGA,EAAID,EAAI,OAAQC,IAC9BD,EAAIC,GAAK,UAAUA,EAEvB,CAEA,OAAOpB,GAAO,KAAMmB,CAAG,CACzB,EAgBAE,GAAaf,GAAK,WAAY,UAAmB,CAC/C,IAAIgB,EAAQ,KAAK,WAAW,UACxB,QACA,OACAC,EAAQ,KAAK,IAAI,IAAI,gBAAgB,EAEzC,GAAI,CAACA,EAAM,KAAK,WAAW,cAAe,CAAC,EACzC,OAAOD,EAKT,IAAIE,EAAS,KAAK,IAAI,mBAAmB,GAAKF,EAC1CG,EAAQD,EAAO,QAAQ,GAAG,EAE9B,OAAOC,IAAU,GACbD,EAAO,UAAU,EAAGC,CAAK,EAAE,KAAK,EAChCD,EAAO,KAAK,CAClB,CAAC,EAWDH,GAAaf,GAAK,SAAU,UAAiB,CAC3C,OAAO,KAAK,WAAa,OAC3B,CAAC,EAYDe,GAAaf,GAAK,KAAM,UAAa,CACnC,IAAIiB,EAAQ,KAAK,IAAI,IAAI,gBAAgB,EACzC,OAAOlB,GAAU,KAAMkB,CAAK,CAC9B,CAAC,EAcDF,GAAaf,GAAK,MAAO,UAAe,CACtC,IAAIiB,EAAQ,KAAK,IAAI,IAAI,gBAAgB,EACrCG,EAAQrB,GAAU,IAAI,KAAMkB,CAAK,EAIrC,OAAAG,EAAM,QAAQ,EAAE,IAAI,EAEbA,CACT,CAAC,EAiBDL,GAAaf,GAAK,aAAc,UAAsB,CACpD,IAAIqB,EAAW,KAAK,SAEpB,GAAI,CAACA,EAAU,MAAO,CAAC,EAEvB,IAAIC,EAAS,KAAK,IAAI,IAAI,kBAAkB,EACxCC,EAAc9B,GAAK4B,CAAQ,EAE3B,CAACA,CAAQ,EADTA,EAAS,MAAM,GAAG,EAAE,QAAQ,EAGhC,OAAOE,EAAW,MAAMD,CAAM,CAChC,CAAC,EASDP,GAAaf,GAAK,OAAQ,UAAgB,CACxC,OAAOF,GAAM,IAAI,EAAE,QACrB,CAAC,EAaDiB,GAAaf,GAAK,WAAY,UAAmB,CAC/C,IAAIiB,EAAQ,KAAK,IAAI,IAAI,gBAAgB,EACrCO,EAAO,KAAK,IAAI,kBAAkB,EAUtC,GARI,CAACA,GAAQ,CAACP,EAAM,KAAK,WAAW,cAAe,CAAC,EAClDO,EAAO,KAAK,IAAI,MAAM,EACbA,EAAK,QAAQ,GAAG,IAAM,KAG/BA,EAAOA,EAAK,UAAU,EAAGA,EAAK,QAAQ,GAAG,CAAC,EAAE,UAAU,GAGpD,EAACA,EAGL,KAAIF,EAASE,EAAK,KAAO,IACrBA,EAAK,QAAQ,GAAG,EAAI,EACpB,EACAL,EAAQK,EAAK,QAAQ,IAAKF,CAAM,EAEpC,OAAOH,IAAU,GACbK,EAAK,UAAU,EAAGL,CAAK,EACvBK,EACN,CAAC,EAIDT,GAAaf,GAAK,OAAQR,GAAU,SAAS,UAAe,CAC1D,OAAO,KAAK,QACd,EAAG,oCAAoC,CAAC,EAWxCuB,GAAaf,GAAK,QAAS,UAAU,CACnC,IAAIyB,EAAS,KAAK,OACdC,EAAM,KAAK,IACXC,EAASD,EAAI,WAGjB,OAAcD,IAAV,OAA+BA,IAAX,OAA0B,GAG7CE,GAAU,KAAOA,EAAS,KAAgBA,IAAR,IAC9B/B,GAAM,KAAK,QAAS,CACzB,KAAQ8B,EAAI,IAAI,MAAM,EACtB,gBAAiBA,EAAI,IAAI,eAAe,CAC1C,CAAC,EAGI,EACT,CAAC,EAWDX,GAAaf,GAAK,QAAS,UAAgB,CACzC,MAAO,CAAC,KAAK,KACf,CAAC,EASDe,GAAaf,GAAK,MAAO,UAAc,CACrC,IAAI4B,EAAM,KAAK,IAAI,kBAAkB,GAAK,GAC1C,OAAOA,EAAI,YAAY,IAAM,gBAC/B,CAAC,EAUD,SAASb,GAAac,EAAK5B,EAAM6B,EAAQ,CACvC,OAAO,eAAeD,EAAK5B,EAAM,CAC/B,aAAc,GACd,WAAY,GACZ,IAAK6B,CACP,CAAC,CACH,IC5gBA,IAAAC,GAAAC,EAAAC,IAAA,CAIA,IAAIC,GAAS,QAAQ,UAWrBD,GAAQ,KAAO,SAASE,EAAKC,EAAO,CAClC,GAAgB,OAAOD,GAAnB,SAAwB,MAAM,IAAI,UAAU,4CAA4C,EAC5F,GAAgB,OAAOC,GAAnB,SAA2B,MAAM,IAAI,UAAU,iCAAiC,EACpF,OAAOD,EAAM,IAAMD,GAChB,WAAW,SAAUE,CAAM,EAC3B,OAAOD,CAAG,EACV,OAAO,QAAQ,EACf,QAAQ,OAAQ,EAAE,CACvB,EAYAF,GAAQ,OAAS,SAASE,EAAKC,EAAO,CACpC,GAAgB,OAAOD,GAAnB,SAAwB,MAAM,IAAI,UAAU,wCAAwC,EACxF,GAAgB,OAAOC,GAAnB,SAA2B,MAAM,IAAI,UAAU,iCAAiC,EACpF,IAAIC,EAAMF,EAAI,MAAM,EAAGA,EAAI,YAAY,GAAG,CAAC,EACvCG,EAAML,GAAQ,KAAKI,EAAKD,CAAM,EAElC,OAAOG,GAAKD,CAAG,GAAKC,GAAKJ,CAAG,EAAIE,EAAM,EACxC,EAMA,SAASE,GAAKF,EAAI,CAChB,OAAOH,GAAO,WAAW,MAAM,EAAE,OAAOG,CAAG,EAAE,OAAO,KAAK,CAC3D,IClDA,IAAAG,GAAAC,EAAAC,IAAA,cAcAA,GAAQ,MAAQC,GAChBD,GAAQ,UAAYE,GAOpB,IAAIC,GAAa,OAAO,UAAU,SAU9BC,GAAqB,wCAczB,SAASH,GAAMI,EAAKC,EAAS,CAC3B,GAAI,OAAOD,GAAQ,SACjB,MAAM,IAAI,UAAU,+BAA+B,EAQrD,QALIE,EAAM,CAAC,EACPC,EAAMF,GAAW,CAAC,EAClBG,EAAMD,EAAI,QAAUE,GAEpBC,EAAQ,EACLA,EAAQN,EAAI,QAAQ,CACzB,IAAIO,EAAQP,EAAI,QAAQ,IAAKM,CAAK,EAGlC,GAAIC,IAAU,GACZ,MAGF,IAAIC,EAASR,EAAI,QAAQ,IAAKM,CAAK,EAEnC,GAAIE,IAAW,GACbA,EAASR,EAAI,eACJQ,EAASD,EAAO,CAEzBD,EAAQN,EAAI,YAAY,IAAKO,EAAQ,CAAC,EAAI,EAC1C,QACF,CAEA,IAAIE,EAAMT,EAAI,MAAMM,EAAOC,CAAK,EAAE,KAAK,EAGvC,GAAkBL,EAAIO,KAAlB,OAAwB,CAC1B,IAAIC,EAAMV,EAAI,MAAMO,EAAQ,EAAGC,CAAM,EAAE,KAAK,EAGxCE,EAAI,WAAW,CAAC,IAAM,KACxBA,EAAMA,EAAI,MAAM,EAAG,EAAE,GAGvBR,EAAIO,GAAOE,GAAUD,EAAKN,CAAG,CAC/B,CAEAE,EAAQE,EAAS,CACnB,CAEA,OAAON,CACT,CAkBA,SAASL,GAAUe,EAAMF,EAAKT,EAAS,CACrC,IAAIE,EAAMF,GAAW,CAAC,EAClBY,EAAMV,EAAI,QAAUW,GAExB,GAAI,OAAOD,GAAQ,WACjB,MAAM,IAAI,UAAU,0BAA0B,EAGhD,GAAI,CAACd,GAAmB,KAAKa,CAAI,EAC/B,MAAM,IAAI,UAAU,0BAA0B,EAGhD,IAAIG,EAAQF,EAAIH,CAAG,EAEnB,GAAIK,GAAS,CAAChB,GAAmB,KAAKgB,CAAK,EACzC,MAAM,IAAI,UAAU,yBAAyB,EAG/C,IAAIf,EAAMY,EAAO,IAAMG,EAEvB,GAAYZ,EAAI,QAAZ,KAAoB,CACtB,IAAIa,EAASb,EAAI,OAAS,EAE1B,GAAI,MAAMa,CAAM,GAAK,CAAC,SAASA,CAAM,EACnC,MAAM,IAAI,UAAU,0BAA0B,EAGhDhB,GAAO,aAAe,KAAK,MAAMgB,CAAM,CACzC,CAEA,GAAIb,EAAI,OAAQ,CACd,GAAI,CAACJ,GAAmB,KAAKI,EAAI,MAAM,EACrC,MAAM,IAAI,UAAU,0BAA0B,EAGhDH,GAAO,YAAcG,EAAI,MAC3B,CAEA,GAAIA,EAAI,KAAM,CACZ,GAAI,CAACJ,GAAmB,KAAKI,EAAI,IAAI,EACnC,MAAM,IAAI,UAAU,wBAAwB,EAG9CH,GAAO,UAAYG,EAAI,IACzB,CAEA,GAAIA,EAAI,QAAS,CACf,IAAIc,EAAUd,EAAI,QAElB,GAAI,CAACe,GAAOD,CAAO,GAAK,MAAMA,EAAQ,QAAQ,CAAC,EAC7C,MAAM,IAAI,UAAU,2BAA2B,EAGjDjB,GAAO,aAAeiB,EAAQ,YAAY,CAC5C,CAUA,GARId,EAAI,WACNH,GAAO,cAGLG,EAAI,SACNH,GAAO,YAGLG,EAAI,SAAU,CAChB,IAAIgB,EAAW,OAAOhB,EAAI,UAAa,SACnCA,EAAI,SAAS,YAAY,EACzBA,EAAI,SAER,OAAQgB,EAAU,CAChB,IAAK,MACHnB,GAAO,iBACP,MACF,IAAK,SACHA,GAAO,oBACP,MACF,IAAK,OACHA,GAAO,kBACP,MACF,QACE,MAAM,IAAI,UAAU,4BAA4B,CACpD,CACF,CAEA,GAAIG,EAAI,SAAU,CAChB,IAAIiB,EAAW,OAAOjB,EAAI,UAAa,SACnCA,EAAI,SAAS,YAAY,EAAIA,EAAI,SAErC,OAAQiB,EAAU,CAChB,IAAK,GACHpB,GAAO,oBACP,MACF,IAAK,MACHA,GAAO,iBACP,MACF,IAAK,SACHA,GAAO,oBACP,MACF,IAAK,OACHA,GAAO,kBACP,MACF,QACE,MAAM,IAAI,UAAU,4BAA4B,CACpD,CACF,CAEA,OAAOA,CACT,CASA,SAASK,GAAQL,EAAK,CACpB,OAAOA,EAAI,QAAQ,GAAG,IAAM,GACxB,mBAAmBA,CAAG,EACtBA,CACN,CASA,SAASc,GAAQJ,EAAK,CACpB,OAAO,mBAAmBA,CAAG,CAC/B,CASA,SAASQ,GAAQR,EAAK,CACpB,OAAOZ,GAAW,KAAKY,CAAG,IAAM,iBAC9BA,aAAe,IACnB,CAUA,SAASC,GAAUX,EAAKK,EAAQ,CAC9B,GAAI,CACF,OAAOA,EAAOL,CAAG,CACnB,MAAE,CACA,OAAOA,CACT,CACF,IC7QA,IAAAqB,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAYAA,GAAO,QAAUC,GACjBD,GAAO,QAAQ,OAASE,GAaxB,IAAIC,GAAoB,iCAWxB,SAASD,GAAQE,EAAQC,EAAO,CAC9B,GAAI,OAAOD,GAAW,SACpB,MAAM,IAAI,UAAU,6BAA6B,EAGnD,GAAI,CAACC,EACH,MAAM,IAAI,UAAU,4BAA4B,EASlD,QALIC,EAAU,MAAM,QAAQD,CAAK,EAE7BA,EADAE,GAAM,OAAOF,CAAK,CAAC,EAIdG,EAAI,EAAGA,EAAIF,EAAO,OAAQE,IACjC,GAAI,CAACL,GAAkB,KAAKG,EAAOE,EAAE,EACnC,MAAM,IAAI,UAAU,gDAAgD,EAKxE,GAAIJ,IAAW,IACb,OAAOA,EAIT,IAAIK,EAAML,EACNM,EAAOH,GAAMH,EAAO,YAAY,CAAC,EAGrC,GAAIE,EAAO,QAAQ,GAAG,IAAM,IAAMI,EAAK,QAAQ,GAAG,IAAM,GACtD,MAAO,IAGT,QAASC,EAAI,EAAGA,EAAIL,EAAO,OAAQK,IAAK,CACtC,IAAIC,EAAMN,EAAOK,GAAG,YAAY,EAG5BD,EAAK,QAAQE,CAAG,IAAM,KACxBF,EAAK,KAAKE,CAAG,EACbH,EAAMA,EACFA,EAAM,KAAOH,EAAOK,GACpBL,EAAOK,GAEf,CAEA,OAAOF,CACT,CAUA,SAASF,GAAOH,EAAQ,CAMtB,QALIS,EAAM,EACNC,EAAO,CAAC,EACRC,EAAQ,EAGH,EAAI,EAAGC,EAAMZ,EAAO,OAAQ,EAAIY,EAAK,IAC5C,OAAQZ,EAAO,WAAW,CAAC,EAAG,CAC5B,IAAK,IACCW,IAAUF,IACZE,EAAQF,EAAM,EAAI,GAEpB,MACF,IAAK,IACHC,EAAK,KAAKV,EAAO,UAAUW,EAAOF,CAAG,CAAC,EACtCE,EAAQF,EAAM,EAAI,EAClB,MACF,QACEA,EAAM,EAAI,EACV,KACJ,CAIF,OAAAC,EAAK,KAAKV,EAAO,UAAUW,EAAOF,CAAG,CAAC,EAE/BC,CACT,CAUA,SAASb,GAAMgB,EAAKZ,EAAO,CACzB,GAAI,CAACY,GAAO,CAACA,EAAI,WAAa,CAACA,EAAI,UAEjC,MAAM,IAAI,UAAU,0BAA0B,EAIhD,IAAIR,EAAMQ,EAAI,UAAU,MAAM,GAAK,GAC/Bb,EAAS,MAAM,QAAQK,CAAG,EAC1BA,EAAI,KAAK,IAAI,EACb,OAAOA,CAAG,GAGTA,EAAMP,GAAOE,EAAQC,CAAK,IAC7BY,EAAI,UAAU,OAAQR,CAAG,CAE7B,ICpJA,IAAAS,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAcA,IAAIC,GAAS,KAAuB,OAChCC,GAAqB,KACrBC,GAAc,KACdC,GAAY,KAAgB,SAAS,EACrCC,GAAY,KACZC,GAAa,KACbC,GAAO,QAAQ,QACfC,GAAa,KAAmB,WAChCC,GAAa,KACbC,GAAO,QAAQ,QACfC,GAAW,KACXC,GAAQ,KACRC,GAAO,KAA4B,KACnCC,GAAgB,KAAmB,cACnCC,GAAiB,KAAmB,eACpCC,GAAa,KAAmB,WAChCC,GAAS,KACTC,GAAO,KACPC,GAAUT,GAAK,QACfU,GAAOF,GAAK,KACZG,GAAUX,GAAK,QACfY,GAAO,KAOPC,GAAM,OAAO,OAAOhB,GAAK,eAAe,SAAS,EAOrDP,GAAO,QAAUuB,GAOjB,IAAIC,GAAgB,kBAUpBD,GAAI,OAAS,SAAgBE,EAAM,CACjC,OAAK,OAAOA,GAAS,UAAY,KAAK,MAAMA,CAAI,IAAMA,IAASA,EAAO,IAAMA,EAAO,KACjFrB,GAAU,cAAgB,KAAK,UAAUqB,CAAI,EAAI,qBAAuB,KAAK,MAAMA,CAAI,EAAI,WAAW,EAExG,KAAK,WAAaA,EACX,IACT,EAiBAF,GAAI,MAAQ,SAASG,EAAM,CACzB,IAAIC,EAAO,KAAK,IAAI,MAAM,GAAK,GAC/B,OAAIA,IAAMA,GAAQ,MACX,KAAK,IAAI,OAAQA,EAAO,OAAO,KAAKD,CAAK,EAAE,IAAI,SAASE,EAAI,CACjE,MAAO,IAAMF,EAAME,GAAO,WAAaA,EAAM,GAC/C,CAAC,EAAE,KAAK,IAAI,CAAC,CACf,EAeAL,GAAI,KAAO,SAAcM,EAAM,CAC7B,IAAIC,EAAQD,EACRE,EACAC,EAAM,KAAK,IACXC,EAGAC,EAAM,KAAK,IA2Bf,OAxBI,UAAU,SAAW,IAEnB,OAAO,UAAU,IAAO,UAAY,OAAO,UAAU,IAAO,UAC9D9B,GAAU,mEAAmE,EAC7E,KAAK,WAAa,UAAU,KAE5BA,GAAU,mEAAmE,EAC7E,KAAK,WAAa,UAAU,GAC5B0B,EAAQ,UAAU,KAKlB,OAAOA,GAAU,UAAY,UAAU,SAAW,IAE/C,KAAK,IAAI,cAAc,GAC1B,KAAK,KAAK,KAAK,EAGjB1B,GAAU,sDAAsD,EAChE,KAAK,WAAa0B,EAClBA,EAAQnB,GAAS,QAAQmB,IAGnB,OAAOA,EAAO,CAEpB,IAAK,SACE,KAAK,IAAI,cAAc,GAC1B,KAAK,KAAK,MAAM,EAElB,MACF,IAAK,UACL,IAAK,SACL,IAAK,SACH,GAAIA,IAAU,KACZA,EAAQ,WACC7B,GAAO,SAAS6B,CAAK,EACzB,KAAK,IAAI,cAAc,GAC1B,KAAK,KAAK,KAAK,MAGjB,QAAO,KAAK,KAAKA,CAAK,EAExB,KACJ,CAGI,OAAOA,GAAU,WACnBC,EAAW,OACXE,EAAO,KAAK,IAAI,cAAc,EAG1B,OAAOA,GAAS,UAClB,KAAK,IAAI,eAAgBjB,GAAWiB,EAAM,OAAO,CAAC,GAKtD,IAAIE,EAASD,EAAI,IAAI,SAAS,EAC1BE,EAAe,CAAC,KAAK,IAAI,MAAM,GAAK,OAAOD,GAAW,WAGtDE,EACAP,IAAU,SACR7B,GAAO,SAAS6B,CAAK,EAEvBO,EAAMP,EAAM,OACH,CAACM,GAAgBN,EAAM,OAAS,IAEzCO,EAAMpC,GAAO,WAAW6B,EAAOC,CAAQ,GAGvCD,EAAQ7B,GAAO,KAAK6B,EAAOC,CAAQ,EACnCA,EAAW,OACXM,EAAMP,EAAM,QAGd,KAAK,IAAI,iBAAkBO,CAAG,GAIhC,IAAIC,EACJ,OAAIF,GAAgBC,IAAQ,SACrBC,EAAOH,EAAOL,EAAOC,CAAQ,IAChC,KAAK,IAAI,OAAQO,CAAI,EAKrBN,EAAI,QAAO,KAAK,WAAa,MAGrB,KAAK,aAAb,KAAmC,KAAK,aAAb,OAC7B,KAAK,aAAa,cAAc,EAChC,KAAK,aAAa,gBAAgB,EAClC,KAAK,aAAa,mBAAmB,EACrCF,EAAQ,IAIN,KAAK,aAAe,MACtB,KAAK,IAAI,iBAAkB,GAAG,EAC9B,KAAK,aAAa,mBAAmB,EACrCA,EAAQ,IAGNE,EAAI,SAAW,OAEjB,KAAK,IAAI,EAGT,KAAK,IAAIF,EAAOC,CAAQ,EAGnB,IACT,EAcAR,GAAI,KAAO,SAAcgB,EAAK,CAC5B,IAAIC,EAAMD,EAGN,UAAU,SAAW,IAEnB,OAAO,UAAU,IAAO,UAC1BnC,GAAU,iEAAiE,EAC3E,KAAK,WAAa,UAAU,KAE5BA,GAAU,iEAAiE,EAC3E,KAAK,WAAa,UAAU,GAC5BoC,EAAM,UAAU,KAKpB,IAAIN,EAAM,KAAK,IACXO,EAASP,EAAI,IAAI,aAAa,EAC9BQ,EAAWR,EAAI,IAAI,eAAe,EAClCS,EAAST,EAAI,IAAI,aAAa,EAC9BL,EAAOe,GAAUJ,EAAKE,EAAUC,EAAQF,CAAM,EAGlD,OAAK,KAAK,IAAI,cAAc,GAC1B,KAAK,IAAI,eAAgB,kBAAkB,EAGtC,KAAK,KAAKZ,CAAI,CACvB,EAcAN,GAAI,MAAQ,SAAegB,EAAK,CAC9B,IAAIC,EAAMD,EAGN,UAAU,SAAW,IAEnB,OAAO,UAAU,IAAO,UAC1BnC,GAAU,mEAAmE,EAC7E,KAAK,WAAa,UAAU,KAE5BA,GAAU,mEAAmE,EAC7E,KAAK,WAAa,UAAU,GAC5BoC,EAAM,UAAU,KAKpB,IAAIN,EAAM,KAAK,IACXO,EAASP,EAAI,IAAI,aAAa,EAC9BQ,EAAWR,EAAI,IAAI,eAAe,EAClCS,EAAST,EAAI,IAAI,aAAa,EAC9BL,EAAOe,GAAUJ,EAAKE,EAAUC,EAAQF,CAAM,EAC9CI,EAAW,KAAK,IAAI,MAAMX,EAAI,IAAI,qBAAqB,GAG3D,OAAK,KAAK,IAAI,cAAc,IAC1B,KAAK,IAAI,yBAA0B,SAAS,EAC5C,KAAK,IAAI,eAAgB,kBAAkB,GAIzC,MAAM,QAAQW,CAAQ,IACxBA,EAAWA,EAAS,IAIlB,OAAOA,GAAa,UAAYA,EAAS,SAAW,IACtD,KAAK,IAAI,yBAA0B,SAAS,EAC5C,KAAK,IAAI,eAAgB,iBAAiB,EAG1CA,EAAWA,EAAS,QAAQ,eAAgB,EAAE,EAE1ChB,IAAS,OAEXA,EAAO,GACE,OAAOA,GAAS,WAEzBA,EAAOA,EACJ,QAAQ,UAAW,SAAS,EAC5B,QAAQ,UAAW,SAAS,GAKjCA,EAAO,eAAiBgB,EAAW,sBAA0BA,EAAW,IAAMhB,EAAO,MAGhF,KAAK,KAAKA,CAAI,CACvB,EAiBAN,GAAI,WAAa,SAAoBuB,EAAY,CAC/C,IAAIjB,EAAOlB,GAAS,QAAQmC,IAAe,OAAOA,CAAU,EAE5D,YAAK,WAAaA,EAClB,KAAK,KAAK,KAAK,EAER,KAAK,KAAKjB,CAAI,CACvB,EA2CAN,GAAI,SAAW,SAAkBb,EAAMqC,EAASF,EAAU,CACxD,IAAIG,EAAOH,EACPb,EAAM,KAAK,IACXT,EAAM,KACN0B,EAAOjB,EAAI,KACXkB,EAAOH,GAAW,CAAC,EAEvB,GAAI,CAACrC,EACH,MAAM,IAAI,UAAU,2CAA2C,EAGjE,GAAI,OAAOA,GAAS,SAClB,MAAM,IAAI,UAAU,uCAAuC,EAS7D,GALI,OAAOqC,GAAY,aACrBC,EAAOD,EACPG,EAAO,CAAC,GAGN,CAACA,EAAK,MAAQ,CAAC1C,GAAWE,CAAI,EAChC,MAAM,IAAI,UAAU,uDAAuD,EAI7E,IAAIyC,EAAW,UAAUzC,CAAI,EACzB0C,EAAOlC,GAAKc,EAAKmB,EAAUD,CAAI,EAGnCG,GAAS9B,EAAK6B,EAAMF,EAAM,SAAUI,EAAK,CACvC,GAAIN,EAAM,OAAOA,EAAKM,CAAG,EACzB,GAAIA,GAAOA,EAAI,OAAS,SAAU,OAAOL,EAAK,EAG1CK,GAAOA,EAAI,OAAS,gBAAkBA,EAAI,UAAY,SACxDL,EAAKK,CAAG,CAEZ,CAAC,CACH,EA2CA/B,GAAI,SAAW,SAAUb,EAAMqC,EAASF,EAAU,CAChD,IAAIG,EAAOH,EACPb,EAAM,KAAK,IACXT,EAAM,KACN0B,EAAOjB,EAAI,KACXkB,EAAOH,GAAW,CAAC,EAGnB,OAAOA,GAAY,aACrBC,EAAOD,EACPG,EAAO,CAAC,GAIV,IAAIE,EAAOlC,GAAKc,EAAKtB,EAAMwC,CAAI,EAG/BG,GAAS9B,EAAK6B,EAAMF,EAAM,SAAUI,EAAK,CACvC,GAAIN,EAAM,OAAOA,EAAKM,CAAG,EACzB,GAAIA,GAAOA,EAAI,OAAS,SAAU,OAAOL,EAAK,EAG1CK,GAAOA,EAAI,OAAS,gBAAkBA,EAAI,UAAY,SACxDL,EAAKK,CAAG,CAEZ,CAAC,CACH,EAEA/B,GAAI,SAAWnB,GAAU,SAASmB,GAAI,SACpC,wCAAwC,EAoB1CA,GAAI,SAAW,SAAmBb,EAAM6C,EAAUR,EAASF,EAAU,CACnE,IAAIG,EAAOH,EACPW,EAAOD,EACPL,EAAOH,GAAW,KAGlB,OAAOQ,GAAa,YACtBP,EAAOO,EACPC,EAAO,KACPN,EAAO,MACE,OAAOH,GAAY,aAC5BC,EAAOD,EACPG,EAAO,MAIL,OAAOK,GAAa,WACrB,OAAOR,GAAY,YAAcA,IAAY,UAC9CS,EAAO,KACPN,EAAOK,GAIT,IAAIE,EAAU,CACZ,sBAAuBvD,GAAmBsD,GAAQ9C,CAAI,CACxD,EAGA,GAAIwC,GAAQA,EAAK,QAEf,QADIQ,EAAO,OAAO,KAAKR,EAAK,OAAO,EAC1BS,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAAK,CACpC,IAAIC,EAAMF,EAAKC,GACXC,EAAI,YAAY,IAAM,wBACxBH,EAAQG,GAAOV,EAAK,QAAQU,GAEhC,CAIFV,EAAO,OAAO,OAAOA,CAAI,EACzBA,EAAK,QAAUO,EAGf,IAAII,EAAYX,EAAK,KAEjBxC,EADAW,GAAQX,CAAI,EAIhB,OAAO,KAAK,SAASmD,EAAUX,EAAMF,CAAI,CAC3C,EAmBAzB,GAAI,YACJA,GAAI,KAAO,SAAqBU,EAAM,CACpC,IAAI6B,EAAK7B,EAAK,QAAQ,GAAG,IAAM,GAC3Bb,GAAK,OAAOa,CAAI,EAChBA,EAEJ,OAAO,KAAK,IAAI,eAAgB6B,CAAE,CACpC,EA2DAvC,GAAI,OAAS,SAASgB,EAAI,CACxB,IAAIP,EAAM,KAAK,IACXiB,EAAOjB,EAAI,KAEX0B,EAAO,OAAO,KAAKnB,CAAG,EACvB,OAAO,SAAUwB,EAAG,CAAE,OAAOA,IAAM,SAAU,CAAC,EAE7CH,EAAMF,EAAK,OAAS,EACpB1B,EAAI,QAAQ0B,CAAI,EAChB,GAEJ,YAAK,KAAK,QAAQ,EAEdE,GACF,KAAK,IAAI,eAAgB9C,GAAc8C,CAAG,EAAE,KAAK,EACjDrB,EAAIqB,GAAK5B,EAAK,KAAMiB,CAAI,GACfV,EAAI,QACbA,EAAI,QAAQP,EAAK,KAAMiB,CAAI,EAE3BA,EAAK9C,GAAY,IAAK,CACpB,MAAOY,GAAe2C,CAAI,EAAE,IAAI,SAAUM,EAAG,CAAE,OAAOA,EAAE,KAAM,CAAC,CACjE,CAAC,CAAC,EAGG,IACT,EAUAzC,GAAI,WAAa,SAAoBgC,EAAU,CAC7C,OAAIA,GACF,KAAK,KAAKpC,GAAQoC,CAAQ,CAAC,EAG7B,KAAK,IAAI,sBAAuBrD,GAAmBqD,CAAQ,CAAC,EAErD,IACT,EAiBAhC,GAAI,OAAS,SAAgB0C,EAAOzB,EAAK,CACvC,IAAI0B,EAAO,KAAK,IAAID,CAAK,EACrBE,EAAQ3B,EAEZ,OAAI0B,IAEFC,EAAQ,MAAM,QAAQD,CAAI,EAAIA,EAAK,OAAO1B,CAAG,EACzC,MAAM,QAAQA,CAAG,EAAI,CAAC0B,CAAI,EAAE,OAAO1B,CAAG,EACpC,CAAC0B,EAAM1B,CAAG,GAGX,KAAK,IAAIyB,EAAOE,CAAK,CAC9B,EAoBA5C,GAAI,IACJA,GAAI,OAAS,SAAgB0C,EAAOzB,EAAK,CACvC,GAAI,UAAU,SAAW,EAAG,CAC1B,IAAI2B,EAAQ,MAAM,QAAQ3B,CAAG,EACzBA,EAAI,IAAI,MAAM,EACd,OAAOA,CAAG,EAGd,GAAIyB,EAAM,YAAY,IAAM,eAAgB,CAC1C,GAAI,MAAM,QAAQE,CAAK,EACrB,MAAM,IAAI,UAAU,wCAAwC,EAE9D,GAAI,CAAC3C,GAAc,KAAK2C,CAAK,EAAG,CAC9B,IAAIC,EAAUhD,GAAK,SAAS,OAAO+C,EAAM,MAAM,GAAG,EAAE,EAAE,EAClDC,IAASD,GAAS,aAAeC,EAAQ,YAAY,EAC3D,CACF,CAEA,KAAK,UAAUH,EAAOE,CAAK,CAC7B,KACE,SAASP,KAAOK,EACd,KAAK,IAAIL,EAAKK,EAAML,EAAI,EAG5B,OAAO,IACT,EAUArC,GAAI,IAAM,SAAS0C,EAAM,CACvB,OAAO,KAAK,UAAUA,CAAK,CAC7B,EAWA1C,GAAI,YAAc,SAAqBiC,EAAMT,EAAS,CACpD,IAAIG,EAAOtC,GAAM,CAAE,QAAS,IAAI,KAAK,CAAC,EAAG,KAAM,GAAI,EAAGmC,CAAO,EAE7D,OAAO,KAAK,OAAOS,EAAM,GAAIN,CAAI,CACnC,EA0BA3B,GAAI,OAAS,SAAUiC,EAAMW,EAAOpB,EAAS,CAC3C,IAAIG,EAAOtC,GAAM,CAAC,EAAGmC,CAAO,EACxBsB,EAAS,KAAK,IAAI,OAClBC,EAASpB,EAAK,OAElB,GAAIoB,GAAU,CAACD,EACb,MAAM,IAAI,MAAM,oDAAoD,EAGtE,IAAI7B,EAAM,OAAO2B,GAAU,SACvB,KAAO,KAAK,UAAUA,CAAK,EAC3B,OAAOA,CAAK,EAMhB,GAJIG,IACF9B,EAAM,KAAO3B,GAAK2B,EAAK6B,CAAM,GAG3BnB,EAAK,QAAU,KAAM,CACvB,IAAIqB,EAASrB,EAAK,OAAS,EAEtB,MAAMqB,CAAM,IACfrB,EAAK,QAAU,IAAI,KAAK,KAAK,IAAI,EAAIqB,CAAM,EAC3CrB,EAAK,OAAS,KAAK,MAAMqB,EAAS,GAAI,EAE1C,CAEA,OAAIrB,EAAK,MAAQ,OACfA,EAAK,KAAO,KAGd,KAAK,OAAO,aAAcjC,GAAO,UAAUuC,EAAM,OAAOhB,CAAG,EAAGU,CAAI,CAAC,EAE5D,IACT,EAmBA3B,GAAI,SAAW,SAAkBiD,EAAK,CACpC,IAAIC,EAAMD,EAGV,OAAIA,IAAQ,SACVC,EAAM,KAAK,IAAI,IAAI,UAAU,GAAK,KAI7B,KAAK,IAAI,WAAYpE,GAAUoE,CAAG,CAAC,CAC5C,EAoBAlD,GAAI,SAAW,SAAkBiD,EAAK,CACpC,IAAIE,EAAUF,EACV3C,EACA8C,EAAS,IAGT,UAAU,SAAW,IACnB,OAAO,UAAU,IAAO,UAC1BA,EAAS,UAAU,GACnBD,EAAU,UAAU,KAEpBtE,GAAU,kEAAkE,EAC5EuE,EAAS,UAAU,KAKvBD,EAAU,KAAK,SAASA,CAAO,EAAE,IAAI,UAAU,EAG/C,KAAK,OAAO,CACV,KAAM,UAAU,CACd7C,EAAOlB,GAAS,QAAQgE,GAAU,oBAAsBD,CAC1D,EAEA,KAAM,UAAU,CACd,IAAIE,EAAItE,GAAWoE,CAAO,EAC1B7C,EAAO,MAAQlB,GAAS,QAAQgE,GAAU,6BAA+BC,EAAI,KAAOA,EAAI,UAC1F,EAEA,QAAS,UAAU,CACjB/C,EAAO,EACT,CACF,CAAC,EAGD,KAAK,WAAa8C,EAClB,KAAK,IAAI,iBAAkB1E,GAAO,WAAW4B,CAAI,CAAC,EAE9C,KAAK,IAAI,SAAW,OACtB,KAAK,IAAI,EAET,KAAK,IAAIA,CAAI,CAEjB,EAWAN,GAAI,KAAO,SAAS0C,EAAM,CAExB,MAAI,CAACA,GAAU,MAAM,QAAQA,CAAK,GAAK,CAACA,EAAM,QAC5C7D,GAAU,kCAAkC,EACrC,OAGTkB,GAAK,KAAM2C,CAAK,EAET,KACT,EAeA1C,GAAI,OAAS,SAAgBsD,EAAM9B,EAASF,EAAU,CACpD,IAAIX,EAAM,KAAK,IAAI,IACfc,EAAOH,EACPK,EAAOH,GAAW,CAAC,EACnBf,EAAM,KAAK,IACX8C,EAAO,KAGP,OAAO/B,GAAY,aACrBC,EAAOD,EACPG,EAAO,CAAC,GAIVA,EAAK,QAAU4B,EAAK,OAGpB9B,EAAOA,GAAQ,SAAUM,EAAKyB,EAAK,CACjC,GAAIzB,EAAK,OAAOtB,EAAI,KAAKsB,CAAG,EAC5BwB,EAAK,KAAKC,CAAG,CACf,EAGA7C,EAAI,OAAO2C,EAAM3B,EAAMF,CAAI,CAC7B,EAGA,SAASK,GAAS9B,EAAK6B,EAAML,EAASF,EAAU,CAC9C,IAAIG,EAAO,GACPgC,EAGJ,SAASC,GAAY,CACnB,GAAI,CAAAjC,EACJ,CAAAA,EAAO,GAEP,IAAIM,EAAM,IAAI,MAAM,iBAAiB,EACrCA,EAAI,KAAO,eACXT,EAASS,CAAG,EACd,CAGA,SAAS4B,GAAc,CACrB,GAAI,CAAAlC,EACJ,CAAAA,EAAO,GAEP,IAAIM,EAAM,IAAI,MAAM,cAAc,EAClCA,EAAI,KAAO,SACXT,EAASS,CAAG,EACd,CAGA,SAAS6B,EAAQ7B,EAAK,CAChBN,IACJA,EAAO,GACPH,EAASS,CAAG,EACd,CAGA,SAAS8B,GAAQ,CACXpC,IACJA,EAAO,GACPH,EAAS,EACX,CAGA,SAASwC,GAAS,CAChBL,EAAY,EACd,CAGA,SAASM,EAAShC,EAAK,CACrB,GAAIA,GAAOA,EAAI,OAAS,aAAc,OAAO2B,EAAU,EACvD,GAAI3B,EAAK,OAAO6B,EAAQ7B,CAAG,EACvBN,GAEJ,aAAa,UAAY,CACvB,GAAIgC,IAAc,IAAS,CAAChC,EAAM,CAChCiC,EAAU,EACV,MACF,CAEIjC,IACJA,EAAO,GACPH,EAAS,EACX,CAAC,CACH,CAGA,SAAS0C,GAAW,CAClBP,EAAY,EACd,CAEA5B,EAAK,GAAG,YAAa8B,CAAW,EAChC9B,EAAK,GAAG,MAAOgC,CAAK,EACpBhC,EAAK,GAAG,QAAS+B,CAAO,EACxB/B,EAAK,GAAG,OAAQiC,CAAM,EACtBjC,EAAK,GAAG,SAAUmC,CAAQ,EAC1B9E,GAAWc,EAAK+D,CAAQ,EAEpBvC,EAAQ,SAEVK,EAAK,GAAG,UAAW,SAAiB7B,EAAK,CAIvC,QAHIgB,EAAMQ,EAAQ,QACdW,EAAO,OAAO,KAAKnB,CAAG,EAEjBoB,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAAK,CACpC,IAAI6B,EAAI9B,EAAKC,GACbpC,EAAI,UAAUiE,EAAGjD,EAAIiD,EAAE,CACzB,CACF,CAAC,EAIHpC,EAAK,KAAK7B,CAAG,CACf,CAcA,SAASqB,GAAWuB,EAAOzB,EAAUC,EAAQF,EAAQ,CAGnD,IAAIgD,EAAO/C,GAAYC,EACnB,KAAK,UAAUwB,EAAOzB,EAAUC,CAAM,EACtC,KAAK,UAAUwB,CAAK,EAExB,OAAI1B,GAAU,OAAOgD,GAAS,WAC5BA,EAAOA,EAAK,QAAQ,SAAU,SAAUC,EAAG,CACzC,OAAQA,EAAE,WAAW,CAAC,EAAG,CACvB,IAAK,IACH,MAAO,UACT,IAAK,IACH,MAAO,UACT,IAAK,IACH,MAAO,UAET,QACE,OAAOA,CACX,CACF,CAAC,GAGID,CACT,IChpCA,IAAAE,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAeA,IAAIC,GAAY,KACZC,GAAa,KACbC,GAAW,KACXC,GAAU,QAAQ,QAAQ,QAC1BC,GAAO,KACPC,GAAM,QAAQ,OAOlBN,GAAO,QAAUO,GACjBP,GAAO,QAAQ,KAAOK,GAAK,KAS3B,SAASE,GAAaC,EAAMC,EAAS,CACnC,GAAI,CAACD,EACH,MAAM,IAAI,UAAU,oBAAoB,EAG1C,GAAI,OAAOA,GAAS,SAClB,MAAM,IAAI,UAAU,4BAA4B,EAIlD,IAAIE,EAAO,OAAO,OAAOD,GAAW,IAAI,EAGpCE,EAAcD,EAAK,cAAgB,GAGnCE,EAAWF,EAAK,WAAa,GAG7BG,EAAaH,EAAK,WAEtB,GAAIG,GAAc,OAAOA,GAAe,WACtC,MAAM,IAAI,UAAU,oCAAoC,EAI1DH,EAAK,OAASA,EAAK,QAAUA,EAAK,QAAU,EAC5CA,EAAK,KAAON,GAAQI,CAAI,EAGxB,IAAIM,EAAcF,EACdG,GAAgC,EAChCC,GAAgC,EAEpC,OAAO,SAAsBC,EAAKC,EAAKC,EAAM,CAC3C,GAAIF,EAAI,SAAW,OAASA,EAAI,SAAW,OAAQ,CACjD,GAAIN,EACF,OAAOQ,EAAK,EAIdD,EAAI,WAAa,IACjBA,EAAI,UAAU,QAAS,WAAW,EAClCA,EAAI,UAAU,iBAAkB,GAAG,EACnCA,EAAI,IAAI,EACR,MACF,CAEA,IAAIE,EAAe,CAACT,EAChBU,EAAclB,GAAS,SAASc,CAAG,EACnCK,EAAOnB,GAASc,CAAG,EAAE,SAGrBK,IAAS,KAAOD,EAAY,SAAS,OAAO,EAAE,IAAM,MACtDC,EAAO,IAIT,IAAIC,EAASlB,GAAKY,EAAKK,EAAMZ,CAAI,EAGjCa,EAAO,GAAG,YAAaT,CAAW,EAG9BD,GACFU,EAAO,GAAG,UAAWV,CAAU,EAI7BF,GACFY,EAAO,GAAG,OAAQ,UAAmB,CAEnCH,EAAe,EACjB,CAAC,EAIHG,EAAO,GAAG,QAAS,SAAgBC,EAAK,CACtC,GAAIJ,GAAgB,EAAEI,EAAI,WAAa,KAAM,CAC3CL,EAAKK,CAAG,EACR,MACF,CAEAL,EAAK,CACP,CAAC,EAGDI,EAAO,KAAKL,CAAG,CACjB,CACF,CAMA,SAASO,GAAwBC,EAAK,CACpC,QAASC,EAAI,EAAGA,EAAID,EAAI,QAClBA,EAAI,WAAWC,CAAC,IAAM,GADIA,IAC9B,CAKF,OAAOA,EAAI,EACP,IAAMD,EAAI,OAAOC,CAAC,EAClBD,CACN,CAUA,SAASE,GAAoBC,EAAOC,EAAM,CACxC,MAAO;AAAA;AAAA;AAAA;AAAA,SAIOD,EAAQ;AAAA;AAAA;AAAA,OAGVC,EAAO;AAAA;AAAA;AAAA,CAGrB,CAOA,SAASd,IAAmC,CAC1C,OAAO,UAAqB,CAC1B,KAAK,MAAM,GAAG,CAChB,CACF,CAOA,SAASD,IAAmC,CAC1C,OAAO,SAAmBG,EAAK,CAC7B,GAAI,KAAK,iBAAiB,EAAG,CAC3B,KAAK,MAAM,GAAG,EACd,MACF,CAGA,IAAIG,EAAclB,GAAS,SAAS,KAAK,GAAG,EAG5CkB,EAAY,KAAO,KACnBA,EAAY,SAAWI,GAAuBJ,EAAY,SAAW,GAAG,EAGxE,IAAIU,EAAM9B,GAAUK,GAAI,OAAOe,CAAW,CAAC,EACvCW,EAAMJ,GAAmB,cAAe,2BAA6B1B,GAAW6B,CAAG,EAAI,KACzF7B,GAAW6B,CAAG,EAAI,MAAM,EAG1Bb,EAAI,WAAa,IACjBA,EAAI,UAAU,eAAgB,0BAA0B,EACxDA,EAAI,UAAU,iBAAkB,OAAO,WAAWc,CAAG,CAAC,EACtDd,EAAI,UAAU,0BAA2B,oBAAoB,EAC7DA,EAAI,UAAU,yBAA0B,SAAS,EACjDA,EAAI,UAAU,WAAYa,CAAG,EAC7Bb,EAAI,IAAIc,CAAG,CACb,CACF,ICjNA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAcA,IAAIC,GAAa,KACbC,GAAe,QAAQ,UAAU,aACjCC,GAAQ,KACRC,GAAQ,KACRC,GAAQ,KACRC,GAAS,KACTC,GAAM,KACNC,GAAM,KAMVT,GAAUC,GAAO,QAAUS,GAS3B,SAASA,IAAoB,CAC3B,IAAIC,EAAM,SAASH,EAAKC,EAAKG,EAAM,CACjCD,EAAI,OAAOH,EAAKC,EAAKG,CAAI,CAC3B,EAEA,OAAAR,GAAMO,EAAKR,GAAa,UAAW,EAAK,EACxCC,GAAMO,EAAKN,GAAO,EAAK,EAGvBM,EAAI,QAAU,OAAO,OAAOH,GAAK,CAC/B,IAAK,CAAE,aAAc,GAAM,WAAY,GAAM,SAAU,GAAM,MAAOG,CAAI,CAC1E,CAAC,EAGDA,EAAI,SAAW,OAAO,OAAOF,GAAK,CAChC,IAAK,CAAE,aAAc,GAAM,WAAY,GAAM,SAAU,GAAM,MAAOE,CAAI,CAC1E,CAAC,EAEDA,EAAI,KAAK,EACFA,CACT,CAMAX,GAAQ,YAAcK,GACtBL,GAAQ,QAAUQ,GAClBR,GAAQ,SAAWS,GAMnBT,GAAQ,MAAQM,GAChBN,GAAQ,OAASO,GAMjBP,GAAQ,KAAOE,GAAW,KAC1BF,GAAQ,MAAQ,KAChBA,GAAQ,IAAME,GAAW,IACzBF,GAAQ,OAAS,KACjBA,GAAQ,KAAOE,GAAW,KAC1BF,GAAQ,WAAaE,GAAW,WAMhC,IAAIW,GAAqB,CACvB,aACA,WACA,gBACA,UACA,SACA,eACA,UACA,eACA,eACA,UACA,iBACA,QACA,OACA,YACA,QACA,YACA,aACF,EAEAA,GAAmB,QAAQ,SAAUC,EAAM,CACzC,OAAO,eAAed,GAASc,EAAM,CACnC,IAAK,UAAY,CACf,MAAM,IAAI,MAAM,yBAA2BA,EAAO,oIAAoI,CACxL,EACA,aAAc,EAChB,CAAC,CACH,CAAC,ICnHD,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAUAA,GAAO,QAAU,OCVjB,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAQA,IAAIC,GAAwB,OAAO,sBAC/BC,GAAiB,OAAO,UAAU,eAClCC,GAAmB,OAAO,UAAU,qBAExC,SAASC,GAASC,EAAK,CACtB,GAAIA,GAAQ,KACX,MAAM,IAAI,UAAU,uDAAuD,EAG5E,OAAO,OAAOA,CAAG,CAClB,CAEA,SAASC,IAAkB,CAC1B,GAAI,CACH,GAAI,CAAC,OAAO,OACX,MAAO,GAMR,IAAIC,EAAQ,IAAI,OAAO,KAAK,EAE5B,GADAA,EAAM,GAAK,KACP,OAAO,oBAAoBA,CAAK,EAAE,KAAO,IAC5C,MAAO,GAKR,QADIC,EAAQ,CAAC,EACJC,EAAI,EAAGA,EAAI,GAAIA,IACvBD,EAAM,IAAM,OAAO,aAAaC,CAAC,GAAKA,EAEvC,IAAIC,EAAS,OAAO,oBAAoBF,CAAK,EAAE,IAAI,SAAUG,EAAG,CAC/D,OAAOH,EAAMG,EACd,CAAC,EACD,GAAID,EAAO,KAAK,EAAE,IAAM,aACvB,MAAO,GAIR,IAAIE,EAAQ,CAAC,EAIb,MAHA,uBAAuB,MAAM,EAAE,EAAE,QAAQ,SAAUC,EAAQ,CAC1DD,EAAMC,GAAUA,CACjB,CAAC,EACG,OAAO,KAAK,OAAO,OAAO,CAAC,EAAGD,CAAK,CAAC,EAAE,KAAK,EAAE,IAC/C,sBAKH,MAAE,CAED,MAAO,EACR,CACD,CAEAZ,GAAO,QAAUM,GAAgB,EAAI,OAAO,OAAS,SAAUQ,EAAQC,EAAQ,CAK9E,QAJIC,EACAC,EAAKb,GAASU,CAAM,EACpBI,EAEKC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CAC1CH,EAAO,OAAO,UAAUG,EAAE,EAE1B,QAASC,KAAOJ,EACXd,GAAe,KAAKc,EAAMI,CAAG,IAChCH,EAAGG,GAAOJ,EAAKI,IAIjB,GAAInB,GAAuB,CAC1BiB,EAAUjB,GAAsBe,CAAI,EACpC,QAASP,EAAI,EAAGA,EAAIS,EAAQ,OAAQT,IAC/BN,GAAiB,KAAKa,EAAME,EAAQT,EAAE,IACzCQ,EAAGC,EAAQT,IAAMO,EAAKE,EAAQT,IAGjC,CACD,CAEA,OAAOQ,CACR,ICzFA,IAAAI,GAAAC,EAAA,CAAAC,GAAAC,KAAA,EAAC,UAAY,CAEX,aAEA,IAAIC,EAAS,KACTC,EAAO,KAEPC,EAAW,CACb,OAAQ,IACR,QAAS,iCACT,kBAAmB,GACnB,qBAAsB,GACxB,EAEA,SAASC,EAASC,EAAG,CACnB,OAAO,OAAOA,GAAM,UAAYA,aAAa,MAC/C,CAEA,SAASC,EAAgBC,EAAQC,EAAe,CAC9C,GAAI,MAAM,QAAQA,CAAa,EAAG,CAChC,QAASC,EAAI,EAAGA,EAAID,EAAc,OAAQ,EAAEC,EAC1C,GAAIH,EAAgBC,EAAQC,EAAcC,EAAE,EAC1C,MAAO,GAGX,MAAO,EACT,KAAO,QAAIL,EAASI,CAAa,EACxBD,IAAWC,EACTA,aAAyB,OAC3BA,EAAc,KAAKD,CAAM,EAEzB,CAAC,CAACC,CAEb,CAEA,SAASE,EAAgBC,EAASC,EAAK,CACrC,IAAIC,EAAgBD,EAAI,QAAQ,OAC9BE,EAAU,CAAC,EACXC,EAEF,MAAI,CAACJ,EAAQ,QAAUA,EAAQ,SAAW,IAExCG,EAAQ,KAAK,CAAC,CACZ,IAAK,8BACL,MAAO,GACT,CAAC,CAAC,EACOV,EAASO,EAAQ,MAAM,GAEhCG,EAAQ,KAAK,CAAC,CACZ,IAAK,8BACL,MAAOH,EAAQ,MACjB,CAAC,CAAC,EACFG,EAAQ,KAAK,CAAC,CACZ,IAAK,OACL,MAAO,QACT,CAAC,CAAC,IAEFC,EAAYT,EAAgBO,EAAeF,EAAQ,MAAM,EAEzDG,EAAQ,KAAK,CAAC,CACZ,IAAK,8BACL,MAAOC,EAAYF,EAAgB,EACrC,CAAC,CAAC,EACFC,EAAQ,KAAK,CAAC,CACZ,IAAK,OACL,MAAO,QACT,CAAC,CAAC,GAGGA,CACT,CAEA,SAASE,EAAiBL,EAAS,CACjC,IAAIM,EAAUN,EAAQ,QACtB,OAAIM,EAAQ,OACVA,EAAUN,EAAQ,QAAQ,KAAK,GAAG,GAE7B,CACL,IAAK,+BACL,MAAOM,CACT,CACF,CAEA,SAASC,EAAqBP,EAAS,CACrC,OAAIA,EAAQ,cAAgB,GACnB,CACL,IAAK,mCACL,MAAO,MACT,EAEK,IACT,CAEA,SAASQ,EAAwBR,EAASC,EAAK,CAC7C,IAAIQ,EAAiBT,EAAQ,gBAAkBA,EAAQ,QACnDG,EAAU,CAAC,EAEf,OAAKM,EAMMA,EAAe,OACxBA,EAAiBA,EAAe,KAAK,GAAG,IANxCA,EAAiBR,EAAI,QAAQ,kCAC7BE,EAAQ,KAAK,CAAC,CACZ,IAAK,OACL,MAAO,gCACT,CAAC,CAAC,GAIAM,GAAkBA,EAAe,QACnCN,EAAQ,KAAK,CAAC,CACZ,IAAK,+BACL,MAAOM,CACT,CAAC,CAAC,EAGGN,CACT,CAEA,SAASO,EAAwBV,EAAS,CACxC,IAAIG,EAAUH,EAAQ,eACtB,GAAKG,EAEMA,EAAQ,OACjBA,EAAUA,EAAQ,KAAK,GAAG,OAF1B,QAAO,KAIT,OAAIA,GAAWA,EAAQ,OACd,CACL,IAAK,gCACL,MAAOA,CACT,EAEK,IACT,CAEA,SAASQ,EAAgBX,EAAS,CAChC,IAAIY,GAAU,OAAOZ,EAAQ,QAAW,UAAYA,EAAQ,SAAWA,EAAQ,OAAO,SAAS,EAC/F,OAAIY,GAAUA,EAAO,OACZ,CACL,IAAK,yBACL,MAAOA,CACT,EAEK,IACT,CAEA,SAASC,EAAaV,EAASW,EAAK,CAClC,QAAShB,EAAI,EAAGiB,EAAIZ,EAAQ,OAAQL,EAAIiB,EAAGjB,IAAK,CAC9C,IAAIkB,EAASb,EAAQL,GACjBkB,IACE,MAAM,QAAQA,CAAM,EACtBH,EAAaG,EAAQF,CAAG,EACfE,EAAO,MAAQ,QAAUA,EAAO,MACzCzB,EAAKuB,EAAKE,EAAO,KAAK,EACbA,EAAO,OAChBF,EAAI,UAAUE,EAAO,IAAKA,EAAO,KAAK,EAG5C,CACF,CAEA,SAASC,EAAKjB,EAASC,EAAKa,EAAKI,EAAM,CACrC,IAAIf,EAAU,CAAC,EACbgB,EAASlB,EAAI,QAAUA,EAAI,OAAO,aAAeA,EAAI,OAAO,YAAY,EAEtEkB,IAAW,WAEbhB,EAAQ,KAAKJ,EAAgBC,EAASC,CAAG,CAAC,EAC1CE,EAAQ,KAAKI,EAAqBP,EAASC,CAAG,CAAC,EAC/CE,EAAQ,KAAKE,EAAiBL,EAASC,CAAG,CAAC,EAC3CE,EAAQ,KAAKK,EAAwBR,EAASC,CAAG,CAAC,EAClDE,EAAQ,KAAKQ,EAAgBX,EAASC,CAAG,CAAC,EAC1CE,EAAQ,KAAKO,EAAwBV,EAASC,CAAG,CAAC,EAClDY,EAAaV,EAASW,CAAG,EAErBd,EAAQ,kBACVkB,EAAK,GAILJ,EAAI,WAAad,EAAQ,qBACzBc,EAAI,UAAU,iBAAkB,GAAG,EACnCA,EAAI,IAAI,KAIVX,EAAQ,KAAKJ,EAAgBC,EAASC,CAAG,CAAC,EAC1CE,EAAQ,KAAKI,EAAqBP,EAASC,CAAG,CAAC,EAC/CE,EAAQ,KAAKO,EAAwBV,EAASC,CAAG,CAAC,EAClDY,EAAaV,EAASW,CAAG,EACzBI,EAAK,EAET,CAEA,SAASE,EAAkBC,EAAG,CAE5B,IAAIC,EAAkB,KACtB,OAAI,OAAOD,GAAM,WACfC,EAAkBD,EAElBC,EAAkB,SAAUrB,EAAKsB,EAAI,CACnCA,EAAG,KAAMF,CAAC,CACZ,EAGK,SAAwBpB,EAAKa,EAAKI,EAAM,CAC7CI,EAAgBrB,EAAK,SAAUuB,EAAKxB,EAAS,CAC3C,GAAIwB,EACFN,EAAKM,CAAG,MACH,CACL,IAAIC,EAAcnC,EAAO,CAAC,EAAGE,EAAUQ,CAAO,EAC1C0B,EAAiB,KACjBD,EAAY,QAAU,OAAOA,EAAY,QAAW,WACtDC,EAAiBD,EAAY,OACpBA,EAAY,SACrBC,EAAiB,SAAU9B,EAAQ2B,EAAI,CACrCA,EAAG,KAAME,EAAY,MAAM,CAC7B,GAGEC,EACFA,EAAezB,EAAI,QAAQ,OAAQ,SAAU0B,EAAM/B,EAAQ,CACrD+B,GAAQ,CAAC/B,EACXsB,EAAKS,CAAI,GAETF,EAAY,OAAS7B,EACrBqB,EAAKQ,EAAaxB,EAAKa,EAAKI,CAAI,EAEpC,CAAC,EAEDA,EAAK,CAET,CACF,CAAC,CACH,CACF,CAGA7B,GAAO,QAAU+B,CAEnB,GAAE,IC7OF,IAAAQ,GAAAC,EAAA,CAAAC,GAAAC,KAAA,EAAC,SAAUA,EAAQD,EAAS,CAC1B,aAGA,SAASE,EAAQC,EAAKC,EAAK,CACzB,GAAI,CAACD,EAAK,MAAM,IAAI,MAAMC,GAAO,kBAAkB,CACrD,CAIA,SAASC,EAAUC,EAAMC,EAAW,CAClCD,EAAK,OAASC,EACd,IAAIC,EAAW,UAAY,CAAC,EAC5BA,EAAS,UAAYD,EAAU,UAC/BD,EAAK,UAAY,IAAIE,EACrBF,EAAK,UAAU,YAAcA,CAC/B,CAIA,SAASG,EAAIC,EAAQC,EAAMC,EAAQ,CACjC,GAAIH,EAAG,KAAKC,CAAM,EAChB,OAAOA,EAGT,KAAK,SAAW,EAChB,KAAK,MAAQ,KACb,KAAK,OAAS,EAGd,KAAK,IAAM,KAEPA,IAAW,QACTC,IAAS,MAAQA,IAAS,QAC5BC,EAASD,EACTA,EAAO,IAGT,KAAK,MAAMD,GAAU,EAAGC,GAAQ,GAAIC,GAAU,IAAI,EAEtD,CACI,OAAOX,GAAW,SACpBA,EAAO,QAAUQ,EAEjBT,EAAQ,GAAKS,EAGfA,EAAG,GAAKA,EACRA,EAAG,SAAW,GAEd,IAAII,EACJ,GAAI,CACE,OAAO,OAAW,KAAe,OAAO,OAAO,OAAW,IAC5DA,EAAS,OAAO,OAEhBA,EAAS,QAAQ,UAAU,MAE/B,MAAE,CACF,CAEAJ,EAAG,KAAO,SAAeK,EAAK,CAC5B,OAAIA,aAAeL,EACV,GAGFK,IAAQ,MAAQ,OAAOA,GAAQ,UACpCA,EAAI,YAAY,WAAaL,EAAG,UAAY,MAAM,QAAQK,EAAI,KAAK,CACvE,EAEAL,EAAG,IAAM,SAAcM,EAAMC,EAAO,CAClC,OAAID,EAAK,IAAIC,CAAK,EAAI,EAAUD,EACzBC,CACT,EAEAP,EAAG,IAAM,SAAcM,EAAMC,EAAO,CAClC,OAAID,EAAK,IAAIC,CAAK,EAAI,EAAUD,EACzBC,CACT,EAEAP,EAAG,UAAU,MAAQ,SAAeC,EAAQC,EAAMC,EAAQ,CACxD,GAAI,OAAOF,GAAW,SACpB,OAAO,KAAK,YAAYA,EAAQC,EAAMC,CAAM,EAG9C,GAAI,OAAOF,GAAW,SACpB,OAAO,KAAK,WAAWA,EAAQC,EAAMC,CAAM,EAGzCD,IAAS,QACXA,EAAO,IAETT,EAAOS,KAAUA,EAAO,IAAMA,GAAQ,GAAKA,GAAQ,EAAE,EAErDD,EAASA,EAAO,SAAS,EAAE,QAAQ,OAAQ,EAAE,EAC7C,IAAIO,EAAQ,EACRP,EAAO,KAAO,MAChBO,IACA,KAAK,SAAW,GAGdA,EAAQP,EAAO,SACbC,IAAS,GACX,KAAK,UAAUD,EAAQO,EAAOL,CAAM,GAEpC,KAAK,WAAWF,EAAQC,EAAMM,CAAK,EAC/BL,IAAW,MACb,KAAK,WAAW,KAAK,QAAQ,EAAGD,EAAMC,CAAM,GAIpD,EAEAH,EAAG,UAAU,YAAc,SAAsBC,EAAQC,EAAMC,EAAQ,CACjEF,EAAS,IACX,KAAK,SAAW,EAChBA,EAAS,CAACA,GAERA,EAAS,UACX,KAAK,MAAQ,CAACA,EAAS,QAAS,EAChC,KAAK,OAAS,GACLA,EAAS,kBAClB,KAAK,MAAQ,CACXA,EAAS,SACRA,EAAS,SAAa,QACzB,EACA,KAAK,OAAS,IAEdR,EAAOQ,EAAS,gBAAgB,EAChC,KAAK,MAAQ,CACXA,EAAS,SACRA,EAAS,SAAa,SACvB,CACF,EACA,KAAK,OAAS,GAGZE,IAAW,MAGf,KAAK,WAAW,KAAK,QAAQ,EAAGD,EAAMC,CAAM,CAC9C,EAEAH,EAAG,UAAU,WAAa,SAAqBC,EAAQC,EAAMC,EAAQ,CAGnE,GADAV,EAAO,OAAOQ,EAAO,QAAW,QAAQ,EACpCA,EAAO,QAAU,EACnB,YAAK,MAAQ,CAAC,CAAC,EACf,KAAK,OAAS,EACP,KAGT,KAAK,OAAS,KAAK,KAAKA,EAAO,OAAS,CAAC,EACzC,KAAK,MAAQ,IAAI,MAAM,KAAK,MAAM,EAClC,QAASQ,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC/B,KAAK,MAAMA,GAAK,EAGlB,IAAIC,EAAGC,EACHC,EAAM,EACV,GAAIT,IAAW,KACb,IAAKM,EAAIR,EAAO,OAAS,EAAGS,EAAI,EAAGD,GAAK,EAAGA,GAAK,EAC9CE,EAAIV,EAAOQ,GAAMR,EAAOQ,EAAI,IAAM,EAAMR,EAAOQ,EAAI,IAAM,GACzD,KAAK,MAAMC,IAAOC,GAAKC,EAAO,SAC9B,KAAK,MAAMF,EAAI,GAAMC,IAAO,GAAKC,EAAQ,SACzCA,GAAO,GACHA,GAAO,KACTA,GAAO,GACPF,aAGKP,IAAW,KACpB,IAAKM,EAAI,EAAGC,EAAI,EAAGD,EAAIR,EAAO,OAAQQ,GAAK,EACzCE,EAAIV,EAAOQ,GAAMR,EAAOQ,EAAI,IAAM,EAAMR,EAAOQ,EAAI,IAAM,GACzD,KAAK,MAAMC,IAAOC,GAAKC,EAAO,SAC9B,KAAK,MAAMF,EAAI,GAAMC,IAAO,GAAKC,EAAQ,SACzCA,GAAO,GACHA,GAAO,KACTA,GAAO,GACPF,KAIN,OAAO,KAAK,OAAO,CACrB,EAEA,SAASG,EAAeC,EAAQC,EAAO,CACrC,IAAIC,EAAIF,EAAO,WAAWC,CAAK,EAE/B,GAAIC,GAAK,IAAMA,GAAK,GAClB,OAAOA,EAAI,GAEN,GAAIA,GAAK,IAAMA,GAAK,GACzB,OAAOA,EAAI,GAEN,GAAIA,GAAK,IAAMA,GAAK,IACzB,OAAOA,EAAI,GAEXvB,EAAO,GAAO,wBAA0BqB,CAAM,CAElD,CAEA,SAASG,EAAcH,EAAQI,EAAYH,EAAO,CAChD,IAAII,EAAIN,EAAcC,EAAQC,CAAK,EACnC,OAAIA,EAAQ,GAAKG,IACfC,GAAKN,EAAcC,EAAQC,EAAQ,CAAC,GAAK,GAEpCI,CACT,CAEAnB,EAAG,UAAU,UAAY,SAAoBC,EAAQO,EAAOL,EAAQ,CAElE,KAAK,OAAS,KAAK,MAAMF,EAAO,OAASO,GAAS,CAAC,EACnD,KAAK,MAAQ,IAAI,MAAM,KAAK,MAAM,EAClC,QAASC,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC/B,KAAK,MAAMA,GAAK,EAIlB,IAAIG,EAAM,EACNF,EAAI,EAEJC,EACJ,GAAIR,IAAW,KACb,IAAKM,EAAIR,EAAO,OAAS,EAAGQ,GAAKD,EAAOC,GAAK,EAC3CE,EAAIM,EAAahB,EAAQO,EAAOC,CAAC,GAAKG,EACtC,KAAK,MAAMF,IAAMC,EAAI,SACjBC,GAAO,IACTA,GAAO,GACPF,GAAK,EACL,KAAK,MAAMA,IAAMC,IAAM,IAEvBC,GAAO,MAGN,CACL,IAAIQ,EAAcnB,EAAO,OAASO,EAClC,IAAKC,EAAIW,EAAc,IAAM,EAAIZ,EAAQ,EAAIA,EAAOC,EAAIR,EAAO,OAAQQ,GAAK,EAC1EE,EAAIM,EAAahB,EAAQO,EAAOC,CAAC,GAAKG,EACtC,KAAK,MAAMF,IAAMC,EAAI,SACjBC,GAAO,IACTA,GAAO,GACPF,GAAK,EACL,KAAK,MAAMA,IAAMC,IAAM,IAEvBC,GAAO,CAGb,CAEA,KAAK,OAAO,CACd,EAEA,SAASS,EAAWC,EAAKd,EAAOe,EAAKC,EAAK,CAIxC,QAHIL,EAAI,EACJM,EAAI,EACJC,EAAM,KAAK,IAAIJ,EAAI,OAAQC,CAAG,EACzBd,EAAID,EAAOC,EAAIiB,EAAKjB,IAAK,CAChC,IAAIO,EAAIM,EAAI,WAAWb,CAAC,EAAI,GAE5BU,GAAKK,EAGDR,GAAK,GACPS,EAAIT,EAAI,GAAK,GAGJA,GAAK,GACdS,EAAIT,EAAI,GAAK,GAIbS,EAAIT,EAENvB,EAAOuB,GAAK,GAAKS,EAAID,EAAK,mBAAmB,EAC7CL,GAAKM,CACP,CACA,OAAON,CACT,CAEAnB,EAAG,UAAU,WAAa,SAAqBC,EAAQC,EAAMM,EAAO,CAElE,KAAK,MAAQ,CAAC,CAAC,EACf,KAAK,OAAS,EAGd,QAASmB,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAW1B,EAClEyB,IAEFA,IACAC,EAAWA,EAAU1B,EAAQ,EAO7B,QALI2B,EAAQ5B,EAAO,OAASO,EACxBsB,EAAMD,EAAQF,EACdJ,EAAM,KAAK,IAAIM,EAAOA,EAAQC,CAAG,EAAItB,EAErCuB,EAAO,EACFtB,EAAID,EAAOC,EAAIc,EAAKd,GAAKkB,EAChCI,EAAOV,EAAUpB,EAAQQ,EAAGA,EAAIkB,EAASzB,CAAI,EAE7C,KAAK,MAAM0B,CAAO,EACd,KAAK,MAAM,GAAKG,EAAO,SACzB,KAAK,MAAM,IAAMA,EAEjB,KAAK,OAAOA,CAAI,EAIpB,GAAID,IAAQ,EAAG,CACb,IAAIE,EAAM,EAGV,IAFAD,EAAOV,EAAUpB,EAAQQ,EAAGR,EAAO,OAAQC,CAAI,EAE1CO,EAAI,EAAGA,EAAIqB,EAAKrB,IACnBuB,GAAO9B,EAGT,KAAK,MAAM8B,CAAG,EACV,KAAK,MAAM,GAAKD,EAAO,SACzB,KAAK,MAAM,IAAMA,EAEjB,KAAK,OAAOA,CAAI,CAEpB,CAEA,KAAK,OAAO,CACd,EAEA/B,EAAG,UAAU,KAAO,SAAeiC,EAAM,CACvCA,EAAK,MAAQ,IAAI,MAAM,KAAK,MAAM,EAClC,QAASxB,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC/BwB,EAAK,MAAMxB,GAAK,KAAK,MAAMA,GAE7BwB,EAAK,OAAS,KAAK,OACnBA,EAAK,SAAW,KAAK,SACrBA,EAAK,IAAM,KAAK,GAClB,EAEA,SAASC,EAAMD,EAAME,EAAK,CACxBF,EAAK,MAAQE,EAAI,MACjBF,EAAK,OAASE,EAAI,OAClBF,EAAK,SAAWE,EAAI,SACpBF,EAAK,IAAME,EAAI,GACjB,CAqCA,GAnCAnC,EAAG,UAAU,MAAQ,SAAgBiC,EAAM,CACzCC,EAAKD,EAAM,IAAI,CACjB,EAEAjC,EAAG,UAAU,MAAQ,UAAkB,CACrC,IAAImB,EAAI,IAAInB,EAAG,IAAI,EACnB,YAAK,KAAKmB,CAAC,EACJA,CACT,EAEAnB,EAAG,UAAU,QAAU,SAAkBoC,EAAM,CAC7C,KAAO,KAAK,OAASA,GACnB,KAAK,MAAM,KAAK,UAAY,EAE9B,OAAO,IACT,EAGApC,EAAG,UAAU,OAAS,UAAkB,CACtC,KAAO,KAAK,OAAS,GAAK,KAAK,MAAM,KAAK,OAAS,KAAO,GACxD,KAAK,SAEP,OAAO,KAAK,UAAU,CACxB,EAEAA,EAAG,UAAU,UAAY,UAAsB,CAE7C,OAAI,KAAK,SAAW,GAAK,KAAK,MAAM,KAAO,IACzC,KAAK,SAAW,GAEX,IACT,EAII,OAAO,OAAW,KAAe,OAAO,OAAO,KAAQ,WACzD,GAAI,CACFA,EAAG,UAAU,OAAO,IAAI,4BAA4B,GAAKqC,CAC3D,MAAE,CACArC,EAAG,UAAU,QAAUqC,CACzB,MAEArC,EAAG,UAAU,QAAUqC,EAGzB,SAASA,GAAW,CAClB,OAAQ,KAAK,IAAM,UAAY,SAAW,KAAK,SAAS,EAAE,EAAI,GAChE,CAgCA,IAAIC,EAAQ,CACV,GACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,yBACA,0BACA,2BACA,2BACF,EAEIC,EAAa,CACf,EAAG,EACH,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EACvB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CACpB,EAEIC,EAAa,CACf,EAAG,EACH,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAC5D,SAAU,IAAU,SAAU,SAAU,SAAU,QAAS,SAC3D,SAAU,SAAU,SAAU,SAAU,KAAU,QAAS,QAC3D,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SACzD,MAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAC9D,EAEAxC,EAAG,UAAU,SAAW,SAAmBE,EAAMuC,EAAS,CACxDvC,EAAOA,GAAQ,GACfuC,EAAUA,EAAU,GAAK,EAEzB,IAAIC,EACJ,GAAIxC,IAAS,IAAMA,IAAS,MAAO,CACjCwC,EAAM,GAGN,QAFI9B,EAAM,EACN+B,EAAQ,EACHlC,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CACpC,IAAIE,EAAI,KAAK,MAAMF,GACfsB,IAAUpB,GAAKC,EAAO+B,GAAS,UAAU,SAAS,EAAE,EACxDA,EAAShC,IAAO,GAAKC,EAAQ,SAC7BA,GAAO,EACHA,GAAO,KACTA,GAAO,GACPH,KAEEkC,IAAU,GAAKlC,IAAM,KAAK,OAAS,EACrCiC,EAAMJ,EAAM,EAAIP,EAAK,QAAUA,EAAOW,EAEtCA,EAAMX,EAAOW,CAEjB,CAIA,IAHIC,IAAU,IACZD,EAAMC,EAAM,SAAS,EAAE,EAAID,GAEtBA,EAAI,OAASD,IAAY,GAC9BC,EAAM,IAAMA,EAEd,OAAI,KAAK,WAAa,IACpBA,EAAM,IAAMA,GAEPA,CACT,CAEA,GAAIxC,KAAUA,EAAO,IAAMA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAI0C,EAAYL,EAAWrC,GAEvB2C,EAAYL,EAAWtC,GAC3BwC,EAAM,GACN,IAAI1B,EAAI,KAAK,MAAM,EAEnB,IADAA,EAAE,SAAW,EACN,CAACA,EAAE,OAAO,GAAG,CAClB,IAAIG,EAAIH,EAAE,MAAM6B,CAAS,EAAE,SAAS3C,CAAI,EACxCc,EAAIA,EAAE,MAAM6B,CAAS,EAEhB7B,EAAE,OAAO,EAGZ0B,EAAMvB,EAAIuB,EAFVA,EAAMJ,EAAMM,EAAYzB,EAAE,QAAUA,EAAIuB,CAI5C,CAIA,IAHI,KAAK,OAAO,IACdA,EAAM,IAAMA,GAEPA,EAAI,OAASD,IAAY,GAC9BC,EAAM,IAAMA,EAEd,OAAI,KAAK,WAAa,IACpBA,EAAM,IAAMA,GAEPA,CACT,CAEAjD,EAAO,GAAO,iCAAiC,CACjD,EAEAO,EAAG,UAAU,SAAW,UAAqB,CAC3C,IAAI8C,EAAM,KAAK,MAAM,GACrB,OAAI,KAAK,SAAW,EAClBA,GAAO,KAAK,MAAM,GAAK,SACd,KAAK,SAAW,GAAK,KAAK,MAAM,KAAO,EAEhDA,GAAO,iBAAoB,KAAK,MAAM,GAAK,SAClC,KAAK,OAAS,GACvBrD,EAAO,GAAO,4CAA4C,EAEpD,KAAK,WAAa,EAAK,CAACqD,EAAMA,CACxC,EAEA9C,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAO,KAAK,SAAS,GAAI,CAAC,CAC5B,EAEII,IACFJ,EAAG,UAAU,SAAW,SAAmBG,EAAQ4C,EAAQ,CACzD,OAAO,KAAK,YAAY3C,EAAQD,EAAQ4C,CAAM,CAChD,GAGF/C,EAAG,UAAU,QAAU,SAAkBG,EAAQ4C,EAAQ,CACvD,OAAO,KAAK,YAAY,MAAO5C,EAAQ4C,CAAM,CAC/C,EAEA,IAAIC,EAAW,SAAmBC,EAAWb,EAAM,CACjD,OAAIa,EAAU,YACLA,EAAU,YAAYb,CAAI,EAE5B,IAAIa,EAAUb,CAAI,CAC3B,EAEApC,EAAG,UAAU,YAAc,SAAsBiD,EAAW9C,EAAQ4C,EAAQ,CAC1E,KAAK,OAAO,EAEZ,IAAIG,EAAa,KAAK,WAAW,EAC7BC,EAAYJ,GAAU,KAAK,IAAI,EAAGG,CAAU,EAChDzD,EAAOyD,GAAcC,EAAW,uCAAuC,EACvE1D,EAAO0D,EAAY,EAAG,6BAA6B,EAEnD,IAAIC,EAAMJ,EAASC,EAAWE,CAAS,EACnCE,EAAUlD,IAAW,KAAO,KAAO,KACvC,YAAK,eAAiBkD,GAASD,EAAKF,CAAU,EACvCE,CACT,EAEApD,EAAG,UAAU,eAAiB,SAAyBoD,EAAKF,EAAY,CAItE,QAHII,EAAW,EACXX,EAAQ,EAEHlC,EAAI,EAAG8C,EAAQ,EAAG9C,EAAI,KAAK,OAAQA,IAAK,CAC/C,IAAIsB,EAAQ,KAAK,MAAMtB,IAAM8C,EAASZ,EAEtCS,EAAIE,KAAcvB,EAAO,IACrBuB,EAAWF,EAAI,SACjBA,EAAIE,KAAevB,GAAQ,EAAK,KAE9BuB,EAAWF,EAAI,SACjBA,EAAIE,KAAevB,GAAQ,GAAM,KAG/BwB,IAAU,GACRD,EAAWF,EAAI,SACjBA,EAAIE,KAAevB,GAAQ,GAAM,KAEnCY,EAAQ,EACRY,EAAQ,IAERZ,EAAQZ,IAAS,GACjBwB,GAAS,EAEb,CAEA,GAAID,EAAWF,EAAI,OAGjB,IAFAA,EAAIE,KAAcX,EAEXW,EAAWF,EAAI,QACpBA,EAAIE,KAAc,CAGxB,EAEAtD,EAAG,UAAU,eAAiB,SAAyBoD,EAAKF,EAAY,CAItE,QAHII,EAAWF,EAAI,OAAS,EACxBT,EAAQ,EAEHlC,EAAI,EAAG8C,EAAQ,EAAG9C,EAAI,KAAK,OAAQA,IAAK,CAC/C,IAAIsB,EAAQ,KAAK,MAAMtB,IAAM8C,EAASZ,EAEtCS,EAAIE,KAAcvB,EAAO,IACrBuB,GAAY,IACdF,EAAIE,KAAevB,GAAQ,EAAK,KAE9BuB,GAAY,IACdF,EAAIE,KAAevB,GAAQ,GAAM,KAG/BwB,IAAU,GACRD,GAAY,IACdF,EAAIE,KAAevB,GAAQ,GAAM,KAEnCY,EAAQ,EACRY,EAAQ,IAERZ,EAAQZ,IAAS,GACjBwB,GAAS,EAEb,CAEA,GAAID,GAAY,EAGd,IAFAF,EAAIE,KAAcX,EAEXW,GAAY,GACjBF,EAAIE,KAAc,CAGxB,EAEI,KAAK,MACPtD,EAAG,UAAU,WAAa,SAAqBW,EAAG,CAChD,MAAO,IAAK,KAAK,MAAMA,CAAC,CAC1B,EAEAX,EAAG,UAAU,WAAa,SAAqBW,EAAG,CAChD,IAAI6C,EAAI7C,EACJQ,EAAI,EACR,OAAIqC,GAAK,OACPrC,GAAK,GACLqC,KAAO,IAELA,GAAK,KACPrC,GAAK,EACLqC,KAAO,GAELA,GAAK,IACPrC,GAAK,EACLqC,KAAO,GAELA,GAAK,IACPrC,GAAK,EACLqC,KAAO,GAEFrC,EAAIqC,CACb,EAGFxD,EAAG,UAAU,UAAY,SAAoBW,EAAG,CAE9C,GAAIA,IAAM,EAAG,MAAO,IAEpB,IAAI6C,EAAI7C,EACJQ,EAAI,EACR,OAAKqC,EAAI,QAAY,IACnBrC,GAAK,GACLqC,KAAO,KAEJA,EAAI,OAAU,IACjBrC,GAAK,EACLqC,KAAO,IAEJA,EAAI,MAAS,IAChBrC,GAAK,EACLqC,KAAO,IAEJA,EAAI,KAAS,IAChBrC,GAAK,EACLqC,KAAO,IAEJA,EAAI,KAAS,GAChBrC,IAEKA,CACT,EAGAnB,EAAG,UAAU,UAAY,UAAsB,CAC7C,IAAIW,EAAI,KAAK,MAAM,KAAK,OAAS,GAC7B8C,EAAK,KAAK,WAAW9C,CAAC,EAC1B,OAAQ,KAAK,OAAS,GAAK,GAAK8C,CAClC,EAEA,SAASC,EAAYrD,EAAK,CAGxB,QAFIM,EAAI,IAAI,MAAMN,EAAI,UAAU,CAAC,EAExBsD,EAAM,EAAGA,EAAMhD,EAAE,OAAQgD,IAAO,CACvC,IAAI/C,EAAO+C,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjBhD,EAAEgD,GAAQtD,EAAI,MAAMO,KAASgD,EAAQ,CACvC,CAEA,OAAOjD,CACT,CAGAX,EAAG,UAAU,SAAW,UAAqB,CAC3C,GAAI,KAAK,OAAO,EAAG,MAAO,GAG1B,QADImB,EAAI,EACCV,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CACpC,IAAIgB,EAAI,KAAK,UAAU,KAAK,MAAMhB,EAAE,EAEpC,GADAU,GAAKM,EACDA,IAAM,GAAI,KAChB,CACA,OAAON,CACT,EAEAnB,EAAG,UAAU,WAAa,UAAuB,CAC/C,OAAO,KAAK,KAAK,KAAK,UAAU,EAAI,CAAC,CACvC,EAEAA,EAAG,UAAU,OAAS,SAAiB6D,EAAO,CAC5C,OAAI,KAAK,WAAa,EACb,KAAK,IAAI,EAAE,MAAMA,CAAK,EAAE,MAAM,CAAC,EAEjC,KAAK,MAAM,CACpB,EAEA7D,EAAG,UAAU,SAAW,SAAmB6D,EAAO,CAChD,OAAI,KAAK,MAAMA,EAAQ,CAAC,EACf,KAAK,KAAKA,CAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAEjC,KAAK,MAAM,CACpB,EAEA7D,EAAG,UAAU,MAAQ,UAAkB,CACrC,OAAO,KAAK,WAAa,CAC3B,EAGAA,EAAG,UAAU,IAAM,UAAgB,CACjC,OAAO,KAAK,MAAM,EAAE,KAAK,CAC3B,EAEAA,EAAG,UAAU,KAAO,UAAiB,CACnC,OAAK,KAAK,OAAO,IACf,KAAK,UAAY,GAGZ,IACT,EAGAA,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,KAAO,KAAK,OAASA,EAAI,QACvB,KAAK,MAAM,KAAK,UAAY,EAG9B,QAASI,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAC9B,KAAK,MAAMA,GAAK,KAAK,MAAMA,GAAKJ,EAAI,MAAMI,GAG5C,OAAO,KAAK,OAAO,CACrB,EAEAT,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAAZ,GAAQ,KAAK,SAAWY,EAAI,YAAc,CAAC,EACpC,KAAK,KAAKA,CAAG,CACtB,EAGAL,EAAG,UAAU,GAAK,SAAaK,EAAK,CAClC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,IAAIA,CAAG,EAClDA,EAAI,MAAM,EAAE,IAAI,IAAI,CAC7B,EAEAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,KAAKA,CAAG,EACnDA,EAAI,MAAM,EAAE,KAAK,IAAI,CAC9B,EAGAL,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CAExC,IAAIoB,EACA,KAAK,OAASpB,EAAI,OACpBoB,EAAIpB,EAEJoB,EAAI,KAGN,QAAShB,EAAI,EAAGA,EAAIgB,EAAE,OAAQhB,IAC5B,KAAK,MAAMA,GAAK,KAAK,MAAMA,GAAKJ,EAAI,MAAMI,GAG5C,YAAK,OAASgB,EAAE,OAET,KAAK,OAAO,CACrB,EAEAzB,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAAZ,GAAQ,KAAK,SAAWY,EAAI,YAAc,CAAC,EACpC,KAAK,MAAMA,CAAG,CACvB,EAGAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,KAAKA,CAAG,EACnDA,EAAI,MAAM,EAAE,KAAK,IAAI,CAC9B,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,MAAMA,CAAG,EACpDA,EAAI,MAAM,EAAE,MAAM,IAAI,CAC/B,EAGAL,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CAExC,IAAIyD,EACArC,EACA,KAAK,OAASpB,EAAI,QACpByD,EAAI,KACJrC,EAAIpB,IAEJyD,EAAIzD,EACJoB,EAAI,MAGN,QAAShB,EAAI,EAAGA,EAAIgB,EAAE,OAAQhB,IAC5B,KAAK,MAAMA,GAAKqD,EAAE,MAAMrD,GAAKgB,EAAE,MAAMhB,GAGvC,GAAI,OAASqD,EACX,KAAOrD,EAAIqD,EAAE,OAAQrD,IACnB,KAAK,MAAMA,GAAKqD,EAAE,MAAMrD,GAI5B,YAAK,OAASqD,EAAE,OAET,KAAK,OAAO,CACrB,EAEA9D,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAAZ,GAAQ,KAAK,SAAWY,EAAI,YAAc,CAAC,EACpC,KAAK,MAAMA,CAAG,CACvB,EAGAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,KAAKA,CAAG,EACnDA,EAAI,MAAM,EAAE,KAAK,IAAI,CAC9B,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,MAAMA,CAAG,EACpDA,EAAI,MAAM,EAAE,MAAM,IAAI,CAC/B,EAGAL,EAAG,UAAU,MAAQ,SAAgB6D,EAAO,CAC1CpE,EAAO,OAAOoE,GAAU,UAAYA,GAAS,CAAC,EAE9C,IAAIE,EAAc,KAAK,KAAKF,EAAQ,EAAE,EAAI,EACtCG,EAAWH,EAAQ,GAGvB,KAAK,QAAQE,CAAW,EAEpBC,EAAW,GACbD,IAIF,QAAStD,EAAI,EAAGA,EAAIsD,EAAatD,IAC/B,KAAK,MAAMA,GAAK,CAAC,KAAK,MAAMA,GAAK,SAInC,OAAIuD,EAAW,IACb,KAAK,MAAMvD,GAAK,CAAC,KAAK,MAAMA,GAAM,UAAc,GAAKuD,GAIhD,KAAK,OAAO,CACrB,EAEAhE,EAAG,UAAU,KAAO,SAAe6D,EAAO,CACxC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAK,CACjC,EAGA7D,EAAG,UAAU,KAAO,SAAe2D,EAAKjE,EAAK,CAC3CD,EAAO,OAAOkE,GAAQ,UAAYA,GAAO,CAAC,EAE1C,IAAI/C,EAAO+C,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjB,YAAK,QAAQ/C,EAAM,CAAC,EAEhBlB,EACF,KAAK,MAAMkB,GAAO,KAAK,MAAMA,GAAQ,GAAKgD,EAE1C,KAAK,MAAMhD,GAAO,KAAK,MAAMA,GAAO,EAAE,GAAKgD,GAGtC,KAAK,OAAO,CACrB,EAGA5D,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,IAAIc,EAGJ,GAAI,KAAK,WAAa,GAAKd,EAAI,WAAa,EAC1C,YAAK,SAAW,EAChBc,EAAI,KAAK,KAAKd,CAAG,EACjB,KAAK,UAAY,EACV,KAAK,UAAU,EAGjB,GAAI,KAAK,WAAa,GAAKA,EAAI,WAAa,EACjD,OAAAA,EAAI,SAAW,EACfc,EAAI,KAAK,KAAKd,CAAG,EACjBA,EAAI,SAAW,EACRc,EAAE,UAAU,EAIrB,IAAI2C,EAAGrC,EACH,KAAK,OAASpB,EAAI,QACpByD,EAAI,KACJrC,EAAIpB,IAEJyD,EAAIzD,EACJoB,EAAI,MAIN,QADIkB,EAAQ,EACHlC,EAAI,EAAGA,EAAIgB,EAAE,OAAQhB,IAC5BU,GAAK2C,EAAE,MAAMrD,GAAK,IAAMgB,EAAE,MAAMhB,GAAK,GAAKkC,EAC1C,KAAK,MAAMlC,GAAKU,EAAI,SACpBwB,EAAQxB,IAAM,GAEhB,KAAOwB,IAAU,GAAKlC,EAAIqD,EAAE,OAAQrD,IAClCU,GAAK2C,EAAE,MAAMrD,GAAK,GAAKkC,EACvB,KAAK,MAAMlC,GAAKU,EAAI,SACpBwB,EAAQxB,IAAM,GAIhB,GADA,KAAK,OAAS2C,EAAE,OACZnB,IAAU,EACZ,KAAK,MAAM,KAAK,QAAUA,EAC1B,KAAK,iBAEImB,IAAM,KACf,KAAOrD,EAAIqD,EAAE,OAAQrD,IACnB,KAAK,MAAMA,GAAKqD,EAAE,MAAMrD,GAI5B,OAAO,IACT,EAGAT,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,IAAI+C,EACJ,OAAI/C,EAAI,WAAa,GAAK,KAAK,WAAa,GAC1CA,EAAI,SAAW,EACf+C,EAAM,KAAK,IAAI/C,CAAG,EAClBA,EAAI,UAAY,EACT+C,GACE/C,EAAI,WAAa,GAAK,KAAK,WAAa,GACjD,KAAK,SAAW,EAChB+C,EAAM/C,EAAI,IAAI,IAAI,EAClB,KAAK,SAAW,EACT+C,GAGL,KAAK,OAAS/C,EAAI,OAAe,KAAK,MAAM,EAAE,KAAKA,CAAG,EAEnDA,EAAI,MAAM,EAAE,KAAK,IAAI,CAC9B,EAGAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CAEtC,GAAIA,EAAI,WAAa,EAAG,CACtBA,EAAI,SAAW,EACf,IAAIc,EAAI,KAAK,KAAKd,CAAG,EACrB,OAAAA,EAAI,SAAW,EACRc,EAAE,UAAU,CAGrB,SAAW,KAAK,WAAa,EAC3B,YAAK,SAAW,EAChB,KAAK,KAAKd,CAAG,EACb,KAAK,SAAW,EACT,KAAK,UAAU,EAIxB,IAAI4D,EAAM,KAAK,IAAI5D,CAAG,EAGtB,GAAI4D,IAAQ,EACV,YAAK,SAAW,EAChB,KAAK,OAAS,EACd,KAAK,MAAM,GAAK,EACT,KAIT,IAAIH,EAAGrC,EACHwC,EAAM,GACRH,EAAI,KACJrC,EAAIpB,IAEJyD,EAAIzD,EACJoB,EAAI,MAIN,QADIkB,EAAQ,EACHlC,EAAI,EAAGA,EAAIgB,EAAE,OAAQhB,IAC5BU,GAAK2C,EAAE,MAAMrD,GAAK,IAAMgB,EAAE,MAAMhB,GAAK,GAAKkC,EAC1CA,EAAQxB,GAAK,GACb,KAAK,MAAMV,GAAKU,EAAI,SAEtB,KAAOwB,IAAU,GAAKlC,EAAIqD,EAAE,OAAQrD,IAClCU,GAAK2C,EAAE,MAAMrD,GAAK,GAAKkC,EACvBA,EAAQxB,GAAK,GACb,KAAK,MAAMV,GAAKU,EAAI,SAItB,GAAIwB,IAAU,GAAKlC,EAAIqD,EAAE,QAAUA,IAAM,KACvC,KAAOrD,EAAIqD,EAAE,OAAQrD,IACnB,KAAK,MAAMA,GAAKqD,EAAE,MAAMrD,GAI5B,YAAK,OAAS,KAAK,IAAI,KAAK,OAAQA,CAAC,EAEjCqD,IAAM,OACR,KAAK,SAAW,GAGX,KAAK,OAAO,CACrB,EAGA9D,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,MAAM,EAAE,KAAKA,CAAG,CAC9B,EAEA,SAAS6D,EAAYC,EAAM9D,EAAKqC,EAAK,CACnCA,EAAI,SAAWrC,EAAI,SAAW8D,EAAK,SACnC,IAAIzC,EAAOyC,EAAK,OAAS9D,EAAI,OAAU,EACvCqC,EAAI,OAAShB,EACbA,EAAOA,EAAM,EAAK,EAGlB,IAAIoC,EAAIK,EAAK,MAAM,GAAK,EACpB1C,EAAIpB,EAAI,MAAM,GAAK,EACnBc,EAAI2C,EAAIrC,EAER2C,EAAKjD,EAAI,SACTwB,EAASxB,EAAI,SAAa,EAC9BuB,EAAI,MAAM,GAAK0B,EAEf,QAASC,EAAI,EAAGA,EAAI3C,EAAK2C,IAAK,CAM5B,QAHIC,EAAS3B,IAAU,GACnB4B,EAAQ5B,EAAQ,SAChB6B,EAAO,KAAK,IAAIH,EAAGhE,EAAI,OAAS,CAAC,EAC5BK,EAAI,KAAK,IAAI,EAAG2D,EAAIF,EAAK,OAAS,CAAC,EAAGzD,GAAK8D,EAAM9D,IAAK,CAC7D,IAAID,EAAK4D,EAAI3D,EAAK,EAClBoD,EAAIK,EAAK,MAAM1D,GAAK,EACpBgB,EAAIpB,EAAI,MAAMK,GAAK,EACnBS,EAAI2C,EAAIrC,EAAI8C,EACZD,GAAWnD,EAAI,SAAa,EAC5BoD,EAAQpD,EAAI,QACd,CACAuB,EAAI,MAAM2B,GAAKE,EAAQ,EACvB5B,EAAQ2B,EAAS,CACnB,CACA,OAAI3B,IAAU,EACZD,EAAI,MAAM2B,GAAK1B,EAAQ,EAEvBD,EAAI,SAGCA,EAAI,OAAO,CACpB,CAKA,IAAI+B,EAAc,SAAsBN,EAAM9D,EAAKqC,EAAK,CACtD,IAAIoB,EAAIK,EAAK,MACT1C,EAAIpB,EAAI,MACRqE,EAAIhC,EAAI,MACR1B,EAAI,EACJoD,EACAO,EACAlB,EACAmB,EAAKd,EAAE,GAAK,EACZe,EAAMD,EAAK,KACXE,EAAMF,IAAO,GACbG,EAAKjB,EAAE,GAAK,EACZkB,EAAMD,EAAK,KACXE,EAAMF,IAAO,GACbG,EAAKpB,EAAE,GAAK,EACZqB,EAAMD,EAAK,KACXE,EAAMF,IAAO,GACbG,GAAKvB,EAAE,GAAK,EACZwB,EAAMD,GAAK,KACXE,EAAMF,KAAO,GACbG,GAAK1B,EAAE,GAAK,EACZ2B,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK7B,EAAE,GAAK,EACZ8B,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKhC,EAAE,GAAK,EACZiC,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKnC,EAAE,GAAK,EACZoC,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKtC,EAAE,GAAK,EACZuC,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKzC,EAAE,GAAK,EACZ0C,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKjF,EAAE,GAAK,EACZkF,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKpF,EAAE,GAAK,EACZqF,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKvF,EAAE,GAAK,EACZwF,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK1F,EAAE,GAAK,EACZ2F,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK7F,EAAE,GAAK,EACZ8F,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKhG,EAAE,GAAK,EACZiG,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKnG,EAAE,GAAK,EACZoG,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKtG,EAAE,GAAK,EACZuG,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKzG,EAAE,GAAK,EACZ0G,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK5G,EAAE,GAAK,EACZ6G,GAAMD,GAAK,KACXE,GAAMF,KAAO,GAEjB3F,EAAI,SAAWyB,EAAK,SAAW9D,EAAI,SACnCqC,EAAI,OAAS,GAEb0B,EAAK,KAAK,KAAKS,EAAK8B,EAAG,EACvBhC,EAAM,KAAK,KAAKE,EAAK+B,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKG,EAAK6B,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKqB,EAAK8B,EAAG,EACvB,IAAI4B,IAAQxH,EAAIoD,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrD3D,GAAOyC,GAAMkB,IAAQ,IAAO,IAAM6D,KAAO,IAAO,EAChDA,IAAM,SAENpE,EAAK,KAAK,KAAKY,EAAK2B,EAAG,EACvBhC,EAAM,KAAK,KAAKK,EAAK4B,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKM,EAAK0B,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKwB,EAAK2B,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKS,EAAKiC,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKE,EAAKkC,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKG,EAAKgC,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAKqB,EAAKiC,EAAG,EAAK,EAClC,IAAI0B,IAAQzH,EAAIoD,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrD3D,GAAOyC,GAAMkB,IAAQ,IAAO,IAAM8D,KAAO,IAAO,EAChDA,IAAM,SAENrE,EAAK,KAAK,KAAKe,EAAKwB,EAAG,EACvBhC,EAAM,KAAK,KAAKQ,EAAKyB,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKS,EAAKuB,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAK2B,EAAKwB,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKY,EAAK8B,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKK,EAAK+B,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKM,EAAK6B,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAKwB,EAAK8B,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKS,EAAKoC,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKE,EAAKqC,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKG,EAAKmC,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAKqB,EAAKoC,EAAG,EAAK,EAClC,IAAIwB,IAAQ1H,EAAIoD,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrD3D,GAAOyC,GAAMkB,IAAQ,IAAO,IAAM+D,KAAO,IAAO,EAChDA,IAAM,SAENtE,EAAK,KAAK,KAAKkB,EAAKqB,EAAG,EACvBhC,EAAM,KAAK,KAAKW,EAAKsB,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKY,EAAKoB,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAK8B,EAAKqB,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKe,EAAK2B,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKQ,EAAK4B,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKS,EAAK0B,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAK2B,EAAK2B,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKY,EAAKiC,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKK,EAAKkC,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKM,EAAKgC,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAKwB,EAAKiC,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKS,EAAKuC,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKE,EAAKwC,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKG,EAAKsC,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAKqB,EAAKuC,EAAG,EAAK,EAClC,IAAIsB,IAAQ3H,EAAIoD,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrD3D,GAAOyC,GAAMkB,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAENvE,EAAK,KAAK,KAAKqB,GAAKkB,EAAG,EACvBhC,EAAM,KAAK,KAAKc,GAAKmB,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKe,GAAKiB,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKiC,GAAKkB,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKkB,EAAKwB,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKW,EAAKyB,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKY,EAAKuB,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAK8B,EAAKwB,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKe,EAAK8B,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKQ,EAAK+B,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKS,EAAK6B,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAK2B,EAAK8B,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKY,EAAKoC,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKK,EAAKqC,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKM,EAAKmC,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAKwB,EAAKoC,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKS,EAAK0C,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKE,EAAK2C,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKG,EAAKyC,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAKqB,EAAK0C,EAAG,EAAK,EAClC,IAAIoB,IAAQ5H,EAAIoD,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrD3D,GAAOyC,GAAMkB,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAENxE,EAAK,KAAK,KAAKwB,GAAKe,EAAG,EACvBhC,EAAM,KAAK,KAAKiB,GAAKgB,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKkB,GAAKc,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKoC,GAAKe,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKqB,GAAKqB,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKc,GAAKsB,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKe,GAAKoB,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAKiC,GAAKqB,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKkB,EAAK2B,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKW,EAAK4B,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKY,EAAK0B,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAK8B,EAAK2B,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKe,EAAKiC,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKQ,EAAKkC,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKS,EAAKgC,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAK2B,EAAKiC,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKY,EAAKuC,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKK,EAAKwC,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKM,EAAKsC,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAKwB,EAAKuC,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKS,EAAK6C,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKE,EAAK8C,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKG,EAAK4C,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAKqB,EAAK6C,EAAG,EAAK,EAClC,IAAIkB,IAAQ7H,EAAIoD,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrD3D,GAAOyC,GAAMkB,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAENzE,EAAK,KAAK,KAAK2B,GAAKY,EAAG,EACvBhC,EAAM,KAAK,KAAKoB,GAAKa,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKqB,GAAKW,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKuC,GAAKY,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKwB,GAAKkB,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKiB,GAAKmB,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKkB,GAAKiB,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAKoC,GAAKkB,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKqB,GAAKwB,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKc,GAAKyB,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKe,GAAKuB,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAKiC,GAAKwB,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKkB,EAAK8B,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKW,EAAK+B,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKY,EAAK6B,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAK8B,EAAK8B,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKe,EAAKoC,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKQ,EAAKqC,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKS,EAAKmC,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAK2B,EAAKoC,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKY,EAAK0C,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKK,EAAK2C,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKM,EAAKyC,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAKwB,EAAK0C,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKS,EAAKgD,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKE,EAAKiD,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKG,EAAK+C,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAKqB,EAAKgD,EAAG,EAAK,EAClC,IAAIgB,IAAQ9H,EAAIoD,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrD3D,GAAOyC,GAAMkB,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAEN1E,EAAK,KAAK,KAAK8B,GAAKS,EAAG,EACvBhC,EAAM,KAAK,KAAKuB,GAAKU,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKwB,GAAKQ,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAK0C,GAAKS,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAK2B,GAAKe,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKoB,GAAKgB,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKqB,GAAKc,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAKuC,GAAKe,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKwB,GAAKqB,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKiB,GAAKsB,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKkB,GAAKoB,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAKoC,GAAKqB,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKqB,GAAK2B,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKc,GAAK4B,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKe,GAAK0B,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAKiC,GAAK2B,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKkB,EAAKiC,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKW,EAAKkC,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKY,EAAKgC,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAK8B,EAAKiC,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKe,EAAKuC,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKQ,EAAKwC,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKS,EAAKsC,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAK2B,EAAKuC,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKY,EAAK6C,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKK,EAAK8C,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKM,EAAK4C,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAKwB,EAAK6C,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKS,EAAKmD,EAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKE,EAAKoD,EAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKG,EAAKkD,EAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAKqB,EAAKmD,EAAG,EAAK,EAClC,IAAIc,IAAQ/H,EAAIoD,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrD3D,GAAOyC,GAAMkB,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAEN3E,EAAK,KAAK,KAAKiC,GAAKM,EAAG,EACvBhC,EAAM,KAAK,KAAK0B,GAAKO,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAK2B,GAAKK,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAK6C,GAAKM,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAK8B,GAAKY,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKuB,GAAKa,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKwB,GAAKW,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAK0C,GAAKY,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAK2B,GAAKkB,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKoB,GAAKmB,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKqB,GAAKiB,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAKuC,GAAKkB,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKwB,GAAKwB,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKiB,GAAKyB,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKkB,GAAKuB,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAKoC,GAAKwB,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKqB,GAAK8B,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKc,GAAK+B,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKe,GAAK6B,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAKiC,GAAK8B,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKkB,EAAKoC,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKW,EAAKqC,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKY,EAAKmC,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAK8B,EAAKoC,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKe,EAAK0C,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKQ,EAAK2C,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKS,EAAKyC,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAK2B,EAAK0C,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKY,EAAKgD,EAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKK,EAAKiD,EAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKM,EAAK+C,EAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAKwB,EAAKgD,EAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKS,EAAKsD,EAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKE,EAAKuD,EAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKG,EAAKqD,EAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAKqB,EAAKsD,EAAG,EAAK,EAClC,IAAIY,IAAQhI,EAAIoD,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrD3D,GAAOyC,GAAMkB,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAEN5E,EAAK,KAAK,KAAKoC,GAAKG,EAAG,EACvBhC,EAAM,KAAK,KAAK6B,GAAKI,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAK8B,GAAKE,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKgD,GAAKG,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKiC,GAAKS,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAK0B,GAAKU,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAK2B,GAAKQ,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAK6C,GAAKS,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAK8B,GAAKe,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKuB,GAAKgB,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKwB,GAAKc,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAK0C,GAAKe,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAK2B,GAAKqB,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKoB,GAAKsB,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKqB,GAAKoB,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAKuC,GAAKqB,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKwB,GAAK2B,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKiB,GAAK4B,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKkB,GAAK0B,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAKoC,GAAK2B,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKqB,GAAKiC,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKc,GAAKkC,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKe,GAAKgC,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAKiC,GAAKiC,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKkB,EAAKuC,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKW,EAAKwC,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKY,EAAKsC,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAK8B,EAAKuC,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKe,EAAK6C,EAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKQ,EAAK8C,EAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKS,EAAK4C,EAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAK2B,EAAK6C,EAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKY,EAAKmD,EAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKK,EAAKoD,EAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKM,EAAKkD,EAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAKwB,EAAKmD,EAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKS,EAAKyD,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKE,EAAK0D,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKG,EAAKwD,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAKqB,EAAKyD,EAAG,EAAK,EAClC,IAAIU,IAAQjI,EAAIoD,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrD3D,GAAOyC,GAAMkB,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAEN7E,EAAK,KAAK,KAAKoC,GAAKM,EAAG,EACvBnC,EAAM,KAAK,KAAK6B,GAAKO,EAAG,EACxBpC,EAAOA,EAAM,KAAK,KAAK8B,GAAKK,EAAG,EAAK,EACpCrD,EAAK,KAAK,KAAKgD,GAAKM,EAAG,EACvB3C,EAAMA,EAAK,KAAK,KAAKiC,GAAKY,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAK0B,GAAKa,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAK2B,GAAKW,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAK6C,GAAKY,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAK8B,GAAKkB,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKuB,GAAKmB,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKwB,GAAKiB,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAK0C,GAAKkB,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAK2B,GAAKwB,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKoB,GAAKyB,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKqB,GAAKuB,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAKuC,GAAKwB,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKwB,GAAK8B,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKiB,GAAK+B,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKkB,GAAK6B,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAKoC,GAAK8B,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKqB,GAAKoC,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKc,GAAKqC,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKe,GAAKmC,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAKiC,GAAKoC,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKkB,EAAK0C,EAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKW,EAAK2C,EAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKY,EAAKyC,EAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAK8B,EAAK0C,EAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKe,EAAKgD,EAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKQ,EAAKiD,EAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKS,EAAK+C,EAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAK2B,EAAKgD,EAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKY,EAAKsD,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKK,EAAKuD,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKM,EAAKqD,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAKwB,EAAKsD,EAAG,EAAK,EAClC,IAAIW,IAASlI,EAAIoD,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtD3D,GAAOyC,GAAMkB,IAAQ,IAAO,IAAMuE,KAAQ,IAAO,EACjDA,IAAO,SAEP9E,EAAK,KAAK,KAAKoC,GAAKS,EAAG,EACvBtC,EAAM,KAAK,KAAK6B,GAAKU,EAAG,EACxBvC,EAAOA,EAAM,KAAK,KAAK8B,GAAKQ,EAAG,EAAK,EACpCxD,EAAK,KAAK,KAAKgD,GAAKS,EAAG,EACvB9C,EAAMA,EAAK,KAAK,KAAKiC,GAAKe,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAK0B,GAAKgB,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAK2B,GAAKc,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAK6C,GAAKe,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAK8B,GAAKqB,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKuB,GAAKsB,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKwB,GAAKoB,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAK0C,GAAKqB,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAK2B,GAAK2B,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKoB,GAAK4B,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKqB,GAAK0B,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAKuC,GAAK2B,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKwB,GAAKiC,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKiB,GAAKkC,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKkB,GAAKgC,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAKoC,GAAKiC,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKqB,GAAKuC,EAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKc,GAAKwC,EAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKe,GAAKsC,EAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAKiC,GAAKuC,EAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKkB,EAAK6C,EAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKW,EAAK8C,EAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKY,EAAK4C,EAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAK8B,EAAK6C,EAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKe,EAAKmD,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKQ,EAAKoD,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKS,EAAKkD,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAK2B,EAAKmD,EAAG,EAAK,EAClC,IAAIY,IAASnI,EAAIoD,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtD3D,GAAOyC,GAAMkB,IAAQ,IAAO,IAAMwE,KAAQ,IAAO,EACjDA,IAAO,SAEP/E,EAAK,KAAK,KAAKoC,GAAKY,EAAG,EACvBzC,EAAM,KAAK,KAAK6B,GAAKa,EAAG,EACxB1C,EAAOA,EAAM,KAAK,KAAK8B,GAAKW,EAAG,EAAK,EACpC3D,EAAK,KAAK,KAAKgD,GAAKY,EAAG,EACvBjD,EAAMA,EAAK,KAAK,KAAKiC,GAAKkB,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAK0B,GAAKmB,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAK2B,GAAKiB,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAK6C,GAAKkB,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAK8B,GAAKwB,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKuB,GAAKyB,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKwB,GAAKuB,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAK0C,GAAKwB,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAK2B,GAAK8B,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKoB,GAAK+B,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKqB,GAAK6B,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAKuC,GAAK8B,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKwB,GAAKoC,EAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKiB,GAAKqC,EAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKkB,GAAKmC,EAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAKoC,GAAKoC,EAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKqB,GAAK0C,EAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKc,GAAK2C,EAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKe,GAAKyC,EAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAKiC,GAAK0C,EAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKkB,EAAKgD,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKW,EAAKiD,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKY,EAAK+C,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAK8B,EAAKgD,EAAG,EAAK,EAClC,IAAIa,IAASpI,EAAIoD,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtD3D,GAAOyC,GAAMkB,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEPhF,EAAK,KAAK,KAAKoC,GAAKe,EAAG,EACvB5C,EAAM,KAAK,KAAK6B,GAAKgB,EAAG,EACxB7C,EAAOA,EAAM,KAAK,KAAK8B,GAAKc,EAAG,EAAK,EACpC9D,EAAK,KAAK,KAAKgD,GAAKe,EAAG,EACvBpD,EAAMA,EAAK,KAAK,KAAKiC,GAAKqB,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAK0B,GAAKsB,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAK2B,GAAKoB,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAK6C,GAAKqB,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAK8B,GAAK2B,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKuB,GAAK4B,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKwB,GAAK0B,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAK0C,GAAK2B,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAK2B,GAAKiC,EAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKoB,GAAKkC,EAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKqB,GAAKgC,EAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAKuC,GAAKiC,EAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKwB,GAAKuC,EAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKiB,GAAKwC,EAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKkB,GAAKsC,EAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAKoC,GAAKuC,EAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKqB,GAAK6C,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKc,GAAK8C,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKe,GAAK4C,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAKiC,GAAK6C,EAAG,EAAK,EAClC,IAAIc,IAASrI,EAAIoD,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtD3D,GAAOyC,GAAMkB,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEPjF,EAAK,KAAK,KAAKoC,GAAKkB,EAAG,EACvB/C,EAAM,KAAK,KAAK6B,GAAKmB,EAAG,EACxBhD,EAAOA,EAAM,KAAK,KAAK8B,GAAKiB,EAAG,EAAK,EACpCjE,EAAK,KAAK,KAAKgD,GAAKkB,EAAG,EACvBvD,EAAMA,EAAK,KAAK,KAAKiC,GAAKwB,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAK0B,GAAKyB,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAK2B,GAAKuB,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAK6C,GAAKwB,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAK8B,GAAK8B,EAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKuB,GAAK+B,EAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKwB,GAAK6B,EAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAK0C,GAAK8B,EAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAK2B,GAAKoC,EAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKoB,GAAKqC,EAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKqB,GAAKmC,EAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAKuC,GAAKoC,EAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKwB,GAAK0C,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKiB,GAAK2C,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKkB,GAAKyC,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAKoC,GAAK0C,EAAG,EAAK,EAClC,IAAIe,IAAStI,EAAIoD,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtD3D,GAAOyC,GAAMkB,IAAQ,IAAO,IAAM2E,KAAQ,IAAO,EACjDA,IAAO,SAEPlF,EAAK,KAAK,KAAKoC,GAAKqB,EAAG,EACvBlD,EAAM,KAAK,KAAK6B,GAAKsB,EAAG,EACxBnD,EAAOA,EAAM,KAAK,KAAK8B,GAAKoB,EAAG,EAAK,EACpCpE,EAAK,KAAK,KAAKgD,GAAKqB,EAAG,EACvB1D,EAAMA,EAAK,KAAK,KAAKiC,GAAK2B,EAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAK0B,GAAK4B,EAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAK2B,GAAK0B,EAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAK6C,GAAK2B,EAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAK8B,GAAKiC,EAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKuB,GAAKkC,EAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKwB,GAAKgC,EAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAK0C,GAAKiC,EAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAK2B,GAAKuC,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKoB,GAAKwC,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKqB,GAAKsC,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAKuC,GAAKuC,EAAG,EAAK,EAClC,IAAIgB,IAASvI,EAAIoD,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtD3D,GAAOyC,GAAMkB,IAAQ,IAAO,IAAM4E,KAAQ,IAAO,EACjDA,IAAO,SAEPnF,EAAK,KAAK,KAAKoC,GAAKwB,EAAG,EACvBrD,EAAM,KAAK,KAAK6B,GAAKyB,EAAG,EACxBtD,EAAOA,EAAM,KAAK,KAAK8B,GAAKuB,EAAG,EAAK,EACpCvE,EAAK,KAAK,KAAKgD,GAAKwB,EAAG,EACvB7D,EAAMA,EAAK,KAAK,KAAKiC,GAAK8B,EAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAK0B,GAAK+B,EAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAK2B,GAAK6B,EAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAK6C,GAAK8B,EAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAK8B,GAAKoC,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKuB,GAAKqC,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKwB,GAAKmC,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAK0C,GAAKoC,EAAG,EAAK,EAClC,IAAIiB,IAASxI,EAAIoD,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtD3D,GAAOyC,GAAMkB,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEPpF,EAAK,KAAK,KAAKoC,GAAK2B,EAAG,EACvBxD,EAAM,KAAK,KAAK6B,GAAK4B,EAAG,EACxBzD,EAAOA,EAAM,KAAK,KAAK8B,GAAK0B,EAAG,EAAK,EACpC1E,EAAK,KAAK,KAAKgD,GAAK2B,EAAG,EACvBhE,EAAMA,EAAK,KAAK,KAAKiC,GAAKiC,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAK0B,GAAKkC,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAK2B,GAAKgC,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAK6C,GAAKiC,EAAG,EAAK,EAClC,IAAIkB,IAASzI,EAAIoD,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtD3D,GAAOyC,GAAMkB,IAAQ,IAAO,IAAM8E,KAAQ,IAAO,EACjDA,IAAO,SAEPrF,EAAK,KAAK,KAAKoC,GAAK8B,EAAG,EACvB3D,EAAM,KAAK,KAAK6B,GAAK+B,EAAG,EACxB5D,EAAOA,EAAM,KAAK,KAAK8B,GAAK6B,EAAG,EAAK,EACpC7E,EAAK,KAAK,KAAKgD,GAAK8B,EAAG,EACvB,IAAImB,IAAS1I,EAAIoD,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtD,OAAA3D,GAAOyC,GAAMkB,IAAQ,IAAO,IAAM+E,KAAQ,IAAO,EACjDA,IAAO,SACPhF,EAAE,GAAK8D,GACP9D,EAAE,GAAK+D,GACP/D,EAAE,GAAKgE,GACPhE,EAAE,GAAKiE,GACPjE,EAAE,GAAKkE,GACPlE,EAAE,GAAKmE,GACPnE,EAAE,GAAKoE,GACPpE,EAAE,GAAKqE,GACPrE,EAAE,GAAKsE,GACPtE,EAAE,GAAKuE,GACPvE,EAAE,IAAMwE,GACRxE,EAAE,IAAMyE,GACRzE,EAAE,IAAM0E,GACR1E,EAAE,IAAM2E,GACR3E,EAAE,IAAM4E,GACR5E,EAAE,IAAM6E,GACR7E,EAAE,IAAM8E,GACR9E,EAAE,IAAM+E,GACR/E,EAAE,IAAMgF,GACJ1I,IAAM,IACR0D,EAAE,IAAM1D,EACR0B,EAAI,UAECA,CACT,EAGK,KAAK,OACR+B,EAAcP,GAGhB,SAASyF,EAAUxF,EAAM9D,EAAKqC,EAAK,CACjCA,EAAI,SAAWrC,EAAI,SAAW8D,EAAK,SACnCzB,EAAI,OAASyB,EAAK,OAAS9D,EAAI,OAI/B,QAFIsC,EAAQ,EACRiH,EAAU,EACLvF,EAAI,EAAGA,EAAI3B,EAAI,OAAS,EAAG2B,IAAK,CAGvC,IAAIC,EAASsF,EACbA,EAAU,EAGV,QAFIrF,EAAQ5B,EAAQ,SAChB6B,EAAO,KAAK,IAAIH,EAAGhE,EAAI,OAAS,CAAC,EAC5BK,EAAI,KAAK,IAAI,EAAG2D,EAAIF,EAAK,OAAS,CAAC,EAAGzD,GAAK8D,EAAM9D,IAAK,CAC7D,IAAID,EAAI4D,EAAI3D,EACRoD,EAAIK,EAAK,MAAM1D,GAAK,EACpBgB,EAAIpB,EAAI,MAAMK,GAAK,EACnBS,EAAI2C,EAAIrC,EAER2C,EAAKjD,EAAI,SACbmD,EAAUA,GAAWnD,EAAI,SAAa,GAAM,EAC5CiD,EAAMA,EAAKG,EAAS,EACpBA,EAAQH,EAAK,SACbE,EAAUA,GAAUF,IAAO,IAAO,EAElCwF,GAAWtF,IAAW,GACtBA,GAAU,QACZ,CACA5B,EAAI,MAAM2B,GAAKE,EACf5B,EAAQ2B,EACRA,EAASsF,CACX,CACA,OAAIjH,IAAU,EACZD,EAAI,MAAM2B,GAAK1B,EAEfD,EAAI,SAGCA,EAAI,OAAO,CACpB,CAEA,SAASmH,EAAY1F,EAAM9D,EAAKqC,EAAK,CAInC,OAAOiH,EAASxF,EAAM9D,EAAKqC,CAAG,CAChC,CAEA1C,EAAG,UAAU,MAAQ,SAAgBK,EAAKqC,EAAK,CAC7C,IAAIU,EACA1B,EAAM,KAAK,OAASrB,EAAI,OAC5B,OAAI,KAAK,SAAW,IAAMA,EAAI,SAAW,GACvC+C,EAAMqB,EAAY,KAAMpE,EAAKqC,CAAG,EACvBhB,EAAM,GACf0B,EAAMc,EAAW,KAAM7D,EAAKqC,CAAG,EACtBhB,EAAM,KACf0B,EAAMuG,EAAS,KAAMtJ,EAAKqC,CAAG,EAE7BU,EAAMyG,EAAW,KAAMxJ,EAAKqC,CAAG,EAG1BU,CACT,EAKA,SAAS0G,EAAMC,EAAGC,EAAG,CACnB,KAAK,EAAID,EACT,KAAK,EAAIC,CACX,CAEAF,EAAK,UAAU,QAAU,SAAkBG,EAAG,CAG5C,QAFIzG,EAAI,IAAI,MAAMyG,CAAC,EACfC,EAAIlK,EAAG,UAAU,WAAWiK,CAAC,EAAI,EAC5BxJ,EAAI,EAAGA,EAAIwJ,EAAGxJ,IACrB+C,EAAE/C,GAAK,KAAK,OAAOA,EAAGyJ,EAAGD,CAAC,EAG5B,OAAOzG,CACT,EAGAsG,EAAK,UAAU,OAAS,SAAiBC,EAAGG,EAAGD,EAAG,CAChD,GAAIF,IAAM,GAAKA,IAAME,EAAI,EAAG,OAAOF,EAGnC,QADII,EAAK,EACA1J,EAAI,EAAGA,EAAIyJ,EAAGzJ,IACrB0J,IAAOJ,EAAI,IAAOG,EAAIzJ,EAAI,EAC1BsJ,IAAM,EAGR,OAAOI,CACT,EAIAL,EAAK,UAAU,QAAU,SAAkBM,EAAKC,EAAKC,EAAKC,EAAMC,EAAMP,EAAG,CACvE,QAASxJ,EAAI,EAAGA,EAAIwJ,EAAGxJ,IACrB8J,EAAK9J,GAAK4J,EAAID,EAAI3J,IAClB+J,EAAK/J,GAAK6J,EAAIF,EAAI3J,GAEtB,EAEAqJ,EAAK,UAAU,UAAY,SAAoBO,EAAKC,EAAKC,EAAMC,EAAMP,EAAGG,EAAK,CAC3E,KAAK,QAAQA,EAAKC,EAAKC,EAAKC,EAAMC,EAAMP,CAAC,EAEzC,QAASQ,EAAI,EAAGA,EAAIR,EAAGQ,IAAM,EAM3B,QALIP,EAAIO,GAAK,EAETC,EAAQ,KAAK,IAAI,EAAI,KAAK,GAAKR,CAAC,EAChCS,EAAQ,KAAK,IAAI,EAAI,KAAK,GAAKT,CAAC,EAE3BU,EAAI,EAAGA,EAAIX,EAAGW,GAAKV,EAI1B,QAHIW,EAASH,EACTI,EAASH,EAEJjK,EAAI,EAAGA,EAAI+J,EAAG/J,IAAK,CAC1B,IAAIqK,EAAKR,EAAKK,EAAIlK,GACdsK,EAAKR,EAAKI,EAAIlK,GAEduK,EAAKV,EAAKK,EAAIlK,EAAI+J,GAClBS,EAAKV,EAAKI,EAAIlK,EAAI+J,GAElBU,EAAKN,EAASI,EAAKH,EAASI,EAEhCA,EAAKL,EAASK,EAAKJ,EAASG,EAC5BA,EAAKE,EAELZ,EAAKK,EAAIlK,GAAKqK,EAAKE,EACnBT,EAAKI,EAAIlK,GAAKsK,EAAKE,EAEnBX,EAAKK,EAAIlK,EAAI+J,GAAKM,EAAKE,EACvBT,EAAKI,EAAIlK,EAAI+J,GAAKO,EAAKE,EAGnBxK,IAAMwJ,IACRiB,EAAKT,EAAQG,EAASF,EAAQG,EAE9BA,EAASJ,EAAQI,EAASH,EAAQE,EAClCA,EAASM,EAEb,CAGN,EAEArB,EAAK,UAAU,YAAc,SAAsBsB,EAAGC,EAAG,CACvD,IAAIpB,EAAI,KAAK,IAAIoB,EAAGD,CAAC,EAAI,EACrBE,EAAMrB,EAAI,EACVxJ,EAAI,EACR,IAAKwJ,EAAIA,EAAI,EAAI,EAAGA,EAAGA,EAAIA,IAAM,EAC/BxJ,IAGF,MAAO,IAAKA,EAAI,EAAI6K,CACtB,EAEAxB,EAAK,UAAU,UAAY,SAAoBO,EAAKC,EAAKL,EAAG,CAC1D,GAAI,EAAAA,GAAK,GAET,QAASxJ,EAAI,EAAGA,EAAIwJ,EAAI,EAAGxJ,IAAK,CAC9B,IAAI+C,EAAI6G,EAAI5J,GAEZ4J,EAAI5J,GAAK4J,EAAIJ,EAAIxJ,EAAI,GACrB4J,EAAIJ,EAAIxJ,EAAI,GAAK+C,EAEjBA,EAAI8G,EAAI7J,GAER6J,EAAI7J,GAAK,CAAC6J,EAAIL,EAAIxJ,EAAI,GACtB6J,EAAIL,EAAIxJ,EAAI,GAAK,CAAC+C,CACpB,CACF,EAEAsG,EAAK,UAAU,aAAe,SAAuByB,EAAItB,EAAG,CAE1D,QADItH,EAAQ,EACHlC,EAAI,EAAGA,EAAIwJ,EAAI,EAAGxJ,IAAK,CAC9B,IAAIE,EAAI,KAAK,MAAM4K,EAAG,EAAI9K,EAAI,GAAKwJ,CAAC,EAAI,KACtC,KAAK,MAAMsB,EAAG,EAAI9K,GAAKwJ,CAAC,EACxBtH,EAEF4I,EAAG9K,GAAKE,EAAI,SAERA,EAAI,SACNgC,EAAQ,EAERA,EAAQhC,EAAI,SAAY,CAE5B,CAEA,OAAO4K,CACT,EAEAzB,EAAK,UAAU,WAAa,SAAqByB,EAAI7J,EAAK2I,EAAKJ,EAAG,CAEhE,QADItH,EAAQ,EACHlC,EAAI,EAAGA,EAAIiB,EAAKjB,IACvBkC,EAAQA,GAAS4I,EAAG9K,GAAK,GAEzB4J,EAAI,EAAI5J,GAAKkC,EAAQ,KAAQA,EAAQA,IAAU,GAC/C0H,EAAI,EAAI5J,EAAI,GAAKkC,EAAQ,KAAQA,EAAQA,IAAU,GAIrD,IAAKlC,EAAI,EAAIiB,EAAKjB,EAAIwJ,EAAG,EAAExJ,EACzB4J,EAAI5J,GAAK,EAGXhB,EAAOkD,IAAU,CAAC,EAClBlD,GAAQkD,EAAQ,SAAa,CAAC,CAChC,EAEAmH,EAAK,UAAU,KAAO,SAAeG,EAAG,CAEtC,QADIuB,EAAK,IAAI,MAAMvB,CAAC,EACXxJ,EAAI,EAAGA,EAAIwJ,EAAGxJ,IACrB+K,EAAG/K,GAAK,EAGV,OAAO+K,CACT,EAEA1B,EAAK,UAAU,KAAO,SAAeC,EAAGC,EAAGtH,EAAK,CAC9C,IAAIuH,EAAI,EAAI,KAAK,YAAYF,EAAE,OAAQC,EAAE,MAAM,EAE3CI,EAAM,KAAK,QAAQH,CAAC,EAEpBwB,EAAI,KAAK,KAAKxB,CAAC,EAEfI,EAAM,IAAI,MAAMJ,CAAC,EACjByB,EAAO,IAAI,MAAMzB,CAAC,EAClB0B,EAAO,IAAI,MAAM1B,CAAC,EAElB2B,EAAO,IAAI,MAAM3B,CAAC,EAClB4B,EAAQ,IAAI,MAAM5B,CAAC,EACnB6B,EAAQ,IAAI,MAAM7B,CAAC,EAEnB8B,EAAOrJ,EAAI,MACfqJ,EAAK,OAAS9B,EAEd,KAAK,WAAWF,EAAE,MAAOA,EAAE,OAAQM,EAAKJ,CAAC,EACzC,KAAK,WAAWD,EAAE,MAAOA,EAAE,OAAQ4B,EAAM3B,CAAC,EAE1C,KAAK,UAAUI,EAAKoB,EAAGC,EAAMC,EAAM1B,EAAGG,CAAG,EACzC,KAAK,UAAUwB,EAAMH,EAAGI,EAAOC,EAAO7B,EAAGG,CAAG,EAE5C,QAAS3J,EAAI,EAAGA,EAAIwJ,EAAGxJ,IAAK,CAC1B,IAAI0K,EAAKO,EAAKjL,GAAKoL,EAAMpL,GAAKkL,EAAKlL,GAAKqL,EAAMrL,GAC9CkL,EAAKlL,GAAKiL,EAAKjL,GAAKqL,EAAMrL,GAAKkL,EAAKlL,GAAKoL,EAAMpL,GAC/CiL,EAAKjL,GAAK0K,CACZ,CAEA,YAAK,UAAUO,EAAMC,EAAM1B,CAAC,EAC5B,KAAK,UAAUyB,EAAMC,EAAMI,EAAMN,EAAGxB,EAAGG,CAAG,EAC1C,KAAK,UAAU2B,EAAMN,EAAGxB,CAAC,EACzB,KAAK,aAAa8B,EAAM9B,CAAC,EAEzBvH,EAAI,SAAWqH,EAAE,SAAWC,EAAE,SAC9BtH,EAAI,OAASqH,EAAE,OAASC,EAAE,OACnBtH,EAAI,OAAO,CACpB,EAGA1C,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,IAAIqC,EAAM,IAAI1C,EAAG,IAAI,EACrB,OAAA0C,EAAI,MAAQ,IAAI,MAAM,KAAK,OAASrC,EAAI,MAAM,EACvC,KAAK,MAAMA,EAAKqC,CAAG,CAC5B,EAGA1C,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,IAAIqC,EAAM,IAAI1C,EAAG,IAAI,EACrB,OAAA0C,EAAI,MAAQ,IAAI,MAAM,KAAK,OAASrC,EAAI,MAAM,EACvCwJ,EAAW,KAAMxJ,EAAKqC,CAAG,CAClC,EAGA1C,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,MAAM,EAAE,MAAMA,EAAK,IAAI,CACrC,EAEAL,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CACxC,IAAI2L,EAAW3L,EAAM,EACjB2L,IAAU3L,EAAM,CAACA,GAErBZ,EAAO,OAAOY,GAAQ,QAAQ,EAC9BZ,EAAOY,EAAM,QAAS,EAItB,QADIsC,EAAQ,EACHlC,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CACpC,IAAIE,GAAK,KAAK,MAAMF,GAAK,GAAKJ,EAC1B+D,GAAMzD,EAAI,WAAcgC,EAAQ,UACpCA,IAAU,GACVA,GAAUhC,EAAI,SAAa,EAE3BgC,GAASyB,IAAO,GAChB,KAAK,MAAM3D,GAAK2D,EAAK,QACvB,CAEA,OAAIzB,IAAU,IACZ,KAAK,MAAMlC,GAAKkC,EAChB,KAAK,UAGAqJ,EAAW,KAAK,KAAK,EAAI,IAClC,EAEAhM,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAG,CAC/B,EAGAL,EAAG,UAAU,IAAM,UAAgB,CACjC,OAAO,KAAK,IAAI,IAAI,CACtB,EAGAA,EAAG,UAAU,KAAO,UAAiB,CACnC,OAAO,KAAK,KAAK,KAAK,MAAM,CAAC,CAC/B,EAGAA,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,IAAIM,EAAI+C,EAAWrD,CAAG,EACtB,GAAIM,EAAE,SAAW,EAAG,OAAO,IAAIX,EAAG,CAAC,EAInC,QADIoD,EAAM,KACD3C,EAAI,EAAGA,EAAIE,EAAE,QAChBA,EAAEF,KAAO,EADeA,IAAK2C,EAAMA,EAAI,IAAI,EAC/C,CAGF,GAAI,EAAE3C,EAAIE,EAAE,OACV,QAASsL,EAAI7I,EAAI,IAAI,EAAG3C,EAAIE,EAAE,OAAQF,IAAKwL,EAAIA,EAAE,IAAI,EAC/CtL,EAAEF,KAAO,IAEb2C,EAAMA,EAAI,IAAI6I,CAAC,GAInB,OAAO7I,CACT,EAGApD,EAAG,UAAU,OAAS,SAAiBkM,EAAM,CAC3CzM,EAAO,OAAOyM,GAAS,UAAYA,GAAQ,CAAC,EAC5C,IAAI/K,EAAI+K,EAAO,GACXzB,GAAKyB,EAAO/K,GAAK,GACjBgL,EAAa,WAAe,GAAKhL,GAAQ,GAAKA,EAC9CV,EAEJ,GAAIU,IAAM,EAAG,CACX,IAAIwB,EAAQ,EAEZ,IAAKlC,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CAChC,IAAI2L,EAAW,KAAK,MAAM3L,GAAK0L,EAC3BnL,GAAM,KAAK,MAAMP,GAAK,GAAK2L,GAAajL,EAC5C,KAAK,MAAMV,GAAKO,EAAI2B,EACpBA,EAAQyJ,IAAc,GAAKjL,CAC7B,CAEIwB,IACF,KAAK,MAAMlC,GAAKkC,EAChB,KAAK,SAET,CAEA,GAAI8H,IAAM,EAAG,CACX,IAAKhK,EAAI,KAAK,OAAS,EAAGA,GAAK,EAAGA,IAChC,KAAK,MAAMA,EAAIgK,GAAK,KAAK,MAAMhK,GAGjC,IAAKA,EAAI,EAAGA,EAAIgK,EAAGhK,IACjB,KAAK,MAAMA,GAAK,EAGlB,KAAK,QAAUgK,CACjB,CAEA,OAAO,KAAK,OAAO,CACrB,EAEAzK,EAAG,UAAU,MAAQ,SAAgBkM,EAAM,CAEzC,OAAAzM,EAAO,KAAK,WAAa,CAAC,EACnB,KAAK,OAAOyM,CAAI,CACzB,EAKAlM,EAAG,UAAU,OAAS,SAAiBkM,EAAMG,EAAMC,EAAU,CAC3D7M,EAAO,OAAOyM,GAAS,UAAYA,GAAQ,CAAC,EAC5C,IAAIK,EACAF,EACFE,GAAKF,EAAQA,EAAO,IAAO,GAE3BE,EAAI,EAGN,IAAIpL,EAAI+K,EAAO,GACXzB,EAAI,KAAK,KAAKyB,EAAO/K,GAAK,GAAI,KAAK,MAAM,EACzCqL,EAAO,SAAc,WAAcrL,GAAMA,EACzCsL,EAAcH,EAMlB,GAJAC,GAAK9B,EACL8B,EAAI,KAAK,IAAI,EAAGA,CAAC,EAGbE,EAAa,CACf,QAAShM,EAAI,EAAGA,EAAIgK,EAAGhK,IACrBgM,EAAY,MAAMhM,GAAK,KAAK,MAAMA,GAEpCgM,EAAY,OAAShC,CACvB,CAEA,GAAIA,IAAM,EAEH,GAAI,KAAK,OAASA,EAEvB,IADA,KAAK,QAAUA,EACVhK,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC3B,KAAK,MAAMA,GAAK,KAAK,MAAMA,EAAIgK,QAGjC,KAAK,MAAM,GAAK,EAChB,KAAK,OAAS,EAGhB,IAAI9H,EAAQ,EACZ,IAAKlC,EAAI,KAAK,OAAS,EAAGA,GAAK,IAAMkC,IAAU,GAAKlC,GAAK8L,GAAI9L,IAAK,CAChE,IAAIsB,EAAO,KAAK,MAAMtB,GAAK,EAC3B,KAAK,MAAMA,GAAMkC,GAAU,GAAKxB,EAAOY,IAASZ,EAChDwB,EAAQZ,EAAOyK,CACjB,CAGA,OAAIC,GAAe9J,IAAU,IAC3B8J,EAAY,MAAMA,EAAY,UAAY9J,GAGxC,KAAK,SAAW,IAClB,KAAK,MAAM,GAAK,EAChB,KAAK,OAAS,GAGT,KAAK,OAAO,CACrB,EAEA3C,EAAG,UAAU,MAAQ,SAAgBkM,EAAMG,EAAMC,EAAU,CAEzD,OAAA7M,EAAO,KAAK,WAAa,CAAC,EACnB,KAAK,OAAOyM,EAAMG,EAAMC,CAAQ,CACzC,EAGAtM,EAAG,UAAU,KAAO,SAAekM,EAAM,CACvC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAI,CAChC,EAEAlM,EAAG,UAAU,MAAQ,SAAgBkM,EAAM,CACzC,OAAO,KAAK,MAAM,EAAE,OAAOA,CAAI,CACjC,EAGAlM,EAAG,UAAU,KAAO,SAAekM,EAAM,CACvC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAI,CAChC,EAEAlM,EAAG,UAAU,MAAQ,SAAgBkM,EAAM,CACzC,OAAO,KAAK,MAAM,EAAE,OAAOA,CAAI,CACjC,EAGAlM,EAAG,UAAU,MAAQ,SAAgB2D,EAAK,CACxClE,EAAO,OAAOkE,GAAQ,UAAYA,GAAO,CAAC,EAC1C,IAAIxC,EAAIwC,EAAM,GACV8G,GAAK9G,EAAMxC,GAAK,GAChB8K,EAAI,GAAK9K,EAGb,GAAI,KAAK,QAAUsJ,EAAG,MAAO,GAG7B,IAAI9J,EAAI,KAAK,MAAM8J,GAEnB,MAAO,CAAC,EAAE9J,EAAIsL,EAChB,EAGAjM,EAAG,UAAU,OAAS,SAAiBkM,EAAM,CAC3CzM,EAAO,OAAOyM,GAAS,UAAYA,GAAQ,CAAC,EAC5C,IAAI/K,EAAI+K,EAAO,GACXzB,GAAKyB,EAAO/K,GAAK,GAIrB,GAFA1B,EAAO,KAAK,WAAa,EAAG,yCAAyC,EAEjE,KAAK,QAAUgL,EACjB,OAAO,KAQT,GALItJ,IAAM,GACRsJ,IAEF,KAAK,OAAS,KAAK,IAAIA,EAAG,KAAK,MAAM,EAEjCtJ,IAAM,EAAG,CACX,IAAIqL,EAAO,SAAc,WAAcrL,GAAMA,EAC7C,KAAK,MAAM,KAAK,OAAS,IAAMqL,CACjC,CAEA,OAAO,KAAK,OAAO,CACrB,EAGAxM,EAAG,UAAU,MAAQ,SAAgBkM,EAAM,CACzC,OAAO,KAAK,MAAM,EAAE,OAAOA,CAAI,CACjC,EAGAlM,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CAGxC,OAFAZ,EAAO,OAAOY,GAAQ,QAAQ,EAC9BZ,EAAOY,EAAM,QAAS,EAClBA,EAAM,EAAU,KAAK,MAAM,CAACA,CAAG,EAG/B,KAAK,WAAa,EAChB,KAAK,SAAW,IAAM,KAAK,MAAM,GAAK,IAAMA,GAC9C,KAAK,MAAM,GAAKA,GAAO,KAAK,MAAM,GAAK,GACvC,KAAK,SAAW,EACT,OAGT,KAAK,SAAW,EAChB,KAAK,MAAMA,CAAG,EACd,KAAK,SAAW,EACT,MAIF,KAAK,OAAOA,CAAG,CACxB,EAEAL,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,KAAK,MAAM,IAAMA,EAGjB,QAASI,EAAI,EAAGA,EAAI,KAAK,QAAU,KAAK,MAAMA,IAAM,SAAWA,IAC7D,KAAK,MAAMA,IAAM,SACbA,IAAM,KAAK,OAAS,EACtB,KAAK,MAAMA,EAAI,GAAK,EAEpB,KAAK,MAAMA,EAAI,KAGnB,YAAK,OAAS,KAAK,IAAI,KAAK,OAAQA,EAAI,CAAC,EAElC,IACT,EAGAT,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CAGxC,GAFAZ,EAAO,OAAOY,GAAQ,QAAQ,EAC9BZ,EAAOY,EAAM,QAAS,EAClBA,EAAM,EAAG,OAAO,KAAK,MAAM,CAACA,CAAG,EAEnC,GAAI,KAAK,WAAa,EACpB,YAAK,SAAW,EAChB,KAAK,MAAMA,CAAG,EACd,KAAK,SAAW,EACT,KAKT,GAFA,KAAK,MAAM,IAAMA,EAEb,KAAK,SAAW,GAAK,KAAK,MAAM,GAAK,EACvC,KAAK,MAAM,GAAK,CAAC,KAAK,MAAM,GAC5B,KAAK,SAAW,MAGhB,SAASI,EAAI,EAAGA,EAAI,KAAK,QAAU,KAAK,MAAMA,GAAK,EAAGA,IACpD,KAAK,MAAMA,IAAM,SACjB,KAAK,MAAMA,EAAI,IAAM,EAIzB,OAAO,KAAK,OAAO,CACrB,EAEAT,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAG,CAC/B,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAG,CAC/B,EAEAL,EAAG,UAAU,KAAO,UAAiB,CACnC,YAAK,SAAW,EAET,IACT,EAEAA,EAAG,UAAU,IAAM,UAAgB,CACjC,OAAO,KAAK,MAAM,EAAE,KAAK,CAC3B,EAEAA,EAAG,UAAU,aAAe,SAAuBK,EAAKmB,EAAK+B,EAAO,CAClE,IAAI7B,EAAMrB,EAAI,OAASkD,EACnB9C,EAEJ,KAAK,QAAQiB,CAAG,EAEhB,IAAIf,EACAgC,EAAQ,EACZ,IAAKlC,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAAK,CAC/BE,GAAK,KAAK,MAAMF,EAAI8C,GAAS,GAAKZ,EAClC,IAAIpC,GAASF,EAAI,MAAMI,GAAK,GAAKe,EACjCb,GAAKJ,EAAQ,SACboC,GAAShC,GAAK,KAAQJ,EAAQ,SAAa,GAC3C,KAAK,MAAME,EAAI8C,GAAS5C,EAAI,QAC9B,CACA,KAAOF,EAAI,KAAK,OAAS8C,EAAO9C,IAC9BE,GAAK,KAAK,MAAMF,EAAI8C,GAAS,GAAKZ,EAClCA,EAAQhC,GAAK,GACb,KAAK,MAAMF,EAAI8C,GAAS5C,EAAI,SAG9B,GAAIgC,IAAU,EAAG,OAAO,KAAK,OAAO,EAKpC,IAFAlD,EAAOkD,IAAU,EAAE,EACnBA,EAAQ,EACHlC,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC3BE,EAAI,EAAE,KAAK,MAAMF,GAAK,GAAKkC,EAC3BA,EAAQhC,GAAK,GACb,KAAK,MAAMF,GAAKE,EAAI,SAEtB,YAAK,SAAW,EAET,KAAK,OAAO,CACrB,EAEAX,EAAG,UAAU,SAAW,SAAmBK,EAAKqM,EAAM,CACpD,IAAInJ,EAAQ,KAAK,OAASlD,EAAI,OAE1ByD,EAAI,KAAK,MAAM,EACfrC,EAAIpB,EAGJsM,EAAMlL,EAAE,MAAMA,EAAE,OAAS,GAAK,EAC9BmL,EAAU,KAAK,WAAWD,CAAG,EACjCpJ,EAAQ,GAAKqJ,EACTrJ,IAAU,IACZ9B,EAAIA,EAAE,MAAM8B,CAAK,EACjBO,EAAE,OAAOP,CAAK,EACdoJ,EAAMlL,EAAE,MAAMA,EAAE,OAAS,GAAK,GAIhC,IAAI4J,EAAIvH,EAAE,OAASrC,EAAE,OACjBwK,EAEJ,GAAIS,IAAS,MAAO,CAClBT,EAAI,IAAIjM,EAAG,IAAI,EACfiM,EAAE,OAASZ,EAAI,EACfY,EAAE,MAAQ,IAAI,MAAMA,EAAE,MAAM,EAC5B,QAASxL,EAAI,EAAGA,EAAIwL,EAAE,OAAQxL,IAC5BwL,EAAE,MAAMxL,GAAK,CAEjB,CAEA,IAAIoM,EAAO/I,EAAE,MAAM,EAAE,aAAarC,EAAG,EAAG4J,CAAC,EACrCwB,EAAK,WAAa,IACpB/I,EAAI+I,EACAZ,IACFA,EAAE,MAAMZ,GAAK,IAIjB,QAAS3K,EAAI2K,EAAI,EAAG3K,GAAK,EAAGA,IAAK,CAC/B,IAAIoM,GAAMhJ,EAAE,MAAMrC,EAAE,OAASf,GAAK,GAAK,UACpCoD,EAAE,MAAMrC,EAAE,OAASf,EAAI,GAAK,GAO/B,IAHAoM,EAAK,KAAK,IAAKA,EAAKH,EAAO,EAAG,QAAS,EAEvC7I,EAAE,aAAarC,EAAGqL,EAAIpM,CAAC,EAChBoD,EAAE,WAAa,GACpBgJ,IACAhJ,EAAE,SAAW,EACbA,EAAE,aAAarC,EAAG,EAAGf,CAAC,EACjBoD,EAAE,OAAO,IACZA,EAAE,UAAY,GAGdmI,IACFA,EAAE,MAAMvL,GAAKoM,EAEjB,CACA,OAAIb,GACFA,EAAE,OAAO,EAEXnI,EAAE,OAAO,EAGL4I,IAAS,OAASnJ,IAAU,GAC9BO,EAAE,OAAOP,CAAK,EAGT,CACL,IAAK0I,GAAK,KACV,IAAKnI,CACP,CACF,EAMA9D,EAAG,UAAU,OAAS,SAAiBK,EAAKqM,EAAMK,EAAU,CAG1D,GAFAtN,EAAO,CAACY,EAAI,OAAO,CAAC,EAEhB,KAAK,OAAO,EACd,MAAO,CACL,IAAK,IAAIL,EAAG,CAAC,EACb,IAAK,IAAIA,EAAG,CAAC,CACf,EAGF,IAAIgN,EAAKlL,EAAKsB,EACd,OAAI,KAAK,WAAa,GAAK/C,EAAI,WAAa,GAC1C+C,EAAM,KAAK,IAAI,EAAE,OAAO/C,EAAKqM,CAAI,EAE7BA,IAAS,QACXM,EAAM5J,EAAI,IAAI,IAAI,GAGhBsJ,IAAS,QACX5K,EAAMsB,EAAI,IAAI,IAAI,EACd2J,GAAYjL,EAAI,WAAa,GAC/BA,EAAI,KAAKzB,CAAG,GAIT,CACL,IAAK2M,EACL,IAAKlL,CACP,GAGE,KAAK,WAAa,GAAKzB,EAAI,WAAa,GAC1C+C,EAAM,KAAK,OAAO/C,EAAI,IAAI,EAAGqM,CAAI,EAE7BA,IAAS,QACXM,EAAM5J,EAAI,IAAI,IAAI,GAGb,CACL,IAAK4J,EACL,IAAK5J,EAAI,GACX,IAGG,KAAK,SAAW/C,EAAI,YAAc,GACrC+C,EAAM,KAAK,IAAI,EAAE,OAAO/C,EAAI,IAAI,EAAGqM,CAAI,EAEnCA,IAAS,QACX5K,EAAMsB,EAAI,IAAI,IAAI,EACd2J,GAAYjL,EAAI,WAAa,GAC/BA,EAAI,KAAKzB,CAAG,GAIT,CACL,IAAK+C,EAAI,IACT,IAAKtB,CACP,GAMEzB,EAAI,OAAS,KAAK,QAAU,KAAK,IAAIA,CAAG,EAAI,EACvC,CACL,IAAK,IAAIL,EAAG,CAAC,EACb,IAAK,IACP,EAIEK,EAAI,SAAW,EACbqM,IAAS,MACJ,CACL,IAAK,KAAK,KAAKrM,EAAI,MAAM,EAAE,EAC3B,IAAK,IACP,EAGEqM,IAAS,MACJ,CACL,IAAK,KACL,IAAK,IAAI1M,EAAG,KAAK,MAAMK,EAAI,MAAM,EAAE,CAAC,CACtC,EAGK,CACL,IAAK,KAAK,KAAKA,EAAI,MAAM,EAAE,EAC3B,IAAK,IAAIL,EAAG,KAAK,MAAMK,EAAI,MAAM,EAAE,CAAC,CACtC,EAGK,KAAK,SAASA,EAAKqM,CAAI,CAChC,EAGA1M,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,OAAOA,EAAK,MAAO,EAAK,EAAE,GACxC,EAGAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,OAAOA,EAAK,MAAO,EAAK,EAAE,GACxC,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,OAAOA,EAAK,MAAO,EAAI,EAAE,GACvC,EAGAL,EAAG,UAAU,SAAW,SAAmBK,EAAK,CAC9C,IAAI4M,EAAK,KAAK,OAAO5M,CAAG,EAGxB,GAAI4M,EAAG,IAAI,OAAO,EAAG,OAAOA,EAAG,IAE/B,IAAInL,EAAMmL,EAAG,IAAI,WAAa,EAAIA,EAAG,IAAI,KAAK5M,CAAG,EAAI4M,EAAG,IAEpDC,EAAO7M,EAAI,MAAM,CAAC,EAClB8M,EAAK9M,EAAI,MAAM,CAAC,EAChB4D,EAAMnC,EAAI,IAAIoL,CAAI,EAGtB,OAAIjJ,EAAM,GAAMkJ,IAAO,GAAKlJ,IAAQ,EAAWgJ,EAAG,IAG3CA,EAAG,IAAI,WAAa,EAAIA,EAAG,IAAI,MAAM,CAAC,EAAIA,EAAG,IAAI,MAAM,CAAC,CACjE,EAEAjN,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CACxC,IAAI2L,EAAW3L,EAAM,EACjB2L,IAAU3L,EAAM,CAACA,GAErBZ,EAAOY,GAAO,QAAS,EAIvB,QAHIuK,GAAK,GAAK,IAAMvK,EAEhB+M,EAAM,EACD3M,EAAI,KAAK,OAAS,EAAGA,GAAK,EAAGA,IACpC2M,GAAOxC,EAAIwC,GAAO,KAAK,MAAM3M,GAAK,IAAMJ,EAG1C,OAAO2L,EAAW,CAACoB,EAAMA,CAC3B,EAGApN,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,MAAMA,CAAG,CACvB,EAGAL,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CACxC,IAAI2L,EAAW3L,EAAM,EACjB2L,IAAU3L,EAAM,CAACA,GAErBZ,EAAOY,GAAO,QAAS,EAGvB,QADIsC,EAAQ,EACHlC,EAAI,KAAK,OAAS,EAAGA,GAAK,EAAGA,IAAK,CACzC,IAAIE,GAAK,KAAK,MAAMF,GAAK,GAAKkC,EAAQ,SACtC,KAAK,MAAMlC,GAAME,EAAIN,EAAO,EAC5BsC,EAAQhC,EAAIN,CACd,CAEA,YAAK,OAAO,EACL2L,EAAW,KAAK,KAAK,EAAI,IAClC,EAEAhM,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAG,CAC/B,EAEAL,EAAG,UAAU,KAAO,SAAe4K,EAAG,CACpCnL,EAAOmL,EAAE,WAAa,CAAC,EACvBnL,EAAO,CAACmL,EAAE,OAAO,CAAC,EAElB,IAAIb,EAAI,KACJC,EAAIY,EAAE,MAAM,EAEZb,EAAE,WAAa,EACjBA,EAAIA,EAAE,KAAKa,CAAC,EAEZb,EAAIA,EAAE,MAAM,EAad,QATIsD,EAAI,IAAIrN,EAAG,CAAC,EACZsN,EAAI,IAAItN,EAAG,CAAC,EAGZuN,EAAI,IAAIvN,EAAG,CAAC,EACZwN,EAAI,IAAIxN,EAAG,CAAC,EAEZyN,EAAI,EAED1D,EAAE,OAAO,GAAKC,EAAE,OAAO,GAC5BD,EAAE,OAAO,CAAC,EACVC,EAAE,OAAO,CAAC,EACV,EAAEyD,EAMJ,QAHIC,EAAK1D,EAAE,MAAM,EACb2D,EAAK5D,EAAE,MAAM,EAEV,CAACA,EAAE,OAAO,GAAG,CAClB,QAAStJ,EAAI,EAAGmN,EAAK,GAAI7D,EAAE,MAAM,GAAK6D,KAAQ,GAAKnN,EAAI,GAAI,EAAEA,EAAGmN,IAAO,EAAE,CACzE,GAAInN,EAAI,EAEN,IADAsJ,EAAE,OAAOtJ,CAAC,EACHA,KAAM,IACP4M,EAAE,MAAM,GAAKC,EAAE,MAAM,KACvBD,EAAE,KAAKK,CAAE,EACTJ,EAAE,KAAKK,CAAE,GAGXN,EAAE,OAAO,CAAC,EACVC,EAAE,OAAO,CAAC,EAId,QAAS5M,EAAI,EAAGmN,EAAK,GAAI7D,EAAE,MAAM,GAAK6D,KAAQ,GAAKnN,EAAI,GAAI,EAAEA,EAAGmN,IAAO,EAAE,CACzE,GAAInN,EAAI,EAEN,IADAsJ,EAAE,OAAOtJ,CAAC,EACHA,KAAM,IACP6M,EAAE,MAAM,GAAKC,EAAE,MAAM,KACvBD,EAAE,KAAKG,CAAE,EACTF,EAAE,KAAKG,CAAE,GAGXJ,EAAE,OAAO,CAAC,EACVC,EAAE,OAAO,CAAC,EAIVzD,EAAE,IAAIC,CAAC,GAAK,GACdD,EAAE,KAAKC,CAAC,EACRqD,EAAE,KAAKE,CAAC,EACRD,EAAE,KAAKE,CAAC,IAERxD,EAAE,KAAKD,CAAC,EACRwD,EAAE,KAAKF,CAAC,EACRG,EAAE,KAAKF,CAAC,EAEZ,CAEA,MAAO,CACL,EAAGC,EACH,EAAGC,EACH,IAAKxD,EAAE,OAAOyD,CAAC,CACjB,CACF,EAKAzN,EAAG,UAAU,OAAS,SAAiB4K,EAAG,CACxCnL,EAAOmL,EAAE,WAAa,CAAC,EACvBnL,EAAO,CAACmL,EAAE,OAAO,CAAC,EAElB,IAAI9G,EAAI,KACJrC,EAAImJ,EAAE,MAAM,EAEZ9G,EAAE,WAAa,EACjBA,EAAIA,EAAE,KAAK8G,CAAC,EAEZ9G,EAAIA,EAAE,MAAM,EAQd,QALIgK,EAAK,IAAI9N,EAAG,CAAC,EACb+N,EAAK,IAAI/N,EAAG,CAAC,EAEbgO,EAAQvM,EAAE,MAAM,EAEbqC,EAAE,KAAK,CAAC,EAAI,GAAKrC,EAAE,KAAK,CAAC,EAAI,GAAG,CACrC,QAAShB,EAAI,EAAGmN,EAAK,GAAI9J,EAAE,MAAM,GAAK8J,KAAQ,GAAKnN,EAAI,GAAI,EAAEA,EAAGmN,IAAO,EAAE,CACzE,GAAInN,EAAI,EAEN,IADAqD,EAAE,OAAOrD,CAAC,EACHA,KAAM,GACPqN,EAAG,MAAM,GACXA,EAAG,KAAKE,CAAK,EAGfF,EAAG,OAAO,CAAC,EAIf,QAASpN,EAAI,EAAGmN,EAAK,GAAIpM,EAAE,MAAM,GAAKoM,KAAQ,GAAKnN,EAAI,GAAI,EAAEA,EAAGmN,IAAO,EAAE,CACzE,GAAInN,EAAI,EAEN,IADAe,EAAE,OAAOf,CAAC,EACHA,KAAM,GACPqN,EAAG,MAAM,GACXA,EAAG,KAAKC,CAAK,EAGfD,EAAG,OAAO,CAAC,EAIXjK,EAAE,IAAIrC,CAAC,GAAK,GACdqC,EAAE,KAAKrC,CAAC,EACRqM,EAAG,KAAKC,CAAE,IAEVtM,EAAE,KAAKqC,CAAC,EACRiK,EAAG,KAAKD,CAAE,EAEd,CAEA,IAAI1K,EACJ,OAAIU,EAAE,KAAK,CAAC,IAAM,EAChBV,EAAM0K,EAEN1K,EAAM2K,EAGJ3K,EAAI,KAAK,CAAC,EAAI,GAChBA,EAAI,KAAKwH,CAAC,EAGLxH,CACT,EAEApD,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,GAAI,KAAK,OAAO,EAAG,OAAOA,EAAI,IAAI,EAClC,GAAIA,EAAI,OAAO,EAAG,OAAO,KAAK,IAAI,EAElC,IAAIyD,EAAI,KAAK,MAAM,EACfrC,EAAIpB,EAAI,MAAM,EAClByD,EAAE,SAAW,EACbrC,EAAE,SAAW,EAGb,QAAS8B,EAAQ,EAAGO,EAAE,OAAO,GAAKrC,EAAE,OAAO,EAAG8B,IAC5CO,EAAE,OAAO,CAAC,EACVrC,EAAE,OAAO,CAAC,EAGZ,EAAG,CACD,KAAOqC,EAAE,OAAO,GACdA,EAAE,OAAO,CAAC,EAEZ,KAAOrC,EAAE,OAAO,GACdA,EAAE,OAAO,CAAC,EAGZ,IAAIN,EAAI2C,EAAE,IAAIrC,CAAC,EACf,GAAIN,EAAI,EAAG,CAET,IAAIqC,EAAIM,EACRA,EAAIrC,EACJA,EAAI+B,CACN,SAAWrC,IAAM,GAAKM,EAAE,KAAK,CAAC,IAAM,EAClC,MAGFqC,EAAE,KAAKrC,CAAC,CACV,OAAS,IAET,OAAOA,EAAE,OAAO8B,CAAK,CACvB,EAGAvD,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,KAAKA,CAAG,EAAE,EAAE,KAAKA,CAAG,CAClC,EAEAL,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAQ,KAAK,MAAM,GAAK,KAAO,CACjC,EAEAA,EAAG,UAAU,MAAQ,UAAkB,CACrC,OAAQ,KAAK,MAAM,GAAK,KAAO,CACjC,EAGAA,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CACxC,OAAO,KAAK,MAAM,GAAKA,CACzB,EAGAL,EAAG,UAAU,MAAQ,SAAgB2D,EAAK,CACxClE,EAAO,OAAOkE,GAAQ,QAAQ,EAC9B,IAAIxC,EAAIwC,EAAM,GACV8G,GAAK9G,EAAMxC,GAAK,GAChB8K,EAAI,GAAK9K,EAGb,GAAI,KAAK,QAAUsJ,EACjB,YAAK,QAAQA,EAAI,CAAC,EAClB,KAAK,MAAMA,IAAMwB,EACV,KAKT,QADItJ,EAAQsJ,EACHxL,EAAIgK,EAAG9H,IAAU,GAAKlC,EAAI,KAAK,OAAQA,IAAK,CACnD,IAAIE,EAAI,KAAK,MAAMF,GAAK,EACxBE,GAAKgC,EACLA,EAAQhC,IAAM,GACdA,GAAK,SACL,KAAK,MAAMF,GAAKE,CAClB,CACA,OAAIgC,IAAU,IACZ,KAAK,MAAMlC,GAAKkC,EAChB,KAAK,UAEA,IACT,EAEA3C,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAO,KAAK,SAAW,GAAK,KAAK,MAAM,KAAO,CAChD,EAEAA,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,IAAI4N,EAAW5N,EAAM,EAErB,GAAI,KAAK,WAAa,GAAK,CAAC4N,EAAU,MAAO,GAC7C,GAAI,KAAK,WAAa,GAAKA,EAAU,MAAO,GAE5C,KAAK,OAAO,EAEZ,IAAI7K,EACJ,GAAI,KAAK,OAAS,EAChBA,EAAM,MACD,CACD6K,IACF5N,EAAM,CAACA,GAGTZ,EAAOY,GAAO,SAAW,mBAAmB,EAE5C,IAAIM,EAAI,KAAK,MAAM,GAAK,EACxByC,EAAMzC,IAAMN,EAAM,EAAIM,EAAIN,EAAM,GAAK,CACvC,CACA,OAAI,KAAK,WAAa,EAAU,CAAC+C,EAAM,EAChCA,CACT,EAMApD,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,GAAI,KAAK,WAAa,GAAKA,EAAI,WAAa,EAAG,MAAO,GACtD,GAAI,KAAK,WAAa,GAAKA,EAAI,WAAa,EAAG,MAAO,GAEtD,IAAI+C,EAAM,KAAK,KAAK/C,CAAG,EACvB,OAAI,KAAK,WAAa,EAAU,CAAC+C,EAAM,EAChCA,CACT,EAGApD,EAAG,UAAU,KAAO,SAAeK,EAAK,CAEtC,GAAI,KAAK,OAASA,EAAI,OAAQ,MAAO,GACrC,GAAI,KAAK,OAASA,EAAI,OAAQ,MAAO,GAGrC,QADI+C,EAAM,EACD3C,EAAI,KAAK,OAAS,EAAGA,GAAK,EAAGA,IAAK,CACzC,IAAIqD,EAAI,KAAK,MAAMrD,GAAK,EACpBgB,EAAIpB,EAAI,MAAMI,GAAK,EAEvB,GAAIqD,IAAMrC,EACV,CAAIqC,EAAIrC,EACN2B,EAAM,GACGU,EAAIrC,IACb2B,EAAM,GAER,MACF,CACA,OAAOA,CACT,EAEApD,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,KAAKA,CAAG,IAAM,CAC5B,EAEAL,EAAG,UAAU,GAAK,SAAaK,EAAK,CAClC,OAAO,KAAK,IAAIA,CAAG,IAAM,CAC3B,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,KAAKA,CAAG,GAAK,CAC3B,EAEAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,IAAIA,CAAG,GAAK,CAC1B,EAEAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,KAAKA,CAAG,IAAM,EAC5B,EAEAL,EAAG,UAAU,GAAK,SAAaK,EAAK,CAClC,OAAO,KAAK,IAAIA,CAAG,IAAM,EAC3B,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,KAAKA,CAAG,GAAK,CAC3B,EAEAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,IAAIA,CAAG,GAAK,CAC1B,EAEAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,KAAKA,CAAG,IAAM,CAC5B,EAEAL,EAAG,UAAU,GAAK,SAAaK,EAAK,CAClC,OAAO,KAAK,IAAIA,CAAG,IAAM,CAC3B,EAMAL,EAAG,IAAM,SAAcK,EAAK,CAC1B,OAAO,IAAI6N,EAAI7N,CAAG,CACpB,EAEAL,EAAG,UAAU,MAAQ,SAAgBmO,EAAK,CACxC,OAAA1O,EAAO,CAAC,KAAK,IAAK,uCAAuC,EACzDA,EAAO,KAAK,WAAa,EAAG,+BAA+B,EACpD0O,EAAI,UAAU,IAAI,EAAE,UAAUA,CAAG,CAC1C,EAEAnO,EAAG,UAAU,QAAU,UAAoB,CACzC,OAAAP,EAAO,KAAK,IAAK,sDAAsD,EAChE,KAAK,IAAI,YAAY,IAAI,CAClC,EAEAO,EAAG,UAAU,UAAY,SAAoBmO,EAAK,CAChD,YAAK,IAAMA,EACJ,IACT,EAEAnO,EAAG,UAAU,SAAW,SAAmBmO,EAAK,CAC9C,OAAA1O,EAAO,CAAC,KAAK,IAAK,uCAAuC,EAClD,KAAK,UAAU0O,CAAG,CAC3B,EAEAnO,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EAC9C,KAAK,IAAI,IAAI,KAAMY,CAAG,CAC/B,EAEAL,EAAG,UAAU,QAAU,SAAkBK,EAAK,CAC5C,OAAAZ,EAAO,KAAK,IAAK,qCAAqC,EAC/C,KAAK,IAAI,KAAK,KAAMY,CAAG,CAChC,EAEAL,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EAC9C,KAAK,IAAI,IAAI,KAAMY,CAAG,CAC/B,EAEAL,EAAG,UAAU,QAAU,SAAkBK,EAAK,CAC5C,OAAAZ,EAAO,KAAK,IAAK,qCAAqC,EAC/C,KAAK,IAAI,KAAK,KAAMY,CAAG,CAChC,EAEAL,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EAC9C,KAAK,IAAI,IAAI,KAAMY,CAAG,CAC/B,EAEAL,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,KAAMY,CAAG,EACpB,KAAK,IAAI,IAAI,KAAMA,CAAG,CAC/B,EAEAL,EAAG,UAAU,QAAU,SAAkBK,EAAK,CAC5C,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,KAAMY,CAAG,EACpB,KAAK,IAAI,KAAK,KAAMA,CAAG,CAChC,EAEAL,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAAP,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,IAAI,IAAI,CAC1B,EAEAO,EAAG,UAAU,QAAU,UAAoB,CACzC,OAAAP,EAAO,KAAK,IAAK,qCAAqC,EACtD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,KAAK,IAAI,CAC3B,EAGAO,EAAG,UAAU,QAAU,UAAoB,CACzC,OAAAP,EAAO,KAAK,IAAK,qCAAqC,EACtD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,KAAK,IAAI,CAC3B,EAEAO,EAAG,UAAU,QAAU,UAAoB,CACzC,OAAAP,EAAO,KAAK,IAAK,qCAAqC,EACtD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,KAAK,IAAI,CAC3B,EAGAO,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAAP,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,IAAI,IAAI,CAC1B,EAEAO,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,OAAAZ,EAAO,KAAK,KAAO,CAACY,EAAI,IAAK,mBAAmB,EAChD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,IAAI,KAAMA,CAAG,CAC/B,EAGA,IAAI+N,EAAS,CACX,KAAM,KACN,KAAM,KACN,KAAM,KACN,OAAQ,IACV,EAGA,SAASC,EAAQC,EAAM1D,EAAG,CAExB,KAAK,KAAO0D,EACZ,KAAK,EAAI,IAAItO,EAAG4K,EAAG,EAAE,EACrB,KAAK,EAAI,KAAK,EAAE,UAAU,EAC1B,KAAK,EAAI,IAAI5K,EAAG,CAAC,EAAE,OAAO,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAE7C,KAAK,IAAM,KAAK,KAAK,CACvB,CAEAqO,EAAO,UAAU,KAAO,UAAiB,CACvC,IAAIE,EAAM,IAAIvO,EAAG,IAAI,EACrB,OAAAuO,EAAI,MAAQ,IAAI,MAAM,KAAK,KAAK,KAAK,EAAI,EAAE,CAAC,EACrCA,CACT,EAEAF,EAAO,UAAU,QAAU,SAAkBhO,EAAK,CAGhD,IAAIc,EAAId,EACJmO,EAEJ,GACE,KAAK,MAAMrN,EAAG,KAAK,GAAG,EACtBA,EAAI,KAAK,MAAMA,CAAC,EAChBA,EAAIA,EAAE,KAAK,KAAK,GAAG,EACnBqN,EAAOrN,EAAE,UAAU,QACZqN,EAAO,KAAK,GAErB,IAAIvK,EAAMuK,EAAO,KAAK,EAAI,GAAKrN,EAAE,KAAK,KAAK,CAAC,EAC5C,OAAI8C,IAAQ,GACV9C,EAAE,MAAM,GAAK,EACbA,EAAE,OAAS,GACF8C,EAAM,EACf9C,EAAE,KAAK,KAAK,CAAC,EAETA,EAAE,QAAU,OAEdA,EAAE,MAAM,EAGRA,EAAE,OAAO,EAINA,CACT,EAEAkN,EAAO,UAAU,MAAQ,SAAgBI,EAAO/L,EAAK,CACnD+L,EAAM,OAAO,KAAK,EAAG,EAAG/L,CAAG,CAC7B,EAEA2L,EAAO,UAAU,MAAQ,SAAgBhO,EAAK,CAC5C,OAAOA,EAAI,KAAK,KAAK,CAAC,CACxB,EAEA,SAASqO,GAAQ,CACfL,EAAO,KACL,KACA,OACA,yEAAyE,CAC7E,CACAzO,EAAS8O,EAAML,CAAM,EAErBK,EAAK,UAAU,MAAQ,SAAgBD,EAAOE,EAAQ,CAKpD,QAHInC,EAAO,QAEPoC,EAAS,KAAK,IAAIH,EAAM,OAAQ,CAAC,EAC5BhO,EAAI,EAAGA,EAAImO,EAAQnO,IAC1BkO,EAAO,MAAMlO,GAAKgO,EAAM,MAAMhO,GAIhC,GAFAkO,EAAO,OAASC,EAEZH,EAAM,QAAU,EAAG,CACrBA,EAAM,MAAM,GAAK,EACjBA,EAAM,OAAS,EACf,MACF,CAGA,IAAII,EAAOJ,EAAM,MAAM,GAGvB,IAFAE,EAAO,MAAMA,EAAO,UAAYE,EAAOrC,EAElC/L,EAAI,GAAIA,EAAIgO,EAAM,OAAQhO,IAAK,CAClC,IAAIqO,EAAOL,EAAM,MAAMhO,GAAK,EAC5BgO,EAAM,MAAMhO,EAAI,KAAQqO,EAAOtC,IAAS,EAAMqC,IAAS,GACvDA,EAAOC,CACT,CACAD,KAAU,GACVJ,EAAM,MAAMhO,EAAI,IAAMoO,EAClBA,IAAS,GAAKJ,EAAM,OAAS,GAC/BA,EAAM,QAAU,GAEhBA,EAAM,QAAU,CAEpB,EAEAC,EAAK,UAAU,MAAQ,SAAgBrO,EAAK,CAE1CA,EAAI,MAAMA,EAAI,QAAU,EACxBA,EAAI,MAAMA,EAAI,OAAS,GAAK,EAC5BA,EAAI,QAAU,EAId,QADI+D,EAAK,EACA3D,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAAK,CACnC,IAAIE,EAAIN,EAAI,MAAMI,GAAK,EACvB2D,GAAMzD,EAAI,IACVN,EAAI,MAAMI,GAAK2D,EAAK,SACpBA,EAAKzD,EAAI,IAASyD,EAAK,SAAa,EACtC,CAGA,OAAI/D,EAAI,MAAMA,EAAI,OAAS,KAAO,IAChCA,EAAI,SACAA,EAAI,MAAMA,EAAI,OAAS,KAAO,GAChCA,EAAI,UAGDA,CACT,EAEA,SAAS0O,GAAQ,CACfV,EAAO,KACL,KACA,OACA,gEAAgE,CACpE,CACAzO,EAASmP,EAAMV,CAAM,EAErB,SAASW,GAAQ,CACfX,EAAO,KACL,KACA,OACA,uDAAuD,CAC3D,CACAzO,EAASoP,EAAMX,CAAM,EAErB,SAASY,GAAU,CAEjBZ,EAAO,KACL,KACA,QACA,qEAAqE,CACzE,CACAzO,EAASqP,EAAQZ,CAAM,EAEvBY,EAAO,UAAU,MAAQ,SAAgB5O,EAAK,CAG5C,QADIsC,EAAQ,EACHlC,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAAK,CACnC,IAAIgD,GAAMpD,EAAI,MAAMI,GAAK,GAAK,GAAOkC,EACjCyB,EAAKX,EAAK,SACdA,KAAQ,GAERpD,EAAI,MAAMI,GAAK2D,EACfzB,EAAQc,CACV,CACA,OAAId,IAAU,IACZtC,EAAI,MAAMA,EAAI,UAAYsC,GAErBtC,CACT,EAGAL,EAAG,OAAS,SAAgBsO,EAAM,CAEhC,GAAIF,EAAOE,GAAO,OAAOF,EAAOE,GAEhC,IAAIY,EACJ,GAAIZ,IAAS,OACXY,EAAQ,IAAIR,UACHJ,IAAS,OAClBY,EAAQ,IAAIH,UACHT,IAAS,OAClBY,EAAQ,IAAIF,UACHV,IAAS,SAClBY,EAAQ,IAAID,MAEZ,OAAM,IAAI,MAAM,iBAAmBX,CAAI,EAEzC,OAAAF,EAAOE,GAAQY,EAERA,CACT,EAKA,SAAShB,EAAK7C,EAAG,CACf,GAAI,OAAOA,GAAM,SAAU,CACzB,IAAI6D,EAAQlP,EAAG,OAAOqL,CAAC,EACvB,KAAK,EAAI6D,EAAM,EACf,KAAK,MAAQA,CACf,MACEzP,EAAO4L,EAAE,IAAI,CAAC,EAAG,gCAAgC,EACjD,KAAK,EAAIA,EACT,KAAK,MAAQ,IAEjB,CAEA6C,EAAI,UAAU,SAAW,SAAmBpK,EAAG,CAC7CrE,EAAOqE,EAAE,WAAa,EAAG,+BAA+B,EACxDrE,EAAOqE,EAAE,IAAK,iCAAiC,CACjD,EAEAoK,EAAI,UAAU,SAAW,SAAmBpK,EAAGrC,EAAG,CAChDhC,GAAQqE,EAAE,SAAWrC,EAAE,YAAc,EAAG,+BAA+B,EACvEhC,EAAOqE,EAAE,KAAOA,EAAE,MAAQrC,EAAE,IAC1B,iCAAiC,CACrC,EAEAyM,EAAI,UAAU,KAAO,SAAepK,EAAG,CACrC,OAAI,KAAK,MAAc,KAAK,MAAM,QAAQA,CAAC,EAAE,UAAU,IAAI,GAE3D5B,EAAK4B,EAAGA,EAAE,KAAK,KAAK,CAAC,EAAE,UAAU,IAAI,CAAC,EAC/BA,EACT,EAEAoK,EAAI,UAAU,IAAM,SAAcpK,EAAG,CACnC,OAAIA,EAAE,OAAO,EACJA,EAAE,MAAM,EAGV,KAAK,EAAE,IAAIA,CAAC,EAAE,UAAU,IAAI,CACrC,EAEAoK,EAAI,UAAU,IAAM,SAAcpK,EAAGrC,EAAG,CACtC,KAAK,SAASqC,EAAGrC,CAAC,EAElB,IAAI2B,EAAMU,EAAE,IAAIrC,CAAC,EACjB,OAAI2B,EAAI,IAAI,KAAK,CAAC,GAAK,GACrBA,EAAI,KAAK,KAAK,CAAC,EAEVA,EAAI,UAAU,IAAI,CAC3B,EAEA8K,EAAI,UAAU,KAAO,SAAepK,EAAGrC,EAAG,CACxC,KAAK,SAASqC,EAAGrC,CAAC,EAElB,IAAI2B,EAAMU,EAAE,KAAKrC,CAAC,EAClB,OAAI2B,EAAI,IAAI,KAAK,CAAC,GAAK,GACrBA,EAAI,KAAK,KAAK,CAAC,EAEVA,CACT,EAEA8K,EAAI,UAAU,IAAM,SAAcpK,EAAGrC,EAAG,CACtC,KAAK,SAASqC,EAAGrC,CAAC,EAElB,IAAI2B,EAAMU,EAAE,IAAIrC,CAAC,EACjB,OAAI2B,EAAI,KAAK,CAAC,EAAI,GAChBA,EAAI,KAAK,KAAK,CAAC,EAEVA,EAAI,UAAU,IAAI,CAC3B,EAEA8K,EAAI,UAAU,KAAO,SAAepK,EAAGrC,EAAG,CACxC,KAAK,SAASqC,EAAGrC,CAAC,EAElB,IAAI2B,EAAMU,EAAE,KAAKrC,CAAC,EAClB,OAAI2B,EAAI,KAAK,CAAC,EAAI,GAChBA,EAAI,KAAK,KAAK,CAAC,EAEVA,CACT,EAEA8K,EAAI,UAAU,IAAM,SAAcpK,EAAGzD,EAAK,CACxC,YAAK,SAASyD,CAAC,EACR,KAAK,KAAKA,EAAE,MAAMzD,CAAG,CAAC,CAC/B,EAEA6N,EAAI,UAAU,KAAO,SAAepK,EAAGrC,EAAG,CACxC,YAAK,SAASqC,EAAGrC,CAAC,EACX,KAAK,KAAKqC,EAAE,KAAKrC,CAAC,CAAC,CAC5B,EAEAyM,EAAI,UAAU,IAAM,SAAcpK,EAAGrC,EAAG,CACtC,YAAK,SAASqC,EAAGrC,CAAC,EACX,KAAK,KAAKqC,EAAE,IAAIrC,CAAC,CAAC,CAC3B,EAEAyM,EAAI,UAAU,KAAO,SAAepK,EAAG,CACrC,OAAO,KAAK,KAAKA,EAAGA,EAAE,MAAM,CAAC,CAC/B,EAEAoK,EAAI,UAAU,IAAM,SAAcpK,EAAG,CACnC,OAAO,KAAK,IAAIA,EAAGA,CAAC,CACtB,EAEAoK,EAAI,UAAU,KAAO,SAAepK,EAAG,CACrC,GAAIA,EAAE,OAAO,EAAG,OAAOA,EAAE,MAAM,EAE/B,IAAIqL,EAAO,KAAK,EAAE,MAAM,CAAC,EAIzB,GAHA1P,EAAO0P,EAAO,IAAM,CAAC,EAGjBA,IAAS,EAAG,CACd,IAAInN,EAAM,KAAK,EAAE,IAAI,IAAIhC,EAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EACxC,OAAO,KAAK,IAAI8D,EAAG9B,CAAG,CACxB,CAOA,QAFIiK,EAAI,KAAK,EAAE,KAAK,CAAC,EACjBxB,EAAI,EACD,CAACwB,EAAE,OAAO,GAAKA,EAAE,MAAM,CAAC,IAAM,GACnCxB,IACAwB,EAAE,OAAO,CAAC,EAEZxM,EAAO,CAACwM,EAAE,OAAO,CAAC,EAElB,IAAImD,EAAM,IAAIpP,EAAG,CAAC,EAAE,MAAM,IAAI,EAC1BqP,EAAOD,EAAI,OAAO,EAIlBE,EAAO,KAAK,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,EAC9BC,EAAI,KAAK,EAAE,UAAU,EAGzB,IAFAA,EAAI,IAAIvP,EAAG,EAAIuP,EAAIA,CAAC,EAAE,MAAM,IAAI,EAEzB,KAAK,IAAIA,EAAGD,CAAI,EAAE,IAAID,CAAI,IAAM,GACrCE,EAAE,QAAQF,CAAI,EAOhB,QAJIrO,EAAI,KAAK,IAAIuO,EAAGtD,CAAC,EACjB9K,EAAI,KAAK,IAAI2C,EAAGmI,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EACnCzI,EAAI,KAAK,IAAIM,EAAGmI,CAAC,EACjBZ,EAAIZ,EACDjH,EAAE,IAAI4L,CAAG,IAAM,GAAG,CAEvB,QADIb,EAAM/K,EACD/C,EAAI,EAAG8N,EAAI,IAAIa,CAAG,IAAM,EAAG3O,IAClC8N,EAAMA,EAAI,OAAO,EAEnB9O,EAAOgB,EAAI4K,CAAC,EACZ,IAAI5J,EAAI,KAAK,IAAIT,EAAG,IAAIhB,EAAG,CAAC,EAAE,OAAOqL,EAAI5K,EAAI,CAAC,CAAC,EAE/CU,EAAIA,EAAE,OAAOM,CAAC,EACdT,EAAIS,EAAE,OAAO,EACb+B,EAAIA,EAAE,OAAOxC,CAAC,EACdqK,EAAI5K,CACN,CAEA,OAAOU,CACT,EAEA+M,EAAI,UAAU,KAAO,SAAepK,EAAG,CACrC,IAAI0L,EAAM1L,EAAE,OAAO,KAAK,CAAC,EACzB,OAAI0L,EAAI,WAAa,GACnBA,EAAI,SAAW,EACR,KAAK,KAAKA,CAAG,EAAE,OAAO,GAEtB,KAAK,KAAKA,CAAG,CAExB,EAEAtB,EAAI,UAAU,IAAM,SAAcpK,EAAGzD,EAAK,CACxC,GAAIA,EAAI,OAAO,EAAG,OAAO,IAAIL,EAAG,CAAC,EAAE,MAAM,IAAI,EAC7C,GAAIK,EAAI,KAAK,CAAC,IAAM,EAAG,OAAOyD,EAAE,MAAM,EAEtC,IAAI2L,EAAa,EACbC,EAAM,IAAI,MAAM,GAAKD,CAAU,EACnCC,EAAI,GAAK,IAAI1P,EAAG,CAAC,EAAE,MAAM,IAAI,EAC7B0P,EAAI,GAAK5L,EACT,QAASrD,EAAI,EAAGA,EAAIiP,EAAI,OAAQjP,IAC9BiP,EAAIjP,GAAK,KAAK,IAAIiP,EAAIjP,EAAI,GAAIqD,CAAC,EAGjC,IAAIV,EAAMsM,EAAI,GACVC,EAAU,EACVC,EAAa,EACbpP,EAAQH,EAAI,UAAU,EAAI,GAK9B,IAJIG,IAAU,IACZA,EAAQ,IAGLC,EAAIJ,EAAI,OAAS,EAAGI,GAAK,EAAGA,IAAK,CAEpC,QADIsB,EAAO1B,EAAI,MAAMI,GACZC,EAAIF,EAAQ,EAAGE,GAAK,EAAGA,IAAK,CACnC,IAAIiD,EAAO5B,GAAQrB,EAAK,EAKxB,GAJI0C,IAAQsM,EAAI,KACdtM,EAAM,KAAK,IAAIA,CAAG,GAGhBO,IAAQ,GAAKgM,IAAY,EAAG,CAC9BC,EAAa,EACb,QACF,CAEAD,IAAY,EACZA,GAAWhM,EACXiM,IACI,EAAAA,IAAeH,IAAehP,IAAM,GAAKC,IAAM,MAEnD0C,EAAM,KAAK,IAAIA,EAAKsM,EAAIC,EAAQ,EAChCC,EAAa,EACbD,EAAU,EACZ,CACAnP,EAAQ,EACV,CAEA,OAAO4C,CACT,EAEA8K,EAAI,UAAU,UAAY,SAAoB7N,EAAK,CACjD,IAAIc,EAAId,EAAI,KAAK,KAAK,CAAC,EAEvB,OAAOc,IAAMd,EAAMc,EAAE,MAAM,EAAIA,CACjC,EAEA+M,EAAI,UAAU,YAAc,SAAsB7N,EAAK,CACrD,IAAI+C,EAAM/C,EAAI,MAAM,EACpB,OAAA+C,EAAI,IAAM,KACHA,CACT,EAMApD,EAAG,KAAO,SAAeK,EAAK,CAC5B,OAAO,IAAIwP,EAAKxP,CAAG,CACrB,EAEA,SAASwP,EAAMxE,EAAG,CAChB6C,EAAI,KAAK,KAAM7C,CAAC,EAEhB,KAAK,MAAQ,KAAK,EAAE,UAAU,EAC1B,KAAK,MAAQ,KAAO,IACtB,KAAK,OAAS,GAAM,KAAK,MAAQ,IAGnC,KAAK,EAAI,IAAIrL,EAAG,CAAC,EAAE,OAAO,KAAK,KAAK,EACpC,KAAK,GAAK,KAAK,KAAK,KAAK,EAAE,IAAI,CAAC,EAChC,KAAK,KAAO,KAAK,EAAE,OAAO,KAAK,CAAC,EAEhC,KAAK,KAAO,KAAK,KAAK,IAAI,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,EACrD,KAAK,KAAO,KAAK,KAAK,KAAK,KAAK,CAAC,EACjC,KAAK,KAAO,KAAK,EAAE,IAAI,KAAK,IAAI,CAClC,CACAJ,EAASiQ,EAAM3B,CAAG,EAElB2B,EAAK,UAAU,UAAY,SAAoBxP,EAAK,CAClD,OAAO,KAAK,KAAKA,EAAI,MAAM,KAAK,KAAK,CAAC,CACxC,EAEAwP,EAAK,UAAU,YAAc,SAAsBxP,EAAK,CACtD,IAAIc,EAAI,KAAK,KAAKd,EAAI,IAAI,KAAK,IAAI,CAAC,EACpC,OAAAc,EAAE,IAAM,KACDA,CACT,EAEA0O,EAAK,UAAU,KAAO,SAAe/L,EAAGrC,EAAG,CACzC,GAAIqC,EAAE,OAAO,GAAKrC,EAAE,OAAO,EACzB,OAAAqC,EAAE,MAAM,GAAK,EACbA,EAAE,OAAS,EACJA,EAGT,IAAIN,EAAIM,EAAE,KAAKrC,CAAC,EACZT,EAAIwC,EAAE,MAAM,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,EACpEsM,EAAItM,EAAE,KAAKxC,CAAC,EAAE,OAAO,KAAK,KAAK,EAC/BoC,EAAM0M,EAEV,OAAIA,EAAE,IAAI,KAAK,CAAC,GAAK,EACnB1M,EAAM0M,EAAE,KAAK,KAAK,CAAC,EACVA,EAAE,KAAK,CAAC,EAAI,IACrB1M,EAAM0M,EAAE,KAAK,KAAK,CAAC,GAGd1M,EAAI,UAAU,IAAI,CAC3B,EAEAyM,EAAK,UAAU,IAAM,SAAc/L,EAAGrC,EAAG,CACvC,GAAIqC,EAAE,OAAO,GAAKrC,EAAE,OAAO,EAAG,OAAO,IAAIzB,EAAG,CAAC,EAAE,UAAU,IAAI,EAE7D,IAAIwD,EAAIM,EAAE,IAAIrC,CAAC,EACXT,EAAIwC,EAAE,MAAM,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,EACpEsM,EAAItM,EAAE,KAAKxC,CAAC,EAAE,OAAO,KAAK,KAAK,EAC/BoC,EAAM0M,EACV,OAAIA,EAAE,IAAI,KAAK,CAAC,GAAK,EACnB1M,EAAM0M,EAAE,KAAK,KAAK,CAAC,EACVA,EAAE,KAAK,CAAC,EAAI,IACrB1M,EAAM0M,EAAE,KAAK,KAAK,CAAC,GAGd1M,EAAI,UAAU,IAAI,CAC3B,EAEAyM,EAAK,UAAU,KAAO,SAAe/L,EAAG,CAEtC,IAAIV,EAAM,KAAK,KAAKU,EAAE,OAAO,KAAK,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC,EACjD,OAAOV,EAAI,UAAU,IAAI,CAC3B,CACF,GAAG,OAAO5D,GAAW,KAAeA,GAAQD,EAAI,mGC19GnCwQ,GAAA,QAAU,iBCAvB,IAAAC,GAAAC,EAAAC,IAAA,0GAEA,IAAIC,GAAyB,GACzBC,GAAgB,GAEdC,GAA0C,CAAE,MAAO,EAAG,QAAW,EAAG,KAAM,EAAG,QAAS,EAAG,MAAO,EAAG,IAAK,CAAC,EAC3GC,GAAYD,GAAU,QAE1BE,GAAA,KAEIC,GAAwB,KAE5B,SAASC,IAAe,CACpB,GAAI,CACA,IAAMC,EAAyB,CAAA,EAa/B,GAVA,CAAC,MAAO,MAAO,OAAQ,MAAM,EAAE,QAAQ,SAACC,EAAI,CACxC,GAAI,CACA,GAAI,OAAO,UAAUA,CAAI,IAAM,OAC3B,MAAM,IAAI,MAAM,eAAe,OAErC,CACED,EAAQ,KAAKC,CAAI,EAEzB,CAAC,EAEGD,EAAQ,OACR,MAAM,IAAI,MAAM,WAAaA,EAAQ,KAAK,IAAI,CAAC,EAGnD,GAAI,OAAO,aAAa,GAAI,EAAE,UAAU,KAAK,IAAM,OAAO,aAAa,IAAM,GAAM,EAC/E,MAAM,IAAI,MAAM,uBAAuB,QAEtCE,EAAP,CACE,OAAOA,EAAM,QAGjB,OAAO,IACX,CAEA,IAAMC,GAAkBJ,GAAe,EAE3BK,IAAZ,SAAYA,EAAQ,CAChBA,EAAA,MAAA,QACAA,EAAA,KAAA,OACAA,EAAA,QAAA,UACAA,EAAA,MAAA,QACAA,EAAA,IAAA,KACJ,GANYA,GAAAZ,GAAA,WAAAA,GAAA,SAAQ,CAAA,EAAA,EASpB,IAAYa,IAAZ,SAAYA,EAAS,CAMjBA,EAAA,cAAA,gBAGAA,EAAA,gBAAA,kBAIAA,EAAA,sBAAA,wBAIAA,EAAA,cAAA,gBAGAA,EAAA,aAAA,eAGAA,EAAA,QAAA,UAMAA,EAAA,eAAA,iBAKAA,EAAA,cAAA,gBAQAA,EAAA,YAAA,cAKAA,EAAA,iBAAA,mBAKAA,EAAA,iBAAA,mBAKAA,EAAA,oBAAA,sBAcAA,EAAA,eAAA,iBAIAA,EAAA,mBAAA,qBAIAA,EAAA,cAAA,gBAIAA,EAAA,wBAAA,0BAIAA,EAAA,wBAAA,0BAQAA,EAAA,qBAAA,uBAQAA,EAAA,gBAAA,iBACJ,GAxGYA,GAAAb,GAAA,YAAAA,GAAA,UAAS,CAAA,EAAA,EA0GrB,IAAMc,GAAM,mBAEZC,GAAA,UAAA,CAOI,SAAAA,EAAYC,EAAe,CACvB,OAAO,eAAe,KAAM,UAAW,CACnC,WAAY,GACZ,MAAOA,EACP,SAAU,GACb,CACL,CAEA,OAAAD,EAAA,UAAA,KAAA,SAAKE,EAAoBC,EAAgB,CACrC,IAAMC,EAAQF,EAAS,YAAW,EAC9Bd,GAAUgB,IAAU,MACpB,KAAK,mBAAmB,yBAA0B,WAAYF,CAAQ,EAEtE,EAAAb,GAAYD,GAAUgB,KAC1B,QAAQ,IAAI,MAAM,QAASD,CAAI,CACnC,EAEAH,EAAA,UAAA,MAAA,UAAA,SAAMG,EAAA,CAAA,EAAAE,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAF,EAAAE,GAAA,UAAAA,GACF,KAAK,KAAKL,EAAO,OAAO,MAAOG,CAAI,CACvC,EAEAH,EAAA,UAAA,KAAA,UAAA,SAAKG,EAAA,CAAA,EAAAE,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAF,EAAAE,GAAA,UAAAA,GACD,KAAK,KAAKL,EAAO,OAAO,KAAMG,CAAI,CACtC,EAEAH,EAAA,UAAA,KAAA,UAAA,SAAKG,EAAA,CAAA,EAAAE,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAF,EAAAE,GAAA,UAAAA,GACD,KAAK,KAAKL,EAAO,OAAO,QAASG,CAAI,CACzC,EAEAH,EAAA,UAAA,UAAA,SAAUM,EAAiBC,EAAkBC,EAAY,CAErD,GAAIrB,GACA,OAAO,KAAK,UAAU,iBAAkBoB,EAAM,CAAA,CAAG,EAGhDA,IAAQA,EAAOP,EAAO,OAAO,eAC7BQ,IAAUA,EAAS,CAAA,GAExB,IAAMC,EAAgC,CAAA,EACtC,OAAO,KAAKD,CAAM,EAAE,QAAQ,SAACE,EAAG,CAC5B,IAAMC,EAAQH,EAAOE,GACrB,GAAI,CACA,GAAIC,aAAiB,WAAY,CAE7B,QADIC,EAAM,GACDC,EAAI,EAAGA,EAAIF,EAAM,OAAQE,IAChCD,GAAOb,GAAIY,EAAME,IAAM,GACvBD,GAAOb,GAAIY,EAAME,GAAK,IAExBJ,EAAe,KAAKC,EAAM,iBAAmBE,EAAM,GAAG,OAEtDH,EAAe,KAAKC,EAAM,IAAM,KAAK,UAAUC,CAAK,CAAC,OAE3D,CACEF,EAAe,KAAKC,EAAM,IAAM,KAAK,UAAUF,EAAOE,GAAK,SAAQ,CAAE,CAAC,EAE9E,CAAC,EACDD,EAAe,KAAK,QAASF,CAAO,EACpCE,EAAe,KAAK,WAAY,KAAK,OAAU,EAE/C,IAAMK,EAASR,EAEXS,EAAM,GAEV,OAAQR,EAAM,CACV,KAAKT,GAAU,cAAe,CAC1BiB,EAAM,gBACN,IAAMC,EAAQV,EAEd,OAAQU,EAAO,CACX,IAAK,WAAY,IAAK,YAAa,IAAK,mBACpCD,GAAO,IAAMC,EACb,MACJ,IAAK,iBAAkB,IAAK,iBACxBD,GAAO,eACP,MACJ,IAAK,yBACDA,GAAO,kBACP,MAER,MAEJ,KAAKjB,GAAU,eACf,KAAKA,GAAU,mBACf,KAAKA,GAAU,YACf,KAAKA,GAAU,cACf,KAAKA,GAAU,wBACf,KAAKA,GAAU,qBACf,KAAKA,GAAU,wBACXiB,EAAMR,EACN,MAGJQ,IACAT,GAAW,8CAAiDS,EAAM,MAGlEN,EAAe,SACfH,GAAW,KAAOG,EAAe,KAAK,IAAI,EAAI,KAIlD,IAAMd,EAAa,IAAI,MAAMW,CAAO,EACpC,OAAAX,EAAM,OAASmB,EACfnB,EAAM,KAAOY,EAEb,OAAO,KAAKC,CAAM,EAAE,QAAQ,SAASE,EAAG,CACpCf,EAAMe,GAAOF,EAAOE,EACxB,CAAC,EAEMf,CACX,EAEAK,EAAA,UAAA,WAAA,SAAWM,EAAiBC,EAAkBC,EAAY,CACtD,MAAM,KAAK,UAAUF,EAASC,EAAMC,CAAM,CAC9C,EAEAR,EAAA,UAAA,mBAAA,SAAmBM,EAAiBW,EAAcN,EAAU,CACxD,OAAO,KAAK,WAAWL,EAASN,EAAO,OAAO,iBAAkB,CAC5D,SAAUiB,EACV,MAAON,EACV,CACL,EAEAX,EAAA,UAAA,OAAA,SAAOkB,EAAgBZ,EAAiBC,EAAkBC,EAAY,CAC5DU,GACN,KAAK,WAAWZ,EAASC,EAAMC,CAAM,CACzC,EAEAR,EAAA,UAAA,eAAA,SAAekB,EAAgBZ,EAAiBW,EAAcN,EAAU,CAC9DO,GACN,KAAK,mBAAmBZ,EAASW,EAAMN,CAAK,CAChD,EAEAX,EAAA,UAAA,eAAA,SAAeM,EAAgB,CACvBA,GAAW,OAAQA,EAAU,+CAC7BV,IACA,KAAK,WAAW,8CAA+CI,EAAO,OAAO,sBAAuB,CAChG,UAAW,6BAA8B,KAAMJ,GAClD,CAET,EAEAI,EAAA,UAAA,gBAAA,SAAgBW,EAAeL,EAAgB,CACvC,OAAOK,GAAW,WAElBL,GAAW,OAAQA,EAAU,mBAE7BK,EAAQ,GAAKA,GAAS,mBACtB,KAAK,WAAWL,EAASN,EAAO,OAAO,cAAe,CAClD,UAAW,mBACX,MAAO,oBACP,MAAOW,EACV,EAGDA,EAAQ,GACR,KAAK,WAAWL,EAASN,EAAO,OAAO,cAAe,CAClD,UAAW,mBACX,MAAO,cACP,MAAOW,EACV,EAET,EAEAX,EAAA,UAAA,mBAAA,SAAmBmB,EAAeC,EAAuBd,EAAgB,CACjEA,EACAA,EAAU,KAAOA,EAEjBA,EAAU,GAGVa,EAAQC,GACR,KAAK,WAAW,mBAAqBd,EAASN,EAAO,OAAO,iBAAkB,CAC1E,MAAOmB,EACP,cAAeC,EAClB,EAGDD,EAAQC,GACR,KAAK,WAAW,qBAAuBd,EAASN,EAAO,OAAO,oBAAqB,CAC/E,MAAOmB,EACP,cAAeC,EAClB,CAET,EAEApB,EAAA,UAAA,SAAA,SAASqB,EAAaC,EAAS,EACvBD,IAAW,QAAUA,GAAU,OAC/B,KAAK,WAAW,cAAerB,EAAO,OAAO,YAAa,CAAE,KAAMsB,EAAK,IAAI,CAAE,CAErF,EAEAtB,EAAA,UAAA,cAAA,SAAcqB,EAAaC,EAAS,CAC5BD,IAAWC,EACX,KAAK,WACD,qCAAuC,KAAK,UAAUA,EAAK,IAAI,EAAI,6BACnEtB,EAAO,OAAO,sBACd,CAAE,KAAMqB,EAAO,KAAM,UAAW,KAAK,CAAE,GAEpCA,IAAW,QAAUA,GAAU,OACtC,KAAK,WAAW,cAAerB,EAAO,OAAO,YAAa,CAAE,KAAMsB,EAAK,IAAI,CAAE,CAErF,EAEOtB,EAAA,aAAP,UAAA,CACI,OAAKT,KAAiBA,GAAgB,IAAIS,EAAOV,GAAA,OAAO,GACjDC,EACX,EAEOS,EAAA,cAAP,SAAqBuB,EAAqBC,EAAmB,CAOzD,GANI,CAACD,GAAcC,GACf,KAAK,aAAY,EAAG,WAAW,wCAAyCxB,EAAO,OAAO,sBAAuB,CACzG,UAAW,gBACd,EAGDd,GAAwB,CACxB,GAAI,CAACqC,EAAc,OACnB,KAAK,aAAY,EAAG,WAAW,6BAA8BvB,EAAO,OAAO,sBAAuB,CAC9F,UAAW,gBACd,EAGLb,GAAgB,CAAC,CAACoC,EAClBrC,GAAyB,CAAC,CAACsC,CAC/B,EAEOxB,EAAA,YAAP,SAAmBE,EAAkB,CACjC,IAAME,EAAQhB,GAAUc,EAAS,YAAW,GAC5C,GAAIE,GAAS,KAAM,CACfJ,EAAO,aAAY,EAAG,KAAK,uBAAyBE,CAAQ,EAC5D,OAEJb,GAAYe,CAChB,EAEOJ,EAAA,KAAP,SAAYC,EAAe,CACvB,OAAO,IAAID,EAAOC,CAAO,CAC7B,EAlPOD,EAAA,OAASF,GAETE,EAAA,OAASH,GAiPpBG,GAtPA,EAAaf,GAAA,OAAAe,oGChKAyB,GAAA,QAAU,gBCAvB,IAAAC,GAAAC,EAAAC,IAAA,sSAEA,IAAAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAoDjC,SAASE,GAAUC,EAAU,CACzB,MAAO,CAAC,CAAEA,EAAM,WACpB,CAEA,SAASC,GAASC,EAAiB,CAC/B,OAAIA,EAAM,QAEVA,EAAM,MAAQ,UAAA,CACV,IAAMC,EAAO,MAAM,UAAU,MAAM,KAAK,SAAS,EACjD,OAAOF,GAAS,IAAI,WAAW,MAAM,UAAU,MAAM,MAAMC,EAAOC,CAAI,CAAC,CAAC,CAC5E,GAEOD,CACX,CAEA,SAAgBE,GAAYJ,EAAU,CAClC,OAASK,GAAYL,CAAK,GAAK,EAAEA,EAAM,OAAS,IAAOM,GAAQN,CAAK,CACxE,CAFAL,GAAA,YAAAS,GAIA,SAASG,GAAUP,EAAa,CAC5B,OAAQ,OAAOA,GAAW,UAAYA,GAASA,GAAUA,EAAQ,IAAO,CAC5E,CAEA,SAAgBM,GAAQN,EAAU,CAC9B,GAAIA,GAAS,KAAQ,MAAO,GAE5B,GAAIA,EAAM,cAAgB,WAAc,MAAO,GAE/C,GADI,OAAOA,GAAW,UAClB,CAACO,GAAUP,EAAM,MAAM,GAAKA,EAAM,OAAS,EAAK,MAAO,GAE3D,QAASQ,EAAI,EAAGA,EAAIR,EAAM,OAAQQ,IAAK,CACnC,IAAMC,EAAIT,EAAMQ,GAChB,GAAI,CAACD,GAAUE,CAAC,GAAKA,EAAI,GAAKA,GAAK,IAAO,MAAO,GAErD,MAAO,EACX,CAZAd,GAAA,QAAAW,GAeA,SAAgBI,GAASV,EAAqCW,EAAqB,CAG/E,GAFKA,IAAWA,EAAU,CAAA,GAEtB,OAAOX,GAAW,SAAU,CAC5BF,GAAO,gBAAgBE,EAAO,wBAAwB,EAGtD,QADMY,EAAS,CAAA,EACRZ,GACHY,EAAO,QAAQZ,EAAQ,GAAI,EAC3BA,EAAQ,SAAS,OAAOA,EAAQ,GAAG,CAAC,EAExC,OAAIY,EAAO,SAAW,GAAKA,EAAO,KAAK,CAAC,EAEjCX,GAAS,IAAI,WAAWW,CAAM,CAAC,EAS1C,GANID,EAAQ,oBAAsB,OAAOX,GAAW,UAAYA,EAAM,UAAU,EAAG,CAAC,IAAM,OACrFA,EAAQ,KAAOA,GAGhBD,GAAUC,CAAK,IAAKA,EAAQA,EAAM,YAAW,GAE7CK,GAAYL,CAAK,EAAG,CACpB,IAAIa,EAAeb,EAAO,UAAU,CAAC,EACjCa,EAAI,OAAS,IACTF,EAAQ,SAAW,OACnBE,EAAM,IAAMA,EACLF,EAAQ,SAAW,QAC1BE,GAAO,IAEPf,GAAO,mBAAmB,yBAA0B,QAASE,CAAK,GAK1E,QADMY,EAAS,CAAA,EACN,EAAI,EAAG,EAAIC,EAAI,OAAQ,GAAK,EACjCD,EAAO,KAAK,SAASC,EAAI,UAAU,EAAG,EAAI,CAAC,EAAG,EAAE,CAAC,EAGrD,OAAOZ,GAAS,IAAI,WAAWW,CAAM,CAAC,EAG1C,OAAIN,GAAQN,CAAK,EACNC,GAAS,IAAI,WAAWD,CAAK,CAAC,EAGlCF,GAAO,mBAAmB,yBAA0B,QAASE,CAAK,CAC7E,CA/CAL,GAAA,SAAAe,GAiDA,SAAgBI,GAAOC,EAA+B,CAClD,IAAMC,EAAUD,EAAM,IAAI,SAAAE,EAAI,CAAI,OAAAP,GAASO,CAAI,CAAb,CAAc,EAC1CC,EAASF,EAAQ,OAAO,SAACG,EAAOF,EAAI,CAAK,OAACE,EAAQF,EAAK,MAAd,EAAuB,CAAC,EAEjEL,EAAS,IAAI,WAAWM,CAAM,EAEpC,OAAAF,EAAQ,OAAO,SAACI,EAAQC,EAAM,CAC1B,OAAAT,EAAO,IAAIS,EAAQD,CAAM,EAClBA,EAASC,EAAO,MAC3B,EAAG,CAAC,EAEGpB,GAASW,CAAM,CAC1B,CAZAjB,GAAA,OAAAmB,GAcA,SAAgBQ,GAAWtB,EAAgB,CACvC,IAAIY,EAAqBF,GAASV,CAAK,EAEvC,GAAIY,EAAO,SAAW,EAAK,OAAOA,EAIlC,QADIW,EAAQ,EACLA,EAAQX,EAAO,QAAUA,EAAOW,KAAW,GAAKA,IAGvD,OAAIA,IACAX,EAASA,EAAO,MAAMW,CAAK,GAGxBX,CACX,CAfAjB,GAAA,WAAA2B,GAiBA,SAAgBE,GAAQxB,EAAkBkB,EAAc,CACpDlB,EAAQU,GAASV,CAAK,EAElBA,EAAM,OAASkB,GACfpB,GAAO,mBAAmB,qBAAsB,QAAS,UAAU,EAAE,EAGzE,IAAMc,EAAS,IAAI,WAAWM,CAAM,EACpC,OAAAN,EAAO,IAAIZ,EAAOkB,EAASlB,EAAM,MAAM,EAChCC,GAASW,CAAM,CAC1B,CAVAjB,GAAA,QAAA6B,GAaA,SAAgBnB,GAAYL,EAAYkB,EAAe,CAInD,MAHI,SAAOlB,GAAW,UAAY,CAACA,EAAM,MAAM,kBAAkB,GAG7DkB,GAAUlB,EAAM,SAAW,EAAI,EAAIkB,EAE3C,CANAvB,GAAA,YAAAU,GAQA,IAAMoB,GAAwB,mBAE9B,SAAgBC,GAAQ1B,EAA8CW,EAAqB,CAGvF,GAFKA,IAAWA,EAAU,CAAA,GAEtB,OAAOX,GAAW,SAAU,CAC5BF,GAAO,gBAAgBE,EAAO,uBAAuB,EAGrD,QADIa,EAAM,GACHb,GACHa,EAAMY,GAAczB,EAAQ,IAAOa,EACnCb,EAAQ,KAAK,MAAMA,EAAQ,EAAE,EAGjC,OAAIa,EAAI,QACAA,EAAI,OAAS,IAAKA,EAAM,IAAMA,GAC3B,KAAOA,GAGX,OAGX,GAAI,OAAOb,GAAW,SAElB,OADAA,EAAQA,EAAM,SAAS,EAAE,EACrBA,EAAM,OAAS,EAAa,MAAQA,EACjC,KAAOA,EAOlB,GAJIW,EAAQ,oBAAsB,OAAOX,GAAW,UAAYA,EAAM,UAAU,EAAG,CAAC,IAAM,OACrFA,EAAQ,KAAOA,GAGhBD,GAAUC,CAAK,EAAK,OAAOA,EAAM,YAAW,EAEhD,GAAIK,GAAYL,CAAK,EACjB,OAAaA,EAAO,OAAS,IACrBW,EAAQ,SAAW,OACnBX,EAAQ,MAAiBA,EAAO,UAAU,CAAC,EACpCW,EAAQ,SAAW,QAC1BX,GAAS,IAETF,GAAO,mBAAmB,yBAA0B,QAASE,CAAK,GAG1DA,EAAO,YAAW,EAGtC,GAAIM,GAAQN,CAAK,EAAG,CAEhB,QADIY,EAAS,KACJ,EAAI,EAAG,EAAIZ,EAAM,OAAQ,IAAK,CAClC,IAAIS,EAAIT,EAAM,GACdY,GAAUa,IAAehB,EAAI,MAAS,GAAKgB,GAAchB,EAAI,IAElE,OAAOG,EAGX,OAAOd,GAAO,mBAAmB,wBAAyB,QAASE,CAAK,CAC5E,CAvDAL,GAAA,QAAA+B,GAiEA,SAAgBC,GAAcC,EAAe,CACzC,GAAI,OAAOA,GAAU,SACjBA,EAAOF,GAAQE,CAAI,UACZ,CAACvB,GAAYuB,CAAI,GAAMA,EAAK,OAAS,EAC5C,OAAO,KAGX,OAAQA,EAAK,OAAS,GAAK,CAC/B,CARAjC,GAAA,cAAAgC,GAUA,SAAgBE,GAAaD,EAAiBR,EAAgBU,EAAkB,CAS5E,OARI,OAAOF,GAAU,SACjBA,EAAOF,GAAQE,CAAI,GACZ,CAACvB,GAAYuB,CAAI,GAAMA,EAAK,OAAS,IAC5C9B,GAAO,mBAAmB,kBAAmB,QAAS8B,CAAI,EAG9DR,EAAS,EAAI,EAAIA,EAEbU,GAAa,KACN,KAAOF,EAAK,UAAUR,EAAQ,EAAI,EAAIU,CAAS,EAGnD,KAAOF,EAAK,UAAUR,CAAM,CACvC,CAdAzB,GAAA,aAAAkC,GAgBA,SAAgBE,GAAUhB,EAA+B,CACrD,IAAIH,EAAS,KACb,OAAAG,EAAM,QAAQ,SAACE,EAAI,CACfL,GAAUc,GAAQT,CAAI,EAAE,UAAU,CAAC,CACvC,CAAC,EACML,CACX,CANAjB,GAAA,UAAAoC,GAQA,SAAgBC,GAAShC,EAA4C,CACjE,IAAMiC,EAAUC,GAAcR,GAAQ1B,EAAO,CAAE,OAAQ,MAAM,CAAE,CAAC,EAChE,OAAIiC,IAAY,KAAe,MACxBA,CACX,CAJAtC,GAAA,SAAAqC,GAMA,SAAgBE,GAAclC,EAAgB,CACtC,OAAOA,GAAW,WAAYA,EAAQ0B,GAAQ1B,CAAK,GAElDK,GAAYL,CAAK,GAClBF,GAAO,mBAAmB,qBAAsB,QAASE,CAAK,EAElEA,EAAQA,EAAM,UAAU,CAAC,EAEzB,QADIoB,EAAS,EACNA,EAASpB,EAAM,QAAUA,EAAMoB,KAAY,KAAOA,IACzD,MAAO,KAAOpB,EAAM,UAAUoB,CAAM,CACxC,CAVAzB,GAAA,cAAAuC,GAYA,SAAgBC,GAAWnC,EAAkBkB,EAAc,CAWvD,IAVI,OAAOlB,GAAW,SAClBA,EAAQ0B,GAAQ1B,CAAK,EACbK,GAAYL,CAAK,GACzBF,GAAO,mBAAmB,qBAAsB,QAASE,CAAK,EAG9DA,EAAM,OAAS,EAAIkB,EAAS,GAC5BpB,GAAO,mBAAmB,qBAAsB,QAAS,UAAU,EAAE,EAGlEE,EAAM,OAAS,EAAIkB,EAAS,GAC/BlB,EAAQ,MAAQA,EAAM,UAAU,CAAC,EAGrC,OAAOA,CACX,CAhBAL,GAAA,WAAAwC,GAkBA,SAAgBC,GAAeC,EAAwB,CAEnD,IAAMzB,EAAS,CACX,EAAG,KACH,EAAG,KACH,IAAK,KACL,cAAe,EACf,EAAG,EACH,YAAa,KACb,QAAS,MAGb,GAAIR,GAAYiC,CAAS,EAAG,CACxB,IAAIC,EAAoB5B,GAAS2B,CAAS,EAGtCC,EAAM,SAAW,IAEjB1B,EAAO,EAAI,IAAM0B,EAAM,KAAO,GAC9BA,EAAM,KAAO,IAEb1B,EAAO,EAAIc,GAAQY,EAAM,MAAM,EAAG,EAAE,CAAC,EACrC1B,EAAO,EAAIc,GAAQY,EAAM,MAAM,GAAI,EAAE,CAAC,GAE/BA,EAAM,SAAW,IACxB1B,EAAO,EAAIc,GAAQY,EAAM,MAAM,EAAG,EAAE,CAAC,EACrC1B,EAAO,EAAIc,GAAQY,EAAM,MAAM,GAAI,EAAE,CAAC,EACtC1B,EAAO,EAAI0B,EAAM,KAGjBxC,GAAO,mBAAmB,2BAA4B,YAAauC,CAAS,EAK5EzB,EAAO,EAAI,KACPA,EAAO,IAAM,GAAKA,EAAO,IAAM,EAC/BA,EAAO,GAAK,GAEZd,GAAO,mBAAmB,2BAA4B,YAAauC,CAAS,GAKpFzB,EAAO,cAAgB,EAAKA,EAAO,EAAI,EAGnCA,EAAO,gBAAiB0B,EAAM,KAAO,KACzC1B,EAAO,IAAMc,GAAQY,EAAM,MAAM,GAAI,EAAE,CAAC,MAErC,CASH,GARA1B,EAAO,EAAIyB,EAAU,EACrBzB,EAAO,EAAIyB,EAAU,EACrBzB,EAAO,EAAIyB,EAAU,EACrBzB,EAAO,cAAgByB,EAAU,cACjCzB,EAAO,IAAMyB,EAAU,IAInBzB,EAAO,KAAO,KAAM,CACpB,IAAM2B,EAAKf,GAAQd,GAASE,EAAO,GAAG,EAAG,EAAE,EAC3CA,EAAO,IAAMc,GAAQa,CAAE,EAGvB,IAAMC,EAAkBD,EAAG,IAAM,IAAO,EAAG,EACvC3B,EAAO,eAAiB,KACxBA,EAAO,cAAgB4B,EAChB5B,EAAO,gBAAkB4B,GAChC1C,GAAO,mBAAmB,uCAAwC,YAAauC,CAAS,EAI5FE,EAAG,IAAM,IACT,IAAME,EAAIf,GAAQa,CAAE,EAChB3B,EAAO,GAAK,KACZA,EAAO,EAAI6B,EACJ7B,EAAO,IAAM6B,GACpB3C,GAAO,mBAAmB,2BAA4B,YAAauC,CAAS,EAKpF,GAAIzB,EAAO,eAAiB,KACpBA,EAAO,GAAK,KACZd,GAAO,mBAAmB,wCAAyC,YAAauC,CAAS,EAClFzB,EAAO,IAAM,GAAKA,EAAO,IAAM,EACtCA,EAAO,cAAgBA,EAAO,EAE9BA,EAAO,cAAgB,EAAKA,EAAO,EAAI,UAGvCA,EAAO,GAAK,KACZA,EAAO,EAAI,GAAKA,EAAO,kBACpB,CACH,IAAM8B,EAAS9B,EAAO,IAAM,GAAKA,EAAO,IAAM,EAAKA,EAAO,EAAI,EAAKA,EAAO,EAAI,EAC1EA,EAAO,gBAAkB8B,GACzB5C,GAAO,mBAAmB,qCAAsC,YAAauC,CAAS,EAK9FzB,EAAO,GAAK,MAAQ,CAACP,GAAYO,EAAO,CAAC,EACzCd,GAAO,mBAAmB,iCAAkC,YAAauC,CAAS,EAElFzB,EAAO,EAAIuB,GAAWvB,EAAO,EAAG,EAAE,EAGlCA,EAAO,GAAK,MAAQ,CAACP,GAAYO,EAAO,CAAC,EACzCd,GAAO,mBAAmB,iCAAkC,YAAauC,CAAS,EAElFzB,EAAO,EAAIuB,GAAWvB,EAAO,EAAG,EAAE,EAGtC,IAAM+B,EAAKjC,GAASE,EAAO,CAAC,EACxB+B,EAAG,IAAM,KACT7C,GAAO,mBAAmB,2BAA4B,YAAauC,CAAS,EAE5EzB,EAAO,gBAAiB+B,EAAG,IAAM,KACrC,IAAMC,EAAMlB,GAAQiB,CAAE,EAElB/B,EAAO,MACFP,GAAYO,EAAO,GAAG,GACvBd,GAAO,mBAAmB,wBAAyB,YAAauC,CAAS,EAE7EzB,EAAO,IAAMuB,GAAWvB,EAAO,IAAK,EAAE,GAItCA,EAAO,KAAO,KACdA,EAAO,IAAMgC,EACNhC,EAAO,MAAQgC,GACtB9C,GAAO,mBAAmB,iCAAkC,YAAauC,CAAS,EAI1F,OAAAzB,EAAO,YAAcA,EAAO,IAC5BA,EAAO,QAAUA,EAAO,EAAIA,EAAO,YAAY,UAAU,CAAC,EAEnDA,CACX,CA3IAjB,GAAA,eAAAyC,GA6IA,SAAgBS,GAAcR,EAAwB,CAClD,OAAAA,EAAYD,GAAeC,CAAS,EAE7BX,GAAQZ,GAAO,CACjBuB,EAAU,EACVA,EAAU,EACTA,EAAU,cAAgB,OAAQ,OACvC,CAAC,CACN,CARA1C,GAAA,cAAAkD,oGCzdaC,GAAA,QAAU,oBCAvB,IAAAC,GAAAC,EAAAC,IAAA,qNAUA,IAAAC,GAAAC,GAAA,IAAA,EACOC,GAAKF,GAAA,QAAI,GAEhBG,GAAA,KAEAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAE3BE,GAAoB,CAAA,EAEpBC,GAAW,iBAKjB,SAAgBC,GAAeC,EAAU,CACrC,OAAQA,GAAS,OACbC,GAAU,YAAYD,CAAK,GAC1B,OAAOA,GAAW,UAAaA,EAAQ,IAAO,GAC9C,OAAOA,GAAW,UAAY,CAAC,CAACA,EAAM,MAAM,YAAY,IA9BjE,EA+BQP,GAAA,aAAYO,CAAK,GAChB,OAAOA,GAAW,WAhC3B,EAiCQP,GAAA,SAAQO,CAAK,EAErB,CATAX,GAAA,eAAAU,GAYA,IAAIG,GAAuB,GAE3BD,GAAA,UAAA,CAII,SAAAA,EAAYE,EAAuBC,EAAW,CACtCD,IAAqBN,IACrBD,GAAO,WAAW,uDAAwDF,GAAA,OAAO,OAAO,sBAAuB,CAC3G,UAAW,kBACd,EAGL,KAAK,KAAOU,EACZ,KAAK,aAAe,GAEpB,OAAO,OAAO,IAAI,CACtB,CAEA,OAAAH,EAAA,UAAA,SAAA,SAASD,EAAa,CAClB,OAAOK,GAAYC,GAAK,IAAI,EAAE,SAASN,CAAK,CAAC,CACjD,EAEAC,EAAA,UAAA,OAAA,SAAOD,EAAa,CAChB,OAAOK,GAAYC,GAAK,IAAI,EAAE,OAAON,CAAK,CAAC,CAC/C,EAEAC,EAAA,UAAA,IAAA,UAAA,CACI,OAAI,KAAK,KAAK,KAAO,IACVA,EAAU,KAAK,KAAK,KAAK,UAAU,CAAC,CAAC,EAEzC,IACX,EAEAA,EAAA,UAAA,IAAA,SAAIM,EAAmB,CACnB,OAAOF,GAAYC,GAAK,IAAI,EAAE,IAAIA,GAAKC,CAAK,CAAC,CAAC,CAClD,EAEAN,EAAA,UAAA,IAAA,SAAIM,EAAmB,CACnB,OAAOF,GAAYC,GAAK,IAAI,EAAE,IAAIA,GAAKC,CAAK,CAAC,CAAC,CAClD,EAEAN,EAAA,UAAA,IAAA,SAAIM,EAAmB,CACnB,IAAMC,EAAIP,EAAU,KAAKM,CAAK,EAC9B,OAAIC,EAAE,OAAM,GACRC,GAAW,mBAAoB,KAAK,EAEjCJ,GAAYC,GAAK,IAAI,EAAE,IAAIA,GAAKC,CAAK,CAAC,CAAC,CAClD,EAEAN,EAAA,UAAA,IAAA,SAAIM,EAAmB,CACnB,OAAOF,GAAYC,GAAK,IAAI,EAAE,IAAIA,GAAKC,CAAK,CAAC,CAAC,CAClD,EAEAN,EAAA,UAAA,IAAA,SAAIM,EAAmB,CACnB,IAAMP,EAAQM,GAAKC,CAAK,EACxB,OAAIP,EAAM,MAAK,GACXS,GAAW,mBAAoB,KAAK,EAEjCJ,GAAYC,GAAK,IAAI,EAAE,KAAKN,CAAK,CAAC,CAC7C,EAEAC,EAAA,UAAA,IAAA,SAAIM,EAAmB,CACnB,IAAMP,EAAQM,GAAKC,CAAK,EACxB,OAAIP,EAAM,MAAK,GACXS,GAAW,iBAAkB,KAAK,EAE/BJ,GAAYC,GAAK,IAAI,EAAE,IAAIN,CAAK,CAAC,CAC5C,EAEAC,EAAA,UAAA,IAAA,SAAIM,EAAmB,CACnB,IAAMP,EAAQM,GAAKC,CAAK,EACxB,OAAI,KAAK,WAAU,GAAMP,EAAM,MAAK,IAChCS,GAAW,yBAA0B,KAAK,EAEvCJ,GAAYC,GAAK,IAAI,EAAE,IAAIN,CAAK,CAAC,CAC5C,EAEAC,EAAA,UAAA,GAAA,SAAGM,EAAmB,CAClB,IAAMP,EAAQM,GAAKC,CAAK,EACxB,OAAI,KAAK,WAAU,GAAMP,EAAM,MAAK,IAChCS,GAAW,yBAA0B,IAAI,EAEtCJ,GAAYC,GAAK,IAAI,EAAE,GAAGN,CAAK,CAAC,CAC3C,EAEAC,EAAA,UAAA,IAAA,SAAIM,EAAmB,CACnB,IAAMP,EAAQM,GAAKC,CAAK,EACxB,OAAI,KAAK,WAAU,GAAMP,EAAM,MAAK,IAChCS,GAAW,yBAA0B,KAAK,EAEvCJ,GAAYC,GAAK,IAAI,EAAE,IAAIN,CAAK,CAAC,CAC5C,EAEAC,EAAA,UAAA,KAAA,SAAKD,EAAa,CACd,OAAI,KAAK,WAAU,GAAMA,EAAQ,IAC7BS,GAAW,iBAAkB,MAAM,EAEhCJ,GAAYC,GAAK,IAAI,EAAE,MAAMN,CAAK,CAAC,CAC9C,EAEAC,EAAA,UAAA,IAAA,SAAID,EAAa,CACb,OAAI,KAAK,WAAU,GAAMA,EAAQ,IAC7BS,GAAW,iBAAkB,KAAK,EAE/BJ,GAAYC,GAAK,IAAI,EAAE,KAAKN,CAAK,CAAC,CAC7C,EAEAC,EAAA,UAAA,IAAA,SAAID,EAAa,CACb,OAAI,KAAK,WAAU,GAAMA,EAAQ,IAC7BS,GAAW,iBAAkB,KAAK,EAE/BJ,GAAYC,GAAK,IAAI,EAAE,KAAKN,CAAK,CAAC,CAC7C,EAEAC,EAAA,UAAA,GAAA,SAAGM,EAAmB,CAClB,OAAOD,GAAK,IAAI,EAAE,GAAGA,GAAKC,CAAK,CAAC,CACpC,EAEAN,EAAA,UAAA,GAAA,SAAGM,EAAmB,CAClB,OAAOD,GAAK,IAAI,EAAE,GAAGA,GAAKC,CAAK,CAAC,CACpC,EAEAN,EAAA,UAAA,IAAA,SAAIM,EAAmB,CACnB,OAAOD,GAAK,IAAI,EAAE,IAAIA,GAAKC,CAAK,CAAC,CACrC,EAEAN,EAAA,UAAA,GAAA,SAAGM,EAAmB,CAClB,OAAOD,GAAK,IAAI,EAAE,GAAGA,GAAKC,CAAK,CAAC,CACrC,EAECN,EAAA,UAAA,IAAA,SAAIM,EAAmB,CACnB,OAAOD,GAAK,IAAI,EAAE,IAAIA,GAAKC,CAAK,CAAC,CACrC,EAEAN,EAAA,UAAA,WAAA,UAAA,CACI,OAAQ,KAAK,KAAK,KAAO,GAC7B,EAEAA,EAAA,UAAA,OAAA,UAAA,CACI,OAAOK,GAAK,IAAI,EAAE,OAAM,CAC5B,EAEAL,EAAA,UAAA,SAAA,UAAA,CACI,GAAI,CACA,OAAOK,GAAK,IAAI,EAAE,SAAQ,OAC5B,CACEG,GAAW,WAAY,WAAY,KAAK,SAAQ,CAAE,EAEtD,OAAO,IACX,EAEAR,EAAA,UAAA,SAAA,UAAA,CACI,GAAI,CACA,OAAO,OAAO,KAAK,SAAQ,CAAE,OAC/B,CAAU,CAEZ,OAAOL,GAAO,WAAW,wCAAyCF,GAAA,OAAO,OAAO,sBAAuB,CACnG,MAAO,KAAK,SAAQ,EACvB,CACL,EAEAO,EAAA,UAAA,SAAA,UAAA,CAEI,OAAI,UAAU,OAAS,IACf,UAAU,KAAO,GACZC,KACDA,GAAuB,GACvBN,GAAO,KAAK,uEAAuE,GAEhF,UAAU,KAAO,GACxBA,GAAO,WAAW,iFAAkFF,GAAA,OAAO,OAAO,oBAAqB,CAAA,CAAG,EAE1IE,GAAO,WAAW,gDAAiDF,GAAA,OAAO,OAAO,oBAAqB,CAAA,CAAG,GAG1GY,GAAK,IAAI,EAAE,SAAS,EAAE,CACjC,EAEAL,EAAA,UAAA,YAAA,UAAA,CACI,OAAO,KAAK,IAChB,EAEAA,EAAA,UAAA,OAAA,SAAOS,EAAY,CACf,MAAO,CAAE,KAAM,YAAa,IAAK,KAAK,YAAW,CAAE,CACvD,EAEOT,EAAA,KAAP,SAAYD,EAAU,CAClB,GAAIA,aAAiBC,EAAa,OAAOD,EAEzC,GAAI,OAAOA,GAAW,SAClB,OAAIA,EAAM,MAAM,kBAAkB,EACvB,IAAIC,EAAUJ,GAAmBc,GAAMX,CAAK,CAAC,EAGpDA,EAAM,MAAM,YAAY,EACjB,IAAIC,EAAUJ,GAAmBc,GAAM,IAAInB,GAAGQ,CAAK,CAAC,CAAC,EAGzDJ,GAAO,mBAAmB,2BAA4B,QAASI,CAAK,EAG/E,GAAI,OAAOA,GAAW,SAClB,OAAIA,EAAQ,GACRS,GAAW,YAAa,iBAAkBT,CAAK,GAG/CA,GAASF,IAAYE,GAAS,CAACF,KAC/BW,GAAW,WAAY,iBAAkBT,CAAK,EAG3CC,EAAU,KAAK,OAAOD,CAAK,CAAC,EAGvC,IAAMY,EAAgBZ,EAEtB,GAAI,OAAOY,GAAc,SACrB,OAAOX,EAAU,KAAKW,EAAS,SAAQ,CAAE,EAG7C,IAlQR,EAkQYnB,GAAA,SAAQmB,CAAQ,EAChB,OAAOX,EAAU,MAnQ7B,EAmQkCR,GAAA,SAAQmB,CAAQ,CAAC,EAG3C,GAAIA,EAGA,GAAIA,EAAS,YAAa,CACtB,IAAMR,EAAMQ,EAAS,YAAW,EAChC,GAAI,OAAOR,GAAS,SAChB,OAAOH,EAAU,KAAKG,CAAG,MAG1B,CAEH,IAAIA,EAAMQ,EAAS,KAOnB,GAJIR,GAAO,MAAQQ,EAAS,OAAS,cACjCR,EAAMQ,EAAS,KAGf,OAAOR,GAAS,YAxRpC,EAyRwBX,GAAA,aAAYW,CAAG,GAAMA,EAAI,KAAO,MAzRxD,EAyR+DX,GAAA,aAAYW,EAAI,UAAU,CAAC,CAAC,GACnE,OAAOH,EAAU,KAAKG,CAAG,EAMzC,OAAOR,GAAO,mBAAmB,0BAA2B,QAASI,CAAK,CAC9E,EAEOC,EAAA,YAAP,SAAmBD,EAAU,CACzB,MAAO,CAAC,EAAEA,GAASA,EAAM,aAC7B,EACJC,CAAA,EA9PA,EAAaZ,GAAA,UAAAY,GAiQb,SAASU,GAAMX,EAAkB,CAG7B,GAAI,OAAOA,GAAW,SAClB,OAAOW,GAAMX,EAAM,SAAS,EAAE,CAAC,EAInC,GAAIA,EAAM,KAAO,IAWb,OATAA,EAAQA,EAAM,UAAU,CAAC,EAGrBA,EAAM,KAAO,KAAOJ,GAAO,mBAAmB,cAAe,QAASI,CAAK,EAG/EA,EAAQW,GAAMX,CAAK,EAGfA,IAAU,OAAiBA,EAGxB,IAAMA,EAOjB,GAHIA,EAAM,UAAU,EAAG,CAAC,IAAM,OAAQA,EAAQ,KAAOA,GAGjDA,IAAU,KAAQ,MAAO,OAM7B,IAHIA,EAAM,OAAS,IAAKA,EAAQ,MAAQA,EAAM,UAAU,CAAC,GAGlDA,EAAM,OAAS,GAAKA,EAAM,UAAU,EAAG,CAAC,IAAM,QACjDA,EAAQ,KAAOA,EAAM,UAAU,CAAC,EAGpC,OAAOA,CACX,CAEA,SAASK,GAAYL,EAAS,CAC1B,OAAOC,GAAU,KAAKU,GAAMX,CAAK,CAAC,CACtC,CAEA,SAASM,GAAKN,EAAmB,CAC7B,IAAMI,EAAMH,GAAU,KAAKD,CAAK,EAAE,YAAW,EAC7C,OAAII,EAAI,KAAO,IACH,IAAIZ,GAAG,IAAMY,EAAI,UAAU,CAAC,EAAG,EAAE,EAEtC,IAAIZ,GAAGY,EAAI,UAAU,CAAC,EAAG,EAAE,CACtC,CAEA,SAASK,GAAWI,EAAeC,EAAmBd,EAAW,CAC7D,IAAMe,EAAc,CAAE,MAAOF,EAAO,UAAWC,CAAS,EACxD,OAAId,GAAS,OAAQe,EAAO,MAAQf,GAE7BJ,GAAO,WAAWiB,EAAOnB,GAAA,OAAO,OAAO,cAAeqB,CAAM,CACvE,CAGA,SAAgBC,GAAYhB,EAAa,CACrC,OAAQ,IAAIR,GAAGQ,EAAO,EAAE,EAAG,SAAS,EAAE,CAC1C,CAFAX,GAAA,YAAA2B,GAKA,SAAgBC,GAAYjB,EAAa,CACrC,OAAQ,IAAIR,GAAGQ,EAAO,EAAE,EAAG,SAAS,EAAE,CAC1C,CAFAX,GAAA,YAAA4B,KC5WA,IAAAC,GAAAC,EAAAC,IAAA,kIAEA,IAAAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAEjCE,GAAA,KAEMC,GAAoB,CAAA,EAEpBC,GAAOF,GAAA,UAAU,KAAK,CAAC,EACvBG,GAAcH,GAAA,UAAU,KAAK,EAAE,EAErC,SAASI,GAAWC,EAAiBC,EAAeC,EAAmBC,EAAW,CAC9E,IAAMC,EAAc,CAAE,MAAOH,EAAO,UAAWC,CAAS,EACxD,OAAIC,IAAU,SAAaC,EAAO,MAAQD,GACnCT,GAAO,WAAWM,EAASR,GAAA,OAAO,OAAO,cAAeY,CAAM,CACzE,CAGA,IAAIC,GAAQ,IACZ,KAAOA,GAAM,OAAS,KAAOA,IAASA,GAGtC,SAASC,GAAcC,EAAsB,CAEzC,GAAI,OAAOA,GAAc,SACrB,GAAI,CACAA,EAAWZ,GAAA,UAAU,KAAKY,CAAQ,EAAE,SAAQ,OAC9C,CAAU,CAGhB,OAAI,OAAOA,GAAc,UAAYA,GAAY,GAAKA,GAAY,KAAO,EAAEA,EAAW,GAC1E,IAAMF,GAAM,UAAU,EAAGE,CAAQ,EAGtCb,GAAO,mBAAmB,uBAAwB,WAAYa,CAAQ,CACjF,CAEA,SAAgBC,GAAYL,EAAqBI,EAAgC,CACzEA,GAAY,OAAQA,EAAW,GACnC,IAAME,EAAaH,GAAcC,CAAQ,EAGzCJ,EAAQR,GAAA,UAAU,KAAKQ,CAAK,EAE5B,IAAMO,EAAWP,EAAM,GAAGN,EAAI,EAC1Ba,IAAYP,EAAQA,EAAM,IAAIL,EAAW,GAG7C,QADIa,EAAWR,EAAM,IAAIM,CAAU,EAAE,SAAQ,EACtCE,EAAS,OAASF,EAAW,OAAS,GAAKE,EAAW,IAAMA,EAGnEA,EAAWA,EAAS,MAAM,sBAAsB,EAAE,GAElD,IAAMC,EAAQT,EAAM,IAAIM,CAAU,EAAE,SAAQ,EAC5C,OAAIA,EAAW,SAAW,EACtBN,EAAQS,EAERT,EAAQS,EAAQ,IAAMD,EAGtBD,IAAYP,EAAQ,IAAMA,GAEvBA,CACX,CA1BAb,GAAA,YAAAkB,GA4BA,SAAgBK,GAAWV,EAAeI,EAAuB,CAEzDA,GAAY,OAAQA,EAAW,GACnC,IAAME,EAAaH,GAAcC,CAAQ,GAErC,OAAOJ,GAAW,UAAY,CAACA,EAAM,MAAM,aAAa,IACxDT,GAAO,mBAAmB,wBAAyB,QAASS,CAAK,EAIrE,IAAMO,EAAYP,EAAM,UAAU,EAAG,CAAC,IAAM,IACxCO,IAAYP,EAAQA,EAAM,UAAU,CAAC,GAErCA,IAAU,KACVT,GAAO,mBAAmB,gBAAiB,QAASS,CAAK,EAI7D,IAAMW,EAAQX,EAAM,MAAM,GAAG,EACzBW,EAAM,OAAS,GACfpB,GAAO,mBAAmB,0BAA2B,QAASS,CAAK,EAGvE,IAAIS,EAAQE,EAAM,GAAIH,EAAWG,EAAM,GAKvC,IAJKF,IAASA,EAAQ,KACjBD,IAAYA,EAAW,KAGrBA,EAASA,EAAS,OAAS,KAAO,KACrCA,EAAWA,EAAS,UAAU,EAAGA,EAAS,OAAS,CAAC,EAYxD,IARIA,EAAS,OAASF,EAAW,OAAS,GACtCV,GAAW,wCAAyC,YAAa,YAAY,EAI7EY,IAAa,KAAMA,EAAW,KAG3BA,EAAS,OAASF,EAAW,OAAS,GAAKE,GAAY,IAE9D,IAAMI,EAAapB,GAAA,UAAU,KAAKiB,CAAK,EACjCI,EAAgBrB,GAAA,UAAU,KAAKgB,CAAQ,EAEzCM,EAAOF,EAAW,IAAIN,CAAU,EAAG,IAAIO,CAAa,EAExD,OAAIN,IAAYO,EAAMA,EAAI,IAAInB,EAAW,GAElCmB,CACX,CAnDA3B,GAAA,WAAAuB,GAsDA,IAAAK,GAAA,UAAA,CAOI,SAAAA,EAAYC,EAAuBC,EAAiBC,EAAed,EAAgB,CAC3EY,IAAqBvB,IACrBF,GAAO,WAAW,2DAA4DF,GAAA,OAAO,OAAO,sBAAuB,CAC/G,UAAW,kBACd,EAGL,KAAK,OAAS4B,EACd,KAAK,MAAQC,EACb,KAAK,SAAWd,EAEhB,KAAK,MAAQa,EAAS,GAAI,KAAO,QAAU,OAAOC,CAAK,EAAI,IAAM,OAAOd,CAAQ,EAEhF,KAAK,YAAcD,GAAcC,CAAQ,EAEzC,OAAO,OAAO,IAAI,CACtB,CAEO,OAAAW,EAAA,KAAP,SAAYf,EAAU,CAClB,GAAIA,aAAiBe,EAAe,OAAOf,EAEvC,OAAOA,GAAW,WAClBA,EAAQ,YAAYA,GAGxB,IAAIiB,EAAS,GACTC,EAAQ,IACRd,EAAW,GAEf,GAAI,OAAOJ,GAAW,UAClB,GAAIA,IAAU,QAEP,GAAIA,IAAU,SACjBiB,EAAS,OACN,CACH,IAAME,EAAQnB,EAAM,MAAM,8BAA8B,EACnDmB,GAAS5B,GAAO,mBAAmB,uBAAwB,SAAUS,CAAK,EAC/EiB,EAAUE,EAAM,KAAO,IACvBD,EAAQ,SAASC,EAAM,EAAE,EACzBf,EAAW,SAASe,EAAM,EAAE,WAEzBnB,EAAO,CACd,IAAMoB,EAAQ,SAACC,EAAaC,EAAcC,EAAiB,CACvD,OAAIvB,EAAMqB,IAAQ,KAAeE,GAC7B,OAAOvB,EAAMqB,KAAUC,GACvB/B,GAAO,mBAAmB,yBAA2B8B,EAAM,QAAUC,EAAM,IAAK,UAAYD,EAAKrB,EAAMqB,EAAI,EAExGrB,EAAMqB,GACjB,EACAJ,EAASG,EAAM,SAAU,UAAWH,CAAM,EAC1CC,EAAQE,EAAM,QAAS,SAAUF,CAAK,EACtCd,EAAWgB,EAAM,WAAY,SAAUhB,CAAQ,EAGnD,OAAIc,EAAQ,GACR3B,GAAO,mBAAmB,gDAAiD,eAAgB2B,CAAK,EAGhGd,EAAW,IACXb,GAAO,mBAAmB,4CAA6C,kBAAmBa,CAAQ,EAG/F,IAAIW,EAAYtB,GAAmBwB,EAAQC,EAAOd,CAAQ,CACrE,EACJW,CAAA,EAvEA,EAAa5B,GAAA,YAAA4B,GAyEb,IAAAS,GAAA,UAAA,CAOI,SAAAA,EAAYR,EAAuBS,EAAazB,EAAe0B,EAAoB,CAC3EV,IAAqBvB,IACrBF,GAAO,WAAW,2DAA4DF,GAAA,OAAO,OAAO,sBAAuB,CAC/G,UAAW,kBACd,EAGL,KAAK,OAASqC,EACd,KAAK,KAAOD,EACZ,KAAK,OAASzB,EAEd,KAAK,eAAiB,GAEtB,OAAO,OAAO,IAAI,CACtB,CAEA,OAAAwB,EAAA,UAAA,aAAA,SAAaG,EAAkB,CACvB,KAAK,OAAO,OAASA,EAAM,OAAO,MAClCpC,GAAO,mBAAmB,gDAAiD,QAASoC,CAAK,CAEjG,EAEAH,EAAA,UAAA,UAAA,SAAUG,EAAkB,CACxB,KAAK,aAAaA,CAAK,EACvB,IAAMC,EAAIlB,GAAW,KAAK,OAAQ,KAAK,OAAO,QAAQ,EAChDmB,EAAInB,GAAWiB,EAAM,OAAQA,EAAM,OAAO,QAAQ,EACxD,OAAOH,EAAY,UAAUI,EAAE,IAAIC,CAAC,EAAG,KAAK,OAAO,SAAU,KAAK,MAAM,CAC5E,EAEAL,EAAA,UAAA,UAAA,SAAUG,EAAkB,CACxB,KAAK,aAAaA,CAAK,EACvB,IAAMC,EAAIlB,GAAW,KAAK,OAAQ,KAAK,OAAO,QAAQ,EAChDmB,EAAInB,GAAWiB,EAAM,OAAQA,EAAM,OAAO,QAAQ,EACxD,OAAOH,EAAY,UAAUI,EAAE,IAAIC,CAAC,EAAG,KAAK,OAAO,SAAU,KAAK,MAAM,CAC5E,EAEAL,EAAA,UAAA,UAAA,SAAUG,EAAkB,CACxB,KAAK,aAAaA,CAAK,EACvB,IAAMC,EAAIlB,GAAW,KAAK,OAAQ,KAAK,OAAO,QAAQ,EAChDmB,EAAInB,GAAWiB,EAAM,OAAQA,EAAM,OAAO,QAAQ,EACxD,OAAOH,EAAY,UAAUI,EAAE,IAAIC,CAAC,EAAE,IAAI,KAAK,OAAO,WAAW,EAAG,KAAK,OAAO,SAAU,KAAK,MAAM,CACzG,EAEAL,EAAA,UAAA,UAAA,SAAUG,EAAkB,CACxB,KAAK,aAAaA,CAAK,EACvB,IAAMC,EAAIlB,GAAW,KAAK,OAAQ,KAAK,OAAO,QAAQ,EAChDmB,EAAInB,GAAWiB,EAAM,OAAQA,EAAM,OAAO,QAAQ,EACxD,OAAOH,EAAY,UAAUI,EAAE,IAAI,KAAK,OAAO,WAAW,EAAE,IAAIC,CAAC,EAAG,KAAK,OAAO,SAAU,KAAK,MAAM,CACzG,EAEAL,EAAA,UAAA,MAAA,UAAA,CACI,IAAMb,EAAQ,KAAK,SAAQ,EAAG,MAAM,GAAG,EACnCA,EAAM,SAAW,GAAKA,EAAM,KAAK,GAAG,EAExC,IAAImB,EAASN,EAAY,KAAKb,EAAM,GAAI,KAAK,MAAM,EAE7CoB,EAAc,CAACpB,EAAM,GAAG,MAAM,QAAQ,EAC5C,OAAI,KAAK,WAAU,GAAMoB,IACrBD,EAASA,EAAO,UAAUE,GAAI,SAASF,EAAO,MAAM,CAAC,GAGlDA,CACX,EAEAN,EAAA,UAAA,QAAA,UAAA,CACI,IAAMb,EAAQ,KAAK,SAAQ,EAAG,MAAM,GAAG,EACnCA,EAAM,SAAW,GAAKA,EAAM,KAAK,GAAG,EAExC,IAAImB,EAASN,EAAY,KAAKb,EAAM,GAAI,KAAK,MAAM,EAE7CoB,EAAc,CAACpB,EAAM,GAAG,MAAM,QAAQ,EAC5C,MAAI,CAAC,KAAK,WAAU,GAAMoB,IACtBD,EAASA,EAAO,UAAUE,GAAI,SAASF,EAAO,MAAM,CAAC,GAGlDA,CACX,EAGAN,EAAA,UAAA,MAAA,SAAMpB,EAAiB,CACfA,GAAY,OAAQA,EAAW,GAGnC,IAAMO,EAAQ,KAAK,SAAQ,EAAG,MAAM,GAAG,EAOvC,GANIA,EAAM,SAAW,GAAKA,EAAM,KAAK,GAAG,GAEpCP,EAAW,GAAKA,EAAW,IAAOA,EAAW,IAC7Cb,GAAO,mBAAmB,wBAAyB,WAAYa,CAAQ,EAGvEO,EAAM,GAAG,QAAUP,EAAY,OAAO,KAE1C,IAAM6B,EAAST,EAAY,KAAK,IAAMtB,GAAM,UAAU,EAAGE,CAAQ,EAAG,KAAK,MAAM,EACzE8B,EAAOC,GAAK,SAAS,KAAK,MAAM,EAEtC,OAAO,KAAK,UAAUF,CAAM,EAAE,UAAUC,CAAI,EAAE,MAAK,EAAG,UAAUD,CAAM,CAC1E,EAEAT,EAAA,UAAA,OAAA,UAAA,CACI,OAAQ,KAAK,SAAW,OAAS,KAAK,SAAW,GACrD,EAEAA,EAAA,UAAA,WAAA,UAAA,CACI,OAAQ,KAAK,OAAO,KAAO,GAC/B,EAEAA,EAAA,UAAA,SAAA,UAAA,CAAqB,OAAO,KAAK,MAAQ,EAEzCA,EAAA,UAAA,YAAA,SAAYN,EAAc,CACtB,GAAIA,GAAS,KAAQ,OAAO,KAAK,KAC7BA,EAAQ,GAAK3B,GAAO,mBAAmB,qBAAsB,QAAS2B,CAAK,EAC/E,IAAMO,EAAMjC,GAAA,UAAU,KAAK,KAAK,IAAI,EAAE,SAAS,KAAK,OAAO,KAAK,EAAE,OAAO0B,CAAK,EAAE,YAAW,EAC3F,OA3TR,EA2Te9B,GAAA,YAAWqC,EAAKP,EAAQ,CAAC,CACpC,EAEAM,EAAA,UAAA,cAAA,UAAA,CAA0B,OAAO,WAAW,KAAK,SAAQ,CAAE,CAAG,EAE9DA,EAAA,UAAA,SAAA,SAASE,EAA4B,CACjC,OAAOF,EAAY,WAAW,KAAK,OAAQE,CAAM,CACrD,EAGOF,EAAA,UAAP,SAAiBxB,EAAkBI,EAAyBsB,EAAsC,CAE9F,OAAIA,GAAU,MAAQtB,GAAY,MAAQ,EAvUlD,EAuUmDZ,GAAA,gBAAeY,CAAQ,IAC9DsB,EAAStB,EACTA,EAAW,MAGXA,GAAY,OAAQA,EAAW,GAC/BsB,GAAU,OAAQA,EAAS,SAExBF,EAAY,WAAWnB,GAAYL,EAAOI,CAAQ,EAAGW,GAAY,KAAKW,CAAM,CAAC,CACxF,EAGOF,EAAA,WAAP,SAAkBxB,EAAe0B,EAAsC,CAC/DA,GAAU,OAAQA,EAAS,SAE/B,IAAMU,EAAcrB,GAAY,KAAKW,CAAM,EAErCW,EAAU3B,GAAWV,EAAOoC,EAAY,QAAQ,EAElD,CAACA,EAAY,QAAUC,EAAQ,GAAG3C,EAAI,GACtCE,GAAW,oCAAqC,WAAY,QAASI,CAAK,EAG9E,IAAIyB,EAAc,KACdW,EAAY,OACZX,EAAMY,EAAQ,OAAOD,EAAY,KAAK,EAAE,YAAW,GAEnDX,EAAMY,EAAQ,YAAW,EACzBZ,GAnWZ,EAmWkBrC,GAAA,YAAWqC,EAAKW,EAAY,MAAQ,CAAC,GAG/C,IAAME,EAAUjC,GAAYgC,EAASD,EAAY,QAAQ,EAEzD,OAAO,IAAIZ,EAAY/B,GAAmBgC,EAAKa,EAASF,CAAW,CACvE,EAEOZ,EAAA,UAAP,SAAiBxB,EAAkB0B,EAAsC,CACjEA,GAAU,OAAQA,EAAS,SAE/B,IAAMU,EAAcrB,GAAY,KAAKW,CAAM,EAE3C,IAhXR,EAgXYtC,GAAA,UAASY,CAAK,EAAE,OAASoC,EAAY,MAAQ,EAC7C,MAAM,IAAI,MAAM,UAAU,EAG9B,IAAIC,EAAU7C,GAAA,UAAU,KAAKQ,CAAK,EAC9BoC,EAAY,SAAUC,EAAUA,EAAQ,SAASD,EAAY,KAAK,GAEtE,IAAMX,EAAMY,EAAQ,QAAQD,EAAY,OAAS,EAAG,GAAKA,EAAY,KAAK,EAAE,YAAW,EACjFE,EAAUjC,GAAYgC,EAASD,EAAY,QAAQ,EAEzD,OAAO,IAAIZ,EAAY/B,GAAmBgC,EAAKa,EAASF,CAAW,CACvE,EAEOZ,EAAA,KAAP,SAAYxB,EAAY0B,EAAsC,CAC1D,GAAI,OAAO1B,GAAW,SAClB,OAAOwB,EAAY,WAAWxB,EAAO0B,CAAM,EAG/C,IAlYR,EAkYYtC,GAAA,SAAQY,CAAK,EACb,OAAOwB,EAAY,UAAUxB,EAAO0B,CAAM,EAG9C,GAAI,CACA,OAAOF,EAAY,UAAUxB,EAAO,EAAG0B,CAAM,QACxCa,EAAP,CAEE,GAAIA,EAAM,OAASlD,GAAA,OAAO,OAAO,iBAC7B,MAAMkD,EAId,OAAOhD,GAAO,mBAAmB,4BAA6B,QAASS,CAAK,CAChF,EAEOwB,EAAA,cAAP,SAAqBxB,EAAU,CAC3B,MAAO,CAAC,EAAEA,GAASA,EAAM,eAC7B,EACJwB,CAAA,EAjNA,EAAarC,GAAA,YAAAqC,GAmNb,IAAMQ,GAAMR,GAAY,KAAK,CAAC,EACxBW,GAAOX,GAAY,KAAK,KAAK,8LCxZnC,IAAAgB,GAAA,KAAS,OAAA,eAAAC,GAAA,YAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAD,GAAA,SAAS,CAAA,CAAA,EAClB,IAAAE,GAAA,KAAS,OAAA,eAAAD,GAAA,cAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAC,GAAA,WAAW,CAAA,CAAA,EAAE,OAAA,eAAAD,GAAA,cAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAC,GAAA,WAAW,CAAA,CAAA,EAAE,OAAA,eAAAD,GAAA,cAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAC,GAAA,WAAW,CAAA,CAAA,EAAE,OAAA,eAAAD,GAAA,aAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAC,GAAA,UAAU,CAAA,CAAA,EAG1D,IAAAC,GAAA,KAAS,OAAA,eAAAF,GAAA,cAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAE,GAAA,WAAW,CAAA,CAAA,EAAE,OAAA,eAAAF,GAAA,cAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAE,GAAA,WAAW,CAAA,CAAA,mGCJpBC,GAAA,QAAU,qBCAvB,IAAAC,GAAAC,EAAAC,IAAA,8jDAEA,IAAAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAEjC,SAAgBE,GAAqCC,EAAWC,EAASC,EAAW,CAChF,OAAO,eAAeF,EAAQC,EAAM,CAChC,WAAY,GACZ,MAAOC,EACP,SAAU,GACb,CACL,CANAP,GAAA,eAAAI,GASA,SAAgBI,GAAaC,EAAWC,EAAW,CAC/C,QAASC,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACzB,GAAIF,EAAKC,GAAQ,OAAOD,EAAKC,GAC7B,GAAI,CAACD,EAAK,WAAa,OAAOA,EAAK,WAAe,SAAY,MAC9DA,EAAO,OAAO,eAAeA,EAAK,SAAS,EAAE,YAEjD,OAAO,IACX,CAPAT,GAAA,UAAAQ,GAgBA,SAAsBI,GAAqBP,EAA+B,mGAChE,OAAAQ,EAAmC,OAAO,KAAKR,CAAM,EAAE,IAAI,SAACK,EAAG,CACjE,IAAMH,EAAQF,EAA4BK,GAC1C,OAAO,QAAQ,QAAQH,CAAK,EAAE,KAAK,SAACO,EAAC,CAAK,MAAC,CAAE,IAAKJ,EAAK,MAAOI,CAAC,CAArB,CAAwB,CACtE,CAAC,EAEe,CAAA,EAAM,QAAQ,IAAID,CAAQ,CAAC,SAArC,OAAAE,EAAUC,EAAA,KAAA,EAEhB,CAAA,EAAOD,EAAQ,OAAO,SAACE,EAAOC,EAAM,CAChC,OAAAD,EAAgBC,EAAO,KAAQA,EAAO,MAC/BD,CACX,EAAM,CAAA,CAAG,CAAC,OAXdjB,GAAA,kBAAAY,GAcA,SAAgBO,GAAgBd,EAAae,EAAyC,EAC9E,CAACf,GAAU,OAAOA,GAAY,WAC9BF,GAAO,mBAAmB,iBAAkB,SAAUE,CAAM,EAGhE,OAAO,KAAKA,CAAM,EAAE,QAAQ,SAACK,EAAG,CACvBU,EAAWV,IACZP,GAAO,mBAAmB,wBAA0BO,EAAK,eAAiBA,EAAKL,CAAM,CAE7F,CAAC,CACL,CAVAL,GAAA,gBAAAmB,GAYA,SAAgBE,GAAehB,EAAS,CACpC,IAAMa,EAAc,CAAA,EACpB,QAAWR,KAAOL,EAAUa,EAAOR,GAAOL,EAAOK,GACjD,OAAOQ,CACX,CAJAlB,GAAA,YAAAqB,GAMA,IAAMC,GAAqC,CAAE,OAAQ,GAAM,QAAS,GAAM,SAAY,GAAM,OAAQ,GAAM,OAAQ,EAAI,EAEtH,SAASC,GAAUlB,EAAW,CAG1B,GAA4BA,GAAW,MAAQiB,GAAO,OAAOjB,GAAY,MAAO,GAEhF,GAAI,MAAM,QAAQA,CAAM,GAAK,OAAOA,GAAY,SAAU,CACtD,GAAI,CAAC,OAAO,SAASA,CAAM,EAAK,MAAO,GAGvC,QADMmB,EAAO,OAAO,KAAKnB,CAAM,EACtBM,EAAI,EAAGA,EAAIa,EAAK,OAAQb,IAAK,CAClC,IAAIJ,EAAa,KACjB,GAAI,CACAA,EAAQF,EAAOmB,EAAKb,SACtB,CAGE,SAGJ,GAAI,CAACY,GAAUhB,CAAK,EAAK,MAAO,GAGpC,MAAO,GAGX,OAAOJ,GAAO,mBAAmB,mBAAoB,OAAOE,EAAY,SAAUA,CAAM,CAC5F,CAIA,SAASoB,GAAUpB,EAAW,CAE1B,GAAIkB,GAAUlB,CAAM,EAAK,OAAOA,EAGhC,GAAI,MAAM,QAAQA,CAAM,EACpB,OAAO,OAAO,OAAOA,EAAO,IAAI,SAACqB,EAAI,CAAK,OAAAC,GAASD,CAAI,CAAb,CAAc,CAAC,EAG7D,GAAI,OAAOrB,GAAY,SAAU,CAC7B,IAAMa,EAAmC,CAAA,EACzC,QAAWR,KAAOL,EAAQ,CACtB,IAAME,EAAQF,EAAOK,GACjBH,IAAU,QACdH,GAAec,EAAQR,EAAKiB,GAASpB,CAAK,CAAC,EAG/C,OAAOW,EAGX,OAAOf,GAAO,mBAAmB,mBAAoB,OAAOE,EAAY,SAAUA,CAAM,CAC5F,CAEA,SAAgBsB,GAAYtB,EAAS,CACjC,OAAOoB,GAAUpB,CAAM,CAC3B,CAFAL,GAAA,SAAA2B,GAIA,IAAAC,GAAA,UAAA,CACI,SAAAA,EAAYC,EAAgC,CACxC,QAAWnB,KAAOmB,EACR,KAAMnB,GAAOiB,GAASE,EAAKnB,EAAI,CAE7C,CACJ,OAAAkB,CAAA,EANA,EAAa5B,GAAA,YAAA4B,oGC1HAE,GAAA,QAAU,cCAvB,IAAAC,GAAAC,EAAAC,IAAA,6qBAEA,IAAAC,GAAA,KACAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EA0B3BE,GAAoB,CAAA,EAqBtBC,GAAgD,CAAE,SAAU,GAAM,OAAQ,GAAM,QAAS,EAAI,EAC7FC,GAA+C,CAAE,SAAU,GAAM,OAAQ,EAAI,EACjF,SAASC,GAAcC,EAAcC,EAAY,CAC7C,GAAID,IAAS,SAAWA,IAAS,UAC7B,GAAIH,GAAeI,GAAS,MAAO,WAC5BD,IAAS,WAChB,GAAIC,IAAS,UAAa,MAAO,YAC1BD,EAAK,QAAQ,GAAG,GAAK,GAAKA,IAAS,UACtCF,GAAcG,GAAS,MAAO,GAEtC,OAAIJ,GAAeI,IAASA,IAAS,YACjCN,GAAO,mBAAmB,mBAAoB,OAAQM,CAAI,EAEvD,EACX,CAGA,SAASC,GAAeC,EAAeC,EAAqB,CAExD,IAAIC,EAAgBF,EACpB,SAASG,EAAWC,EAAS,CACzBZ,GAAO,mBAAmB,oCAAqCY,EAAM,QAASJ,CAAK,CACvF,CACAA,EAAQA,EAAM,QAAQ,MAAO,GAAG,EAEhC,SAASK,EAAQC,EAAiB,CAC9B,IAAIC,EAAkB,CAAE,KAAM,GAAI,KAAM,GAAI,OAAQD,EAAQ,MAAO,CAAE,UAAW,EAAI,CAAE,EACtF,OAAIL,IAAgBM,EAAK,QAAU,IAC5BA,CACX,CAKA,QAHID,EAAoB,CAAE,KAAM,GAAI,KAAM,GAAI,MAAO,CAAE,UAAW,EAAI,CAAE,EACpEC,EAAOD,EAEFF,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAAK,CACnC,IAAII,EAAIR,EAAMI,GACd,OAAQI,EAAG,CACP,IAAK,IACGD,EAAK,MAAM,WAAaA,EAAK,OAAS,GACtCA,EAAK,KAAO,QACJA,EAAK,MAAM,aACnBJ,EAAWC,CAAC,EAEhBG,EAAK,MAAM,UAAY,GACvBA,EAAK,KAAOE,GAAWF,EAAK,IAAI,EAChCA,EAAK,WAAa,CAAEF,EAAQE,CAAI,CAAC,EACjCA,EAAOA,EAAK,WAAW,GACvB,MAEJ,IAAK,IACD,OAAOA,EAAK,MAERA,EAAK,OAAS,YACTN,GAAgBE,EAAWC,CAAC,EACjCG,EAAK,QAAU,GACfA,EAAK,KAAO,IAGZX,GAAcW,EAAK,KAAMA,EAAK,IAAI,IAAKA,EAAK,KAAO,IAEvDA,EAAK,KAAOE,GAAWF,EAAK,IAAI,EAEhC,IAAIG,EAAQH,EACZA,EAAOA,EAAK,OACPA,GAAQJ,EAAWC,CAAC,EACzB,OAAOM,EAAM,OACbH,EAAK,MAAM,YAAc,GACzBA,EAAK,MAAM,UAAY,GACvBA,EAAK,MAAM,WAAa,GACxB,MAEJ,IAAK,IACD,OAAOA,EAAK,MAERA,EAAK,OAAS,YACTN,GAAgBE,EAAWC,CAAC,EACjCG,EAAK,QAAU,GACfA,EAAK,KAAO,IAGZX,GAAcW,EAAK,KAAMA,EAAK,IAAI,IAAKA,EAAK,KAAO,IAEvDA,EAAK,KAAOE,GAAWF,EAAK,IAAI,EAEhC,IAAII,EAAqBN,EAAQE,EAAK,MAAM,EAE5CA,EAAK,OAAO,WAAW,KAAKI,CAAO,EACnC,OAAOJ,EAAK,OACZA,EAAOI,EACP,MAGJ,IAAK,IAGGJ,EAAK,MAAM,WACPA,EAAK,OAAS,KACdA,EAAK,KAAOE,GAAWF,EAAK,IAAI,EAChC,OAAOA,EAAK,MAAM,UAClBA,EAAK,MAAM,UAAY,GACvBA,EAAK,MAAM,YAAc,IAK7BA,EAAK,MAAM,WACPA,EAAK,OAAS,KACVA,EAAK,OAAS,WACTN,GAAgBE,EAAWC,CAAC,EAC7BG,EAAK,SAAWJ,EAAWC,CAAC,EAChCG,EAAK,QAAU,GACfA,EAAK,KAAO,IACLX,GAAcW,EAAK,KAAMA,EAAK,IAAI,EACzCA,EAAK,KAAO,GAEZA,EAAK,MAAM,UAAY,IAKnC,MAEJ,IAAK,IACIA,EAAK,MAAM,YAAcJ,EAAWC,CAAC,EAE1CG,EAAK,MAAQC,EAEbD,EAAK,MAAM,WAAa,GACxBA,EAAK,MAAM,UAAY,GACvBA,EAAK,MAAM,UAAY,GACvB,MAEJ,IAAK,IACIA,EAAK,MAAM,WAAaJ,EAAWC,CAAC,EAEzCG,EAAK,MAAQC,EAEbD,EAAK,MAAM,UAAY,GACvBA,EAAK,MAAM,WAAa,GACxBA,EAAK,MAAM,UAAY,GACvB,MAEJ,QACQA,EAAK,MAAM,WACXA,EAAK,MAAQC,EACbD,EAAK,MAAM,YAAc,GACzBA,EAAK,MAAM,WAAa,IACjBA,EAAK,MAAM,WAClBA,EAAK,MAAQC,EACb,OAAOD,EAAK,MAAM,YACXA,EAAK,MAAM,UAClBA,EAAK,MAAQC,EAEbL,EAAWC,CAAC,GAK5B,OAAIG,EAAK,QAAUf,GAAO,mBAAmB,iBAAkB,QAASQ,CAAK,EAE7E,OAAOM,EAAO,MAEVC,EAAK,OAAS,WACTN,GAAgBE,EAAWD,EAAc,OAAS,CAAC,EACpDK,EAAK,SAAWJ,EAAWD,EAAc,OAAS,CAAC,EACvDK,EAAK,QAAU,GACfA,EAAK,KAAO,IACLX,GAAcW,EAAK,KAAMA,EAAK,IAAI,IACzCA,EAAK,KAAO,IAGhBD,EAAO,KAAOG,GAAWH,EAAO,IAAI,EAE7BA,CACX,CAEA,SAASM,GAASC,EAAaC,EAAW,CACtC,QAASC,KAAOD,GAvOpB,EAuO8BzB,GAAA,gBAAewB,EAAQE,EAAKD,EAAOC,EAAI,CACrE,CAEa5B,GAAA,YAA4C,OAAO,OAAO,CAEnE,QAAS,UAGT,QAAS,UAGT,KAAM,OAGN,KAAM,OACT,EAED,IAAM6B,GAAiB,IAAI,OAAO,oBAAoB,EAEtDC,GAAA,UAAA,CA0BI,SAAAA,EAAYC,EAAuBJ,EAAW,CACtCI,IAAqBzB,IAAqBD,GAAO,WAAW,iBAAkBF,GAAA,OAAO,OAAO,sBAAuB,CACnH,UAAW,kBACd,EACDsB,GAAS,KAAME,CAAM,EAErB,IAAIK,EAAQ,KAAK,KAAK,MAAMH,EAAc,EACtCG,EACAP,GAAS,KAAM,CACX,YAAa,SAASO,EAAM,IAAM,IAAI,EACtC,cAAeF,EAAU,WAAW,CAChC,KAAME,EAAM,GACZ,WAAY,KAAK,WACpB,EACD,SAAU,QACb,EAEDP,GAAS,KAAM,CACX,YAAa,KACb,cAAe,KACf,SAAY,KAAK,YAAc,KAAQ,QAAS,KAAK,KACxD,EAGL,KAAK,aAAe,GAEpB,OAAO,OAAO,IAAI,CACtB,CAMA,OAAAK,EAAA,UAAA,OAAA,SAAOG,EAAe,CAMlB,GALKA,IAAUA,EAASjC,GAAA,YAAY,SAC/BA,GAAA,YAAYiC,IACb5B,GAAO,mBAAmB,sBAAuB,SAAU4B,CAAM,EAGjEA,IAAWjC,GAAA,YAAY,KAAM,CAC7B,IAAIkC,EAAc,CACd,KAAQ,KAAK,WAAa,QAAW,QAAS,KAAK,KACnD,KAAO,KAAK,MAAQ,QAExB,OAAI,OAAO,KAAK,SAAa,YAAaA,EAAO,QAAU,KAAK,SAC5D,KAAK,aACLA,EAAO,WAAa,KAAK,WAAW,IAAI,SAACC,EAAI,CAAK,OAAA,KAAK,MAAMA,EAAK,OAAOF,CAAM,CAAC,CAA9B,CAA+B,GAE9E,KAAK,UAAUC,CAAM,EAGhC,IAAIE,EAAS,GAGb,OAAI,KAAK,WAAa,SAClBA,GAAU,KAAK,cAAc,OAAOH,CAAM,EAC1CG,GAAU,KAAO,KAAK,YAAc,EAAI,GAAI,OAAO,KAAK,WAAW,GAAK,KAEpE,KAAK,WAAa,SACdH,IAAWjC,GAAA,YAAY,UACvBoC,GAAU,KAAK,MAEnBA,GAAU,IAAM,KAAK,WAAW,IAC5B,SAACD,EAAI,CAAK,OAAAA,EAAK,OAAOF,CAAM,CAAlB,CAAmB,EAC/B,KAAMA,IAAWjC,GAAA,YAAY,KAAQ,KAAM,GAAG,EAAI,KAEpDoC,GAAU,KAAK,KAInBH,IAAWjC,GAAA,YAAY,UACnB,KAAK,UAAY,KAAQoC,GAAU,YACnCH,IAAWjC,GAAA,YAAY,MAAQ,KAAK,OACpCoC,GAAU,IAAM,KAAK,OAItBA,CACX,EAEON,EAAA,KAAP,SAAYO,EAA8CvB,EAAsB,CAC5E,OAAI,OAAOuB,GAAW,SACXP,EAAU,WAAWO,EAAOvB,CAAY,EAE5CgB,EAAU,WAAWO,CAAK,CACrC,EAEOP,EAAA,WAAP,SAAkBO,EAAmC,CACjD,OAAIP,EAAU,YAAYO,CAAK,EAAYA,EAEpC,IAAIP,EAAUxB,GAAmB,CACpC,KAAO+B,EAAM,MAAQ,KACrB,KAAMf,GAAWe,EAAM,IAAI,EAC3B,QAAWA,EAAM,SAAW,KAAQ,KAAM,CAAC,CAACA,EAAM,QAClD,WAAaA,EAAM,WAAaA,EAAM,WAAW,IAAIP,EAAU,UAAU,EAAG,KAC/E,CACL,EAEOA,EAAA,WAAP,SAAkBO,EAAevB,EAAsB,CACnD,SAASwB,EAAYlB,EAAe,CAChC,OAAOU,EAAU,WAAW,CACxB,KAAMV,EAAK,KACX,KAAMA,EAAK,KACX,QAASA,EAAK,QACd,WAAYA,EAAK,WACpB,CACL,CAEA,OAAOkB,EAAY1B,GAAeyB,EAAO,CAAC,CAACvB,CAAY,CAAC,CAC5D,EAEOgB,EAAA,YAAP,SAAmBO,EAAU,CACzB,MAAO,CAAC,EAAEA,GAAS,MAAQA,EAAM,aACrC,EACJP,CAAA,EA5IA,EAAa9B,GAAA,UAAA8B,GA8Ib,SAASS,GAAYF,EAAeG,EAAmB,CACnD,OAAOC,GAAaJ,CAAK,EAAE,IAAI,SAACxB,EAAK,CAAK,OAAAiB,GAAU,WAAWjB,EAAO2B,CAAU,CAAtC,CAAuC,CACrF,CAUA,IAAAE,GAAA,UAAA,CAQI,SAAAA,EAAYX,EAAuBJ,EAAW,CACtCI,IAAqBzB,IACrBD,GAAO,WAAW,2BAA4BF,GAAA,OAAO,OAAO,sBAAuB,CAC/E,UAAW,iBACd,EAELsB,GAAS,KAAME,CAAM,EAErB,KAAK,YAAc,GAEnB,OAAO,OAAO,IAAI,CACtB,CAIO,OAAAe,EAAA,KAAP,SAAYL,EAAuC,CAC/C,OAAIK,EAAS,WAAWL,CAAK,EAAYA,EAErC,OAAOA,GAAW,SACXK,EAAS,WAAWL,CAAK,EAG7BK,EAAS,WAAWL,CAAK,CACpC,EAEOK,EAAA,WAAP,SAAkBL,EAA8B,CAC5C,GAAIK,EAAS,WAAWL,CAAK,EAAK,OAAOA,EAEzC,OAAQA,EAAM,KAAM,CAChB,IAAK,WACD,OAAOM,GAAiB,WAAWN,CAAK,EAC5C,IAAK,QACD,OAAOO,GAAc,WAAWP,CAAK,EACzC,IAAK,cACD,OAAOQ,GAAoB,WAAWR,CAAK,EAC/C,IAAK,QACD,OAAOS,GAAc,WAAWT,CAAK,EACzC,IAAK,WACL,IAAK,UAED,OAAO,KAGf,OAAOhC,GAAO,mBAAmB,0BAA2B,QAASgC,CAAK,CAC9E,EAEOK,EAAA,WAAP,SAAkBL,EAAa,CAM3B,OAJAA,EAAQA,EAAM,QAAQ,MAAO,GAAG,EAChCA,EAAQA,EAAM,QAAQ,MAAO,IAAI,EAAE,QAAQ,MAAO,IAAI,EAAE,QAAQ,OAAQ,GAAG,EAC3EA,EAAQA,EAAM,KAAI,EAEdA,EAAM,MAAM,GAAG,EAAE,KAAO,QAClBO,GAAc,WAAWP,EAAM,UAAU,CAAC,EAAE,KAAI,CAAE,EACjDA,EAAM,MAAM,GAAG,EAAE,KAAO,WACxBM,GAAiB,WAAWN,EAAM,UAAU,CAAC,EAAE,KAAI,CAAE,EACrDA,EAAM,MAAM,GAAG,EAAE,GAAG,KAAI,IAAO,cAC/BQ,GAAoB,WAAWR,EAAM,KAAI,CAAE,EAC3CA,EAAM,MAAM,GAAG,EAAE,KAAO,QACzBS,GAAc,WAAWT,EAAM,UAAU,CAAC,EAAE,KAAI,CAAE,EAGrDhC,GAAO,mBAAmB,uBAAwB,QAASgC,CAAK,CAC3E,EAEOK,EAAA,WAAP,SAAkBL,EAAU,CACxB,MAAO,CAAC,EAAEA,GAASA,EAAM,YAC7B,EACJK,CAAA,EA5EA,EAAsB1C,GAAA,SAAA0C,GAkFtB,IAAAE,GAAA,SAAAG,EAAA,CAAmCC,GAAAJ,EAAAG,CAAA,EAAnC,SAAAH,GAAA,+CA4FA,CAzFI,OAAAA,EAAA,UAAA,OAAA,SAAOX,EAAe,CAMlB,GALKA,IAAUA,EAASjC,GAAA,YAAY,SAC/BA,GAAA,YAAYiC,IACb5B,GAAO,mBAAmB,sBAAuB,SAAU4B,CAAM,EAGjEA,IAAWjC,GAAA,YAAY,KACvB,OAAO,KAAK,UAAU,CAClB,KAAM,QACN,UAAW,KAAK,UAChB,KAAM,KAAK,KACX,OAAQ,KAAK,OAAO,IAAI,SAACiD,EAAK,CAAK,OAAA,KAAK,MAAMA,EAAM,OAAOhB,CAAM,CAAC,CAA/B,CAAgC,EACtE,EAGL,IAAIG,EAAS,GAEb,OAAIH,IAAWjC,GAAA,YAAY,UACvBoC,GAAU,UAGdA,GAAU,KAAK,KAAO,IAAM,KAAK,OAAO,IACpC,SAACa,EAAK,CAAK,OAAAA,EAAM,OAAOhB,CAAM,CAAnB,CAAoB,EACjC,KAAMA,IAAWjC,GAAA,YAAY,KAAQ,KAAM,GAAG,EAAI,KAEhDiC,IAAWjC,GAAA,YAAY,SACnB,KAAK,YACLoC,GAAU,cAIXA,EAAO,KAAI,CACtB,EAEOQ,EAAA,KAAP,SAAYP,EAA4C,CACpD,OAAI,OAAOA,GAAW,SACXO,EAAc,WAAWP,CAAK,EAElCO,EAAc,WAAWP,CAAK,CACzC,EAEOO,EAAA,WAAP,SAAkBP,EAAmC,CACjD,GAAIO,EAAc,gBAAgBP,CAAK,EAAK,OAAOA,EAE/CA,EAAM,OAAS,SACfhC,GAAO,mBAAmB,uBAAwB,QAASgC,CAAK,EAGpE,IAAMV,EAAoC,CACtC,KAAMuB,GAAiBb,EAAM,IAAI,EACjC,UAAWA,EAAM,UACjB,OAASA,EAAM,OAASA,EAAM,OAAO,IAAIP,GAAU,UAAU,EAAI,CAAA,EACjE,KAAM,SAGV,OAAO,IAAIc,EAActC,GAAmBqB,CAAM,CACtD,EAEOiB,EAAA,WAAP,SAAkBP,EAAa,CAE3B,IAAIL,EAAQK,EAAM,MAAMc,EAAU,EAC7BnB,GACD3B,GAAO,mBAAmB,uBAAwB,QAASgC,CAAK,EAGpE,IAAIe,EAAY,GAChB,OAAApB,EAAM,GAAG,MAAM,GAAG,EAAE,QAAQ,SAACqB,EAAQ,CACjC,OAAOA,EAAS,KAAI,EAAI,CACpB,IAAK,YACDD,EAAY,GACZ,MACJ,IAAK,GACD,MACJ,QACI/C,GAAO,KAAK,qBAAuBgD,CAAQ,EAEvD,CAAC,EAEMT,EAAc,WAAW,CAC5B,KAAMZ,EAAM,GAAG,KAAI,EACnB,UAAWoB,EACX,OAAQb,GAAYP,EAAM,GAAI,EAAI,EAClC,KAAM,QACT,CACL,EAEOY,EAAA,gBAAP,SAAuBP,EAAU,CAC7B,OAAQA,GAASA,EAAM,aAAeA,EAAM,OAAS,OACzD,EACJO,CAAA,EA5FmCF,EAAQ,EAA9B1C,GAAA,cAAA4C,GA8Fb,SAASU,GAASjB,EAAeV,EAAW,CACxCA,EAAO,IAAM,KAEb,IAAI4B,EAAQlB,EAAM,MAAM,GAAG,EAC3B,OAAIkB,EAAM,SAAW,GACbA,EAAM,OAAS,GACflD,GAAO,mBAAmB,uCAAwC,QAASgC,CAAK,EAE/EkB,EAAM,GAAG,MAAM,UAAU,GAC1BlD,GAAO,mBAAmB,2CAA4C,QAASgC,CAAK,EAExFV,EAAO,IAAM1B,GAAA,UAAU,KAAKsD,EAAM,EAAE,EAC7BA,EAAM,IAGVlB,CACX,CAEA,SAASmB,GAAenB,EAAeV,EAAW,CAC9CA,EAAO,SAAW,GAClBA,EAAO,QAAU,GACjBA,EAAO,gBAAkB,aAEzBU,EAAM,MAAM,GAAG,EAAE,QAAQ,SAACgB,EAAQ,CAC9B,OAAQA,EAAS,KAAI,EAAI,CACrB,IAAK,WACD1B,EAAO,SAAW,GAClB,MACJ,IAAK,UACDA,EAAO,QAAU,GACjBA,EAAO,gBAAkB,UACzB,MACJ,IAAK,aACDA,EAAO,QAAU,GACjBA,EAAO,gBAAkB,aACzB,MACJ,IAAK,OACDA,EAAO,SAAW,GAClBA,EAAO,gBAAkB,OACzB,MACJ,IAAK,OACDA,EAAO,SAAW,GAClBA,EAAO,gBAAkB,OACzB,MACJ,IAAK,WACL,IAAK,SACL,IAAK,GACD,MACJ,QACI,QAAQ,IAAI,qBAAuB0B,CAAQ,EAEvD,CAAC,CACL,CAeA,SAASI,GAAYpB,EAAsB,CACvC,IAAID,EAAc,CACd,SAAU,GACV,QAAS,GACT,gBAAiB,WAGrB,OAAIC,EAAM,iBAAmB,MACzBD,EAAO,gBAAkBC,EAAM,gBAG/BD,EAAO,SAAYA,EAAO,kBAAoB,QAAUA,EAAO,kBAAoB,OAC/EC,EAAM,UAAY,MACb,CAAC,CAACA,EAAM,WAAcD,EAAO,UAC9B/B,GAAO,mBAAmB,iDAAmD+B,EAAO,gBAAiB,QAASC,CAAK,EAK3HD,EAAO,QAAWA,EAAO,kBAAoB,UACzCC,EAAM,SAAW,MACZ,CAAC,CAACA,EAAM,UAAaD,EAAO,SAC7B/B,GAAO,mBAAmB,gDAAkD+B,EAAO,gBAAiB,QAASC,CAAK,GAInHA,EAAM,SAAW,MACxBD,EAAO,QAAU,CAAC,CAACC,EAAM,QAGrBA,EAAM,UAAY,MAAQ,CAACD,EAAO,SAAWC,EAAM,OAAS,eAC5DhC,GAAO,mBAAmB,sCAAuC,QAASgC,CAAK,EAGnFD,EAAO,SAAW,CAAC,CAACC,EAAM,SAEtBD,EAAO,SACPA,EAAO,gBAAkB,OAEzBA,EAAO,gBAAmBA,EAAO,QAAU,UAAW,aAGtDA,EAAO,SAAWA,EAAO,UACzB/B,GAAO,mBAAmB,wCAAyC,QAASgC,CAAK,GAG9EA,EAAM,UAAY,MACzBD,EAAO,SAAW,CAAC,CAACC,EAAM,SAC1BD,EAAO,QAAU,CAACA,EAAO,SACzBA,EAAO,gBAAmBA,EAAO,SAAW,OAAQ,WAE7CC,EAAM,OAAS,eACtBhC,GAAO,mBAAmB,sCAAuC,QAASgC,CAAK,EAG5ED,CACX,CAQA,IAAAS,GAAA,SAAAE,EAAA,CAAyCC,GAAAH,EAAAE,CAAA,EAAzC,SAAAF,GAAA,+CAyFA,CApFI,OAAAA,EAAA,UAAA,OAAA,SAAOZ,EAAe,CAMlB,GALKA,IAAUA,EAASjC,GAAA,YAAY,SAC/BA,GAAA,YAAYiC,IACb5B,GAAO,mBAAmB,sBAAuB,SAAU4B,CAAM,EAGjEA,IAAWjC,GAAA,YAAY,KACvB,OAAO,KAAK,UAAU,CAClB,KAAM,cACN,gBAAmB,KAAK,kBAAoB,aAAgB,KAAK,gBAAiB,OAClF,QAAS,KAAK,QACd,IAAM,KAAK,IAAM,KAAK,IAAI,SAAQ,EAAI,OACtC,OAAQ,KAAK,OAAO,IAAI,SAACiD,EAAK,CAAK,OAAA,KAAK,MAAMA,EAAM,OAAOhB,CAAM,CAAC,CAA/B,CAAgC,EACtE,EAGDA,IAAWjC,GAAA,YAAY,SACvBK,GAAO,WAAW,0CAA2CF,GAAA,OAAO,OAAO,sBAAuB,CAC9F,UAAW,kBACd,EAGL,IAAIiC,EAAS,eAAiB,KAAK,OAAO,IACtC,SAACa,EAAK,CAAK,OAAAA,EAAM,OAAOhB,CAAM,CAAnB,CAAoB,EACjC,KAAMA,IAAWjC,GAAA,YAAY,KAAQ,KAAM,GAAG,EAAI,KAEpD,OAAI,KAAK,iBAAmB,KAAK,kBAAoB,eACjDoC,GAAU,KAAK,gBAAkB,KAG9BA,EAAO,KAAI,CACtB,EAEOS,EAAA,KAAP,SAAYR,EAAkD,CAC1D,OAAI,OAAOA,GAAW,SACXQ,EAAoB,WAAWR,CAAK,EAExCQ,EAAoB,WAAWR,CAAK,CAC/C,EAEOQ,EAAA,WAAP,SAAkBR,EAAyC,CACvD,GAAIQ,EAAoB,sBAAsBR,CAAK,EAAK,OAAOA,EAE3DA,EAAM,OAAS,eACfhC,GAAO,mBAAmB,6BAA8B,QAASgC,CAAK,EAG1E,IAAIqB,EAAQD,GAAYpB,CAAK,EACzBqB,EAAM,UACNrD,GAAO,mBAAmB,iCAAkC,QAASgC,CAAK,EAG9E,IAAMV,EAA0C,CAC5C,KAAM,KACN,KAAMU,EAAM,KACZ,OAASA,EAAM,OAASA,EAAM,OAAO,IAAIP,GAAU,UAAU,EAAG,CAAA,EAChE,QAAS4B,EAAM,QACf,gBAAiBA,EAAM,gBACvB,IAAMrB,EAAM,IAAMpC,GAAA,UAAU,KAAKoC,EAAM,GAAG,EAAG,MAGjD,OAAO,IAAIQ,EAAoBvC,GAAmBqB,CAAM,CAC5D,EAEOkB,EAAA,WAAP,SAAkBR,EAAa,CAC3B,IAAIV,EAAc,CAAE,KAAM,aAAa,EAEvCU,EAAQiB,GAASjB,EAAOV,CAAM,EAE9B,IAAIgC,EAAStB,EAAM,MAAMc,EAAU,EACnC,OAAI,CAACQ,GAAUA,EAAO,GAAG,KAAI,IAAO,gBAChCtD,GAAO,mBAAmB,6BAA8B,QAASgC,CAAK,EAG1EV,EAAO,OAASY,GAAYoB,EAAO,GAAG,KAAI,EAAI,EAAK,EAEnDH,GAAeG,EAAO,GAAG,KAAI,EAAIhC,CAAM,EAEhCkB,EAAoB,WAAWlB,CAAM,CAChD,EAEOkB,EAAA,sBAAP,SAA6BR,EAAU,CACnC,OAAQA,GAASA,EAAM,aAAeA,EAAM,OAAS,aACzD,EACJQ,CAAA,EAzFyCH,EAAQ,EAApC1C,GAAA,oBAAA6C,GAgGb,IAAAF,GAAA,SAAAI,EAAA,CAAsCC,GAAAL,EAAAI,CAAA,EAAtC,SAAAJ,GAAA,+CA4HA,CAxHI,OAAAA,EAAA,UAAA,OAAA,SAAOV,EAAe,CAMlB,GALKA,IAAUA,EAASjC,GAAA,YAAY,SAC/BA,GAAA,YAAYiC,IACb5B,GAAO,mBAAmB,sBAAuB,SAAU4B,CAAM,EAGjEA,IAAWjC,GAAA,YAAY,KACvB,OAAO,KAAK,UAAU,CAClB,KAAM,WACN,KAAM,KAAK,KACX,SAAU,KAAK,SACf,gBAAmB,KAAK,kBAAoB,aAAgB,KAAK,gBAAiB,OAClF,QAAS,KAAK,QACd,IAAM,KAAK,IAAM,KAAK,IAAI,SAAQ,EAAI,OACtC,OAAQ,KAAK,OAAO,IAAI,SAACiD,EAAK,CAAK,OAAA,KAAK,MAAMA,EAAM,OAAOhB,CAAM,CAAC,CAA/B,CAAgC,EACnE,QAAS,KAAK,QAAQ,IAAI,SAAC2B,EAAM,CAAK,OAAA,KAAK,MAAMA,EAAO,OAAO3B,CAAM,CAAC,CAAhC,CAAiC,EAC1E,EAGL,IAAIG,EAAS,GAEb,OAAIH,IAAWjC,GAAA,YAAY,UACvBoC,GAAU,aAGdA,GAAU,KAAK,KAAO,IAAM,KAAK,OAAO,IACpC,SAACa,EAAK,CAAK,OAAAA,EAAM,OAAOhB,CAAM,CAAnB,CAAoB,EACjC,KAAMA,IAAWjC,GAAA,YAAY,KAAQ,KAAM,GAAG,EAAI,KAEhDiC,IAAWjC,GAAA,YAAY,UACnB,KAAK,gBACD,KAAK,kBAAoB,eACzBoC,GAAW,KAAK,gBAAkB,KAE/B,KAAK,WACZA,GAAU,SAGV,KAAK,SAAW,KAAK,QAAQ,SAC7BA,GAAU,YAAc,KAAK,QAAQ,IACjC,SAACwB,EAAM,CAAK,OAAAA,EAAO,OAAO3B,CAAM,CAApB,CAAqB,EACnC,KAAK,IAAI,EAAI,MAGf,KAAK,KAAO,OACZG,GAAU,IAAM,KAAK,IAAI,SAAQ,EAAK,MAIvCA,EAAO,KAAI,CACtB,EAEOO,EAAA,KAAP,SAAYN,EAA+C,CACvD,OAAI,OAAOA,GAAW,SACXM,EAAiB,WAAWN,CAAK,EAErCM,EAAiB,WAAWN,CAAK,CAC5C,EAEOM,EAAA,WAAP,SAAkBN,EAAsC,CACpD,GAAIM,EAAiB,mBAAmBN,CAAK,EAAK,OAAOA,EAErDA,EAAM,OAAS,YACfhC,GAAO,mBAAmB,0BAA2B,QAASgC,CAAK,EAGvE,IAAIqB,EAAQD,GAAYpB,CAAK,EAEvBV,EAAuC,CACzC,KAAMU,EAAM,KACZ,KAAMa,GAAiBb,EAAM,IAAI,EACjC,SAAUqB,EAAM,SAChB,OAASrB,EAAM,OAASA,EAAM,OAAO,IAAIP,GAAU,UAAU,EAAG,CAAA,EAChE,QAAUO,EAAM,QAAUA,EAAM,QAAQ,IAAIP,GAAU,UAAU,EAAG,CAAA,EACnE,QAAS4B,EAAM,QACf,gBAAiBA,EAAM,gBACvB,IAAMrB,EAAM,IAAMpC,GAAA,UAAU,KAAKoC,EAAM,GAAG,EAAG,MAGjD,OAAO,IAAIM,EAAiBrC,GAAmBqB,CAAM,CACzD,EAEOgB,EAAA,WAAP,SAAkBN,EAAa,CAC3B,IAAIV,EAAc,CAAE,KAAM,UAAU,EACpCU,EAAQiB,GAASjB,EAAOV,CAAM,EAE9B,IAAI4B,EAAQlB,EAAM,MAAM,WAAW,EAC/BkB,EAAM,OAAS,GACflD,GAAO,mBAAmB,0BAA2B,QAASgC,CAAK,EAGvE,IAAIsB,EAASJ,EAAM,GAAG,MAAMJ,EAAU,EAatC,GAZKQ,GACDtD,GAAO,mBAAmB,6BAA8B,QAASgC,CAAK,EAG1EV,EAAO,KAAOgC,EAAO,GAAG,KAAI,EACxBhC,EAAO,MAAQuB,GAAiBvB,EAAO,IAAI,EAE/CA,EAAO,OAASY,GAAYoB,EAAO,GAAI,EAAK,EAE5CH,GAAeG,EAAO,GAAG,KAAI,EAAIhC,CAAM,EAGnC4B,EAAM,OAAS,EAAG,CACnB,IAAIM,EAAUN,EAAM,GAAG,MAAMJ,EAAU,GAClCU,EAAQ,GAAG,KAAI,GAAM,IAAMA,EAAQ,GAAG,KAAI,GAAM,KAChDxD,GAAO,mBAAmB,oBAAqB,QAASgC,CAAK,EAEjEV,EAAO,QAAUY,GAAYsB,EAAQ,GAAI,EAAK,OAE9ClC,EAAO,QAAU,CAAA,EAGrB,OAAOgB,EAAiB,WAAWhB,CAAM,CAC7C,EAEOgB,EAAA,mBAAP,SAA0BN,EAAU,CAChC,OAAQA,GAASA,EAAM,aAAeA,EAAM,OAAS,UACzD,EACJM,CAAA,EA5HsCE,EAAmB,EAA5C7C,GAAA,iBAAA2C,GAiIb,SAASmB,GAAeC,EAAuB,CAC3C,IAAMC,EAAMD,EAAS,OAAM,EAC3B,OAAIC,IAAQ,iBAAmBA,IAAQ,mBACnC3D,GAAO,mBAAmB,+BAAgC2D,EAAG,SAAW,WAAYD,CAAQ,EAEzFA,CACX,CAEA,IAAAjB,GAAA,SAAAC,EAAA,CAAmCC,GAAAF,EAAAC,CAAA,EAAnC,SAAAD,GAAA,+CAuEA,CArEI,OAAAA,EAAA,UAAA,OAAA,SAAOb,EAAe,CAMlB,GALKA,IAAUA,EAASjC,GAAA,YAAY,SAC/BA,GAAA,YAAYiC,IACb5B,GAAO,mBAAmB,sBAAuB,SAAU4B,CAAM,EAGjEA,IAAWjC,GAAA,YAAY,KACvB,OAAO,KAAK,UAAU,CAClB,KAAM,QACN,KAAM,KAAK,KACX,OAAQ,KAAK,OAAO,IAAI,SAACiD,EAAK,CAAK,OAAA,KAAK,MAAMA,EAAM,OAAOhB,CAAM,CAAC,CAA/B,CAAgC,EACtE,EAGL,IAAIG,EAAS,GAEb,OAAIH,IAAWjC,GAAA,YAAY,UACvBoC,GAAU,UAGdA,GAAU,KAAK,KAAO,IAAM,KAAK,OAAO,IACpC,SAACa,EAAK,CAAK,OAAAA,EAAM,OAAOhB,CAAM,CAAnB,CAAoB,EACjC,KAAMA,IAAWjC,GAAA,YAAY,KAAQ,KAAM,GAAG,EAAI,KAE7CoC,EAAO,KAAI,CACtB,EAEOU,EAAA,KAAP,SAAYT,EAA4C,CACpD,OAAI,OAAOA,GAAW,SACXS,EAAc,WAAWT,CAAK,EAElCS,EAAc,WAAWT,CAAK,CACzC,EAEOS,EAAA,WAAP,SAAkBT,EAAmC,CACjD,GAAIS,EAAc,gBAAgBT,CAAK,EAAK,OAAOA,EAE/CA,EAAM,OAAS,SACfhC,GAAO,mBAAmB,uBAAwB,QAASgC,CAAK,EAGpE,IAAMV,EAA+B,CACjC,KAAMU,EAAM,KACZ,KAAMa,GAAiBb,EAAM,IAAI,EACjC,OAASA,EAAM,OAASA,EAAM,OAAO,IAAIP,GAAU,UAAU,EAAG,CAAA,GAGpE,OAAOgC,GAAe,IAAIhB,EAAcxC,GAAmBqB,CAAM,CAAC,CACtE,EAEOmB,EAAA,WAAP,SAAkBT,EAAa,CAC3B,IAAIV,EAAc,CAAE,KAAM,OAAO,EAE7BgC,EAAStB,EAAM,MAAMc,EAAU,EACnC,OAAKQ,GACDtD,GAAO,mBAAmB,0BAA2B,QAASgC,CAAK,EAGvEV,EAAO,KAAOgC,EAAO,GAAG,KAAI,EACxBhC,EAAO,MAAQuB,GAAiBvB,EAAO,IAAI,EAE/CA,EAAO,OAASY,GAAYoB,EAAO,GAAI,EAAK,EAErCG,GAAehB,EAAc,WAAWnB,CAAM,CAAC,CAC1D,EAEOmB,EAAA,gBAAP,SAAuBT,EAAU,CAC7B,OAAQA,GAASA,EAAM,aAAeA,EAAM,OAAS,OACzD,EACJS,CAAA,EAvEmCJ,EAAQ,EAA9B1C,GAAA,cAAA8C,GAyEb,SAASxB,GAAWZ,EAAY,CAG5B,OAAIA,EAAK,MAAM,iBAAiB,EAC5BA,EAAO,UAAYA,EAAK,UAAU,CAAC,EAC5BA,EAAK,MAAM,gBAAgB,IAClCA,EAAO,SAAWA,EAAK,UAAU,CAAC,GAK/BA,CACX,CAGA,IAAMuD,GAAkB,IAAI,OAAO,4BAA4B,EAC/D,SAASf,GAAiBb,EAAa,CACnC,OAAI,CAACA,GAAS,CAACA,EAAM,MAAM4B,EAAe,IACtC5D,GAAO,mBAAmB,uBAAwBgC,EAAK,IAAM,QAASA,CAAK,EAExEA,CACX,CAEA,IAAMc,GAAa,IAAI,OAAO,8BAA8B,EAE5D,SAASV,GAAaJ,EAAa,CAC/BA,EAAQA,EAAM,KAAI,EAKlB,QAHID,EAAS,CAAA,EACT8B,EAAQ,GACRC,EAAQ,EACHC,EAAS,EAAGA,EAAS/B,EAAM,OAAQ+B,IAAU,CAClD,IAAI/C,EAAIgB,EAAM+B,GACV/C,IAAM,KAAO8C,IAAU,GACvB/B,EAAO,KAAK8B,CAAK,EACjBA,EAAQ,KAERA,GAAS7C,EACLA,IAAM,IACN8C,IACO9C,IAAM,MACb8C,IACIA,IAAU,IACV9D,GAAO,mBAAmB,yBAA0B,QAASgC,CAAK,IAKlF,OAAI6B,GAAS9B,EAAO,KAAK8B,CAAK,EAEvB9B,CACX,IC5iCA,IAAAiC,GAAAC,EAAAC,IAAA,yHAEA,IAAAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAMjC,SAAgBE,GAAkBC,EAAc,CAE5C,IAAMC,EAAgE,CAAA,EAEhEC,EAAc,SAASC,EAA8BC,EAAW,CAClE,GAAI,EAAC,MAAM,QAAQA,CAAM,EACzB,QAASC,KAAOD,EAAQ,CACpB,IAAME,EAAYH,EAAK,MAAK,EAC5BG,EAAU,KAAKD,CAAG,EAElB,GAAI,CACCH,EAAYI,EAAWF,EAAOC,EAAI,QAC9BE,EAAP,CACEN,EAAO,KAAK,CAAE,KAAMK,EAAW,MAAOC,CAAK,CAAE,GAGzD,EACA,OAAAL,EAAY,CAAA,EAAKF,CAAM,EAEhBC,CAEX,CArBAT,GAAA,kBAAAO,GAyBA,IAAAS,GAAA,UAAA,CAmBI,SAAAA,EAAYC,EAAcC,EAAcC,EAAmBC,EAAgB,CAEvE,KAAK,KAAOH,EACZ,KAAK,KAAOC,EACZ,KAAK,UAAYC,EACjB,KAAK,QAAUC,CACnB,CAEA,OAAAJ,EAAA,UAAA,YAAA,SAAYK,EAAiBC,EAAU,CACnChB,GAAO,mBAAmBe,EAAS,KAAK,UAAWC,CAAK,CAC5D,EAMJN,CAAA,EAnCA,EAAsBhB,GAAA,MAAAgB,GAqCtB,IAAAO,GAAA,UAAA,CAOI,SAAAA,EAAYC,EAAiB,EAnFjC,EAoFQrB,GAAA,gBAAe,KAAM,WAAYqB,GAAY,EAAE,EAC/C,KAAK,MAAQ,CAAA,EACb,KAAK,YAAc,EACnB,KAAK,SAAW,IAAI,WAAWA,CAAQ,CAC3C,CAEA,cAAA,eAAID,EAAA,UAAA,OAAI,KAAR,UAAA,CACI,OA3FR,EA2FetB,GAAA,WAAU,KAAK,KAAK,CAC/B,kCACA,OAAA,eAAIsB,EAAA,UAAA,SAAM,KAAV,UAAA,CAAuB,OAAO,KAAK,WAAa,kCAEhDA,EAAA,UAAA,WAAA,SAAWE,EAAgB,CACvB,YAAK,MAAM,KAAKA,CAAI,EACpB,KAAK,aAAeA,EAAK,OAClBA,EAAK,MAChB,EAEAF,EAAA,UAAA,aAAA,SAAaG,EAAc,CACvB,OAAO,KAAK,YAtGpB,EAsG+BzB,GAAA,QAAOyB,EAAO,KAAK,CAAC,CAC/C,EAGAH,EAAA,UAAA,WAAA,SAAWD,EAAgB,CACvB,IAAIK,GA3GZ,EA2GoB1B,GAAA,UAASqB,CAAK,EACpBM,EAAgBD,EAAM,OAAS,KAAK,SAC1C,OAAIC,IACAD,GA9GZ,EA8GoB1B,GAAA,QAAO,CAAE0B,EAAO,KAAK,SAAS,MAAMC,CAAa,CAAC,CAAE,GAEzD,KAAK,WAAWD,CAAK,CAChC,EAEAJ,EAAA,UAAA,UAAA,SAAUD,EAAmB,CACzB,IAAIK,GApHZ,EAoHoB1B,GAAA,UAASC,GAAA,UAAU,KAAKoB,CAAK,CAAC,EAC1C,OAAIK,EAAM,OAAS,KAAK,UACpBrB,GAAO,WAAW,sBAAuBF,GAAA,OAAO,OAAO,eAAgB,CACnE,OAAQ,KAAK,SACb,OAAQuB,EAAM,OACjB,EAEDA,EAAM,OAAS,KAAK,WACpBA,GA5HZ,EA4HoB1B,GAAA,QAAO,CAAE,KAAK,SAAS,MAAM0B,EAAM,OAAS,KAAK,QAAQ,EAAGA,CAAK,CAAE,GAExEA,CACX,EAGAJ,EAAA,UAAA,WAAA,SAAWD,EAAmB,CAC1B,OAAO,KAAK,WAAW,KAAK,UAAUA,CAAK,CAAC,CAChD,EAEAC,EAAA,UAAA,oBAAA,UAAA,CAAA,IAAAM,EAAA,KACUC,EAAS,KAAK,MAAM,OAC1B,YAAK,MAAM,KAAK,KAAK,QAAQ,EAC7B,KAAK,aAAe,KAAK,SAClB,SAACR,EAAmB,CACvBO,EAAK,MAAMC,GAAUD,EAAK,UAAUP,CAAK,CAC7C,CACJ,EACJC,CAAA,EAlEA,EAAavB,GAAA,OAAAuB,GAoEb,IAAAQ,GAAA,UAAA,CASI,SAAAA,EAAYN,EAAiBD,EAAmBQ,EAAyBC,EAAoB,EAzJjG,EA0JQ9B,GAAA,gBAAe,KAAM,SA1J7B,EA0JsCF,GAAA,UAASwB,CAAI,CAAC,GA1JpD,EA2JQtB,GAAA,gBAAe,KAAM,WAAYqB,GAAY,EAAE,GA3JvD,EA4JQrB,GAAA,gBAAe,KAAM,cAAe6B,CAAU,GA5JtD,EA6JQ7B,GAAA,gBAAe,KAAM,aAAc8B,CAAU,EAE7C,KAAK,QAAU,CACnB,CAEA,cAAA,eAAIF,EAAA,UAAA,OAAI,KAAR,UAAA,CAAqB,OAlKzB,EAkKgC9B,GAAA,SAAQ,KAAK,KAAK,CAAG,kCACjD,OAAA,eAAI8B,EAAA,UAAA,WAAQ,KAAZ,UAAA,CAAyB,OAAO,KAAK,OAAS,kCAGvCA,EAAA,OAAP,SAAcd,EAAcK,EAAU,CAClC,IAAIY,EAAQjB,EAAK,MAAM,iBAAiB,EACxC,OAAIiB,GAAS,SAASA,EAAM,EAAE,GAAK,KAAMZ,EAASA,EAAM,SAAQ,GACzDA,CACX,EAEAS,EAAA,UAAA,OAAA,SAAOd,EAAcK,EAAU,CAC3B,OAAI,KAAK,YAAsB,KAAK,YAAYL,EAAMK,CAAK,EACpDS,EAAO,OAAOd,EAAMK,CAAK,CACpC,EAEAS,EAAA,UAAA,WAAA,SAAWD,EAAgBK,EAAgBC,EAAe,CACtD,IAAIC,EAAgB,KAAK,KAAKF,EAAS,KAAK,QAAQ,EAAI,KAAK,SAC7D,OAAI,KAAK,QAAUE,EAAgB,KAAK,MAAM,SACtC,KAAK,YAAcD,GAAS,KAAK,QAAUD,GAAU,KAAK,MAAM,OAChEE,EAAgBF,EAEhB7B,GAAO,WAAW,qBAAsBF,GAAA,OAAO,OAAO,eAAgB,CAClE,OAAQ,KAAK,MAAM,OACnB,OAAQ,KAAK,QAAUiC,EAC1B,GAGF,KAAK,MAAM,MAAM,KAAK,QAAS,KAAK,QAAUA,CAAa,CACtE,EAEAN,EAAA,UAAA,UAAA,SAAUD,EAAc,CACpB,OAAO,IAAIC,EAAO,KAAK,MAAM,MAAM,KAAK,QAAUD,CAAM,EAAG,KAAK,SAAU,KAAK,YAAa,KAAK,UAAU,CAC/G,EAEAC,EAAA,UAAA,UAAA,SAAUI,EAAgBC,EAAe,CACrC,IAAIT,EAAQ,KAAK,WAAW,EAAGQ,EAAQ,CAAC,CAACC,CAAK,EAC9C,YAAK,SAAWT,EAAM,OAEfA,EAAM,MAAM,EAAGQ,CAAM,CAChC,EAEAJ,EAAA,UAAA,UAAA,UAAA,CACI,OAAO7B,GAAA,UAAU,KAAK,KAAK,UAAU,KAAK,QAAQ,CAAC,CACvD,EACJ6B,CAAA,EA9DA,EAAa/B,GAAA,OAAA+B,KChJb,IAAAO,GAAAC,EAAA,CAAAC,GAAAC,KAAA,EASC,UAAY,CACX,aAEA,IAAIC,EAAc,wBACdC,EAAiB,0BACjBC,EAAS,OAAO,QAAW,SAC3BC,EAAOD,EAAS,OAAS,CAAC,EAC1BC,EAAK,oBACPD,EAAS,IAEX,IAAIE,EAAa,CAACF,GAAU,OAAO,MAAS,SACxCG,EAAU,CAACF,EAAK,oBAAsB,OAAO,SAAY,UAAY,QAAQ,UAAY,QAAQ,SAAS,KAC1GE,EACFF,EAAO,OACEC,IACTD,EAAO,MAET,IAAIG,EAAY,CAACH,EAAK,sBAAwB,OAAOJ,IAAW,UAAYA,GAAO,QAC/EQ,EAAM,OAAO,QAAW,YAAc,OAAO,IAC7CC,EAAe,CAACL,EAAK,yBAA2B,OAAO,YAAgB,IACvEM,EAAY,mBAAmB,MAAM,EAAE,EACvCC,EAAgB,CAAC,GAAI,KAAM,QAAS,SAAS,EAC7CC,EAAiB,CAAC,EAAG,KAAM,OAAQ,QAAQ,EAC3CC,EAAiB,CAAC,EAAG,IAAK,MAAO,QAAQ,EACzCC,EAAU,CAAC,EAAG,KAAM,OAAQ,SAAS,EACrCC,EAAQ,CAAC,EAAG,EAAG,GAAI,EAAE,EACrBC,EAAK,CAAC,EAAG,EAAG,MAAO,EAAG,MAAO,WAAY,WAAY,WAAY,MAAO,EAAG,WAC7E,EAAG,WAAY,WAAY,MAAO,WAAY,IAAK,EAAG,IAAK,EAAG,WAAY,EAC1E,WAAY,EAAG,WAAY,EAAG,IAAK,WAAY,MAAO,WAAY,MAClE,WAAY,MAAO,WAAY,IAAK,WAAY,MAAO,EAAG,WAAY,WACtE,WAAY,WAAY,MAAO,WAAY,WAAY,EAAG,WAAY,UAAU,EAC9EC,EAAO,CAAC,IAAK,IAAK,IAAK,GAAG,EAC1BC,EAAa,CAAC,IAAK,GAAG,EACtBC,EAAe,CAAC,MAAO,SAAU,cAAe,QAAS,QAAQ,EACjEC,EAAiB,CACnB,IAAO,IACP,IAAO,GACT,GAEIhB,EAAK,oBAAsB,CAAC,MAAM,WACpC,MAAM,QAAU,SAAUiB,EAAK,CAC7B,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAG,IAAM,gBACjD,GAGEZ,IAAiBL,EAAK,iCAAmC,CAAC,YAAY,UACxE,YAAY,OAAS,SAAUiB,EAAK,CAClC,OAAO,OAAOA,GAAQ,UAAYA,EAAI,QAAUA,EAAI,OAAO,cAAgB,WAC7E,GA+FF,QA5FIC,EAAqB,SAAUC,EAAMC,EAASC,EAAY,CAC5D,OAAO,SAAUC,EAAS,CACxB,OAAO,IAAIC,EAAOJ,EAAMC,EAASD,CAAI,EAAE,OAAOG,CAAO,EAAED,GAAY,CACrE,CACF,EAEIG,EAA0B,SAAUL,EAAMC,EAASC,EAAY,CACjE,OAAO,SAAUC,EAASG,EAAY,CACpC,OAAO,IAAIF,EAAOJ,EAAMC,EAASK,CAAU,EAAE,OAAOH,CAAO,EAAED,GAAY,CAC3E,CACF,EAEIK,EAA2B,SAAUP,EAAMC,EAASC,EAAY,CAClE,OAAO,SAAUC,EAASG,EAAYE,EAAGC,EAAG,CAC1C,OAAOC,EAAQ,SAAWV,GAAM,OAAOG,EAASG,EAAYE,EAAGC,CAAC,EAAEP,GAAY,CAChF,CACF,EAEIS,EAAyB,SAAUX,EAAMC,EAASC,EAAY,CAChE,OAAO,SAAUU,EAAKT,EAASG,EAAYG,EAAG,CAC5C,OAAOC,EAAQ,OAASV,GAAM,OAAOY,EAAKT,EAASG,EAAYG,CAAC,EAAEP,GAAY,CAChF,CACF,EAEIW,EAAsB,SAAUC,EAAQC,EAAcf,EAAMC,EAAS,CACvE,QAASe,EAAI,EAAGA,EAAIpB,EAAa,OAAQ,EAAEoB,EAAG,CAC5C,IAAIC,EAAOrB,EAAaoB,GACxBF,EAAOG,GAAQF,EAAaf,EAAMC,EAASgB,CAAI,CACjD,CACA,OAAOH,CACT,EAEIC,EAAe,SAAUf,EAAMC,EAAS,CAC1C,IAAIa,EAASf,EAAmBC,EAAMC,EAAS,KAAK,EACpD,OAAAa,EAAO,OAAS,UAAY,CAC1B,OAAO,IAAIV,EAAOJ,EAAMC,EAASD,CAAI,CACvC,EACAc,EAAO,OAAS,SAAUX,EAAS,CACjC,OAAOW,EAAO,OAAO,EAAE,OAAOX,CAAO,CACvC,EACOU,EAAoBC,EAAQf,EAAoBC,EAAMC,CAAO,CACtE,EAEIiB,EAAoB,SAAUlB,EAAMC,EAAS,CAC/C,IAAIa,EAAST,EAAwBL,EAAMC,EAAS,KAAK,EACzD,OAAAa,EAAO,OAAS,SAAUR,EAAY,CACpC,OAAO,IAAIF,EAAOJ,EAAMC,EAASK,CAAU,CAC7C,EACAQ,EAAO,OAAS,SAAUX,EAASG,EAAY,CAC7C,OAAOQ,EAAO,OAAOR,CAAU,EAAE,OAAOH,CAAO,CACjD,EACOU,EAAoBC,EAAQT,EAAyBL,EAAMC,CAAO,CAC3E,EAEIkB,EAAqB,SAAUnB,EAAMC,EAAS,CAChD,IAAImB,EAAIvB,EAAeG,GACnBc,EAASP,EAAyBP,EAAMC,EAAS,KAAK,EAC1D,OAAAa,EAAO,OAAS,SAAUR,EAAYE,EAAGC,EAAG,CAC1C,MAAI,CAACD,GAAK,CAACC,EACFC,EAAQ,QAAUV,GAAM,OAAOM,CAAU,EAEzC,IAAIF,EAAOJ,EAAMC,EAASK,CAAU,EAAE,QAAQ,CAACE,EAAGC,CAAC,EAAGW,CAAC,CAElE,EACAN,EAAO,OAAS,SAAUX,EAASG,EAAYE,EAAGC,EAAG,CACnD,OAAOK,EAAO,OAAOR,EAAYE,EAAGC,CAAC,EAAE,OAAON,CAAO,CACvD,EACOU,EAAoBC,EAAQP,EAA0BP,EAAMC,CAAO,CAC5E,EAEIoB,EAAmB,SAAUrB,EAAMC,EAAS,CAC9C,IAAImB,EAAIvB,EAAeG,GACnBc,EAASH,EAAuBX,EAAMC,EAAS,KAAK,EACxD,OAAAa,EAAO,OAAS,SAAUF,EAAKN,EAAYG,EAAG,CAC5C,OAAO,IAAIa,EAAKtB,EAAMC,EAASK,CAAU,EAAE,QAAQ,CAAC,OAAQG,CAAC,EAAGW,CAAC,EAAE,QAAQ,CAACR,CAAG,EAAGQ,CAAC,CACrF,EACAN,EAAO,OAAS,SAAUF,EAAKT,EAASG,EAAYG,EAAG,CACrD,OAAOK,EAAO,OAAOF,EAAKN,EAAYG,CAAC,EAAE,OAAON,CAAO,CACzD,EACOU,EAAoBC,EAAQH,EAAwBX,EAAMC,CAAO,CAC1E,EAEIsB,EAAa,CACf,CAAE,KAAM,SAAU,QAASjC,EAAgB,KAAMI,EAAM,aAAcqB,CAAa,EAClF,CAAE,KAAM,OAAQ,QAASxB,EAAS,KAAMG,EAAM,aAAcqB,CAAa,EACzE,CAAE,KAAM,QAAS,QAAS3B,EAAe,KAAMO,EAAY,aAAcuB,CAAkB,EAC3F,CAAE,KAAM,SAAU,QAAS7B,EAAgB,KAAMM,EAAY,aAAcwB,CAAmB,EAC9F,CAAE,KAAM,OAAQ,QAAS9B,EAAgB,KAAMM,EAAY,aAAc0B,CAAiB,CAC5F,EAEIX,EAAU,CAAC,EAAGc,EAAc,CAAC,EAExBR,EAAI,EAAGA,EAAIO,EAAW,OAAQ,EAAEP,EAGvC,QAFIS,EAAYF,EAAWP,GACvBhB,EAAOyB,EAAU,KACZC,EAAI,EAAGA,EAAI1B,EAAK,OAAQ,EAAE0B,EAAG,CACpC,IAAIC,EAAaF,EAAU,KAAO,IAAMzB,EAAK0B,GAG7C,GAFAF,EAAY,KAAKG,CAAU,EAC3BjB,EAAQiB,GAAcF,EAAU,aAAazB,EAAK0B,GAAID,EAAU,OAAO,EACnEA,EAAU,OAAS,OAAQ,CAC7B,IAAIG,EAAgBH,EAAU,KAAOzB,EAAK0B,GAC1CF,EAAY,KAAKI,CAAa,EAC9BlB,EAAQkB,GAAiBlB,EAAQiB,EACnC,CACF,CAGF,SAASvB,EAAOJ,EAAMC,EAASK,EAAY,CACzC,KAAK,OAAS,CAAC,EACf,KAAK,EAAI,CAAC,EACV,KAAK,QAAUL,EACf,KAAK,WAAaK,EAClB,KAAK,MAAQ,GACb,KAAK,UAAY,GACjB,KAAK,MAAQ,EACb,KAAK,MAAQ,EACb,KAAK,WAAc,MAAQN,GAAQ,IAAO,EAC1C,KAAK,UAAY,KAAK,YAAc,EACpC,KAAK,aAAeM,GAAc,EAClC,KAAK,YAAcA,EAAa,KAAO,EAEvC,QAASU,EAAI,EAAGA,EAAI,GAAI,EAAEA,EACxB,KAAK,EAAEA,GAAK,CAEhB,CAEAZ,EAAO,UAAU,OAAS,SAAUD,EAAS,CAC3C,GAAI,KAAK,UACP,MAAM,IAAI,MAAMxB,CAAc,EAEhC,IAAIkD,EAAWZ,EAAO,OAAOd,EAC7B,GAAIc,IAAS,SAAU,CACrB,GAAIA,IAAS,SAAU,CACrB,GAAId,IAAY,KACd,MAAM,IAAI,MAAMzB,CAAW,EACtB,GAAIQ,GAAgBiB,EAAQ,cAAgB,YACjDA,EAAU,IAAI,WAAWA,CAAO,UACvB,CAAC,MAAM,QAAQA,CAAO,IAC3B,CAACjB,GAAgB,CAAC,YAAY,OAAOiB,CAAO,GAC9C,MAAM,IAAI,MAAMzB,CAAW,CAGjC,KACE,OAAM,IAAI,MAAMA,CAAW,EAE7BmD,EAAY,EACd,CAIA,QAHIC,EAAS,KAAK,OAAQC,EAAY,KAAK,UAAWC,EAAS7B,EAAQ,OACrE8B,EAAa,KAAK,WAAYC,EAAQ,EAAGzB,GAAI,KAAK,EAAGO,EAAGmB,EAEnDD,EAAQF,GAAQ,CACrB,GAAI,KAAK,MAGP,IAFA,KAAK,MAAQ,GACbF,EAAO,GAAK,KAAK,MACZd,EAAI,EAAGA,EAAIiB,EAAa,EAAG,EAAEjB,EAChCc,EAAOd,GAAK,EAGhB,GAAIa,EACF,IAAKb,EAAI,KAAK,MAAOkB,EAAQF,GAAUhB,EAAIe,EAAW,EAAEG,EACtDJ,EAAOd,GAAK,IAAMb,EAAQ+B,IAAU1C,EAAMwB,IAAM,OAGlD,KAAKA,EAAI,KAAK,MAAOkB,EAAQF,GAAUhB,EAAIe,EAAW,EAAEG,EACtDC,EAAOhC,EAAQ,WAAW+B,CAAK,EAC3BC,EAAO,IACTL,EAAOd,GAAK,IAAMmB,GAAQ3C,EAAMwB,IAAM,GAC7BmB,EAAO,MAChBL,EAAOd,GAAK,KAAO,IAAQmB,GAAQ,IAAO3C,EAAMwB,IAAM,GACtDc,EAAOd,GAAK,KAAO,IAAQmB,EAAO,KAAU3C,EAAMwB,IAAM,IAC/CmB,EAAO,OAAUA,GAAQ,OAClCL,EAAOd,GAAK,KAAO,IAAQmB,GAAQ,KAAQ3C,EAAMwB,IAAM,GACvDc,EAAOd,GAAK,KAAO,IAASmB,GAAQ,EAAK,KAAU3C,EAAMwB,IAAM,GAC/Dc,EAAOd,GAAK,KAAO,IAAQmB,EAAO,KAAU3C,EAAMwB,IAAM,KAExDmB,EAAO,QAAaA,EAAO,OAAU,GAAOhC,EAAQ,WAAW,EAAE+B,CAAK,EAAI,MAC1EJ,EAAOd,GAAK,KAAO,IAAQmB,GAAQ,KAAQ3C,EAAMwB,IAAM,GACvDc,EAAOd,GAAK,KAAO,IAASmB,GAAQ,GAAM,KAAU3C,EAAMwB,IAAM,GAChEc,EAAOd,GAAK,KAAO,IAASmB,GAAQ,EAAK,KAAU3C,EAAMwB,IAAM,GAC/Dc,EAAOd,GAAK,KAAO,IAAQmB,EAAO,KAAU3C,EAAMwB,IAAM,IAK9D,GADA,KAAK,cAAgBA,EACjBA,GAAKe,EAAW,CAGlB,IAFA,KAAK,MAAQf,EAAIe,EACjB,KAAK,MAAQD,EAAOG,GACfjB,EAAI,EAAGA,EAAIiB,EAAY,EAAEjB,EAC5BP,GAAEO,IAAMc,EAAOd,GAEjBoB,EAAE3B,EAAC,EACH,KAAK,MAAQ,EACf,MACE,KAAK,MAAQO,CAEjB,CACA,OAAO,IACT,EAEAZ,EAAO,UAAU,OAAS,SAAUiC,EAAGC,EAAO,CAC5C,IAAIC,EAAIF,EAAI,IAAK7B,EAAI,EACjBgC,EAAQ,CAACD,CAAC,EAGd,IAFAF,EAAIA,GAAK,EACTE,EAAIF,EAAI,IACDE,EAAI,GACTC,EAAM,QAAQD,CAAC,EACfF,EAAIA,GAAK,EACTE,EAAIF,EAAI,IACR,EAAE7B,EAEJ,OAAI8B,EACFE,EAAM,KAAKhC,CAAC,EAEZgC,EAAM,QAAQhC,CAAC,EAEjB,KAAK,OAAOgC,CAAK,EACVA,EAAM,MACf,EAEApC,EAAO,UAAU,aAAe,SAAUqC,EAAK,CAC7C,IAAIZ,EAAWZ,EAAO,OAAOwB,EAC7B,GAAIxB,IAAS,SAAU,CACrB,GAAIA,IAAS,SAAU,CACrB,GAAIwB,IAAQ,KACV,MAAM,IAAI,MAAM/D,CAAW,EACtB,GAAIQ,GAAgBuD,EAAI,cAAgB,YAC7CA,EAAM,IAAI,WAAWA,CAAG,UACf,CAAC,MAAM,QAAQA,CAAG,IACvB,CAACvD,GAAgB,CAAC,YAAY,OAAOuD,CAAG,GAC1C,MAAM,IAAI,MAAM/D,CAAW,CAGjC,KACE,OAAM,IAAI,MAAMA,CAAW,EAE7BmD,EAAY,EACd,CACA,IAAIW,EAAQ,EAAGR,EAASS,EAAI,OAC5B,GAAIZ,EACFW,EAAQR,MAER,SAAShB,EAAI,EAAGA,EAAIyB,EAAI,OAAQ,EAAEzB,EAAG,CACnC,IAAImB,EAAOM,EAAI,WAAWzB,CAAC,EACvBmB,EAAO,IACTK,GAAS,EACAL,EAAO,KAChBK,GAAS,EACAL,EAAO,OAAUA,GAAQ,MAClCK,GAAS,GAETL,EAAO,QAAaA,EAAO,OAAU,GAAOM,EAAI,WAAW,EAAEzB,CAAC,EAAI,MAClEwB,GAAS,EAEb,CAEF,OAAAA,GAAS,KAAK,OAAOA,EAAQ,CAAC,EAC9B,KAAK,OAAOC,CAAG,EACRD,CACT,EAEApC,EAAO,UAAU,QAAU,SAAUsC,EAAMtB,EAAG,CAE5C,QADIoB,EAAQ,KAAK,OAAOpB,CAAC,EAChBJ,EAAI,EAAGA,EAAI0B,EAAK,OAAQ,EAAE1B,EACjCwB,GAAS,KAAK,aAAaE,EAAK1B,EAAE,EAEpC,IAAI2B,EAAevB,EAAIoB,EAAQpB,EAC3BwB,EAAQ,CAAC,EACb,OAAAA,EAAM,OAASD,EACf,KAAK,OAAOC,CAAK,EACV,IACT,EAEAxC,EAAO,UAAU,SAAW,UAAY,CACtC,GAAI,MAAK,UAGT,MAAK,UAAY,GACjB,IAAI0B,EAAS,KAAK,OAAQd,EAAI,KAAK,cAAeiB,EAAa,KAAK,WAAYxB,EAAI,KAAK,EAEzF,GADAqB,EAAOd,GAAK,IAAM,KAAK,QAAQA,EAAI,GAC/B,KAAK,gBAAkB,KAAK,UAE9B,IADAc,EAAO,GAAKA,EAAOG,GACdjB,EAAI,EAAGA,EAAIiB,EAAa,EAAG,EAAEjB,EAChCc,EAAOd,GAAK,EAIhB,IADAc,EAAOG,EAAa,IAAM,WACrBjB,EAAI,EAAGA,EAAIiB,EAAY,EAAEjB,EAC5BP,EAAEO,IAAMc,EAAOd,GAEjBoB,EAAE3B,CAAC,EACL,EAEAL,EAAO,UAAU,SAAWA,EAAO,UAAU,IAAM,UAAY,CAC7D,KAAK,SAAS,EAKd,QAHI6B,EAAa,KAAK,WAAYxB,EAAI,KAAK,EAAGoC,EAAe,KAAK,aAChEC,EAAa,KAAK,WAAY9B,EAAI,EAAGU,EAAI,EACvCqB,EAAM,GAAIC,EACPtB,EAAImB,GAAc,CACvB,IAAK7B,EAAI,EAAGA,EAAIiB,GAAcP,EAAImB,EAAc,EAAE7B,EAAG,EAAEU,EACrDsB,EAAQvC,EAAEO,GACV+B,GAAO5D,EAAW6D,GAAS,EAAK,IAAQ7D,EAAU6D,EAAQ,IACxD7D,EAAW6D,GAAS,GAAM,IAAQ7D,EAAW6D,GAAS,EAAK,IAC3D7D,EAAW6D,GAAS,GAAM,IAAQ7D,EAAW6D,GAAS,GAAM,IAC5D7D,EAAW6D,GAAS,GAAM,IAAQ7D,EAAW6D,GAAS,GAAM,IAE5DtB,EAAIO,IAAe,IACrBG,EAAE3B,CAAC,EACHO,EAAI,EAER,CACA,OAAI8B,IACFE,EAAQvC,EAAEO,GACV+B,GAAO5D,EAAW6D,GAAS,EAAK,IAAQ7D,EAAU6D,EAAQ,IACtDF,EAAa,IACfC,GAAO5D,EAAW6D,GAAS,GAAM,IAAQ7D,EAAW6D,GAAS,EAAK,KAEhEF,EAAa,IACfC,GAAO5D,EAAW6D,GAAS,GAAM,IAAQ7D,EAAW6D,GAAS,GAAM,MAGhED,CACT,EAEA3C,EAAO,UAAU,YAAc,UAAY,CACzC,KAAK,SAAS,EAEd,IAAI6B,EAAa,KAAK,WAAYxB,EAAI,KAAK,EAAGoC,EAAe,KAAK,aAChEC,EAAa,KAAK,WAAY9B,EAAI,EAAGU,EAAI,EACvCc,EAAQ,KAAK,YAAc,EAC3BS,EACAH,EACFG,EAAS,IAAI,YAAaJ,EAAe,GAAM,CAAC,EAEhDI,EAAS,IAAI,YAAYT,CAAK,EAGhC,QADIU,GAAQ,IAAI,YAAYD,CAAM,EAC3BvB,EAAImB,GAAc,CACvB,IAAK7B,EAAI,EAAGA,EAAIiB,GAAcP,EAAImB,EAAc,EAAE7B,EAAG,EAAEU,EACrDwB,GAAMxB,GAAKjB,EAAEO,GAEXU,EAAIO,IAAe,GACrBG,EAAE3B,CAAC,CAEP,CACA,OAAIqC,IACFI,GAAMlC,GAAKP,EAAEO,GACbiC,EAASA,EAAO,MAAM,EAAGT,CAAK,GAEzBS,CACT,EAEA7C,EAAO,UAAU,OAASA,EAAO,UAAU,YAE3CA,EAAO,UAAU,OAASA,EAAO,UAAU,MAAQ,UAAY,CAC7D,KAAK,SAAS,EAKd,QAHI6B,EAAa,KAAK,WAAYxB,EAAI,KAAK,EAAGoC,EAAe,KAAK,aAChEC,EAAa,KAAK,WAAY9B,EAAI,EAAGU,EAAI,EACvCwB,EAAQ,CAAC,EAAGC,EAAQH,GACjBtB,EAAImB,GAAc,CACvB,IAAK7B,EAAI,EAAGA,EAAIiB,GAAcP,EAAImB,EAAc,EAAE7B,EAAG,EAAEU,EACrDyB,EAASzB,GAAK,EACdsB,GAAQvC,EAAEO,GACVkC,EAAMC,GAAUH,GAAQ,IACxBE,EAAMC,EAAS,GAAMH,IAAS,EAAK,IACnCE,EAAMC,EAAS,GAAMH,IAAS,GAAM,IACpCE,EAAMC,EAAS,GAAMH,IAAS,GAAM,IAElCtB,EAAIO,IAAe,GACrBG,EAAE3B,CAAC,CAEP,CACA,OAAIqC,IACFK,EAASzB,GAAK,EACdsB,GAAQvC,EAAEO,GACVkC,EAAMC,GAAUH,GAAQ,IACpBF,EAAa,IACfI,EAAMC,EAAS,GAAMH,IAAS,EAAK,KAEjCF,EAAa,IACfI,EAAMC,EAAS,GAAMH,IAAS,GAAM,MAGjCE,CACT,EAEA,SAAS5B,EAAKtB,EAAMC,EAASK,EAAY,CACvCF,EAAO,KAAK,KAAMJ,EAAMC,EAASK,CAAU,CAC7C,CAEAgB,EAAK,UAAY,IAAIlB,EAErBkB,EAAK,UAAU,SAAW,UAAY,CACpC,YAAK,OAAO,KAAK,WAAY,EAAI,EAC1BlB,EAAO,UAAU,SAAS,KAAK,IAAI,CAC5C,EAEA,IAAIgC,EAAI,SAAU3B,EAAG,CACnB,IAAI2C,EAAGC,EAAG7C,EAAG8C,EAAIC,EAAIC,EAAIC,EAAIC,GAAIC,EAAIC,EAAIC,GAAIC,GAAIC,GAC/CC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAC3EC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAC3EC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAC7E,IAAKzG,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB8C,EAAK7C,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtC8C,EAAK9C,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtC+C,EAAK/C,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCgD,EAAKhD,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCiD,GAAKjD,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCkD,EAAKlD,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCmD,EAAKnD,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCoD,GAAKpD,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCqD,GAAKrD,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCsD,GAAKtD,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAEtC2C,EAAIU,IAAON,GAAM,EAAMC,IAAO,IAC9BJ,EAAIU,IAAON,GAAM,EAAMD,IAAO,IAC9B/C,EAAE,IAAM2C,EACR3C,EAAE,IAAM4C,EACR5C,EAAE,KAAO2C,EACT3C,EAAE,KAAO4C,EACT5C,EAAE,KAAO2C,EACT3C,EAAE,KAAO4C,EACT5C,EAAE,KAAO2C,EACT3C,EAAE,KAAO4C,EACT5C,EAAE,KAAO2C,EACT3C,EAAE,KAAO4C,EACTD,EAAIE,GAAOI,IAAM,EAAMC,IAAO,IAC9BN,EAAIE,GAAOI,GAAM,EAAMD,KAAO,IAC9BjD,EAAE,IAAM2C,EACR3C,EAAE,IAAM4C,EACR5C,EAAE,KAAO2C,EACT3C,EAAE,KAAO4C,EACT5C,EAAE,KAAO2C,EACT3C,EAAE,KAAO4C,EACT5C,EAAE,KAAO2C,EACT3C,EAAE,KAAO4C,EACT5C,EAAE,KAAO2C,EACT3C,EAAE,KAAO4C,EACTD,EAAII,GAAOI,GAAM,EAAMC,KAAO,IAC9BR,EAAII,GAAOI,IAAM,EAAMD,IAAO,IAC9BnD,EAAE,IAAM2C,EACR3C,EAAE,IAAM4C,EACR5C,EAAE,KAAO2C,EACT3C,EAAE,KAAO4C,EACT5C,EAAE,KAAO2C,EACT3C,EAAE,KAAO4C,EACT5C,EAAE,KAAO2C,EACT3C,EAAE,KAAO4C,EACT5C,EAAE,KAAO2C,EACT3C,EAAE,KAAO4C,EACTD,EAAIM,IAAOI,IAAM,EAAMC,KAAO,IAC9BV,EAAIM,GAAOI,IAAM,EAAMD,KAAO,IAC9BrD,EAAE,IAAM2C,EACR3C,EAAE,IAAM4C,EACR5C,EAAE,KAAO2C,EACT3C,EAAE,KAAO4C,EACT5C,EAAE,KAAO2C,EACT3C,EAAE,KAAO4C,EACT5C,EAAE,KAAO2C,EACT3C,EAAE,KAAO4C,EACT5C,EAAE,KAAO2C,EACT3C,EAAE,KAAO4C,EACTD,EAAIQ,GAAON,GAAM,EAAMC,IAAO,IAC9BF,EAAIQ,IAAON,GAAM,EAAMD,IAAO,IAC9B7C,EAAE,IAAM2C,EACR3C,EAAE,IAAM4C,EACR5C,EAAE,KAAO2C,EACT3C,EAAE,KAAO4C,EACT5C,EAAE,KAAO2C,EACT3C,EAAE,KAAO4C,EACT5C,EAAE,KAAO2C,EACT3C,EAAE,KAAO4C,EACT5C,EAAE,KAAO2C,EACT3C,EAAE,KAAO4C,EAETW,GAAKvD,EAAE,GACPwD,GAAKxD,EAAE,GACPuF,GAAOvF,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCwF,GAAOxF,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCqE,GAAOrE,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCsE,GAAOtE,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCqG,GAAOrG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCsG,GAAOtG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCmF,GAAOnF,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCoF,GAAOpF,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjC2E,GAAO3E,EAAE,IAAM,EAAMA,EAAE,KAAO,GAC9B4E,GAAO5E,EAAE,IAAM,EAAMA,EAAE,KAAO,GAC9ByD,GAAMzD,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChC0D,GAAM1D,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChCyF,GAAOzF,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjC0F,GAAO1F,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCuE,GAAOvE,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCwE,GAAOxE,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCuG,GAAOvG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCwG,GAAOxG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChC+F,GAAO/F,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/BgG,GAAOhG,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/B6E,GAAO7E,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChC8E,GAAO9E,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChC2D,GAAM3D,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChC4D,GAAM5D,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChC2F,GAAO3F,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjC4F,GAAO5F,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCyE,GAAOzE,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjC0E,GAAO1E,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCiE,GAAOjE,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/BkE,GAAOlE,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/BiG,GAAOjG,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCkG,GAAOlG,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjC+E,GAAO/E,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCgF,GAAOhF,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjC6D,GAAM7D,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChC8D,GAAM9D,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChC6F,GAAO7F,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjC8F,GAAO9F,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCqF,GAAOrF,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/BsF,GAAOtF,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/BmE,GAAOnE,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCoE,GAAOpE,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCmG,GAAOnG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCoG,GAAOpG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCiF,GAAOjF,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCkF,GAAOlF,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChC+D,GAAM/D,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChCgE,GAAMhE,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAEhCA,EAAE,GAAKuD,GAAM,CAACE,GAAKE,GACnB3D,EAAE,GAAKwD,GAAM,CAACE,GAAKE,GACnB5D,EAAE,IAAMiE,GAAO,CAACE,GAAME,GACtBrE,EAAE,IAAMkE,GAAO,CAACE,GAAME,GACtBtE,EAAE,IAAM2E,GAAO,CAACE,GAAME,GACtB/E,EAAE,IAAM4E,GAAO,CAACE,GAAME,GACtBhF,EAAE,IAAMqF,GAAO,CAACE,GAAME,GACtBzF,EAAE,IAAMsF,GAAO,CAACE,GAAME,GACtB1F,EAAE,IAAM+F,GAAO,CAACE,GAAME,GACtBnG,EAAE,IAAMgG,GAAO,CAACE,GAAME,GACtBpG,EAAE,GAAKyD,GAAM,CAACE,GAAKE,GACnB7D,EAAE,GAAK0D,GAAM,CAACE,GAAKE,GACnB9D,EAAE,IAAMmE,GAAO,CAACE,GAAME,GACtBvE,EAAE,IAAMoE,GAAO,CAACE,GAAME,GACtBxE,EAAE,IAAM6E,GAAO,CAACE,GAAME,GACtBjF,EAAE,IAAM8E,GAAO,CAACE,GAAME,GACtBlF,EAAE,IAAMuF,GAAO,CAACE,GAAME,GACtB3F,EAAE,IAAMwF,GAAO,CAACE,GAAME,GACtB5F,EAAE,IAAMiG,GAAO,CAACE,GAAME,GACtBrG,EAAE,IAAMkG,GAAO,CAACE,GAAME,GACtBtG,EAAE,GAAK2D,GAAM,CAACE,GAAKE,GACnB/D,EAAE,GAAK4D,GAAM,CAACE,GAAKE,GACnBhE,EAAE,IAAMqE,GAAO,CAACE,GAAME,GACtBzE,EAAE,IAAMsE,GAAO,CAACE,GAAME,GACtB1E,EAAE,IAAM+E,GAAO,CAACE,GAAME,GACtBnF,EAAE,IAAMgF,GAAO,CAACE,GAAME,GACtBpF,EAAE,IAAMyF,GAAO,CAACE,GAAME,GACtB7F,EAAE,IAAM0F,GAAO,CAACE,GAAME,GACtB9F,EAAE,IAAMmG,GAAO,CAACE,GAAME,GACtBvG,EAAE,IAAMoG,GAAO,CAACE,GAAME,GACtBxG,EAAE,GAAK6D,GAAM,CAACE,GAAKR,GACnBvD,EAAE,GAAK8D,GAAM,CAACE,GAAKR,GACnBxD,EAAE,IAAMuE,GAAO,CAACE,GAAMR,GACtBjE,EAAE,IAAMwE,GAAO,CAACE,GAAMR,GACtBlE,EAAE,IAAMiF,GAAO,CAACE,GAAMR,GACtB3E,EAAE,IAAMkF,GAAO,CAACE,GAAMR,GACtB5E,EAAE,IAAM2F,GAAO,CAACE,GAAMR,GACtBrF,EAAE,IAAM4F,GAAO,CAACE,GAAMR,GACtBtF,EAAE,IAAMqG,GAAO,CAACE,GAAMR,GACtB/F,EAAE,IAAMsG,GAAO,CAACE,GAAMR,GACtBhG,EAAE,GAAK+D,GAAM,CAACR,GAAKE,GACnBzD,EAAE,GAAKgE,GAAM,CAACR,GAAKE,GACnB1D,EAAE,IAAMyE,GAAO,CAACR,GAAME,GACtBnE,EAAE,IAAM0E,GAAO,CAACR,GAAME,GACtBpE,EAAE,IAAMmF,GAAO,CAACR,GAAME,GACtB7E,EAAE,IAAMoF,GAAO,CAACR,GAAME,GACtB9E,EAAE,IAAM6F,GAAO,CAACR,GAAME,GACtBvF,EAAE,IAAM8F,GAAO,CAACR,GAAME,GACtBxF,EAAE,IAAMuG,GAAO,CAACR,GAAME,GACtBjG,EAAE,IAAMwG,GAAO,CAACR,GAAME,GAEtBlG,EAAE,IAAMhB,EAAGe,GACXC,EAAE,IAAMhB,EAAGe,EAAI,EAEnB,EAEA,GAAIxB,EACFP,GAAO,QAAUiC,MACZ,CACL,IAAKM,EAAI,EAAGA,EAAIQ,EAAY,OAAQ,EAAER,EACpCnC,EAAK2C,EAAYR,IAAMN,EAAQc,EAAYR,IAEzC/B,GACF,OAAO,UAAY,CACjB,OAAOyB,CACT,CAAC,CAEL,CACF,GAAG,IC/oBH,IAAAwG,GAAAC,EAAAC,IAAA,qKAEA,IAAAC,GAAAC,GAAA,IAAA,EAEAC,GAAA,KAEA,SAAgBC,GAAUC,EAAe,CACrC,MAAO,KAAOJ,GAAA,QAAK,YAPvB,EAOkCE,GAAA,UAASE,CAAI,CAAC,CAChD,CAFAL,GAAA,UAAAI,oGCNaE,GAAA,QAAU,cCAvB,IAAAC,GAAAC,EAAAC,IAAA,2FAIA,IAAAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAEjC,SAASE,GAAgBC,EAAa,CAElC,QADMC,EAAS,CAAA,EACRD,GACHC,EAAO,QAAQD,EAAQ,GAAI,EAC3BA,IAAU,EAEd,OAAOC,CACX,CAEA,SAASC,GAAkBC,EAAkBC,EAAgBC,EAAc,CAEvE,QADIJ,EAAS,EACJ,EAAI,EAAG,EAAII,EAAQ,IACxBJ,EAAUA,EAAS,IAAOE,EAAKC,EAAS,GAE5C,OAAOH,CACX,CAEA,SAASK,GAAQC,EAA2B,CACxC,GAAI,MAAM,QAAQA,CAAM,EAAG,CACvB,IAAIC,EAAyB,CAAA,EAK7B,GAJAD,EAAO,QAAQ,SAASE,EAAK,CACzBD,EAAUA,EAAQ,OAAOF,GAAQG,CAAK,CAAC,CAC3C,CAAC,EAEGD,EAAQ,QAAU,GAClB,OAAAA,EAAQ,QAAQ,IAAOA,EAAQ,MAAM,EAC9BA,EAGX,IAAME,EAASX,GAAgBS,EAAQ,MAAM,EAC7C,OAAAE,EAAO,QAAQ,IAAOA,EAAO,MAAM,EAE5BA,EAAO,OAAOF,CAAO,GA1CpC,EA8CSb,GAAA,aAAYY,CAAM,GACnBT,GAAO,mBAAmB,+BAAgC,SAAUS,CAAM,EAG9E,IAAMJ,EAAsB,MAAM,UAAU,MAAM,MAlDtD,EAkD2DR,GAAA,UAASY,CAAM,CAAC,EAEvE,GAAIJ,EAAK,SAAW,GAAKA,EAAK,IAAM,IAChC,OAAOA,EAEJ,GAAIA,EAAK,QAAU,GACtB,OAAAA,EAAK,QAAQ,IAAOA,EAAK,MAAM,EACxBA,EAGX,IAAME,EAASN,GAAgBI,EAAK,MAAM,EAC1C,OAAAE,EAAO,QAAQ,IAAOA,EAAO,MAAM,EAE5BA,EAAO,OAAOF,CAAI,CAC7B,CAEA,SAAgBQ,GAAOJ,EAAW,CAC9B,OAnEJ,EAmEWZ,GAAA,SAAQW,GAAQC,CAAM,CAAC,CAClC,CAFAb,GAAA,OAAAiB,GASA,SAASC,GAAgBT,EAAkBC,EAAgBS,EAAqBR,EAAc,CAG1F,QAFMJ,EAAS,CAAA,EAERY,EAAcT,EAAS,EAAIC,GAAQ,CACtC,IAAMS,EAAUC,GAAQZ,EAAMU,CAAW,EAEzCZ,EAAO,KAAKa,EAAQ,MAAM,EAE1BD,GAAeC,EAAQ,SACnBD,EAAcT,EAAS,EAAIC,GAC3BP,GAAO,WAAW,uBAAwBF,GAAA,OAAO,OAAO,eAAgB,CAAA,CAAG,EAInF,MAAO,CAAC,SAAW,EAAIS,EAAS,OAAQJ,CAAM,CAClD,CAGA,SAASc,GAAQZ,EAAkBC,EAAc,CAM7C,GALID,EAAK,SAAW,GAChBL,GAAO,WAAW,iBAAkBF,GAAA,OAAO,OAAO,eAAgB,CAAA,CAAG,EAIrEO,EAAKC,IAAW,IAAM,CACtB,IAAMY,EAAeb,EAAKC,GAAU,IAChCA,EAAS,EAAIY,EAAeb,EAAK,QACjCL,GAAO,WAAW,+BAAgCF,GAAA,OAAO,OAAO,eAAgB,CAAA,CAAG,EAGvF,IAAMqB,EAASf,GAAkBC,EAAMC,EAAS,EAAGY,CAAY,EAC/D,OAAIZ,EAAS,EAAIY,EAAeC,EAASd,EAAK,QAC1CL,GAAO,WAAW,8BAA+BF,GAAA,OAAO,OAAO,eAAgB,CAAA,CAAG,EAG/EgB,GAAgBT,EAAMC,EAAQA,EAAS,EAAIY,EAAcA,EAAeC,CAAM,UAE9Ed,EAAKC,IAAW,IAAM,CAC7B,IAAMc,EAASf,EAAKC,GAAU,IAC9B,OAAIA,EAAS,EAAIc,EAASf,EAAK,QAC3BL,GAAO,WAAW,uBAAwBF,GAAA,OAAO,OAAO,eAAgB,CAAA,CAAG,EAGxEgB,GAAgBT,EAAMC,EAAQA,EAAS,EAAGc,CAAM,UAEhDf,EAAKC,IAAW,IAAM,CAC7B,IAAMY,EAAeb,EAAKC,GAAU,IAChCA,EAAS,EAAIY,EAAeb,EAAK,QACjCL,GAAO,WAAW,uBAAwBF,GAAA,OAAO,OAAO,eAAgB,CAAA,CAAG,EAG/E,IAAMuB,EAASjB,GAAkBC,EAAMC,EAAS,EAAGY,CAAY,EAC3DZ,EAAS,EAAIY,EAAeG,EAAShB,EAAK,QAC1CL,GAAO,WAAW,uBAAwBF,GAAA,OAAO,OAAO,eAAgB,CAAA,CAAG,EAG/E,IAAMK,GAnId,EAmIuBN,GAAA,SAAQQ,EAAK,MAAMC,EAAS,EAAIY,EAAcZ,EAAS,EAAIY,EAAeG,CAAM,CAAC,EAChG,MAAO,CAAE,SAAW,EAAIH,EAAeG,EAAS,OAAQlB,CAAM,UAEvDE,EAAKC,IAAW,IAAM,CAC7B,IAAMgB,EAASjB,EAAKC,GAAU,IAC1BA,EAAS,EAAIgB,EAASjB,EAAK,QAC3BL,GAAO,WAAW,iBAAkBF,GAAA,OAAO,OAAO,eAAgB,CAAA,CAAG,EAGzE,IAAMK,GA5Id,EA4IuBN,GAAA,SAAQQ,EAAK,MAAMC,EAAS,EAAGA,EAAS,EAAIgB,CAAM,CAAC,EAClE,MAAO,CAAE,SAAW,EAAIA,EAAS,OAAQnB,CAAM,EAEnD,MAAO,CAAE,SAAU,EAAG,QA/I1B,EA+IkCN,GAAA,SAAQQ,EAAKC,EAAO,CAAC,CACvD,CAEA,SAAgBiB,GAAOlB,EAAe,CAClC,IAAMmB,GAnJV,EAmJkB3B,GAAA,UAASQ,CAAI,EACrBW,EAAUC,GAAQO,EAAO,CAAC,EAChC,OAAIR,EAAQ,WAAaQ,EAAM,QAC3BxB,GAAO,mBAAmB,mBAAoB,OAAQK,CAAI,EAEvDW,EAAQ,MACnB,CAPApB,GAAA,OAAA2B,oGClJaE,GAAA,QAAU,kBCAvB,IAAAC,GAAAC,EAAAC,IAAA,+JAEA,IAAAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAEjC,SAASE,GAAmBC,EAAe,EAX3C,EAYSR,GAAA,aAAYQ,EAAS,EAAE,GACxBF,GAAO,mBAAmB,kBAAmB,UAAWE,CAAO,EAGnEA,EAAUA,EAAQ,YAAW,EAK7B,QAHMC,EAAQD,EAAQ,UAAU,CAAC,EAAE,MAAM,EAAE,EAErCE,EAAW,IAAI,WAAW,EAAE,EACzBC,EAAI,EAAGA,EAAI,GAAIA,IACpBD,EAASC,GAAKF,EAAME,GAAG,WAAW,CAAC,EAKvC,QAFMC,GAzBV,EAyBmBZ,GAAA,WAzBnB,EAyB4BE,GAAA,WAAUQ,CAAQ,CAAC,EAElCC,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACpBC,EAAOD,GAAK,IAAM,GAAM,IACzBF,EAAME,GAAKF,EAAME,GAAG,YAAW,IAE9BC,EAAOD,GAAK,GAAK,KAAS,IAC3BF,EAAME,EAAI,GAAKF,EAAME,EAAI,GAAG,YAAW,GAI/C,MAAO,KAAOF,EAAM,KAAK,EAAE,CAC/B,CAGA,IAAMI,GAA2B,iBAEjC,SAASC,GAAMC,EAAS,CACpB,OAAI,KAAK,MAAgB,KAAK,MAAMA,CAAC,EAC9B,KAAK,IAAIA,CAAC,EAAI,KAAK,IAC9B,CAMA,IAAMC,GAA8C,CAAA,EACpD,IAASL,GAAI,EAAGA,GAAI,GAAIA,KAAOK,GAAW,OAAOL,EAAC,GAAK,OAAOA,EAAC,EAAtD,IAAAA,GACT,IAASA,GAAI,EAAGA,GAAI,GAAIA,KAAOK,GAAW,OAAO,aAAa,GAAKL,EAAC,GAAK,OAAO,GAAKA,EAAC,EAA7E,IAAAA,GAGHM,GAAa,KAAK,MAAMH,GAAMD,EAAgB,CAAC,EAErD,SAASK,GAAaV,EAAe,CACjCA,EAAUA,EAAQ,YAAW,EAC7BA,EAAUA,EAAQ,UAAU,CAAC,EAAIA,EAAQ,UAAU,EAAG,CAAC,EAAI,KAK3D,QAHIE,EAAWF,EAAQ,MAAM,EAAE,EAAE,IAAI,SAACW,EAAC,CAAO,OAAOH,GAAWG,EAAI,CAAC,EAAE,KAAK,EAAE,EAGvET,EAAS,QAAUO,IAAW,CACjC,IAAIG,EAAQV,EAAS,UAAU,EAAGO,EAAU,EAC5CP,EAAW,SAASU,EAAO,EAAE,EAAI,GAAKV,EAAS,UAAUU,EAAM,MAAM,EAIzE,QADIC,EAAW,OAAO,GAAM,SAASX,EAAU,EAAE,EAAI,EAAG,EACjDW,EAAS,OAAS,GAAKA,EAAW,IAAMA,EAE/C,OAAOA,CACX,CAEA,SAAgBC,GAAWd,EAAe,CACtC,IAAIe,EAAS,KAMb,GAJI,OAAOf,GAAa,UACpBF,GAAO,mBAAmB,kBAAmB,UAAWE,CAAO,EAG/DA,EAAQ,MAAM,wBAAwB,EAGlCA,EAAQ,UAAU,EAAG,CAAC,IAAM,OAAQA,EAAU,KAAOA,GAEzDe,EAAShB,GAAmBC,CAAO,EAG/BA,EAAQ,MAAM,+BAA+B,GAAKe,IAAWf,GAC7DF,GAAO,mBAAmB,uBAAwB,UAAWE,CAAO,UAIjEA,EAAQ,MAAM,gCAAgC,EAAG,CAQxD,IALIA,EAAQ,UAAU,EAAG,CAAC,IAAMU,GAAaV,CAAO,GAChDF,GAAO,mBAAmB,oBAAqB,UAAWE,CAAO,EAGrEe,GAvGR,EAuGiBtB,GAAA,aAAYO,EAAQ,UAAU,CAAC,CAAC,EAClCe,EAAO,OAAS,IAAMA,EAAS,IAAMA,EAC5CA,EAAShB,GAAmB,KAAOgB,CAAM,OAGzCjB,GAAO,mBAAmB,kBAAmB,UAAWE,CAAO,EAGnE,OAAOe,CACX,CApCAxB,GAAA,WAAAuB,GAsCA,SAAgBE,GAAUhB,EAAe,CACrC,GAAI,CACA,OAAAc,GAAWd,CAAO,EACX,QACT,CAAc,CAChB,MAAO,EACX,CANAT,GAAA,UAAAyB,GAQA,SAAgBC,GAAejB,EAAe,CAE1C,QADIkB,GA3HR,EA2HiBzB,GAAA,aAAYqB,GAAWd,CAAO,EAAE,UAAU,CAAC,CAAC,EAAE,YAAW,EAC/DkB,EAAO,OAAS,IAAMA,EAAS,IAAMA,EAC5C,MAAO,KAAOR,GAAa,OAASQ,CAAM,EAAIA,CAClD,CAJA3B,GAAA,eAAA0B,GAOA,SAAgBE,GAAmBC,EAAkD,CACjF,IAAIC,EAAe,KACnB,GAAI,CACAA,EAAOP,GAAWM,EAAY,IAAI,OACpC,CACEtB,GAAO,mBAAmB,uBAAwB,cAAesB,CAAW,EAGhF,IAAME,GAzIV,EAyIkB9B,GAAA,aAzIlB,EAyI6BA,GAAA,UAASC,GAAA,UAAU,KAAK2B,EAAY,KAAK,EAAE,YAAW,CAAE,CAAC,EAElF,OAAON,IA3IX,EA2IsBtB,GAAA,eA3ItB,EA2ImCE,GAAA,YA3InC,EA2I6CC,GAAA,QAAO,CAAE0B,EAAMC,CAAK,CAAE,CAAC,EAAG,EAAE,CAAC,CAC1E,CAXA/B,GAAA,mBAAA4B,GAaA,SAAgBI,GAAkBF,EAAcG,EAAiBC,EAAuB,CACpF,OA/IJ,EA+IQjC,GAAA,eAAcgC,CAAI,IAAM,IACxB1B,GAAO,mBAAmB,wBAAyB,OAAQ0B,CAAI,GAhJvE,EAkJQhC,GAAA,eAAciC,CAAY,IAAM,IAChC3B,GAAO,mBAAmB,gCAAiC,eAAgB2B,CAAY,EAEpFX,IArJX,EAqJsBtB,GAAA,eArJtB,EAqJmCE,GAAA,YArJnC,EAqJ6CF,GAAA,QAAO,CAAE,OAAQsB,GAAWO,CAAI,EAAGG,EAAMC,CAAY,CAAE,CAAC,EAAG,EAAE,CAAC,CAC3G,CARAlC,GAAA,kBAAAgC,KC9IA,IAAAG,GAAAC,EAAAC,IAAA,wkBAEA,IAAAC,GAAA,KACAC,GAAA,KAEAC,GAAA,KAEAC,GAAA,SAAAC,EAAA,CAAkCC,GAAAF,EAAAC,CAAA,EAE9B,SAAAD,EAAYG,EAAiB,QACzBF,EAAA,KAAA,KAAM,UAAW,UAAWE,EAAW,EAAK,GAAC,IACjD,CAEA,OAAAH,EAAA,UAAA,aAAA,UAAA,CACI,MAAO,4CACX,EAEAA,EAAA,UAAA,OAAA,SAAOI,EAAgBC,EAAa,CAChC,GAAI,CACAA,GAnBZ,EAmBoBR,GAAA,YAAWQ,CAAK,QACnBC,EAAP,CACE,KAAK,YAAYA,EAAM,QAASD,CAAK,EAEzC,OAAOD,EAAO,WAAWC,CAAK,CAClC,EAEAL,EAAA,UAAA,OAAA,SAAOO,EAAc,CACjB,OA3BR,EA2BeV,GAAA,aA3Bf,EA2B0BC,GAAA,YAAWS,EAAO,UAAS,EAAG,YAAW,EAAI,EAAE,CAAC,CACtE,EACJP,CAAA,EAtBkCD,GAAA,KAAK,EAA1BH,GAAA,aAAAI,KCPb,IAAAQ,GAAAC,EAAAC,IAAA,0kBAEA,IAAAC,GAAA,KAGAC,GAAA,SAAAC,EAAA,CAAoCC,GAAAF,EAAAC,CAAA,EAGhC,SAAAD,EAAYG,EAAY,CAAxB,IAAAC,EACIH,EAAA,KAAA,KAAME,EAAM,KAAMA,EAAM,KAAM,OAAWA,EAAM,OAAO,GAAC,KACvD,OAAAC,EAAK,MAAQD,GACjB,CAEA,OAAAH,EAAA,UAAA,aAAA,UAAA,CACI,OAAO,KAAK,MAAM,aAAY,CAClC,EAEAA,EAAA,UAAA,OAAA,SAAOK,EAAgBC,EAAU,CAC7B,OAAO,KAAK,MAAM,OAAOD,EAAQC,CAAK,CAC1C,EAEAN,EAAA,UAAA,OAAA,SAAOO,EAAc,CACjB,OAAO,KAAK,MAAM,OAAOA,CAAM,CACnC,EACJP,CAAA,EAnBoCD,GAAA,KAAK,EAA5BD,GAAA,eAAAE,KCLb,IAAAQ,GAAAC,EAAAC,IAAA,wlBAEA,IAAAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAEjCE,GAAA,KACAC,GAAA,KAEA,SAAgBC,GAAKC,EAAgBC,EAA8BC,EAA8C,CAC7G,IAAIC,EAA0B,KAE9B,GAAI,MAAM,QAAQD,CAAM,EACrBC,EAAcD,UAENA,GAAU,OAAOA,GAAY,SAAU,CAC9C,IAAIE,EAAwC,CAAA,EAE5CD,EAAcF,EAAO,IAAI,SAACI,EAAK,CAC3B,IAAMC,EAAOD,EAAM,UACnB,OAAKC,GACDV,GAAO,WAAW,wDAAyDF,GAAA,OAAO,OAAO,iBAAkB,CACvG,SAAU,SACV,MAAOW,EACP,MAAOH,EACV,EAGDE,EAAOE,IACPV,GAAO,WAAW,0DAA2DF,GAAA,OAAO,OAAO,iBAAkB,CACzG,SAAU,SACV,MAAOW,EACP,MAAOH,EACV,EAGLE,EAAOE,GAAQ,GAERJ,EAAOI,EAClB,CAAC,OAGDV,GAAO,mBAAmB,sBAAuB,QAASM,CAAM,EAGhED,EAAO,SAAWE,EAAY,QAC9BP,GAAO,mBAAmB,8BAA+B,QAASM,CAAM,EAG5E,IAAIK,EAAe,IAAIV,GAAA,OAAOG,EAAO,QAAQ,EACzCQ,EAAgB,IAAIX,GAAA,OAAOG,EAAO,QAAQ,EAE1CS,EAAmD,CAAA,EACvDR,EAAO,QAAQ,SAACI,EAAOK,EAAK,CACxB,IAAIC,EAAQR,EAAYO,GAExB,GAAIL,EAAM,QAAS,CAEf,IAAIO,EAAgBJ,EAAc,OAGlCH,EAAM,OAAOG,EAAeG,CAAK,EAGjC,IAAIE,EAAaN,EAAa,oBAAmB,EACjDE,EAAY,KAAK,SAACK,EAAkB,CAChCD,EAAWC,EAAaF,CAAa,CACzC,CAAC,OAGDP,EAAM,OAAOE,EAAcI,CAAK,CAExC,CAAC,EAGDF,EAAY,QAAQ,SAACM,EAAI,CAAOA,EAAKR,EAAa,MAAM,CAAG,CAAC,EAE5D,IAAIS,EAAShB,EAAO,aAAaO,CAAY,EAC7C,OAAAS,GAAUhB,EAAO,aAAaQ,CAAa,EACpCQ,CACX,CAvEAvB,GAAA,KAAAM,GAyEA,SAAgBkB,GAAOC,EAAgBjB,EAAoB,CACvD,IAAIC,EAAc,CAAA,EAGdiB,EAAaD,EAAO,UAAU,CAAC,EAEnCjB,EAAO,QAAQ,SAACI,EAAK,CACjB,IAAIM,EAAa,KAEjB,GAAIN,EAAM,QAAS,CACf,IAAIe,EAASF,EAAO,UAAS,EACzBG,EAAeF,EAAW,UAAUC,EAAO,SAAQ,CAAE,EACzD,GAAI,CACAT,EAAQN,EAAM,OAAOgB,CAAY,QAC5BC,EAAP,CAEE,GAAIA,EAAM,OAAS5B,GAAA,OAAO,OAAO,eAAkB,MAAM4B,EACzDX,EAAQW,EACRX,EAAM,SAAWN,EAAM,KACvBM,EAAM,KAAON,EAAM,UACnBM,EAAM,KAAON,EAAM,UAIvB,IAAI,CACAM,EAAQN,EAAM,OAAOa,CAAM,QACtBI,EAAP,CAEE,GAAIA,EAAM,OAAS5B,GAAA,OAAO,OAAO,eAAkB,MAAM4B,EACzDX,EAAQW,EACRX,EAAM,SAAWN,EAAM,KACvBM,EAAM,KAAON,EAAM,UACnBM,EAAM,KAAON,EAAM,KAIvBM,GAAS,MACTT,EAAO,KAAKS,CAAK,CAEzB,CAAC,EAGD,IAAMY,EAActB,EAAO,OAAO,SAACuB,EAAOnB,EAAK,CAC3C,IAAMC,EAAOD,EAAM,UACnB,OAAIC,IACKkB,EAAMlB,KAASkB,EAAMlB,GAAQ,GAClCkB,EAAMlB,MAEHkB,CACX,EAAiC,CAAA,CAAG,EAGpCvB,EAAO,QAAQ,SAACI,EAAcK,EAAa,CACvC,IAAIJ,EAAOD,EAAM,UACjB,GAAI,GAACC,GAAQiB,EAAYjB,KAAU,KAE/BA,IAAS,WAAYA,EAAO,WAE5BJ,EAAOI,IAAS,MAEpB,KAAMK,EAAQT,EAAOQ,GAEjBC,aAAiB,MACjB,OAAO,eAAeT,EAAQI,EAAM,CAChC,WAAY,GACZ,IAAK,UAAA,CAAQ,MAAMK,CAAO,EAC7B,EAEDT,EAAOI,GAAQK,EAEvB,CAAC,EAED,mBAASc,EAAC,CACN,IAAMd,EAAQT,EAAOuB,GACjBd,aAAiB,OACjB,OAAO,eAAeT,EAAQuB,EAAG,CAC7B,WAAY,GACZ,IAAK,UAAA,CAAQ,MAAMd,CAAO,EAC7B,GANAc,EAAI,EAAGA,EAAIvB,EAAO,OAAQuB,MAA1BA,CAAC,EAUV,OAAO,OAAO,OAAOvB,CAAM,CAC/B,CAnFAT,GAAA,OAAAwB,GAsFA,IAAAS,GAAA,SAAAC,EAAA,CAAgCC,GAAAF,EAAAC,CAAA,EAI5B,SAAAD,EAAYrB,EAAcW,EAAgBa,EAAiB,CAA3D,IAAAC,EAAA,KACUC,EAAQ1B,EAAM,KAAO,KAAOW,GAAU,EAAIA,EAAQ,IAAM,IACxDgB,EAAWhB,IAAW,IAAMX,EAAM,QACxC,OAAAyB,EAAAH,EAAA,KAAA,KAAM,QAASI,EAAMF,EAAWG,CAAO,GAAC,KAExCF,EAAK,MAAQzB,EACbyB,EAAK,OAASd,GAClB,CAEA,OAAAU,EAAA,UAAA,aAAA,UAAA,CAKI,QAHMO,EAAe,KAAK,MAAM,aAAY,EAEtCC,EAAqB,CAAA,EAClB,EAAI,EAAG,EAAI,KAAK,OAAQ,IAC7BA,EAAO,KAAKD,CAAY,EAE5B,OAAOC,CACX,EAEAR,EAAA,UAAA,OAAA,SAAO1B,EAAgBW,EAAiB,CAC/B,MAAM,QAAQA,CAAK,GACpB,KAAK,YAAY,uBAAwBA,CAAK,EAGlD,IAAIwB,EAAQ,KAAK,OAEbA,IAAU,KACVA,EAAQxB,EAAM,OACdX,EAAO,WAAWW,EAAM,MAAM,GAGlCf,GAAO,mBAAmBe,EAAM,OAAQwB,EAAO,eAAiB,KAAK,UAAY,IAAK,KAAK,UAAY,GAAG,EAG1G,QADIlC,EAAS,CAAA,EACJwB,EAAI,EAAGA,EAAId,EAAM,OAAQc,IAAOxB,EAAO,KAAK,KAAK,KAAK,EAE/D,OAAOF,GAAKC,EAAQC,EAAQU,CAAK,CACrC,EAEAe,EAAA,UAAA,OAAA,SAAOR,EAAc,CACjB,IAAIiB,EAAQ,KAAK,OACbA,IAAU,KACVA,EAAQjB,EAAO,UAAS,EAAG,SAAQ,EAO/BiB,EAAQ,GAAKjB,EAAO,MAAM,QAC1BtB,GAAO,WAAW,2BAA4BF,GAAA,OAAO,OAAO,eAAgB,CACxE,OAAQwB,EAAO,MAAM,OACrB,MAAOiB,EACV,GAIT,QADIlC,EAAS,CAAA,EACJwB,EAAI,EAAGA,EAAIU,EAAOV,IAAOxB,EAAO,KAAK,IAAIH,GAAA,eAAe,KAAK,KAAK,CAAC,EAE5E,OAAOoB,EAAO,OAAO,KAAK,KAAMD,GAAOC,EAAQjB,CAAM,CAAC,CAC1D,EACJyB,CAAA,EAlEgC7B,GAAA,KAAK,EAAxBJ,GAAA,WAAAiC,KCxKb,IAAAU,GAAAC,EAAAC,IAAA,wkBAEA,IAAAC,GAAA,KAEAC,GAAA,SAAAC,EAAA,CAAkCC,GAAAF,EAAAC,CAAA,EAE9B,SAAAD,EAAYG,EAAiB,QACzBF,EAAA,KAAA,KAAM,OAAQ,OAAQE,EAAW,EAAK,GAAC,IAC3C,CAEA,OAAAH,EAAA,UAAA,aAAA,UAAA,CACI,MAAO,EACX,EAEAA,EAAA,UAAA,OAAA,SAAOI,EAAgBC,EAAc,CACjC,OAAOD,EAAO,WAAWC,EAAQ,EAAG,CAAC,CACzC,EAEAL,EAAA,UAAA,OAAA,SAAOM,EAAc,CACjB,OAAOA,EAAO,OAAO,KAAK,KAAM,CAACA,EAAO,UAAS,EAAG,OAAM,CAAE,CAChE,EACJN,CAAA,EAjBkCD,GAAA,KAAK,EAA1BD,GAAA,aAAAE,KCJb,IAAAO,GAAAC,EAAAC,IAAA,2lBAEA,IAAAC,GAAA,KAEAC,GAAA,KAEAC,GAAA,SAAAC,EAAA,CAAuCC,GAAAF,EAAAC,CAAA,EACnC,SAAAD,EAAYG,EAAcC,EAAiB,QACxCH,EAAA,KAAA,KAAME,EAAMA,EAAMC,EAAW,EAAI,GAAC,IACrC,CAEA,OAAAJ,EAAA,UAAA,aAAA,UAAA,CACI,MAAO,IACX,EAEAA,EAAA,UAAA,OAAA,SAAOK,EAAgBC,EAAU,CAC7BA,GAhBR,EAgBgBR,GAAA,UAASQ,CAAK,EACtB,IAAIC,EAASF,EAAO,WAAWC,EAAM,MAAM,EAC3C,OAAAC,GAAUF,EAAO,WAAWC,CAAK,EAC1BC,CACX,EAEAP,EAAA,UAAA,OAAA,SAAOQ,EAAc,CACjB,OAAOA,EAAO,UAAUA,EAAO,UAAS,EAAG,SAAQ,EAAI,EAAI,CAC/D,EACJR,CAAA,EAnBuCD,GAAA,KAAK,EAA/BF,GAAA,kBAAAG,GAqBb,IAAAS,GAAA,SAAAR,EAAA,CAAgCC,GAAAO,EAAAR,CAAA,EAC5B,SAAAQ,EAAYL,EAAiB,QACzBH,EAAA,KAAA,KAAM,QAASG,CAAS,GAAC,IAC7B,CAEA,OAAAK,EAAA,UAAA,OAAA,SAAOD,EAAc,CACjB,OAAOA,EAAO,OAAO,KAAK,MAjClC,EAiCwCV,GAAA,SAAQG,EAAA,UAAM,OAAM,KAAA,KAACO,CAAM,CAAC,CAAC,CACjE,EACJC,CAAA,EARgCT,EAAiB,EAApCH,GAAA,WAAAY,KC3Bb,IAAAC,GAAAC,EAAAC,IAAA,2kBAEA,IAAAC,GAAA,KAEAC,GAAA,KAGAC,GAAA,SAAAC,EAAA,CAAqCC,GAAAF,EAAAC,CAAA,EAGjC,SAAAD,EAAYG,EAAcC,EAAiB,CAA3C,IAAAC,EAAA,KACQC,EAAO,QAAU,OAAOH,CAAI,EAChC,OAAAE,EAAAJ,EAAA,KAAA,KAAMK,EAAMA,EAAMF,EAAW,EAAK,GAAC,KACnCC,EAAK,KAAOF,GAChB,CAEA,OAAAH,EAAA,UAAA,aAAA,UAAA,CACI,MAAQ,qEAAsE,UAAU,EAAG,EAAI,KAAK,KAAO,CAAC,CAChH,EAEAA,EAAA,UAAA,OAAA,SAAOO,EAAgBC,EAAgB,CACnC,IAAIC,GArBZ,EAqBmBX,GAAA,UAASU,CAAK,EACzB,OAAIC,EAAK,SAAW,KAAK,MAAQ,KAAK,YAAY,wBAAyBD,CAAK,EACzED,EAAO,WAAWE,CAAI,CACjC,EAEAT,EAAA,UAAA,OAAA,SAAOU,EAAc,CACjB,OAAOA,EAAO,OAAO,KAAK,MA3BlC,EA2BwCZ,GAAA,SAAQY,EAAO,UAAU,KAAK,IAAI,CAAC,CAAC,CACxE,EACJV,CAAA,EAtBqCD,GAAA,KAAK,EAA7BF,GAAA,gBAAAG,KCPb,IAAAW,GAAAC,EAAAC,IAAA,qkBAEA,IAAAC,GAAA,KAEAC,GAAA,SAAAC,EAAA,CAA+BC,GAAAF,EAAAC,CAAA,EAE3B,SAAAD,EAAYG,EAAiB,QACzBF,EAAA,KAAA,KAAM,OAAQ,GAAIE,EAAW,EAAK,GAAC,IACvC,CAEA,OAAAH,EAAA,UAAA,aAAA,UAAA,CACI,OAAO,IACX,EAEAA,EAAA,UAAA,OAAA,SAAOI,EAAgBC,EAAU,CAC7B,OAAIA,GAAS,MAAQ,KAAK,YAAY,WAAYA,CAAK,EAChDD,EAAO,WAAW,CAAA,CAAG,CAChC,EAEAJ,EAAA,UAAA,OAAA,SAAOM,EAAc,CACjB,OAAAA,EAAO,UAAU,CAAC,EACXA,EAAO,OAAO,KAAK,KAAM,IAAI,CACxC,EACJN,CAAA,EAnB+BD,GAAA,KAAK,EAAvBD,GAAA,UAAAE,wGCJAO,GAAA,YAAc,+NCA3B,IAAAC,GAAA,KAEMC,GAAuCD,GAAA,UAAU,KAAK,EAAE,EAW1DE,GAAA,YAAAD,GAVJ,IAAME,GAAgCH,GAAA,UAAU,KAAK,CAAC,EAWlDE,GAAA,KAAAC,GAVJ,IAAMC,GAA+BJ,GAAA,UAAU,KAAK,CAAC,EAWjDE,GAAA,IAAAE,GAVJ,IAAMC,GAA+BL,GAAA,UAAU,KAAK,CAAC,EAWjDE,GAAA,IAAAG,GAVJ,IAAMC,GAAuCN,GAAA,UAAU,KAAK,qBAAqB,EAW7EE,GAAA,YAAAI,GAVJ,IAAMC,GAAsCP,GAAA,UAAU,KAAK,oEAAoE,EAW3HE,GAAA,WAAAK,GATJ,IAAMC,GAAqCR,GAAA,UAAU,KAAK,qEAAqE,EAU3HE,GAAA,UAAAM,GATJ,IAAMC,GAAqCT,GAAA,UAAU,KAAK,oEAAoE,EAU1HE,GAAA,UAAAO,qGCpBSC,GAAA,SAAW,0KCCXC,GAAA,YAAc,WCD3B,IAAAC,GAAAC,EAAAC,IAAA,6MAEA,IAAAC,GAAA,KAAS,OAAA,eAAAD,GAAA,cAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAC,GAAA,WAAW,CAAA,CAAA,EACpB,IAAAC,GAAA,KACI,OAAA,eAAAF,GAAA,cAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAE,GAAA,WAAW,CAAA,CAAA,EACX,OAAA,eAAAF,GAAA,OAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAE,GAAA,IAAI,CAAA,CAAA,EACJ,OAAA,eAAAF,GAAA,MAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAE,GAAA,GAAG,CAAA,CAAA,EACH,OAAA,eAAAF,GAAA,MAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAE,GAAA,GAAG,CAAA,CAAA,EACH,OAAA,eAAAF,GAAA,cAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAE,GAAA,WAAW,CAAA,CAAA,EACX,OAAA,eAAAF,GAAA,aAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAE,GAAA,UAAU,CAAA,CAAA,EACV,OAAA,eAAAF,GAAA,YAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAE,GAAA,SAAS,CAAA,CAAA,EACT,OAAA,eAAAF,GAAA,YAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAE,GAAA,SAAS,CAAA,CAAA,EAEb,IAAAC,GAAA,KAAS,OAAA,eAAAH,GAAA,WAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAG,GAAA,QAAQ,CAAA,CAAA,EACjB,IAAAC,GAAA,KAAS,OAAA,eAAAJ,GAAA,cAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAI,GAAA,WAAW,CAAA,CAAA,ICdpB,IAAAC,GAAAC,EAAAC,IAAA,ukBAEA,IAAAC,GAAA,KACAC,GAAA,KAEAC,GAAA,KAEAC,GAAA,SAAAC,EAAA,CAAiCC,GAAAF,EAAAC,CAAA,EAI7B,SAAAD,EAAYG,EAAcC,EAAiBC,EAAiB,CAA5D,IAAAC,EAAA,KACUC,GAASH,EAAS,MAAO,QAAWD,EAAO,EACjD,OAAAG,EAAAL,EAAA,KAAA,KAAMM,EAAMA,EAAMF,EAAW,EAAK,GAAC,KAEnCC,EAAK,KAAOH,EACZG,EAAK,OAASF,GAClB,CAEA,OAAAJ,EAAA,UAAA,aAAA,UAAA,CACI,MAAO,EACX,EAEAA,EAAA,UAAA,OAAA,SAAOQ,EAAgBC,EAAmB,CACtC,IAAIC,EAAIb,GAAA,UAAU,KAAKY,CAAK,EAGxBE,EAAeb,GAAA,WAAW,KAAKU,EAAO,SAAW,CAAC,EACtD,GAAI,KAAK,OAAQ,CACb,IAAII,EAASD,EAAa,KAAK,KAAK,KAAO,EAAI,CAAC,GAC5CD,EAAE,GAAGE,CAAM,GAAKF,EAAE,GAAGE,EAAO,IAAId,GAAA,GAAG,EAAE,IAAIA,GAAA,WAAW,CAAC,IACrD,KAAK,YAAY,sBAAuBW,CAAK,OAE1CC,EAAE,GAAGZ,GAAA,IAAI,GAAKY,EAAE,GAAGC,EAAa,KAAK,KAAK,KAAO,CAAC,CAAC,IAC1D,KAAK,YAAY,sBAAuBF,CAAK,EAGjD,OAAAC,EAAIA,EAAE,OAAO,KAAK,KAAO,CAAC,EAAE,KAAK,KAAK,KAAO,CAAC,EAE1C,KAAK,SACLA,EAAIA,EAAE,SAAS,KAAK,KAAO,CAAC,EAAE,OAAO,EAAIF,EAAO,QAAQ,GAGrDA,EAAO,WAAWE,CAAC,CAC9B,EAEAV,EAAA,UAAA,OAAA,SAAOa,EAAc,CACjB,IAAIJ,EAAQI,EAAO,UAAS,EAAG,KAAK,KAAK,KAAO,CAAC,EAEjD,OAAI,KAAK,SACLJ,EAAQA,EAAM,SAAS,KAAK,KAAO,CAAC,GAGjCI,EAAO,OAAO,KAAK,KAAMJ,CAAK,CACzC,EACJT,CAAA,EAhDiCD,GAAA,KAAK,EAAzBH,GAAA,YAAAI,oGCPAc,GAAA,QAAU,kBCAvB,IAAAC,GAAAC,EAAAC,IAAA,oOAEA,IAAAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAIrBE,IAAZ,SAAYA,EAAwB,CAChCA,EAAA,QAAA,GACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,KAAA,OACAA,EAAA,KAAA,MACJ,GANYA,GAAAL,GAAA,2BAAAA,GAAA,yBAAwB,CAAA,EAAA,EAQpC,IAAYM,IAAZ,SAAYA,EAAe,CAGvBA,EAAA,oBAAA,+BAIAA,EAAA,WAAA,uBAIAA,EAAA,QAAA,iBAIAA,EAAA,iBAAA,4BAKAA,EAAA,aAAA,qBAKAA,EAAA,gBAAA,mBAKAA,EAAA,SAAA,yBACJ,GA/BYA,GAAAN,GAAA,kBAAAA,GAAA,gBAAe,CAAA,EAAA,EAoC3B,SAASO,GAAUC,EAAyBC,EAAgBC,EAA0BC,EAAuBC,EAAqB,CAC9H,OAAOR,GAAO,mBAAmB,+BAAgCK,EAAM,KAAOD,EAAW,QAASE,CAAK,CAC3G,CAEA,SAASG,GAAWL,EAAyBC,EAAgBC,EAA0BC,EAAuBC,EAAqB,CAG/H,GAAIJ,IAAWF,GAAgB,YAAcE,IAAWF,GAAgB,oBAAqB,CAEzF,QADIQ,EAAI,EACC,EAAIL,EAAS,EAAG,EAAIC,EAAM,QAC3BA,EAAM,IAAM,IAAM,EADiB,IAEvCI,IAEJ,OAAOA,EAKX,OAAIN,IAAWF,GAAgB,QACpBI,EAAM,OAASD,EAAS,EAI5B,CACX,CAEA,SAASM,GAAYP,EAAyBC,EAAgBC,EAA0BC,EAAuBC,EAAqB,CAGhI,OAAIJ,IAAWF,GAAgB,UAC3BK,EAAO,KAAKC,CAAY,EACjB,IAIXD,EAAO,KAAK,KAAM,EAGXE,GAAWL,EAAQC,EAAQC,EAAOC,EAAQC,CAAY,EACjE,CAGaZ,GAAA,eAAsD,OAAO,OAAO,CAC7E,MAAOO,GACP,OAAQM,GACR,QAASE,GACZ,EAGD,SAASC,GAAkBN,EAAkBO,EAAuB,CAC5DA,GAAW,OAAQA,EAAUjB,GAAA,eAAe,OAEhDU,GA1GJ,EA0GYT,GAAA,UAASS,CAAK,EAMtB,QAJMQ,EAAwB,CAAA,EAC1BJ,EAAI,EAGFA,EAAIJ,EAAM,QAAQ,CAEpB,IAAMS,EAAIT,EAAMI,KAGhB,GAAIK,GAAK,IAAM,EAAG,CACdD,EAAO,KAAKC,CAAC,EACb,SAIJ,IAAIC,EAAc,KACdC,EAAe,KAGnB,IAAKF,EAAI,OAAU,IACfC,EAAc,EACdC,EAAe,aAGPF,EAAI,OAAU,IACtBC,EAAc,EACdC,EAAe,cAGPF,EAAI,OAAU,IACtBC,EAAc,EACdC,EAAe,UAEZ,EACEF,EAAI,OAAU,IACfL,GAAKG,EAAQX,GAAgB,oBAAqBQ,EAAI,EAAGJ,EAAOQ,CAAM,EAEtEJ,GAAKG,EAAQX,GAAgB,WAAYQ,EAAI,EAAGJ,EAAOQ,CAAM,EAEjE,SAIJ,GAAIJ,EAAI,EAAIM,GAAeV,EAAM,OAAQ,CACrCI,GAAKG,EAAQX,GAAgB,QAASQ,EAAI,EAAGJ,EAAOQ,CAAM,EAC1D,SAMJ,QAFII,EAAMH,GAAM,GAAM,EAAIC,EAAc,GAAM,EAErCG,EAAI,EAAGA,EAAIH,EAAaG,IAAK,CAClC,IAAIC,EAAWd,EAAMI,GAGrB,IAAKU,EAAW,MAAS,IAAM,CAC3BV,GAAKG,EAAQX,GAAgB,iBAAkBQ,EAAGJ,EAAOQ,CAAM,EAC/DI,EAAM,KACN,MAGJA,EAAOA,GAAO,EAAME,EAAW,GAC/BV,IAIJ,GAAIQ,IAAQ,KAGZ,IAAIA,EAAM,QAAU,CAChBR,GAAKG,EAAQX,GAAgB,aAAcQ,EAAI,EAAIM,EAAaV,EAAOQ,EAAQI,CAAG,EAClF,SAIJ,GAAIA,GAAO,OAAUA,GAAO,MAAQ,CAChCR,GAAKG,EAAQX,GAAgB,gBAAiBQ,EAAI,EAAIM,EAAaV,EAAOQ,EAAQI,CAAG,EACrF,SAIJ,GAAIA,GAAOD,EAAc,CACrBP,GAAKG,EAAQX,GAAgB,SAAUQ,EAAI,EAAIM,EAAaV,EAAOQ,EAAQI,CAAG,EAC9E,SAGJJ,EAAO,KAAKI,CAAG,GAGnB,OAAOJ,CACX,CAGA,SAAgBO,GAAYC,EAAaC,EAAiE,CAAjEA,IAAA,SAAAA,EAAiCtB,GAAyB,SAE3FsB,GAAQtB,GAAyB,UACjCD,GAAO,eAAc,EACrBsB,EAAMA,EAAI,UAAUC,CAAI,GAI5B,QADIT,EAAS,CAAA,EACJJ,EAAI,EAAGA,EAAIY,EAAI,OAAQZ,IAAK,CACjC,IAAMK,EAAIO,EAAI,WAAWZ,CAAC,EAE1B,GAAIK,EAAI,IACJD,EAAO,KAAKC,CAAC,UAENA,EAAI,KACXD,EAAO,KAAMC,GAAK,EAAK,GAAI,EAC3BD,EAAO,KAAMC,EAAI,GAAQ,GAAI,WAErBA,EAAI,QAAW,MAAQ,CAC/BL,IACA,IAAMc,EAAKF,EAAI,WAAWZ,CAAC,EAE3B,GAAIA,GAAKY,EAAI,SAAWE,EAAK,SAAY,MACrC,MAAM,IAAI,MAAM,sBAAsB,EAI1C,IAAMC,EAAO,QAAYV,EAAI,OAAW,KAAOS,EAAK,MACpDV,EAAO,KAAMW,GAAQ,GAAM,GAAI,EAC/BX,EAAO,KAAOW,GAAQ,GAAM,GAAQ,GAAI,EACxCX,EAAO,KAAOW,GAAQ,EAAK,GAAQ,GAAI,EACvCX,EAAO,KAAMW,EAAO,GAAQ,GAAI,OAGhCX,EAAO,KAAMC,GAAK,GAAM,GAAI,EAC5BD,EAAO,KAAOC,GAAK,EAAK,GAAQ,GAAI,EACpCD,EAAO,KAAMC,EAAI,GAAQ,GAAI,EAIrC,OAjPJ,EAiPWlB,GAAA,UAASiB,CAAM,CAC1B,CAzCAlB,GAAA,YAAAyB,GA2CA,SAASK,GAAWC,EAAa,CAC7B,IAAMC,EAAO,OAASD,EAAM,SAAS,EAAE,EACvC,MAAO,MAAQC,EAAI,UAAUA,EAAI,OAAS,CAAC,CAC/C,CAEA,SAAgBC,GAAqBvB,EAAkBO,EAAuB,CAC1E,MAAO,IAAMD,GAAkBN,EAAOO,CAAO,EAAE,IAAI,SAACiB,EAAS,CACzD,GAAIA,EAAY,IAAK,CACjB,OAAQA,EAAW,CACf,IAAK,GAAI,MAAO,MAChB,IAAK,GAAI,MAAO,MAChB,IAAK,IAAI,MAAO,MAChB,IAAK,IAAI,MAAO,MAChB,IAAK,IAAI,MAAO,MAChB,IAAK,IAAI,MAAO,OAGpB,GAAIA,GAAa,IAAMA,EAAY,IAC/B,OAAO,OAAO,aAAaA,CAAS,EAI5C,OAAIA,GAAa,MACNJ,GAAWI,CAAS,GAG/BA,GAAa,MACNJ,IAAaI,GAAa,GAAM,MAAS,KAAM,EAAIJ,IAAYI,EAAY,MAAS,KAAM,EACrG,CAAC,EAAE,KAAK,EAAE,EAAI,GAClB,CAxBAlC,GAAA,qBAAAiC,GA0BA,SAAgBE,GAAcC,EAAyB,CACnD,OAAOA,EAAW,IAAI,SAACF,EAAS,CAC5B,OAAIA,GAAa,MACN,OAAO,aAAaA,CAAS,GAExCA,GAAa,MACN,OAAO,cACPA,GAAa,GAAM,MAAS,OAC7BA,EAAY,MAAS,KAAO,EAEtC,CAAC,EAAE,KAAK,EAAE,CACd,CAXAlC,GAAA,cAAAmC,GAaA,SAAgBE,GAAa3B,EAAkBO,EAAuB,CAClE,OAAOkB,GAAcnB,GAAkBN,EAAOO,CAAO,CAAC,CAC1D,CAFAjB,GAAA,aAAAqC,GAIA,SAAgBC,GAAiBZ,EAAaC,EAAiE,CAAjE,OAAAA,IAAA,SAAAA,EAAiCtB,GAAyB,SAC7FW,GAAkBS,GAAYC,EAAKC,CAAI,CAAC,CACnD,CAFA3B,GAAA,iBAAAsC,KCpSA,IAAAC,GAAAC,EAAAC,IAAA,oHAEA,IAAAC,GAAA,KACAC,GAAA,KAEAC,GAAA,KAGA,SAAgBC,GAAoBC,EAAY,CAG5C,IAAMC,GAXV,EAWkBH,GAAA,aAAYE,CAAI,EAG9B,GAAIC,EAAM,OAAS,GAAM,MAAM,IAAI,MAAM,2CAA2C,EAGpF,OAjBJ,EAiBWJ,GAAA,UAjBX,EAiBmBA,GAAA,QAAO,CAAEI,EAAOL,GAAA,QAAQ,CAAE,EAAE,MAAM,EAAG,EAAE,CAAC,CAC3D,CAVAD,GAAA,oBAAAI,GAYA,SAAgBG,GAAmBD,EAAgB,CAC/C,IAAME,GArBV,EAqBiBN,GAAA,UAASI,CAAK,EAG3B,GAAIE,EAAK,SAAW,GAAM,MAAM,IAAI,MAAM,qCAAqC,EAC/E,GAAIA,EAAK,MAAQ,EAAK,MAAM,IAAI,MAAM,6CAA6C,EAInF,QADIC,EAAS,GACND,EAAKC,EAAS,KAAO,GAAKA,IAGjC,OAhCJ,EAgCWN,GAAA,cAAaK,EAAK,MAAM,EAAGC,CAAM,CAAC,CAC7C,CAbAT,GAAA,mBAAAO,KCpBA,IAAAG,GAAAC,EAAAC,IAAA,8IAEA,IAAAC,GAAA,KAYA,SAASC,GAAOC,EAAY,CACxB,GAAKA,EAAK,OAAS,IAAO,EAAK,MAAM,IAAI,MAAM,UAAU,EAEzD,QADIC,EAAS,CAAA,EACJC,EAAI,EAAGA,EAAIF,EAAK,OAAQE,GAAK,EAClCD,EAAO,KAAK,SAASD,EAAK,UAAUE,EAAGA,EAAI,CAAC,EAAG,EAAE,CAAC,EAEtD,OAAOD,CACX,CAEA,SAASE,GAAYH,EAAcI,EAAuC,CACjEA,IACDA,EAAO,SAASC,EAAa,CAAI,MAAO,CAAE,SAASA,EAAO,EAAE,CAAC,CAAI,GAGrE,IAAIC,EAAK,EAELL,EAAgB,CAAA,EACpB,OAAAD,EAAK,MAAM,GAAG,EAAE,QAAQ,SAACO,EAAI,CACzB,IAAIC,EAAQD,EAAK,MAAM,GAAG,EAC1BD,GAAM,SAASE,EAAM,GAAI,EAAE,EAC3BP,EAAOK,GAAMF,EAAKI,EAAM,EAAE,CAC9B,CAAC,EAEMP,CACX,CAEA,SAASQ,GAAiBT,EAAY,CAClC,IAAIU,EAAK,EACT,OAAOV,EAAK,MAAM,GAAG,EAAE,IAAI,SAACW,EAAC,CACzB,IAAIH,EAAQG,EAAE,MAAM,GAAG,EACnBH,EAAM,SAAW,EACjBA,EAAM,GAAK,IACJA,EAAM,KAAO,KACpBA,EAAM,GAAK,KAGf,IAAIF,EAAKI,EAAK,SAASF,EAAM,GAAI,EAAE,EACnC,OAAAE,EAAK,SAASF,EAAM,GAAI,EAAE,EACnB,CAAE,EAAGF,EAAI,EAAGI,CAAE,CACzB,CAAC,CACL,CAEA,SAASE,GAASP,EAAeQ,EAAqB,CAElD,QADIP,EAAK,EACAJ,EAAI,EAAGA,EAAIW,EAAO,OAAQX,IAAK,CACpC,IAAIY,EAAQD,EAAOX,GAEnB,GADAI,GAAMQ,EAAM,EACRT,GAASC,GAAMD,GAASC,EAAKQ,EAAM,IAAOT,EAAQC,IAAOQ,EAAM,GAAK,KAAQ,EAAG,CAC/E,GAAIA,EAAM,GAAKA,EAAM,EAAE,QAAQT,EAAQC,CAAE,IAAM,GAAM,SACrD,OAAOQ,GAGf,OAAO,IACX,CAEA,IAAMC,GAAmBN,GAAiB,87CAA87C,EAGl+CO,GAAkB,sDAAsD,MAAM,GAAG,EAAE,IAAI,SAACL,EAAC,CAAK,OAAA,SAASA,EAAG,EAAE,CAAd,CAAe,EAE7GM,GAAkC,CACpC,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,EAAE,EACrB,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,CAAE,EAAE,EAAI,EAAG,GAAG,EACjC,CAAE,EAAG,GAAI,EAAG,EAAG,EAAG,CAAE,EAAE,EAAI,EAAG,GAAI,EAAG,CAAC,EACrC,CAAE,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,CAAC,EAC1B,CAAE,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,CAAC,EAC1B,CAAE,EAAG,GAAI,EAAG,EAAG,EAAG,CAAE,EAAG,EAAG,CAAC,EAAI,EAAG,GAAI,EAAG,CAAC,EAC1C,CAAE,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,CAAC,EAC1B,CAAE,EAAG,GAAI,EAAG,EAAG,EAAG,CAAE,GAAI,GAAI,EAAE,EAAI,EAAG,GAAI,EAAG,CAAC,EAC7C,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,CAAE,EAAE,EAAI,EAAG,GAAG,EACjC,CAAE,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,CAAC,EAC1B,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,EAAE,EACrB,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,EAAE,EACrB,CAAE,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,CAAC,EAC1B,CAAE,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,CAAC,EAC1B,CAAE,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,CAAC,EAC1B,CAAE,EAAG,GAAI,EAAG,EAAG,EAAG,CAAE,EAAE,EAAI,EAAG,GAAI,EAAG,CAAC,EACrC,CAAE,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,CAAC,EAC1B,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,EAAE,EACrB,CAAE,EAAG,IAAK,EAAG,EAAG,EAAG,KAAM,EAAG,CAAC,EAC7B,CAAE,EAAG,GAAI,EAAG,EAAG,EAAG,IAAK,EAAG,CAAC,EAC3B,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,GAAG,EACtB,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,GAAG,EACtB,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,KAAK,EACxB,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,IAAI,EACvB,CAAE,EAAG,GAAI,EAAG,QAAS,EAAG,KAAK,EAC7B,CAAE,EAAG,GAAI,EAAG,QAAS,EAAG,EAAE,EAC1B,CAAE,EAAG,GAAI,EAAG,QAAS,EAAG,EAAE,EAC1B,CAAE,EAAG,GAAI,EAAG,QAAS,EAAG,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAE,EAAI,EAAG,EAAE,EAC5D,CAAE,EAAG,GAAI,EAAG,QAAS,EAAG,EAAE,EAC1B,CAAE,EAAG,GAAI,EAAG,QAAS,EAAG,CAAE,EAAG,EAAG,EAAG,EAAE,EAAI,EAAG,EAAE,EAC9C,CAAE,EAAG,GAAI,EAAG,QAAS,EAAG,CAAE,EAAG,EAAG,GAAI,GAAI,GAAI,EAAE,EAAI,EAAG,EAAE,EACvD,CAAE,EAAG,GAAI,EAAG,QAAS,EAAG,EAAE,EAC1B,CAAE,EAAG,GAAI,EAAG,QAAS,EAAG,EAAE,EAC1B,CAAE,EAAG,GAAI,EAAG,QAAS,EAAG,EAAE,EAC1B,CAAE,EAAG,GAAI,EAAG,QAAS,EAAG,EAAE,EAC1B,CAAE,EAAG,GAAI,EAAG,QAAS,EAAG,EAAE,EAC1B,CAAE,EAAG,GAAI,EAAG,QAAS,EAAG,EAAE,EAC1B,CAAE,EAAG,GAAI,EAAG,QAAS,EAAG,CAAE,EAAE,EAAI,EAAG,EAAE,EACrC,CAAE,EAAG,GAAI,EAAG,QAAS,EAAG,CAAE,EAAE,EAAI,EAAG,EAAE,EACrC,CAAE,EAAG,GAAI,EAAG,QAAS,EAAG,CAAE,EAAE,EAAI,EAAG,EAAE,EACrC,CAAE,EAAG,GAAI,EAAG,QAAS,EAAG,CAAE,EAAE,EAAI,EAAG,EAAE,EACrC,CAAE,EAAG,GAAI,EAAG,QAAS,EAAG,CAAE,EAAE,EAAI,EAAG,EAAE,GAEnCC,GAAoBf,GAAY,ufAAuf,EACvhBgB,GAAoBhB,GAAY,wdAAwd,EACxfiB,GAAoBjB,GAAY,y3DAA03DJ,EAAM,EAEh6DsB,GAAiBZ,GAAiB,yLAAyL,EAGjO,SAASa,GAAQC,EAA4B,CACzC,OAAOA,EAAO,OAAO,SAACC,EAAOnB,EAAK,CAC9B,OAAAA,EAAM,QAAQ,SAACA,EAAK,CAAOmB,EAAM,KAAKnB,CAAK,CAAG,CAAC,EACxCmB,CACX,EAAG,CAAA,CAAG,CACV,CAEA,SAAgBC,GAAiBC,EAAiB,CAC9C,MAAO,CAAC,CAACd,GAASc,EAAWX,EAAgB,CACjD,CAFAlB,GAAA,iBAAA4B,GAIA,SAAgBE,GAAiBD,EAAiB,CAC9C,IAAIZ,EAAQF,GAASc,EAAWT,EAAgB,EAChD,GAAIH,EAAS,MAAO,CAAEY,EAAYZ,EAAM,CAAC,EAEzC,IAAIc,EAAQV,GAAkBQ,GAC9B,GAAIE,EAAS,OAAOA,EAEpB,IAAIC,EAAQV,GAAkBO,GAC9B,GAAIG,EAAS,MAAO,CAAEH,EAAYG,EAAM,EAAE,EAE1C,IAAIC,EAAUV,GAAkBM,GAChC,OAAII,GAEG,IACX,CAdAjC,GAAA,iBAAA8B,GAgBA,SAAgBI,GAAgBL,EAAiB,CAC7C,MAAO,CAAC,CAACd,GAASc,EAAWL,EAAc,CAC/C,CAFAxB,GAAA,gBAAAkC,GAIA,SAAgBC,GAAS3B,EAAa,CAKlC,GAAIA,EAAM,MAAM,eAAe,GAAKA,EAAM,QAAU,GAAM,OAAOA,EAAM,YAAW,EAGlF,IAAIuB,GApKR,EAoKgB9B,GAAA,kBAAiBO,CAAK,EAElCuB,EAAQN,GAAQM,EAAM,IAAI,SAACK,EAAI,CAE3B,GAAIjB,GAAgB,QAAQiB,CAAI,GAAK,EAAK,MAAO,CAAA,EACjD,GAAIA,GAAQ,OAAUA,GAAQ,MAAU,MAAO,CAAA,EAG/C,IAAIC,EAAeP,GAAiBM,CAAI,EACxC,OAAIC,GAGG,CAAED,CAAI,CACjB,CAAC,CAAC,EAGFL,GApLJ,EAoLY9B,GAAA,mBApLZ,EAoL6BA,GAAA,eAAc8B,CAAK,EAAG9B,GAAA,yBAAyB,IAAI,EAG5E8B,EAAM,QAAQ,SAACK,EAAI,CACf,GAAIF,GAAgBE,CAAI,EACpB,MAAM,IAAI,MAAM,gCAAgC,CAExD,CAAC,EAGDL,EAAM,QAAQ,SAACK,EAAI,CACf,GAAIR,GAAiBQ,CAAI,EACrB,MAAM,IAAI,MAAM,gCAAgC,CAExD,CAAC,EAGD,IAAIE,GArMR,EAqMerC,GAAA,eAAc8B,CAAK,EAG9B,GAAIO,EAAK,UAAU,EAAG,CAAC,IAAM,KAAOA,EAAK,UAAU,EAAG,CAAC,IAAM,MAAQA,EAAK,UAAUA,EAAK,OAAS,CAAC,IAAM,IACrG,MAAM,IAAI,MAAM,gBAAgB,EAGpC,OAAOA,CACX,CAjDAtC,GAAA,SAAAmC,KC5JA,IAAAI,GAAAC,EAAAC,IAAA,4QAEA,IAAAC,GAAA,KAgBI,OAAA,eAAAD,GAAA,sBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAhBKC,GAAA,mBAAmB,CAAA,CAAA,EAiBxB,OAAA,eAAAD,GAAA,qBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAjB0BC,GAAA,kBAAkB,CAAA,CAAA,EAChD,IAAAC,GAAA,KAkBI,OAAA,eAAAF,GAAA,WAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAlBKE,GAAA,QAAQ,CAAA,CAAA,EACjB,IAAAC,GAAA,KAGI,OAAA,eAAAH,GAAA,uBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAHKG,GAAA,oBAAoB,CAAA,CAAA,EAIzB,OAAA,eAAAH,GAAA,cAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAJ2BG,GAAA,WAAW,CAAA,CAAA,EAKtC,OAAA,eAAAH,GAAA,mBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OALwCG,GAAA,gBAAgB,CAAA,CAAA,EAMxD,OAAA,eAAAH,GAAA,eAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAN0DG,GAAA,YAAY,CAAA,CAAA,EAYtE,OAAA,eAAAH,GAAA,2BAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAZwEG,GAAA,wBAAwB,CAAA,CAAA,EAShG,OAAA,eAAAH,GAAA,iBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OATiHG,GAAA,cAAc,CAAA,CAAA,EAU/H,OAAA,eAAAH,GAAA,kBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAViIG,GAAA,eAAe,CAAA,CAAA,ICJpJ,IAAAC,GAAAC,EAAAC,IAAA,ukBAEA,IAAAC,GAAA,KAGAC,GAAA,KAEAC,GAAA,SAAAC,EAAA,CAAiCC,GAAAF,EAAAC,CAAA,EAE7B,SAAAD,EAAYG,EAAiB,QACzBF,EAAA,KAAA,KAAM,SAAUE,CAAS,GAAC,IAC9B,CAEA,OAAAH,EAAA,UAAA,aAAA,UAAA,CACI,MAAO,EACX,EAEAA,EAAA,UAAA,OAAA,SAAOI,EAAgBC,EAAU,CAC7B,OAAOJ,EAAA,UAAM,OAAM,KAAA,KAACG,GAlB5B,EAkBoCN,GAAA,aAAYO,CAAK,CAAC,CAClD,EAEAL,EAAA,UAAA,OAAA,SAAOM,EAAc,CACjB,OAtBR,EAsBeR,GAAA,cAAaG,EAAA,UAAM,OAAM,KAAA,KAACK,CAAM,CAAC,CAC5C,EACJN,CAAA,EAjBiCD,GAAA,iBAAiB,EAArCF,GAAA,YAAAG,KCPb,IAAAO,GAAAC,EAAAC,IAAA,skBAEA,IAAAC,GAAA,KACAC,GAAA,KAEAC,GAAA,SAAAC,EAAA,CAAgCC,GAAAF,EAAAC,CAAA,EAG5B,SAAAD,EAAYG,EAAsBC,EAAiB,CAAnD,IAAAC,EAAA,KACQC,EAAU,GACRC,EAAuB,CAAA,EAC7BJ,EAAO,QAAQ,SAACK,EAAK,CACbA,EAAM,UAAWF,EAAU,IAC/BC,EAAM,KAAKC,EAAM,IAAI,CACzB,CAAC,EACD,IAAMC,EAAQ,SAAWF,EAAM,KAAK,GAAG,EAAI,IAE3C,OAAAF,EAAAJ,EAAA,KAAA,KAAM,QAASQ,EAAML,EAAWE,CAAO,GAAC,KACxCD,EAAK,OAASF,GAClB,CAEA,OAAAH,EAAA,UAAA,aAAA,UAAA,CACI,IAAMU,EAAc,CAAA,EACpB,KAAK,OAAO,QAAQ,SAACF,EAAK,CACtBE,EAAO,KAAKF,EAAM,aAAY,CAAE,CACpC,CAAC,EAGD,IAAMG,EAAc,KAAK,OAAO,OAAO,SAACC,EAAOJ,EAAK,CAChD,IAAMK,EAAOL,EAAM,UACnB,OAAIK,IACKD,EAAMC,KAASD,EAAMC,GAAQ,GAClCD,EAAMC,MAEHD,CACX,EAAiC,CAAA,CAAG,EAGpC,YAAK,OAAO,QAAQ,SAACJ,EAAcM,EAAa,CAC5C,IAAID,EAAOL,EAAM,UACb,CAACK,GAAQF,EAAYE,KAAU,IAE/BA,IAAS,WAAYA,EAAO,WAE5BH,EAAOG,IAAS,OAEpBH,EAAOG,GAAQH,EAAOI,IAC1B,CAAC,EAEM,OAAO,OAAOJ,CAAM,CAC/B,EAEAV,EAAA,UAAA,OAAA,SAAOe,EAAgBC,EAA6C,CAChE,OArDR,EAqDejB,GAAA,MAAKgB,EAAQ,KAAK,OAAQC,CAAK,CAC1C,EAEAhB,EAAA,UAAA,OAAA,SAAOiB,EAAc,CACjB,OAAOA,EAAO,OAAO,KAAK,MAzDlC,EAyDwClB,GAAA,QAAOkB,EAAQ,KAAK,MAAM,CAAC,CAC/D,EACJjB,CAAA,EAtDgCF,GAAA,KAAK,EAAxBD,GAAA,WAAAG,KCLb,IAAAkB,GAAAC,EAAAC,IAAA,sGAIA,IAAAC,GAAA,KACAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAEjCE,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAEAC,GAAA,KAGMC,GAAiB,IAAI,OAAO,iBAAiB,EAC7CC,GAAkB,IAAI,OAAO,mBAAmB,EAKtDC,GAAA,UAAA,CAGI,SAAAA,EAAYC,EAAuB,EAlCvC,EAmCQlB,GAAA,gBAAe,KAAM,aAAckB,GAAc,IAAI,CACzD,CAEA,OAAAD,EAAA,UAAA,UAAA,SAAUE,EAAgB,CAA1B,IAAAC,EAAA,KAEI,OAAQD,EAAM,SAAU,CACpB,IAAK,UACD,OAAO,IAAId,GAAA,aAAac,EAAM,IAAI,EACtC,IAAK,OACD,OAAO,IAAIZ,GAAA,aAAaY,EAAM,IAAI,EACtC,IAAK,SACD,OAAO,IAAIP,GAAA,YAAYO,EAAM,IAAI,EACrC,IAAK,QACD,OAAO,IAAIX,GAAA,WAAWW,EAAM,IAAI,EACpC,IAAK,QACD,OAAO,IAAIb,GAAA,WAAW,KAAK,UAAUa,EAAM,aAAa,EAAGA,EAAM,YAAaA,EAAM,IAAI,EAC5F,IAAK,QACD,OAAO,IAAIN,GAAA,YAAYM,EAAM,YAAc,CAAA,GAAI,IAAI,SAACE,EAAS,CACzD,OAAOD,EAAK,UAAUC,CAAS,CACnC,CAAC,EAAGF,EAAM,IAAI,EAClB,IAAK,GACD,OAAO,IAAIT,GAAA,UAAUS,EAAM,IAAI,EAIvC,IAAIG,EAAQH,EAAM,KAAK,MAAMH,EAAe,EAC5C,GAAIM,EAAO,CACP,IAAIC,EAAO,SAASD,EAAM,IAAM,KAAK,EACrC,OAAIC,IAAS,GAAKA,EAAO,KAAQA,EAAO,IAAO,IAC3CpB,GAAO,mBAAmB,WAAamB,EAAM,GAAK,cAAe,QAASH,CAAK,EAE5E,IAAIR,GAAA,YAAYY,EAAO,EAAID,EAAM,KAAO,MAAQH,EAAM,IAAI,EAKrE,GADAG,EAAQH,EAAM,KAAK,MAAMJ,EAAc,EACnCO,EAAO,CACP,IAAIC,EAAO,SAASD,EAAM,EAAE,EAC5B,OAAIC,IAAS,GAAKA,EAAO,KACrBpB,GAAO,mBAAmB,uBAAwB,QAASgB,CAAK,EAE7D,IAAIV,GAAA,gBAAgBc,EAAMJ,EAAM,IAAI,EAG/C,OAAOhB,GAAO,mBAAmB,eAAgB,OAAQgB,EAAM,IAAI,CACvE,EAEAF,EAAA,UAAA,aAAA,UAAA,CAAyB,MAAO,GAAI,EAEpCA,EAAA,UAAA,WAAA,SAAWO,EAAkBC,EAAoB,CAC7C,OAAO,IAAIrB,GAAA,OAAOoB,EAAM,KAAK,aAAY,EAAI,KAAK,WAAYC,CAAU,CAC5E,EAEAR,EAAA,UAAA,WAAA,UAAA,CACI,OAAO,IAAIb,GAAA,OAAO,KAAK,aAAY,CAAE,CACzC,EAEAa,EAAA,UAAA,gBAAA,SAAgBS,EAAwC,CAAxD,IAAAN,EAAA,KACUO,EAAuBD,EAAM,IAAI,SAACE,EAAI,CAAK,OAAAR,EAAK,UAAUN,GAAA,UAAU,KAAKc,CAAI,CAAC,CAAnC,CAAoC,EAC/EC,EAAQ,IAAIhB,GAAA,WAAWc,EAAQ,GAAG,EACxC,OAAOE,EAAM,aAAY,CAC7B,EAEAZ,EAAA,UAAA,OAAA,SAAOS,EAA0CI,EAA0B,CAA3E,IAAAV,EAAA,KACQM,EAAM,SAAWI,EAAO,QACxB3B,GAAO,WAAW,+BAAgCF,GAAA,OAAO,OAAO,iBAAkB,CAC9E,MAAO,CAAE,MAAOyB,EAAM,OAAQ,OAAQI,EAAO,MAAM,EACnD,MAAO,CAAE,MAAOJ,EAAO,OAAQI,CAAM,EACxC,EAGL,IAAMH,EAASD,EAAM,IAAI,SAACE,EAAI,CAAK,OAAAR,EAAK,UAAUN,GAAA,UAAU,KAAKc,CAAI,CAAC,CAAnC,CAAoC,EACjEC,EAAS,IAAIhB,GAAA,WAAWc,EAAQ,GAAG,EAEnCI,EAAS,KAAK,WAAU,EAC9B,OAAAF,EAAM,OAAOE,EAAQD,CAAM,EACpBC,EAAO,IAClB,EAEAd,EAAA,UAAA,OAAA,SAAOS,EAA0CF,EAAiBQ,EAAe,CAAjF,IAAAZ,EAAA,KACUO,EAAuBD,EAAM,IAAI,SAACE,EAAI,CAAK,OAAAR,EAAK,UAAUN,GAAA,UAAU,KAAKc,CAAI,CAAC,CAAnC,CAAoC,EAC/EC,EAAQ,IAAIhB,GAAA,WAAWc,EAAQ,GAAG,EACxC,OAAOE,EAAM,OAAO,KAAK,YArHjC,EAqH4C9B,GAAA,UAASyB,CAAI,EAAGQ,CAAK,CAAC,CAC9D,EACJf,CAAA,EAxFA,EAAanB,GAAA,SAAAmB,GA0FAnB,GAAA,gBAA4B,IAAImB,+FCzH7C,IAAAgB,GAAA,KACAC,GAAA,KAEA,SAAgBC,GAAGC,EAAY,CAC3B,SAAOH,GAAA,cAAUC,GAAA,aAAYE,CAAI,CAAC,CACtC,CAFAC,GAAA,GAAAF,oGCHaG,GAAA,QAAU,eCAvB,IAAAC,GAAAC,EAAAC,IAAA,2FAEA,IAAAC,GAAA,KAGA,SAAgBC,GAAOC,EAAgB,CACnC,OANJ,EAMWF,GAAA,UAAS,IAAI,WAAW,OAAO,KAAKE,EAAU,QAAQ,CAAC,CAAC,CACnE,CAFAH,GAAA,OAAAE,GAIA,SAAgBE,GAAOC,EAAe,CAClC,OAAO,OAAO,MAVlB,EAUuBJ,GAAA,UAASI,CAAI,CAAC,EAAE,SAAS,QAAQ,CACxD,CAFAL,GAAA,OAAAI,KCTA,IAAAE,GAAAC,EAAAC,IAAA,2FAEA,IAAAC,GAAA,KAAS,OAAA,eAAAD,GAAA,SAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAC,GAAA,MAAM,CAAA,CAAA,EAAE,OAAA,eAAAD,GAAA,SAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAC,GAAA,MAAM,CAAA,CAAA,2PC+BvB,SAASC,GAAKC,EAAmBC,EAAc,CACvCA,GAAS,OAAQA,EAAQ,GAC7B,IAAMC,EAAqB,CAAA,EAErBC,EAAUD,EAAO,QAEjBE,EAAW,SAAUC,EAAiBJ,EAAa,CACrDE,EAAQ,KAAKE,EAAK,SAAUC,EAAQ,CAC5BL,EAAQ,GAAK,MAAM,QAAQK,CAAG,EAC9BF,EAASE,EAAKL,EAAQ,CAAC,EAExBC,EAAO,KAAKI,CAAG,CAEtB,CAAC,CACL,EAEA,OAAAF,EAASJ,EAAOC,CAAK,EACdC,CACX,CAEA,SAASK,GAAoFP,EAAoB,CAE7G,QADME,EAAqC,CAAA,EAClCM,EAAI,EAAGA,EAAIR,EAAM,OAAQQ,IAAK,CACnC,IAAMC,EAAQT,EAAMQ,GACpBN,EAAOO,EAAM,IAAMA,EAAM,GAE7B,OAAOP,CACX,CAEA,SAAgBQ,GAAkBC,EAAc,CAC/C,IAAIC,EAAM,EACV,SAASC,GAAG,CAAK,OAAQF,EAAMC,MAAU,EAAKD,EAAMC,IAAQ,CAM5D,QAHIE,EAAeD,EAAG,EAClBE,EAAQ,EACRC,EAAM,CAAC,EAAG,CAAC,EACNR,EAAI,EAAGA,EAAIM,EAAcN,IACjCQ,EAAI,KAAKD,GAASF,EAAG,CAAE,EAIxB,IAAII,EAAOJ,EAAG,EACVK,EAAcN,EAClBA,GAAOK,EAEP,IAAIE,EAAa,EACbC,EAAc,EAClB,SAASC,GAAQ,CAChB,OAAIF,GAAc,IAGjBC,EAAeA,GAAe,EAAKT,EAAMC,KACzCO,EAAa,GAENC,GAAe,EAAED,EAAc,CACxC,CAUA,QARMG,EAAI,GACJC,EAAO,KAAA,IAAA,EAAGD,CAAC,EACXE,EAAOD,IAAS,EAChBE,EAAOD,GAAQ,EACfE,EAAOH,EAAO,EAGhBI,EAAW,EACNnB,EAAI,EAAGA,EAAIc,EAAGd,IAAKmB,EAAYA,GAAY,EAAKN,EAAQ,EAKjE,QAHIO,EAAU,CAAA,EACVC,EAAM,EACNC,EAAQP,IACC,CAIZ,QAHId,EAAQ,KAAK,QAASkB,EAAWE,EAAM,GAAKd,EAAS,GAAKe,CAAK,EAC/DC,EAAQ,EACRC,EAAMlB,EACHkB,EAAMD,EAAQ,GAAG,CACvB,IAAIE,EAAOF,EAAQC,IAAS,EACxBvB,EAAQO,EAAIiB,GACfD,EAAMC,EAENF,EAAQE,EAGV,GAAIF,GAAS,EAAG,MAChBH,EAAQ,KAAKG,CAAK,EAGlB,QAFIG,EAAIL,EAAM,KAAK,MAAMC,EAAQd,EAAIe,GAAWhB,CAAK,EACjDoB,EAAIN,EAAM,KAAK,MAAMC,EAAQd,EAAIe,EAAM,GAAKhB,CAAK,EAAI,IAChDmB,EAAIC,GAAKX,IAAS,GAC1BG,EAAYA,GAAY,EAAKD,EAAOL,EAAQ,EAC5Ca,EAAKA,GAAK,EAAKR,EACfS,EAAKA,GAAK,EAAKT,EAAO,EAEvB,KAAOQ,EAAI,CAACC,EAAIV,GACfE,EAAYA,EAAWH,EAAUG,GAAY,EAAMD,IAAS,EAAML,EAAQ,EAC1Ea,EAAKA,GAAK,EAAKV,EACfW,GAAMA,EAAIX,IAAS,EAAKA,EAAO,EAEhCK,EAAMK,EACNJ,EAAQ,EAAIK,EAAID,EAEjB,IAAIE,EAAStB,EAAe,EAC5B,OAAOc,EAAQ,IAAI,SAAAS,EAAC,CACnB,OAAQA,EAAID,EAAQ,CACnB,IAAK,GAAG,OAAOA,EAAS,OAAYzB,EAAMO,MAAkB,GAAOP,EAAMO,MAAkB,EAAKP,EAAMO,MACtG,IAAK,GAAG,OAAOkB,EAAS,KAAUzB,EAAMO,MAAkB,EAAKP,EAAMO,MACrE,IAAK,GAAG,OAAOkB,EAASzB,EAAMO,KAC9B,QAAS,OAAOmB,EAAI,EAEtB,CAAC,CACF,CAhFAC,GAAA,kBAAA5B,GAoFA,SAAgB6B,GAAaC,EAAU,CACtC,IAAI5B,EAAM,EACV,OAAO,UAAA,CAAM,OAAA4B,EAAE5B,IAAF,CACd,CAHA0B,GAAA,aAAAC,GAIA,SAAgBE,GAAwB9B,EAAc,CACrD,OAAO4B,GAAa7B,GAAkBC,CAAK,CAAC,CAC7C,CAFA2B,GAAA,wBAAAG,GAKA,SAAgBC,GAAOlC,EAAS,CAC/B,OAAQA,EAAI,EAAM,CAACA,GAAK,EAAMA,GAAK,CACpC,CAFA8B,GAAA,OAAAI,GAIA,SAASC,GAAYC,EAAWC,EAAc,CAE7C,QADIL,EAAI,MAAMI,CAAC,EACNpC,EAAI,EAAGA,EAAIoC,EAAGpC,IAAKgC,EAAEhC,GAAK,EAAIqC,EAAI,EAC3C,OAAOL,CACR,CAEA,SAASM,GAAeF,EAAWC,EAAc,CAEhD,QADIL,EAAI,MAAMI,CAAC,EACNpC,EAAI,EAAG6B,EAAI,GAAI7B,EAAIoC,EAAGpC,IAAKgC,EAAEhC,GAAK6B,GAAK,EAAIQ,EAAI,EACxD,OAAOL,CACR,CAEA,SAASO,GAAYH,EAAWC,EAAc,CAE7C,QADIL,EAAI,MAAMI,CAAC,EACNpC,EAAI,EAAG6B,EAAI,EAAG7B,EAAIoC,EAAGpC,IAAKgC,EAAEhC,GAAK6B,GAAKK,GAAOG,EAAI,CAAE,EAC5D,OAAOL,CACR,CAEA,SAAgBQ,GAAkBH,EAAgBI,EAA+B,CAK7E,QAJIT,EAAIM,GAAeD,EAAI,EAAIA,CAAI,EAC/B,EAAIA,EAAI,EACRK,EAAKJ,GAAe,EAAGD,CAAI,EAC3BM,EAAKR,GAAY,EAAGE,CAAI,EACnBrC,EAAI,EAAGA,EAAI,EAAGA,IACnB,QAAS4C,EAAI,EAAGA,EAAID,EAAG3C,GAAI4C,IACvBZ,EAAE,KAAKU,EAAG1C,GAAK4C,CAAC,EAGxB,OAAOH,EAAST,EAAE,IAAI,SAAAH,EAAC,CAAI,OAAAY,EAAOZ,EAAP,CAAS,EAAIG,CAC5C,CAXAF,GAAA,kBAAAU,GAgBA,SAAgBK,GAAgBR,EAAc,CAE7C,QADIS,EAAM,CAAA,IACG,CACZ,IAAIC,EAAIV,EAAI,EACZ,GAAIU,GAAK,EAAG,MACZD,EAAI,KAAKE,GAAkBD,EAAGV,CAAI,CAAC,EAEpC,OAAa,CACZ,IAAIU,EAAIV,EAAI,EAAK,EACjB,GAAIU,EAAI,EAAG,MACXD,EAAI,KAAKG,GAAuBF,EAAGV,CAAI,CAAC,EAEzC,OAAOtC,GAAmCR,GAAKuD,CAAG,CAAC,CACpD,CAbAhB,GAAA,gBAAAe,GAeA,SAAgBK,GAA2Bb,EAAc,CAExD,QADIL,EAAI,CAAA,IACK,CACZ,IAAIhC,EAAIqC,EAAI,EACZ,GAAIrC,GAAK,EAAG,MACZgC,EAAE,KAAKhC,CAAC,EAET,OAAOgC,CACR,CARAF,GAAA,2BAAAoB,GAUA,SAASC,GAAgBf,EAAWW,EAAWV,EAAc,CAEzD,QADIe,EAAI,MAAMhB,CAAC,EAAE,KAAK,MAAS,EAAE,IAAI,UAAA,CAAM,MAAA,CAAA,CAAA,CAAE,EACpC,EAAI,EAAG,EAAIW,EAAG,IACnBR,GAAYH,EAAGC,CAAI,EAAE,QAAQ,SAACR,EAAGe,EAAC,CAAK,OAAAQ,EAAER,GAAG,KAAKf,CAAC,CAAX,CAAY,EAEvD,OAAOuB,CACX,CAGA,SAASJ,GAAkBD,EAAWV,EAAc,CACnD,IAAIgB,EAAK,EAAIhB,EAAI,EACbiB,EAAKjB,EAAI,EACTM,EAAKO,GAA2Bb,CAAI,EACpCe,EAAID,GAAgBR,EAAG,OAAQ,EAAEI,EAAGV,CAAI,EAC5C,OAAO9C,GAAK6D,EAAE,IAAI,SAACpB,EAAGhC,EAAC,CACrB,IAAM6B,EAAIG,EAAE,GAAIuB,EAAKvB,EAAE,MAAM,CAAC,EAG/B,OAAO,MAAMW,EAAG3C,EAAE,EAAE,KAAK,MAAS,EAAE,IAAI,SAACwD,EAAGZ,EAAC,CAC5C,IAAIa,EAAOb,EAAIU,EACf,MAAO,CAACzB,EAAIe,EAAIS,EAAIE,EAAG,IAAI,SAAAG,EAAC,CAAI,OAAAA,EAAID,CAAJ,CAAQ,CAAC,CAC1C,CAAC,CACF,CAAC,CAAC,CACH,CAEA,SAASR,GAAuBF,EAAWV,EAAc,CACxD,IAAID,EAAI,EAAIC,EAAI,EACZe,EAAID,GAAgBf,EAAG,EAAEW,EAAGV,CAAI,EACpC,OAAOe,EAAE,IAAI,SAAApB,EAAC,CAAI,MAAA,CAACA,EAAE,GAAIA,EAAE,MAAM,CAAC,CAAC,CAAjB,CAAkB,CACrC,CAeA,SAAgB2B,GAAgBtB,EAAc,CAC7C,IAAIuB,EAASpB,GAAkBH,CAAI,EAAE,KAAK,SAACX,EAAGC,EAAC,CAAK,OAAAD,EAAIC,CAAJ,CAAK,EACzD,OAAOkC,EAAI,EACX,SAASA,GAAI,CAEZ,QADIC,EAAW,CAAA,IACF,CACZ,IAAIC,EAAOvB,GAAkBH,EAAMuB,CAAM,EACzC,GAAIG,EAAK,QAAU,EAAG,MACtBD,EAAS,KAAK,CAAC,IAAK,IAAI,IAAIC,CAAI,EAAG,KAAMF,EAAI,CAAE,CAAC,EAE/CC,EAAS,KAAK,SAACpC,EAAGC,EAAC,CAAK,OAAAA,EAAE,IAAI,KAAOD,EAAE,IAAI,IAAnB,CAAuB,EAChD,IAAIsC,EAAO3B,EAAI,EACX4B,EAAQD,EAAO,EACnBA,EAAQA,EAAO,EAAG,EAClB,IAAIE,EAAO,CAAC,EAAEF,EAAO,GACrBA,IAAS,EACT,IAAIG,EAAOH,GAAQ,EACfI,EAAQJ,GAAQ,EACpB,MAAO,CAAC,SAAQF,EAAE,MAAKG,EAAE,KAAIC,EAAE,KAAIC,EAAE,MAAKC,CAAA,CAC5C,CACD,CApBAtC,GAAA,gBAAA6B,oGCzOA,IAAAU,GAAA,KAEAC,GAAA,KAEA,SAAgBC,IAAO,CACnB,SAAOD,GAAA,4BAAwBD,GAAA,QAAO,k6cAAk6c,CAAC,CAC78c,CAFAG,GAAA,QAAAD,sICJA,IAAAE,GAAA,KAEAC,GAAA,KACMC,MAAID,GAAA,SAAO,EAEjBE,GAAA,KAIMC,GAAQ,IAAI,OAAID,GAAA,mBAAkBD,EAAC,CAAC,EACpCG,GAAU,IAAI,OAAIF,GAAA,mBAAkBD,EAAC,CAAC,EACtCI,MAASH,GAAA,iBAAgBD,EAAC,EAC1BK,MAAaJ,GAAA,iBAAgBD,EAAC,EAI9BM,GAAS,GACTC,GAAa,GAEnB,SAASC,GAAWC,EAAY,CAC5B,SAAOX,GAAA,kBAAiBW,CAAI,CAChC,CAEA,SAASC,GAAYC,EAAkB,CACnC,OAAOA,EAAI,OAAO,SAAAC,EAAE,CAAI,OAAAA,GAAM,KAAN,CAAY,CACxC,CAEA,SAAgBC,GAAyBJ,EAAY,CACpD,QAAkBK,EAAA,EAAAC,EAAAN,EAAK,MAAM,GAAG,EAAdK,EAAAC,EAAA,OAAAD,IAAiB,CAA9B,IAAIE,EAAKD,EAAAD,GACTH,EAAMH,GAAWQ,CAAK,EAC1B,GAAI,CACH,QAASC,EAAIN,EAAI,YAAYJ,EAAU,EAAI,EAAGU,GAAK,EAAGA,IACrD,GAAIN,EAAIM,KAAOV,GACd,MAAM,IAAI,MAAM,kCAAkC,EAGpD,GAAII,EAAI,QAAU,GAAKA,EAAI,MAAM,SAAAC,EAAE,CAAI,OAAAA,EAAK,GAAL,CAAS,GAAKD,EAAI,KAAOL,IAAUK,EAAI,KAAOL,GACpF,MAAM,IAAI,MAAM,yBAAyB,QAElCY,EAAP,CACD,MAAM,IAAI,MAAM,kBAAkBF,EAAK,MAAME,EAAI,OAAS,GAG5D,OAAOT,CACR,CAjBAU,GAAA,yBAAAN,GAmBA,SAAgBO,GAAcX,EAAY,CACzC,OAAOI,GAAyBQ,GAAUZ,EAAMC,EAAW,CAAC,CAC7D,CAFAS,GAAA,cAAAC,GAIA,SAASC,GAAUZ,EAAca,EAAiD,CAGjF,QAFIC,EAAQf,GAAWC,CAAI,EAAE,QAAO,EAChCe,EAAS,CAAA,EACND,EAAM,QAAQ,CACpB,IAAIE,EAAQC,GAAuBH,CAAK,EACxC,GAAIE,EAAO,CACVD,EAAO,KAAI,MAAXA,EAAeF,EAAaG,CAAK,CAAC,EAClC,SAED,IAAIb,EAAKW,EAAM,IAAG,EAClB,GAAIrB,GAAM,IAAIU,CAAE,EAAG,CAClBY,EAAO,KAAKZ,CAAE,EACd,SAED,GAAI,CAAAT,GAAQ,IAAIS,CAAE,EAGlB,KAAID,EAAMP,GAAOQ,GACjB,GAAID,EAAK,CACRa,EAAO,KAAI,MAAXA,EAAeb,CAAG,EAClB,SAED,MAAM,IAAI,MAAM,2BAA2BC,EAAG,SAAS,EAAE,EAAE,YAAW,CAAI,GAE3E,OAAOC,GAAyBc,GAAI,OAAO,cAAa,MAApB,OAAwBH,CAAM,CAAA,CAAE,CACrE,CAEA,SAASG,GAAIC,EAAS,CAClB,OAAOA,EAAE,UAAU,KAAK,CAC5B,CAEA,SAASF,GAAuBf,EAAoBkB,EAAqB,OACpEC,EAAOzB,GACPoB,EACAM,EACAC,EAAQ,CAAA,EACRC,EAAMtB,EAAI,OACVkB,IAAOA,EAAM,OAAS,GAC1B,qBACC,IAAIjB,EAAKD,EAAI,EAAEsB,GAEf,GADAH,GAAOf,EAAAe,EAAK,SAAS,KAAK,SAAAI,EAAC,CAAI,OAAAA,EAAE,IAAI,IAAItB,CAAE,CAAZ,CAAa,KAAC,MAAAG,IAAA,OAAA,OAAAA,EAAE,KAC3C,CAACe,gBACL,GAAIA,EAAK,KACRC,EAAQnB,UACEkB,EAAK,OACXlB,IAAOmB,gBAEZC,EAAM,KAAKpB,CAAE,EACTkB,EAAK,OACRE,EAAM,KAAK,KAAM,EACbC,EAAM,GAAKtB,EAAIsB,EAAM,IAAM,OAAQA,KAEpCH,EAAK,QACRL,EAAQO,EAAM,MAAK,EACfF,EAAK,OAAS,GAAGL,EAAM,OAAO,EAAG,CAAC,EAClCI,GAAOA,EAAM,KAAI,MAAVA,EAAclB,EAAI,MAAMsB,CAAG,EAAE,QAAO,CAAE,EACjDtB,EAAI,OAASsB,IAlBRA,GAAG,gCAqBV,OAAOR,CACR,gJC3IA,IAAAU,GAAA,KACAC,GAAA,KACAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAEjCE,GAAA,KAEMC,GAAQ,IAAI,WAAW,EAAE,EAC/BA,GAAM,KAAK,CAAC,EAEZ,SAASC,GAAeC,EAAgB,CACpC,GAAIA,EAAK,SAAW,EAAK,MAAM,IAAI,MAAM,mCAAmC,EAC5E,OAAOA,CACX,CAEA,SAASC,GAAaC,EAAY,CAC9B,IAAMC,KAAQX,GAAA,gBAAYK,GAAA,eAAcK,CAAI,CAAC,EACvCE,EAA2B,CAAA,EAEjC,GAAIF,EAAK,SAAW,EAAK,OAAOE,EAGhC,QADIC,EAAO,EACF,EAAI,EAAG,EAAIF,EAAM,OAAQ,IAAK,CACnC,IAAMG,EAAIH,EAAM,GAGZG,IAAM,KACNF,EAAM,KAAKL,GAAeI,EAAM,MAAME,EAAM,CAAC,CAAC,CAAC,EAC/CA,EAAO,EAAI,GAKnB,GAAIA,GAAQF,EAAM,OAAU,MAAM,IAAI,MAAM,mCAAmC,EAE/E,OAAAC,EAAM,KAAKL,GAAeI,EAAM,MAAME,CAAI,CAAC,CAAC,EACrCD,CACX,CAEA,SAAgBG,GAAaL,EAAY,CACrC,OAAOD,GAAaC,CAAI,EAAE,IAAI,SAACF,EAAI,CAAK,SAAAR,GAAA,cAAaQ,CAAI,CAAjB,CAAkB,EAAE,KAAK,GAAG,CACxE,CAFAQ,GAAA,aAAAD,GAIA,SAAgBE,GAAYP,EAAY,CACpC,GAAI,CACA,OAAQD,GAAaC,CAAI,EAAE,SAAW,OACxC,CAAc,CAChB,MAAO,EACX,CALAM,GAAA,YAAAC,GAOA,SAAgBC,GAASR,EAAY,CAE7B,OAAOA,GAAU,UACjBN,GAAO,mBAAmB,iCAAkC,OAAQM,CAAI,EAM5E,QAHIS,EAA8Bb,GAE5BM,EAAQH,GAAaC,CAAI,EACxBE,EAAM,QACTO,KAASlB,GAAA,cAAUF,GAAA,QAAO,CAACoB,KAAQlB,GAAA,WAAUW,EAAM,IAAG,CAAE,CAAC,CAAC,CAAC,EAG/D,SAAOb,GAAA,SAAQoB,CAAM,CACzB,CAdAH,GAAA,SAAAE,GAgBA,SAAgBE,GAAUV,EAAY,CAClC,SAAOX,GAAA,YAAQA,GAAA,QAAOU,GAAaC,CAAI,EAAE,IAAI,SAACF,EAAI,CAE9C,GAAIA,EAAK,OAAS,GACd,MAAM,IAAI,MAAM,oDAAoD,EAGxE,IAAMG,EAAQ,IAAI,WAAWH,EAAK,OAAS,CAAC,EAC5C,OAAAG,EAAM,IAAIH,EAAM,CAAC,EACjBG,EAAM,GAAKA,EAAM,OAAS,EACnBA,CAEX,CAAC,CAAC,CAAC,EAAI,IACX,CAbAK,GAAA,UAAAI,yHCrEA,IAAAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAEaC,GAAA,cAAgB;EAE7B,SAAgBC,GAAYC,EAAuB,CAC/C,OAAI,OAAOA,GAAa,WAAYA,KAAUH,GAAA,aAAYG,CAAO,MAC1DJ,GAAA,cAAUD,GAAA,QAAO,IACpBE,GAAA,aAAYC,GAAA,aAAa,KACzBD,GAAA,aAAY,OAAOG,EAAQ,MAAM,CAAC,EAClCA,EACH,CAAC,CACN,CAPAF,GAAA,YAAAC,m/CCLA,IAAAE,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAEjCE,GAAA,KAEMC,GAAU,IAAI,WAAW,EAAE,EACjCA,GAAQ,KAAK,CAAC,EAEd,IAAMC,GAAyBT,GAAA,UAAU,KAAK,EAAE,EAC1CU,GAAkBV,GAAA,UAAU,KAAK,CAAC,EAClCW,GAAiBX,GAAA,UAAU,KAAK,CAAC,EACjCY,GAAwBZ,GAAA,UAAU,KAAK,oEAAoE,EAEjH,SAASa,GAAYC,EAAgB,CACjC,IAAMC,KAAQd,GAAA,UAASa,CAAK,EACtBE,EAAYD,EAAM,OAAS,GACjC,OAAIC,KACOf,GAAA,WAAU,CAAEc,EAAOP,GAAQ,MAAMQ,CAAS,CAAC,CAAE,KAEjDf,GAAA,SAAQc,CAAK,CACxB,CAEA,IAAME,MAAUhB,GAAA,YAAWU,GAAI,YAAW,EAAI,EAAE,EAC1CO,MAAWjB,GAAA,YAAWS,GAAK,YAAW,EAAI,EAAE,EAE5CS,GAA2C,CAC7C,KAAM,SACN,QAAS,SACT,QAAS,UACT,kBAAmB,UACnB,KAAM,WAGJC,GAAkC,CACpC,OAAQ,UAAW,UAAW,oBAAqB,QAGvD,SAASC,GAAYC,EAAW,CAC5B,OAAO,SAAUR,EAAU,CACvB,OAAI,OAAOA,GAAW,UAClBR,GAAO,mBAAmB,4BAA6B,KAAK,UAAUgB,CAAG,EAAM,UAAWA,EAAQR,CAAK,EAEpGA,CACX,CACJ,CAEA,IAAMS,GAAoD,CACtD,KAAMF,GAAY,MAAM,EACxB,QAASA,GAAY,SAAS,EAC9B,QAAS,SAASP,EAAU,CACxB,GAAI,CACA,OAAOd,GAAA,UAAU,KAAKc,CAAK,EAAE,SAAQ,OACvC,CAAc,CAChB,OAAOR,GAAO,mBAAmB,qCAAsC,iBAAkBQ,CAAK,CAClG,EACA,kBAAmB,SAASA,EAAU,CAClC,GAAI,CACA,SAAOf,GAAA,YAAWe,CAAK,EAAE,YAAW,OACtC,CAAc,CAChB,OAAOR,GAAO,mBAAmB,2CAA4C,2BAA4BQ,CAAK,CAClH,EACA,KAAM,SAASA,EAAU,CACrB,GAAI,CACA,IAAMC,KAAQd,GAAA,UAASa,CAAK,EAC5B,GAAIC,EAAM,SAAW,GAAM,MAAM,IAAI,MAAM,YAAY,EACvD,SAAOd,GAAA,SAAQc,CAAK,OACtB,CAAc,CAChB,OAAOT,GAAO,mBAAmB,8BAA+B,cAAeQ,CAAK,CACxF,GAGJ,SAASU,GAAeC,EAAY,CAEhC,CACI,IAAMC,EAAQD,EAAK,MAAM,gBAAgB,EACzC,GAAIC,EAAO,CACP,IAAMC,EAAUD,EAAM,KAAO,GAEvBE,EAAQ,SAASF,EAAM,IAAM,KAAK,GACpCE,EAAQ,IAAM,GAAKA,EAAQ,KAAQF,EAAM,IAAMA,EAAM,KAAO,OAAOE,CAAK,IACxEtB,GAAO,mBAAmB,wBAAyB,OAAQmB,CAAI,EAGnE,IAAMI,EAAcjB,GAAW,KAAKe,EAAUC,EAAQ,EAAIA,CAAK,EACzDE,EAAcH,EAASE,EAAY,IAAIlB,EAAG,EAAE,IAAIF,EAAW,EAAGC,GAEpE,OAAO,SAASI,EAAmB,CAC/B,IAAMiB,EAAI/B,GAAA,UAAU,KAAKc,CAAK,EAE9B,OAAIiB,EAAE,GAAGD,CAAW,GAAKC,EAAE,GAAGF,CAAW,IACrCvB,GAAO,mBAAmB,2BAA4BmB,EAAS,QAASX,CAAK,KAG1Eb,GAAA,YAAW8B,EAAE,OAAO,GAAG,EAAE,YAAW,EAAI,EAAE,CACrD,GAKR,CACI,IAAML,EAAQD,EAAK,MAAM,cAAc,EACvC,GAAIC,EAAO,CACP,IAAMM,EAAQ,SAASN,EAAM,EAAE,EAC/B,OAAIM,IAAU,GAAKA,EAAQ,IAAMN,EAAM,KAAO,OAAOM,CAAK,IACtD1B,GAAO,mBAAmB,sBAAuB,OAAQmB,CAAI,EAG1D,SAASX,EAAgB,CAC5B,IAAMC,KAAQd,GAAA,UAASa,CAAK,EAC5B,OAAIC,EAAM,SAAWiB,GACjB1B,GAAO,mBAAmB,sBAAuBmB,EAAS,QAASX,CAAK,EAErED,GAAYC,CAAK,CAC5B,GAIR,OAAQW,EAAM,CACV,IAAK,UAAW,OAAO,SAASX,EAAa,CACzC,SAAOb,GAAA,eAAWF,GAAA,YAAWe,CAAK,EAAG,EAAE,CAC3C,EACA,IAAK,OAAQ,OAAO,SAASA,EAAc,CACvC,OAAUA,EAAmBG,GAAVC,EACvB,EACA,IAAK,QAAS,OAAO,SAASJ,EAAgB,CAC1C,SAAOZ,GAAA,WAAUY,CAAK,CAC1B,EACA,IAAK,SAAU,OAAO,SAASA,EAAa,CACxC,SAAOP,GAAA,IAAGO,CAAK,CACnB,EAGJ,OAAO,IACX,CAEA,SAASmB,GAAWC,EAAcC,EAA6B,CAC3D,OAAWD,EAAI,IAAMC,EAAO,IAAI,SAACC,EAAc,KAAZF,EAAIE,EAAA,KAAEX,EAAIW,EAAA,KAAO,OAACX,EAAO,IAAMS,CAAd,CAAmB,EAAE,KAAK,GAAG,EAAC,GACtF,CAEA,IAAAG,GAAA,UAAA,CAOI,SAAAA,EAAYC,EAA4C,IACpDnC,GAAA,gBAAe,KAAM,QAAS,OAAO,UAAOA,GAAA,UAASmC,CAAK,CAAC,CAAC,KAE5DnC,GAAA,gBAAe,KAAM,gBAAiB,CAAA,CAAG,KACzCA,GAAA,gBAAe,KAAM,SAAU,CAAA,CAAG,EAGlC,IAAMoC,EAAiD,CAAA,EAGjDC,EAAyC,CAAA,EAGzCC,EAAoD,CAAA,EAE1D,OAAO,KAAKH,CAAK,EAAE,QAAQ,SAACb,EAAI,CAC5Bc,EAAMd,GAAQ,CAAA,EACde,EAAQf,GAAQ,CAAA,EAChBgB,EAAShB,GAAQ,CAAA,CACrB,CAAC,iBAEUiB,EAAI,CAEX,IAAMC,EAAuC,CAAA,EAE7CL,EAAMI,GAAM,QAAQ,SAACE,EAAK,CAGlBD,EAAYC,EAAM,OAClBtC,GAAO,mBAAmB,2BAA4B,KAAK,UAAUsC,EAAM,IAAI,EAAC,OAAS,KAAK,UAAUF,CAAI,EAAM,QAASJ,CAAK,EAEpIK,EAAYC,EAAM,MAAQ,GAG1B,IAAMC,EAAWD,EAAM,KAAK,MAAM,qBAAqB,EAAE,GACrDC,IAAaH,GACbpC,GAAO,mBAAmB,8BAA+B,KAAK,UAAUuC,CAAQ,EAAM,QAASP,CAAK,EAIxG,IAAMQ,EAAUtB,GAAeqB,CAAQ,EACnCC,IAECN,EAAQK,IACTvC,GAAO,mBAAmB,gBAAiB,KAAK,UAAUuC,CAAQ,EAAM,QAASP,CAAK,EAI1FE,EAAQK,GAAU,KAAKH,CAAI,EAC3BH,EAAMG,GAAMG,GAAY,GAC5B,CAAC,GA7BL,QAAWH,KAAQJ,IAARI,CAAI,EAiCf,IAAMK,EAAe,OAAO,KAAKP,CAAO,EAAE,OAAO,SAACQ,EAAC,CAAK,OAACR,EAAQQ,GAAG,SAAW,CAAvB,CAAyB,EAE7ED,EAAa,SAAW,EACxBzC,GAAO,mBAAmB,uBAAwB,QAASgC,CAAK,EACzDS,EAAa,OAAS,GAC7BzC,GAAO,mBAAmB,4CAA6CyC,EAAa,IAAI,SAACE,EAAC,CAAK,OAAC,KAAK,UAAUA,CAAC,CAAjB,CAAmB,EAAE,KAAK,IAAI,EAAM,QAASX,CAAK,KAGrJnC,GAAA,gBAAe,KAAM,cAAe4C,EAAa,EAAE,EAGnD,SAASG,EAAczB,EAAc0B,EAA8B,CAC3DA,EAAM1B,IACNnB,GAAO,mBAAmB,8BAA+B,KAAK,UAAUmB,CAAI,EAAM,QAASa,CAAK,EAGpGa,EAAM1B,GAAQ,GAEd,OAAO,KAAKc,EAAMd,EAAK,EAAE,QAAQ,SAAC2B,EAAK,CAC/B,CAACZ,EAAQY,KAGbF,EAAcE,EAAOD,CAAK,EAG1B,OAAO,KAAKA,CAAK,EAAE,QAAQ,SAACE,EAAO,CAC/BZ,EAASY,GAASD,GAAS,EAC/B,CAAC,EACL,CAAC,EAED,OAAOD,EAAM1B,EACjB,CACAyB,EAAc,KAAK,YAAa,CAAA,CAAG,EAGnC,QAAWI,KAAQb,EAAU,CACzB,IAAMc,EAAK,OAAO,KAAKd,EAASa,EAAK,EACrCC,EAAG,KAAI,EACP,KAAK,OAAOD,GAAQrB,GAAWqB,EAAMhB,EAAMgB,EAAK,EAAIC,EAAG,IAAI,SAACN,EAAC,CAAK,OAAAhB,GAAWgB,EAAGX,EAAMW,EAAE,CAAtB,CAAuB,EAAE,KAAK,EAAE,EAE1G,CAEA,OAAAZ,EAAA,UAAA,WAAA,SAAWZ,EAAY,CACnB,IAAIqB,EAAU,KAAK,cAAcrB,GACjC,OAAKqB,IACDA,EAAU,KAAK,cAAcrB,GAAQ,KAAK,YAAYA,CAAI,GAEvDqB,CACX,EAEAT,EAAA,UAAA,YAAA,SAAYZ,EAAY,CAAxB,IAAA+B,EAAA,KAGI,CACI,IAAMV,EAAUtB,GAAeC,CAAI,EACnC,GAAIqB,EAAW,OAAOA,EAI1B,IAAMpB,EAAQD,EAAK,MAAM,uBAAuB,EAChD,GAAIC,EAAO,CACP,IAAM+B,EAAU/B,EAAM,GAChBgC,EAAa,KAAK,WAAWD,CAAO,EACpCE,EAAS,SAASjC,EAAM,EAAE,EAChC,OAAO,SAACZ,EAAiB,CACjB6C,GAAU,GAAK7C,EAAM,SAAW6C,GAChCrD,GAAO,mBAAmB,0DAA2D,QAASQ,CAAK,EAGvG,IAAI8C,EAAS9C,EAAM,IAAI4C,CAAU,EACjC,OAAIF,EAAK,OAAOC,KACZG,EAASA,EAAO,IAAI1D,GAAA,SAAS,MAG1BA,GAAA,cAAUD,GAAA,WAAU2D,CAAM,CAAC,CACtC,EAIJ,IAAMzB,EAAS,KAAK,MAAMV,GAC1B,GAAIU,EAAQ,CACR,IAAM0B,KAActD,GAAA,IAAG,KAAK,OAAOkB,EAAK,EACxC,OAAO,SAACX,EAA0B,CAC9B,IAAMgD,EAAS3B,EAAO,IAAI,SAACC,EAAc,KAAZF,EAAIE,EAAA,KAAEX,EAAIW,EAAA,KAC7BwB,EAASJ,EAAK,WAAW/B,CAAI,EAAEX,EAAMoB,EAAK,EAChD,OAAIsB,EAAK,OAAO/B,MAAgBvB,GAAA,WAAU0D,CAAM,EACzCA,CACX,CAAC,EACD,OAAAE,EAAO,QAAQD,CAAW,KACnB5D,GAAA,WAAU6D,CAAM,CAC3B,EAGJ,OAAOxD,GAAO,mBAAmB,iBAAkBmB,EAAS,OAAQA,CAAI,CAC5E,EAEAY,EAAA,UAAA,WAAA,SAAWH,EAAY,CACnB,IAAM0B,EAAS,KAAK,OAAO1B,GAC3B,OAAK0B,GACDtD,GAAO,mBAAmB,iBAAkB,KAAK,UAAU4B,CAAI,EAAM,OAAQA,CAAI,EAE9E0B,CACX,EAEAvB,EAAA,UAAA,WAAA,SAAWZ,EAAcX,EAAU,CAC/B,OAAO,KAAK,WAAWW,CAAI,EAAEX,CAAK,CACtC,EAEAuB,EAAA,UAAA,WAAA,SAAWH,EAAcpB,EAA0B,CAC/C,SAAOZ,GAAA,WAAU,KAAK,WAAWgC,EAAMpB,CAAK,CAAC,CACjD,EAEAuB,EAAA,UAAA,OAAA,SAAOvB,EAA0B,CAC7B,OAAO,KAAK,WAAW,KAAK,YAAaA,CAAK,CAClD,EAEAuB,EAAA,UAAA,KAAA,SAAKvB,EAA0B,CAC3B,OAAO,KAAK,WAAW,KAAK,YAAaA,CAAK,CAClD,EAEAuB,EAAA,UAAA,OAAA,SAAOZ,EAAcX,EAAYiD,EAA0C,CAA3E,IAAAP,EAAA,KAEI,CACI,IAAMV,EAAUtB,GAAeC,CAAI,EACnC,GAAIqB,EAAW,OAAOiB,EAAStC,EAAMX,CAAK,EAI9C,IAAMY,EAAQD,EAAK,MAAM,uBAAuB,EAChD,GAAIC,EAAO,CACP,IAAMsC,EAAUtC,EAAM,GAChBuC,EAAS,SAASvC,EAAM,EAAE,EAChC,OAAIuC,GAAU,GAAKnD,EAAM,SAAWmD,GAChC3D,GAAO,mBAAmB,0DAA2D,QAASQ,CAAK,EAEhGA,EAAM,IAAI,SAACiB,EAAM,CAAK,OAAAyB,EAAK,OAAOQ,EAASjC,EAAGgC,CAAQ,CAAhC,CAAiC,EAIlE,IAAM5B,EAAS,KAAK,MAAMV,GAC1B,OAAIU,EACOA,EAAO,OAAO,SAAC+B,EAAO9B,EAAc,KAAZF,EAAIE,EAAA,KAAEX,EAAIW,EAAA,KACrC,OAAA8B,EAAMhC,GAAQsB,EAAK,OAAO/B,EAAMX,EAAMoB,GAAO6B,CAAQ,EAC9CG,CACX,EAAwB,CAAA,CAAE,EAGvB5D,GAAO,mBAAmB,iBAAkBmB,EAAS,OAAQA,CAAI,CAC5E,EAEAY,EAAA,UAAA,MAAA,SAAMvB,EAA4BiD,EAA0C,CACxE,OAAO,KAAK,OAAO,KAAK,YAAajD,EAAOiD,CAAQ,CACxD,EAEO1B,EAAA,KAAP,SAAYC,EAA4C,CACpD,OAAO,IAAID,EAAiBC,CAAK,CACrC,EAEOD,EAAA,eAAP,SAAsBC,EAA4C,CAC9D,OAAOD,EAAiB,KAAKC,CAAK,EAAE,WACxC,EAEOD,EAAA,WAAP,SAAkBH,EAAcI,EAA8CxB,EAA0B,CACpG,OAAOuB,EAAiB,KAAKC,CAAK,EAAE,WAAWJ,EAAMpB,CAAK,CAC9D,EAEOuB,EAAA,WAAP,SAAkB8B,EAAuB,CACrC,IAAMC,EAAsC,CAAA,EAC5C,QAAWC,KAAQF,EAAQ,CACvB,IAAM1C,EAAON,GAAiBkD,GACzB5C,GACDnB,GAAO,mBAAmB,kCAAmC,KAAK,UAAU+D,CAAI,EAAM,SAAUF,CAAM,EAE1GC,EAAa,KAAK,CAAE,KAAIC,EAAE,KAAI5C,CAAA,CAAE,EAGpC,OAAA2C,EAAa,KAAK,SAAC,EAAGE,EAAC,CACnB,OAAOlD,GAAiB,QAAQ,EAAE,IAAI,EAAIA,GAAiB,QAAQkD,EAAE,IAAI,CAC7E,CAAC,EAEMjC,EAAiB,WAAW,eAAgB,CAAE,aAAc+B,CAAY,EAAID,CAAM,CAC7F,EAEO9B,EAAA,OAAP,SAAc8B,EAAyB7B,EAA8CxB,EAA0B,CAC3G,SAAOb,GAAA,WAAU,CACb,SACAoC,EAAiB,WAAW8B,CAAM,EAClC9B,EAAiB,KAAKC,CAAK,EAAE,KAAKxB,CAAK,EAC1C,CACL,EAEOuB,EAAA,KAAP,SAAY8B,EAAyB7B,EAA8CxB,EAA0B,CACzG,SAAOZ,GAAA,WAAUmC,EAAiB,OAAO8B,EAAQ7B,EAAOxB,CAAK,CAAC,CAClE,EAGauB,EAAA,aAAb,SAA0B8B,EAAyB7B,EAA8CxB,EAA4ByD,EAA8C,+GAEvKJ,KAAShE,GAAA,aAAYgE,CAAM,EAGrBK,EAAmC,CAAA,EAGrCL,EAAO,mBAAqB,IAAClE,GAAA,aAAYkE,EAAO,kBAAmB,EAAE,IACrEK,EAASL,EAAO,mBAAqB,MAInCrB,EAAUT,EAAiB,KAAKC,CAAK,EAG3CQ,EAAQ,MAAMhC,EAAO,SAACW,EAAcX,EAAU,CAC1C,OAAIW,IAAS,WAAa,IAACxB,GAAA,aAAYa,EAAO,EAAE,IAC5C0D,EAAS1D,GAAS,MAEfA,CACX,CAAC,gBAGkB0D,2DACfC,EAAAD,EAASE,EAAAC,EAAQ,CAAA,EAAMJ,EAAYI,CAAI,CAAC,gBAAxCF,EAAAC,GAAiBE,EAAA,KAAA,2CAIrB,OAAIT,EAAO,mBAAqBK,EAASL,EAAO,qBAC5CA,EAAO,kBAAoBK,EAASL,EAAO,oBAI/CrD,EAAQgC,EAAQ,MAAMhC,EAAO,SAACW,EAAcX,EAAU,CAClD,OAAIW,IAAS,WAAa+C,EAAS1D,GAAiB0D,EAAS1D,GACtDA,CACX,CAAC,EAED,CAAA,EAAO,CAAE,OAAMqD,EAAE,MAAKrD,CAAA,CAAE,QAGrBuB,EAAA,WAAP,SAAkB8B,EAAyB7B,EAA8CxB,EAA0B,CAE/GuB,EAAiB,WAAW8B,CAAM,EAGlC,IAAMU,EAAoC,CAAA,EACpCC,EAAoD,CAAA,EAE1D1D,GAAiB,QAAQ,SAACc,EAAI,CAC1B,IAAMpB,EAAcqD,EAAQjC,GACxBpB,GAAS,OACb+D,EAAa3C,GAAQX,GAAaW,GAAMpB,CAAK,EAC7CgE,EAAY,KAAK,CAAE,KAAI5C,EAAE,KAAMf,GAAiBe,EAAK,CAAE,EAC3D,CAAC,EAED,IAAMY,EAAUT,EAAiB,KAAKC,CAAK,EAErCyC,KAAkB5E,GAAA,aAAYmC,CAAK,EACzC,OAAIyC,EAAgB,aAChBzE,GAAO,mBAAmB,2CAA4C,qBAAsBgC,CAAK,EAEjGyC,EAAgB,aAAeD,EAInChC,EAAQ,OAAOhC,CAAK,EAEb,CACH,MAAOiE,EACP,OAAQF,EACR,YAAa/B,EAAQ,YACrB,QAASA,EAAQ,MAAMhC,EAAO,SAACW,EAAcX,EAAU,CAGnD,GAAIW,EAAK,MAAM,aAAa,EACxB,SAAOxB,GAAA,YAAQA,GAAA,UAASa,CAAK,CAAC,EAIlC,GAAIW,EAAK,MAAM,QAAQ,EACnB,OAAOzB,GAAA,UAAU,KAAKc,CAAK,EAAE,SAAQ,EAGzC,OAAQW,EAAM,CACV,IAAK,UACD,OAAOX,EAAM,YAAW,EAC5B,IAAK,OACD,MAAO,CAAC,CAACA,EACb,IAAK,SACD,OAAI,OAAOA,GAAW,UAClBR,GAAO,mBAAmB,iBAAkB,QAASQ,CAAK,EAEvDA,EAGf,OAAOR,GAAO,mBAAmB,mBAAoB,OAAQmB,CAAI,CACrE,CAAC,EAET,EACJY,CAAA,EAtWA,EAAa2C,GAAA,iBAAA3C,KCnJb,IAAA4C,GAAAC,EAAAC,IAAA,0LAEA,IAAAC,GAAA,KASI,OAAA,eAAAD,GAAA,KAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OATKC,GAAA,EAAE,CAAA,CAAA,EACX,IAAAC,GAAA,KAUI,OAAA,eAAAF,GAAA,YAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAVKE,GAAA,SAAS,CAAA,CAAA,EAYd,OAAA,eAAAF,GAAA,cAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAZgBE,GAAA,WAAW,CAAA,CAAA,EAW3B,OAAA,eAAAF,GAAA,WAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAX6BE,GAAA,QAAQ,CAAA,CAAA,EACzC,IAAAC,GAAA,KAgBI,OAAA,eAAAH,GAAA,cAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAhBKG,GAAA,WAAW,CAAA,CAAA,EAehB,OAAA,eAAAH,GAAA,gBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAfkBG,GAAA,aAAa,CAAA,CAAA,EAEnC,IAAAC,GAAA,KAWI,OAAA,eAAAJ,GAAA,eAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAXKI,GAAA,YAAY,CAAA,CAAA,EAErB,IAAAC,GAAA,KAcI,OAAA,eAAAL,GAAA,oBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAdyBK,GAAA,gBAAiB,CAAA,CAAA,ICR9C,IAAAC,GAAAC,EAAAC,IAAA,qqBAEA,IAAAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KAOS,OAAA,eAAAR,GAAA,oBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAPAQ,GAAA,iBAAiB,CAAA,CAAA,EAC1B,IAAAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAIjCE,GAAA,SAAAC,EAAA,CAAoCC,GAAAF,EAAAC,CAAA,EAApC,SAAAD,GAAA,+CAMA,CAAA,OAAAA,CAAA,EANoCP,GAAA,WAAW,EAAlCN,GAAA,eAAAa,GAQb,IAAAG,GAAA,SAAAF,EAAA,CAA4CC,GAAAC,EAAAF,CAAA,EAA5C,SAAAE,GAAA,+CAOA,CAAA,OAAAA,CAAA,EAP4CV,GAAA,WAAW,EAA1CN,GAAA,uBAAAgB,GASb,IAAAC,GAAA,SAAAH,EAAA,CAAsCC,GAAAE,EAAAH,CAAA,EAAtC,SAAAG,GAAA,+CAMA,CAAA,OAAAA,CAAA,EANsCX,GAAA,WAAW,EAApCN,GAAA,iBAAAiB,GAQb,IAAAC,GAAA,SAAAJ,EAAA,CAA6BC,GAAAG,EAAAJ,CAAA,EAA7B,SAAAI,GAAA,+CAOA,CAHW,OAAAA,EAAA,UAAP,SAAiBC,EAAU,CACvB,MAAO,CAAC,EAAEA,GAASA,EAAM,WAC7B,EACJD,CAAA,EAP6BZ,GAAA,WAAW,EAA3BN,GAAA,QAAAkB,GASb,IAAME,GAA8G,CAChH,aAAc,CAAE,UAAW,gBAAiB,KAAM,QAAS,OAAQ,CAAE,QAAQ,EAAI,OAAQ,EAAI,EAC7F,aAAc,CAAE,UAAW,iBAAkB,KAAM,QAAS,OAAQ,CAAE,SAAS,CAAE,GAGrF,SAASC,GAAgBC,EAAkBC,EAAY,CACnD,IAAMC,EAAO,IAAI,MAAM,0DAA2DF,CAAW,EACvF,OAAAE,EAAM,MAAQD,EACbC,CACX,CAeA,IAAAC,GAAA,UAAA,CAcI,SAAAA,EAAYC,EAAmE,wBAA/EC,EAAA,KACQC,EAAuD,CAAA,EACvD,OAAOF,GAAe,SACtBE,EAAM,KAAK,MAAMF,CAAS,EAE1BE,EAAMF,GAhGlB,EAmGQpB,GAAA,gBAAe,KAAM,YAAasB,EAAI,IAAI,SAACC,EAAQ,CAC/C,OAAOpB,GAAA,SAAS,KAAKoB,CAAQ,CACjC,CAAC,EAAE,OAAO,SAACA,EAAQ,CAAK,OAACA,GAAY,IAAb,CAAkB,CAAC,GArGnD,EAuGQvB,GAAA,gBAAe,KAAM,aAvG7B,EAuG0CA,GAAA,WAASwB,EAA6B,aAAa,EAAC,CAAE,GAvGhG,EAyGQxB,GAAA,gBAAe,KAAM,YAAa,CAAA,CAAG,GAzG7C,EA0GQA,GAAA,gBAAe,KAAM,SAAU,CAAA,CAAG,GA1G1C,EA2GQA,GAAA,gBAAe,KAAM,SAAU,CAAA,CAAG,GA3G1C,EA4GQA,GAAA,gBAAe,KAAM,UAAW,CAAA,CAAG,EAGnC,KAAK,UAAU,QAAQ,SAACuB,EAAQ,CAC5B,IAAIE,EAAyC,KAC7C,OAAQF,EAAS,KAAM,CACnB,IAAK,cACD,GAAIF,EAAK,OAAQ,CACbf,GAAO,KAAK,oCAAoC,EAChD,QArHxB,EAwHoBN,GAAA,gBAAeqB,EAAM,SAA+BE,CAAQ,EAC5D,OACJ,IAAK,WAGDE,EAASJ,EAAK,UACd,MACJ,IAAK,QAEDI,EAASJ,EAAK,OACd,MACJ,IAAK,QACDI,EAASJ,EAAK,OACd,MACJ,QACI,OAGR,IAAIK,EAAYH,EAAS,OAAM,EAC/B,GAAIE,EAAOC,GAAY,CACnBpB,GAAO,KAAK,0BAA4BoB,CAAS,EACjD,OAGJD,EAAOC,GAAaH,CACxB,CAAC,EAGI,KAAK,SApJlB,EAqJYvB,GAAA,gBAAe,KAAM,SAAUG,GAAA,oBAAoB,KAAK,CACpD,QAAS,GACT,KAAM,cACT,CAAC,GAxJd,EA2JQH,GAAA,gBAAe,KAAM,eAAgB,EAAI,CAC7C,CAEA,OAAAmB,EAAA,UAAA,OAAA,SAAOQ,EAAe,CACbA,IAAUA,EAASxB,GAAA,YAAY,MAChCwB,IAAWxB,GAAA,YAAY,SACvBG,GAAO,mBAAmB,gDAAiD,SAAUqB,CAAM,EAG/F,IAAML,EAAM,KAAK,UAAU,IAAI,SAACC,EAAQ,CAAK,OAAAA,EAAS,OAAOI,CAAM,CAAtB,CAAuB,EAGpE,OAAIA,IAAWxB,GAAA,YAAY,KACf,KAAK,UAAUmB,EAAI,IAAI,SAACM,EAAC,CAAK,OAAA,KAAK,MAAMA,CAAC,CAAZ,CAAa,CAAC,EAGjDN,CACX,EAGOH,EAAA,YAAP,UAAA,CACI,OAAOlB,GAAA,eACX,EAEOkB,EAAA,WAAP,SAAkBU,EAAe,CAC7B,OApLR,EAoLelC,GAAA,YAAWkC,CAAO,CAC7B,EAEOV,EAAA,WAAP,SAAkBI,EAA0C,CACxD,OAxLR,EAwLe1B,GAAA,eAxLf,EAwL4BC,GAAA,IAAGyB,EAAS,OAAM,CAAE,EAAG,EAAG,CAAC,CACnD,EAEOJ,EAAA,cAAP,SAAqBW,EAA4B,CAC7C,OA5LR,EA4LehC,GAAA,IAAGgC,EAAc,OAAM,CAAE,CACpC,EAGAX,EAAA,UAAA,YAAA,SAAYY,EAAgC,CACxC,IAjMR,EAiMYlC,GAAA,aAAYkC,CAAwB,EAAG,CACvC,QAAWC,KAAQ,KAAK,UACpB,GAAID,IAA6B,KAAK,WAAWC,CAAI,EACjD,OAAO,KAAK,UAAUA,GAG9B1B,GAAO,mBAAmB,uBAAwB,UAAWyB,CAAwB,EAIzF,GAAIA,EAAyB,QAAQ,GAAG,IAAM,GAAI,CAC9C,IAAME,EAAOF,EAAyB,KAAI,EACpCG,EAAW,OAAO,KAAK,KAAK,SAAS,EAAE,OAAO,SAACC,EAAC,CAAK,OAACA,EAAE,MAAM,GAAc,EAAE,KAAOF,CAAhC,CAAqC,EAChG,OAAIC,EAAS,SAAW,EACpB5B,GAAO,mBAAmB,uBAAwB,OAAQ2B,CAAI,EACvDC,EAAS,OAAS,GACzB5B,GAAO,mBAAmB,8BAA+B,OAAQ2B,CAAI,EAGlE,KAAK,UAAUC,EAAS,IAInC,IAAME,EAAS,KAAK,UAAUjC,GAAA,iBAAiB,WAAW4B,CAAwB,EAAE,OAAM,GAC1F,OAAKK,GACD9B,GAAO,mBAAmB,uBAAwB,YAAayB,CAAwB,EAEpFK,CACX,EAGAjB,EAAA,UAAA,SAAA,SAASkB,EAA8B,CACnC,IAjOR,EAiOYxC,GAAA,aAAYwC,CAAsB,EAAG,CACrC,IAAMC,EAAYD,EAAuB,YAAW,EACpD,QAAWE,KAAQ,KAAK,OACpB,GAAID,IAAc,KAAK,cAAcC,CAAI,EACrC,OAAO,KAAK,OAAOA,GAG3BjC,GAAO,mBAAmB,oBAAqB,YAAagC,CAAS,EAIzE,GAAID,EAAuB,QAAQ,GAAG,IAAM,GAAI,CAC5C,IAAMG,EAAOH,EAAuB,KAAI,EAClCH,EAAW,OAAO,KAAK,KAAK,MAAM,EAAE,OAAO,SAACC,EAAC,CAAK,OAACA,EAAE,MAAM,GAAc,EAAE,KAAOK,CAAhC,CAAqC,EAC7F,OAAIN,EAAS,SAAW,EACpB5B,GAAO,mBAAmB,oBAAqB,OAAQkC,CAAI,EACpDN,EAAS,OAAS,GACzB5B,GAAO,mBAAmB,2BAA4B,OAAQkC,CAAI,EAG/D,KAAK,OAAON,EAAS,IAIhC,IAAME,EAAS,KAAK,OAAOjC,GAAA,cAAc,WAAWkC,CAAsB,EAAE,OAAM,GAClF,OAAKD,GACD9B,GAAO,mBAAmB,oBAAqB,YAAa+B,CAAsB,EAE/ED,CACX,EAGAjB,EAAA,UAAA,SAAA,SAASY,EAAgC,CACrC,IAlQR,EAkQYlC,GAAA,aAAYkC,CAAwB,EAAG,CACvC,IAAMU,GAnQlB,EAmQ+BzC,GAAA,WAA2D,KAAK,YAAa,YAAY,EAC5G,QAAW0C,KAAQ,KAAK,OAAQ,CAC5B,IAAMzB,EAAQ,KAAK,OAAOyB,GAC1B,GAAIX,IAA6BU,EAAWxB,CAAK,EAC7C,OAAO,KAAK,OAAOyB,GAG3BpC,GAAO,mBAAmB,oBAAqB,UAAWyB,CAAwB,EAItF,GAAIA,EAAyB,QAAQ,GAAG,IAAM,GAAI,CAC9C,IAAMY,EAAOZ,EAAyB,KAAI,EACpCG,EAAW,OAAO,KAAK,KAAK,MAAM,EAAE,OAAO,SAACC,EAAC,CAAK,OAACA,EAAE,MAAM,GAAc,EAAE,KAAOQ,CAAhC,CAAqC,EAC7F,OAAIT,EAAS,SAAW,EACpB5B,GAAO,mBAAmB,oBAAqB,OAAQqC,CAAI,EACpDT,EAAS,OAAS,GACzB5B,GAAO,mBAAmB,2BAA4B,OAAQqC,CAAI,EAG/D,KAAK,OAAOT,EAAS,IAIhC,IAAME,EAAS,KAAK,OAAOjC,GAAA,iBAAiB,WAAW4B,CAAwB,EAAE,OAAM,GACvF,OAAKK,GACD9B,GAAO,mBAAmB,oBAAqB,YAAayB,CAAwB,EAEjFK,CACX,EAGAjB,EAAA,UAAA,WAAA,SAAWI,EAAmD,CAC1D,GAAI,OAAOA,GAAc,SACrB,GAAI,CACAA,EAAW,KAAK,YAAYA,CAAQ,QAC/BN,EAAP,CACE,GAAI,CACAM,EAAW,KAAK,SAAiBA,CAAQ,OAC3C,CACE,MAAMN,GAKlB,OAhTR,EAgTejB,GAAA,WAA2D,KAAK,YAAa,YAAY,EAAEuB,CAAQ,CAC9G,EAGAJ,EAAA,UAAA,cAAA,SAAcW,EAAqC,CAC/C,OAAI,OAAOA,GAAmB,WAC1BA,EAAgB,KAAK,SAASA,CAAa,IAtTvD,EAyTe9B,GAAA,WAAwC,KAAK,YAAa,eAAe,EAAE8B,CAAa,CACnG,EAGAX,EAAA,UAAA,cAAA,SAAcyB,EAAkCC,EAAe,CAC3D,OAAO,KAAK,UAAU,OAAOD,EAAQC,CAAI,CAC7C,EAEA1B,EAAA,UAAA,cAAA,SAAcyB,EAAkCE,EAA0B,CACtE,OAAO,KAAK,UAAU,OAAOF,EAAQE,CAAM,CAC/C,EAEA3B,EAAA,UAAA,aAAA,SAAa2B,EAA2B,CACpC,OAAO,KAAK,cAAc,KAAK,OAAO,OAAQA,GAAU,CAAA,CAAG,CAC/D,EAEA3B,EAAA,UAAA,kBAAA,SAAkBI,EAAkCsB,EAAe,CAC3D,OAAOtB,GAAc,WACrBA,EAAW,KAAK,SAASA,CAAQ,GAGrC,IAAMwB,GA9Ud,EA8UsBlD,GAAA,UAASgD,CAAI,EAE3B,OAhVR,EAgVYhD,GAAA,SAAQkD,EAAM,MAAM,EAAG,CAAC,CAAC,IAAM,KAAK,WAAWxB,CAAQ,GACvDjB,GAAO,mBAAmB,uCAAwCiB,EAAS,KAAI,IAAM,QAjVjG,EAiVyG1B,GAAA,SAAQkD,CAAK,CAAC,EAGxG,KAAK,cAAcxB,EAAS,OAAQwB,EAAM,MAAM,CAAC,CAAC,CAC7D,EAEA5B,EAAA,UAAA,kBAAA,SAAkBI,EAAkCuB,EAA2B,CAC3E,OAAI,OAAOvB,GAAc,WACrBA,EAAW,KAAK,SAASA,CAAQ,IAzV7C,EA4Ve1B,GAAA,UA5Vf,EA4VuBA,GAAA,QAAO,CAClB,KAAK,WAAW0B,CAAQ,EACxB,KAAK,cAAcA,EAAS,OAAQuB,GAAU,CAAA,CAAG,EACpD,CAAC,CACN,EAGA3B,EAAA,UAAA,mBAAA,SAAmB6B,EAA6CH,EAAe,CACvE,OAAOG,GAAsB,WAC7BA,EAAmB,KAAK,YAAYA,CAAgB,GAGxD,IAAMD,GAxWd,EAwWsBlD,GAAA,UAASgD,CAAI,EAE3B,OA1WR,EA0WYhD,GAAA,SAAQkD,EAAM,MAAM,EAAG,CAAC,CAAC,IAAM,KAAK,WAAWC,CAAgB,GAC/D1C,GAAO,mBAAmB,0CAA2C0C,EAAiB,KAAI,IAAM,QA3W5G,EA2WoHnD,GAAA,SAAQkD,CAAK,CAAC,EAGnH,KAAK,cAAcC,EAAiB,OAAQD,EAAM,MAAM,CAAC,CAAC,CACrE,EAGA5B,EAAA,UAAA,mBAAA,SAAmB6B,EAA6CF,EAA2B,CACvF,OAAI,OAAOE,GAAsB,WAC7BA,EAAmB,KAAK,YAAYA,CAAgB,IApXhE,EAuXenD,GAAA,UAvXf,EAuXuBA,GAAA,QAAO,CAClB,KAAK,WAAWmD,CAAgB,EAChC,KAAK,cAAcA,EAAiB,OAAQF,GAAU,CAAA,CAAG,EAC5D,CAAC,CACN,EAGA3B,EAAA,UAAA,qBAAA,SAAqB6B,EAA6CH,EAAe,CACzE,OAAOG,GAAsB,WAC7BA,EAAmB,KAAK,YAAYA,CAAgB,GAGxD,IAAID,GAnYZ,EAmYoBlD,GAAA,UAASgD,CAAI,EAErBI,EAAiB,KACjBC,EAAU,GACVC,EAAoB,KACpBC,EAAoB,KACpBC,EAAyB,KAC7B,OAAQN,EAAM,OAAS,KAAK,UAAU,aAAY,EAAI,CAClD,IAAK,GACD,GAAI,CACA,OAAO,KAAK,UAAU,OAAOC,EAAiB,QAASD,CAAK,OAC9D,CAAc,CAChB,MAEJ,IAAK,GAAG,CACJ,IAAMO,GAlZtB,EAkZiCzD,GAAA,SAAQkD,EAAM,MAAM,EAAG,CAAC,CAAC,EACpCQ,EAAUzC,GAAcwC,GAC9B,GAAIC,EACAJ,EAAY,KAAK,UAAU,OAAOI,EAAQ,OAAQR,EAAM,MAAM,CAAC,CAAC,EAChEK,EAAYG,EAAQ,KACpBF,EAAiBE,EAAQ,UACrBA,EAAQ,SAAUN,EAASE,EAAU,IACrCC,IAAc,QACdF,EAAU,4EAA6E,KAAK,UAAUC,EAAU,EAAE,EAC3GC,IAAc,UACrBF,EAAU,yEAA0EC,EAAU,QAGlG,IAAI,CACA,IAAMlC,EAAQ,KAAK,SAASqC,CAAQ,EACpCH,EAAY,KAAK,UAAU,OAAOlC,EAAM,OAAQ8B,EAAM,MAAM,CAAC,CAAC,EAC9DK,EAAYnC,EAAM,KAClBoC,EAAiBpC,EAAM,OAAM,OAC/B,CAAc,CAEpB,OAIR,OAAOX,GAAO,WAAW,wBAA0B4C,EAAS9C,GAAA,OAAO,OAAO,eAAgB,CACtF,OAAQ4C,EAAiB,OAAM,EAC/B,MA5aZ,EA4akBnD,GAAA,SAAQgD,CAAI,EAAG,UAASM,EAAE,UAASC,EAAE,eAAcC,EAAE,OAAMJ,EACpE,CACL,EAGA9B,EAAA,UAAA,qBAAA,SAAqB6B,EAA6CF,EAA2B,CACzF,OAAI,OAAOE,GAAsB,WAC7BA,EAAmB,KAAK,YAAYA,CAAgB,IAnbhE,EAsbenD,GAAA,SAAQ,KAAK,UAAU,OAAOmD,EAAiB,QAASF,GAAU,CAAA,CAAG,CAAC,CACjF,EAGA3B,EAAA,UAAA,mBAAA,SAAmBW,EAAuCgB,EAA0B,CAApF,IAAAzB,EAAA,KACQ,OAAOS,GAAmB,WAC1BA,EAAgB,KAAK,SAASA,CAAa,GAG3CgB,EAAO,OAAShB,EAAc,OAAO,QACrCxB,GAAO,WAAW,0BAA4BwB,EAAc,OAAM,EAAI1B,GAAA,OAAO,OAAO,oBAAqB,CACrG,SAAU,SACV,MAAO0C,EACV,EAGL,IAAIU,EAAwC,CAAA,EACvC1B,EAAc,WAAa0B,EAAO,KAAK,KAAK,cAAc1B,CAAa,CAAC,EAE7E,IAAM2B,EAAc,SAACC,EAAkB7C,EAAU,CAC7C,OAAI6C,EAAM,OAAS,UA1c/B,EA2cwB5D,GAAA,IAAGe,CAAK,EACT6C,EAAM,OAAS,SA5ctC,EA6cwB3D,GAAA,YA7cxB,EA6ckCF,GAAA,SAAQgB,CAAK,CAAC,GAGhC6C,EAAM,OAAS,QAAU,OAAO7C,GAAW,YAC3CA,EAASA,EAAQ,OAAQ,QAGzB6C,EAAM,KAAK,MAAM,QAAQ,IACzB7C,EAAQjB,GAAA,UAAU,KAAKiB,CAAK,EAAE,YAAW,GAIzC6C,EAAM,OAAS,WAAarC,EAAK,UAAU,OAAQ,CAAE,SAAS,EAAI,CAAER,CAAK,CAAE,GAzd3F,EA0dmBhB,GAAA,aA1dnB,EA0d8BA,GAAA,SAAQgB,CAAK,EAAG,EAAE,EACxC,EAyBA,IAvBAiC,EAAO,QAAQ,SAACjC,EAAO8C,EAAK,CAExB,IAAID,EAAwB5B,EAAe,OAAO6B,GAElD,GAAI,CAACD,EAAM,QAAS,CACZ7C,GAAS,MACTP,GAAO,mBAAmB,qDAAuD,YAAcoD,EAAM,KAAO7C,CAAK,EAErH,OAGAA,GAAS,KACT2C,EAAO,KAAK,IAAI,EACTE,EAAM,WAAa,SAAWA,EAAM,WAAa,QACxDpD,GAAO,mBAAmB,gDAAkD,YAAcoD,EAAM,KAAO7C,CAAK,EACrG,MAAM,QAAQA,CAAK,EAC1B2C,EAAO,KAAK3C,EAAM,IAAI,SAACA,EAAK,CAAK,OAAA4C,EAAYC,EAAO7C,CAAK,CAAxB,CAAyB,CAAC,EAE3D2C,EAAO,KAAKC,EAAYC,EAAO7C,CAAK,CAAC,CAE7C,CAAC,EAGM2C,EAAO,QAAUA,EAAOA,EAAO,OAAS,KAAO,MAClDA,EAAO,IAAG,EAGd,OAAOA,CACX,EAEArC,EAAA,UAAA,eAAA,SAAeW,EAAuCgB,EAA0B,CAAhF,IAAAzB,EAAA,KACQ,OAAOS,GAAmB,WAC1BA,EAAgB,KAAK,SAASA,CAAa,GAG/C,IAAM0B,EAAwB,CAAA,EAExBI,EAA8B,CAAA,EAC9BC,EAA4B,CAAA,EAElC,OAAK/B,EAAc,WACf0B,EAAO,KAAK,KAAK,cAAc1B,CAAa,CAAC,EAG7CgB,EAAO,SAAWhB,EAAc,OAAO,QACvCxB,GAAO,mBAAmB,kCAAmC,SAAUwC,CAAM,EAGjFhB,EAAc,OAAO,QAAQ,SAAC4B,EAAOC,EAAK,CACtC,IAAM9C,EAAQiC,EAAOa,GACrB,GAAID,EAAM,QACN,GAAIA,EAAM,OAAS,SACfF,EAAO,MAjhB3B,EAihBgC1D,GAAA,IAAGe,CAAK,CAAC,UACd6C,EAAM,OAAS,QACtBF,EAAO,MAnhB3B,EAmhBgCzD,GAAA,WAAUc,CAAK,CAAC,MACzB,IAAI6C,EAAM,WAAa,SAAWA,EAAM,WAAa,QAExD,MAAM,IAAI,MAAM,iBAAiB,EAEjCF,EAAO,KAAKnC,EAAK,UAAU,OAAO,CAAEqC,EAAM,IAAI,EAAI,CAAE7C,CAAK,CAAE,CAAC,OAGhE+C,EAAU,KAAKF,CAAK,EACpBG,EAAW,KAAKhD,CAAK,CAE7B,CAAC,EAEM,CACH,KAAM,KAAK,UAAU,OAAO+C,EAAYC,CAAU,EAClD,OAAQL,EAEhB,EAGArC,EAAA,UAAA,eAAA,SAAeW,EAAuCe,EAAiBW,EAA8B,CAKjG,GAJI,OAAO1B,GAAmB,WAC1BA,EAAgB,KAAK,SAASA,CAAa,GAG3C0B,GAAU,MAAQ,CAAC1B,EAAc,UAAW,CAC5C,IAAIgC,EAAY,KAAK,cAAchC,CAAa,GAC5C,EA9iBhB,EA8iBiBjC,GAAA,aAAY2D,EAAO,GAAI,EAAE,GAAKA,EAAO,GAAG,YAAW,IAAOM,IAC3DxD,GAAO,WAAW,0BAA2BF,GAAA,OAAO,OAAO,iBAAkB,CAAE,SAAU,YAAa,SAAU0D,EAAW,MAAON,EAAO,EAAE,CAAE,EAEjJA,EAASA,EAAO,MAAM,CAAC,EAG3B,IAAIO,EAA4B,CAAA,EAC5BC,EAA+B,CAAA,EAC/BC,EAA0B,CAAA,EAE9BnC,EAAc,OAAO,QAAQ,SAAC4B,EAAOC,EAAK,CAClCD,EAAM,QACFA,EAAM,OAAS,UAAYA,EAAM,OAAS,SAAWA,EAAM,WAAa,SAAWA,EAAM,WAAa,SACtGK,EAAQ,KAAK5D,GAAA,UAAU,WAAW,CAAE,KAAM,UAAW,KAAMuD,EAAM,IAAI,CAAE,CAAC,EACxEO,EAAQ,KAAK,EAAI,IAEjBF,EAAQ,KAAKL,CAAK,EAClBO,EAAQ,KAAK,EAAK,IAGtBD,EAAW,KAAKN,CAAK,EACrBO,EAAQ,KAAK,EAAK,EAE1B,CAAC,EAED,IAAIC,EAAiBV,GAAU,KAAQ,KAAK,UAAU,OAAOO,GAvkBrE,EAukB8ElE,GAAA,QAAO2D,CAAM,CAAC,EAAG,KACnFW,EAAmB,KAAK,UAAU,OAAOH,EAAYnB,EAAM,EAAI,EAE/DT,EAAkD,CAAA,EAClDgC,EAAkB,EAAGC,EAAe,EACxCvC,EAAc,OAAO,QAAQ,SAAC4B,EAAOC,EAAK,CACtC,GAAID,EAAM,QACN,GAAIQ,GAAiB,KACjB9B,EAAOuB,GAAS,IAAI/C,GAAQ,CAAE,WAAY,GAAM,KAAM,IAAI,CAAE,UAErDqD,EAAQN,GACfvB,EAAOuB,GAAS,IAAI/C,GAAQ,CAAE,WAAY,GAAM,KAAMsD,EAAcG,IAAe,CAAE,MAGrF,IAAI,CACAjC,EAAOuB,GAASO,EAAcG,WACzBpD,EAAP,CACEmB,EAAOuB,GAAS1C,MAIxB,IAAI,CACAmB,EAAOuB,GAASQ,EAAiBC,WAC5BnD,EAAP,CACEmB,EAAOuB,GAAS1C,EAKxB,GAAIyC,EAAM,MAAQtB,EAAOsB,EAAM,OAAS,KAAM,CAC1C,IAAMY,EAAQlC,EAAOuB,GAGjBW,aAAiB,MACjB,OAAO,eAAelC,EAAQsB,EAAM,KAAM,CACtC,WAAY,GACZ,IAAK,UAAA,CAAQ,MAAM3C,GAAgB,YAAa,KAAK,UAAU2C,EAAM,IAAI,EAAMY,CAAK,CAAG,EAC1F,EAEDlC,EAAOsB,EAAM,MAAQY,EAGjC,CAAC,EAGD,mBAASC,EAAC,CACN,IAAM1D,EAAQuB,EAAOmC,GACjB1D,aAAiB,OACjB,OAAO,eAAeuB,EAAQmC,EAAG,CAC7B,WAAY,GACZ,IAAK,UAAA,CAAQ,MAAMxD,GAAgB,SAAUwD,EAAM1D,CAAK,CAAG,EAC9D,GANA0D,EAAI,EAAGA,EAAInC,EAAO,OAAQmC,MAA1BA,CAAC,EAUV,OAAO,OAAO,OAAOnC,CAAM,CAC/B,EAIAjB,EAAA,UAAA,iBAAA,SAAiBqD,EAA0C,CACvD,IAAIjD,EAAW,KAAK,YAAYiD,EAAG,KAAK,UAAU,EAAG,EAAE,EAAE,YAAW,CAAE,EAEtE,OAAKjD,EAEE,IAAIb,GAAuB,CAC9B,KAAM,KAAK,UAAU,OAAOa,EAAS,OAAQ,KAAOiD,EAAG,KAAK,UAAU,EAAE,CAAC,EACzE,iBAAkBjD,EAClB,KAAMA,EAAS,KACf,UAAWA,EAAS,OAAM,EAC1B,QAAS,KAAK,WAAWA,CAAQ,EACjC,MAAO3B,GAAA,UAAU,KAAK4E,EAAG,OAAS,GAAG,EACxC,EATuB,IAU5B,EAOArD,EAAA,UAAA,SAAA,SAASsD,EAA2C,CAChD,IAAIlD,EAAW,KAAK,SAASkD,EAAI,OAAO,EAAE,EAE1C,MAAI,CAAClD,GAAYA,EAAS,UAAoB,KAOxC,IAAIhB,GAAe,CACrB,cAAegB,EACf,KAAMA,EAAS,KACf,UAAWA,EAAS,OAAM,EAC1B,MAAO,KAAK,cAAcA,CAAQ,EAClC,KAAM,KAAK,eAAeA,EAAUkD,EAAI,KAAMA,EAAI,MAAM,EAC3D,CACL,EAEAtD,EAAA,UAAA,WAAA,SAAW0B,EAAe,CACtB,IAAM6B,GA3qBd,EA2qBwB7E,GAAA,SAAQgD,CAAI,EACxBtB,EAAW,KAAK,SAASmD,EAAQ,UAAU,EAAG,EAAE,EAAE,YAAW,CAAE,EAEnE,OAAKnD,EAEE,IAAIZ,GAAiB,CACxB,KAAM,KAAK,UAAU,OAAOY,EAAS,OAAQ,KAAOmD,EAAQ,UAAU,EAAE,CAAC,EACzE,cAAenD,EACf,KAAMA,EAAS,KACf,UAAWA,EAAS,OAAM,EAC1B,QAAS,KAAK,WAAWA,CAAQ,EACpC,EARuB,IAS5B,EAeOJ,EAAA,YAAP,SAAmBN,EAAU,CACzB,MAAO,CAAC,EAAEA,GAASA,EAAM,aAC7B,EACJM,CAAA,EA5nBA,EAAazB,GAAA,UAAAyB,KC7Eb,IAAAwD,GAAAC,EAAAC,IAAA,oTAEA,IAAAC,GAAA,KAKI,OAAA,eAAAD,GAAA,sBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OALKC,GAAA,mBAAmB,CAAA,CAAA,EAMxB,OAAA,eAAAD,GAAA,gBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAN0BC,GAAA,aAAa,CAAA,CAAA,EAOvC,OAAA,eAAAD,GAAA,gBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAPyCC,GAAA,aAAa,CAAA,CAAA,EAWtD,OAAA,eAAAD,GAAA,cAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAXwDC,GAAA,WAAW,CAAA,CAAA,EAQnE,OAAA,eAAAD,GAAA,WAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OARqEC,GAAA,QAAQ,CAAA,CAAA,EAS7E,OAAA,eAAAD,GAAA,mBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAT+EC,GAAA,gBAAgB,CAAA,CAAA,EAU/F,OAAA,eAAAD,GAAA,YAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAViIC,GAAA,SAAS,CAAA,CAAA,EAC9I,IAAAC,GAAA,KAYI,OAAA,eAAAF,GAAA,WAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAZKE,GAAA,QAAQ,CAAA,CAAA,EAab,OAAA,eAAAF,GAAA,kBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAb2BE,GAAA,eAAe,CAAA,CAAA,EAC9C,IAAAC,GAAA,KAyBI,OAAA,eAAAH,GAAA,oBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAzBKG,GAAA,iBAAiB,CAAA,CAAA,EAetB,OAAA,eAAAH,GAAA,UAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAfwBG,GAAA,OAAO,CAAA,CAAA,EAc/B,OAAA,eAAAH,GAAA,YAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAdiCG,GAAA,SAAS,CAAA,CAAA,EA2B1C,OAAA,eAAAH,GAAA,iBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OA3B4CG,GAAA,cAAc,CAAA,CAAA,EA4B1D,OAAA,eAAAH,GAAA,yBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OA5BoEG,GAAA,sBAAsB,CAAA,CAAA,mGCJjFC,GAAA,QAAU,4BCAvB,IAAAC,GAAAC,EAAAC,IAAA,0hEAEA,IAAAC,GAAA,KACAC,GAAA,KAEAC,GAAA,KAIAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EA2IjCE,GAAA,SAAAC,EAAA,CAAwCC,GAAAF,EAAAC,CAAA,EAAxC,SAAAD,GAAA,+CAQA,CAHW,OAAAA,EAAA,YAAP,SAAmBG,EAAU,CACzB,MAAO,CAAC,EAAEA,GAASA,EAAM,aAC7B,EACJH,CAAA,EARwCJ,GAAA,WAAW,EAA7BH,GAAA,UAAAO,GAUtB,IAAAI,GAAA,SAAAH,EAAA,CAAoCC,GAAAE,EAAAH,CAAA,EAKhC,SAAAG,EAAYC,EAAmBC,EAAe,CAA9C,IAAAC,EAAA,KACI,OAtKR,EAsKaZ,GAAA,aAAYU,EAAW,EAAE,GAC1BN,GAAO,mBAAmB,oBAAqB,YAAaM,CAAS,EAGzEE,EAAAN,EAAA,KAAA,KAAM,CACF,aAAc,GACd,kBAAmB,GACnB,OAASK,GAAU,EACnB,UAAWD,EACd,GAAC,MACN,CACJ,OAAAD,CAAA,EAjBoCJ,EAAS,EAAhCP,GAAA,eAAAW,GAmBb,IAAAI,GAAA,SAAAP,EAAA,CAA0CC,GAAAM,EAAAP,CAAA,EAKtC,SAAAO,EAAYC,EAAcH,EAAe,CAAzC,IAAAC,EAAA,KACI,OAzLR,EAyLaZ,GAAA,aAAYc,EAAM,EAAE,GACrBV,GAAO,mBAAmB,2BAA4B,OAAQU,CAAI,EAGtEF,EAAAN,EAAA,KAAA,KAAM,CACF,aAAc,GACd,wBAAyB,GACzB,OAASK,GAAU,EACnB,KAAMG,EACT,GAAC,MACN,CACJ,OAAAD,CAAA,EAjB0CR,EAAS,EAAtCP,GAAA,qBAAAe,GAmBb,IAAAE,GAAA,SAAAT,EAAA,CAA+CC,GAAAQ,EAAAT,CAAA,EAI3C,SAAAS,EAAYC,EAAoBC,EAAmBN,EAAe,CAAlE,IAAAC,EAAA,KACI,OA3MR,EA2MaZ,GAAA,aAAYgB,EAAY,EAAE,GAC3BZ,GAAO,mBAAmB,2BAA4B,aAAcY,CAAU,GA5M1F,EA8MahB,GAAA,aAAYiB,EAAW,EAAE,GAC1Bb,GAAO,mBAAmB,2BAA4B,YAAaa,CAAS,EAGhFL,EAAAN,EAAA,KAAA,KAAM,CACF,aAAc,GACd,6BAA8B,GAC9B,OAASK,GAAU,EACnB,WAAYK,EACZ,UAAWC,EACd,GAAC,MACN,CACJ,OAAAF,CAAA,EApB+CV,EAAS,EAA3CP,GAAA,0BAAAiB,GA4Bb,IAAAG,GAAA,UAAA,CAgFI,SAAAA,GAAA,wBACId,GAAO,cAAae,EAAaD,CAAQ,GAnTjD,EAoTQjB,GAAA,gBAAe,KAAM,cAAe,EAAI,CAC5C,CA3EM,OAAAiB,EAAA,UAAA,WAAN,UAAA,2GACgC,MAAA,CAAA,GA3OpC,EA2O0CjB,GAAA,mBAAkB,CAChD,MAAO,KAAK,SAAS,QAAQ,EAC7B,SAAU,KAAK,YAAW,EAAG,MAAM,SAACmB,EAAK,CAGrC,OAAO,IACX,CAAC,EACJ,CAAC,SAPI,OAAAC,EAAsBC,EAAA,KAAA,EAApBC,EAAKF,EAAA,MAAEG,EAAQH,EAAA,SASnBI,EAAoB,KAAMC,EAAe,KAAMC,EAAuB,KAEtEJ,GAASA,EAAM,gBAIfE,EAAoBF,EAAM,cAC1BI,EAAuB5B,GAAA,UAAU,KAAK,YAAY,EAClD2B,EAAeH,EAAM,cAAc,IAAI,CAAC,EAAE,IAAII,CAAoB,GAGtE,CAAA,EAAO,CAAE,kBAAiBF,EAAE,aAAYC,EAAE,qBAAoBC,EAAE,SAAQH,CAAA,CAAE,QAqC9EN,EAAA,UAAA,YAAA,SAAYU,EAAsBC,EAAkB,CAChD,OAAO,KAAK,GAAGD,EAAWC,CAAQ,CACtC,EAGAX,EAAA,UAAA,eAAA,SAAeU,EAAsBC,EAAkB,CACnD,OAAO,KAAK,IAAID,EAAWC,CAAQ,CACvC,EAYOX,EAAA,WAAP,SAAkBV,EAAU,CACxB,MAAO,CAAC,EAAEA,GAASA,EAAM,YAC7B,EAyCJU,CAAA,EAhIA,EAAsBpB,GAAA,SAAAoB,oGClOTY,GAAA,QAAU,0BCAvB,IAAAC,GAAAC,EAAAC,IAAA,k9DAKA,IAAAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAE3BE,GAAwC,CAC1C,aAAc,kBAAmB,UAAW,aAAc,OAAQ,OAAQ,WAAY,WAAY,eAAgB,uBAAwB,QAAS,KAAM,OAAQ,SAG/JC,GAAgB,CAClBJ,GAAA,OAAO,OAAO,mBACdA,GAAA,OAAO,OAAO,cACdA,GAAA,OAAO,OAAO,yBAuClBK,GAAA,UAAA,CA8BI,SAAAA,GAAA,wBACIH,GAAO,cAAaI,EAAaD,CAAM,GAxF/C,EAyFQN,GAAA,gBAAe,KAAM,YAAa,EAAI,CAC1C,CAMM,OAAAM,EAAA,UAAA,WAAN,SAAiBE,EAAmB,2FAChC,YAAK,eAAe,YAAY,EACzB,CAAA,EAAM,KAAK,SAAS,WAAW,KAAK,WAAU,EAAIA,CAAQ,CAAC,SAAlE,MAAA,CAAA,EAAOC,EAAA,KAAA,CAA2D,QAGhEH,EAAA,UAAA,oBAAN,SAA0BE,EAAmB,2FACzC,YAAK,eAAe,qBAAqB,EAClC,CAAA,EAAM,KAAK,SAAS,oBAAoB,KAAK,WAAU,EAAIA,CAAQ,CAAC,SAA3E,MAAA,CAAA,EAAOC,EAAA,KAAA,CAAoE,QAIzEH,EAAA,UAAA,YAAN,SAAkBI,EAA2C,iGACzD,YAAK,eAAe,aAAa,EACtB,CAAA,GA7GnB,EA6GyBV,GAAA,mBAAkB,KAAK,iBAAiBU,CAAW,CAAC,CAAC,SAAhE,OAAAC,EAAKF,EAAA,KAAA,EACJ,CAAA,EAAM,KAAK,SAAS,YAAYE,CAAE,CAAC,SAA1C,MAAA,CAAA,EAAOF,EAAA,KAAA,CAAmC,QAIxCH,EAAA,UAAA,KAAN,SAAWI,EAA6CF,EAAmB,iGACvE,YAAK,eAAe,MAAM,EACf,CAAA,GApHnB,EAoHyBR,GAAA,mBAAkB,KAAK,iBAAiBU,CAAW,CAAC,CAAC,SAAhE,OAAAC,EAAKF,EAAA,KAAA,EACJ,CAAA,EAAM,KAAK,SAAS,KAAKE,EAAIH,CAAQ,CAAC,SAA7C,MAAA,CAAA,EAAOC,EAAA,KAAA,CAAsC,QAI3CH,EAAA,UAAA,gBAAN,SAAsBI,EAA2C,mGAC7D,YAAK,eAAe,iBAAiB,EAC1B,CAAA,EAAM,KAAK,oBAAoBA,CAAW,CAAC,SAAhD,OAAAC,EAAKF,EAAA,KAAA,EACM,CAAA,EAAM,KAAK,gBAAgBE,CAAE,CAAC,SAAzC,OAAAC,EAAWH,EAAA,KAAA,EACV,CAAA,EAAM,KAAK,SAAS,gBAAgBG,CAAQ,CAAC,SAApD,MAAA,CAAA,EAAOH,EAAA,KAAA,CAA6C,QAGlDH,EAAA,UAAA,WAAN,UAAA,iGACI,YAAK,eAAe,YAAY,EAChB,CAAA,EAAM,KAAK,SAAS,WAAU,CAAE,SAA1C,OAAAO,EAAUJ,EAAA,KAAA,EAChB,CAAA,EAAOI,EAAQ,OAAO,QAGpBP,EAAA,UAAA,YAAN,UAAA,2FACI,YAAK,eAAe,aAAa,EAC1B,CAAA,EAAM,KAAK,SAAS,YAAW,CAAE,SAAxC,MAAA,CAAA,EAAOG,EAAA,KAAA,CAAiC,QAGtCH,EAAA,UAAA,WAAN,UAAA,2FACI,YAAK,eAAe,YAAY,EACzB,CAAA,EAAM,KAAK,SAAS,WAAU,CAAE,SAAvC,MAAA,CAAA,EAAOG,EAAA,KAAA,CAAgC,QAIrCH,EAAA,UAAA,YAAN,SAAkBQ,EAAY,2FAC1B,YAAK,eAAe,aAAa,EAC1B,CAAA,EAAM,KAAK,SAAS,YAAYA,CAAI,CAAC,SAA5C,MAAA,CAAA,EAAOL,EAAA,KAAA,CAAqC,QAchDH,EAAA,UAAA,iBAAA,SAAiBI,EAA2C,CACxD,QAAWK,KAAOL,EACVN,GAAuB,QAAQW,CAAG,IAAM,IACxCZ,GAAO,mBAAmB,4BAA8BY,EAAK,cAAeL,CAAW,EAI/F,IAAMC,GAxKd,EAwKmBX,GAAA,aAAYU,CAAW,EAElC,OAAIC,EAAG,MAAQ,KACXA,EAAG,KAAO,KAAK,WAAU,EAIzBA,EAAG,KAAO,QAAQ,IAAI,CAClB,QAAQ,QAAQA,EAAG,IAAI,EACvB,KAAK,WAAU,EAClB,EAAE,KAAK,SAACK,EAAM,CACX,OAAIA,EAAO,GAAG,YAAW,IAAOA,EAAO,GAAG,YAAW,GACjDb,GAAO,mBAAmB,wBAAyB,cAAeO,CAAW,EAE1EM,EAAO,EAClB,CAAC,EAGEL,CACX,EASML,EAAA,UAAA,oBAAN,SAA0BI,EAA2C,8GAEtB,MAAA,CAAA,GAtMnD,EAsMyDV,GAAA,mBAAkB,KAAK,iBAAiBU,CAAW,CAAC,CAAC,gBAAhGC,EAAqCF,EAAA,KAAA,EAEvCE,EAAG,IAAM,OACTA,EAAG,GAAK,QAAQ,QAAQA,EAAG,EAAE,EAAE,KAAK,SAAOM,EAAE,CAAA,OAAAC,GAAAC,EAAA,OAAA,OAAA,UAAA,yDACzC,OAAIF,GAAM,KAAQ,CAAA,EAAO,IAAI,EACb,CAAA,EAAM,KAAK,YAAYA,CAAE,CAAC,SAApC,OAAAG,EAAUX,EAAA,KAAA,EACZW,GAAW,MACXjB,GAAO,mBAAmB,qCAAsC,QAASc,CAAE,EAE/E,CAAA,EAAOG,CAAO,OACjB,EAGDT,EAAG,GAAG,MAAM,SAACU,EAAK,CAAQ,CAAC,GAIzBC,EAAcX,EAAG,cAAgB,MAAQA,EAAG,sBAAwB,KACtEA,EAAG,UAAY,OAASA,EAAG,OAAS,GAAKW,GACzCnB,GAAO,mBAAmB,+CAAgD,cAAeO,CAAW,GAC5FC,EAAG,OAAS,GAAKA,EAAG,OAAS,IAAMW,GAC3CnB,GAAO,mBAAmB,4EAA6E,cAAeO,CAAW,GAGhIC,EAAG,OAAS,GAAKA,EAAG,MAAQ,OAAUA,EAAG,cAAgB,MAAQA,EAAG,sBAAwB,MAE7FA,EAAG,KAAO,SAFV,CAAA,EAAA,CAAA,gBAIOA,EAAG,OAAS,GAAKA,EAAG,OAAS,GAIhCA,EAAG,UAAY,OAAQA,EAAG,SAAW,KAAK,YAAW,UAJlD,CAAA,EAAA,CAAA,SASS,MAAA,CAAA,EAAM,KAAK,WAAU,CAAE,SAAjCY,EAAUd,EAAA,KAAA,EAEZE,EAAG,MAAQ,KAGPY,EAAQ,cAAgB,MAAQA,EAAQ,sBAAwB,MAIhEZ,EAAG,KAAO,EAENA,EAAG,UAAY,MAGTa,EAAWb,EAAG,SACpB,OAAOA,EAAG,SACVA,EAAG,aAAea,EAClBb,EAAG,qBAAuBa,IAItBb,EAAG,cAAgB,OAAQA,EAAG,aAAeY,EAAQ,cACrDZ,EAAG,sBAAwB,OAAQA,EAAG,qBAAuBY,EAAQ,wBAGtEA,EAAQ,UAAY,MAIvBD,GACAnB,GAAO,WAAW,oCAAqCF,GAAA,OAAO,OAAO,sBAAuB,CACxF,UAAW,sBACd,EAIDU,EAAG,UAAY,OAAQA,EAAG,SAAWY,EAAQ,UAGjDZ,EAAG,KAAO,GAIVR,GAAO,WAAW,oCAAqCF,GAAA,OAAO,OAAO,sBAAuB,CACxF,UAAW,oBACd,EAGEU,EAAG,OAAS,IAIfA,EAAG,cAAgB,OAAQA,EAAG,aAAeY,EAAQ,cACrDZ,EAAG,sBAAwB,OAAQA,EAAG,qBAAuBY,EAAQ,wCAIjF,OAAIZ,EAAG,OAAS,OAAQA,EAAG,MAAQ,KAAK,oBAAoB,SAAS,GAEjEA,EAAG,UAAY,OACfA,EAAG,SAAW,KAAK,YAAYA,CAAE,EAAE,MAAM,SAACU,EAAK,CAC3C,GAAIhB,GAAc,QAAQgB,EAAM,IAAI,GAAK,EACrC,MAAMA,EAGV,OAAOlB,GAAO,WAAW,4EAA6EF,GAAA,OAAO,OAAO,wBAAyB,CACzI,MAAOoB,EACP,GAAIV,EACP,CACL,CAAC,GAGDA,EAAG,SAAW,KACdA,EAAG,QAAU,KAAK,WAAU,EAE5BA,EAAG,QAAU,QAAQ,IAAI,CACrB,QAAQ,QAAQA,EAAG,OAAO,EAC1B,KAAK,WAAU,EAClB,EAAE,KAAK,SAACc,EAAO,CACZ,OAAIA,EAAQ,KAAO,GAAKA,EAAQ,KAAOA,EAAQ,IAC3CtB,GAAO,mBAAmB,2BAA4B,cAAeO,CAAW,EAE7Ee,EAAQ,EACnB,CAAC,EAGE,CAAA,GAjUf,EAiUqBzB,GAAA,mBAAkBW,CAAE,CAAC,SAAlC,MAAA,CAAA,EAAOF,EAAA,KAAA,CAA2B,QAOtCH,EAAA,UAAA,eAAA,SAAeoB,EAAkB,CACxB,KAAK,UAAYvB,GAAO,WAAW,mBAAoBF,GAAA,OAAO,OAAO,sBAAuB,CAC7F,UAAYyB,GAAa,iBAAmB,CAEpD,EAEOpB,EAAA,SAAP,SAAgBqB,EAAU,CACtB,MAAO,CAAC,EAAEA,GAASA,EAAM,UAC7B,EACJrB,CAAA,EAxRA,EAAsBP,GAAA,OAAAO,GA0RtB,IAAAsB,GAAA,SAAAC,EAAA,CAAgCC,GAAAF,EAAAC,CAAA,EAG5B,SAAAD,EAAYR,EAAiBW,EAAmB,CAAhD,IAAAZ,EACIU,EAAA,KAAA,IAAA,GAAO,KACP,OAxVR,EAwVQ7B,GAAA,gBAAemB,EAAM,UAAWC,CAAO,GAxV/C,EAyVQpB,GAAA,gBAAemB,EAAM,WAAYY,GAAY,IAAI,GACrD,CAEA,OAAAH,EAAA,UAAA,WAAA,UAAA,CACI,OAAO,QAAQ,QAAQ,KAAK,OAAO,CACvC,EAEAA,EAAA,UAAA,MAAA,SAAMI,EAAiBN,EAAiB,CACpC,OAAO,QAAQ,QAAO,EAAG,KAAK,UAAA,CAC1BvB,GAAO,WAAW6B,EAAS/B,GAAA,OAAO,OAAO,sBAAuB,CAAE,UAAWyB,CAAS,CAAE,CAC5F,CAAC,CACL,EAEAE,EAAA,UAAA,YAAA,SAAYI,EAAuB,CAC/B,OAAO,KAAK,MAAM,kCAAmC,aAAa,CACtE,EAEAJ,EAAA,UAAA,gBAAA,SAAgBlB,EAA2C,CACvD,OAAO,KAAK,MAAM,sCAAuC,iBAAiB,CAC9E,EAEAkB,EAAA,UAAA,eAAA,SAAeK,EAAyBC,EAA8CP,EAA0B,CAC5G,OAAO,KAAK,MAAM,oCAAqC,eAAe,CAC1E,EAEAC,EAAA,UAAA,QAAA,SAAQG,EAAkB,CACtB,OAAO,IAAIH,EAAW,KAAK,QAASG,CAAQ,CAChD,EACJH,CAAA,EAlCgCtB,EAAM,EAAzBP,GAAA,WAAA6B,ilCCnVb,IAAAO,GAAAC,EAAA,CAAAC,GAAAC,KAAA,EAAC,SAAUA,EAAQD,EAAS,CAC1B,aAGA,SAASE,EAAQC,EAAKC,EAAK,CACzB,GAAI,CAACD,EAAK,MAAM,IAAI,MAAMC,GAAO,kBAAkB,CACrD,CAIA,SAASC,EAAUC,EAAMC,EAAW,CAClCD,EAAK,OAASC,EACd,IAAIC,EAAW,UAAY,CAAC,EAC5BA,EAAS,UAAYD,EAAU,UAC/BD,EAAK,UAAY,IAAIE,EACrBF,EAAK,UAAU,YAAcA,CAC/B,CAIA,SAASG,EAAIC,EAAQC,EAAMC,EAAQ,CACjC,GAAIH,EAAG,KAAKC,CAAM,EAChB,OAAOA,EAGT,KAAK,SAAW,EAChB,KAAK,MAAQ,KACb,KAAK,OAAS,EAGd,KAAK,IAAM,KAEPA,IAAW,QACTC,IAAS,MAAQA,IAAS,QAC5BC,EAASD,EACTA,EAAO,IAGT,KAAK,MAAMD,GAAU,EAAGC,GAAQ,GAAIC,GAAU,IAAI,EAEtD,CACI,OAAOX,GAAW,SACpBA,EAAO,QAAUQ,EAEjBT,EAAQ,GAAKS,EAGfA,EAAG,GAAKA,EACRA,EAAG,SAAW,GAEd,IAAII,EACJ,GAAI,CACE,OAAO,OAAW,KAAe,OAAO,OAAO,OAAW,IAC5DA,EAAS,OAAO,OAEhBA,EAAS,QAAQ,UAAU,MAE/B,MAAE,CACF,CAEAJ,EAAG,KAAO,SAAeK,EAAK,CAC5B,OAAIA,aAAeL,EACV,GAGFK,IAAQ,MAAQ,OAAOA,GAAQ,UACpCA,EAAI,YAAY,WAAaL,EAAG,UAAY,MAAM,QAAQK,EAAI,KAAK,CACvE,EAEAL,EAAG,IAAM,SAAcM,EAAMC,EAAO,CAClC,OAAID,EAAK,IAAIC,CAAK,EAAI,EAAUD,EACzBC,CACT,EAEAP,EAAG,IAAM,SAAcM,EAAMC,EAAO,CAClC,OAAID,EAAK,IAAIC,CAAK,EAAI,EAAUD,EACzBC,CACT,EAEAP,EAAG,UAAU,MAAQ,SAAeC,EAAQC,EAAMC,EAAQ,CACxD,GAAI,OAAOF,GAAW,SACpB,OAAO,KAAK,YAAYA,EAAQC,EAAMC,CAAM,EAG9C,GAAI,OAAOF,GAAW,SACpB,OAAO,KAAK,WAAWA,EAAQC,EAAMC,CAAM,EAGzCD,IAAS,QACXA,EAAO,IAETT,EAAOS,KAAUA,EAAO,IAAMA,GAAQ,GAAKA,GAAQ,EAAE,EAErDD,EAASA,EAAO,SAAS,EAAE,QAAQ,OAAQ,EAAE,EAC7C,IAAIO,EAAQ,EACRP,EAAO,KAAO,MAChBO,IACA,KAAK,SAAW,GAGdA,EAAQP,EAAO,SACbC,IAAS,GACX,KAAK,UAAUD,EAAQO,EAAOL,CAAM,GAEpC,KAAK,WAAWF,EAAQC,EAAMM,CAAK,EAC/BL,IAAW,MACb,KAAK,WAAW,KAAK,QAAQ,EAAGD,EAAMC,CAAM,GAIpD,EAEAH,EAAG,UAAU,YAAc,SAAsBC,EAAQC,EAAMC,EAAQ,CACjEF,EAAS,IACX,KAAK,SAAW,EAChBA,EAAS,CAACA,GAERA,EAAS,UACX,KAAK,MAAQ,CAAEA,EAAS,QAAU,EAClC,KAAK,OAAS,GACLA,EAAS,kBAClB,KAAK,MAAQ,CACXA,EAAS,SACRA,EAAS,SAAa,QACzB,EACA,KAAK,OAAS,IAEdR,EAAOQ,EAAS,gBAAgB,EAChC,KAAK,MAAQ,CACXA,EAAS,SACRA,EAAS,SAAa,SACvB,CACF,EACA,KAAK,OAAS,GAGZE,IAAW,MAGf,KAAK,WAAW,KAAK,QAAQ,EAAGD,EAAMC,CAAM,CAC9C,EAEAH,EAAG,UAAU,WAAa,SAAqBC,EAAQC,EAAMC,EAAQ,CAGnE,GADAV,EAAO,OAAOQ,EAAO,QAAW,QAAQ,EACpCA,EAAO,QAAU,EACnB,YAAK,MAAQ,CAAE,CAAE,EACjB,KAAK,OAAS,EACP,KAGT,KAAK,OAAS,KAAK,KAAKA,EAAO,OAAS,CAAC,EACzC,KAAK,MAAQ,IAAI,MAAM,KAAK,MAAM,EAClC,QAASQ,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC/B,KAAK,MAAMA,GAAK,EAGlB,IAAIC,EAAGC,EACHC,EAAM,EACV,GAAIT,IAAW,KACb,IAAKM,EAAIR,EAAO,OAAS,EAAGS,EAAI,EAAGD,GAAK,EAAGA,GAAK,EAC9CE,EAAIV,EAAOQ,GAAMR,EAAOQ,EAAI,IAAM,EAAMR,EAAOQ,EAAI,IAAM,GACzD,KAAK,MAAMC,IAAOC,GAAKC,EAAO,SAC9B,KAAK,MAAMF,EAAI,GAAMC,IAAO,GAAKC,EAAQ,SACzCA,GAAO,GACHA,GAAO,KACTA,GAAO,GACPF,aAGKP,IAAW,KACpB,IAAKM,EAAI,EAAGC,EAAI,EAAGD,EAAIR,EAAO,OAAQQ,GAAK,EACzCE,EAAIV,EAAOQ,GAAMR,EAAOQ,EAAI,IAAM,EAAMR,EAAOQ,EAAI,IAAM,GACzD,KAAK,MAAMC,IAAOC,GAAKC,EAAO,SAC9B,KAAK,MAAMF,EAAI,GAAMC,IAAO,GAAKC,EAAQ,SACzCA,GAAO,GACHA,GAAO,KACTA,GAAO,GACPF,KAIN,OAAO,KAAK,MAAM,CACpB,EAEA,SAASG,EAAeC,EAAQC,EAAO,CACrC,IAAIC,EAAIF,EAAO,WAAWC,CAAK,EAE/B,OAAIC,GAAK,IAAMA,GAAK,GACXA,EAAI,GAEFA,GAAK,IAAMA,GAAK,IAClBA,EAAI,GAGHA,EAAI,GAAM,EAEtB,CAEA,SAASC,EAAcH,EAAQI,EAAYH,EAAO,CAChD,IAAII,EAAIN,EAAcC,EAAQC,CAAK,EACnC,OAAIA,EAAQ,GAAKG,IACfC,GAAKN,EAAcC,EAAQC,EAAQ,CAAC,GAAK,GAEpCI,CACT,CAEAnB,EAAG,UAAU,UAAY,SAAoBC,EAAQO,EAAOL,EAAQ,CAElE,KAAK,OAAS,KAAK,MAAMF,EAAO,OAASO,GAAS,CAAC,EACnD,KAAK,MAAQ,IAAI,MAAM,KAAK,MAAM,EAClC,QAASC,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC/B,KAAK,MAAMA,GAAK,EAIlB,IAAIG,EAAM,EACNF,EAAI,EAEJC,EACJ,GAAIR,IAAW,KACb,IAAKM,EAAIR,EAAO,OAAS,EAAGQ,GAAKD,EAAOC,GAAK,EAC3CE,EAAIM,EAAahB,EAAQO,EAAOC,CAAC,GAAKG,EACtC,KAAK,MAAMF,IAAMC,EAAI,SACjBC,GAAO,IACTA,GAAO,GACPF,GAAK,EACL,KAAK,MAAMA,IAAMC,IAAM,IAEvBC,GAAO,MAGN,CACL,IAAIQ,EAAcnB,EAAO,OAASO,EAClC,IAAKC,EAAIW,EAAc,IAAM,EAAIZ,EAAQ,EAAIA,EAAOC,EAAIR,EAAO,OAAQQ,GAAK,EAC1EE,EAAIM,EAAahB,EAAQO,EAAOC,CAAC,GAAKG,EACtC,KAAK,MAAMF,IAAMC,EAAI,SACjBC,GAAO,IACTA,GAAO,GACPF,GAAK,EACL,KAAK,MAAMA,IAAMC,IAAM,IAEvBC,GAAO,CAGb,CAEA,KAAK,MAAM,CACb,EAEA,SAASS,EAAWC,EAAKd,EAAOe,EAAKC,EAAK,CAGxC,QAFIL,EAAI,EACJM,EAAM,KAAK,IAAIH,EAAI,OAAQC,CAAG,EACzBd,EAAID,EAAOC,EAAIgB,EAAKhB,IAAK,CAChC,IAAIO,EAAIM,EAAI,WAAWb,CAAC,EAAI,GAE5BU,GAAKK,EAGDR,GAAK,GACPG,GAAKH,EAAI,GAAK,GAGLA,GAAK,GACdG,GAAKH,EAAI,GAAK,GAIdG,GAAKH,CAET,CACA,OAAOG,CACT,CAEAnB,EAAG,UAAU,WAAa,SAAqBC,EAAQC,EAAMM,EAAO,CAElE,KAAK,MAAQ,CAAE,CAAE,EACjB,KAAK,OAAS,EAGd,QAASkB,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAWzB,EAClEwB,IAEFA,IACAC,EAAWA,EAAUzB,EAAQ,EAO7B,QALI0B,EAAQ3B,EAAO,OAASO,EACxBqB,EAAMD,EAAQF,EACdH,EAAM,KAAK,IAAIK,EAAOA,EAAQC,CAAG,EAAIrB,EAErCsB,EAAO,EACFrB,EAAID,EAAOC,EAAIc,EAAKd,GAAKiB,EAChCI,EAAOT,EAAUpB,EAAQQ,EAAGA,EAAIiB,EAASxB,CAAI,EAE7C,KAAK,MAAMyB,CAAO,EACd,KAAK,MAAM,GAAKG,EAAO,SACzB,KAAK,MAAM,IAAMA,EAEjB,KAAK,OAAOA,CAAI,EAIpB,GAAID,IAAQ,EAAG,CACb,IAAIE,EAAM,EAGV,IAFAD,EAAOT,EAAUpB,EAAQQ,EAAGR,EAAO,OAAQC,CAAI,EAE1CO,EAAI,EAAGA,EAAIoB,EAAKpB,IACnBsB,GAAO7B,EAGT,KAAK,MAAM6B,CAAG,EACV,KAAK,MAAM,GAAKD,EAAO,SACzB,KAAK,MAAM,IAAMA,EAEjB,KAAK,OAAOA,CAAI,CAEpB,CAEA,KAAK,MAAM,CACb,EAEA9B,EAAG,UAAU,KAAO,SAAegC,EAAM,CACvCA,EAAK,MAAQ,IAAI,MAAM,KAAK,MAAM,EAClC,QAASvB,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC/BuB,EAAK,MAAMvB,GAAK,KAAK,MAAMA,GAE7BuB,EAAK,OAAS,KAAK,OACnBA,EAAK,SAAW,KAAK,SACrBA,EAAK,IAAM,KAAK,GAClB,EAEAhC,EAAG,UAAU,MAAQ,UAAkB,CACrC,IAAImB,EAAI,IAAInB,EAAG,IAAI,EACnB,YAAK,KAAKmB,CAAC,EACJA,CACT,EAEAnB,EAAG,UAAU,QAAU,SAAkBiC,EAAM,CAC7C,KAAO,KAAK,OAASA,GACnB,KAAK,MAAM,KAAK,UAAY,EAE9B,OAAO,IACT,EAGAjC,EAAG,UAAU,MAAQ,UAAkB,CACrC,KAAO,KAAK,OAAS,GAAK,KAAK,MAAM,KAAK,OAAS,KAAO,GACxD,KAAK,SAEP,OAAO,KAAK,UAAU,CACxB,EAEAA,EAAG,UAAU,UAAY,UAAsB,CAE7C,OAAI,KAAK,SAAW,GAAK,KAAK,MAAM,KAAO,IACzC,KAAK,SAAW,GAEX,IACT,EAEAA,EAAG,UAAU,QAAU,UAAoB,CACzC,OAAQ,KAAK,IAAM,UAAY,SAAW,KAAK,SAAS,EAAE,EAAI,GAChE,EAgCA,IAAIkC,EAAQ,CACV,GACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,yBACA,0BACA,2BACA,2BACF,EAEIC,EAAa,CACf,EAAG,EACH,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EACvB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CACpB,EAEIC,EAAa,CACf,EAAG,EACH,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAC5D,SAAU,IAAU,SAAU,SAAU,SAAU,QAAS,SAC3D,SAAU,SAAU,SAAU,SAAU,KAAU,QAAS,QAC3D,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SACzD,MAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAC9D,EAEApC,EAAG,UAAU,SAAW,SAAmBE,EAAMmC,EAAS,CACxDnC,EAAOA,GAAQ,GACfmC,EAAUA,EAAU,GAAK,EAEzB,IAAIC,EACJ,GAAIpC,IAAS,IAAMA,IAAS,MAAO,CACjCoC,EAAM,GAGN,QAFI1B,EAAM,EACN2B,EAAQ,EACH9B,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CACpC,IAAIE,EAAI,KAAK,MAAMF,GACfqB,IAAUnB,GAAKC,EAAO2B,GAAS,UAAU,SAAS,EAAE,EACxDA,EAAS5B,IAAO,GAAKC,EAAQ,SACzB2B,IAAU,GAAK9B,IAAM,KAAK,OAAS,EACrC6B,EAAMJ,EAAM,EAAIJ,EAAK,QAAUA,EAAOQ,EAEtCA,EAAMR,EAAOQ,EAEf1B,GAAO,EACHA,GAAO,KACTA,GAAO,GACPH,IAEJ,CAIA,IAHI8B,IAAU,IACZD,EAAMC,EAAM,SAAS,EAAE,EAAID,GAEtBA,EAAI,OAASD,IAAY,GAC9BC,EAAM,IAAMA,EAEd,OAAI,KAAK,WAAa,IACpBA,EAAM,IAAMA,GAEPA,CACT,CAEA,GAAIpC,KAAUA,EAAO,IAAMA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAIsC,EAAYL,EAAWjC,GAEvBuC,EAAYL,EAAWlC,GAC3BoC,EAAM,GACN,IAAItB,EAAI,KAAK,MAAM,EAEnB,IADAA,EAAE,SAAW,EACN,CAACA,EAAE,OAAO,GAAG,CAClB,IAAIG,EAAIH,EAAE,KAAKyB,CAAS,EAAE,SAASvC,CAAI,EACvCc,EAAIA,EAAE,MAAMyB,CAAS,EAEhBzB,EAAE,OAAO,EAGZsB,EAAMnB,EAAImB,EAFVA,EAAMJ,EAAMM,EAAYrB,EAAE,QAAUA,EAAImB,CAI5C,CAIA,IAHI,KAAK,OAAO,IACdA,EAAM,IAAMA,GAEPA,EAAI,OAASD,IAAY,GAC9BC,EAAM,IAAMA,EAEd,OAAI,KAAK,WAAa,IACpBA,EAAM,IAAMA,GAEPA,CACT,CAEA7C,EAAO,GAAO,iCAAiC,CACjD,EAEAO,EAAG,UAAU,SAAW,UAAqB,CAC3C,IAAI0C,EAAM,KAAK,MAAM,GACrB,OAAI,KAAK,SAAW,EAClBA,GAAO,KAAK,MAAM,GAAK,SACd,KAAK,SAAW,GAAK,KAAK,MAAM,KAAO,EAEhDA,GAAO,iBAAoB,KAAK,MAAM,GAAK,SAClC,KAAK,OAAS,GACvBjD,EAAO,GAAO,4CAA4C,EAEpD,KAAK,WAAa,EAAK,CAACiD,EAAMA,CACxC,EAEA1C,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAO,KAAK,SAAS,EAAE,CACzB,EAEAA,EAAG,UAAU,SAAW,SAAmBG,EAAQwC,EAAQ,CACzD,OAAAlD,EAAO,OAAOW,EAAW,GAAW,EAC7B,KAAK,YAAYA,EAAQD,EAAQwC,CAAM,CAChD,EAEA3C,EAAG,UAAU,QAAU,SAAkBG,EAAQwC,EAAQ,CACvD,OAAO,KAAK,YAAY,MAAOxC,EAAQwC,CAAM,CAC/C,EAEA3C,EAAG,UAAU,YAAc,SAAsB4C,EAAWzC,EAAQwC,EAAQ,CAC1E,IAAIE,EAAa,KAAK,WAAW,EAC7BC,EAAYH,GAAU,KAAK,IAAI,EAAGE,CAAU,EAChDpD,EAAOoD,GAAcC,EAAW,uCAAuC,EACvErD,EAAOqD,EAAY,EAAG,6BAA6B,EAEnD,KAAK,MAAM,EACX,IAAIC,EAAe5C,IAAW,KAC1B6C,EAAM,IAAIJ,EAAUE,CAAS,EAE7BG,EAAGxC,EACHyC,EAAI,KAAK,MAAM,EACnB,GAAKH,EAYE,CACL,IAAKtC,EAAI,EAAG,CAACyC,EAAE,OAAO,EAAGzC,IACvBwC,EAAIC,EAAE,MAAM,GAAI,EAChBA,EAAE,OAAO,CAAC,EAEVF,EAAIvC,GAAKwC,EAGX,KAAOxC,EAAIqC,EAAWrC,IACpBuC,EAAIvC,GAAK,CAEb,KAvBmB,CAEjB,IAAKA,EAAI,EAAGA,EAAIqC,EAAYD,EAAYpC,IACtCuC,EAAIvC,GAAK,EAGX,IAAKA,EAAI,EAAG,CAACyC,EAAE,OAAO,EAAGzC,IACvBwC,EAAIC,EAAE,MAAM,GAAI,EAChBA,EAAE,OAAO,CAAC,EAEVF,EAAIF,EAAYrC,EAAI,GAAKwC,CAE7B,CAaA,OAAOD,CACT,EAEI,KAAK,MACPhD,EAAG,UAAU,WAAa,SAAqBW,EAAG,CAChD,MAAO,IAAK,KAAK,MAAMA,CAAC,CAC1B,EAEAX,EAAG,UAAU,WAAa,SAAqBW,EAAG,CAChD,IAAIwC,EAAIxC,EACJQ,EAAI,EACR,OAAIgC,GAAK,OACPhC,GAAK,GACLgC,KAAO,IAELA,GAAK,KACPhC,GAAK,EACLgC,KAAO,GAELA,GAAK,IACPhC,GAAK,EACLgC,KAAO,GAELA,GAAK,IACPhC,GAAK,EACLgC,KAAO,GAEFhC,EAAIgC,CACb,EAGFnD,EAAG,UAAU,UAAY,SAAoBW,EAAG,CAE9C,GAAIA,IAAM,EAAG,MAAO,IAEpB,IAAIwC,EAAIxC,EACJQ,EAAI,EACR,OAAKgC,EAAI,QAAY,IACnBhC,GAAK,GACLgC,KAAO,KAEJA,EAAI,OAAU,IACjBhC,GAAK,EACLgC,KAAO,IAEJA,EAAI,MAAS,IAChBhC,GAAK,EACLgC,KAAO,IAEJA,EAAI,KAAS,IAChBhC,GAAK,EACLgC,KAAO,IAEJA,EAAI,KAAS,GAChBhC,IAEKA,CACT,EAGAnB,EAAG,UAAU,UAAY,UAAsB,CAC7C,IAAIW,EAAI,KAAK,MAAM,KAAK,OAAS,GAC7ByC,EAAK,KAAK,WAAWzC,CAAC,EAC1B,OAAQ,KAAK,OAAS,GAAK,GAAKyC,CAClC,EAEA,SAASC,EAAYhD,EAAK,CAGxB,QAFIM,EAAI,IAAI,MAAMN,EAAI,UAAU,CAAC,EAExBiD,EAAM,EAAGA,EAAM3C,EAAE,OAAQ2C,IAAO,CACvC,IAAI1C,EAAO0C,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjB3C,EAAE2C,IAAQjD,EAAI,MAAMO,GAAQ,GAAK2C,KAAWA,CAC9C,CAEA,OAAO5C,CACT,CAGAX,EAAG,UAAU,SAAW,UAAqB,CAC3C,GAAI,KAAK,OAAO,EAAG,MAAO,GAG1B,QADImB,EAAI,EACCV,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CACpC,IAAI,EAAI,KAAK,UAAU,KAAK,MAAMA,EAAE,EAEpC,GADAU,GAAK,EACD,IAAM,GAAI,KAChB,CACA,OAAOA,CACT,EAEAnB,EAAG,UAAU,WAAa,UAAuB,CAC/C,OAAO,KAAK,KAAK,KAAK,UAAU,EAAI,CAAC,CACvC,EAEAA,EAAG,UAAU,OAAS,SAAiBwD,EAAO,CAC5C,OAAI,KAAK,WAAa,EACb,KAAK,IAAI,EAAE,MAAMA,CAAK,EAAE,MAAM,CAAC,EAEjC,KAAK,MAAM,CACpB,EAEAxD,EAAG,UAAU,SAAW,SAAmBwD,EAAO,CAChD,OAAI,KAAK,MAAMA,EAAQ,CAAC,EACf,KAAK,KAAKA,CAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAEjC,KAAK,MAAM,CACpB,EAEAxD,EAAG,UAAU,MAAQ,UAAkB,CACrC,OAAO,KAAK,WAAa,CAC3B,EAGAA,EAAG,UAAU,IAAM,UAAgB,CACjC,OAAO,KAAK,MAAM,EAAE,KAAK,CAC3B,EAEAA,EAAG,UAAU,KAAO,UAAiB,CACnC,OAAK,KAAK,OAAO,IACf,KAAK,UAAY,GAGZ,IACT,EAGAA,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,KAAO,KAAK,OAASA,EAAI,QACvB,KAAK,MAAM,KAAK,UAAY,EAG9B,QAASI,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAC9B,KAAK,MAAMA,GAAK,KAAK,MAAMA,GAAKJ,EAAI,MAAMI,GAG5C,OAAO,KAAK,MAAM,CACpB,EAEAT,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAAZ,GAAQ,KAAK,SAAWY,EAAI,YAAc,CAAC,EACpC,KAAK,KAAKA,CAAG,CACtB,EAGAL,EAAG,UAAU,GAAK,SAAaK,EAAK,CAClC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,IAAIA,CAAG,EAClDA,EAAI,MAAM,EAAE,IAAI,IAAI,CAC7B,EAEAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,KAAKA,CAAG,EACnDA,EAAI,MAAM,EAAE,KAAK,IAAI,CAC9B,EAGAL,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CAExC,IAAI4C,EACA,KAAK,OAAS5C,EAAI,OACpB4C,EAAI5C,EAEJ4C,EAAI,KAGN,QAASxC,EAAI,EAAGA,EAAIwC,EAAE,OAAQxC,IAC5B,KAAK,MAAMA,GAAK,KAAK,MAAMA,GAAKJ,EAAI,MAAMI,GAG5C,YAAK,OAASwC,EAAE,OAET,KAAK,MAAM,CACpB,EAEAjD,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAAZ,GAAQ,KAAK,SAAWY,EAAI,YAAc,CAAC,EACpC,KAAK,MAAMA,CAAG,CACvB,EAGAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,KAAKA,CAAG,EACnDA,EAAI,MAAM,EAAE,KAAK,IAAI,CAC9B,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,MAAMA,CAAG,EACpDA,EAAI,MAAM,EAAE,MAAM,IAAI,CAC/B,EAGAL,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CAExC,IAAIoD,EACA,EACA,KAAK,OAASpD,EAAI,QACpBoD,EAAI,KACJ,EAAIpD,IAEJoD,EAAIpD,EACJ,EAAI,MAGN,QAASI,EAAI,EAAGA,EAAI,EAAE,OAAQA,IAC5B,KAAK,MAAMA,GAAKgD,EAAE,MAAMhD,GAAK,EAAE,MAAMA,GAGvC,GAAI,OAASgD,EACX,KAAOhD,EAAIgD,EAAE,OAAQhD,IACnB,KAAK,MAAMA,GAAKgD,EAAE,MAAMhD,GAI5B,YAAK,OAASgD,EAAE,OAET,KAAK,MAAM,CACpB,EAEAzD,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAAZ,GAAQ,KAAK,SAAWY,EAAI,YAAc,CAAC,EACpC,KAAK,MAAMA,CAAG,CACvB,EAGAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,KAAKA,CAAG,EACnDA,EAAI,MAAM,EAAE,KAAK,IAAI,CAC9B,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,MAAMA,CAAG,EACpDA,EAAI,MAAM,EAAE,MAAM,IAAI,CAC/B,EAGAL,EAAG,UAAU,MAAQ,SAAgBwD,EAAO,CAC1C/D,EAAO,OAAO+D,GAAU,UAAYA,GAAS,CAAC,EAE9C,IAAIE,EAAc,KAAK,KAAKF,EAAQ,EAAE,EAAI,EACtCG,EAAWH,EAAQ,GAGvB,KAAK,QAAQE,CAAW,EAEpBC,EAAW,GACbD,IAIF,QAASjD,EAAI,EAAGA,EAAIiD,EAAajD,IAC/B,KAAK,MAAMA,GAAK,CAAC,KAAK,MAAMA,GAAK,SAInC,OAAIkD,EAAW,IACb,KAAK,MAAMlD,GAAK,CAAC,KAAK,MAAMA,GAAM,UAAc,GAAKkD,GAIhD,KAAK,MAAM,CACpB,EAEA3D,EAAG,UAAU,KAAO,SAAewD,EAAO,CACxC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAK,CACjC,EAGAxD,EAAG,UAAU,KAAO,SAAesD,EAAK5D,EAAK,CAC3CD,EAAO,OAAO6D,GAAQ,UAAYA,GAAO,CAAC,EAE1C,IAAI1C,EAAO0C,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjB,YAAK,QAAQ1C,EAAM,CAAC,EAEhBlB,EACF,KAAK,MAAMkB,GAAO,KAAK,MAAMA,GAAQ,GAAK2C,EAE1C,KAAK,MAAM3C,GAAO,KAAK,MAAMA,GAAO,EAAE,GAAK2C,GAGtC,KAAK,MAAM,CACpB,EAGAvD,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,IAAIc,EAGJ,GAAI,KAAK,WAAa,GAAKd,EAAI,WAAa,EAC1C,YAAK,SAAW,EAChBc,EAAI,KAAK,KAAKd,CAAG,EACjB,KAAK,UAAY,EACV,KAAK,UAAU,EAGjB,GAAI,KAAK,WAAa,GAAKA,EAAI,WAAa,EACjD,OAAAA,EAAI,SAAW,EACfc,EAAI,KAAK,KAAKd,CAAG,EACjBA,EAAI,SAAW,EACRc,EAAE,UAAU,EAIrB,IAAIsC,EAAGR,EACH,KAAK,OAAS5C,EAAI,QACpBoD,EAAI,KACJR,EAAI5C,IAEJoD,EAAIpD,EACJ4C,EAAI,MAIN,QADIV,EAAQ,EACH9B,EAAI,EAAGA,EAAIwC,EAAE,OAAQxC,IAC5BU,GAAKsC,EAAE,MAAMhD,GAAK,IAAMwC,EAAE,MAAMxC,GAAK,GAAK8B,EAC1C,KAAK,MAAM9B,GAAKU,EAAI,SACpBoB,EAAQpB,IAAM,GAEhB,KAAOoB,IAAU,GAAK9B,EAAIgD,EAAE,OAAQhD,IAClCU,GAAKsC,EAAE,MAAMhD,GAAK,GAAK8B,EACvB,KAAK,MAAM9B,GAAKU,EAAI,SACpBoB,EAAQpB,IAAM,GAIhB,GADA,KAAK,OAASsC,EAAE,OACZlB,IAAU,EACZ,KAAK,MAAM,KAAK,QAAUA,EAC1B,KAAK,iBAEIkB,IAAM,KACf,KAAOhD,EAAIgD,EAAE,OAAQhD,IACnB,KAAK,MAAMA,GAAKgD,EAAE,MAAMhD,GAI5B,OAAO,IACT,EAGAT,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,IAAI2C,EACJ,OAAI3C,EAAI,WAAa,GAAK,KAAK,WAAa,GAC1CA,EAAI,SAAW,EACf2C,EAAM,KAAK,IAAI3C,CAAG,EAClBA,EAAI,UAAY,EACT2C,GACE3C,EAAI,WAAa,GAAK,KAAK,WAAa,GACjD,KAAK,SAAW,EAChB2C,EAAM3C,EAAI,IAAI,IAAI,EAClB,KAAK,SAAW,EACT2C,GAGL,KAAK,OAAS3C,EAAI,OAAe,KAAK,MAAM,EAAE,KAAKA,CAAG,EAEnDA,EAAI,MAAM,EAAE,KAAK,IAAI,CAC9B,EAGAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CAEtC,GAAIA,EAAI,WAAa,EAAG,CACtBA,EAAI,SAAW,EACf,IAAIc,EAAI,KAAK,KAAKd,CAAG,EACrB,OAAAA,EAAI,SAAW,EACRc,EAAE,UAAU,CAGrB,SAAW,KAAK,WAAa,EAC3B,YAAK,SAAW,EAChB,KAAK,KAAKd,CAAG,EACb,KAAK,SAAW,EACT,KAAK,UAAU,EAIxB,IAAIuD,EAAM,KAAK,IAAIvD,CAAG,EAGtB,GAAIuD,IAAQ,EACV,YAAK,SAAW,EAChB,KAAK,OAAS,EACd,KAAK,MAAM,GAAK,EACT,KAIT,IAAIH,EAAGR,EACHW,EAAM,GACRH,EAAI,KACJR,EAAI5C,IAEJoD,EAAIpD,EACJ4C,EAAI,MAIN,QADIV,EAAQ,EACH9B,EAAI,EAAGA,EAAIwC,EAAE,OAAQxC,IAC5BU,GAAKsC,EAAE,MAAMhD,GAAK,IAAMwC,EAAE,MAAMxC,GAAK,GAAK8B,EAC1CA,EAAQpB,GAAK,GACb,KAAK,MAAMV,GAAKU,EAAI,SAEtB,KAAOoB,IAAU,GAAK9B,EAAIgD,EAAE,OAAQhD,IAClCU,GAAKsC,EAAE,MAAMhD,GAAK,GAAK8B,EACvBA,EAAQpB,GAAK,GACb,KAAK,MAAMV,GAAKU,EAAI,SAItB,GAAIoB,IAAU,GAAK9B,EAAIgD,EAAE,QAAUA,IAAM,KACvC,KAAOhD,EAAIgD,EAAE,OAAQhD,IACnB,KAAK,MAAMA,GAAKgD,EAAE,MAAMhD,GAI5B,YAAK,OAAS,KAAK,IAAI,KAAK,OAAQA,CAAC,EAEjCgD,IAAM,OACR,KAAK,SAAW,GAGX,KAAK,MAAM,CACpB,EAGAzD,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,MAAM,EAAE,KAAKA,CAAG,CAC9B,EAEA,SAASwD,EAAYC,EAAMzD,EAAKiC,EAAK,CACnCA,EAAI,SAAWjC,EAAI,SAAWyD,EAAK,SACnC,IAAIrC,EAAOqC,EAAK,OAASzD,EAAI,OAAU,EACvCiC,EAAI,OAASb,EACbA,EAAOA,EAAM,EAAK,EAGlB,IAAIgC,EAAIK,EAAK,MAAM,GAAK,EACpBb,EAAI5C,EAAI,MAAM,GAAK,EACnBc,EAAIsC,EAAIR,EAERc,EAAK5C,EAAI,SACToB,EAASpB,EAAI,SAAa,EAC9BmB,EAAI,MAAM,GAAKyB,EAEf,QAASC,EAAI,EAAGA,EAAIvC,EAAKuC,IAAK,CAM5B,QAHIC,EAAS1B,IAAU,GACnB2B,EAAQ3B,EAAQ,SAChB4B,EAAO,KAAK,IAAIH,EAAG3D,EAAI,OAAS,CAAC,EAC5BK,EAAI,KAAK,IAAI,EAAGsD,EAAIF,EAAK,OAAS,CAAC,EAAGpD,GAAKyD,EAAMzD,IAAK,CAC7D,IAAID,EAAKuD,EAAItD,EAAK,EAClB+C,EAAIK,EAAK,MAAMrD,GAAK,EACpBwC,EAAI5C,EAAI,MAAMK,GAAK,EACnBS,EAAIsC,EAAIR,EAAIiB,EACZD,GAAW9C,EAAI,SAAa,EAC5B+C,EAAQ/C,EAAI,QACd,CACAmB,EAAI,MAAM0B,GAAKE,EAAQ,EACvB3B,EAAQ0B,EAAS,CACnB,CACA,OAAI1B,IAAU,EACZD,EAAI,MAAM0B,GAAKzB,EAAQ,EAEvBD,EAAI,SAGCA,EAAI,MAAM,CACnB,CAKA,IAAI8B,EAAc,SAAsBN,EAAMzD,EAAKiC,EAAK,CACtD,IAAImB,EAAIK,EAAK,MACTb,EAAI5C,EAAI,MACRgE,EAAI/B,EAAI,MACRtB,EAAI,EACJ+C,EACAO,EACAlB,EACAmB,EAAKd,EAAE,GAAK,EACZe,EAAMD,EAAK,KACXE,EAAMF,IAAO,GACbG,EAAKjB,EAAE,GAAK,EACZkB,EAAMD,EAAK,KACXE,EAAMF,IAAO,GACbG,EAAKpB,EAAE,GAAK,EACZqB,EAAMD,EAAK,KACXE,EAAMF,IAAO,GACbG,EAAKvB,EAAE,GAAK,EACZwB,EAAMD,EAAK,KACXE,EAAMF,IAAO,GACbG,GAAK1B,EAAE,GAAK,EACZ2B,EAAMD,GAAK,KACXE,EAAMF,KAAO,GACbG,GAAK7B,EAAE,GAAK,EACZ8B,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKhC,EAAE,GAAK,EACZiC,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKnC,EAAE,GAAK,EACZoC,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKtC,EAAE,GAAK,EACZuC,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKzC,EAAE,GAAK,EACZ0C,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKpD,EAAE,GAAK,EACZqD,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKvD,EAAE,GAAK,EACZwD,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK1D,EAAE,GAAK,EACZ2D,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK7D,EAAE,GAAK,EACZ8D,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKhE,EAAE,GAAK,EACZiE,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKnE,EAAE,GAAK,EACZoE,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKtE,EAAE,GAAK,EACZuE,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKzE,EAAE,GAAK,EACZ0E,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK5E,EAAE,GAAK,EACZ6E,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK/E,EAAE,GAAK,EACZgF,GAAMD,GAAK,KACXE,GAAMF,KAAO,GAEjB1F,EAAI,SAAWwB,EAAK,SAAWzD,EAAI,SACnCiC,EAAI,OAAS,GAEbyB,EAAK,KAAK,KAAKS,EAAK8B,EAAG,EACvBhC,EAAM,KAAK,KAAKE,EAAK+B,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKG,EAAK6B,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKqB,EAAK8B,EAAG,EACvB,IAAI4B,IAAQnH,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAM6D,KAAO,IAAO,EAChDA,IAAM,SAENpE,EAAK,KAAK,KAAKY,EAAK2B,EAAG,EACvBhC,EAAM,KAAK,KAAKK,EAAK4B,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKM,EAAK0B,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKwB,EAAK2B,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKS,EAAKiC,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKE,EAAKkC,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKG,EAAKgC,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAKqB,EAAKiC,EAAG,EAAK,EAClC,IAAI0B,IAAQpH,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAM8D,KAAO,IAAO,EAChDA,IAAM,SAENrE,EAAK,KAAK,KAAKe,EAAKwB,EAAG,EACvBhC,EAAM,KAAK,KAAKQ,EAAKyB,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKS,EAAKuB,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAK2B,EAAKwB,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKY,EAAK8B,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKK,EAAK+B,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKM,EAAK6B,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAKwB,EAAK8B,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKS,EAAKoC,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKE,EAAKqC,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKG,EAAKmC,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAKqB,EAAKoC,EAAG,EAAK,EAClC,IAAIwB,IAAQrH,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAM+D,KAAO,IAAO,EAChDA,IAAM,SAENtE,EAAK,KAAK,KAAKkB,EAAKqB,EAAG,EACvBhC,EAAM,KAAK,KAAKW,EAAKsB,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKY,EAAKoB,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAK8B,EAAKqB,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKe,EAAK2B,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKQ,EAAK4B,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKS,EAAK0B,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAK2B,EAAK2B,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKY,EAAKiC,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKK,EAAKkC,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKM,EAAKgC,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAKwB,EAAKiC,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKS,EAAKuC,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKE,EAAKwC,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKG,EAAKsC,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAKqB,EAAKuC,EAAG,EAAK,EAClC,IAAIsB,IAAQtH,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAENvE,EAAK,KAAK,KAAKqB,EAAKkB,EAAG,EACvBhC,EAAM,KAAK,KAAKc,EAAKmB,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKe,EAAKiB,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKiC,EAAKkB,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKkB,EAAKwB,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKW,EAAKyB,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKY,EAAKuB,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAK8B,EAAKwB,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKe,EAAK8B,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKQ,EAAK+B,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKS,EAAK6B,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAK2B,EAAK8B,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKY,EAAKoC,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKK,EAAKqC,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKM,EAAKmC,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAKwB,EAAKoC,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKS,EAAK0C,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKE,EAAK2C,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKG,EAAKyC,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAKqB,EAAK0C,EAAG,EAAK,EAClC,IAAIoB,IAAQvH,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAENxE,EAAK,KAAK,KAAKwB,GAAKe,EAAG,EACvBhC,EAAM,KAAK,KAAKiB,GAAKgB,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKkB,GAAKc,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKoC,GAAKe,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKqB,EAAKqB,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKc,EAAKsB,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKe,EAAKoB,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAKiC,EAAKqB,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKkB,EAAK2B,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKW,EAAK4B,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKY,EAAK0B,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAK8B,EAAK2B,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKe,EAAKiC,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKQ,EAAKkC,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKS,EAAKgC,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAK2B,EAAKiC,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKY,EAAKuC,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKK,EAAKwC,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKM,EAAKsC,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAKwB,EAAKuC,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKS,EAAK6C,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKE,EAAK8C,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKG,EAAK4C,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAKqB,EAAK6C,EAAG,EAAK,EAClC,IAAIkB,IAAQxH,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAENzE,EAAK,KAAK,KAAK2B,GAAKY,EAAG,EACvBhC,EAAM,KAAK,KAAKoB,GAAKa,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKqB,GAAKW,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKuC,GAAKY,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKwB,GAAKkB,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKiB,GAAKmB,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKkB,GAAKiB,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAKoC,GAAKkB,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKqB,EAAKwB,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKc,EAAKyB,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKe,EAAKuB,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAKiC,EAAKwB,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKkB,EAAK8B,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKW,EAAK+B,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKY,EAAK6B,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAK8B,EAAK8B,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKe,EAAKoC,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKQ,EAAKqC,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKS,EAAKmC,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAK2B,EAAKoC,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKY,EAAK0C,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKK,EAAK2C,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKM,EAAKyC,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAKwB,EAAK0C,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKS,EAAKgD,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKE,EAAKiD,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKG,EAAK+C,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAKqB,EAAKgD,EAAG,EAAK,EAClC,IAAIgB,IAAQzH,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAEN1E,EAAK,KAAK,KAAK8B,GAAKS,EAAG,EACvBhC,EAAM,KAAK,KAAKuB,GAAKU,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKwB,GAAKQ,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAK0C,GAAKS,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAK2B,GAAKe,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKoB,GAAKgB,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKqB,GAAKc,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAKuC,GAAKe,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKwB,GAAKqB,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKiB,GAAKsB,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKkB,GAAKoB,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAKoC,GAAKqB,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKqB,EAAK2B,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKc,EAAK4B,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKe,EAAK0B,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAKiC,EAAK2B,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKkB,EAAKiC,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKW,EAAKkC,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKY,EAAKgC,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAK8B,EAAKiC,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKe,EAAKuC,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKQ,EAAKwC,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKS,EAAKsC,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAK2B,EAAKuC,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKY,EAAK6C,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKK,EAAK8C,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKM,EAAK4C,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAKwB,EAAK6C,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKS,EAAKmD,EAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKE,EAAKoD,EAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKG,EAAKkD,EAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAKqB,EAAKmD,EAAG,EAAK,EAClC,IAAIc,IAAQ1H,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAEN3E,EAAK,KAAK,KAAKiC,GAAKM,EAAG,EACvBhC,EAAM,KAAK,KAAK0B,GAAKO,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAK2B,GAAKK,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAK6C,GAAKM,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAK8B,GAAKY,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKuB,GAAKa,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKwB,GAAKW,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAK0C,GAAKY,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAK2B,GAAKkB,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKoB,GAAKmB,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKqB,GAAKiB,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAKuC,GAAKkB,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKwB,GAAKwB,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKiB,GAAKyB,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKkB,GAAKuB,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAKoC,GAAKwB,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKqB,EAAK8B,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKc,EAAK+B,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKe,EAAK6B,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAKiC,EAAK8B,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKkB,EAAKoC,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKW,EAAKqC,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKY,EAAKmC,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAK8B,EAAKoC,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKe,EAAK0C,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKQ,EAAK2C,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKS,EAAKyC,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAK2B,EAAK0C,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKY,EAAKgD,EAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKK,EAAKiD,EAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKM,EAAK+C,EAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAKwB,EAAKgD,EAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKS,EAAKsD,EAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKE,EAAKuD,EAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKG,EAAKqD,EAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAKqB,EAAKsD,EAAG,EAAK,EAClC,IAAIY,IAAQ3H,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAEN5E,EAAK,KAAK,KAAKoC,GAAKG,EAAG,EACvBhC,EAAM,KAAK,KAAK6B,GAAKI,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAK8B,GAAKE,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKgD,GAAKG,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKiC,GAAKS,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAK0B,GAAKU,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAK2B,GAAKQ,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAK6C,GAAKS,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAK8B,GAAKe,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKuB,GAAKgB,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKwB,GAAKc,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAK0C,GAAKe,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAK2B,GAAKqB,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKoB,GAAKsB,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKqB,GAAKoB,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAKuC,GAAKqB,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKwB,GAAK2B,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKiB,GAAK4B,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKkB,GAAK0B,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAKoC,GAAK2B,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKqB,EAAKiC,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKc,EAAKkC,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKe,EAAKgC,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAKiC,EAAKiC,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKkB,EAAKuC,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKW,EAAKwC,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKY,EAAKsC,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAK8B,EAAKuC,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKe,EAAK6C,EAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKQ,EAAK8C,EAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKS,EAAK4C,EAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAK2B,EAAK6C,EAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKY,EAAKmD,EAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKK,EAAKoD,EAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKM,EAAKkD,EAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAKwB,EAAKmD,EAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKS,EAAKyD,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKE,EAAK0D,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKG,EAAKwD,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAKqB,EAAKyD,EAAG,EAAK,EAClC,IAAIU,IAAQ5H,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAEN7E,EAAK,KAAK,KAAKoC,GAAKM,EAAG,EACvBnC,EAAM,KAAK,KAAK6B,GAAKO,EAAG,EACxBpC,EAAOA,EAAM,KAAK,KAAK8B,GAAKK,EAAG,EAAK,EACpCrD,EAAK,KAAK,KAAKgD,GAAKM,EAAG,EACvB3C,EAAMA,EAAK,KAAK,KAAKiC,GAAKY,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAK0B,GAAKa,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAK2B,GAAKW,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAK6C,GAAKY,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAK8B,GAAKkB,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKuB,GAAKmB,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKwB,GAAKiB,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAK0C,GAAKkB,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAK2B,GAAKwB,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKoB,GAAKyB,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKqB,GAAKuB,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAKuC,GAAKwB,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKwB,GAAK8B,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKiB,GAAK+B,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKkB,GAAK6B,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAKoC,GAAK8B,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKqB,EAAKoC,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKc,EAAKqC,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKe,EAAKmC,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAKiC,EAAKoC,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKkB,EAAK0C,EAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKW,EAAK2C,EAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKY,EAAKyC,EAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAK8B,EAAK0C,EAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKe,EAAKgD,EAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKQ,EAAKiD,EAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKS,EAAK+C,EAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAK2B,EAAKgD,EAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKY,EAAKsD,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKK,EAAKuD,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKM,EAAKqD,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAKwB,EAAKsD,EAAG,EAAK,EAClC,IAAIW,IAAS7H,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAMuE,KAAQ,IAAO,EACjDA,IAAO,SAEP9E,EAAK,KAAK,KAAKoC,GAAKS,EAAG,EACvBtC,EAAM,KAAK,KAAK6B,GAAKU,EAAG,EACxBvC,EAAOA,EAAM,KAAK,KAAK8B,GAAKQ,EAAG,EAAK,EACpCxD,EAAK,KAAK,KAAKgD,GAAKS,EAAG,EACvB9C,EAAMA,EAAK,KAAK,KAAKiC,GAAKe,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAK0B,GAAKgB,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAK2B,GAAKc,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAK6C,GAAKe,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAK8B,GAAKqB,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKuB,GAAKsB,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKwB,GAAKoB,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAK0C,GAAKqB,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAK2B,GAAK2B,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKoB,GAAK4B,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKqB,GAAK0B,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAKuC,GAAK2B,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKwB,GAAKiC,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKiB,GAAKkC,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKkB,GAAKgC,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAKoC,GAAKiC,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKqB,EAAKuC,EAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKc,EAAKwC,EAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKe,EAAKsC,EAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAKiC,EAAKuC,EAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKkB,EAAK6C,EAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKW,EAAK8C,EAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKY,EAAK4C,EAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAK8B,EAAK6C,EAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKe,EAAKmD,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKQ,EAAKoD,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKS,EAAKkD,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAK2B,EAAKmD,EAAG,EAAK,EAClC,IAAIY,IAAS9H,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAMwE,KAAQ,IAAO,EACjDA,IAAO,SAEP/E,EAAK,KAAK,KAAKoC,GAAKY,EAAG,EACvBzC,EAAM,KAAK,KAAK6B,GAAKa,EAAG,EACxB1C,EAAOA,EAAM,KAAK,KAAK8B,GAAKW,EAAG,EAAK,EACpC3D,EAAK,KAAK,KAAKgD,GAAKY,EAAG,EACvBjD,EAAMA,EAAK,KAAK,KAAKiC,GAAKkB,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAK0B,GAAKmB,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAK2B,GAAKiB,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAK6C,GAAKkB,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAK8B,GAAKwB,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKuB,GAAKyB,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKwB,GAAKuB,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAK0C,GAAKwB,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAK2B,GAAK8B,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKoB,GAAK+B,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKqB,GAAK6B,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAKuC,GAAK8B,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKwB,GAAKoC,EAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKiB,GAAKqC,EAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKkB,GAAKmC,EAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAKoC,GAAKoC,EAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKqB,EAAK0C,EAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKc,EAAK2C,EAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKe,EAAKyC,EAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAKiC,EAAK0C,EAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKkB,EAAKgD,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKW,EAAKiD,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKY,EAAK+C,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAK8B,EAAKgD,EAAG,EAAK,EAClC,IAAIa,IAAS/H,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEPhF,EAAK,KAAK,KAAKoC,GAAKe,EAAG,EACvB5C,EAAM,KAAK,KAAK6B,GAAKgB,EAAG,EACxB7C,EAAOA,EAAM,KAAK,KAAK8B,GAAKc,EAAG,EAAK,EACpC9D,EAAK,KAAK,KAAKgD,GAAKe,EAAG,EACvBpD,EAAMA,EAAK,KAAK,KAAKiC,GAAKqB,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAK0B,GAAKsB,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAK2B,GAAKoB,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAK6C,GAAKqB,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAK8B,GAAK2B,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKuB,GAAK4B,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKwB,GAAK0B,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAK0C,GAAK2B,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAK2B,GAAKiC,EAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKoB,GAAKkC,EAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKqB,GAAKgC,EAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAKuC,GAAKiC,EAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKwB,GAAKuC,EAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKiB,GAAKwC,EAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKkB,GAAKsC,EAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAKoC,GAAKuC,EAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKqB,EAAK6C,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKc,EAAK8C,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKe,EAAK4C,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAKiC,EAAK6C,EAAG,EAAK,EAClC,IAAIc,IAAShI,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEPjF,EAAK,KAAK,KAAKoC,GAAKkB,EAAG,EACvB/C,EAAM,KAAK,KAAK6B,GAAKmB,EAAG,EACxBhD,EAAOA,EAAM,KAAK,KAAK8B,GAAKiB,EAAG,EAAK,EACpCjE,EAAK,KAAK,KAAKgD,GAAKkB,EAAG,EACvBvD,EAAMA,EAAK,KAAK,KAAKiC,GAAKwB,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAK0B,GAAKyB,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAK2B,GAAKuB,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAK6C,GAAKwB,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAK8B,GAAK8B,EAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKuB,GAAK+B,EAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKwB,GAAK6B,EAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAK0C,GAAK8B,EAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAK2B,GAAKoC,EAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKoB,GAAKqC,EAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKqB,GAAKmC,EAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAKuC,GAAKoC,EAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKwB,GAAK0C,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKiB,GAAK2C,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKkB,GAAKyC,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAKoC,GAAK0C,EAAG,EAAK,EAClC,IAAIe,IAASjI,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAM2E,KAAQ,IAAO,EACjDA,IAAO,SAEPlF,EAAK,KAAK,KAAKoC,GAAKqB,EAAG,EACvBlD,EAAM,KAAK,KAAK6B,GAAKsB,EAAG,EACxBnD,EAAOA,EAAM,KAAK,KAAK8B,GAAKoB,EAAG,EAAK,EACpCpE,EAAK,KAAK,KAAKgD,GAAKqB,EAAG,EACvB1D,EAAMA,EAAK,KAAK,KAAKiC,GAAK2B,EAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAK0B,GAAK4B,EAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAK2B,GAAK0B,EAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAK6C,GAAK2B,EAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAK8B,GAAKiC,EAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKuB,GAAKkC,EAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKwB,GAAKgC,EAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAK0C,GAAKiC,EAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAK2B,GAAKuC,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKoB,GAAKwC,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKqB,GAAKsC,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAKuC,GAAKuC,EAAG,EAAK,EAClC,IAAIgB,IAASlI,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAM4E,KAAQ,IAAO,EACjDA,IAAO,SAEPnF,EAAK,KAAK,KAAKoC,GAAKwB,EAAG,EACvBrD,EAAM,KAAK,KAAK6B,GAAKyB,EAAG,EACxBtD,EAAOA,EAAM,KAAK,KAAK8B,GAAKuB,EAAG,EAAK,EACpCvE,EAAK,KAAK,KAAKgD,GAAKwB,EAAG,EACvB7D,EAAMA,EAAK,KAAK,KAAKiC,GAAK8B,EAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAK0B,GAAK+B,EAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAK2B,GAAK6B,EAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAK6C,GAAK8B,EAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAK8B,GAAKoC,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKuB,GAAKqC,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKwB,GAAKmC,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAK0C,GAAKoC,EAAG,EAAK,EAClC,IAAIiB,IAASnI,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEPpF,EAAK,KAAK,KAAKoC,GAAK2B,EAAG,EACvBxD,EAAM,KAAK,KAAK6B,GAAK4B,EAAG,EACxBzD,EAAOA,EAAM,KAAK,KAAK8B,GAAK0B,EAAG,EAAK,EACpC1E,EAAK,KAAK,KAAKgD,GAAK2B,EAAG,EACvBhE,EAAMA,EAAK,KAAK,KAAKiC,GAAKiC,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAK0B,GAAKkC,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAK2B,GAAKgC,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAK6C,GAAKiC,EAAG,EAAK,EAClC,IAAIkB,IAASpI,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAM8E,KAAQ,IAAO,EACjDA,IAAO,SAEPrF,EAAK,KAAK,KAAKoC,GAAK8B,EAAG,EACvB3D,EAAM,KAAK,KAAK6B,GAAK+B,EAAG,EACxB5D,EAAOA,EAAM,KAAK,KAAK8B,GAAK6B,EAAG,EAAK,EACpC7E,EAAK,KAAK,KAAKgD,GAAK8B,EAAG,EACvB,IAAImB,IAASrI,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtD,OAAAtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAM+E,KAAQ,IAAO,EACjDA,IAAO,SACPhF,EAAE,GAAK8D,GACP9D,EAAE,GAAK+D,GACP/D,EAAE,GAAKgE,GACPhE,EAAE,GAAKiE,GACPjE,EAAE,GAAKkE,GACPlE,EAAE,GAAKmE,GACPnE,EAAE,GAAKoE,GACPpE,EAAE,GAAKqE,GACPrE,EAAE,GAAKsE,GACPtE,EAAE,GAAKuE,GACPvE,EAAE,IAAMwE,GACRxE,EAAE,IAAMyE,GACRzE,EAAE,IAAM0E,GACR1E,EAAE,IAAM2E,GACR3E,EAAE,IAAM4E,GACR5E,EAAE,IAAM6E,GACR7E,EAAE,IAAM8E,GACR9E,EAAE,IAAM+E,GACR/E,EAAE,IAAMgF,GACJrI,IAAM,IACRqD,EAAE,IAAMrD,EACRsB,EAAI,UAECA,CACT,EAGK,KAAK,OACR8B,EAAcP,GAGhB,SAASyF,EAAUxF,EAAMzD,EAAKiC,EAAK,CACjCA,EAAI,SAAWjC,EAAI,SAAWyD,EAAK,SACnCxB,EAAI,OAASwB,EAAK,OAASzD,EAAI,OAI/B,QAFIkC,EAAQ,EACRgH,EAAU,EACLvF,EAAI,EAAGA,EAAI1B,EAAI,OAAS,EAAG0B,IAAK,CAGvC,IAAIC,EAASsF,EACbA,EAAU,EAGV,QAFIrF,EAAQ3B,EAAQ,SAChB4B,EAAO,KAAK,IAAIH,EAAG3D,EAAI,OAAS,CAAC,EAC5BK,EAAI,KAAK,IAAI,EAAGsD,EAAIF,EAAK,OAAS,CAAC,EAAGpD,GAAKyD,EAAMzD,IAAK,CAC7D,IAAID,EAAIuD,EAAItD,EACR+C,EAAIK,EAAK,MAAMrD,GAAK,EACpBwC,EAAI5C,EAAI,MAAMK,GAAK,EACnBS,EAAIsC,EAAIR,EAERc,EAAK5C,EAAI,SACb8C,EAAUA,GAAW9C,EAAI,SAAa,GAAM,EAC5C4C,EAAMA,EAAKG,EAAS,EACpBA,EAAQH,EAAK,SACbE,EAAUA,GAAUF,IAAO,IAAO,EAElCwF,GAAWtF,IAAW,GACtBA,GAAU,QACZ,CACA3B,EAAI,MAAM0B,GAAKE,EACf3B,EAAQ0B,EACRA,EAASsF,CACX,CACA,OAAIhH,IAAU,EACZD,EAAI,MAAM0B,GAAKzB,EAEfD,EAAI,SAGCA,EAAI,MAAM,CACnB,CAEA,SAASkH,EAAY1F,EAAMzD,EAAKiC,EAAK,CACnC,IAAImH,EAAO,IAAIC,EACf,OAAOD,EAAK,KAAK3F,EAAMzD,EAAKiC,CAAG,CACjC,CAEAtC,EAAG,UAAU,MAAQ,SAAgBK,EAAKiC,EAAK,CAC7C,IAAIU,EACAvB,EAAM,KAAK,OAASpB,EAAI,OAC5B,OAAI,KAAK,SAAW,IAAMA,EAAI,SAAW,GACvC2C,EAAMoB,EAAY,KAAM/D,EAAKiC,CAAG,EACvBb,EAAM,GACfuB,EAAMa,EAAW,KAAMxD,EAAKiC,CAAG,EACtBb,EAAM,KACfuB,EAAMsG,EAAS,KAAMjJ,EAAKiC,CAAG,EAE7BU,EAAMwG,EAAW,KAAMnJ,EAAKiC,CAAG,EAG1BU,CACT,EAKA,SAAS0G,EAAMC,EAAGC,EAAG,CACnB,KAAK,EAAID,EACT,KAAK,EAAIC,CACX,CAEAF,EAAK,UAAU,QAAU,SAAkBG,EAAG,CAG5C,QAFI1G,EAAI,IAAI,MAAM0G,CAAC,EACfC,EAAI9J,EAAG,UAAU,WAAW6J,CAAC,EAAI,EAC5BpJ,EAAI,EAAGA,EAAIoJ,EAAGpJ,IACrB0C,EAAE1C,GAAK,KAAK,OAAOA,EAAGqJ,EAAGD,CAAC,EAG5B,OAAO1G,CACT,EAGAuG,EAAK,UAAU,OAAS,SAAiBC,EAAGG,EAAGD,EAAG,CAChD,GAAIF,IAAM,GAAKA,IAAME,EAAI,EAAG,OAAOF,EAGnC,QADII,EAAK,EACAtJ,EAAI,EAAGA,EAAIqJ,EAAGrJ,IACrBsJ,IAAOJ,EAAI,IAAOG,EAAIrJ,EAAI,EAC1BkJ,IAAM,EAGR,OAAOI,CACT,EAIAL,EAAK,UAAU,QAAU,SAAkBM,EAAKC,EAAKC,EAAKC,EAAMC,EAAMP,EAAG,CACvE,QAASpJ,EAAI,EAAGA,EAAIoJ,EAAGpJ,IACrB0J,EAAK1J,GAAKwJ,EAAID,EAAIvJ,IAClB2J,EAAK3J,GAAKyJ,EAAIF,EAAIvJ,GAEtB,EAEAiJ,EAAK,UAAU,UAAY,SAAoBO,EAAKC,EAAKC,EAAMC,EAAMP,EAAGG,EAAK,CAC3E,KAAK,QAAQA,EAAKC,EAAKC,EAAKC,EAAMC,EAAMP,CAAC,EAEzC,QAASQ,EAAI,EAAGA,EAAIR,EAAGQ,IAAM,EAM3B,QALIP,EAAIO,GAAK,EAETC,EAAQ,KAAK,IAAI,EAAI,KAAK,GAAKR,CAAC,EAChCS,EAAQ,KAAK,IAAI,EAAI,KAAK,GAAKT,CAAC,EAE3BU,EAAI,EAAGA,EAAIX,EAAGW,GAAKV,EAI1B,QAHIW,EAASH,EACTI,EAASH,EAEJ7J,EAAI,EAAGA,EAAI2J,EAAG3J,IAAK,CAC1B,IAAIiK,EAAKR,EAAKK,EAAI9J,GACdkK,EAAKR,EAAKI,EAAI9J,GAEdmK,EAAKV,EAAKK,EAAI9J,EAAI2J,GAClBS,EAAKV,EAAKI,EAAI9J,EAAI2J,GAElBU,EAAKN,EAASI,EAAKH,EAASI,EAEhCA,EAAKL,EAASK,EAAKJ,EAASG,EAC5BA,EAAKE,EAELZ,EAAKK,EAAI9J,GAAKiK,EAAKE,EACnBT,EAAKI,EAAI9J,GAAKkK,EAAKE,EAEnBX,EAAKK,EAAI9J,EAAI2J,GAAKM,EAAKE,EACvBT,EAAKI,EAAI9J,EAAI2J,GAAKO,EAAKE,EAGnBpK,IAAMoJ,IACRiB,EAAKT,EAAQG,EAASF,EAAQG,EAE9BA,EAASJ,EAAQI,EAASH,EAAQE,EAClCA,EAASM,EAEb,CAGN,EAEArB,EAAK,UAAU,YAAc,SAAsBsB,EAAGC,EAAG,CACvD,IAAIpB,EAAI,KAAK,IAAIoB,EAAGD,CAAC,EAAI,EACrBE,EAAMrB,EAAI,EACVpJ,EAAI,EACR,IAAKoJ,EAAIA,EAAI,EAAI,EAAGA,EAAGA,EAAIA,IAAM,EAC/BpJ,IAGF,MAAO,IAAKA,EAAI,EAAIyK,CACtB,EAEAxB,EAAK,UAAU,UAAY,SAAoBO,EAAKC,EAAKL,EAAG,CAC1D,GAAI,EAAAA,GAAK,GAET,QAASpJ,EAAI,EAAGA,EAAIoJ,EAAI,EAAGpJ,IAAK,CAC9B,IAAI0C,EAAI8G,EAAIxJ,GAEZwJ,EAAIxJ,GAAKwJ,EAAIJ,EAAIpJ,EAAI,GACrBwJ,EAAIJ,EAAIpJ,EAAI,GAAK0C,EAEjBA,EAAI+G,EAAIzJ,GAERyJ,EAAIzJ,GAAK,CAACyJ,EAAIL,EAAIpJ,EAAI,GACtByJ,EAAIL,EAAIpJ,EAAI,GAAK,CAAC0C,CACpB,CACF,EAEAuG,EAAK,UAAU,aAAe,SAAuByB,EAAItB,EAAG,CAE1D,QADItH,EAAQ,EACH9B,EAAI,EAAGA,EAAIoJ,EAAI,EAAGpJ,IAAK,CAC9B,IAAIE,EAAI,KAAK,MAAMwK,EAAG,EAAI1K,EAAI,GAAKoJ,CAAC,EAAI,KACtC,KAAK,MAAMsB,EAAG,EAAI1K,GAAKoJ,CAAC,EACxBtH,EAEF4I,EAAG1K,GAAKE,EAAI,SAERA,EAAI,SACN4B,EAAQ,EAERA,EAAQ5B,EAAI,SAAY,CAE5B,CAEA,OAAOwK,CACT,EAEAzB,EAAK,UAAU,WAAa,SAAqByB,EAAI1J,EAAKwI,EAAKJ,EAAG,CAEhE,QADItH,EAAQ,EACH9B,EAAI,EAAGA,EAAIgB,EAAKhB,IACvB8B,EAAQA,GAAS4I,EAAG1K,GAAK,GAEzBwJ,EAAI,EAAIxJ,GAAK8B,EAAQ,KAAQA,EAAQA,IAAU,GAC/C0H,EAAI,EAAIxJ,EAAI,GAAK8B,EAAQ,KAAQA,EAAQA,IAAU,GAIrD,IAAK9B,EAAI,EAAIgB,EAAKhB,EAAIoJ,EAAG,EAAEpJ,EACzBwJ,EAAIxJ,GAAK,EAGXhB,EAAO8C,IAAU,CAAC,EAClB9C,GAAQ8C,EAAQ,SAAa,CAAC,CAChC,EAEAmH,EAAK,UAAU,KAAO,SAAeG,EAAG,CAEtC,QADIuB,EAAK,IAAI,MAAMvB,CAAC,EACXpJ,EAAI,EAAGA,EAAIoJ,EAAGpJ,IACrB2K,EAAG3K,GAAK,EAGV,OAAO2K,CACT,EAEA1B,EAAK,UAAU,KAAO,SAAeC,EAAGC,EAAGtH,EAAK,CAC9C,IAAIuH,EAAI,EAAI,KAAK,YAAYF,EAAE,OAAQC,EAAE,MAAM,EAE3CI,EAAM,KAAK,QAAQH,CAAC,EAEpBwB,EAAI,KAAK,KAAKxB,CAAC,EAEfI,EAAM,IAAI,MAAMJ,CAAC,EACjByB,EAAO,IAAI,MAAMzB,CAAC,EAClB0B,EAAO,IAAI,MAAM1B,CAAC,EAElB2B,EAAO,IAAI,MAAM3B,CAAC,EAClB4B,EAAQ,IAAI,MAAM5B,CAAC,EACnB6B,EAAQ,IAAI,MAAM7B,CAAC,EAEnB8B,EAAOrJ,EAAI,MACfqJ,EAAK,OAAS9B,EAEd,KAAK,WAAWF,EAAE,MAAOA,EAAE,OAAQM,EAAKJ,CAAC,EACzC,KAAK,WAAWD,EAAE,MAAOA,EAAE,OAAQ4B,EAAM3B,CAAC,EAE1C,KAAK,UAAUI,EAAKoB,EAAGC,EAAMC,EAAM1B,EAAGG,CAAG,EACzC,KAAK,UAAUwB,EAAMH,EAAGI,EAAOC,EAAO7B,EAAGG,CAAG,EAE5C,QAASvJ,EAAI,EAAGA,EAAIoJ,EAAGpJ,IAAK,CAC1B,IAAIsK,EAAKO,EAAK7K,GAAKgL,EAAMhL,GAAK8K,EAAK9K,GAAKiL,EAAMjL,GAC9C8K,EAAK9K,GAAK6K,EAAK7K,GAAKiL,EAAMjL,GAAK8K,EAAK9K,GAAKgL,EAAMhL,GAC/C6K,EAAK7K,GAAKsK,CACZ,CAEA,YAAK,UAAUO,EAAMC,EAAM1B,CAAC,EAC5B,KAAK,UAAUyB,EAAMC,EAAMI,EAAMN,EAAGxB,EAAGG,CAAG,EAC1C,KAAK,UAAU2B,EAAMN,EAAGxB,CAAC,EACzB,KAAK,aAAa8B,EAAM9B,CAAC,EAEzBvH,EAAI,SAAWqH,EAAE,SAAWC,EAAE,SAC9BtH,EAAI,OAASqH,EAAE,OAASC,EAAE,OACnBtH,EAAI,MAAM,CACnB,EAGAtC,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,IAAIiC,EAAM,IAAItC,EAAG,IAAI,EACrB,OAAAsC,EAAI,MAAQ,IAAI,MAAM,KAAK,OAASjC,EAAI,MAAM,EACvC,KAAK,MAAMA,EAAKiC,CAAG,CAC5B,EAGAtC,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,IAAIiC,EAAM,IAAItC,EAAG,IAAI,EACrB,OAAAsC,EAAI,MAAQ,IAAI,MAAM,KAAK,OAASjC,EAAI,MAAM,EACvCmJ,EAAW,KAAMnJ,EAAKiC,CAAG,CAClC,EAGAtC,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,MAAM,EAAE,MAAMA,EAAK,IAAI,CACrC,EAEAL,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CACxCZ,EAAO,OAAOY,GAAQ,QAAQ,EAC9BZ,EAAOY,EAAM,QAAS,EAItB,QADIkC,EAAQ,EACH9B,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CACpC,IAAIE,GAAK,KAAK,MAAMF,GAAK,GAAKJ,EAC1B0D,GAAMpD,EAAI,WAAc4B,EAAQ,UACpCA,IAAU,GACVA,GAAU5B,EAAI,SAAa,EAE3B4B,GAASwB,IAAO,GAChB,KAAK,MAAMtD,GAAKsD,EAAK,QACvB,CAEA,OAAIxB,IAAU,IACZ,KAAK,MAAM9B,GAAK8B,EAChB,KAAK,UAGA,IACT,EAEAvC,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAG,CAC/B,EAGAL,EAAG,UAAU,IAAM,UAAgB,CACjC,OAAO,KAAK,IAAI,IAAI,CACtB,EAGAA,EAAG,UAAU,KAAO,UAAiB,CACnC,OAAO,KAAK,KAAK,KAAK,MAAM,CAAC,CAC/B,EAGAA,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,IAAIM,EAAI0C,EAAWhD,CAAG,EACtB,GAAIM,EAAE,SAAW,EAAG,OAAO,IAAIX,EAAG,CAAC,EAInC,QADIgD,EAAM,KACDvC,EAAI,EAAGA,EAAIE,EAAE,QAChBA,EAAEF,KAAO,EADeA,IAAKuC,EAAMA,EAAI,IAAI,EAC/C,CAGF,GAAI,EAAEvC,EAAIE,EAAE,OACV,QAASuC,EAAIF,EAAI,IAAI,EAAGvC,EAAIE,EAAE,OAAQF,IAAKyC,EAAIA,EAAE,IAAI,EAC/CvC,EAAEF,KAAO,IAEbuC,EAAMA,EAAI,IAAIE,CAAC,GAInB,OAAOF,CACT,EAGAhD,EAAG,UAAU,OAAS,SAAiB4L,EAAM,CAC3CnM,EAAO,OAAOmM,GAAS,UAAYA,GAAQ,CAAC,EAC5C,IAAIzK,EAAIyK,EAAO,GACXvB,GAAKuB,EAAOzK,GAAK,GACjB0K,EAAa,WAAe,GAAK1K,GAAQ,GAAKA,EAC9CV,EAEJ,GAAIU,IAAM,EAAG,CACX,IAAIoB,EAAQ,EAEZ,IAAK9B,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CAChC,IAAIqL,EAAW,KAAK,MAAMrL,GAAKoL,EAC3B7K,GAAM,KAAK,MAAMP,GAAK,GAAKqL,GAAa3K,EAC5C,KAAK,MAAMV,GAAKO,EAAIuB,EACpBA,EAAQuJ,IAAc,GAAK3K,CAC7B,CAEIoB,IACF,KAAK,MAAM9B,GAAK8B,EAChB,KAAK,SAET,CAEA,GAAI8H,IAAM,EAAG,CACX,IAAK5J,EAAI,KAAK,OAAS,EAAGA,GAAK,EAAGA,IAChC,KAAK,MAAMA,EAAI4J,GAAK,KAAK,MAAM5J,GAGjC,IAAKA,EAAI,EAAGA,EAAI4J,EAAG5J,IACjB,KAAK,MAAMA,GAAK,EAGlB,KAAK,QAAU4J,CACjB,CAEA,OAAO,KAAK,MAAM,CACpB,EAEArK,EAAG,UAAU,MAAQ,SAAgB4L,EAAM,CAEzC,OAAAnM,EAAO,KAAK,WAAa,CAAC,EACnB,KAAK,OAAOmM,CAAI,CACzB,EAKA5L,EAAG,UAAU,OAAS,SAAiB4L,EAAMG,EAAMC,EAAU,CAC3DvM,EAAO,OAAOmM,GAAS,UAAYA,GAAQ,CAAC,EAC5C,IAAIK,EACAF,EACFE,GAAKF,EAAQA,EAAO,IAAO,GAE3BE,EAAI,EAGN,IAAI9K,EAAIyK,EAAO,GACXvB,EAAI,KAAK,KAAKuB,EAAOzK,GAAK,GAAI,KAAK,MAAM,EACzC+K,EAAO,SAAc,WAAc/K,GAAMA,EACzCgL,EAAcH,EAMlB,GAJAC,GAAK5B,EACL4B,EAAI,KAAK,IAAI,EAAGA,CAAC,EAGbE,EAAa,CACf,QAAS1L,EAAI,EAAGA,EAAI4J,EAAG5J,IACrB0L,EAAY,MAAM1L,GAAK,KAAK,MAAMA,GAEpC0L,EAAY,OAAS9B,CACvB,CAEA,GAAIA,IAAM,EAEH,GAAI,KAAK,OAASA,EAEvB,IADA,KAAK,QAAUA,EACV5J,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC3B,KAAK,MAAMA,GAAK,KAAK,MAAMA,EAAI4J,QAGjC,KAAK,MAAM,GAAK,EAChB,KAAK,OAAS,EAGhB,IAAI9H,EAAQ,EACZ,IAAK9B,EAAI,KAAK,OAAS,EAAGA,GAAK,IAAM8B,IAAU,GAAK9B,GAAKwL,GAAIxL,IAAK,CAChE,IAAIqB,EAAO,KAAK,MAAMrB,GAAK,EAC3B,KAAK,MAAMA,GAAM8B,GAAU,GAAKpB,EAAOW,IAASX,EAChDoB,EAAQT,EAAOoK,CACjB,CAGA,OAAIC,GAAe5J,IAAU,IAC3B4J,EAAY,MAAMA,EAAY,UAAY5J,GAGxC,KAAK,SAAW,IAClB,KAAK,MAAM,GAAK,EAChB,KAAK,OAAS,GAGT,KAAK,MAAM,CACpB,EAEAvC,EAAG,UAAU,MAAQ,SAAgB4L,EAAMG,EAAMC,EAAU,CAEzD,OAAAvM,EAAO,KAAK,WAAa,CAAC,EACnB,KAAK,OAAOmM,EAAMG,EAAMC,CAAQ,CACzC,EAGAhM,EAAG,UAAU,KAAO,SAAe4L,EAAM,CACvC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAI,CAChC,EAEA5L,EAAG,UAAU,MAAQ,SAAgB4L,EAAM,CACzC,OAAO,KAAK,MAAM,EAAE,OAAOA,CAAI,CACjC,EAGA5L,EAAG,UAAU,KAAO,SAAe4L,EAAM,CACvC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAI,CAChC,EAEA5L,EAAG,UAAU,MAAQ,SAAgB4L,EAAM,CACzC,OAAO,KAAK,MAAM,EAAE,OAAOA,CAAI,CACjC,EAGA5L,EAAG,UAAU,MAAQ,SAAgBsD,EAAK,CACxC7D,EAAO,OAAO6D,GAAQ,UAAYA,GAAO,CAAC,EAC1C,IAAInC,EAAImC,EAAM,GACV+G,GAAK/G,EAAMnC,GAAK,GAChB+B,EAAI,GAAK/B,EAGb,GAAI,KAAK,QAAUkJ,EAAG,MAAO,GAG7B,IAAI1J,EAAI,KAAK,MAAM0J,GAEnB,MAAO,CAAC,EAAE1J,EAAIuC,EAChB,EAGAlD,EAAG,UAAU,OAAS,SAAiB4L,EAAM,CAC3CnM,EAAO,OAAOmM,GAAS,UAAYA,GAAQ,CAAC,EAC5C,IAAIzK,EAAIyK,EAAO,GACXvB,GAAKuB,EAAOzK,GAAK,GAIrB,GAFA1B,EAAO,KAAK,WAAa,EAAG,yCAAyC,EAEjE,KAAK,QAAU4K,EACjB,OAAO,KAQT,GALIlJ,IAAM,GACRkJ,IAEF,KAAK,OAAS,KAAK,IAAIA,EAAG,KAAK,MAAM,EAEjClJ,IAAM,EAAG,CACX,IAAI+K,EAAO,SAAc,WAAc/K,GAAMA,EAC7C,KAAK,MAAM,KAAK,OAAS,IAAM+K,CACjC,CAEA,OAAO,KAAK,MAAM,CACpB,EAGAlM,EAAG,UAAU,MAAQ,SAAgB4L,EAAM,CACzC,OAAO,KAAK,MAAM,EAAE,OAAOA,CAAI,CACjC,EAGA5L,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CAGxC,OAFAZ,EAAO,OAAOY,GAAQ,QAAQ,EAC9BZ,EAAOY,EAAM,QAAS,EAClBA,EAAM,EAAU,KAAK,MAAM,CAACA,CAAG,EAG/B,KAAK,WAAa,EAChB,KAAK,SAAW,IAAM,KAAK,MAAM,GAAK,GAAKA,GAC7C,KAAK,MAAM,GAAKA,GAAO,KAAK,MAAM,GAAK,GACvC,KAAK,SAAW,EACT,OAGT,KAAK,SAAW,EAChB,KAAK,MAAMA,CAAG,EACd,KAAK,SAAW,EACT,MAIF,KAAK,OAAOA,CAAG,CACxB,EAEAL,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,KAAK,MAAM,IAAMA,EAGjB,QAASI,EAAI,EAAGA,EAAI,KAAK,QAAU,KAAK,MAAMA,IAAM,SAAWA,IAC7D,KAAK,MAAMA,IAAM,SACbA,IAAM,KAAK,OAAS,EACtB,KAAK,MAAMA,EAAI,GAAK,EAEpB,KAAK,MAAMA,EAAI,KAGnB,YAAK,OAAS,KAAK,IAAI,KAAK,OAAQA,EAAI,CAAC,EAElC,IACT,EAGAT,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CAGxC,GAFAZ,EAAO,OAAOY,GAAQ,QAAQ,EAC9BZ,EAAOY,EAAM,QAAS,EAClBA,EAAM,EAAG,OAAO,KAAK,MAAM,CAACA,CAAG,EAEnC,GAAI,KAAK,WAAa,EACpB,YAAK,SAAW,EAChB,KAAK,MAAMA,CAAG,EACd,KAAK,SAAW,EACT,KAKT,GAFA,KAAK,MAAM,IAAMA,EAEb,KAAK,SAAW,GAAK,KAAK,MAAM,GAAK,EACvC,KAAK,MAAM,GAAK,CAAC,KAAK,MAAM,GAC5B,KAAK,SAAW,MAGhB,SAASI,EAAI,EAAGA,EAAI,KAAK,QAAU,KAAK,MAAMA,GAAK,EAAGA,IACpD,KAAK,MAAMA,IAAM,SACjB,KAAK,MAAMA,EAAI,IAAM,EAIzB,OAAO,KAAK,MAAM,CACpB,EAEAT,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAG,CAC/B,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAG,CAC/B,EAEAL,EAAG,UAAU,KAAO,UAAiB,CACnC,YAAK,SAAW,EAET,IACT,EAEAA,EAAG,UAAU,IAAM,UAAgB,CACjC,OAAO,KAAK,MAAM,EAAE,KAAK,CAC3B,EAEAA,EAAG,UAAU,aAAe,SAAuBK,EAAKmB,EAAK4K,EAAO,CAClE,IAAI3K,EAAMpB,EAAI,OAAS+L,EACnB3L,EAEJ,KAAK,QAAQgB,CAAG,EAEhB,IAAId,EACA4B,EAAQ,EACZ,IAAK9B,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAAK,CAC/BE,GAAK,KAAK,MAAMF,EAAI2L,GAAS,GAAK7J,EAClC,IAAIhC,GAASF,EAAI,MAAMI,GAAK,GAAKe,EACjCb,GAAKJ,EAAQ,SACbgC,GAAS5B,GAAK,KAAQJ,EAAQ,SAAa,GAC3C,KAAK,MAAME,EAAI2L,GAASzL,EAAI,QAC9B,CACA,KAAOF,EAAI,KAAK,OAAS2L,EAAO3L,IAC9BE,GAAK,KAAK,MAAMF,EAAI2L,GAAS,GAAK7J,EAClCA,EAAQ5B,GAAK,GACb,KAAK,MAAMF,EAAI2L,GAASzL,EAAI,SAG9B,GAAI4B,IAAU,EAAG,OAAO,KAAK,MAAM,EAKnC,IAFA9C,EAAO8C,IAAU,EAAE,EACnBA,EAAQ,EACH9B,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC3BE,EAAI,EAAE,KAAK,MAAMF,GAAK,GAAK8B,EAC3BA,EAAQ5B,GAAK,GACb,KAAK,MAAMF,GAAKE,EAAI,SAEtB,YAAK,SAAW,EAET,KAAK,MAAM,CACpB,EAEAX,EAAG,UAAU,SAAW,SAAmBK,EAAKgM,EAAM,CACpD,IAAID,EAAQ,KAAK,OAAS/L,EAAI,OAE1BoD,EAAI,KAAK,MAAM,EACfR,EAAI5C,EAGJiM,EAAMrJ,EAAE,MAAMA,EAAE,OAAS,GAAK,EAC9BsJ,EAAU,KAAK,WAAWD,CAAG,EACjCF,EAAQ,GAAKG,EACTH,IAAU,IACZnJ,EAAIA,EAAE,MAAMmJ,CAAK,EACjB3I,EAAE,OAAO2I,CAAK,EACdE,EAAMrJ,EAAE,MAAMA,EAAE,OAAS,GAAK,GAIhC,IAAIgI,EAAIxH,EAAE,OAASR,EAAE,OACjBC,EAEJ,GAAImJ,IAAS,MAAO,CAClBnJ,EAAI,IAAIlD,EAAG,IAAI,EACfkD,EAAE,OAAS+H,EAAI,EACf/H,EAAE,MAAQ,IAAI,MAAMA,EAAE,MAAM,EAC5B,QAASzC,EAAI,EAAGA,EAAIyC,EAAE,OAAQzC,IAC5ByC,EAAE,MAAMzC,GAAK,CAEjB,CAEA,IAAI+L,EAAO/I,EAAE,MAAM,EAAE,aAAaR,EAAG,EAAGgI,CAAC,EACrCuB,EAAK,WAAa,IACpB/I,EAAI+I,EACAtJ,IACFA,EAAE,MAAM+H,GAAK,IAIjB,QAASvK,EAAIuK,EAAI,EAAGvK,GAAK,EAAGA,IAAK,CAC/B,IAAI+L,GAAMhJ,EAAE,MAAMR,EAAE,OAASvC,GAAK,GAAK,UACpC+C,EAAE,MAAMR,EAAE,OAASvC,EAAI,GAAK,GAO/B,IAHA+L,EAAK,KAAK,IAAKA,EAAKH,EAAO,EAAG,QAAS,EAEvC7I,EAAE,aAAaR,EAAGwJ,EAAI/L,CAAC,EAChB+C,EAAE,WAAa,GACpBgJ,IACAhJ,EAAE,SAAW,EACbA,EAAE,aAAaR,EAAG,EAAGvC,CAAC,EACjB+C,EAAE,OAAO,IACZA,EAAE,UAAY,GAGdP,IACFA,EAAE,MAAMxC,GAAK+L,EAEjB,CACA,OAAIvJ,GACFA,EAAE,MAAM,EAEVO,EAAE,MAAM,EAGJ4I,IAAS,OAASD,IAAU,GAC9B3I,EAAE,OAAO2I,CAAK,EAGT,CACL,IAAKlJ,GAAK,KACV,IAAKO,CACP,CACF,EAMAzD,EAAG,UAAU,OAAS,SAAiBK,EAAKgM,EAAMK,EAAU,CAG1D,GAFAjN,EAAO,CAACY,EAAI,OAAO,CAAC,EAEhB,KAAK,OAAO,EACd,MAAO,CACL,IAAK,IAAIL,EAAG,CAAC,EACb,IAAK,IAAIA,EAAG,CAAC,CACf,EAGF,IAAI2M,EAAK9K,EAAKmB,EACd,OAAI,KAAK,WAAa,GAAK3C,EAAI,WAAa,GAC1C2C,EAAM,KAAK,IAAI,EAAE,OAAO3C,EAAKgM,CAAI,EAE7BA,IAAS,QACXM,EAAM3J,EAAI,IAAI,IAAI,GAGhBqJ,IAAS,QACXxK,EAAMmB,EAAI,IAAI,IAAI,EACd0J,GAAY7K,EAAI,WAAa,GAC/BA,EAAI,KAAKxB,CAAG,GAIT,CACL,IAAKsM,EACL,IAAK9K,CACP,GAGE,KAAK,WAAa,GAAKxB,EAAI,WAAa,GAC1C2C,EAAM,KAAK,OAAO3C,EAAI,IAAI,EAAGgM,CAAI,EAE7BA,IAAS,QACXM,EAAM3J,EAAI,IAAI,IAAI,GAGb,CACL,IAAK2J,EACL,IAAK3J,EAAI,GACX,IAGG,KAAK,SAAW3C,EAAI,YAAc,GACrC2C,EAAM,KAAK,IAAI,EAAE,OAAO3C,EAAI,IAAI,EAAGgM,CAAI,EAEnCA,IAAS,QACXxK,EAAMmB,EAAI,IAAI,IAAI,EACd0J,GAAY7K,EAAI,WAAa,GAC/BA,EAAI,KAAKxB,CAAG,GAIT,CACL,IAAK2C,EAAI,IACT,IAAKnB,CACP,GAMExB,EAAI,OAAS,KAAK,QAAU,KAAK,IAAIA,CAAG,EAAI,EACvC,CACL,IAAK,IAAIL,EAAG,CAAC,EACb,IAAK,IACP,EAIEK,EAAI,SAAW,EACbgM,IAAS,MACJ,CACL,IAAK,KAAK,KAAKhM,EAAI,MAAM,EAAE,EAC3B,IAAK,IACP,EAGEgM,IAAS,MACJ,CACL,IAAK,KACL,IAAK,IAAIrM,EAAG,KAAK,KAAKK,EAAI,MAAM,EAAE,CAAC,CACrC,EAGK,CACL,IAAK,KAAK,KAAKA,EAAI,MAAM,EAAE,EAC3B,IAAK,IAAIL,EAAG,KAAK,KAAKK,EAAI,MAAM,EAAE,CAAC,CACrC,EAGK,KAAK,SAASA,EAAKgM,CAAI,CAChC,EAGArM,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,OAAOA,EAAK,MAAO,EAAK,EAAE,GACxC,EAGAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,OAAOA,EAAK,MAAO,EAAK,EAAE,GACxC,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,OAAOA,EAAK,MAAO,EAAI,EAAE,GACvC,EAGAL,EAAG,UAAU,SAAW,SAAmBK,EAAK,CAC9C,IAAIuM,EAAK,KAAK,OAAOvM,CAAG,EAGxB,GAAIuM,EAAG,IAAI,OAAO,EAAG,OAAOA,EAAG,IAE/B,IAAI/K,EAAM+K,EAAG,IAAI,WAAa,EAAIA,EAAG,IAAI,KAAKvM,CAAG,EAAIuM,EAAG,IAEpDC,EAAOxM,EAAI,MAAM,CAAC,EAClByM,EAAKzM,EAAI,MAAM,CAAC,EAChBuD,EAAM/B,EAAI,IAAIgL,CAAI,EAGtB,OAAIjJ,EAAM,GAAKkJ,IAAO,GAAKlJ,IAAQ,EAAUgJ,EAAG,IAGzCA,EAAG,IAAI,WAAa,EAAIA,EAAG,IAAI,MAAM,CAAC,EAAIA,EAAG,IAAI,MAAM,CAAC,CACjE,EAEA5M,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtCZ,EAAOY,GAAO,QAAS,EAIvB,QAHImK,GAAK,GAAK,IAAMnK,EAEhB0M,EAAM,EACDtM,EAAI,KAAK,OAAS,EAAGA,GAAK,EAAGA,IACpCsM,GAAOvC,EAAIuC,GAAO,KAAK,MAAMtM,GAAK,IAAMJ,EAG1C,OAAO0M,CACT,EAGA/M,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CACxCZ,EAAOY,GAAO,QAAS,EAGvB,QADIkC,EAAQ,EACH9B,EAAI,KAAK,OAAS,EAAGA,GAAK,EAAGA,IAAK,CACzC,IAAIE,GAAK,KAAK,MAAMF,GAAK,GAAK8B,EAAQ,SACtC,KAAK,MAAM9B,GAAME,EAAIN,EAAO,EAC5BkC,EAAQ5B,EAAIN,CACd,CAEA,OAAO,KAAK,MAAM,CACpB,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAG,CAC/B,EAEAL,EAAG,UAAU,KAAO,SAAewK,EAAG,CACpC/K,EAAO+K,EAAE,WAAa,CAAC,EACvB/K,EAAO,CAAC+K,EAAE,OAAO,CAAC,EAElB,IAAIb,EAAI,KACJC,EAAIY,EAAE,MAAM,EAEZb,EAAE,WAAa,EACjBA,EAAIA,EAAE,KAAKa,CAAC,EAEZb,EAAIA,EAAE,MAAM,EAad,QATIqD,EAAI,IAAIhN,EAAG,CAAC,EACZiN,EAAI,IAAIjN,EAAG,CAAC,EAGZkN,EAAI,IAAIlN,EAAG,CAAC,EACZmN,EAAI,IAAInN,EAAG,CAAC,EAEZoN,EAAI,EAEDzD,EAAE,OAAO,GAAKC,EAAE,OAAO,GAC5BD,EAAE,OAAO,CAAC,EACVC,EAAE,OAAO,CAAC,EACV,EAAEwD,EAMJ,QAHIC,EAAKzD,EAAE,MAAM,EACb0D,EAAK3D,EAAE,MAAM,EAEV,CAACA,EAAE,OAAO,GAAG,CAClB,QAASlJ,EAAI,EAAG8M,EAAK,GAAI5D,EAAE,MAAM,GAAK4D,KAAQ,GAAK9M,EAAI,GAAI,EAAEA,EAAG8M,IAAO,EAAE,CACzE,GAAI9M,EAAI,EAEN,IADAkJ,EAAE,OAAOlJ,CAAC,EACHA,KAAM,IACPuM,EAAE,MAAM,GAAKC,EAAE,MAAM,KACvBD,EAAE,KAAKK,CAAE,EACTJ,EAAE,KAAKK,CAAE,GAGXN,EAAE,OAAO,CAAC,EACVC,EAAE,OAAO,CAAC,EAId,QAASvM,EAAI,EAAG8M,EAAK,GAAI5D,EAAE,MAAM,GAAK4D,KAAQ,GAAK9M,EAAI,GAAI,EAAEA,EAAG8M,IAAO,EAAE,CACzE,GAAI9M,EAAI,EAEN,IADAkJ,EAAE,OAAOlJ,CAAC,EACHA,KAAM,IACPwM,EAAE,MAAM,GAAKC,EAAE,MAAM,KACvBD,EAAE,KAAKG,CAAE,EACTF,EAAE,KAAKG,CAAE,GAGXJ,EAAE,OAAO,CAAC,EACVC,EAAE,OAAO,CAAC,EAIVxD,EAAE,IAAIC,CAAC,GAAK,GACdD,EAAE,KAAKC,CAAC,EACRoD,EAAE,KAAKE,CAAC,EACRD,EAAE,KAAKE,CAAC,IAERvD,EAAE,KAAKD,CAAC,EACRuD,EAAE,KAAKF,CAAC,EACRG,EAAE,KAAKF,CAAC,EAEZ,CAEA,MAAO,CACL,EAAGC,EACH,EAAGC,EACH,IAAKvD,EAAE,OAAOwD,CAAC,CACjB,CACF,EAKApN,EAAG,UAAU,OAAS,SAAiBwK,EAAG,CACxC/K,EAAO+K,EAAE,WAAa,CAAC,EACvB/K,EAAO,CAAC+K,EAAE,OAAO,CAAC,EAElB,IAAI/G,EAAI,KACJ,EAAI+G,EAAE,MAAM,EAEZ/G,EAAE,WAAa,EACjBA,EAAIA,EAAE,KAAK+G,CAAC,EAEZ/G,EAAIA,EAAE,MAAM,EAQd,QALIgK,EAAK,IAAIzN,EAAG,CAAC,EACb0N,EAAK,IAAI1N,EAAG,CAAC,EAEb2N,EAAQ,EAAE,MAAM,EAEblK,EAAE,KAAK,CAAC,EAAI,GAAK,EAAE,KAAK,CAAC,EAAI,GAAG,CACrC,QAAShD,EAAI,EAAG8M,EAAK,GAAI9J,EAAE,MAAM,GAAK8J,KAAQ,GAAK9M,EAAI,GAAI,EAAEA,EAAG8M,IAAO,EAAE,CACzE,GAAI9M,EAAI,EAEN,IADAgD,EAAE,OAAOhD,CAAC,EACHA,KAAM,GACPgN,EAAG,MAAM,GACXA,EAAG,KAAKE,CAAK,EAGfF,EAAG,OAAO,CAAC,EAIf,QAAS/M,EAAI,EAAG8M,EAAK,GAAI,EAAE,MAAM,GAAKA,KAAQ,GAAK9M,EAAI,GAAI,EAAEA,EAAG8M,IAAO,EAAE,CACzE,GAAI9M,EAAI,EAEN,IADA,EAAE,OAAOA,CAAC,EACHA,KAAM,GACPgN,EAAG,MAAM,GACXA,EAAG,KAAKC,CAAK,EAGfD,EAAG,OAAO,CAAC,EAIXjK,EAAE,IAAI,CAAC,GAAK,GACdA,EAAE,KAAK,CAAC,EACRgK,EAAG,KAAKC,CAAE,IAEV,EAAE,KAAKjK,CAAC,EACRiK,EAAG,KAAKD,CAAE,EAEd,CAEA,IAAIzK,EACJ,OAAIS,EAAE,KAAK,CAAC,IAAM,EAChBT,EAAMyK,EAENzK,EAAM0K,EAGJ1K,EAAI,KAAK,CAAC,EAAI,GAChBA,EAAI,KAAKwH,CAAC,EAGLxH,CACT,EAEAhD,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,GAAI,KAAK,OAAO,EAAG,OAAOA,EAAI,IAAI,EAClC,GAAIA,EAAI,OAAO,EAAG,OAAO,KAAK,IAAI,EAElC,IAAIoD,EAAI,KAAK,MAAM,EACf,EAAIpD,EAAI,MAAM,EAClBoD,EAAE,SAAW,EACb,EAAE,SAAW,EAGb,QAAS2I,EAAQ,EAAG3I,EAAE,OAAO,GAAK,EAAE,OAAO,EAAG2I,IAC5C3I,EAAE,OAAO,CAAC,EACV,EAAE,OAAO,CAAC,EAGZ,EAAG,CACD,KAAOA,EAAE,OAAO,GACdA,EAAE,OAAO,CAAC,EAEZ,KAAO,EAAE,OAAO,GACd,EAAE,OAAO,CAAC,EAGZ,IAAItC,EAAIsC,EAAE,IAAI,CAAC,EACf,GAAItC,EAAI,EAAG,CAET,IAAIgC,EAAIM,EACRA,EAAI,EACJ,EAAIN,CACN,SAAWhC,IAAM,GAAK,EAAE,KAAK,CAAC,IAAM,EAClC,MAGFsC,EAAE,KAAK,CAAC,CACV,OAAS,IAET,OAAO,EAAE,OAAO2I,CAAK,CACvB,EAGApM,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,KAAKA,CAAG,EAAE,EAAE,KAAKA,CAAG,CAClC,EAEAL,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAQ,KAAK,MAAM,GAAK,KAAO,CACjC,EAEAA,EAAG,UAAU,MAAQ,UAAkB,CACrC,OAAQ,KAAK,MAAM,GAAK,KAAO,CACjC,EAGAA,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CACxC,OAAO,KAAK,MAAM,GAAKA,CACzB,EAGAL,EAAG,UAAU,MAAQ,SAAgBsD,EAAK,CACxC7D,EAAO,OAAO6D,GAAQ,QAAQ,EAC9B,IAAInC,EAAImC,EAAM,GACV+G,GAAK/G,EAAMnC,GAAK,GAChB+B,EAAI,GAAK/B,EAGb,GAAI,KAAK,QAAUkJ,EACjB,YAAK,QAAQA,EAAI,CAAC,EAClB,KAAK,MAAMA,IAAMnH,EACV,KAKT,QADIX,EAAQW,EACHzC,EAAI4J,EAAG9H,IAAU,GAAK9B,EAAI,KAAK,OAAQA,IAAK,CACnD,IAAIE,EAAI,KAAK,MAAMF,GAAK,EACxBE,GAAK4B,EACLA,EAAQ5B,IAAM,GACdA,GAAK,SACL,KAAK,MAAMF,GAAKE,CAClB,CACA,OAAI4B,IAAU,IACZ,KAAK,MAAM9B,GAAK8B,EAChB,KAAK,UAEA,IACT,EAEAvC,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAO,KAAK,SAAW,GAAK,KAAK,MAAM,KAAO,CAChD,EAEAA,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,IAAIuN,EAAWvN,EAAM,EAErB,GAAI,KAAK,WAAa,GAAK,CAACuN,EAAU,MAAO,GAC7C,GAAI,KAAK,WAAa,GAAKA,EAAU,MAAO,GAE5C,KAAK,MAAM,EAEX,IAAI5K,EACJ,GAAI,KAAK,OAAS,EAChBA,EAAM,MACD,CACD4K,IACFvN,EAAM,CAACA,GAGTZ,EAAOY,GAAO,SAAW,mBAAmB,EAE5C,IAAIM,EAAI,KAAK,MAAM,GAAK,EACxBqC,EAAMrC,IAAMN,EAAM,EAAIM,EAAIN,EAAM,GAAK,CACvC,CACA,OAAI,KAAK,WAAa,EAAU,CAAC2C,EAAM,EAChCA,CACT,EAMAhD,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,GAAI,KAAK,WAAa,GAAKA,EAAI,WAAa,EAAG,MAAO,GACtD,GAAI,KAAK,WAAa,GAAKA,EAAI,WAAa,EAAG,MAAO,GAEtD,IAAI2C,EAAM,KAAK,KAAK3C,CAAG,EACvB,OAAI,KAAK,WAAa,EAAU,CAAC2C,EAAM,EAChCA,CACT,EAGAhD,EAAG,UAAU,KAAO,SAAeK,EAAK,CAEtC,GAAI,KAAK,OAASA,EAAI,OAAQ,MAAO,GACrC,GAAI,KAAK,OAASA,EAAI,OAAQ,MAAO,GAGrC,QADI2C,EAAM,EACDvC,EAAI,KAAK,OAAS,EAAGA,GAAK,EAAGA,IAAK,CACzC,IAAIgD,EAAI,KAAK,MAAMhD,GAAK,EACpBwC,EAAI5C,EAAI,MAAMI,GAAK,EAEvB,GAAIgD,IAAMR,EACV,CAAIQ,EAAIR,EACND,EAAM,GACGS,EAAIR,IACbD,EAAM,GAER,MACF,CACA,OAAOA,CACT,EAEAhD,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,KAAKA,CAAG,IAAM,CAC5B,EAEAL,EAAG,UAAU,GAAK,SAAaK,EAAK,CAClC,OAAO,KAAK,IAAIA,CAAG,IAAM,CAC3B,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,KAAKA,CAAG,GAAK,CAC3B,EAEAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,IAAIA,CAAG,GAAK,CAC1B,EAEAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,KAAKA,CAAG,IAAM,EAC5B,EAEAL,EAAG,UAAU,GAAK,SAAaK,EAAK,CAClC,OAAO,KAAK,IAAIA,CAAG,IAAM,EAC3B,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,KAAKA,CAAG,GAAK,CAC3B,EAEAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,IAAIA,CAAG,GAAK,CAC1B,EAEAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,KAAKA,CAAG,IAAM,CAC5B,EAEAL,EAAG,UAAU,GAAK,SAAaK,EAAK,CAClC,OAAO,KAAK,IAAIA,CAAG,IAAM,CAC3B,EAMAL,EAAG,IAAM,SAAcK,EAAK,CAC1B,OAAO,IAAIwN,EAAIxN,CAAG,CACpB,EAEAL,EAAG,UAAU,MAAQ,SAAgB8N,EAAK,CACxC,OAAArO,EAAO,CAAC,KAAK,IAAK,uCAAuC,EACzDA,EAAO,KAAK,WAAa,EAAG,+BAA+B,EACpDqO,EAAI,UAAU,IAAI,EAAE,UAAUA,CAAG,CAC1C,EAEA9N,EAAG,UAAU,QAAU,UAAoB,CACzC,OAAAP,EAAO,KAAK,IAAK,sDAAsD,EAChE,KAAK,IAAI,YAAY,IAAI,CAClC,EAEAO,EAAG,UAAU,UAAY,SAAoB8N,EAAK,CAChD,YAAK,IAAMA,EACJ,IACT,EAEA9N,EAAG,UAAU,SAAW,SAAmB8N,EAAK,CAC9C,OAAArO,EAAO,CAAC,KAAK,IAAK,uCAAuC,EAClD,KAAK,UAAUqO,CAAG,CAC3B,EAEA9N,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EAC9C,KAAK,IAAI,IAAI,KAAMY,CAAG,CAC/B,EAEAL,EAAG,UAAU,QAAU,SAAkBK,EAAK,CAC5C,OAAAZ,EAAO,KAAK,IAAK,qCAAqC,EAC/C,KAAK,IAAI,KAAK,KAAMY,CAAG,CAChC,EAEAL,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EAC9C,KAAK,IAAI,IAAI,KAAMY,CAAG,CAC/B,EAEAL,EAAG,UAAU,QAAU,SAAkBK,EAAK,CAC5C,OAAAZ,EAAO,KAAK,IAAK,qCAAqC,EAC/C,KAAK,IAAI,KAAK,KAAMY,CAAG,CAChC,EAEAL,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EAC9C,KAAK,IAAI,IAAI,KAAMY,CAAG,CAC/B,EAEAL,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,KAAMY,CAAG,EACpB,KAAK,IAAI,IAAI,KAAMA,CAAG,CAC/B,EAEAL,EAAG,UAAU,QAAU,SAAkBK,EAAK,CAC5C,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,KAAMY,CAAG,EACpB,KAAK,IAAI,KAAK,KAAMA,CAAG,CAChC,EAEAL,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAAP,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,IAAI,IAAI,CAC1B,EAEAO,EAAG,UAAU,QAAU,UAAoB,CACzC,OAAAP,EAAO,KAAK,IAAK,qCAAqC,EACtD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,KAAK,IAAI,CAC3B,EAGAO,EAAG,UAAU,QAAU,UAAoB,CACzC,OAAAP,EAAO,KAAK,IAAK,qCAAqC,EACtD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,KAAK,IAAI,CAC3B,EAEAO,EAAG,UAAU,QAAU,UAAoB,CACzC,OAAAP,EAAO,KAAK,IAAK,qCAAqC,EACtD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,KAAK,IAAI,CAC3B,EAGAO,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAAP,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,IAAI,IAAI,CAC1B,EAEAO,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,OAAAZ,EAAO,KAAK,KAAO,CAACY,EAAI,IAAK,mBAAmB,EAChD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,IAAI,KAAMA,CAAG,CAC/B,EAGA,IAAI0N,EAAS,CACX,KAAM,KACN,KAAM,KACN,KAAM,KACN,OAAQ,IACV,EAGA,SAASC,EAAQC,EAAMzD,EAAG,CAExB,KAAK,KAAOyD,EACZ,KAAK,EAAI,IAAIjO,EAAGwK,EAAG,EAAE,EACrB,KAAK,EAAI,KAAK,EAAE,UAAU,EAC1B,KAAK,EAAI,IAAIxK,EAAG,CAAC,EAAE,OAAO,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAE7C,KAAK,IAAM,KAAK,KAAK,CACvB,CAEAgO,EAAO,UAAU,KAAO,UAAiB,CACvC,IAAIE,EAAM,IAAIlO,EAAG,IAAI,EACrB,OAAAkO,EAAI,MAAQ,IAAI,MAAM,KAAK,KAAK,KAAK,EAAI,EAAE,CAAC,EACrCA,CACT,EAEAF,EAAO,UAAU,QAAU,SAAkB3N,EAAK,CAGhD,IAAIc,EAAId,EACJ8N,EAEJ,GACE,KAAK,MAAMhN,EAAG,KAAK,GAAG,EACtBA,EAAI,KAAK,MAAMA,CAAC,EAChBA,EAAIA,EAAE,KAAK,KAAK,GAAG,EACnBgN,EAAOhN,EAAE,UAAU,QACZgN,EAAO,KAAK,GAErB,IAAIvK,EAAMuK,EAAO,KAAK,EAAI,GAAKhN,EAAE,KAAK,KAAK,CAAC,EAC5C,OAAIyC,IAAQ,GACVzC,EAAE,MAAM,GAAK,EACbA,EAAE,OAAS,GACFyC,EAAM,EACfzC,EAAE,KAAK,KAAK,CAAC,EAETA,EAAE,QAAU,OAEdA,EAAE,MAAM,EAGRA,EAAE,OAAO,EAINA,CACT,EAEA6M,EAAO,UAAU,MAAQ,SAAgBI,EAAO9L,EAAK,CACnD8L,EAAM,OAAO,KAAK,EAAG,EAAG9L,CAAG,CAC7B,EAEA0L,EAAO,UAAU,MAAQ,SAAgB3N,EAAK,CAC5C,OAAOA,EAAI,KAAK,KAAK,CAAC,CACxB,EAEA,SAASgO,GAAQ,CACfL,EAAO,KACL,KACA,OACA,yEAAyE,CAC7E,CACApO,EAASyO,EAAML,CAAM,EAErBK,EAAK,UAAU,MAAQ,SAAgBD,EAAOE,EAAQ,CAKpD,QAHIpC,EAAO,QAEPqC,EAAS,KAAK,IAAIH,EAAM,OAAQ,CAAC,EAC5B3N,EAAI,EAAGA,EAAI8N,EAAQ9N,IAC1B6N,EAAO,MAAM7N,GAAK2N,EAAM,MAAM3N,GAIhC,GAFA6N,EAAO,OAASC,EAEZH,EAAM,QAAU,EAAG,CACrBA,EAAM,MAAM,GAAK,EACjBA,EAAM,OAAS,EACf,MACF,CAGA,IAAII,EAAOJ,EAAM,MAAM,GAGvB,IAFAE,EAAO,MAAMA,EAAO,UAAYE,EAAOtC,EAElCzL,EAAI,GAAIA,EAAI2N,EAAM,OAAQ3N,IAAK,CAClC,IAAIgO,EAAOL,EAAM,MAAM3N,GAAK,EAC5B2N,EAAM,MAAM3N,EAAI,KAAQgO,EAAOvC,IAAS,EAAMsC,IAAS,GACvDA,EAAOC,CACT,CACAD,KAAU,GACVJ,EAAM,MAAM3N,EAAI,IAAM+N,EAClBA,IAAS,GAAKJ,EAAM,OAAS,GAC/BA,EAAM,QAAU,GAEhBA,EAAM,QAAU,CAEpB,EAEAC,EAAK,UAAU,MAAQ,SAAgBhO,EAAK,CAE1CA,EAAI,MAAMA,EAAI,QAAU,EACxBA,EAAI,MAAMA,EAAI,OAAS,GAAK,EAC5BA,EAAI,QAAU,EAId,QADI0D,EAAK,EACAtD,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAAK,CACnC,IAAIE,EAAIN,EAAI,MAAMI,GAAK,EACvBsD,GAAMpD,EAAI,IACVN,EAAI,MAAMI,GAAKsD,EAAK,SACpBA,EAAKpD,EAAI,IAASoD,EAAK,SAAa,EACtC,CAGA,OAAI1D,EAAI,MAAMA,EAAI,OAAS,KAAO,IAChCA,EAAI,SACAA,EAAI,MAAMA,EAAI,OAAS,KAAO,GAChCA,EAAI,UAGDA,CACT,EAEA,SAASqO,GAAQ,CACfV,EAAO,KACL,KACA,OACA,gEAAgE,CACpE,CACApO,EAAS8O,EAAMV,CAAM,EAErB,SAASW,GAAQ,CACfX,EAAO,KACL,KACA,OACA,uDAAuD,CAC3D,CACApO,EAAS+O,EAAMX,CAAM,EAErB,SAASY,GAAU,CAEjBZ,EAAO,KACL,KACA,QACA,qEAAqE,CACzE,CACApO,EAASgP,EAAQZ,CAAM,EAEvBY,EAAO,UAAU,MAAQ,SAAgBvO,EAAK,CAG5C,QADIkC,EAAQ,EACH9B,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAAK,CACnC,IAAI2C,GAAM/C,EAAI,MAAMI,GAAK,GAAK,GAAO8B,EACjCwB,EAAKX,EAAK,SACdA,KAAQ,GAER/C,EAAI,MAAMI,GAAKsD,EACfxB,EAAQa,CACV,CACA,OAAIb,IAAU,IACZlC,EAAI,MAAMA,EAAI,UAAYkC,GAErBlC,CACT,EAGAL,EAAG,OAAS,SAAgBiO,EAAM,CAEhC,GAAIF,EAAOE,GAAO,OAAOF,EAAOE,GAEhC,IAAIY,EACJ,GAAIZ,IAAS,OACXY,EAAQ,IAAIR,UACHJ,IAAS,OAClBY,EAAQ,IAAIH,UACHT,IAAS,OAClBY,EAAQ,IAAIF,UACHV,IAAS,SAClBY,EAAQ,IAAID,MAEZ,OAAM,IAAI,MAAM,iBAAmBX,CAAI,EAEzC,OAAAF,EAAOE,GAAQY,EAERA,CACT,EAKA,SAAShB,EAAK5C,EAAG,CACf,GAAI,OAAOA,GAAM,SAAU,CACzB,IAAI4D,EAAQ7O,EAAG,OAAOiL,CAAC,EACvB,KAAK,EAAI4D,EAAM,EACf,KAAK,MAAQA,CACf,MACEpP,EAAOwL,EAAE,IAAI,CAAC,EAAG,gCAAgC,EACjD,KAAK,EAAIA,EACT,KAAK,MAAQ,IAEjB,CAEA4C,EAAI,UAAU,SAAW,SAAmBpK,EAAG,CAC7ChE,EAAOgE,EAAE,WAAa,EAAG,+BAA+B,EACxDhE,EAAOgE,EAAE,IAAK,iCAAiC,CACjD,EAEAoK,EAAI,UAAU,SAAW,SAAmBpK,EAAGR,EAAG,CAChDxD,GAAQgE,EAAE,SAAWR,EAAE,YAAc,EAAG,+BAA+B,EACvExD,EAAOgE,EAAE,KAAOA,EAAE,MAAQR,EAAE,IAC1B,iCAAiC,CACrC,EAEA4K,EAAI,UAAU,KAAO,SAAepK,EAAG,CACrC,OAAI,KAAK,MAAc,KAAK,MAAM,QAAQA,CAAC,EAAE,UAAU,IAAI,EACpDA,EAAE,KAAK,KAAK,CAAC,EAAE,UAAU,IAAI,CACtC,EAEAoK,EAAI,UAAU,IAAM,SAAcpK,EAAG,CACnC,OAAIA,EAAE,OAAO,EACJA,EAAE,MAAM,EAGV,KAAK,EAAE,IAAIA,CAAC,EAAE,UAAU,IAAI,CACrC,EAEAoK,EAAI,UAAU,IAAM,SAAcpK,EAAGR,EAAG,CACtC,KAAK,SAASQ,EAAGR,CAAC,EAElB,IAAID,EAAMS,EAAE,IAAIR,CAAC,EACjB,OAAID,EAAI,IAAI,KAAK,CAAC,GAAK,GACrBA,EAAI,KAAK,KAAK,CAAC,EAEVA,EAAI,UAAU,IAAI,CAC3B,EAEA6K,EAAI,UAAU,KAAO,SAAepK,EAAGR,EAAG,CACxC,KAAK,SAASQ,EAAGR,CAAC,EAElB,IAAID,EAAMS,EAAE,KAAKR,CAAC,EAClB,OAAID,EAAI,IAAI,KAAK,CAAC,GAAK,GACrBA,EAAI,KAAK,KAAK,CAAC,EAEVA,CACT,EAEA6K,EAAI,UAAU,IAAM,SAAcpK,EAAGR,EAAG,CACtC,KAAK,SAASQ,EAAGR,CAAC,EAElB,IAAID,EAAMS,EAAE,IAAIR,CAAC,EACjB,OAAID,EAAI,KAAK,CAAC,EAAI,GAChBA,EAAI,KAAK,KAAK,CAAC,EAEVA,EAAI,UAAU,IAAI,CAC3B,EAEA6K,EAAI,UAAU,KAAO,SAAepK,EAAGR,EAAG,CACxC,KAAK,SAASQ,EAAGR,CAAC,EAElB,IAAID,EAAMS,EAAE,KAAKR,CAAC,EAClB,OAAID,EAAI,KAAK,CAAC,EAAI,GAChBA,EAAI,KAAK,KAAK,CAAC,EAEVA,CACT,EAEA6K,EAAI,UAAU,IAAM,SAAcpK,EAAGpD,EAAK,CACxC,YAAK,SAASoD,CAAC,EACR,KAAK,KAAKA,EAAE,MAAMpD,CAAG,CAAC,CAC/B,EAEAwN,EAAI,UAAU,KAAO,SAAepK,EAAGR,EAAG,CACxC,YAAK,SAASQ,EAAGR,CAAC,EACX,KAAK,KAAKQ,EAAE,KAAKR,CAAC,CAAC,CAC5B,EAEA4K,EAAI,UAAU,IAAM,SAAcpK,EAAGR,EAAG,CACtC,YAAK,SAASQ,EAAGR,CAAC,EACX,KAAK,KAAKQ,EAAE,IAAIR,CAAC,CAAC,CAC3B,EAEA4K,EAAI,UAAU,KAAO,SAAepK,EAAG,CACrC,OAAO,KAAK,KAAKA,EAAGA,EAAE,MAAM,CAAC,CAC/B,EAEAoK,EAAI,UAAU,IAAM,SAAcpK,EAAG,CACnC,OAAO,KAAK,IAAIA,EAAGA,CAAC,CACtB,EAEAoK,EAAI,UAAU,KAAO,SAAepK,EAAG,CACrC,GAAIA,EAAE,OAAO,EAAG,OAAOA,EAAE,MAAM,EAE/B,IAAIqL,EAAO,KAAK,EAAE,MAAM,CAAC,EAIzB,GAHArP,EAAOqP,EAAO,IAAM,CAAC,EAGjBA,IAAS,EAAG,CACd,IAAI/M,EAAM,KAAK,EAAE,IAAI,IAAI/B,EAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EACxC,OAAO,KAAK,IAAIyD,EAAG1B,CAAG,CACxB,CAOA,QAFImB,EAAI,KAAK,EAAE,KAAK,CAAC,EACjBmH,EAAI,EACD,CAACnH,EAAE,OAAO,GAAKA,EAAE,MAAM,CAAC,IAAM,GACnCmH,IACAnH,EAAE,OAAO,CAAC,EAEZzD,EAAO,CAACyD,EAAE,OAAO,CAAC,EAElB,IAAI6L,EAAM,IAAI/O,EAAG,CAAC,EAAE,MAAM,IAAI,EAC1BgP,EAAOD,EAAI,OAAO,EAIlBE,EAAO,KAAK,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,EAC9BC,EAAI,KAAK,EAAE,UAAU,EAGzB,IAFAA,EAAI,IAAIlP,EAAG,EAAIkP,EAAIA,CAAC,EAAE,MAAM,IAAI,EAEzB,KAAK,IAAIA,EAAGD,CAAI,EAAE,IAAID,CAAI,IAAM,GACrCE,EAAE,QAAQF,CAAI,EAOhB,QAJIhO,EAAI,KAAK,IAAIkO,EAAGhM,CAAC,EACjB/B,EAAI,KAAK,IAAIsC,EAAGP,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EACnCC,EAAI,KAAK,IAAIM,EAAGP,CAAC,EACjB+H,EAAIZ,EACDlH,EAAE,IAAI4L,CAAG,IAAM,GAAG,CAEvB,QADIb,EAAM/K,EACD1C,EAAI,EAAGyN,EAAI,IAAIa,CAAG,IAAM,EAAGtO,IAClCyN,EAAMA,EAAI,OAAO,EAEnBzO,EAAOgB,EAAIwK,CAAC,EACZ,IAAIhI,EAAI,KAAK,IAAIjC,EAAG,IAAIhB,EAAG,CAAC,EAAE,OAAOiL,EAAIxK,EAAI,CAAC,CAAC,EAE/CU,EAAIA,EAAE,OAAO8B,CAAC,EACdjC,EAAIiC,EAAE,OAAO,EACbE,EAAIA,EAAE,OAAOnC,CAAC,EACdiK,EAAIxK,CACN,CAEA,OAAOU,CACT,EAEA0M,EAAI,UAAU,KAAO,SAAepK,EAAG,CACrC,IAAI0L,EAAM1L,EAAE,OAAO,KAAK,CAAC,EACzB,OAAI0L,EAAI,WAAa,GACnBA,EAAI,SAAW,EACR,KAAK,KAAKA,CAAG,EAAE,OAAO,GAEtB,KAAK,KAAKA,CAAG,CAExB,EAEAtB,EAAI,UAAU,IAAM,SAAcpK,EAAGpD,EAAK,CACxC,GAAIA,EAAI,OAAO,EAAG,OAAO,IAAIL,EAAG,CAAC,EAAE,MAAM,IAAI,EAC7C,GAAIK,EAAI,KAAK,CAAC,IAAM,EAAG,OAAOoD,EAAE,MAAM,EAEtC,IAAI2L,EAAa,EACbC,EAAM,IAAI,MAAM,GAAKD,CAAU,EACnCC,EAAI,GAAK,IAAIrP,EAAG,CAAC,EAAE,MAAM,IAAI,EAC7BqP,EAAI,GAAK5L,EACT,QAAShD,EAAI,EAAGA,EAAI4O,EAAI,OAAQ5O,IAC9B4O,EAAI5O,GAAK,KAAK,IAAI4O,EAAI5O,EAAI,GAAIgD,CAAC,EAGjC,IAAIT,EAAMqM,EAAI,GACVC,EAAU,EACVC,EAAa,EACb/O,EAAQH,EAAI,UAAU,EAAI,GAK9B,IAJIG,IAAU,IACZA,EAAQ,IAGLC,EAAIJ,EAAI,OAAS,EAAGI,GAAK,EAAGA,IAAK,CAEpC,QADIqB,EAAOzB,EAAI,MAAMI,GACZC,EAAIF,EAAQ,EAAGE,GAAK,EAAGA,IAAK,CACnC,IAAI4C,EAAOxB,GAAQpB,EAAK,EAKxB,GAJIsC,IAAQqM,EAAI,KACdrM,EAAM,KAAK,IAAIA,CAAG,GAGhBM,IAAQ,GAAKgM,IAAY,EAAG,CAC9BC,EAAa,EACb,QACF,CAEAD,IAAY,EACZA,GAAWhM,EACXiM,IACI,EAAAA,IAAeH,IAAe3O,IAAM,GAAKC,IAAM,MAEnDsC,EAAM,KAAK,IAAIA,EAAKqM,EAAIC,EAAQ,EAChCC,EAAa,EACbD,EAAU,EACZ,CACA9O,EAAQ,EACV,CAEA,OAAOwC,CACT,EAEA6K,EAAI,UAAU,UAAY,SAAoBxN,EAAK,CACjD,IAAIc,EAAId,EAAI,KAAK,KAAK,CAAC,EAEvB,OAAOc,IAAMd,EAAMc,EAAE,MAAM,EAAIA,CACjC,EAEA0M,EAAI,UAAU,YAAc,SAAsBxN,EAAK,CACrD,IAAI2C,EAAM3C,EAAI,MAAM,EACpB,OAAA2C,EAAI,IAAM,KACHA,CACT,EAMAhD,EAAG,KAAO,SAAeK,EAAK,CAC5B,OAAO,IAAImP,EAAKnP,CAAG,CACrB,EAEA,SAASmP,EAAMvE,EAAG,CAChB4C,EAAI,KAAK,KAAM5C,CAAC,EAEhB,KAAK,MAAQ,KAAK,EAAE,UAAU,EAC1B,KAAK,MAAQ,KAAO,IACtB,KAAK,OAAS,GAAM,KAAK,MAAQ,IAGnC,KAAK,EAAI,IAAIjL,EAAG,CAAC,EAAE,OAAO,KAAK,KAAK,EACpC,KAAK,GAAK,KAAK,KAAK,KAAK,EAAE,IAAI,CAAC,EAChC,KAAK,KAAO,KAAK,EAAE,OAAO,KAAK,CAAC,EAEhC,KAAK,KAAO,KAAK,KAAK,IAAI,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,EACrD,KAAK,KAAO,KAAK,KAAK,KAAK,KAAK,CAAC,EACjC,KAAK,KAAO,KAAK,EAAE,IAAI,KAAK,IAAI,CAClC,CACAJ,EAAS4P,EAAM3B,CAAG,EAElB2B,EAAK,UAAU,UAAY,SAAoBnP,EAAK,CAClD,OAAO,KAAK,KAAKA,EAAI,MAAM,KAAK,KAAK,CAAC,CACxC,EAEAmP,EAAK,UAAU,YAAc,SAAsBnP,EAAK,CACtD,IAAIc,EAAI,KAAK,KAAKd,EAAI,IAAI,KAAK,IAAI,CAAC,EACpC,OAAAc,EAAE,IAAM,KACDA,CACT,EAEAqO,EAAK,UAAU,KAAO,SAAe/L,EAAGR,EAAG,CACzC,GAAIQ,EAAE,OAAO,GAAKR,EAAE,OAAO,EACzB,OAAAQ,EAAE,MAAM,GAAK,EACbA,EAAE,OAAS,EACJA,EAGT,IAAIN,EAAIM,EAAE,KAAKR,CAAC,EACZjC,EAAImC,EAAE,MAAM,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,EACpEsM,EAAItM,EAAE,KAAKnC,CAAC,EAAE,OAAO,KAAK,KAAK,EAC/BgC,EAAMyM,EAEV,OAAIA,EAAE,IAAI,KAAK,CAAC,GAAK,EACnBzM,EAAMyM,EAAE,KAAK,KAAK,CAAC,EACVA,EAAE,KAAK,CAAC,EAAI,IACrBzM,EAAMyM,EAAE,KAAK,KAAK,CAAC,GAGdzM,EAAI,UAAU,IAAI,CAC3B,EAEAwM,EAAK,UAAU,IAAM,SAAc/L,EAAGR,EAAG,CACvC,GAAIQ,EAAE,OAAO,GAAKR,EAAE,OAAO,EAAG,OAAO,IAAIjD,EAAG,CAAC,EAAE,UAAU,IAAI,EAE7D,IAAImD,EAAIM,EAAE,IAAIR,CAAC,EACXjC,EAAImC,EAAE,MAAM,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,EACpEsM,EAAItM,EAAE,KAAKnC,CAAC,EAAE,OAAO,KAAK,KAAK,EAC/BgC,EAAMyM,EACV,OAAIA,EAAE,IAAI,KAAK,CAAC,GAAK,EACnBzM,EAAMyM,EAAE,KAAK,KAAK,CAAC,EACVA,EAAE,KAAK,CAAC,EAAI,IACrBzM,EAAMyM,EAAE,KAAK,KAAK,CAAC,GAGdzM,EAAI,UAAU,IAAI,CAC3B,EAEAwM,EAAK,UAAU,KAAO,SAAe/L,EAAG,CAEtC,IAAIT,EAAM,KAAK,KAAKS,EAAE,OAAO,KAAK,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC,EACjD,OAAOT,EAAI,UAAU,IAAI,CAC3B,CACF,GAAG,OAAOxD,GAAW,KAAeA,GAAQD,EAAI,ICr3GhD,IAAAmQ,GAAAC,EAAA,CAAAC,IAAAC,KAAA,CAAAA,GAAO,QAAUC,GAEjB,SAASA,GAAOC,EAAKC,EAAK,CACxB,GAAI,CAACD,EACH,MAAM,IAAI,MAAMC,GAAO,kBAAkB,CAC7C,CAEAF,GAAO,MAAQ,SAAqBG,EAAG,EAAGD,EAAK,CAC7C,GAAIC,GAAK,EACP,MAAM,IAAI,MAAMD,GAAQ,qBAAuBC,EAAI,OAAS,CAAE,CAClE,ICVA,IAAAC,GAAAC,EAAAC,IAAA,cAEA,IAAIC,GAAQD,GAEZ,SAASE,GAAQC,EAAKC,EAAK,CACzB,GAAI,MAAM,QAAQD,CAAG,EACnB,OAAOA,EAAI,MAAM,EACnB,GAAI,CAACA,EACH,MAAO,CAAC,EACV,IAAIE,EAAM,CAAC,EACX,GAAI,OAAOF,GAAQ,SAAU,CAC3B,QAASG,EAAI,EAAGA,EAAIH,EAAI,OAAQG,IAC9BD,EAAIC,GAAKH,EAAIG,GAAK,EACpB,OAAOD,CACT,CACA,GAAID,IAAQ,MAAO,CACjBD,EAAMA,EAAI,QAAQ,eAAgB,EAAE,EAChCA,EAAI,OAAS,IAAM,IACrBA,EAAM,IAAMA,GACd,QAASG,EAAI,EAAGA,EAAIH,EAAI,OAAQG,GAAK,EACnCD,EAAI,KAAK,SAASF,EAAIG,GAAKH,EAAIG,EAAI,GAAI,EAAE,CAAC,CAC9C,KACE,SAASA,EAAI,EAAGA,EAAIH,EAAI,OAAQG,IAAK,CACnC,IAAIC,EAAIJ,EAAI,WAAWG,CAAC,EACpBE,EAAKD,GAAK,EACVE,EAAKF,EAAI,IACTC,EACFH,EAAI,KAAKG,EAAIC,CAAE,EAEfJ,EAAI,KAAKI,CAAE,CACf,CAEF,OAAOJ,CACT,CACAJ,GAAM,QAAUC,GAEhB,SAASQ,GAAMC,EAAM,CACnB,OAAIA,EAAK,SAAW,EACX,IAAMA,EAENA,CACX,CACAV,GAAM,MAAQS,GAEd,SAASE,GAAMT,EAAK,CAElB,QADIE,EAAM,GACDC,EAAI,EAAGA,EAAIH,EAAI,OAAQG,IAC9BD,GAAOK,GAAMP,EAAIG,GAAG,SAAS,EAAE,CAAC,EAClC,OAAOD,CACT,CACAJ,GAAM,MAAQW,GAEdX,GAAM,OAAS,SAAgBY,EAAKT,EAAK,CACvC,OAAIA,IAAQ,MACHQ,GAAMC,CAAG,EAETA,CACX,ICzDA,IAAAC,GAAAC,EAAAC,IAAA,cAEA,IAAIC,GAAQD,GACRE,GAAK,KACLC,GAAY,KACZC,GAAW,KAEfH,GAAM,OAASE,GACfF,GAAM,QAAUG,GAAS,QACzBH,GAAM,MAAQG,GAAS,MACvBH,GAAM,MAAQG,GAAS,MACvBH,GAAM,OAASG,GAAS,OAGxB,SAASC,GAAOC,EAAKC,EAAGC,EAAM,CAC5B,IAAIC,EAAM,IAAI,MAAM,KAAK,IAAIH,EAAI,UAAU,EAAGE,CAAI,EAAI,CAAC,EACvDC,EAAI,KAAK,CAAC,EAKV,QAHIC,EAAK,GAAMH,EAAI,EACfI,EAAIL,EAAI,MAAM,EAETM,EAAI,EAAGA,EAAIH,EAAI,OAAQG,IAAK,CACnC,IAAIC,EACAC,EAAMH,EAAE,MAAMD,EAAK,CAAC,EACpBC,EAAE,MAAM,GACNG,GAAOJ,GAAM,GAAK,EACpBG,GAAKH,GAAM,GAAKI,EAEhBD,EAAIC,EACNH,EAAE,MAAME,CAAC,GAETA,EAAI,EAGNJ,EAAIG,GAAKC,EACTF,EAAE,OAAO,CAAC,CACZ,CAEA,OAAOF,CACT,CACAR,GAAM,OAASI,GAGf,SAASU,GAAOC,EAAIC,EAAI,CACtB,IAAIC,EAAM,CACR,CAAC,EACD,CAAC,CACH,EAEAF,EAAKA,EAAG,MAAM,EACdC,EAAKA,EAAG,MAAM,EAId,QAHIE,EAAK,EACLC,EAAK,EACLC,EACGL,EAAG,KAAK,CAACG,CAAE,EAAI,GAAKF,EAAG,KAAK,CAACG,CAAE,EAAI,GAAG,CAE3C,IAAIE,EAAON,EAAG,MAAM,CAAC,EAAIG,EAAM,EAC3BI,EAAON,EAAG,MAAM,CAAC,EAAIG,EAAM,EAC3BE,IAAQ,IACVA,EAAM,IACJC,IAAQ,IACVA,EAAM,IACR,IAAIC,GACCF,EAAM,KAAO,EAChBE,EAAK,GAELH,EAAML,EAAG,MAAM,CAAC,EAAIG,EAAM,GACrBE,IAAO,GAAKA,IAAO,IAAME,IAAQ,EACpCC,EAAK,CAACF,EAENE,EAAKF,GAETJ,EAAI,GAAG,KAAKM,CAAE,EAEd,IAAIC,GACCF,EAAM,KAAO,EAChBE,EAAK,GAELJ,EAAMJ,EAAG,MAAM,CAAC,EAAIG,EAAM,GACrBC,IAAO,GAAKA,IAAO,IAAMC,IAAQ,EACpCG,EAAK,CAACF,EAENE,EAAKF,GAETL,EAAI,GAAG,KAAKO,CAAE,EAGV,EAAIN,IAAOK,EAAK,IAClBL,EAAK,EAAIA,GACP,EAAIC,IAAOK,EAAK,IAClBL,EAAK,EAAIA,GACXJ,EAAG,OAAO,CAAC,EACXC,EAAG,OAAO,CAAC,CACb,CAEA,OAAOC,CACT,CACAjB,GAAM,OAASc,GAEf,SAASW,GAAeC,EAAKC,EAAMC,EAAU,CAC3C,IAAIC,EAAM,IAAMF,EAChBD,EAAI,UAAUC,GAAQ,UAA0B,CAC9C,OAAO,KAAKE,KAAS,OAAY,KAAKA,GACpC,KAAKA,GAAOD,EAAS,KAAK,IAAI,CAClC,CACF,CACA5B,GAAM,eAAiByB,GAEvB,SAASK,GAAWC,EAAO,CACzB,OAAO,OAAOA,GAAU,SAAW/B,GAAM,QAAQ+B,EAAO,KAAK,EAC3DA,CACJ,CACA/B,GAAM,WAAa8B,GAEnB,SAASE,GAAUD,EAAO,CACxB,OAAO,IAAI9B,GAAG8B,EAAO,MAAO,IAAI,CAClC,CACA/B,GAAM,UAAYgC,KCrHlB,IAAAC,GAAAC,EAAA,CAAAC,IAAAC,KAAA,KAAIC,GAEJD,GAAO,QAAU,SAAcE,EAAK,CAClC,OAAKD,KACHA,GAAI,IAAIE,GAAK,IAAI,GAEZF,GAAE,SAASC,CAAG,CACvB,EAEA,SAASC,GAAKC,EAAM,CAClB,KAAK,KAAOA,CACd,CACAJ,GAAO,QAAQ,KAAOG,GAEtBA,GAAK,UAAU,SAAW,SAAkBD,EAAK,CAC/C,OAAO,KAAK,MAAMA,CAAG,CACvB,EAGAC,GAAK,UAAU,MAAQ,SAAeE,EAAG,CACvC,GAAI,KAAK,KAAK,SACZ,OAAO,KAAK,KAAK,SAASA,CAAC,EAG7B,QADIC,EAAM,IAAI,WAAWD,CAAC,EACjBE,EAAI,EAAGA,EAAID,EAAI,OAAQC,IAC9BD,EAAIC,GAAK,KAAK,KAAK,QAAQ,EAC7B,OAAOD,CACT,EAEA,GAAI,OAAO,MAAS,SACd,KAAK,QAAU,KAAK,OAAO,gBAE7BH,GAAK,UAAU,MAAQ,SAAeE,EAAG,CACvC,IAAIG,EAAM,IAAI,WAAWH,CAAC,EAC1B,YAAK,OAAO,gBAAgBG,CAAG,EACxBA,CACT,EACS,KAAK,UAAY,KAAK,SAAS,gBAExCL,GAAK,UAAU,MAAQ,SAAeE,EAAG,CACvC,IAAIG,EAAM,IAAI,WAAWH,CAAC,EAC1B,YAAK,SAAS,gBAAgBG,CAAG,EAC1BA,CACT,EAGS,OAAO,QAAW,WAE3BL,GAAK,UAAU,MAAQ,UAAW,CAChC,MAAM,IAAI,MAAM,qBAAqB,CACvC,OAIF,IAAI,CAEF,GADIM,GAAS,QAAQ,UACjB,OAAOA,GAAO,aAAgB,WAChC,MAAM,IAAI,MAAM,eAAe,EAEjCN,GAAK,UAAU,MAAQ,SAAeE,EAAG,CACvC,OAAOI,GAAO,YAAYJ,CAAC,CAC7B,CACF,MAAE,CACF,CARM,IAAAI,KCvDR,IAAAC,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAK,KACLC,GAAQ,KACRC,GAASD,GAAM,OACfE,GAASF,GAAM,OACfG,GAASH,GAAM,OAEnB,SAASI,GAAUC,EAAMC,EAAM,CAC7B,KAAK,KAAOD,EACZ,KAAK,EAAI,IAAIN,GAAGO,EAAK,EAAG,EAAE,EAG1B,KAAK,IAAMA,EAAK,MAAQP,GAAG,IAAIO,EAAK,KAAK,EAAIP,GAAG,KAAK,KAAK,CAAC,EAG3D,KAAK,KAAO,IAAIA,GAAG,CAAC,EAAE,MAAM,KAAK,GAAG,EACpC,KAAK,IAAM,IAAIA,GAAG,CAAC,EAAE,MAAM,KAAK,GAAG,EACnC,KAAK,IAAM,IAAIA,GAAG,CAAC,EAAE,MAAM,KAAK,GAAG,EAGnC,KAAK,EAAIO,EAAK,GAAK,IAAIP,GAAGO,EAAK,EAAG,EAAE,EACpC,KAAK,EAAIA,EAAK,GAAK,KAAK,cAAcA,EAAK,EAAGA,EAAK,IAAI,EAGvD,KAAK,QAAU,IAAI,MAAM,CAAC,EAC1B,KAAK,QAAU,IAAI,MAAM,CAAC,EAC1B,KAAK,QAAU,IAAI,MAAM,CAAC,EAC1B,KAAK,QAAU,IAAI,MAAM,CAAC,EAE1B,KAAK,WAAa,KAAK,EAAI,KAAK,EAAE,UAAU,EAAI,EAGhD,IAAIC,EAAc,KAAK,GAAK,KAAK,EAAE,IAAI,KAAK,CAAC,EACzC,CAACA,GAAeA,EAAY,KAAK,GAAG,EAAI,EAC1C,KAAK,KAAO,MAEZ,KAAK,cAAgB,GACrB,KAAK,KAAO,KAAK,EAAE,MAAM,KAAK,GAAG,EAErC,CACAT,GAAO,QAAUM,GAEjBA,GAAU,UAAU,MAAQ,UAAiB,CAC3C,MAAM,IAAI,MAAM,iBAAiB,CACnC,EAEAA,GAAU,UAAU,SAAW,UAAoB,CACjD,MAAM,IAAI,MAAM,iBAAiB,CACnC,EAEAA,GAAU,UAAU,aAAe,SAAsBI,EAAGC,EAAG,CAC7DN,GAAOK,EAAE,WAAW,EACpB,IAAIE,EAAUF,EAAE,YAAY,EAExBG,EAAMV,GAAOQ,EAAG,EAAG,KAAK,UAAU,EAClCG,GAAK,GAAMF,EAAQ,KAAO,IAAOA,EAAQ,KAAO,IAAM,EAAI,EAAI,GAClEE,GAAK,EAGL,IAAIC,EAAO,CAAC,EACRC,EACAC,EACJ,IAAKD,EAAI,EAAGA,EAAIH,EAAI,OAAQG,GAAKJ,EAAQ,KAAM,CAC7CK,EAAO,EACP,QAASC,EAAIF,EAAIJ,EAAQ,KAAO,EAAGM,GAAKF,EAAGE,IACzCD,GAAQA,GAAQ,GAAKJ,EAAIK,GAC3BH,EAAK,KAAKE,CAAI,CAChB,CAIA,QAFIE,EAAI,KAAK,OAAO,KAAM,KAAM,IAAI,EAChCC,EAAI,KAAK,OAAO,KAAM,KAAM,IAAI,EAC3BC,EAAIP,EAAGO,EAAI,EAAGA,IAAK,CAC1B,IAAKL,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAC3BC,EAAOF,EAAKC,GACRC,IAASI,EACXD,EAAIA,EAAE,SAASR,EAAQ,OAAOI,EAAE,EACzBC,IAAS,CAACI,IACjBD,EAAIA,EAAE,SAASR,EAAQ,OAAOI,GAAG,IAAI,CAAC,GAE1CG,EAAIA,EAAE,IAAIC,CAAC,CACb,CACA,OAAOD,EAAE,IAAI,CACf,EAEAb,GAAU,UAAU,SAAW,SAAkBI,EAAGC,EAAG,CACrD,IAAIW,EAAI,EAGJC,EAAYb,EAAE,cAAcY,CAAC,EACjCA,EAAIC,EAAU,IAQd,QAPIC,EAAMD,EAAU,OAGhBV,EAAMV,GAAOQ,EAAGW,EAAG,KAAK,UAAU,EAGlCG,EAAM,KAAK,OAAO,KAAM,KAAM,IAAI,EAC7BJ,EAAIR,EAAI,OAAS,EAAGQ,GAAK,EAAGA,IAAK,CAExC,QAASH,EAAI,EAAGG,GAAK,GAAKR,EAAIQ,KAAO,EAAGA,IACtCH,IAKF,GAJIG,GAAK,GACPH,IACFO,EAAMA,EAAI,KAAKP,CAAC,EAEZG,EAAI,EACN,MACF,IAAIK,EAAIb,EAAIQ,GACZhB,GAAOqB,IAAM,CAAC,EACVhB,EAAE,OAAS,SAETgB,EAAI,EACND,EAAMA,EAAI,SAASD,EAAKE,EAAI,GAAM,EAAE,EAEpCD,EAAMA,EAAI,SAASD,EAAK,CAACE,EAAI,GAAM,GAAG,IAAI,CAAC,EAGzCA,EAAI,EACND,EAAMA,EAAI,IAAID,EAAKE,EAAI,GAAM,EAAE,EAE/BD,EAAMA,EAAI,IAAID,EAAK,CAACE,EAAI,GAAM,GAAG,IAAI,CAAC,CAE5C,CACA,OAAOhB,EAAE,OAAS,SAAWe,EAAI,IAAI,EAAIA,CAC3C,EAEAnB,GAAU,UAAU,YAAc,SAAqBqB,EACrDC,EACAC,EACAC,EACAC,EAAgB,CAChB,IAAIC,EAAW,KAAK,QAChBR,EAAM,KAAK,QACXX,EAAM,KAAK,QAGXoB,EAAM,EACNZ,EACAL,EACAN,EACJ,IAAKW,EAAI,EAAGA,EAAIS,EAAKT,IAAK,CACxBX,EAAIkB,EAAOP,GACX,IAAIE,EAAYb,EAAE,cAAciB,CAAI,EACpCK,EAASX,GAAKE,EAAU,IACxBC,EAAIH,GAAKE,EAAU,MACrB,CAGA,IAAKF,EAAIS,EAAM,EAAGT,GAAK,EAAGA,GAAK,EAAG,CAChC,IAAIF,EAAIE,EAAI,EACRD,EAAIC,EACR,GAAIW,EAASb,KAAO,GAAKa,EAASZ,KAAO,EAAG,CAC1CP,EAAIM,GAAKhB,GAAO0B,EAAOV,GAAIa,EAASb,GAAI,KAAK,UAAU,EACvDN,EAAIO,GAAKjB,GAAO0B,EAAOT,GAAIY,EAASZ,GAAI,KAAK,UAAU,EACvDa,EAAM,KAAK,IAAIpB,EAAIM,GAAG,OAAQc,CAAG,EACjCA,EAAM,KAAK,IAAIpB,EAAIO,GAAG,OAAQa,CAAG,EACjC,QACF,CAEA,IAAIC,EAAO,CACTN,EAAOT,GACP,KACA,KACAS,EAAOR,EACT,EAGIQ,EAAOT,GAAG,EAAE,IAAIS,EAAOR,GAAG,CAAC,IAAM,GACnCc,EAAK,GAAKN,EAAOT,GAAG,IAAIS,EAAOR,EAAE,EACjCc,EAAK,GAAKN,EAAOT,GAAG,IAAI,EAAE,SAASS,EAAOR,GAAG,IAAI,CAAC,GACzCQ,EAAOT,GAAG,EAAE,IAAIS,EAAOR,GAAG,EAAE,OAAO,CAAC,IAAM,GACnDc,EAAK,GAAKN,EAAOT,GAAG,IAAI,EAAE,SAASS,EAAOR,EAAE,EAC5Cc,EAAK,GAAKN,EAAOT,GAAG,IAAIS,EAAOR,GAAG,IAAI,CAAC,IAEvCc,EAAK,GAAKN,EAAOT,GAAG,IAAI,EAAE,SAASS,EAAOR,EAAE,EAC5Cc,EAAK,GAAKN,EAAOT,GAAG,IAAI,EAAE,SAASS,EAAOR,GAAG,IAAI,CAAC,GAGpD,IAAIe,EAAQ,CACV,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,CACF,EAEIC,EAAMhC,GAAOyB,EAAOV,GAAIU,EAAOT,EAAE,EAIrC,IAHAa,EAAM,KAAK,IAAIG,EAAI,GAAG,OAAQH,CAAG,EACjCpB,EAAIM,GAAK,IAAI,MAAMc,CAAG,EACtBpB,EAAIO,GAAK,IAAI,MAAMa,CAAG,EACjBjB,EAAI,EAAGA,EAAIiB,EAAKjB,IAAK,CACxB,IAAIqB,EAAKD,EAAI,GAAGpB,GAAK,EACjBsB,EAAKF,EAAI,GAAGpB,GAAK,EAErBH,EAAIM,GAAGH,GAAKmB,GAAOE,EAAK,GAAK,GAAKC,EAAK,IACvCzB,EAAIO,GAAGJ,GAAK,EACZQ,EAAIL,GAAKe,CACX,CACF,CAEA,IAAIT,EAAM,KAAK,OAAO,KAAM,KAAM,IAAI,EAClCc,EAAM,KAAK,QACf,IAAKlB,EAAIY,EAAKZ,GAAK,EAAGA,IAAK,CAGzB,QAFIV,EAAI,EAEDU,GAAK,GAAG,CACb,IAAImB,EAAO,GACX,IAAKxB,EAAI,EAAGA,EAAIc,EAAKd,IACnBuB,EAAIvB,GAAKH,EAAIG,GAAGK,GAAK,EACjBkB,EAAIvB,KAAO,IACbwB,EAAO,IAEX,GAAI,CAACA,EACH,MACF7B,IACAU,GACF,CAIA,GAHIA,GAAK,GACPV,IACFc,EAAMA,EAAI,KAAKd,CAAC,EACZU,EAAI,EACN,MAEF,IAAKL,EAAI,EAAGA,EAAIc,EAAKd,IAAK,CACxB,IAAIU,EAAIa,EAAIvB,GAERU,IAAM,IAEDA,EAAI,EACXhB,EAAIc,EAAIR,GAAIU,EAAI,GAAM,GACfA,EAAI,IACXhB,EAAIc,EAAIR,GAAI,CAACU,EAAI,GAAM,GAAG,IAAI,GAE5BhB,EAAE,OAAS,SACbe,EAAMA,EAAI,SAASf,CAAC,EAEpBe,EAAMA,EAAI,IAAIf,CAAC,EACnB,CACF,CAEA,IAAKW,EAAI,EAAGA,EAAIS,EAAKT,IACnBG,EAAIH,GAAK,KAEX,OAAIU,EACKN,EAEAA,EAAI,IAAI,CACnB,EAEA,SAASgB,GAAUC,EAAOnC,EAAM,CAC9B,KAAK,MAAQmC,EACb,KAAK,KAAOnC,EACZ,KAAK,YAAc,IACrB,CACAD,GAAU,UAAYmC,GAEtBA,GAAU,UAAU,GAAK,UAAuB,CAC9C,MAAM,IAAI,MAAM,iBAAiB,CACnC,EAEAA,GAAU,UAAU,SAAW,UAAoB,CACjD,OAAO,KAAK,MAAM,SAAS,IAAI,CACjC,EAEAnC,GAAU,UAAU,YAAc,SAAqBqC,EAAOC,EAAK,CACjED,EAAQzC,GAAM,QAAQyC,EAAOC,CAAG,EAEhC,IAAId,EAAM,KAAK,EAAE,WAAW,EAG5B,IAAKa,EAAM,KAAO,GAAQA,EAAM,KAAO,GAAQA,EAAM,KAAO,IACxDA,EAAM,OAAS,IAAM,EAAIb,EAAK,CAC5Ba,EAAM,KAAO,EACftC,GAAOsC,EAAMA,EAAM,OAAS,GAAK,IAAM,CAAC,EACjCA,EAAM,KAAO,GACpBtC,GAAOsC,EAAMA,EAAM,OAAS,GAAK,IAAM,CAAC,EAE1C,IAAIE,EAAO,KAAK,MAAMF,EAAM,MAAM,EAAG,EAAIb,CAAG,EAC1Ca,EAAM,MAAM,EAAIb,EAAK,EAAI,EAAIA,CAAG,CAAC,EAEnC,OAAOe,CACT,UAAYF,EAAM,KAAO,GAAQA,EAAM,KAAO,IAClCA,EAAM,OAAS,IAAMb,EAC/B,OAAO,KAAK,WAAWa,EAAM,MAAM,EAAG,EAAIb,CAAG,EAAGa,EAAM,KAAO,CAAI,EAEnE,MAAM,IAAI,MAAM,sBAAsB,CACxC,EAEAF,GAAU,UAAU,iBAAmB,SAA0BG,EAAK,CACpE,OAAO,KAAK,OAAOA,EAAK,EAAI,CAC9B,EAEAH,GAAU,UAAU,QAAU,SAAiBK,EAAS,CACtD,IAAIhB,EAAM,KAAK,MAAM,EAAE,WAAW,EAC9BiB,EAAI,KAAK,KAAK,EAAE,QAAQ,KAAMjB,CAAG,EAErC,OAAIgB,EACK,CAAE,KAAK,KAAK,EAAE,OAAO,EAAI,EAAO,CAAK,EAAE,OAAOC,CAAC,EAEjD,CAAE,CAAK,EAAE,OAAOA,EAAG,KAAK,KAAK,EAAE,QAAQ,KAAMjB,CAAG,CAAC,CAC1D,EAEAW,GAAU,UAAU,OAAS,SAAgBG,EAAKE,EAAS,CACzD,OAAO5C,GAAM,OAAO,KAAK,QAAQ4C,CAAO,EAAGF,CAAG,CAChD,EAEAH,GAAU,UAAU,WAAa,SAAoBO,EAAO,CAC1D,GAAI,KAAK,YACP,OAAO,KAET,IAAIC,EAAc,CAChB,QAAS,KACT,IAAK,KACL,KAAM,IACR,EACA,OAAAA,EAAY,IAAM,KAAK,cAAc,CAAC,EACtCA,EAAY,QAAU,KAAK,YAAY,EAAGD,CAAK,EAC/CC,EAAY,KAAO,KAAK,SAAS,EACjC,KAAK,YAAcA,EAEZ,IACT,EAEAR,GAAU,UAAU,YAAc,SAAqB9B,EAAG,CACxD,GAAI,CAAC,KAAK,YACR,MAAO,GAET,IAAIC,EAAU,KAAK,YAAY,QAC/B,OAAKA,EAGEA,EAAQ,OAAO,QAAU,KAAK,MAAMD,EAAE,UAAU,EAAI,GAAKC,EAAQ,IAAI,EAFnE,EAGX,EAEA6B,GAAU,UAAU,YAAc,SAAqBS,EAAMF,EAAO,CAClE,GAAI,KAAK,aAAe,KAAK,YAAY,QACvC,OAAO,KAAK,YAAY,QAI1B,QAFIpC,EAAU,CAAE,IAAK,EACjBa,EAAM,KACDJ,EAAI,EAAGA,EAAI2B,EAAO3B,GAAK6B,EAAM,CACpC,QAASlC,EAAI,EAAGA,EAAIkC,EAAMlC,IACxBS,EAAMA,EAAI,IAAI,EAChBb,EAAQ,KAAKa,CAAG,CAClB,CACA,MAAO,CACL,KAAMyB,EACN,OAAQtC,CACV,CACF,EAEA6B,GAAU,UAAU,cAAgB,SAAuBjB,EAAK,CAC9D,GAAI,KAAK,aAAe,KAAK,YAAY,IACvC,OAAO,KAAK,YAAY,IAK1B,QAHIqB,EAAM,CAAE,IAAK,EACbZ,GAAO,GAAKT,GAAO,EACnB2B,EAAMlB,IAAQ,EAAI,KAAO,KAAK,IAAI,EAC7BZ,EAAI,EAAGA,EAAIY,EAAKZ,IACvBwB,EAAIxB,GAAKwB,EAAIxB,EAAI,GAAG,IAAI8B,CAAG,EAC7B,MAAO,CACL,IAAK3B,EACL,OAAQqB,CACV,CACF,EAEAJ,GAAU,UAAU,SAAW,UAAoB,CACjD,OAAO,IACT,EAEAA,GAAU,UAAU,KAAO,SAAc9B,EAAG,CAE1C,QADI,EAAI,KACCU,EAAI,EAAGA,EAAIV,EAAGU,IACrB,EAAI,EAAE,IAAI,EACZ,OAAO,CACT,IC5XA,IAAA+B,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAQ,KACRC,GAAK,KACLC,GAAW,KACXC,GAAO,KAEPC,GAASJ,GAAM,OAEnB,SAASK,GAAWC,EAAM,CACxBH,GAAK,KAAK,KAAM,QAASG,CAAI,EAE7B,KAAK,EAAI,IAAIL,GAAGK,EAAK,EAAG,EAAE,EAAE,MAAM,KAAK,GAAG,EAC1C,KAAK,EAAI,IAAIL,GAAGK,EAAK,EAAG,EAAE,EAAE,MAAM,KAAK,GAAG,EAC1C,KAAK,KAAO,KAAK,IAAI,QAAQ,EAE7B,KAAK,MAAQ,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAM,EAC1C,KAAK,OAAS,KAAK,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,IAAM,EAGxD,KAAK,KAAO,KAAK,iBAAiBA,CAAI,EACtC,KAAK,YAAc,IAAI,MAAM,CAAC,EAC9B,KAAK,YAAc,IAAI,MAAM,CAAC,CAChC,CACAJ,GAASG,GAAYF,EAAI,EACzBJ,GAAO,QAAUM,GAEjBA,GAAW,UAAU,iBAAmB,SAA0BC,EAAM,CAEtE,GAAI,GAAC,KAAK,OAAS,CAAC,KAAK,GAAK,CAAC,KAAK,GAAK,KAAK,EAAE,KAAK,CAAC,IAAM,GAI5D,KAAIC,EACAC,EACJ,GAAIF,EAAK,KACPC,EAAO,IAAIN,GAAGK,EAAK,KAAM,EAAE,EAAE,MAAM,KAAK,GAAG,MACtC,CACL,IAAIG,EAAQ,KAAK,cAAc,KAAK,CAAC,EAErCF,EAAOE,EAAM,GAAG,IAAIA,EAAM,EAAE,EAAI,EAAIA,EAAM,GAAKA,EAAM,GACrDF,EAAOA,EAAK,MAAM,KAAK,GAAG,CAC5B,CACA,GAAID,EAAK,OACPE,EAAS,IAAIP,GAAGK,EAAK,OAAQ,EAAE,MAC1B,CAEL,IAAII,EAAU,KAAK,cAAc,KAAK,CAAC,EACnC,KAAK,EAAE,IAAIA,EAAQ,EAAE,EAAE,EAAE,IAAI,KAAK,EAAE,EAAE,OAAOH,CAAI,CAAC,IAAM,EAC1DC,EAASE,EAAQ,IAEjBF,EAASE,EAAQ,GACjBN,GAAO,KAAK,EAAE,IAAII,CAAM,EAAE,EAAE,IAAI,KAAK,EAAE,EAAE,OAAOD,CAAI,CAAC,IAAM,CAAC,EAEhE,CAGA,IAAII,EACJ,OAAIL,EAAK,MACPK,EAAQL,EAAK,MAAM,IAAI,SAASM,EAAK,CACnC,MAAO,CACL,EAAG,IAAIX,GAAGW,EAAI,EAAG,EAAE,EACnB,EAAG,IAAIX,GAAGW,EAAI,EAAG,EAAE,CACrB,CACF,CAAC,EAEDD,EAAQ,KAAK,cAAcH,CAAM,EAG5B,CACL,KAAMD,EACN,OAAQC,EACR,MAAOG,CACT,EACF,EAEAN,GAAW,UAAU,cAAgB,SAAuBQ,EAAK,CAI/D,IAAIC,EAAMD,IAAQ,KAAK,EAAI,KAAK,IAAMZ,GAAG,KAAKY,CAAG,EAC7CE,EAAO,IAAId,GAAG,CAAC,EAAE,MAAMa,CAAG,EAAE,QAAQ,EACpCE,EAAQD,EAAK,OAAO,EAEpBE,EAAI,IAAIhB,GAAG,CAAC,EAAE,MAAMa,CAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAOC,CAAI,EAEvDG,EAAKF,EAAM,OAAOC,CAAC,EAAE,QAAQ,EAC7BE,EAAKH,EAAM,OAAOC,CAAC,EAAE,QAAQ,EACjC,MAAO,CAAEC,EAAIC,CAAG,CAClB,EAEAd,GAAW,UAAU,cAAgB,SAAuBG,EAAQ,CA2BlE,QAzBIY,EAAW,KAAK,EAAE,MAAM,KAAK,MAAM,KAAK,EAAE,UAAU,EAAI,CAAC,CAAC,EAI1DC,EAAIb,EACJc,EAAI,KAAK,EAAE,MAAM,EACjBC,EAAK,IAAItB,GAAG,CAAC,EACbuB,EAAK,IAAIvB,GAAG,CAAC,EACbwB,EAAK,IAAIxB,GAAG,CAAC,EACbyB,EAAK,IAAIzB,GAAG,CAAC,EAGb0B,EACAC,EAEAC,EACAC,EAEAC,EACAC,EAEAC,EACAC,EAAI,EACJC,EACAC,EACGf,EAAE,KAAK,CAAC,IAAM,GAAG,CACtB,IAAIgB,EAAIf,EAAE,IAAID,CAAC,EACfc,EAAIb,EAAE,IAAIe,EAAE,IAAIhB,CAAC,CAAC,EAClBe,EAAIX,EAAG,IAAIY,EAAE,IAAId,CAAE,CAAC,EACpB,IAAIe,EAAIZ,EAAG,IAAIW,EAAE,IAAIb,CAAE,CAAC,EAExB,GAAI,CAACK,GAAMM,EAAE,IAAIf,CAAQ,EAAI,EAC3BO,EAAKM,EAAM,IAAI,EACfL,EAAKL,EACLM,EAAKM,EAAE,IAAI,EACXL,EAAKM,UACIP,GAAM,EAAEK,IAAM,EACvB,MAEFD,EAAQE,EAERb,EAAID,EACJA,EAAIc,EACJV,EAAKF,EACLA,EAAKa,EACLV,EAAKF,EACLA,EAAKc,CACP,CACAP,EAAKI,EAAE,IAAI,EACXH,EAAKI,EAEL,IAAIG,EAAOV,EAAG,IAAI,EAAE,IAAIC,EAAG,IAAI,CAAC,EAC5BU,EAAOT,EAAG,IAAI,EAAE,IAAIC,EAAG,IAAI,CAAC,EAChC,OAAIQ,EAAK,IAAID,CAAI,GAAK,IACpBR,EAAKJ,EACLK,EAAKJ,GAIHC,EAAG,WACLA,EAAKA,EAAG,IAAI,EACZC,EAAKA,EAAG,IAAI,GAEVC,EAAG,WACLA,EAAKA,EAAG,IAAI,EACZC,EAAKA,EAAG,IAAI,GAGP,CACL,CAAE,EAAGH,EAAI,EAAGC,CAAG,EACf,CAAE,EAAGC,EAAI,EAAGC,CAAG,CACjB,CACF,EAEA3B,GAAW,UAAU,WAAa,SAAoBoC,EAAG,CACvD,IAAI9B,EAAQ,KAAK,KAAK,MAClB+B,EAAK/B,EAAM,GACXgC,EAAKhC,EAAM,GAEXiC,EAAKD,EAAG,EAAE,IAAIF,CAAC,EAAE,SAAS,KAAK,CAAC,EAChCI,EAAKH,EAAG,EAAE,IAAI,EAAE,IAAID,CAAC,EAAE,SAAS,KAAK,CAAC,EAEtCK,EAAKF,EAAG,IAAIF,EAAG,CAAC,EAChBK,EAAKF,EAAG,IAAIF,EAAG,CAAC,EAChBK,EAAKJ,EAAG,IAAIF,EAAG,CAAC,EAChBO,EAAKJ,EAAG,IAAIF,EAAG,CAAC,EAGhBO,EAAKT,EAAE,IAAIK,CAAE,EAAE,IAAIC,CAAE,EACrBI,EAAKH,EAAG,IAAIC,CAAE,EAAE,IAAI,EACxB,MAAO,CAAE,GAAIC,EAAI,GAAIC,CAAG,CAC1B,EAEA9C,GAAW,UAAU,WAAa,SAAoB+B,EAAGgB,EAAK,CAC5DhB,EAAI,IAAInC,GAAGmC,EAAG,EAAE,EACXA,EAAE,MACLA,EAAIA,EAAE,MAAM,KAAK,GAAG,GAEtB,IAAIV,EAAKU,EAAE,OAAO,EAAE,OAAOA,CAAC,EAAE,QAAQA,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,QAAQ,KAAK,CAAC,EAClEE,EAAIZ,EAAG,QAAQ,EACnB,GAAIY,EAAE,OAAO,EAAE,OAAOZ,CAAE,EAAE,IAAI,KAAK,IAAI,IAAM,EAC3C,MAAM,IAAI,MAAM,eAAe,EAIjC,IAAI2B,EAAQf,EAAE,QAAQ,EAAE,MAAM,EAC9B,OAAIc,GAAO,CAACC,GAAS,CAACD,GAAOC,KAC3Bf,EAAIA,EAAE,OAAO,GAER,KAAK,MAAMF,EAAGE,CAAC,CACxB,EAEAjC,GAAW,UAAU,SAAW,SAAkBiD,EAAO,CACvD,GAAIA,EAAM,IACR,MAAO,GAET,IAAIlB,EAAIkB,EAAM,EACVhB,EAAIgB,EAAM,EAEVC,EAAK,KAAK,EAAE,OAAOnB,CAAC,EACpBoB,EAAMpB,EAAE,OAAO,EAAE,OAAOA,CAAC,EAAE,QAAQmB,CAAE,EAAE,QAAQ,KAAK,CAAC,EACzD,OAAOjB,EAAE,OAAO,EAAE,QAAQkB,CAAG,EAAE,KAAK,CAAC,IAAM,CAC7C,EAEAnD,GAAW,UAAU,gBACjB,SAAyBoD,EAAQC,EAAQC,EAAgB,CAGvD,QAFIC,EAAU,KAAK,YACfC,EAAU,KAAK,YACV3B,EAAI,EAAGA,EAAIuB,EAAO,OAAQvB,IAAK,CACtC,IAAI4B,EAAQ,KAAK,WAAWJ,EAAOxB,EAAE,EACjC6B,EAAIN,EAAOvB,GACX3B,EAAOwD,EAAE,SAAS,EAElBD,EAAM,GAAG,WACXA,EAAM,GAAG,KAAK,EACdC,EAAIA,EAAE,IAAI,EAAI,GAEZD,EAAM,GAAG,WACXA,EAAM,GAAG,KAAK,EACdvD,EAAOA,EAAK,IAAI,EAAI,GAGtBqD,EAAQ1B,EAAI,GAAK6B,EACjBH,EAAQ1B,EAAI,EAAI,GAAK3B,EACrBsD,EAAQ3B,EAAI,GAAK4B,EAAM,GACvBD,EAAQ3B,EAAI,EAAI,GAAK4B,EAAM,EAC7B,CAIA,QAHIE,EAAM,KAAK,YAAY,EAAGJ,EAASC,EAAS3B,EAAI,EAAGyB,CAAc,EAG5DM,EAAI,EAAGA,EAAI/B,EAAI,EAAG+B,IACzBL,EAAQK,GAAK,KACbJ,EAAQI,GAAK,KAEf,OAAOD,CACT,EAEJ,SAASE,GAAMC,EAAO/B,EAAGE,EAAG8B,EAAO,CACjCjE,GAAK,UAAU,KAAK,KAAMgE,EAAO,QAAQ,EACrC/B,IAAM,MAAQE,IAAM,MACtB,KAAK,EAAI,KACT,KAAK,EAAI,KACT,KAAK,IAAM,KAEX,KAAK,EAAI,IAAIrC,GAAGmC,EAAG,EAAE,EACrB,KAAK,EAAI,IAAInC,GAAGqC,EAAG,EAAE,EAEjB8B,IACF,KAAK,EAAE,SAAS,KAAK,MAAM,GAAG,EAC9B,KAAK,EAAE,SAAS,KAAK,MAAM,GAAG,GAE3B,KAAK,EAAE,MACV,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GACjC,KAAK,EAAE,MACV,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GACtC,KAAK,IAAM,GAEf,CACAlE,GAASgE,GAAO/D,GAAK,SAAS,EAE9BE,GAAW,UAAU,MAAQ,SAAe+B,EAAGE,EAAG8B,EAAO,CACvD,OAAO,IAAIF,GAAM,KAAM9B,EAAGE,EAAG8B,CAAK,CACpC,EAEA/D,GAAW,UAAU,cAAgB,SAAuBgE,EAAKvD,EAAK,CACpE,OAAOoD,GAAM,SAAS,KAAMG,EAAKvD,CAAG,CACtC,EAEAoD,GAAM,UAAU,SAAW,UAAoB,CAC7C,GAAI,EAAC,KAAK,MAAM,KAGhB,KAAII,EAAM,KAAK,YACf,GAAIA,GAAOA,EAAI,KACb,OAAOA,EAAI,KAEb,IAAI/D,EAAO,KAAK,MAAM,MAAM,KAAK,EAAE,OAAO,KAAK,MAAM,KAAK,IAAI,EAAG,KAAK,CAAC,EACvE,GAAI+D,EAAK,CACP,IAAIH,EAAQ,KAAK,MACbI,EAAU,SAASR,EAAG,CACxB,OAAOI,EAAM,MAAMJ,EAAE,EAAE,OAAOI,EAAM,KAAK,IAAI,EAAGJ,EAAE,CAAC,CACrD,EACAO,EAAI,KAAO/D,EACXA,EAAK,YAAc,CACjB,KAAM,KACN,IAAK+D,EAAI,KAAO,CACd,IAAKA,EAAI,IAAI,IACb,OAAQA,EAAI,IAAI,OAAO,IAAIC,CAAO,CACpC,EACA,QAASD,EAAI,SAAW,CACtB,KAAMA,EAAI,QAAQ,KAClB,OAAQA,EAAI,QAAQ,OAAO,IAAIC,CAAO,CACxC,CACF,CACF,CACA,OAAOhE,EACT,EAEA2D,GAAM,UAAU,OAAS,UAAkB,CACzC,OAAK,KAAK,YAGH,CAAE,KAAK,EAAG,KAAK,EAAG,KAAK,aAAe,CAC3C,QAAS,KAAK,YAAY,SAAW,CACnC,KAAM,KAAK,YAAY,QAAQ,KAC/B,OAAQ,KAAK,YAAY,QAAQ,OAAO,MAAM,CAAC,CACjD,EACA,IAAK,KAAK,YAAY,KAAO,CAC3B,IAAK,KAAK,YAAY,IAAI,IAC1B,OAAQ,KAAK,YAAY,IAAI,OAAO,MAAM,CAAC,CAC7C,CACF,CAAE,EAXO,CAAE,KAAK,EAAG,KAAK,CAAE,CAY5B,EAEAA,GAAM,SAAW,SAAkBC,EAAOE,EAAKvD,EAAK,CAC9C,OAAOuD,GAAQ,WACjBA,EAAM,KAAK,MAAMA,CAAG,GACtB,IAAIL,EAAMG,EAAM,MAAME,EAAI,GAAIA,EAAI,GAAIvD,CAAG,EACzC,GAAI,CAACuD,EAAI,GACP,OAAOL,EAET,SAASQ,EAAUH,EAAK,CACtB,OAAOF,EAAM,MAAME,EAAI,GAAIA,EAAI,GAAIvD,CAAG,CACxC,CAEA,IAAIwD,EAAMD,EAAI,GACd,OAAAL,EAAI,YAAc,CAChB,KAAM,KACN,QAASM,EAAI,SAAW,CACtB,KAAMA,EAAI,QAAQ,KAClB,OAAQ,CAAEN,CAAI,EAAE,OAAOM,EAAI,QAAQ,OAAO,IAAIE,CAAS,CAAC,CAC1D,EACA,IAAKF,EAAI,KAAO,CACd,IAAKA,EAAI,IAAI,IACb,OAAQ,CAAEN,CAAI,EAAE,OAAOM,EAAI,IAAI,OAAO,IAAIE,CAAS,CAAC,CACtD,CACF,EACOR,CACT,EAEAE,GAAM,UAAU,QAAU,UAAmB,CAC3C,OAAI,KAAK,WAAW,EACX,sBACF,gBAAkB,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,EACpD,OAAS,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,EAAI,GAClD,EAEAA,GAAM,UAAU,WAAa,UAAsB,CACjD,OAAO,KAAK,GACd,EAEAA,GAAM,UAAU,IAAM,SAAaH,EAAG,CAEpC,GAAI,KAAK,IACP,OAAOA,EAGT,GAAIA,EAAE,IACJ,OAAO,KAGT,GAAI,KAAK,GAAGA,CAAC,EACX,OAAO,KAAK,IAAI,EAGlB,GAAI,KAAK,IAAI,EAAE,GAAGA,CAAC,EACjB,OAAO,KAAK,MAAM,MAAM,KAAM,IAAI,EAGpC,GAAI,KAAK,EAAE,IAAIA,EAAE,CAAC,IAAM,EACtB,OAAO,KAAK,MAAM,MAAM,KAAM,IAAI,EAEpC,IAAIU,EAAI,KAAK,EAAE,OAAOV,EAAE,CAAC,EACrBU,EAAE,KAAK,CAAC,IAAM,IAChBA,EAAIA,EAAE,OAAO,KAAK,EAAE,OAAOV,EAAE,CAAC,EAAE,QAAQ,CAAC,GAC3C,IAAIW,EAAKD,EAAE,OAAO,EAAE,QAAQ,KAAK,CAAC,EAAE,QAAQV,EAAE,CAAC,EAC3CY,EAAKF,EAAE,OAAO,KAAK,EAAE,OAAOC,CAAE,CAAC,EAAE,QAAQ,KAAK,CAAC,EACnD,OAAO,KAAK,MAAM,MAAMA,EAAIC,CAAE,CAChC,EAEAT,GAAM,UAAU,IAAM,UAAe,CACnC,GAAI,KAAK,IACP,OAAO,KAGT,IAAIU,EAAM,KAAK,EAAE,OAAO,KAAK,CAAC,EAC9B,GAAIA,EAAI,KAAK,CAAC,IAAM,EAClB,OAAO,KAAK,MAAM,MAAM,KAAM,IAAI,EAEpC,IAAIC,EAAI,KAAK,MAAM,EAEfpD,EAAK,KAAK,EAAE,OAAO,EACnBqD,EAAQF,EAAI,QAAQ,EACpBH,EAAIhD,EAAG,OAAOA,CAAE,EAAE,QAAQA,CAAE,EAAE,QAAQoD,CAAC,EAAE,OAAOC,CAAK,EAErDJ,EAAKD,EAAE,OAAO,EAAE,QAAQ,KAAK,EAAE,OAAO,KAAK,CAAC,CAAC,EAC7CE,EAAKF,EAAE,OAAO,KAAK,EAAE,OAAOC,CAAE,CAAC,EAAE,QAAQ,KAAK,CAAC,EACnD,OAAO,KAAK,MAAM,MAAMA,EAAIC,CAAE,CAChC,EAEAT,GAAM,UAAU,KAAO,UAAgB,CACrC,OAAO,KAAK,EAAE,QAAQ,CACxB,EAEAA,GAAM,UAAU,KAAO,UAAgB,CACrC,OAAO,KAAK,EAAE,QAAQ,CACxB,EAEAA,GAAM,UAAU,IAAM,SAAazB,EAAG,CAEpC,OADAA,EAAI,IAAIxC,GAAGwC,EAAG,EAAE,EACZ,KAAK,WAAW,EACX,KACA,KAAK,YAAYA,CAAC,EAClB,KAAK,MAAM,aAAa,KAAMA,CAAC,EAC/B,KAAK,MAAM,KACX,KAAK,MAAM,gBAAgB,CAAE,IAAK,EAAG,CAAEA,CAAE,CAAC,EAE1C,KAAK,MAAM,SAAS,KAAMA,CAAC,CACtC,EAEAyB,GAAM,UAAU,OAAS,SAAgBhB,EAAIH,EAAII,EAAI,CACnD,IAAIM,EAAS,CAAE,KAAMV,CAAG,EACpBW,EAAS,CAAER,EAAIC,CAAG,EACtB,OAAI,KAAK,MAAM,KACN,KAAK,MAAM,gBAAgBM,EAAQC,CAAM,EAEzC,KAAK,MAAM,YAAY,EAAGD,EAAQC,EAAQ,CAAC,CACtD,EAEAQ,GAAM,UAAU,QAAU,SAAiBhB,EAAIH,EAAII,EAAI,CACrD,IAAIM,EAAS,CAAE,KAAMV,CAAG,EACpBW,EAAS,CAAER,EAAIC,CAAG,EACtB,OAAI,KAAK,MAAM,KACN,KAAK,MAAM,gBAAgBM,EAAQC,EAAQ,EAAI,EAE/C,KAAK,MAAM,YAAY,EAAGD,EAAQC,EAAQ,EAAG,EAAI,CAC5D,EAEAQ,GAAM,UAAU,GAAK,SAAYH,EAAG,CAClC,OAAO,OAASA,GACT,KAAK,MAAQA,EAAE,MACV,KAAK,KAAO,KAAK,EAAE,IAAIA,EAAE,CAAC,IAAM,GAAK,KAAK,EAAE,IAAIA,EAAE,CAAC,IAAM,EACvE,EAEAG,GAAM,UAAU,IAAM,SAAaa,EAAa,CAC9C,GAAI,KAAK,IACP,OAAO,KAET,IAAIf,EAAM,KAAK,MAAM,MAAM,KAAK,EAAG,KAAK,EAAE,OAAO,CAAC,EAClD,GAAIe,GAAe,KAAK,YAAa,CACnC,IAAIT,EAAM,KAAK,YACXU,EAAS,SAASjB,EAAG,CACvB,OAAOA,EAAE,IAAI,CACf,EACAC,EAAI,YAAc,CAChB,IAAKM,EAAI,KAAO,CACd,IAAKA,EAAI,IAAI,IACb,OAAQA,EAAI,IAAI,OAAO,IAAIU,CAAM,CACnC,EACA,QAASV,EAAI,SAAW,CACtB,KAAMA,EAAI,QAAQ,KAClB,OAAQA,EAAI,QAAQ,OAAO,IAAIU,CAAM,CACvC,CACF,CACF,CACA,OAAOhB,CACT,EAEAE,GAAM,UAAU,IAAM,UAAe,CACnC,GAAI,KAAK,IACP,OAAO,KAAK,MAAM,OAAO,KAAM,KAAM,IAAI,EAE3C,IAAIF,EAAM,KAAK,MAAM,OAAO,KAAK,EAAG,KAAK,EAAG,KAAK,MAAM,GAAG,EAC1D,OAAOA,CACT,EAEA,SAASiB,GAAOd,EAAO/B,EAAGE,EAAG4C,EAAG,CAC9B/E,GAAK,UAAU,KAAK,KAAMgE,EAAO,UAAU,EACvC/B,IAAM,MAAQE,IAAM,MAAQ4C,IAAM,MACpC,KAAK,EAAI,KAAK,MAAM,IACpB,KAAK,EAAI,KAAK,MAAM,IACpB,KAAK,EAAI,IAAIjF,GAAG,CAAC,IAEjB,KAAK,EAAI,IAAIA,GAAGmC,EAAG,EAAE,EACrB,KAAK,EAAI,IAAInC,GAAGqC,EAAG,EAAE,EACrB,KAAK,EAAI,IAAIrC,GAAGiF,EAAG,EAAE,GAElB,KAAK,EAAE,MACV,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GACjC,KAAK,EAAE,MACV,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GACjC,KAAK,EAAE,MACV,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GAEtC,KAAK,KAAO,KAAK,IAAM,KAAK,MAAM,GACpC,CACAhF,GAAS+E,GAAQ9E,GAAK,SAAS,EAE/BE,GAAW,UAAU,OAAS,SAAgB+B,EAAGE,EAAG4C,EAAG,CACrD,OAAO,IAAID,GAAO,KAAM7C,EAAGE,EAAG4C,CAAC,CACjC,EAEAD,GAAO,UAAU,IAAM,UAAe,CACpC,GAAI,KAAK,WAAW,EAClB,OAAO,KAAK,MAAM,MAAM,KAAM,IAAI,EAEpC,IAAIE,EAAO,KAAK,EAAE,QAAQ,EACtBC,EAAQD,EAAK,OAAO,EACpB5B,EAAK,KAAK,EAAE,OAAO6B,CAAK,EACxBC,EAAK,KAAK,EAAE,OAAOD,CAAK,EAAE,OAAOD,CAAI,EAEzC,OAAO,KAAK,MAAM,MAAM5B,EAAI8B,CAAE,CAChC,EAEAJ,GAAO,UAAU,IAAM,UAAe,CACpC,OAAO,KAAK,MAAM,OAAO,KAAK,EAAG,KAAK,EAAE,OAAO,EAAG,KAAK,CAAC,CAC1D,EAEAA,GAAO,UAAU,IAAM,SAAalB,EAAG,CAErC,GAAI,KAAK,WAAW,EAClB,OAAOA,EAGT,GAAIA,EAAE,WAAW,EACf,OAAO,KAGT,IAAIuB,EAAMvB,EAAE,EAAE,OAAO,EACjBwB,EAAK,KAAK,EAAE,OAAO,EACnBC,EAAK,KAAK,EAAE,OAAOF,CAAG,EACtBG,EAAK1B,EAAE,EAAE,OAAOwB,CAAE,EAClBG,EAAK,KAAK,EAAE,OAAOJ,EAAI,OAAOvB,EAAE,CAAC,CAAC,EAClC4B,EAAK5B,EAAE,EAAE,OAAOwB,EAAG,OAAO,KAAK,CAAC,CAAC,EAEjCK,EAAIJ,EAAG,OAAOC,CAAE,EAChBtD,EAAIuD,EAAG,OAAOC,CAAE,EACpB,GAAIC,EAAE,KAAK,CAAC,IAAM,EAChB,OAAIzD,EAAE,KAAK,CAAC,IAAM,EACT,KAAK,MAAM,OAAO,KAAM,KAAM,IAAI,EAElC,KAAK,IAAI,EAGpB,IAAI0D,EAAKD,EAAE,OAAO,EACdE,EAAKD,EAAG,OAAOD,CAAC,EAChBtE,EAAIkE,EAAG,OAAOK,CAAE,EAEhBnB,EAAKvC,EAAE,OAAO,EAAE,QAAQ2D,CAAE,EAAE,QAAQxE,CAAC,EAAE,QAAQA,CAAC,EAChDqD,EAAKxC,EAAE,OAAOb,EAAE,QAAQoD,CAAE,CAAC,EAAE,QAAQgB,EAAG,OAAOI,CAAE,CAAC,EAClDC,EAAK,KAAK,EAAE,OAAOhC,EAAE,CAAC,EAAE,OAAO6B,CAAC,EAEpC,OAAO,KAAK,MAAM,OAAOlB,EAAIC,EAAIoB,CAAE,CACrC,EAEAd,GAAO,UAAU,SAAW,SAAkBlB,EAAG,CAE/C,GAAI,KAAK,WAAW,EAClB,OAAOA,EAAE,IAAI,EAGf,GAAIA,EAAE,WAAW,EACf,OAAO,KAGT,IAAIwB,EAAK,KAAK,EAAE,OAAO,EACnBC,EAAK,KAAK,EACVC,EAAK1B,EAAE,EAAE,OAAOwB,CAAE,EAClBG,EAAK,KAAK,EACVC,EAAK5B,EAAE,EAAE,OAAOwB,CAAE,EAAE,OAAO,KAAK,CAAC,EAEjCK,EAAIJ,EAAG,OAAOC,CAAE,EAChBtD,EAAIuD,EAAG,OAAOC,CAAE,EACpB,GAAIC,EAAE,KAAK,CAAC,IAAM,EAChB,OAAIzD,EAAE,KAAK,CAAC,IAAM,EACT,KAAK,MAAM,OAAO,KAAM,KAAM,IAAI,EAElC,KAAK,IAAI,EAGpB,IAAI0D,EAAKD,EAAE,OAAO,EACdE,EAAKD,EAAG,OAAOD,CAAC,EAChBtE,EAAIkE,EAAG,OAAOK,CAAE,EAEhBnB,EAAKvC,EAAE,OAAO,EAAE,QAAQ2D,CAAE,EAAE,QAAQxE,CAAC,EAAE,QAAQA,CAAC,EAChDqD,EAAKxC,EAAE,OAAOb,EAAE,QAAQoD,CAAE,CAAC,EAAE,QAAQgB,EAAG,OAAOI,CAAE,CAAC,EAClDC,EAAK,KAAK,EAAE,OAAOH,CAAC,EAExB,OAAO,KAAK,MAAM,OAAOlB,EAAIC,EAAIoB,CAAE,CACrC,EAEAd,GAAO,UAAU,KAAO,SAAce,EAAK,CACzC,GAAIA,IAAQ,EACV,OAAO,KACT,GAAI,KAAK,WAAW,EAClB,OAAO,KACT,GAAI,CAACA,EACH,OAAO,KAAK,IAAI,EAElB,IAAI9D,EACJ,GAAI,KAAK,MAAM,OAAS,KAAK,MAAM,OAAQ,CACzC,IAAIC,EAAI,KACR,IAAKD,EAAI,EAAGA,EAAI8D,EAAK9D,IACnBC,EAAIA,EAAE,IAAI,EACZ,OAAOA,CACT,CAIA,IAAI0C,EAAI,KAAK,MAAM,EACf9D,EAAO,KAAK,MAAM,KAElBkF,EAAK,KAAK,EACVC,EAAK,KAAK,EACVC,EAAK,KAAK,EACVC,EAAMD,EAAG,OAAO,EAAE,OAAO,EAGzBE,EAAMH,EAAG,OAAOA,CAAE,EACtB,IAAKhE,EAAI,EAAGA,EAAI8D,EAAK9D,IAAK,CACxB,IAAIoE,EAAML,EAAG,OAAO,EAChBM,EAAOF,EAAI,OAAO,EAClBG,EAAOD,EAAK,OAAO,EACnB9B,EAAI6B,EAAI,OAAOA,CAAG,EAAE,QAAQA,CAAG,EAAE,QAAQzB,EAAE,OAAOuB,CAAG,CAAC,EAEtDK,EAAKR,EAAG,OAAOM,CAAI,EACnB7B,EAAKD,EAAE,OAAO,EAAE,QAAQgC,EAAG,OAAOA,CAAE,CAAC,EACrCC,EAAKD,EAAG,QAAQ/B,CAAE,EAClBiC,EAAMlC,EAAE,OAAOiC,CAAE,EACrBC,EAAMA,EAAI,QAAQA,CAAG,EAAE,QAAQH,CAAI,EACnC,IAAIT,EAAKM,EAAI,OAAOF,CAAE,EAClBjE,EAAI,EAAI8D,IACVI,EAAMA,EAAI,OAAOI,CAAI,GAEvBP,EAAKvB,EACLyB,EAAKJ,EACLM,EAAMM,CACR,CAEA,OAAO,KAAK,MAAM,OAAOV,EAAII,EAAI,OAAOtF,CAAI,EAAGoF,CAAE,CACnD,EAEAlB,GAAO,UAAU,IAAM,UAAe,CACpC,OAAI,KAAK,WAAW,EACX,KAEL,KAAK,MAAM,MACN,KAAK,SAAS,EACd,KAAK,MAAM,OACX,KAAK,UAAU,EAEf,KAAK,KAAK,CACrB,EAEAA,GAAO,UAAU,SAAW,UAAoB,CAC9C,IAAIP,EACAC,EACAoB,EAEJ,GAAI,KAAK,KAAM,CAMb,IAAIa,EAAK,KAAK,EAAE,OAAO,EAEnBC,EAAK,KAAK,EAAE,OAAO,EAEnBC,EAAOD,EAAG,OAAO,EAEjB5F,EAAI,KAAK,EAAE,OAAO4F,CAAE,EAAE,OAAO,EAAE,QAAQD,CAAE,EAAE,QAAQE,CAAI,EAC3D7F,EAAIA,EAAE,QAAQA,CAAC,EAEf,IAAI8F,EAAIH,EAAG,OAAOA,CAAE,EAAE,QAAQA,CAAE,EAE5BI,EAAID,EAAE,OAAO,EAAE,QAAQ9F,CAAC,EAAE,QAAQA,CAAC,EAGnCgG,EAAQH,EAAK,QAAQA,CAAI,EAC7BG,EAAQA,EAAM,QAAQA,CAAK,EAC3BA,EAAQA,EAAM,QAAQA,CAAK,EAG3BvC,EAAKsC,EAELrC,EAAKoC,EAAE,OAAO9F,EAAE,QAAQ+F,CAAC,CAAC,EAAE,QAAQC,CAAK,EAEzClB,EAAK,KAAK,EAAE,OAAO,KAAK,CAAC,CAC3B,KAAO,CAML,IAAIlB,EAAI,KAAK,EAAE,OAAO,EAElBqC,EAAI,KAAK,EAAE,OAAO,EAElBzC,EAAIyC,EAAE,OAAO,EAEbC,EAAI,KAAK,EAAE,OAAOD,CAAC,EAAE,OAAO,EAAE,QAAQrC,CAAC,EAAE,QAAQJ,CAAC,EACtD0C,EAAIA,EAAE,QAAQA,CAAC,EAEf,IAAIC,EAAIvC,EAAE,OAAOA,CAAC,EAAE,QAAQA,CAAC,EAEzBwC,EAAID,EAAE,OAAO,EAGbE,EAAK7C,EAAE,QAAQA,CAAC,EACpB6C,EAAKA,EAAG,QAAQA,CAAE,EAClBA,EAAKA,EAAG,QAAQA,CAAE,EAGlB5C,EAAK2C,EAAE,QAAQF,CAAC,EAAE,QAAQA,CAAC,EAE3BxC,EAAKyC,EAAE,OAAOD,EAAE,QAAQzC,CAAE,CAAC,EAAE,QAAQ4C,CAAE,EAEvCvB,EAAK,KAAK,EAAE,OAAO,KAAK,CAAC,EACzBA,EAAKA,EAAG,QAAQA,CAAE,CACpB,CAEA,OAAO,KAAK,MAAM,OAAOrB,EAAIC,EAAIoB,CAAE,CACrC,EAEAd,GAAO,UAAU,UAAY,UAAqB,CAChD,IAAIP,EACAC,EACAoB,EAEJ,GAAI,KAAK,KAAM,CAMb,IAAIa,EAAK,KAAK,EAAE,OAAO,EAEnBC,EAAK,KAAK,EAAE,OAAO,EAEnBC,EAAOD,EAAG,OAAO,EAEjB5F,EAAI,KAAK,EAAE,OAAO4F,CAAE,EAAE,OAAO,EAAE,QAAQD,CAAE,EAAE,QAAQE,CAAI,EAC3D7F,EAAIA,EAAE,QAAQA,CAAC,EAEf,IAAI8F,EAAIH,EAAG,OAAOA,CAAE,EAAE,QAAQA,CAAE,EAAE,QAAQ,KAAK,MAAM,CAAC,EAElDI,EAAID,EAAE,OAAO,EAAE,QAAQ9F,CAAC,EAAE,QAAQA,CAAC,EAEvCyD,EAAKsC,EAEL,IAAIC,EAAQH,EAAK,QAAQA,CAAI,EAC7BG,EAAQA,EAAM,QAAQA,CAAK,EAC3BA,EAAQA,EAAM,QAAQA,CAAK,EAC3BtC,EAAKoC,EAAE,OAAO9F,EAAE,QAAQ+F,CAAC,CAAC,EAAE,QAAQC,CAAK,EAEzClB,EAAK,KAAK,EAAE,OAAO,KAAK,CAAC,CAC3B,KAAO,CAKL,IAAIwB,EAAQ,KAAK,EAAE,OAAO,EAEtBC,EAAQ,KAAK,EAAE,OAAO,EAEtBjH,EAAO,KAAK,EAAE,OAAOiH,CAAK,EAE1BC,EAAQ,KAAK,EAAE,OAAOF,CAAK,EAAE,OAAO,KAAK,EAAE,OAAOA,CAAK,CAAC,EAC5DE,EAAQA,EAAM,OAAOA,CAAK,EAAE,QAAQA,CAAK,EAEzC,IAAIC,EAAQnH,EAAK,QAAQA,CAAI,EAC7BmH,EAAQA,EAAM,QAAQA,CAAK,EAC3B,IAAIC,EAAQD,EAAM,OAAOA,CAAK,EAC9BhD,EAAK+C,EAAM,OAAO,EAAE,QAAQE,CAAK,EAEjC5B,EAAK,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQyB,CAAK,EAAE,QAAQD,CAAK,EAEhE,IAAIK,EAAUJ,EAAM,OAAO,EAC3BI,EAAUA,EAAQ,QAAQA,CAAO,EACjCA,EAAUA,EAAQ,QAAQA,CAAO,EACjCA,EAAUA,EAAQ,QAAQA,CAAO,EACjCjD,EAAK8C,EAAM,OAAOC,EAAM,QAAQhD,CAAE,CAAC,EAAE,QAAQkD,CAAO,CACtD,CAEA,OAAO,KAAK,MAAM,OAAOlD,EAAIC,EAAIoB,CAAE,CACrC,EAEAd,GAAO,UAAU,KAAO,UAAgB,CACtC,IAAIJ,EAAI,KAAK,MAAM,EAGfoB,EAAK,KAAK,EACVC,EAAK,KAAK,EACVC,EAAK,KAAK,EACVC,EAAMD,EAAG,OAAO,EAAE,OAAO,EAEzBG,EAAML,EAAG,OAAO,EAChB4B,EAAM3B,EAAG,OAAO,EAEhBzB,EAAI6B,EAAI,OAAOA,CAAG,EAAE,QAAQA,CAAG,EAAE,QAAQzB,EAAE,OAAOuB,CAAG,CAAC,EAEtD0B,EAAO7B,EAAG,OAAOA,CAAE,EACvB6B,EAAOA,EAAK,QAAQA,CAAI,EACxB,IAAIrB,EAAKqB,EAAK,OAAOD,CAAG,EACpBnD,EAAKD,EAAE,OAAO,EAAE,QAAQgC,EAAG,OAAOA,CAAE,CAAC,EACrCC,EAAKD,EAAG,QAAQ/B,CAAE,EAElBqD,EAAOF,EAAI,OAAO,EACtBE,EAAOA,EAAK,QAAQA,CAAI,EACxBA,EAAOA,EAAK,QAAQA,CAAI,EACxBA,EAAOA,EAAK,QAAQA,CAAI,EACxB,IAAIpD,EAAKF,EAAE,OAAOiC,CAAE,EAAE,QAAQqB,CAAI,EAC9BhC,EAAKG,EAAG,OAAOA,CAAE,EAAE,OAAOC,CAAE,EAEhC,OAAO,KAAK,MAAM,OAAOzB,EAAIC,EAAIoB,CAAE,CACrC,EAEAd,GAAO,UAAU,KAAO,UAAgB,CACtC,GAAI,CAAC,KAAK,MAAM,MACd,OAAO,KAAK,IAAI,EAAE,IAAI,IAAI,EAM5B,IAAI2B,EAAK,KAAK,EAAE,OAAO,EAEnBC,EAAK,KAAK,EAAE,OAAO,EAEnBmB,EAAK,KAAK,EAAE,OAAO,EAEnBlB,EAAOD,EAAG,OAAO,EAEjBE,EAAIH,EAAG,OAAOA,CAAE,EAAE,QAAQA,CAAE,EAE5BqB,EAAKlB,EAAE,OAAO,EAEdK,EAAI,KAAK,EAAE,OAAOP,CAAE,EAAE,OAAO,EAAE,QAAQD,CAAE,EAAE,QAAQE,CAAI,EAC3DM,EAAIA,EAAE,QAAQA,CAAC,EACfA,EAAIA,EAAE,OAAOA,CAAC,EAAE,QAAQA,CAAC,EACzBA,EAAIA,EAAE,QAAQa,CAAE,EAEhB,IAAIC,EAAKd,EAAE,OAAO,EAEdJ,EAAIF,EAAK,QAAQA,CAAI,EACzBE,EAAIA,EAAE,QAAQA,CAAC,EACfA,EAAIA,EAAE,QAAQA,CAAC,EACfA,EAAIA,EAAE,QAAQA,CAAC,EAEf,IAAI3F,EAAI0F,EAAE,QAAQK,CAAC,EAAE,OAAO,EAAE,QAAQa,CAAE,EAAE,QAAQC,CAAE,EAAE,QAAQlB,CAAC,EAE3DmB,EAAOtB,EAAG,OAAOxF,CAAC,EACtB8G,EAAOA,EAAK,QAAQA,CAAI,EACxBA,EAAOA,EAAK,QAAQA,CAAI,EACxB,IAAIzD,EAAK,KAAK,EAAE,OAAOwD,CAAE,EAAE,QAAQC,CAAI,EACvCzD,EAAKA,EAAG,QAAQA,CAAE,EAClBA,EAAKA,EAAG,QAAQA,CAAE,EAElB,IAAIC,EAAK,KAAK,EAAE,OAAOtD,EAAE,OAAO2F,EAAE,QAAQ3F,CAAC,CAAC,EAAE,QAAQ+F,EAAE,OAAOc,CAAE,CAAC,CAAC,EACnEvD,EAAKA,EAAG,QAAQA,CAAE,EAClBA,EAAKA,EAAG,QAAQA,CAAE,EAClBA,EAAKA,EAAG,QAAQA,CAAE,EAElB,IAAIoB,EAAK,KAAK,EAAE,OAAOqB,CAAC,EAAE,OAAO,EAAE,QAAQY,CAAE,EAAE,QAAQE,CAAE,EAEzD,OAAO,KAAK,MAAM,OAAOxD,EAAIC,EAAIoB,CAAE,CACrC,EAEAd,GAAO,UAAU,IAAM,SAAaxC,EAAG2F,EAAO,CAC5C,OAAA3F,EAAI,IAAIxC,GAAGwC,EAAG2F,CAAK,EAEZ,KAAK,MAAM,SAAS,KAAM3F,CAAC,CACpC,EAEAwC,GAAO,UAAU,GAAK,SAAYlB,EAAG,CACnC,GAAIA,EAAE,OAAS,SACb,OAAO,KAAK,GAAGA,EAAE,IAAI,CAAC,EAExB,GAAI,OAASA,EACX,MAAO,GAGT,IAAIwB,EAAK,KAAK,EAAE,OAAO,EACnBD,EAAMvB,EAAE,EAAE,OAAO,EACrB,GAAI,KAAK,EAAE,OAAOuB,CAAG,EAAE,QAAQvB,EAAE,EAAE,OAAOwB,CAAE,CAAC,EAAE,KAAK,CAAC,IAAM,EACzD,MAAO,GAGT,IAAI8C,EAAK9C,EAAG,OAAO,KAAK,CAAC,EACrB+C,EAAMhD,EAAI,OAAOvB,EAAE,CAAC,EACxB,OAAO,KAAK,EAAE,OAAOuE,CAAG,EAAE,QAAQvE,EAAE,EAAE,OAAOsE,CAAE,CAAC,EAAE,KAAK,CAAC,IAAM,CAChE,EAEApD,GAAO,UAAU,OAAS,SAAgB7C,EAAG,CAC3C,IAAImG,EAAK,KAAK,EAAE,OAAO,EACnBC,EAAKpG,EAAE,MAAM,KAAK,MAAM,GAAG,EAAE,OAAOmG,CAAE,EAC1C,GAAI,KAAK,EAAE,IAAIC,CAAE,IAAM,EACrB,MAAO,GAIT,QAFIC,EAAKrG,EAAE,MAAM,EACb4E,EAAI,KAAK,MAAM,KAAK,OAAOuB,CAAE,IACxB,CAEP,GADAE,EAAG,KAAK,KAAK,MAAM,CAAC,EAChBA,EAAG,IAAI,KAAK,MAAM,CAAC,GAAK,EAC1B,MAAO,GAGT,GADAD,EAAG,QAAQxB,CAAC,EACR,KAAK,EAAE,IAAIwB,CAAE,IAAM,EACrB,MAAO,EACX,CACF,EAEAvD,GAAO,UAAU,QAAU,UAAmB,CAC5C,OAAI,KAAK,WAAW,EACX,uBACF,iBAAmB,KAAK,EAAE,SAAS,GAAI,CAAC,EAC3C,OAAS,KAAK,EAAE,SAAS,GAAI,CAAC,EAC9B,OAAS,KAAK,EAAE,SAAS,GAAI,CAAC,EAAI,GACxC,EAEAA,GAAO,UAAU,WAAa,UAAsB,CAElD,OAAO,KAAK,EAAE,KAAK,CAAC,IAAM,CAC5B,ICz6BA,IAAAyD,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAK,KACLC,GAAW,KACXC,GAAO,KAEPC,GAAQ,KAEZ,SAASC,GAAUC,EAAM,CACvBH,GAAK,KAAK,KAAM,OAAQG,CAAI,EAE5B,KAAK,EAAI,IAAIL,GAAGK,EAAK,EAAG,EAAE,EAAE,MAAM,KAAK,GAAG,EAC1C,KAAK,EAAI,IAAIL,GAAGK,EAAK,EAAG,EAAE,EAAE,MAAM,KAAK,GAAG,EAC1C,KAAK,GAAK,IAAIL,GAAG,CAAC,EAAE,MAAM,KAAK,GAAG,EAAE,QAAQ,EAC5C,KAAK,IAAM,IAAIA,GAAG,CAAC,EAAE,MAAM,KAAK,GAAG,EACnC,KAAK,IAAM,KAAK,GAAG,OAAO,KAAK,EAAE,OAAO,KAAK,GAAG,CAAC,CACnD,CACAC,GAASG,GAAWF,EAAI,EACxBH,GAAO,QAAUK,GAEjBA,GAAU,UAAU,SAAW,SAAkBE,EAAO,CACtD,IAAIC,EAAID,EAAM,UAAU,EAAE,EACtBE,EAAKD,EAAE,OAAO,EACdE,EAAMD,EAAG,OAAOD,CAAC,EAAE,OAAOC,EAAG,OAAO,KAAK,CAAC,CAAC,EAAE,OAAOD,CAAC,EACrDG,EAAID,EAAI,QAAQ,EAEpB,OAAOC,EAAE,OAAO,EAAE,IAAID,CAAG,IAAM,CACjC,EAEA,SAASE,GAAMC,EAAOL,EAAGM,EAAG,CAC1BX,GAAK,UAAU,KAAK,KAAMU,EAAO,YAAY,EACzCL,IAAM,MAAQM,IAAM,MACtB,KAAK,EAAI,KAAK,MAAM,IACpB,KAAK,EAAI,KAAK,MAAM,OAEpB,KAAK,EAAI,IAAIb,GAAGO,EAAG,EAAE,EACrB,KAAK,EAAI,IAAIP,GAAGa,EAAG,EAAE,EAChB,KAAK,EAAE,MACV,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GACjC,KAAK,EAAE,MACV,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GAE1C,CACAZ,GAASU,GAAOT,GAAK,SAAS,EAE9BE,GAAU,UAAU,YAAc,SAAqBU,EAAOC,EAAK,CACjE,OAAO,KAAK,MAAMZ,GAAM,QAAQW,EAAOC,CAAG,EAAG,CAAC,CAChD,EAEAX,GAAU,UAAU,MAAQ,SAAeG,EAAGM,EAAG,CAC/C,OAAO,IAAIF,GAAM,KAAMJ,EAAGM,CAAC,CAC7B,EAEAT,GAAU,UAAU,cAAgB,SAAuBY,EAAK,CAC9D,OAAOL,GAAM,SAAS,KAAMK,CAAG,CACjC,EAEAL,GAAM,UAAU,WAAa,UAAsB,CAEnD,EAEAA,GAAM,UAAU,QAAU,UAAmB,CAC3C,OAAO,KAAK,KAAK,EAAE,QAAQ,KAAM,KAAK,MAAM,EAAE,WAAW,CAAC,CAC5D,EAEAA,GAAM,SAAW,SAAkBC,EAAOI,EAAK,CAC7C,OAAO,IAAIL,GAAMC,EAAOI,EAAI,GAAIA,EAAI,IAAMJ,EAAM,GAAG,CACrD,EAEAD,GAAM,UAAU,QAAU,UAAmB,CAC3C,OAAI,KAAK,WAAW,EACX,sBACF,gBAAkB,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,EACpD,OAAS,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,EAAI,GAClD,EAEAA,GAAM,UAAU,WAAa,UAAsB,CAEjD,OAAO,KAAK,EAAE,KAAK,CAAC,IAAM,CAC5B,EAEAA,GAAM,UAAU,IAAM,UAAe,CAKnC,IAAIM,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAExBC,EAAKD,EAAE,OAAO,EAEdE,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAExBC,EAAKD,EAAE,OAAO,EAEdE,EAAIH,EAAG,OAAOE,CAAE,EAEhBE,EAAKJ,EAAG,OAAOE,CAAE,EAEjBG,EAAKF,EAAE,OAAOD,EAAG,OAAO,KAAK,MAAM,IAAI,OAAOC,CAAC,CAAC,CAAC,EACrD,OAAO,KAAK,MAAM,MAAMC,EAAIC,CAAE,CAChC,EAEAZ,GAAM,UAAU,IAAM,UAAe,CACnC,MAAM,IAAI,MAAM,mCAAmC,CACrD,EAEAA,GAAM,UAAU,QAAU,SAAiBa,EAAGC,EAAM,CAKlD,IAAIR,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAExBE,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAExBE,EAAIG,EAAE,EAAE,OAAOA,EAAE,CAAC,EAElBE,EAAIF,EAAE,EAAE,OAAOA,EAAE,CAAC,EAElBG,EAAKD,EAAE,OAAOT,CAAC,EAEfW,EAAKP,EAAE,OAAOF,CAAC,EAEfG,EAAKG,EAAK,EAAE,OAAOE,EAAG,OAAOC,CAAE,EAAE,OAAO,CAAC,EAEzCL,EAAKE,EAAK,EAAE,OAAOE,EAAG,QAAQC,CAAE,EAAE,OAAO,CAAC,EAC9C,OAAO,KAAK,MAAM,MAAMN,EAAIC,CAAE,CAChC,EAEAZ,GAAM,UAAU,IAAM,SAAakB,EAAG,CAMpC,QALIC,EAAID,EAAE,MAAM,EACZZ,EAAI,KACJE,EAAI,KAAK,MAAM,MAAM,KAAM,IAAI,EAC/BE,EAAI,KAECU,EAAO,CAAC,EAAGD,EAAE,KAAK,CAAC,IAAM,EAAGA,EAAE,OAAO,CAAC,EAC7CC,EAAK,KAAKD,EAAE,MAAM,CAAC,CAAC,EAEtB,QAASE,EAAID,EAAK,OAAS,EAAGC,GAAK,EAAGA,IAChCD,EAAKC,KAAO,GAEdf,EAAIA,EAAE,QAAQE,EAAGE,CAAC,EAElBF,EAAIA,EAAE,IAAI,IAGVA,EAAIF,EAAE,QAAQE,EAAGE,CAAC,EAElBJ,EAAIA,EAAE,IAAI,GAGd,OAAOE,CACT,EAEAR,GAAM,UAAU,OAAS,UAAkB,CACzC,MAAM,IAAI,MAAM,mCAAmC,CACrD,EAEAA,GAAM,UAAU,QAAU,UAAmB,CAC3C,MAAM,IAAI,MAAM,mCAAmC,CACrD,EAEAA,GAAM,UAAU,GAAK,SAAYsB,EAAO,CACtC,OAAO,KAAK,KAAK,EAAE,IAAIA,EAAM,KAAK,CAAC,IAAM,CAC3C,EAEAtB,GAAM,UAAU,UAAY,UAAqB,CAC/C,YAAK,EAAI,KAAK,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,EACvC,KAAK,EAAI,KAAK,MAAM,IACb,IACT,EAEAA,GAAM,UAAU,KAAO,UAAgB,CAErC,YAAK,UAAU,EAER,KAAK,EAAE,QAAQ,CACxB,ICjLA,IAAAuB,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAQ,KACRC,GAAK,KACLC,GAAW,KACXC,GAAO,KAEPC,GAASJ,GAAM,OAEnB,SAASK,GAAaC,EAAM,CAE1B,KAAK,SAAWA,EAAK,EAAI,KAAO,EAChC,KAAK,MAAQ,KAAK,UAAYA,EAAK,EAAI,KAAO,GAC9C,KAAK,SAAW,KAAK,MAErBH,GAAK,KAAK,KAAM,UAAWG,CAAI,EAE/B,KAAK,EAAI,IAAIL,GAAGK,EAAK,EAAG,EAAE,EAAE,KAAK,KAAK,IAAI,CAAC,EAC3C,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,GAAG,EAC9B,KAAK,EAAI,IAAIL,GAAGK,EAAK,EAAG,EAAE,EAAE,MAAM,KAAK,GAAG,EAC1C,KAAK,GAAK,KAAK,EAAE,OAAO,EACxB,KAAK,EAAI,IAAIL,GAAGK,EAAK,EAAG,EAAE,EAAE,MAAM,KAAK,GAAG,EAC1C,KAAK,GAAK,KAAK,EAAE,OAAO,KAAK,CAAC,EAE9BF,GAAO,CAAC,KAAK,SAAW,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAM,CAAC,EACtD,KAAK,MAAQE,EAAK,EAAI,KAAO,CAC/B,CACAJ,GAASG,GAAcF,EAAI,EAC3BJ,GAAO,QAAUM,GAEjBA,GAAa,UAAU,MAAQ,SAAeE,EAAK,CACjD,OAAI,KAAK,MACAA,EAAI,OAAO,EAEX,KAAK,EAAE,OAAOA,CAAG,CAC5B,EAEAF,GAAa,UAAU,MAAQ,SAAeE,EAAK,CACjD,OAAI,KAAK,KACAA,EAEA,KAAK,EAAE,OAAOA,CAAG,CAC5B,EAGAF,GAAa,UAAU,OAAS,SAAgBG,EAAGC,EAAGC,EAAGC,EAAG,CAC1D,OAAO,KAAK,MAAMH,EAAGC,EAAGC,EAAGC,CAAC,CAC9B,EAEAN,GAAa,UAAU,WAAa,SAAoBG,EAAGI,EAAK,CAC9DJ,EAAI,IAAIP,GAAGO,EAAG,EAAE,EACXA,EAAE,MACLA,EAAIA,EAAE,MAAM,KAAK,GAAG,GAEtB,IAAIK,EAAKL,EAAE,OAAO,EACdM,EAAM,KAAK,GAAG,OAAO,KAAK,EAAE,OAAOD,CAAE,CAAC,EACtCE,EAAM,KAAK,IAAI,OAAO,KAAK,GAAG,OAAO,KAAK,CAAC,EAAE,OAAOF,CAAE,CAAC,EAEvDG,EAAKF,EAAI,OAAOC,EAAI,QAAQ,CAAC,EAC7BN,EAAIO,EAAG,QAAQ,EACnB,GAAIP,EAAE,OAAO,EAAE,OAAOO,CAAE,EAAE,IAAI,KAAK,IAAI,IAAM,EAC3C,MAAM,IAAI,MAAM,eAAe,EAEjC,IAAIC,EAAQR,EAAE,QAAQ,EAAE,MAAM,EAC9B,OAAIG,GAAO,CAACK,GAAS,CAACL,GAAOK,KAC3BR,EAAIA,EAAE,OAAO,GAER,KAAK,MAAMD,EAAGC,CAAC,CACxB,EAEAJ,GAAa,UAAU,WAAa,SAAoBI,EAAGG,EAAK,CAC9DH,EAAI,IAAIR,GAAGQ,EAAG,EAAE,EACXA,EAAE,MACLA,EAAIA,EAAE,MAAM,KAAK,GAAG,GAGtB,IAAIO,EAAKP,EAAE,OAAO,EACdM,EAAMC,EAAG,OAAO,KAAK,EAAE,EACvBF,EAAME,EAAG,OAAO,KAAK,CAAC,EAAE,OAAO,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,EACrDH,EAAKE,EAAI,OAAOD,EAAI,QAAQ,CAAC,EAEjC,GAAID,EAAG,IAAI,KAAK,IAAI,IAAM,EAAG,CAC3B,GAAID,EACF,MAAM,IAAI,MAAM,eAAe,EAE/B,OAAO,KAAK,MAAM,KAAK,KAAMH,CAAC,CAClC,CAEA,IAAID,EAAIK,EAAG,QAAQ,EACnB,GAAIL,EAAE,OAAO,EAAE,OAAOK,CAAE,EAAE,IAAI,KAAK,IAAI,IAAM,EAC3C,MAAM,IAAI,MAAM,eAAe,EAEjC,OAAIL,EAAE,QAAQ,EAAE,MAAM,IAAMI,IAC1BJ,EAAIA,EAAE,OAAO,GAER,KAAK,MAAMA,EAAGC,CAAC,CACxB,EAEAJ,GAAa,UAAU,SAAW,SAAkBa,EAAO,CACzD,GAAIA,EAAM,WAAW,EACnB,MAAO,GAGTA,EAAM,UAAU,EAEhB,IAAIL,EAAKK,EAAM,EAAE,OAAO,EACpBF,EAAKE,EAAM,EAAE,OAAO,EACpBH,EAAMF,EAAG,OAAO,KAAK,CAAC,EAAE,OAAOG,CAAE,EACjCF,EAAM,KAAK,GAAG,OAAO,KAAK,IAAI,OAAO,KAAK,EAAE,OAAOD,CAAE,EAAE,OAAOG,CAAE,CAAC,CAAC,EAEtE,OAAOD,EAAI,IAAID,CAAG,IAAM,CAC1B,EAEA,SAASK,GAAMC,EAAOZ,EAAGC,EAAGC,EAAGC,EAAG,CAChCR,GAAK,UAAU,KAAK,KAAMiB,EAAO,YAAY,EACzCZ,IAAM,MAAQC,IAAM,MAAQC,IAAM,MACpC,KAAK,EAAI,KAAK,MAAM,KACpB,KAAK,EAAI,KAAK,MAAM,IACpB,KAAK,EAAI,KAAK,MAAM,IACpB,KAAK,EAAI,KAAK,MAAM,KACpB,KAAK,KAAO,KAEZ,KAAK,EAAI,IAAIT,GAAGO,EAAG,EAAE,EACrB,KAAK,EAAI,IAAIP,GAAGQ,EAAG,EAAE,EACrB,KAAK,EAAIC,EAAI,IAAIT,GAAGS,EAAG,EAAE,EAAI,KAAK,MAAM,IACxC,KAAK,EAAIC,GAAK,IAAIV,GAAGU,EAAG,EAAE,EACrB,KAAK,EAAE,MACV,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GACjC,KAAK,EAAE,MACV,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GACjC,KAAK,EAAE,MACV,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GAClC,KAAK,GAAK,CAAC,KAAK,EAAE,MACpB,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GACtC,KAAK,KAAO,KAAK,IAAM,KAAK,MAAM,IAG9B,KAAK,MAAM,UAAY,CAAC,KAAK,IAC/B,KAAK,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EACxB,KAAK,OACR,KAAK,EAAI,KAAK,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,IAG/C,CACAT,GAASiB,GAAOhB,GAAK,SAAS,EAE9BE,GAAa,UAAU,cAAgB,SAAuBgB,EAAK,CACjE,OAAOF,GAAM,SAAS,KAAME,CAAG,CACjC,EAEAhB,GAAa,UAAU,MAAQ,SAAeG,EAAGC,EAAGC,EAAGC,EAAG,CACxD,OAAO,IAAIQ,GAAM,KAAMX,EAAGC,EAAGC,EAAGC,CAAC,CACnC,EAEAQ,GAAM,SAAW,SAAkBC,EAAOC,EAAK,CAC7C,OAAO,IAAIF,GAAMC,EAAOC,EAAI,GAAIA,EAAI,GAAIA,EAAI,EAAE,CAChD,EAEAF,GAAM,UAAU,QAAU,UAAmB,CAC3C,OAAI,KAAK,WAAW,EACX,sBACF,gBAAkB,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,EACpD,OAAS,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,EACxC,OAAS,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,EAAI,GAClD,EAEAA,GAAM,UAAU,WAAa,UAAsB,CAEjD,OAAO,KAAK,EAAE,KAAK,CAAC,IAAM,IACvB,KAAK,EAAE,IAAI,KAAK,CAAC,IAAM,GACvB,KAAK,MAAQ,KAAK,EAAE,IAAI,KAAK,MAAM,CAAC,IAAM,EAC/C,EAEAA,GAAM,UAAU,QAAU,UAAmB,CAM3C,IAAIG,EAAI,KAAK,EAAE,OAAO,EAElBC,EAAI,KAAK,EAAE,OAAO,EAElBC,EAAI,KAAK,EAAE,OAAO,EACtBA,EAAIA,EAAE,QAAQA,CAAC,EAEf,IAAIC,EAAI,KAAK,MAAM,MAAMH,CAAC,EAEtBI,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQJ,CAAC,EAAE,QAAQC,CAAC,EAEvDI,EAAIF,EAAE,OAAOF,CAAC,EAEdK,EAAID,EAAE,OAAOH,CAAC,EAEdK,EAAIJ,EAAE,OAAOF,CAAC,EAEdO,EAAKJ,EAAE,OAAOE,CAAC,EAEfG,EAAKJ,EAAE,OAAOE,CAAC,EAEfG,EAAKN,EAAE,OAAOG,CAAC,EAEfI,EAAKL,EAAE,OAAOD,CAAC,EACnB,OAAO,KAAK,MAAM,MAAMG,EAAIC,EAAIE,EAAID,CAAE,CACxC,EAEAb,GAAM,UAAU,SAAW,UAAoB,CAQ7C,IAAII,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EAEjCC,EAAI,KAAK,EAAE,OAAO,EAElBC,EAAI,KAAK,EAAE,OAAO,EAElBK,EACAC,EACAE,EACAP,EACAG,EACAK,EACJ,GAAI,KAAK,MAAM,QAAS,CAEtBR,EAAI,KAAK,MAAM,MAAMF,CAAC,EAEtB,IAAI,EAAIE,EAAE,OAAOD,CAAC,EACd,KAAK,MAEPK,EAAKP,EAAE,OAAOC,CAAC,EAAE,OAAOC,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,CAAC,EAE1DM,EAAK,EAAE,OAAOL,EAAE,OAAOD,CAAC,CAAC,EAEzBQ,EAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,IAGlCJ,EAAI,KAAK,EAAE,OAAO,EAElBK,EAAI,EAAE,OAAOL,CAAC,EAAE,QAAQA,CAAC,EAEzBC,EAAKP,EAAE,OAAOC,CAAC,EAAE,QAAQC,CAAC,EAAE,OAAOS,CAAC,EAEpCH,EAAK,EAAE,OAAOL,EAAE,OAAOD,CAAC,CAAC,EAEzBQ,EAAK,EAAE,OAAOC,CAAC,EAEnB,MAEER,EAAIF,EAAE,OAAOC,CAAC,EAEdI,EAAI,KAAK,MAAM,MAAM,KAAK,CAAC,EAAE,OAAO,EAEpCK,EAAIR,EAAE,OAAOG,CAAC,EAAE,OAAOA,CAAC,EAExBC,EAAK,KAAK,MAAM,MAAMP,EAAE,QAAQG,CAAC,CAAC,EAAE,OAAOQ,CAAC,EAE5CH,EAAK,KAAK,MAAM,MAAML,CAAC,EAAE,OAAOF,EAAE,QAAQC,CAAC,CAAC,EAE5CQ,EAAKP,EAAE,OAAOQ,CAAC,EAEjB,OAAO,KAAK,MAAM,MAAMJ,EAAIC,EAAIE,CAAE,CACpC,EAEAd,GAAM,UAAU,IAAM,UAAe,CACnC,OAAI,KAAK,WAAW,EACX,KAGL,KAAK,MAAM,SACN,KAAK,QAAQ,EAEb,KAAK,SAAS,CACzB,EAEAA,GAAM,UAAU,QAAU,SAAiBgB,EAAG,CAM5C,IAAIb,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAOa,EAAE,EAAE,OAAOA,EAAE,CAAC,CAAC,EAEhDZ,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAOY,EAAE,EAAE,OAAOA,EAAE,CAAC,CAAC,EAEhDX,EAAI,KAAK,EAAE,OAAO,KAAK,MAAM,EAAE,EAAE,OAAOW,EAAE,CAAC,EAE3CV,EAAI,KAAK,EAAE,OAAOU,EAAE,EAAE,OAAOA,EAAE,CAAC,CAAC,EAEjCT,EAAIH,EAAE,OAAOD,CAAC,EAEdM,EAAIH,EAAE,OAAOD,CAAC,EAEdG,EAAIF,EAAE,OAAOD,CAAC,EAEdK,EAAIN,EAAE,OAAOD,CAAC,EAEdQ,EAAKJ,EAAE,OAAOE,CAAC,EAEfG,EAAKJ,EAAE,OAAOE,CAAC,EAEfG,EAAKN,EAAE,OAAOG,CAAC,EAEfI,EAAKL,EAAE,OAAOD,CAAC,EACnB,OAAO,KAAK,MAAM,MAAMG,EAAIC,EAAIE,EAAID,CAAE,CACxC,EAEAb,GAAM,UAAU,SAAW,SAAkBgB,EAAG,CAO9C,IAAIb,EAAI,KAAK,EAAE,OAAOa,EAAE,CAAC,EAErBZ,EAAID,EAAE,OAAO,EAEbE,EAAI,KAAK,EAAE,OAAOW,EAAE,CAAC,EAErBV,EAAI,KAAK,EAAE,OAAOU,EAAE,CAAC,EAErBT,EAAI,KAAK,MAAM,EAAE,OAAOF,CAAC,EAAE,OAAOC,CAAC,EAEnCG,EAAIL,EAAE,OAAOG,CAAC,EAEdC,EAAIJ,EAAE,OAAOG,CAAC,EAEdU,EAAM,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAOD,EAAE,EAAE,OAAOA,EAAE,CAAC,CAAC,EAAE,QAAQX,CAAC,EAAE,QAAQC,CAAC,EACxEK,EAAKR,EAAE,OAAOM,CAAC,EAAE,OAAOQ,CAAG,EAC3BL,EACAE,EACJ,OAAI,KAAK,MAAM,SAEbF,EAAKT,EAAE,OAAOK,CAAC,EAAE,OAAOF,EAAE,OAAO,KAAK,MAAM,MAAMD,CAAC,CAAC,CAAC,EAErDS,EAAKL,EAAE,OAAOD,CAAC,IAGfI,EAAKT,EAAE,OAAOK,CAAC,EAAE,OAAOF,EAAE,OAAOD,CAAC,CAAC,EAEnCS,EAAK,KAAK,MAAM,MAAML,CAAC,EAAE,OAAOD,CAAC,GAE5B,KAAK,MAAM,MAAMG,EAAIC,EAAIE,CAAE,CACpC,EAEAd,GAAM,UAAU,IAAM,SAAagB,EAAG,CACpC,OAAI,KAAK,WAAW,EACXA,EACLA,EAAE,WAAW,EACR,KAEL,KAAK,MAAM,SACN,KAAK,QAAQA,CAAC,EAEd,KAAK,SAASA,CAAC,CAC1B,EAEAhB,GAAM,UAAU,IAAM,SAAakB,EAAG,CACpC,OAAI,KAAK,YAAYA,CAAC,EACb,KAAK,MAAM,aAAa,KAAMA,CAAC,EAE/B,KAAK,MAAM,SAAS,KAAMA,CAAC,CACtC,EAEAlB,GAAM,UAAU,OAAS,SAAgBmB,EAAIH,EAAGI,EAAI,CAClD,OAAO,KAAK,MAAM,YAAY,EAAG,CAAE,KAAMJ,CAAE,EAAG,CAAEG,EAAIC,CAAG,EAAG,EAAG,EAAK,CACpE,EAEApB,GAAM,UAAU,QAAU,SAAiBmB,EAAIH,EAAGI,EAAI,CACpD,OAAO,KAAK,MAAM,YAAY,EAAG,CAAE,KAAMJ,CAAE,EAAG,CAAEG,EAAIC,CAAG,EAAG,EAAG,EAAI,CACnE,EAEApB,GAAM,UAAU,UAAY,UAAqB,CAC/C,GAAI,KAAK,KACP,OAAO,KAGT,IAAIqB,EAAK,KAAK,EAAE,QAAQ,EACxB,YAAK,EAAI,KAAK,EAAE,OAAOA,CAAE,EACzB,KAAK,EAAI,KAAK,EAAE,OAAOA,CAAE,EACrB,KAAK,IACP,KAAK,EAAI,KAAK,EAAE,OAAOA,CAAE,GAC3B,KAAK,EAAI,KAAK,MAAM,IACpB,KAAK,KAAO,GACL,IACT,EAEArB,GAAM,UAAU,IAAM,UAAe,CACnC,OAAO,KAAK,MAAM,MAAM,KAAK,EAAE,OAAO,EACpC,KAAK,EACL,KAAK,EACL,KAAK,GAAK,KAAK,EAAE,OAAO,CAAC,CAC7B,EAEAA,GAAM,UAAU,KAAO,UAAgB,CACrC,YAAK,UAAU,EACR,KAAK,EAAE,QAAQ,CACxB,EAEAA,GAAM,UAAU,KAAO,UAAgB,CACrC,YAAK,UAAU,EACR,KAAK,EAAE,QAAQ,CACxB,EAEAA,GAAM,UAAU,GAAK,SAAYsB,EAAO,CACtC,OAAO,OAASA,GACT,KAAK,KAAK,EAAE,IAAIA,EAAM,KAAK,CAAC,IAAM,GAClC,KAAK,KAAK,EAAE,IAAIA,EAAM,KAAK,CAAC,IAAM,CAC3C,EAEAtB,GAAM,UAAU,OAAS,SAAgBX,EAAG,CAC1C,IAAIkC,EAAKlC,EAAE,MAAM,KAAK,MAAM,GAAG,EAAE,OAAO,KAAK,CAAC,EAC9C,GAAI,KAAK,EAAE,IAAIkC,CAAE,IAAM,EACrB,MAAO,GAIT,QAFIC,EAAKnC,EAAE,MAAM,EACbG,EAAI,KAAK,MAAM,KAAK,OAAO,KAAK,CAAC,IAC5B,CAEP,GADAgC,EAAG,KAAK,KAAK,MAAM,CAAC,EAChBA,EAAG,IAAI,KAAK,MAAM,CAAC,GAAK,EAC1B,MAAO,GAGT,GADAD,EAAG,QAAQ/B,CAAC,EACR,KAAK,EAAE,IAAI+B,CAAE,IAAM,EACrB,MAAO,EACX,CACF,EAGAvB,GAAM,UAAU,IAAMA,GAAM,UAAU,UACtCA,GAAM,UAAU,SAAWA,GAAM,UAAU,MClb3C,IAAAyB,GAAAC,EAAAC,IAAA,cAEA,IAAIC,GAAQD,GAEZC,GAAM,KAAO,KACbA,GAAM,MAAQ,KACdA,GAAM,KAAO,KACbA,GAAM,QAAU,OCPhB,IAAAC,GAAAC,EAAAC,IAAA,cAEA,IAAIC,GAAS,KACTC,GAAW,KAEfF,GAAQ,SAAWE,GAEnB,SAASC,GAAgBC,EAAKC,EAAG,CAI/B,OAHKD,EAAI,WAAWC,CAAC,EAAI,SAAY,OAGjCA,EAAI,GAAKA,EAAI,GAAKD,EAAI,OACjB,IAEDA,EAAI,WAAWC,EAAI,CAAC,EAAI,SAAY,KAC9C,CAEA,SAASC,GAAQF,EAAKG,EAAK,CACzB,GAAI,MAAM,QAAQH,CAAG,EACnB,OAAOA,EAAI,MAAM,EACnB,GAAI,CAACA,EACH,MAAO,CAAC,EACV,IAAII,EAAM,CAAC,EACX,GAAI,OAAOJ,GAAQ,SACjB,GAAKG,GAyBE,GAAIA,IAAQ,MAIjB,IAHAH,EAAMA,EAAI,QAAQ,eAAgB,EAAE,EAChCA,EAAI,OAAS,IAAM,IACrBA,EAAM,IAAMA,GACT,EAAI,EAAG,EAAIA,EAAI,OAAQ,GAAK,EAC/BI,EAAI,KAAK,SAASJ,EAAI,GAAKA,EAAI,EAAI,GAAI,EAAE,CAAC,MAxB5C,SADIK,EAAI,EACC,EAAI,EAAG,EAAIL,EAAI,OAAQ,IAAK,CACnC,IAAIM,EAAIN,EAAI,WAAW,CAAC,EACpBM,EAAI,IACNF,EAAIC,KAAOC,EACFA,EAAI,MACbF,EAAIC,KAAQC,GAAK,EAAK,IACtBF,EAAIC,KAAQC,EAAI,GAAM,KACbP,GAAgBC,EAAK,CAAC,GAC/BM,EAAI,QAAYA,EAAI,OAAW,KAAON,EAAI,WAAW,EAAE,CAAC,EAAI,MAC5DI,EAAIC,KAAQC,GAAK,GAAM,IACvBF,EAAIC,KAASC,GAAK,GAAM,GAAM,IAC9BF,EAAIC,KAASC,GAAK,EAAK,GAAM,IAC7BF,EAAIC,KAAQC,EAAI,GAAM,MAEtBF,EAAIC,KAAQC,GAAK,GAAM,IACvBF,EAAIC,KAASC,GAAK,EAAK,GAAM,IAC7BF,EAAIC,KAAQC,EAAI,GAAM,IAE1B,KASF,KAAK,EAAI,EAAG,EAAIN,EAAI,OAAQ,IAC1BI,EAAI,GAAKJ,EAAI,GAAK,EAEtB,OAAOI,CACT,CACAR,GAAQ,QAAUM,GAElB,SAASK,GAAMP,EAAK,CAElB,QADII,EAAM,GACDH,EAAI,EAAGA,EAAID,EAAI,OAAQC,IAC9BG,GAAOI,GAAMR,EAAIC,GAAG,SAAS,EAAE,CAAC,EAClC,OAAOG,CACT,CACAR,GAAQ,MAAQW,GAEhB,SAASE,GAAMC,EAAG,CAChB,IAAIN,EAAOM,IAAM,GACLA,IAAM,EAAK,MACXA,GAAK,EAAK,UACVA,EAAI,MAAS,GACzB,OAAON,IAAQ,CACjB,CACAR,GAAQ,MAAQa,GAEhB,SAASE,GAAQX,EAAKY,EAAQ,CAE5B,QADIR,EAAM,GACDH,EAAI,EAAGA,EAAID,EAAI,OAAQC,IAAK,CACnC,IAAIS,EAAIV,EAAIC,GACRW,IAAW,WACbF,EAAID,GAAMC,CAAC,GACbN,GAAOS,GAAMH,EAAE,SAAS,EAAE,CAAC,CAC7B,CACA,OAAON,CACT,CACAR,GAAQ,QAAUe,GAElB,SAASH,GAAMM,EAAM,CACnB,OAAIA,EAAK,SAAW,EACX,IAAMA,EAENA,CACX,CACAlB,GAAQ,MAAQY,GAEhB,SAASK,GAAMC,EAAM,CACnB,OAAIA,EAAK,SAAW,EACX,IAAMA,EACNA,EAAK,SAAW,EAChB,KAAOA,EACPA,EAAK,SAAW,EAChB,MAAQA,EACRA,EAAK,SAAW,EAChB,OAASA,EACTA,EAAK,SAAW,EAChB,QAAUA,EACVA,EAAK,SAAW,EAChB,SAAWA,EACXA,EAAK,SAAW,EAChB,UAAYA,EAEZA,CACX,CACAlB,GAAQ,MAAQiB,GAEhB,SAASE,GAAOf,EAAKgB,EAAOC,EAAKL,EAAQ,CACvC,IAAIM,EAAMD,EAAMD,EAChBnB,GAAOqB,EAAM,IAAM,CAAC,EAEpB,QADId,EAAM,IAAI,MAAMc,EAAM,CAAC,EAClBjB,EAAI,EAAGkB,EAAIH,EAAOf,EAAIG,EAAI,OAAQH,IAAKkB,GAAK,EAAG,CACtD,IAAIT,EACAE,IAAW,MACbF,EAAKV,EAAImB,IAAM,GAAOnB,EAAImB,EAAI,IAAM,GAAOnB,EAAImB,EAAI,IAAM,EAAKnB,EAAImB,EAAI,GAEtET,EAAKV,EAAImB,EAAI,IAAM,GAAOnB,EAAImB,EAAI,IAAM,GAAOnB,EAAImB,EAAI,IAAM,EAAKnB,EAAImB,GACxEf,EAAIH,GAAKS,IAAM,CACjB,CACA,OAAON,CACT,CACAR,GAAQ,OAASmB,GAEjB,SAASK,GAAQpB,EAAKY,EAAQ,CAE5B,QADIR,EAAM,IAAI,MAAMJ,EAAI,OAAS,CAAC,EACzBC,EAAI,EAAGkB,EAAI,EAAGlB,EAAID,EAAI,OAAQC,IAAKkB,GAAK,EAAG,CAClD,IAAIE,EAAIrB,EAAIC,GACRW,IAAW,OACbR,EAAIe,GAAKE,IAAM,GACfjB,EAAIe,EAAI,GAAME,IAAM,GAAM,IAC1BjB,EAAIe,EAAI,GAAME,IAAM,EAAK,IACzBjB,EAAIe,EAAI,GAAKE,EAAI,MAEjBjB,EAAIe,EAAI,GAAKE,IAAM,GACnBjB,EAAIe,EAAI,GAAME,IAAM,GAAM,IAC1BjB,EAAIe,EAAI,GAAME,IAAM,EAAK,IACzBjB,EAAIe,GAAKE,EAAI,IAEjB,CACA,OAAOjB,CACT,CACAR,GAAQ,QAAUwB,GAElB,SAASE,GAAOZ,EAAGa,EAAG,CACpB,OAAQb,IAAMa,EAAMb,GAAM,GAAKa,CACjC,CACA3B,GAAQ,OAAS0B,GAEjB,SAASE,GAAOd,EAAGa,EAAG,CACpB,OAAQb,GAAKa,EAAMb,IAAO,GAAKa,CACjC,CACA3B,GAAQ,OAAS4B,GAEjB,SAASC,GAAMC,EAAGH,EAAG,CACnB,OAAQG,EAAIH,IAAO,CACrB,CACA3B,GAAQ,MAAQ6B,GAEhB,SAASE,GAAQD,EAAGH,EAAGjB,EAAG,CACxB,OAAQoB,EAAIH,EAAIjB,IAAO,CACzB,CACAV,GAAQ,QAAU+B,GAElB,SAASC,GAAQF,EAAGH,EAAGjB,EAAGuB,EAAG,CAC3B,OAAQH,EAAIH,EAAIjB,EAAIuB,IAAO,CAC7B,CACAjC,GAAQ,QAAUgC,GAElB,SAASE,GAAQJ,EAAGH,EAAGjB,EAAGuB,EAAGE,EAAG,CAC9B,OAAQL,EAAIH,EAAIjB,EAAIuB,EAAIE,IAAO,CACjC,CACAnC,GAAQ,QAAUkC,GAElB,SAASE,GAAMC,EAAKC,EAAKC,EAAIC,EAAI,CAC/B,IAAIC,EAAKJ,EAAIC,GACTI,EAAKL,EAAIC,EAAM,GAEfK,EAAMH,EAAKE,IAAQ,EACnBE,GAAMD,EAAKH,EAAK,EAAI,GAAKD,EAAKE,EAClCJ,EAAIC,GAAOM,IAAO,EAClBP,EAAIC,EAAM,GAAKK,CACjB,CACA3C,GAAQ,MAAQoC,GAEhB,SAASS,GAASN,EAAIC,EAAIC,EAAIC,EAAI,CAChC,IAAIC,EAAMH,EAAKE,IAAQ,EACnBE,GAAMD,EAAKH,EAAK,EAAI,GAAKD,EAAKE,EAClC,OAAOG,IAAO,CAChB,CACA5C,GAAQ,SAAW6C,GAEnB,SAASC,GAASP,EAAIC,EAAIC,EAAIC,EAAI,CAChC,IAAIC,EAAKH,EAAKE,EACd,OAAOC,IAAO,CAChB,CACA3C,GAAQ,SAAW8C,GAEnB,SAASC,GAAWR,EAAIC,EAAIC,EAAIC,EAAIM,EAAIC,EAAIC,EAAIC,EAAI,CAClD,IAAIC,EAAQ,EACRT,EAAKH,EACTG,EAAMA,EAAKD,IAAQ,EACnBU,GAAST,EAAKH,EAAK,EAAI,EACvBG,EAAMA,EAAKM,IAAQ,EACnBG,GAAST,EAAKM,EAAK,EAAI,EACvBN,EAAMA,EAAKQ,IAAQ,EACnBC,GAAST,EAAKQ,EAAK,EAAI,EAEvB,IAAIP,EAAKL,EAAKE,EAAKO,EAAKE,EAAKE,EAC7B,OAAOR,IAAO,CAChB,CACA5C,GAAQ,WAAa+C,GAErB,SAASM,GAAWd,EAAIC,EAAIC,EAAIC,EAAIM,EAAIC,EAAIC,EAAIC,EAAI,CAClD,IAAIR,EAAKH,EAAKE,EAAKO,EAAKE,EACxB,OAAOR,IAAO,CAChB,CACA3C,GAAQ,WAAaqD,GAErB,SAASC,GAAWf,EAAIC,EAAIC,EAAIC,EAAIM,EAAIC,EAAIC,EAAIC,EAAII,EAAIC,EAAI,CAC1D,IAAIJ,EAAQ,EACRT,EAAKH,EACTG,EAAMA,EAAKD,IAAQ,EACnBU,GAAST,EAAKH,EAAK,EAAI,EACvBG,EAAMA,EAAKM,IAAQ,EACnBG,GAAST,EAAKM,EAAK,EAAI,EACvBN,EAAMA,EAAKQ,IAAQ,EACnBC,GAAST,EAAKQ,EAAK,EAAI,EACvBR,EAAMA,EAAKa,IAAQ,EACnBJ,GAAST,EAAKa,EAAK,EAAI,EAEvB,IAAIZ,EAAKL,EAAKE,EAAKO,EAAKE,EAAKK,EAAKH,EAClC,OAAOR,IAAO,CAChB,CACA5C,GAAQ,WAAasD,GAErB,SAASG,GAAWlB,EAAIC,EAAIC,EAAIC,EAAIM,EAAIC,EAAIC,EAAIC,EAAII,EAAIC,EAAI,CAC1D,IAAIb,EAAKH,EAAKE,EAAKO,EAAKE,EAAKK,EAE7B,OAAOb,IAAO,CAChB,CACA3C,GAAQ,WAAayD,GAErB,SAASC,GAAUnB,EAAIC,EAAImB,EAAK,CAC9B,IAAIC,EAAKpB,GAAO,GAAKmB,EAASpB,IAAOoB,EACrC,OAAOC,IAAM,CACf,CACA5D,GAAQ,UAAY0D,GAEpB,SAASG,GAAUtB,EAAIC,EAAImB,EAAK,CAC9B,IAAIC,EAAKrB,GAAO,GAAKoB,EAASnB,IAAOmB,EACrC,OAAOC,IAAM,CACf,CACA5D,GAAQ,UAAY6D,GAEpB,SAASC,GAASvB,EAAIC,EAAImB,EAAK,CAC7B,OAAOpB,IAAOoB,CAChB,CACA3D,GAAQ,SAAW8D,GAEnB,SAASC,GAASxB,EAAIC,EAAImB,EAAK,CAC7B,IAAIC,EAAKrB,GAAO,GAAKoB,EAASnB,IAAOmB,EACrC,OAAOC,IAAM,CACf,CACA5D,GAAQ,SAAW+D,KCrRnB,IAAAC,GAAAC,EAAAC,IAAA,cAEA,IAAIC,GAAQ,KACRC,GAAS,KAEb,SAASC,IAAY,CACnB,KAAK,QAAU,KACf,KAAK,aAAe,EACpB,KAAK,UAAY,KAAK,YAAY,UAClC,KAAK,QAAU,KAAK,YAAY,QAChC,KAAK,aAAe,KAAK,YAAY,aACrC,KAAK,UAAY,KAAK,YAAY,UAAY,EAC9C,KAAK,OAAS,MAEd,KAAK,QAAU,KAAK,UAAY,EAChC,KAAK,SAAW,KAAK,UAAY,EACnC,CACAH,GAAQ,UAAYG,GAEpBA,GAAU,UAAU,OAAS,SAAgBC,EAAKC,EAAK,CAUrD,GARAD,EAAMH,GAAM,QAAQG,EAAKC,CAAG,EACvB,KAAK,QAGR,KAAK,QAAU,KAAK,QAAQ,OAAOD,CAAG,EAFtC,KAAK,QAAUA,EAGjB,KAAK,cAAgBA,EAAI,OAGrB,KAAK,QAAQ,QAAU,KAAK,QAAS,CACvCA,EAAM,KAAK,QAGX,IAAIE,EAAIF,EAAI,OAAS,KAAK,QAC1B,KAAK,QAAUA,EAAI,MAAMA,EAAI,OAASE,EAAGF,EAAI,MAAM,EAC/C,KAAK,QAAQ,SAAW,IAC1B,KAAK,QAAU,MAEjBA,EAAMH,GAAM,OAAOG,EAAK,EAAGA,EAAI,OAASE,EAAG,KAAK,MAAM,EACtD,QAAS,EAAI,EAAG,EAAIF,EAAI,OAAQ,GAAK,KAAK,SACxC,KAAK,QAAQA,EAAK,EAAG,EAAI,KAAK,QAAQ,CAC1C,CAEA,OAAO,IACT,EAEAD,GAAU,UAAU,OAAS,SAAgBE,EAAK,CAChD,YAAK,OAAO,KAAK,KAAK,CAAC,EACvBH,GAAO,KAAK,UAAY,IAAI,EAErB,KAAK,QAAQG,CAAG,CACzB,EAEAF,GAAU,UAAU,KAAO,UAAe,CACxC,IAAII,EAAM,KAAK,aACXC,EAAQ,KAAK,QACbC,EAAID,GAAUD,EAAM,KAAK,WAAaC,EACtCE,EAAM,IAAI,MAAMD,EAAI,KAAK,SAAS,EACtCC,EAAI,GAAK,IACT,QAASC,EAAI,EAAGA,EAAIF,EAAGE,IACrBD,EAAIC,GAAK,EAIX,GADAJ,IAAQ,EACJ,KAAK,SAAW,MAAO,CACzB,QAASK,EAAI,EAAGA,EAAI,KAAK,UAAWA,IAClCF,EAAIC,KAAO,EAEbD,EAAIC,KAAO,EACXD,EAAIC,KAAO,EACXD,EAAIC,KAAO,EACXD,EAAIC,KAAO,EACXD,EAAIC,KAAQJ,IAAQ,GAAM,IAC1BG,EAAIC,KAAQJ,IAAQ,GAAM,IAC1BG,EAAIC,KAAQJ,IAAQ,EAAK,IACzBG,EAAIC,KAAOJ,EAAM,GACnB,KAUE,KATAG,EAAIC,KAAOJ,EAAM,IACjBG,EAAIC,KAAQJ,IAAQ,EAAK,IACzBG,EAAIC,KAAQJ,IAAQ,GAAM,IAC1BG,EAAIC,KAAQJ,IAAQ,GAAM,IAC1BG,EAAIC,KAAO,EACXD,EAAIC,KAAO,EACXD,EAAIC,KAAO,EACXD,EAAIC,KAAO,EAENC,EAAI,EAAGA,EAAI,KAAK,UAAWA,IAC9BF,EAAIC,KAAO,EAGf,OAAOD,CACT,IC3FA,IAAAG,GAAAC,EAAAC,IAAA,cAEA,IAAIC,GAAQ,KACRC,GAASD,GAAM,OAEnB,SAASE,GAAKC,EAAGC,EAAGC,EAAGC,EAAG,CACxB,GAAIH,IAAM,EACR,OAAOI,GAAKH,EAAGC,EAAGC,CAAC,EACrB,GAAIH,IAAM,GAAKA,IAAM,EACnB,OAAOK,GAAIJ,EAAGC,EAAGC,CAAC,EACpB,GAAIH,IAAM,EACR,OAAOM,GAAML,EAAGC,EAAGC,CAAC,CACxB,CACAP,GAAQ,KAAOG,GAEf,SAASK,GAAKH,EAAGC,EAAGC,EAAG,CACrB,OAAQF,EAAIC,EAAO,CAACD,EAAKE,CAC3B,CACAP,GAAQ,KAAOQ,GAEf,SAASE,GAAML,EAAGC,EAAGC,EAAG,CACtB,OAAQF,EAAIC,EAAMD,EAAIE,EAAMD,EAAIC,CAClC,CACAP,GAAQ,MAAQU,GAEhB,SAASD,GAAIJ,EAAGC,EAAGC,EAAG,CACpB,OAAOF,EAAIC,EAAIC,CACjB,CACAP,GAAQ,IAAMS,GAEd,SAASE,GAAON,EAAG,CACjB,OAAOH,GAAOG,EAAG,CAAC,EAAIH,GAAOG,EAAG,EAAE,EAAIH,GAAOG,EAAG,EAAE,CACpD,CACAL,GAAQ,OAASW,GAEjB,SAASC,GAAOP,EAAG,CACjB,OAAOH,GAAOG,EAAG,CAAC,EAAIH,GAAOG,EAAG,EAAE,EAAIH,GAAOG,EAAG,EAAE,CACpD,CACAL,GAAQ,OAASY,GAEjB,SAASC,GAAOR,EAAG,CACjB,OAAOH,GAAOG,EAAG,CAAC,EAAIH,GAAOG,EAAG,EAAE,EAAKA,IAAM,CAC/C,CACAL,GAAQ,OAASa,GAEjB,SAASC,GAAOT,EAAG,CACjB,OAAOH,GAAOG,EAAG,EAAE,EAAIH,GAAOG,EAAG,EAAE,EAAKA,IAAM,EAChD,CACAL,GAAQ,OAASc,KChDjB,IAAAC,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAQ,KACRC,GAAS,KACTC,GAAY,KAEZC,GAASH,GAAM,OACfI,GAAQJ,GAAM,MACdK,GAAUL,GAAM,QAChBM,GAAOJ,GAAU,KACjBK,GAAYN,GAAO,UAEnBO,GAAS,CACX,WAAY,WACZ,WAAY,UACd,EAEA,SAASC,IAAO,CACd,GAAI,EAAE,gBAAgBA,IACpB,OAAO,IAAIA,GAEbF,GAAU,KAAK,IAAI,EACnB,KAAK,EAAI,CACP,WAAY,WAAY,WACxB,UAAY,UAAW,EACzB,KAAK,EAAI,IAAI,MAAM,EAAE,CACvB,CAEAP,GAAM,SAASS,GAAMF,EAAS,EAC9BR,GAAO,QAAUU,GAEjBA,GAAK,UAAY,IACjBA,GAAK,QAAU,IACfA,GAAK,aAAe,GACpBA,GAAK,UAAY,GAEjBA,GAAK,UAAU,QAAU,SAAiBC,EAAKC,EAAO,CAGpD,QAFIC,EAAI,KAAK,EAEJ,EAAI,EAAG,EAAI,GAAI,IACtBA,EAAE,GAAKF,EAAIC,EAAQ,GAErB,KAAM,EAAIC,EAAE,OAAQ,IAClBA,EAAE,GAAKT,GAAOS,EAAE,EAAI,GAAKA,EAAE,EAAI,GAAKA,EAAE,EAAI,IAAMA,EAAE,EAAI,IAAK,CAAC,EAE9D,IAAI,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACX,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GAEf,IAAK,EAAI,EAAG,EAAIH,EAAE,OAAQ,IAAK,CAC7B,IAAII,EAAI,CAAC,EAAE,EAAI,IACXC,EAAIZ,GAAQF,GAAO,EAAG,CAAC,EAAGG,GAAKU,EAAGH,EAAG,EAAGC,CAAC,EAAGC,EAAGH,EAAE,GAAIJ,GAAOQ,EAAE,EAClED,EAAID,EACJA,EAAI,EACJ,EAAIX,GAAOU,EAAG,EAAE,EAChBA,EAAI,EACJ,EAAII,CACN,CAEA,KAAK,EAAE,GAAKb,GAAM,KAAK,EAAE,GAAI,CAAC,EAC9B,KAAK,EAAE,GAAKA,GAAM,KAAK,EAAE,GAAIS,CAAC,EAC9B,KAAK,EAAE,GAAKT,GAAM,KAAK,EAAE,GAAI,CAAC,EAC9B,KAAK,EAAE,GAAKA,GAAM,KAAK,EAAE,GAAIU,CAAC,EAC9B,KAAK,EAAE,GAAKV,GAAM,KAAK,EAAE,GAAIW,CAAC,CAChC,EAEAN,GAAK,UAAU,QAAU,SAAgBS,EAAK,CAC5C,OAAIA,IAAQ,MACHlB,GAAM,QAAQ,KAAK,EAAG,KAAK,EAE3BA,GAAM,QAAQ,KAAK,EAAG,KAAK,CACtC,ICzEA,IAAAmB,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAQ,KACRC,GAAS,KACTC,GAAY,KACZC,GAAS,KAETC,GAAQJ,GAAM,MACdK,GAAUL,GAAM,QAChBM,GAAUN,GAAM,QAChBO,GAAOL,GAAU,KACjBM,GAAQN,GAAU,MAClBO,GAASP,GAAU,OACnBQ,GAASR,GAAU,OACnBS,GAAST,GAAU,OACnBU,GAASV,GAAU,OAEnBW,GAAYZ,GAAO,UAEnBa,GAAW,CACb,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,UAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACtC,EAEA,SAASC,IAAS,CAChB,GAAI,EAAE,gBAAgBA,IACpB,OAAO,IAAIA,GAEbF,GAAU,KAAK,IAAI,EACnB,KAAK,EAAI,CACP,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACtC,EACA,KAAK,EAAIC,GACT,KAAK,EAAI,IAAI,MAAM,EAAE,CACvB,CACAd,GAAM,SAASe,GAAQF,EAAS,EAChCd,GAAO,QAAUgB,GAEjBA,GAAO,UAAY,IACnBA,GAAO,QAAU,IACjBA,GAAO,aAAe,IACtBA,GAAO,UAAY,GAEnBA,GAAO,UAAU,QAAU,SAAiBC,EAAKC,EAAO,CAGtD,QAFIC,EAAI,KAAK,EAEJ,EAAI,EAAG,EAAI,GAAI,IACtBA,EAAE,GAAKF,EAAIC,EAAQ,GACrB,KAAO,EAAIC,EAAE,OAAQ,IACnBA,EAAE,GAAKb,GAAQO,GAAOM,EAAE,EAAI,EAAE,EAAGA,EAAE,EAAI,GAAIP,GAAOO,EAAE,EAAI,GAAG,EAAGA,EAAE,EAAI,GAAG,EAEzE,IAAI,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACX,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACX,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GAGf,IADApB,GAAO,KAAK,EAAE,SAAWe,EAAE,MAAM,EAC5B,EAAI,EAAG,EAAIA,EAAE,OAAQ,IAAK,CAC7B,IAAIM,EAAKlB,GAAQiB,EAAGb,GAAOW,CAAC,EAAGd,GAAKc,EAAG,EAAGC,CAAC,EAAG,KAAK,EAAE,GAAIJ,EAAE,EAAE,EACzDO,EAAKrB,GAAMK,GAAO,CAAC,EAAGD,GAAM,EAAGW,EAAG,CAAC,CAAC,EACxCI,EAAID,EACJA,EAAI,EACJ,EAAID,EACJA,EAAIjB,GAAMgB,EAAGI,CAAE,EACfJ,EAAI,EACJ,EAAID,EACJA,EAAI,EACJ,EAAIf,GAAMoB,EAAIC,CAAE,CAClB,CAEA,KAAK,EAAE,GAAKrB,GAAM,KAAK,EAAE,GAAI,CAAC,EAC9B,KAAK,EAAE,GAAKA,GAAM,KAAK,EAAE,GAAIe,CAAC,EAC9B,KAAK,EAAE,GAAKf,GAAM,KAAK,EAAE,GAAI,CAAC,EAC9B,KAAK,EAAE,GAAKA,GAAM,KAAK,EAAE,GAAIgB,CAAC,EAC9B,KAAK,EAAE,GAAKhB,GAAM,KAAK,EAAE,GAAIiB,CAAC,EAC9B,KAAK,EAAE,GAAKjB,GAAM,KAAK,EAAE,GAAI,CAAC,EAC9B,KAAK,EAAE,GAAKA,GAAM,KAAK,EAAE,GAAIkB,CAAC,EAC9B,KAAK,EAAE,GAAKlB,GAAM,KAAK,EAAE,GAAImB,CAAC,CAChC,EAEAR,GAAO,UAAU,QAAU,SAAgBW,EAAK,CAC9C,OAAIA,IAAQ,MACH1B,GAAM,QAAQ,KAAK,EAAG,KAAK,EAE3BA,GAAM,QAAQ,KAAK,EAAG,KAAK,CACtC,ICxGA,IAAA2B,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAQ,KACRC,GAAS,KAEb,SAASC,IAAS,CAChB,GAAI,EAAE,gBAAgBA,IACpB,OAAO,IAAIA,GAEbD,GAAO,KAAK,IAAI,EAChB,KAAK,EAAI,CACP,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UAAW,CACnD,CACAD,GAAM,SAASE,GAAQD,EAAM,EAC7BF,GAAO,QAAUG,GAEjBA,GAAO,UAAY,IACnBA,GAAO,QAAU,IACjBA,GAAO,aAAe,IACtBA,GAAO,UAAY,GAEnBA,GAAO,UAAU,QAAU,SAAgBC,EAAK,CAE9C,OAAIA,IAAQ,MACHH,GAAM,QAAQ,KAAK,EAAE,MAAM,EAAG,CAAC,EAAG,KAAK,EAEvCA,GAAM,QAAQ,KAAK,EAAE,MAAM,EAAG,CAAC,EAAG,KAAK,CAClD,IC5BA,IAAAI,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAQ,KACRC,GAAS,KACTC,GAAS,KAETC,GAAYH,GAAM,UAClBI,GAAYJ,GAAM,UAClBK,GAAWL,GAAM,SACjBM,GAAWN,GAAM,SACjBO,GAAQP,GAAM,MACdQ,GAAWR,GAAM,SACjBS,GAAWT,GAAM,SACjBU,GAAaV,GAAM,WACnBW,GAAaX,GAAM,WACnBY,GAAaZ,GAAM,WACnBa,GAAab,GAAM,WAEnBc,GAAYb,GAAO,UAEnBc,GAAW,CACb,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,UAAY,UACpC,UAAY,UAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACtC,EAEA,SAASC,IAAS,CAChB,GAAI,EAAE,gBAAgBA,IACpB,OAAO,IAAIA,GAEbF,GAAU,KAAK,IAAI,EACnB,KAAK,EAAI,CACP,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,UACZ,UAAY,WACZ,WAAY,SAAW,EACzB,KAAK,EAAIC,GACT,KAAK,EAAI,IAAI,MAAM,GAAG,CACxB,CACAf,GAAM,SAASgB,GAAQF,EAAS,EAChCf,GAAO,QAAUiB,GAEjBA,GAAO,UAAY,KACnBA,GAAO,QAAU,IACjBA,GAAO,aAAe,IACtBA,GAAO,UAAY,IAEnBA,GAAO,UAAU,cAAgB,SAAuBC,EAAKC,EAAO,CAIlE,QAHIC,EAAI,KAAK,EAGJ,EAAI,EAAG,EAAI,GAAI,IACtBA,EAAE,GAAKF,EAAIC,EAAQ,GACrB,KAAO,EAAIC,EAAE,OAAQ,GAAK,EAAG,CAC3B,IAAIC,EAAQC,GAAUF,EAAE,EAAI,GAAIA,EAAE,EAAI,EAAE,EACpCG,EAAQC,GAAUJ,EAAE,EAAI,GAAIA,EAAE,EAAI,EAAE,EACpCK,EAAQL,EAAE,EAAI,IACdM,EAAQN,EAAE,EAAI,IACdO,EAAQC,GAAUR,EAAE,EAAI,IAAKA,EAAE,EAAI,GAAG,EACtCS,EAAQC,GAAUV,EAAE,EAAI,IAAKA,EAAE,EAAI,GAAG,EACtCW,EAAQX,EAAE,EAAI,IACdY,EAAQZ,EAAE,EAAI,IAElBA,EAAE,GAAKT,GACLU,EAAOE,EACPE,EAAOC,EACPC,EAAOE,EACPE,EAAOC,CAAK,EACdZ,EAAE,EAAI,GAAKR,GACTS,EAAOE,EACPE,EAAOC,EACPC,EAAOE,EACPE,EAAOC,CAAK,CAChB,CACF,EAEAf,GAAO,UAAU,QAAU,SAAiBC,EAAKC,EAAO,CACtD,KAAK,cAAcD,EAAKC,CAAK,EAE7B,IAAIC,EAAI,KAAK,EAETa,EAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,IACZC,EAAK,KAAK,EAAE,IACZC,EAAK,KAAK,EAAE,IACZC,EAAK,KAAK,EAAE,IACZC,EAAK,KAAK,EAAE,IACZC,EAAK,KAAK,EAAE,IAEhB7C,GAAO,KAAK,EAAE,SAAWiB,EAAE,MAAM,EACjC,QAAS6B,EAAI,EAAGA,EAAI7B,EAAE,OAAQ6B,GAAK,EAAG,CACpC,IAAI5B,EAAQ0B,EACRxB,EAAQyB,EACRvB,EAAQyB,GAAUT,EAAIC,CAAE,EACxBhB,EAAQyB,GAAUV,EAAIC,CAAE,EACxBf,EAAQyB,GAAQX,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,CAAE,EACtCjB,EAAQwB,GAAQZ,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,CAAE,EACtCf,EAAQ,KAAK,EAAEkB,GACfjB,EAAQ,KAAK,EAAEiB,EAAI,GACnBK,EAAQlC,EAAE6B,GACVM,EAAQnC,EAAE6B,EAAI,GAEdO,EAAQ3C,GACVQ,EAAOE,EACPE,EAAOC,EACPC,EAAOE,EACPE,EAAOC,EACPsB,EAAOC,CAAK,EACVE,EAAQ3C,GACVO,EAAOE,EACPE,EAAOC,EACPC,EAAOE,EACPE,EAAOC,EACPsB,EAAOC,CAAK,EAEdlC,EAAQqC,GAAUzB,EAAIC,CAAE,EACxBX,EAAQoC,GAAU1B,EAAIC,CAAE,EACxBT,EAAQmC,GAAS3B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,CAAE,EACvCZ,EAAQmC,GAAS5B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,CAAE,EAEvC,IAAIwB,EAAQrD,GAASY,EAAOE,EAAOE,EAAOC,CAAK,EAC3CqC,EAAQrD,GAASW,EAAOE,EAAOE,EAAOC,CAAK,EAE/CqB,EAAKF,EACLG,EAAKF,EAELD,EAAKF,EACLG,EAAKF,EAELD,EAAKF,EACLG,EAAKF,EAELD,EAAKhC,GAAS8B,EAAIC,EAAIgB,EAAOC,CAAK,EAClCf,EAAKhC,GAAS8B,EAAIA,EAAIgB,EAAOC,CAAK,EAElClB,EAAKF,EACLG,EAAKF,EAELD,EAAKF,EACLG,EAAKF,EAELD,EAAKF,EACLG,EAAKF,EAELD,EAAKxB,GAAS+C,EAAOC,EAAOK,EAAOC,CAAK,EACxC7B,EAAKxB,GAAS8C,EAAOC,EAAOK,EAAOC,CAAK,CAC1C,CAEAvD,GAAM,KAAK,EAAG,EAAGyB,EAAIC,CAAE,EACvB1B,GAAM,KAAK,EAAG,EAAG2B,EAAIC,CAAE,EACvB5B,GAAM,KAAK,EAAG,EAAG6B,EAAIC,CAAE,EACvB9B,GAAM,KAAK,EAAG,EAAG+B,EAAIC,CAAE,EACvBhC,GAAM,KAAK,EAAG,EAAGiC,EAAIC,CAAE,EACvBlC,GAAM,KAAK,EAAG,GAAImC,EAAIC,CAAE,EACxBpC,GAAM,KAAK,EAAG,GAAIqC,EAAIC,CAAE,EACxBtC,GAAM,KAAK,EAAG,GAAIuC,EAAIC,CAAE,CAC1B,EAEA/B,GAAO,UAAU,QAAU,SAAgB+C,EAAK,CAC9C,OAAIA,IAAQ,MACH/D,GAAM,QAAQ,KAAK,EAAG,KAAK,EAE3BA,GAAM,QAAQ,KAAK,EAAG,KAAK,CACtC,EAEA,SAASmD,GAAQa,EAAIC,EAAIC,EAAIC,EAAIC,EAAI,CACnC,IAAIC,EAAKL,EAAKE,EAAQ,CAACF,EAAMI,EAC7B,OAAIC,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAASjB,GAAQY,EAAIC,EAAIC,EAAIC,EAAIC,EAAIE,EAAI,CACvC,IAAID,EAAKJ,EAAKE,EAAQ,CAACF,EAAMK,EAC7B,OAAID,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAASV,GAASK,EAAIC,EAAIC,EAAIC,EAAIC,EAAI,CACpC,IAAIC,EAAKL,EAAKE,EAAOF,EAAKI,EAAOF,EAAKE,EACtC,OAAIC,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAAST,GAASI,EAAIC,EAAIC,EAAIC,EAAIC,EAAIE,EAAI,CACxC,IAAID,EAAKJ,EAAKE,EAAOF,EAAKK,EAAOH,EAAKG,EACtC,OAAID,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAASZ,GAAUO,EAAIC,EAAI,CACzB,IAAI7C,EAAQjB,GAAU6D,EAAIC,EAAI,EAAE,EAC5BzC,EAAQrB,GAAU8D,EAAID,EAAI,CAAC,EAC3BtC,EAAQvB,GAAU8D,EAAID,EAAI,CAAC,EAE3BK,EAAIjD,EAAQI,EAAQE,EACxB,OAAI2C,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAASX,GAAUM,EAAIC,EAAI,CACzB,IAAI3C,EAAQlB,GAAU4D,EAAIC,EAAI,EAAE,EAC5BxC,EAAQrB,GAAU6D,EAAID,EAAI,CAAC,EAC3BpC,EAAQxB,GAAU6D,EAAID,EAAI,CAAC,EAE3BK,EAAI/C,EAAQG,EAAQG,EACxB,OAAIyC,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAASpB,GAAUe,EAAIC,EAAI,CACzB,IAAI7C,EAAQjB,GAAU6D,EAAIC,EAAI,EAAE,EAC5BzC,EAAQrB,GAAU6D,EAAIC,EAAI,EAAE,EAC5BvC,EAAQvB,GAAU8D,EAAID,EAAI,CAAC,EAE3BK,EAAIjD,EAAQI,EAAQE,EACxB,OAAI2C,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAASnB,GAAUc,EAAIC,EAAI,CACzB,IAAI3C,EAAQlB,GAAU4D,EAAIC,EAAI,EAAE,EAC5BxC,EAAQrB,GAAU4D,EAAIC,EAAI,EAAE,EAC5BrC,EAAQxB,GAAU6D,EAAID,EAAI,CAAC,EAE3BK,EAAI/C,EAAQG,EAAQG,EACxB,OAAIyC,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAAS1C,GAAUqC,EAAIC,EAAI,CACzB,IAAI7C,EAAQjB,GAAU6D,EAAIC,EAAI,CAAC,EAC3BzC,EAAQrB,GAAU6D,EAAIC,EAAI,CAAC,EAC3BvC,EAAQrB,GAAS2D,EAAIC,EAAI,CAAC,EAE1BI,EAAIjD,EAAQI,EAAQE,EACxB,OAAI2C,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAASxC,GAAUmC,EAAIC,EAAI,CACzB,IAAI3C,EAAQlB,GAAU4D,EAAIC,EAAI,CAAC,EAC3BxC,EAAQrB,GAAU4D,EAAIC,EAAI,CAAC,EAC3BrC,EAAQtB,GAAS0D,EAAIC,EAAI,CAAC,EAE1BI,EAAI/C,EAAQG,EAAQG,EACxB,OAAIyC,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAAShD,GAAU2C,EAAIC,EAAI,CACzB,IAAI7C,EAAQjB,GAAU6D,EAAIC,EAAI,EAAE,EAC5BzC,EAAQrB,GAAU8D,EAAID,EAAI,EAAE,EAC5BtC,EAAQrB,GAAS2D,EAAIC,EAAI,CAAC,EAE1BI,EAAIjD,EAAQI,EAAQE,EACxB,OAAI2C,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAAS9C,GAAUyC,EAAIC,EAAI,CACzB,IAAI3C,EAAQlB,GAAU4D,EAAIC,EAAI,EAAE,EAC5BxC,EAAQrB,GAAU6D,EAAID,EAAI,EAAE,EAC5BpC,EAAQtB,GAAS0D,EAAIC,EAAI,CAAC,EAE1BI,EAAI/C,EAAQG,EAAQG,EACxB,OAAIyC,EAAI,IACNA,GAAK,YACAA,CACT,ICzUA,IAAAE,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAQ,KAERC,GAAS,KAEb,SAASC,IAAS,CAChB,GAAI,EAAE,gBAAgBA,IACpB,OAAO,IAAIA,GAEbD,GAAO,KAAK,IAAI,EAChB,KAAK,EAAI,CACP,WAAY,WACZ,WAAY,UACZ,WAAY,UACZ,UAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,UAAW,CAC3B,CACAD,GAAM,SAASE,GAAQD,EAAM,EAC7BF,GAAO,QAAUG,GAEjBA,GAAO,UAAY,KACnBA,GAAO,QAAU,IACjBA,GAAO,aAAe,IACtBA,GAAO,UAAY,IAEnBA,GAAO,UAAU,QAAU,SAAgBC,EAAK,CAC9C,OAAIA,IAAQ,MACHH,GAAM,QAAQ,KAAK,EAAE,MAAM,EAAG,EAAE,EAAG,KAAK,EAExCA,GAAM,QAAQ,KAAK,EAAE,MAAM,EAAG,EAAE,EAAG,KAAK,CACnD,IClCA,IAAAI,GAAAC,EAAAC,IAAA,cAEAA,GAAQ,KAAO,KACfA,GAAQ,OAAS,KACjBA,GAAQ,OAAS,KACjBA,GAAQ,OAAS,KACjBA,GAAQ,OAAS,OCNjB,IAAAC,GAAAC,EAAAC,IAAA,cAEA,IAAIC,GAAQ,KACRC,GAAS,KAETC,GAASF,GAAM,OACfG,GAAQH,GAAM,MACdI,GAAUJ,GAAM,QAChBK,GAAUL,GAAM,QAChBM,GAAYL,GAAO,UAEvB,SAASM,IAAY,CACnB,GAAI,EAAE,gBAAgBA,IACpB,OAAO,IAAIA,GAEbD,GAAU,KAAK,IAAI,EAEnB,KAAK,EAAI,CAAE,WAAY,WAAY,WAAY,UAAY,UAAW,EACtE,KAAK,OAAS,QAChB,CACAN,GAAM,SAASO,GAAWD,EAAS,EACnCP,GAAQ,UAAYQ,GAEpBA,GAAU,UAAY,IACtBA,GAAU,QAAU,IACpBA,GAAU,aAAe,IACzBA,GAAU,UAAY,GAEtBA,GAAU,UAAU,QAAU,SAAgBC,EAAKC,EAAO,CAWxD,QAVIC,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACXC,EAAKL,EACLM,EAAKL,EACLM,EAAKL,EACLM,EAAKL,EACLM,EAAKL,EACAM,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,IAAIC,EAAIlB,GACND,GACEG,GAAQK,EAAGY,GAAEF,EAAGT,EAAGC,EAAGC,CAAC,EAAGL,EAAIe,GAAEH,GAAKX,GAAQe,GAAEJ,CAAC,CAAC,EACjDK,GAAEL,EAAE,EACNN,CAAC,EACHJ,EAAII,EACJA,EAAID,EACJA,EAAIX,GAAOU,EAAG,EAAE,EAChBA,EAAID,EACJA,EAAIU,EACJA,EAAIlB,GACFD,GACEG,GAAQU,EAAIO,GAAE,GAAKF,EAAGJ,EAAIC,EAAIC,CAAE,EAAGV,EAAIkB,GAAGN,GAAKX,GAAQkB,GAAGP,CAAC,CAAC,EAC5DQ,GAAGR,EAAE,EACPD,CAAE,EACJJ,EAAKI,EACLA,EAAKD,EACLA,EAAKhB,GAAOe,EAAI,EAAE,EAClBA,EAAKD,EACLA,EAAKK,CACP,CACAA,EAAIjB,GAAQ,KAAK,EAAE,GAAIQ,EAAGM,CAAE,EAC5B,KAAK,EAAE,GAAKd,GAAQ,KAAK,EAAE,GAAIS,EAAGM,CAAE,EACpC,KAAK,EAAE,GAAKf,GAAQ,KAAK,EAAE,GAAIU,EAAGC,CAAE,EACpC,KAAK,EAAE,GAAKX,GAAQ,KAAK,EAAE,GAAIM,EAAGM,CAAE,EACpC,KAAK,EAAE,GAAKZ,GAAQ,KAAK,EAAE,GAAIO,EAAGM,CAAE,EACpC,KAAK,EAAE,GAAKI,CACd,EAEAd,GAAU,UAAU,QAAU,SAAgBsB,EAAK,CACjD,OAAIA,IAAQ,MACH7B,GAAM,QAAQ,KAAK,EAAG,QAAQ,EAE9BA,GAAM,QAAQ,KAAK,EAAG,QAAQ,CACzC,EAEA,SAASsB,GAAEF,EAAGU,EAAGC,EAAGC,EAAG,CACrB,OAAIZ,GAAK,GACAU,EAAIC,EAAIC,EACRZ,GAAK,GACJU,EAAIC,EAAO,CAACD,EAAKE,EAClBZ,GAAK,IACJU,EAAK,CAACC,GAAMC,EACbZ,GAAK,GACJU,EAAIE,EAAMD,EAAK,CAACC,EAEjBF,GAAKC,EAAK,CAACC,EACtB,CAEA,SAASR,GAAEJ,EAAG,CACZ,OAAIA,GAAK,GACA,EACAA,GAAK,GACL,WACAA,GAAK,GACL,WACAA,GAAK,GACL,WAEA,UACX,CAEA,SAASO,GAAGP,EAAG,CACb,OAAIA,GAAK,GACA,WACAA,GAAK,GACL,WACAA,GAAK,GACL,WACAA,GAAK,GACL,WAEA,CACX,CAEA,IAAIG,GAAI,CACN,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAClD,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EACnD,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAClD,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EACnD,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EACpD,EAEIG,GAAK,CACP,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAClD,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EACnD,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAClD,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAClD,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EACpD,EAEID,GAAI,CACN,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EACrD,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GACpD,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EACrD,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GACpD,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,CACvD,EAEIG,GAAK,CACP,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EACrD,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GACpD,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EACrD,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EACrD,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EACtD,ICjJA,IAAAK,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAQ,KACRC,GAAS,KAEb,SAASC,GAAKC,EAAMC,EAAKC,EAAK,CAC5B,GAAI,EAAE,gBAAgBH,IACpB,OAAO,IAAIA,GAAKC,EAAMC,EAAKC,CAAG,EAChC,KAAK,KAAOF,EACZ,KAAK,UAAYA,EAAK,UAAY,EAClC,KAAK,QAAUA,EAAK,QAAU,EAC9B,KAAK,MAAQ,KACb,KAAK,MAAQ,KAEb,KAAK,MAAMH,GAAM,QAAQI,EAAKC,CAAG,CAAC,CACpC,CACAN,GAAO,QAAUG,GAEjBA,GAAK,UAAU,MAAQ,SAAcE,EAAK,CAEpCA,EAAI,OAAS,KAAK,YACpBA,EAAM,IAAI,KAAK,KAAK,EAAE,OAAOA,CAAG,EAAE,OAAO,GAC3CH,GAAOG,EAAI,QAAU,KAAK,SAAS,EAGnC,QAASE,EAAIF,EAAI,OAAQE,EAAI,KAAK,UAAWA,IAC3CF,EAAI,KAAK,CAAC,EAEZ,IAAKE,EAAI,EAAGA,EAAIF,EAAI,OAAQE,IAC1BF,EAAIE,IAAM,GAIZ,IAHA,KAAK,MAAQ,IAAI,KAAK,KAAK,EAAE,OAAOF,CAAG,EAGlCE,EAAI,EAAGA,EAAIF,EAAI,OAAQE,IAC1BF,EAAIE,IAAM,IACZ,KAAK,MAAQ,IAAI,KAAK,KAAK,EAAE,OAAOF,CAAG,CACzC,EAEAF,GAAK,UAAU,OAAS,SAAgBK,EAAKF,EAAK,CAChD,YAAK,MAAM,OAAOE,EAAKF,CAAG,EACnB,IACT,EAEAH,GAAK,UAAU,OAAS,SAAgBG,EAAK,CAC3C,YAAK,MAAM,OAAO,KAAK,MAAM,OAAO,CAAC,EAC9B,KAAK,MAAM,OAAOA,CAAG,CAC9B,IC9CA,IAAAG,GAAAC,EAAAC,IAAA,KAAIC,GAAOD,GAEXC,GAAK,MAAQ,KACbA,GAAK,OAAS,KACdA,GAAK,IAAM,KACXA,GAAK,OAAS,KACdA,GAAK,KAAO,KAGZA,GAAK,KAAOA,GAAK,IAAI,KACrBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,UAAYA,GAAK,OAAO,YCd7B,IAAAC,GAAAC,EAAA,CAAAC,IAAAC,KAAA,CAAAA,GAAO,QAAU,CACf,QAAS,CACP,KAAM,EACN,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,gEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,EACA,IAAK,CACH,IAAK,EACL,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,iEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,CACF,IC3wBA,IAAAC,GAAAC,EAAAC,IAAA,cAEA,IAAIC,GAASD,GAETE,GAAO,KACPC,GAAQ,KACRC,GAAQ,KAERC,GAASD,GAAM,OAEnB,SAASE,GAAYC,EAAS,CACxBA,EAAQ,OAAS,QACnB,KAAK,MAAQ,IAAIJ,GAAM,MAAMI,CAAO,EAC7BA,EAAQ,OAAS,UACxB,KAAK,MAAQ,IAAIJ,GAAM,QAAQI,CAAO,EAEtC,KAAK,MAAQ,IAAIJ,GAAM,KAAKI,CAAO,EACrC,KAAK,EAAI,KAAK,MAAM,EACpB,KAAK,EAAI,KAAK,MAAM,EACpB,KAAK,KAAOA,EAAQ,KAEpBF,GAAO,KAAK,EAAE,SAAS,EAAG,eAAe,EACzCA,GAAO,KAAK,EAAE,IAAI,KAAK,CAAC,EAAE,WAAW,EAAG,yBAAyB,CACnE,CACAJ,GAAO,YAAcK,GAErB,SAASE,GAAYC,EAAMF,EAAS,CAClC,OAAO,eAAeN,GAAQQ,EAAM,CAClC,aAAc,GACd,WAAY,GACZ,IAAK,UAAW,CACd,IAAIN,EAAQ,IAAIG,GAAYC,CAAO,EACnC,cAAO,eAAeN,GAAQQ,EAAM,CAClC,aAAc,GACd,WAAY,GACZ,MAAON,CACT,CAAC,EACMA,CACT,CACF,CAAC,CACH,CAEAK,GAAY,OAAQ,CAClB,KAAM,QACN,MAAO,OACP,EAAG,wDACH,EAAG,wDACH,EAAG,wDACH,EAAG,wDACH,KAAMN,GAAK,OACX,KAAM,GACN,EAAG,CACD,wDACA,uDACF,CACF,CAAC,EAEDM,GAAY,OAAQ,CAClB,KAAM,QACN,MAAO,OACP,EAAG,iEACH,EAAG,iEACH,EAAG,iEACH,EAAG,iEACH,KAAMN,GAAK,OACX,KAAM,GACN,EAAG,CACD,iEACA,gEACF,CACF,CAAC,EAEDM,GAAY,OAAQ,CAClB,KAAM,QACN,MAAO,KACP,EAAG,0EACH,EAAG,0EACH,EAAG,0EACH,EAAG,0EACH,KAAMN,GAAK,OACX,KAAM,GACN,EAAG,CACD,0EACA,yEACF,CACF,CAAC,EAEDM,GAAY,OAAQ,CAClB,KAAM,QACN,MAAO,KACP,EAAG,8GAEH,EAAG,8GAEH,EAAG,8GAEH,EAAG,8GAEH,KAAMN,GAAK,OACX,KAAM,GACN,EAAG,CACD,8GAEA,6GAEF,CACF,CAAC,EAEDM,GAAY,OAAQ,CAClB,KAAM,QACN,MAAO,KACP,EAAG,2JAGH,EAAG,2JAGH,EAAG,2JAGH,EAAG,2JAGH,KAAMN,GAAK,OACX,KAAM,GACN,EAAG,CACD,2JAGA,0JAGF,CACF,CAAC,EAEDM,GAAY,aAAc,CACxB,KAAM,OACN,MAAO,SACP,EAAG,sEACH,EAAG,QACH,EAAG,IACH,EAAG,sEACH,KAAMN,GAAK,OACX,KAAM,GACN,EAAG,CACD,GACF,CACF,CAAC,EAEDM,GAAY,UAAW,CACrB,KAAM,UACN,MAAO,SACP,EAAG,sEACH,EAAG,KACH,EAAG,IAEH,EAAG,sEACH,EAAG,sEACH,KAAMN,GAAK,OACX,KAAM,GACN,EAAG,CACD,mEAGA,kEACF,CACF,CAAC,EAED,IAAIQ,GACJ,GAAI,CACFA,GAAM,IACR,MAAE,CACAA,GAAM,MACR,CAEAF,GAAY,YAAa,CACvB,KAAM,QACN,MAAO,OACP,EAAG,0EACH,EAAG,IACH,EAAG,IACH,EAAG,0EACH,EAAG,IACH,KAAMN,GAAK,OAGX,KAAM,mEACN,OAAQ,mEACR,MAAO,CACL,CACE,EAAG,mCACH,EAAG,mCACL,EACA,CACE,EAAG,oCACH,EAAG,kCACL,CACF,EAEA,KAAM,GACN,EAAG,CACD,mEACA,mEACAQ,EACF,CACF,CAAC,IC7MD,IAAAC,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAO,KACPC,GAAQ,KACRC,GAAS,KAEb,SAASC,GAASC,EAAS,CACzB,GAAI,EAAE,gBAAgBD,IACpB,OAAO,IAAIA,GAASC,CAAO,EAC7B,KAAK,KAAOA,EAAQ,KACpB,KAAK,WAAa,CAAC,CAACA,EAAQ,WAE5B,KAAK,OAAS,KAAK,KAAK,QACxB,KAAK,WAAaA,EAAQ,YAAc,KAAK,KAAK,aAElD,KAAK,QAAU,KACf,KAAK,eAAiB,KACtB,KAAK,EAAI,KACT,KAAK,EAAI,KAET,IAAIC,EAAUJ,GAAM,QAAQG,EAAQ,QAASA,EAAQ,YAAc,KAAK,EACpEE,EAAQL,GAAM,QAAQG,EAAQ,MAAOA,EAAQ,UAAY,KAAK,EAC9DG,EAAON,GAAM,QAAQG,EAAQ,KAAMA,EAAQ,SAAW,KAAK,EAC/DF,GAAOG,EAAQ,QAAW,KAAK,WAAa,EACrC,mCAAqC,KAAK,WAAa,OAAO,EACrE,KAAK,MAAMA,EAASC,EAAOC,CAAI,CACjC,CACAR,GAAO,QAAUI,GAEjBA,GAAS,UAAU,MAAQ,SAAcE,EAASC,EAAOC,EAAM,CAC7D,IAAIC,EAAOH,EAAQ,OAAOC,CAAK,EAAE,OAAOC,CAAI,EAE5C,KAAK,EAAI,IAAI,MAAM,KAAK,OAAS,CAAC,EAClC,KAAK,EAAI,IAAI,MAAM,KAAK,OAAS,CAAC,EAClC,QAASE,EAAI,EAAGA,EAAI,KAAK,EAAE,OAAQA,IACjC,KAAK,EAAEA,GAAK,EACZ,KAAK,EAAEA,GAAK,EAGd,KAAK,QAAQD,CAAI,EACjB,KAAK,QAAU,EACf,KAAK,eAAiB,eACxB,EAEAL,GAAS,UAAU,MAAQ,UAAgB,CACzC,OAAO,IAAIH,GAAK,KAAK,KAAK,KAAM,KAAK,CAAC,CACxC,EAEAG,GAAS,UAAU,QAAU,SAAgBK,EAAM,CACjD,IAAIE,EAAO,KAAK,MAAM,EACN,OAAO,KAAK,CAAC,EACb,OAAO,CAAE,CAAK,CAAC,EAC3BF,IACFE,EAAOA,EAAK,OAAOF,CAAI,GACzB,KAAK,EAAIE,EAAK,OAAO,EACrB,KAAK,EAAI,KAAK,MAAM,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EACvCF,IAGL,KAAK,EAAI,KAAK,MAAM,EACN,OAAO,KAAK,CAAC,EACb,OAAO,CAAE,CAAK,CAAC,EACf,OAAOA,CAAI,EACX,OAAO,EACrB,KAAK,EAAI,KAAK,MAAM,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EAC9C,EAEAL,GAAS,UAAU,OAAS,SAAgBE,EAASM,EAAYC,EAAKC,EAAQ,CAExE,OAAOF,GAAe,WACxBE,EAASD,EACTA,EAAMD,EACNA,EAAa,MAGfN,EAAUJ,GAAM,QAAQI,EAASM,CAAU,EAC3CC,EAAMX,GAAM,QAAQW,EAAKC,CAAM,EAE/BX,GAAOG,EAAQ,QAAW,KAAK,WAAa,EACrC,mCAAqC,KAAK,WAAa,OAAO,EAErE,KAAK,QAAQA,EAAQ,OAAOO,GAAO,CAAC,CAAC,CAAC,EACtC,KAAK,QAAU,CACjB,EAEAT,GAAS,UAAU,SAAW,SAAkBW,EAAKC,EAAKH,EAAKC,EAAQ,CACrE,GAAI,KAAK,QAAU,KAAK,eACtB,MAAM,IAAI,MAAM,oBAAoB,EAGlC,OAAOE,GAAQ,WACjBF,EAASD,EACTA,EAAMG,EACNA,EAAM,MAIJH,IACFA,EAAMX,GAAM,QAAQW,EAAKC,GAAU,KAAK,EACxC,KAAK,QAAQD,CAAG,GAIlB,QADII,EAAO,CAAC,EACLA,EAAK,OAASF,GACnB,KAAK,EAAI,KAAK,MAAM,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EAC5CE,EAAOA,EAAK,OAAO,KAAK,CAAC,EAG3B,IAAIC,EAAMD,EAAK,MAAM,EAAGF,CAAG,EAC3B,YAAK,QAAQF,CAAG,EAChB,KAAK,UACEX,GAAM,OAAOgB,EAAKF,CAAG,CAC9B,IChHA,IAAAG,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAK,KACLC,GAAQ,KACRC,GAASD,GAAM,OAEnB,SAASE,GAAQC,EAAIC,EAAS,CAC5B,KAAK,GAAKD,EACV,KAAK,KAAO,KACZ,KAAK,IAAM,KAGPC,EAAQ,MACV,KAAK,eAAeA,EAAQ,KAAMA,EAAQ,OAAO,EAC/CA,EAAQ,KACV,KAAK,cAAcA,EAAQ,IAAKA,EAAQ,MAAM,CAClD,CACAN,GAAO,QAAUI,GAEjBA,GAAQ,WAAa,SAAoBC,EAAIE,EAAKC,EAAK,CACrD,OAAID,aAAeH,GACVG,EAEF,IAAIH,GAAQC,EAAI,CACrB,IAAKE,EACL,OAAQC,CACV,CAAC,CACH,EAEAJ,GAAQ,YAAc,SAAqBC,EAAII,EAAMD,EAAK,CACxD,OAAIC,aAAgBL,GACXK,EAEF,IAAIL,GAAQC,EAAI,CACrB,KAAMI,EACN,QAASD,CACX,CAAC,CACH,EAEAJ,GAAQ,UAAU,SAAW,UAAoB,CAC/C,IAAIG,EAAM,KAAK,UAAU,EAEzB,OAAIA,EAAI,WAAW,EACV,CAAE,OAAQ,GAAO,OAAQ,oBAAqB,EAClDA,EAAI,SAAS,EAEbA,EAAI,IAAI,KAAK,GAAG,MAAM,CAAC,EAAE,WAAW,EAGlC,CAAE,OAAQ,GAAM,OAAQ,IAAK,EAF3B,CAAE,OAAQ,GAAO,OAAQ,qBAAsB,EAF/C,CAAE,OAAQ,GAAO,OAAQ,2BAA4B,CAKhE,EAEAH,GAAQ,UAAU,UAAY,SAAmBM,EAASF,EAAK,CAU7D,OARI,OAAOE,GAAY,WACrBF,EAAME,EACNA,EAAU,MAGP,KAAK,MACR,KAAK,IAAM,KAAK,GAAG,EAAE,IAAI,KAAK,IAAI,GAE/BF,EAGE,KAAK,IAAI,OAAOA,EAAKE,CAAO,EAF1B,KAAK,GAGhB,EAEAN,GAAQ,UAAU,WAAa,SAAoBI,EAAK,CACtD,OAAIA,IAAQ,MACH,KAAK,KAAK,SAAS,GAAI,CAAC,EAExB,KAAK,IAChB,EAEAJ,GAAQ,UAAU,eAAiB,SAAwBO,EAAKH,EAAK,CACnE,KAAK,KAAO,IAAIP,GAAGU,EAAKH,GAAO,EAAE,EAIjC,KAAK,KAAO,KAAK,KAAK,KAAK,KAAK,GAAG,MAAM,CAAC,CAC5C,EAEAJ,GAAQ,UAAU,cAAgB,SAAuBO,EAAKH,EAAK,CACjE,GAAIG,EAAI,GAAKA,EAAI,EAAG,CAId,KAAK,GAAG,MAAM,OAAS,OACzBR,GAAOQ,EAAI,EAAG,mBAAmB,GACxB,KAAK,GAAG,MAAM,OAAS,SACvB,KAAK,GAAG,MAAM,OAAS,YAChCR,GAAOQ,EAAI,GAAKA,EAAI,EAAG,8BAA8B,EAEvD,KAAK,IAAM,KAAK,GAAG,MAAM,MAAMA,EAAI,EAAGA,EAAI,CAAC,EAC3C,MACF,CACA,KAAK,IAAM,KAAK,GAAG,MAAM,YAAYA,EAAKH,CAAG,CAC/C,EAGAJ,GAAQ,UAAU,OAAS,SAAgBG,EAAK,CAC9C,OAAIA,EAAI,SAAS,GACfJ,GAAOI,EAAI,SAAS,EAAG,4BAA4B,EAE9CA,EAAI,IAAI,KAAK,IAAI,EAAE,KAAK,CACjC,EAGAH,GAAQ,UAAU,KAAO,SAAcQ,EAAKJ,EAAKF,EAAS,CACxD,OAAO,KAAK,GAAG,KAAKM,EAAK,KAAMJ,EAAKF,CAAO,CAC7C,EAEAF,GAAQ,UAAU,OAAS,SAAgBQ,EAAKC,EAAW,CACzD,OAAO,KAAK,GAAG,OAAOD,EAAKC,EAAW,IAAI,CAC5C,EAEAT,GAAQ,UAAU,QAAU,UAAmB,CAC7C,MAAO,eAAiB,KAAK,MAAQ,KAAK,KAAK,SAAS,GAAI,CAAC,GACtD,UAAY,KAAK,KAAO,KAAK,IAAI,QAAQ,GAAK,IACvD,ICxHA,IAAAU,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAK,KAELC,GAAQ,KACRC,GAASD,GAAM,OAEnB,SAASE,GAAUC,EAASC,EAAK,CAC/B,GAAID,aAAmBD,GACrB,OAAOC,EAEL,KAAK,WAAWA,EAASC,CAAG,IAGhCH,GAAOE,EAAQ,GAAKA,EAAQ,EAAG,0BAA0B,EACzD,KAAK,EAAI,IAAIJ,GAAGI,EAAQ,EAAG,EAAE,EAC7B,KAAK,EAAI,IAAIJ,GAAGI,EAAQ,EAAG,EAAE,EACzBA,EAAQ,gBAAkB,OAC5B,KAAK,cAAgB,KAErB,KAAK,cAAgBA,EAAQ,cACjC,CACAL,GAAO,QAAUI,GAEjB,SAASG,IAAW,CAClB,KAAK,MAAQ,CACf,CAEA,SAASC,GAAUC,EAAKC,EAAG,CACzB,IAAIC,EAAUF,EAAIC,EAAE,SACpB,GAAI,EAAEC,EAAU,KACd,OAAOA,EAET,IAAIC,EAAWD,EAAU,GAGzB,GAAIC,IAAa,GAAKA,EAAW,EAC/B,MAAO,GAIT,QADIC,EAAM,EACDC,EAAI,EAAGC,EAAML,EAAE,MAAOI,EAAIF,EAAUE,IAAKC,IAChDF,IAAQ,EACRA,GAAOJ,EAAIM,GACXF,KAAS,EAIX,OAAIA,GAAO,IACF,IAGTH,EAAE,MAAQK,EACHF,EACT,CAEA,SAASG,GAAUP,EAAK,CAGtB,QAFIK,EAAI,EACJG,EAAMR,EAAI,OAAS,EAChB,CAACA,EAAIK,IAAM,EAAEL,EAAIK,EAAI,GAAK,MAASA,EAAIG,GAC5CH,IAEF,OAAIA,IAAM,EACDL,EAEFA,EAAI,MAAMK,CAAC,CACpB,CAEAV,GAAU,UAAU,WAAa,SAAoBc,EAAMZ,EAAK,CAC9DY,EAAOhB,GAAM,QAAQgB,EAAMZ,CAAG,EAC9B,IAAII,EAAI,IAAIH,GACZ,GAAIW,EAAKR,EAAE,WAAa,GACtB,MAAO,GAET,IAAIO,EAAMT,GAAUU,EAAMR,CAAC,EAO3B,GANIO,IAAQ,IAGPA,EAAMP,EAAE,QAAWQ,EAAK,QAGzBA,EAAKR,EAAE,WAAa,EACtB,MAAO,GAET,IAAIS,EAAOX,GAAUU,EAAMR,CAAC,EAC5B,GAAIS,IAAS,GACX,MAAO,GAET,IAAIC,EAAIF,EAAK,MAAMR,EAAE,MAAOS,EAAOT,EAAE,KAAK,EAE1C,GADAA,EAAE,OAASS,EACPD,EAAKR,EAAE,WAAa,EACtB,MAAO,GAET,IAAIW,EAAOb,GAAUU,EAAMR,CAAC,EAI5B,GAHIW,IAAS,IAGTH,EAAK,SAAWG,EAAOX,EAAE,MAC3B,MAAO,GAET,IAAIY,EAAIJ,EAAK,MAAMR,EAAE,MAAOW,EAAOX,EAAE,KAAK,EAC1C,GAAIU,EAAE,KAAO,EACX,GAAIA,EAAE,GAAK,IACTA,EAAIA,EAAE,MAAM,CAAC,MAGb,OAAO,GAGX,GAAIE,EAAE,KAAO,EACX,GAAIA,EAAE,GAAK,IACTA,EAAIA,EAAE,MAAM,CAAC,MAGb,OAAO,GAIX,YAAK,EAAI,IAAIrB,GAAGmB,CAAC,EACjB,KAAK,EAAI,IAAInB,GAAGqB,CAAC,EACjB,KAAK,cAAgB,KAEd,EACT,EAEA,SAASC,GAAgBC,EAAKP,EAAK,CACjC,GAAIA,EAAM,IAAM,CACdO,EAAI,KAAKP,CAAG,EACZ,MACF,CACA,IAAIQ,EAAS,GAAK,KAAK,IAAIR,CAAG,EAAI,KAAK,MAAQ,GAE/C,IADAO,EAAI,KAAKC,EAAS,GAAI,EACf,EAAEA,GACPD,EAAI,KAAMP,KAASQ,GAAU,GAAM,GAAI,EAEzCD,EAAI,KAAKP,CAAG,CACd,CAEAb,GAAU,UAAU,MAAQ,SAAeE,EAAK,CAC9C,IAAI,EAAI,KAAK,EAAE,QAAQ,EACnBgB,EAAI,KAAK,EAAE,QAAQ,EAYvB,IATI,EAAE,GAAK,MACT,EAAI,CAAE,CAAE,EAAE,OAAO,CAAC,GAEhBA,EAAE,GAAK,MACTA,EAAI,CAAE,CAAE,EAAE,OAAOA,CAAC,GAEpB,EAAIN,GAAU,CAAC,EACfM,EAAIN,GAAUM,CAAC,EAER,CAACA,EAAE,IAAM,EAAEA,EAAE,GAAK,MACvBA,EAAIA,EAAE,MAAM,CAAC,EAEf,IAAIE,EAAM,CAAE,CAAK,EACjBD,GAAgBC,EAAK,EAAE,MAAM,EAC7BA,EAAMA,EAAI,OAAO,CAAC,EAClBA,EAAI,KAAK,CAAI,EACbD,GAAgBC,EAAKF,EAAE,MAAM,EAC7B,IAAII,EAAWF,EAAI,OAAOF,CAAC,EACvBK,EAAM,CAAE,EAAK,EACjB,OAAAJ,GAAgBI,EAAKD,EAAS,MAAM,EACpCC,EAAMA,EAAI,OAAOD,CAAQ,EAClBxB,GAAM,OAAOyB,EAAKrB,CAAG,CAC9B,ICrKA,IAAAsB,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAK,KACLC,GAAW,KACXC,GAAQ,KACRC,GAAS,KACTC,GAAO,KACPC,GAASH,GAAM,OAEfI,GAAU,KACVC,GAAY,KAEhB,SAASC,GAAGC,EAAS,CACnB,GAAI,EAAE,gBAAgBD,IACpB,OAAO,IAAIA,GAAGC,CAAO,EAGnB,OAAOA,GAAY,WACrBJ,GAAO,OAAO,UAAU,eAAe,KAAKF,GAAQM,CAAO,EACzD,iBAAmBA,CAAO,EAE5BA,EAAUN,GAAOM,IAIfA,aAAmBN,GAAO,cAC5BM,EAAU,CAAE,MAAOA,CAAQ,GAE7B,KAAK,MAAQA,EAAQ,MAAM,MAC3B,KAAK,EAAI,KAAK,MAAM,EACpB,KAAK,GAAK,KAAK,EAAE,MAAM,CAAC,EACxB,KAAK,EAAI,KAAK,MAAM,EAGpB,KAAK,EAAIA,EAAQ,MAAM,EACvB,KAAK,EAAE,WAAWA,EAAQ,MAAM,EAAE,UAAU,EAAI,CAAC,EAGjD,KAAK,KAAOA,EAAQ,MAAQA,EAAQ,MAAM,IAC5C,CACAV,GAAO,QAAUS,GAEjBA,GAAG,UAAU,QAAU,SAAiBC,EAAS,CAC/C,OAAO,IAAIH,GAAQ,KAAMG,CAAO,CAClC,EAEAD,GAAG,UAAU,eAAiB,SAAwBE,EAAMC,EAAK,CAC/D,OAAOL,GAAQ,YAAY,KAAMI,EAAMC,CAAG,CAC5C,EAEAH,GAAG,UAAU,cAAgB,SAAuBI,EAAKD,EAAK,CAC5D,OAAOL,GAAQ,WAAW,KAAMM,EAAKD,CAAG,CAC1C,EAEAH,GAAG,UAAU,WAAa,SAAoBC,EAAS,CAChDA,IACHA,EAAU,CAAC,GAcb,QAXII,EAAO,IAAIZ,GAAS,CACtB,KAAM,KAAK,KACX,KAAMQ,EAAQ,KACd,QAASA,EAAQ,SAAW,OAC5B,QAASA,EAAQ,SAAWL,GAAK,KAAK,KAAK,YAAY,EACvD,WAAYK,EAAQ,SAAWA,EAAQ,YAAc,OACrD,MAAO,KAAK,EAAE,QAAQ,CACxB,CAAC,EAEGK,EAAQ,KAAK,EAAE,WAAW,EAC1BC,EAAM,KAAK,EAAE,IAAI,IAAIf,GAAG,CAAC,CAAC,IACrB,CACP,IAAIU,EAAO,IAAIV,GAAGa,EAAK,SAASC,CAAK,CAAC,EACtC,GAAI,EAAAJ,EAAK,IAAIK,CAAG,EAAI,GAGpB,OAAAL,EAAK,MAAM,CAAC,EACL,KAAK,eAAeA,CAAI,CACjC,CACF,EAEAF,GAAG,UAAU,aAAe,SAAsBQ,EAAKC,EAAW,CAChE,IAAIC,EAAQF,EAAI,WAAW,EAAI,EAAI,KAAK,EAAE,UAAU,EAGpD,OAFIE,EAAQ,IACVF,EAAMA,EAAI,MAAME,CAAK,GACnB,CAACD,GAAaD,EAAI,IAAI,KAAK,CAAC,GAAK,EAC5BA,EAAI,IAAI,KAAK,CAAC,EAEdA,CACX,EAEAR,GAAG,UAAU,KAAO,SAAcQ,EAAKG,EAAKR,EAAKF,EAAS,CACpD,OAAOE,GAAQ,WACjBF,EAAUE,EACVA,EAAM,MAEHF,IACHA,EAAU,CAAC,GAEbU,EAAM,KAAK,eAAeA,EAAKR,CAAG,EAClCK,EAAM,KAAK,aAAa,IAAIhB,GAAGgB,EAAK,EAAE,CAAC,EAqBvC,QAlBIF,EAAQ,KAAK,EAAE,WAAW,EAC1BM,EAAOD,EAAI,WAAW,EAAE,QAAQ,KAAML,CAAK,EAG3CO,EAAQL,EAAI,QAAQ,KAAMF,CAAK,EAG/BD,EAAO,IAAIZ,GAAS,CACtB,KAAM,KAAK,KACX,QAASmB,EACT,MAAOC,EACP,KAAMZ,EAAQ,KACd,QAASA,EAAQ,SAAW,MAC9B,CAAC,EAGGa,EAAM,KAAK,EAAE,IAAI,IAAItB,GAAG,CAAC,CAAC,EAErBuB,EAAO,GAAKA,IAAQ,CAC3B,IAAIC,EAAIf,EAAQ,EACdA,EAAQ,EAAEc,CAAI,EACd,IAAIvB,GAAGa,EAAK,SAAS,KAAK,EAAE,WAAW,CAAC,CAAC,EAE3C,GADAW,EAAI,KAAK,aAAaA,EAAG,EAAI,EACzB,EAAAA,EAAE,KAAK,CAAC,GAAK,GAAKA,EAAE,IAAIF,CAAG,GAAK,GAGpC,KAAIG,EAAK,KAAK,EAAE,IAAID,CAAC,EACrB,GAAI,CAAAC,EAAG,WAAW,EAGlB,KAAIC,EAAMD,EAAG,KAAK,EACdE,EAAID,EAAI,KAAK,KAAK,CAAC,EACvB,GAAIC,EAAE,KAAK,CAAC,IAAM,EAGlB,KAAIC,EAAIJ,EAAE,KAAK,KAAK,CAAC,EAAE,IAAIG,EAAE,IAAIR,EAAI,WAAW,CAAC,EAAE,KAAKH,CAAG,CAAC,EAE5D,GADAY,EAAIA,EAAE,KAAK,KAAK,CAAC,EACbA,EAAE,KAAK,CAAC,IAAM,EAGlB,KAAIC,GAAiBJ,EAAG,KAAK,EAAE,MAAM,EAAI,EAAI,IACxBC,EAAI,IAAIC,CAAC,IAAM,EAAI,EAAI,GAG5C,OAAIlB,EAAQ,WAAamB,EAAE,IAAI,KAAK,EAAE,EAAI,IACxCA,EAAI,KAAK,EAAE,IAAIA,CAAC,EAChBC,GAAiB,GAGZ,IAAItB,GAAU,CAAE,EAAGoB,EAAG,EAAGC,EAAG,cAAeC,CAAc,CAAC,KACnE,CACF,EAEArB,GAAG,UAAU,OAAS,SAAgBQ,EAAKc,EAAWX,EAAKR,EAAK,CAC9DK,EAAM,KAAK,aAAa,IAAIhB,GAAGgB,EAAK,EAAE,CAAC,EACvCG,EAAM,KAAK,cAAcA,EAAKR,CAAG,EACjCmB,EAAY,IAAIvB,GAAUuB,EAAW,KAAK,EAG1C,IAAIH,EAAIG,EAAU,EACdF,EAAIE,EAAU,EAGlB,GAFIH,EAAE,KAAK,CAAC,EAAI,GAAKA,EAAE,IAAI,KAAK,CAAC,GAAK,GAElCC,EAAE,KAAK,CAAC,EAAI,GAAKA,EAAE,IAAI,KAAK,CAAC,GAAK,EACpC,MAAO,GAGT,IAAIG,EAAOH,EAAE,KAAK,KAAK,CAAC,EACpBI,EAAKD,EAAK,IAAIf,CAAG,EAAE,KAAK,KAAK,CAAC,EAC9BiB,EAAKF,EAAK,IAAIJ,CAAC,EAAE,KAAK,KAAK,CAAC,EAC5BO,EAEJ,OAAK,KAAK,MAAM,eAWhBA,EAAI,KAAK,EAAE,QAAQF,EAAIb,EAAI,UAAU,EAAGc,CAAE,EACtCC,EAAE,WAAW,EACR,GAKFA,EAAE,OAAOP,CAAC,IAjBfO,EAAI,KAAK,EAAE,OAAOF,EAAIb,EAAI,UAAU,EAAGc,CAAE,EACrCC,EAAE,WAAW,EACR,GAEFA,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,EAAE,IAAIP,CAAC,IAAM,EAc5C,EAEAnB,GAAG,UAAU,cAAgB,SAASQ,EAAKc,EAAWK,EAAGxB,EAAK,CAC5DN,IAAQ,EAAI8B,KAAOA,EAAG,0CAA0C,EAChEL,EAAY,IAAIvB,GAAUuB,EAAWnB,CAAG,EAExC,IAAIyB,EAAI,KAAK,EACTC,EAAI,IAAIrC,GAAGgB,CAAG,EACdW,EAAIG,EAAU,EACdF,EAAIE,EAAU,EAGdQ,EAASH,EAAI,EACbI,EAAcJ,GAAK,EACvB,GAAIR,EAAE,IAAI,KAAK,MAAM,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,GAAK,GAAKY,EACjD,MAAM,IAAI,MAAM,sCAAsC,EAGpDA,EACFZ,EAAI,KAAK,MAAM,WAAWA,EAAE,IAAI,KAAK,MAAM,CAAC,EAAGW,CAAM,EAErDX,EAAI,KAAK,MAAM,WAAWA,EAAGW,CAAM,EAErC,IAAIE,EAAOV,EAAU,EAAE,KAAKM,CAAC,EACzBK,EAAKL,EAAE,IAAIC,CAAC,EAAE,IAAIG,CAAI,EAAE,KAAKJ,CAAC,EAC9BM,EAAKd,EAAE,IAAIY,CAAI,EAAE,KAAKJ,CAAC,EAI3B,OAAO,KAAK,EAAE,OAAOK,EAAId,EAAGe,CAAE,CAChC,EAEAlC,GAAG,UAAU,oBAAsB,SAAS6B,EAAGP,EAAWa,EAAGhC,EAAK,CAEhE,GADAmB,EAAY,IAAIvB,GAAUuB,EAAWnB,CAAG,EACpCmB,EAAU,gBAAkB,KAC9B,OAAOA,EAAU,cAEnB,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAC1B,IAAIc,EACJ,GAAI,CACFA,EAAS,KAAK,cAAcP,EAAGP,EAAW,CAAC,CAC7C,MAAE,CACA,QACF,CAEA,GAAIc,EAAO,GAAGD,CAAC,EACb,OAAO,CACX,CACA,MAAM,IAAI,MAAM,sCAAsC,CACxD,IClPA,IAAAE,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAQ,KACRC,GAASD,GAAM,OACfE,GAAaF,GAAM,WACnBG,GAAiBH,GAAM,eAW3B,SAASI,GAAQC,EAAOC,EAAQ,CAC9B,KAAK,MAAQD,EACb,KAAK,QAAUH,GAAWI,EAAO,MAAM,EACnCD,EAAM,QAAQC,EAAO,GAAG,EAC1B,KAAK,KAAOA,EAAO,IAEnB,KAAK,UAAYJ,GAAWI,EAAO,GAAG,CAC1C,CAEAF,GAAQ,WAAa,SAAoBC,EAAOE,EAAK,CACnD,OAAIA,aAAeH,GACVG,EACF,IAAIH,GAAQC,EAAO,CAAE,IAAKE,CAAI,CAAC,CACxC,EAEAH,GAAQ,WAAa,SAAoBC,EAAOG,EAAQ,CACtD,OAAIA,aAAkBJ,GACbI,EACF,IAAIJ,GAAQC,EAAO,CAAE,OAAQG,CAAO,CAAC,CAC9C,EAEAJ,GAAQ,UAAU,OAAS,UAAkB,CAC3C,OAAO,KAAK,OACd,EAEAD,GAAeC,GAAS,WAAY,UAAoB,CACtD,OAAO,KAAK,MAAM,YAAY,KAAK,IAAI,CAAC,CAC1C,CAAC,EAEDD,GAAeC,GAAS,MAAO,UAAe,CAC5C,OAAI,KAAK,UACA,KAAK,MAAM,YAAY,KAAK,SAAS,EACvC,KAAK,MAAM,EAAE,IAAI,KAAK,KAAK,CAAC,CACrC,CAAC,EAEDD,GAAeC,GAAS,YAAa,UAAqB,CACxD,IAAIC,EAAQ,KAAK,MACbI,EAAO,KAAK,KAAK,EACjBC,EAASL,EAAM,eAAiB,EAEhCM,EAAIF,EAAK,MAAM,EAAGJ,EAAM,cAAc,EAC1C,OAAAM,EAAE,IAAM,IACRA,EAAED,IAAW,IACbC,EAAED,IAAW,GAENC,CACT,CAAC,EAEDR,GAAeC,GAAS,OAAQ,UAAgB,CAC9C,OAAO,KAAK,MAAM,UAAU,KAAK,UAAU,CAAC,CAC9C,CAAC,EAEDD,GAAeC,GAAS,OAAQ,UAAgB,CAC9C,OAAO,KAAK,MAAM,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,EAAE,OAAO,CACxD,CAAC,EAEDD,GAAeC,GAAS,gBAAiB,UAAyB,CAChE,OAAO,KAAK,KAAK,EAAE,MAAM,KAAK,MAAM,cAAc,CACpD,CAAC,EAEDA,GAAQ,UAAU,KAAO,SAAcQ,EAAS,CAC9C,OAAAX,GAAO,KAAK,QAAS,yBAAyB,EACvC,KAAK,MAAM,KAAKW,EAAS,IAAI,CACtC,EAEAR,GAAQ,UAAU,OAAS,SAAgBQ,EAASC,EAAK,CACvD,OAAO,KAAK,MAAM,OAAOD,EAASC,EAAK,IAAI,CAC7C,EAEAT,GAAQ,UAAU,UAAY,SAAmBU,EAAK,CACpD,OAAAb,GAAO,KAAK,QAAS,wBAAwB,EACtCD,GAAM,OAAO,KAAK,OAAO,EAAGc,CAAG,CACxC,EAEAV,GAAQ,UAAU,UAAY,SAAmBU,EAAK,CACpD,OAAOd,GAAM,OAAO,KAAK,SAAS,EAAGc,CAAG,CAC1C,EAEAf,GAAO,QAAUK,KC9FjB,IAAAW,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAK,KACLC,GAAQ,KACRC,GAASD,GAAM,OACfE,GAAiBF,GAAM,eACvBG,GAAaH,GAAM,WAUvB,SAASI,GAAUC,EAAOC,EAAK,CAC7B,KAAK,MAAQD,EAET,OAAOC,GAAQ,WACjBA,EAAMH,GAAWG,CAAG,GAElB,MAAM,QAAQA,CAAG,IACnBA,EAAM,CACJ,EAAGA,EAAI,MAAM,EAAGD,EAAM,cAAc,EACpC,EAAGC,EAAI,MAAMD,EAAM,cAAc,CACnC,GAGFJ,GAAOK,EAAI,GAAKA,EAAI,EAAG,0BAA0B,EAE7CD,EAAM,QAAQC,EAAI,CAAC,IACrB,KAAK,GAAKA,EAAI,GACZA,EAAI,aAAaP,KACnB,KAAK,GAAKO,EAAI,GAEhB,KAAK,UAAY,MAAM,QAAQA,EAAI,CAAC,EAAIA,EAAI,EAAIA,EAAI,SACpD,KAAK,UAAY,MAAM,QAAQA,EAAI,CAAC,EAAIA,EAAI,EAAIA,EAAI,QACtD,CAEAJ,GAAeE,GAAW,IAAK,UAAa,CAC1C,OAAO,KAAK,MAAM,UAAU,KAAK,SAAS,CAAC,CAC7C,CAAC,EAEDF,GAAeE,GAAW,IAAK,UAAa,CAC1C,OAAO,KAAK,MAAM,YAAY,KAAK,SAAS,CAAC,CAC/C,CAAC,EAEDF,GAAeE,GAAW,WAAY,UAAoB,CACxD,OAAO,KAAK,MAAM,YAAY,KAAK,EAAE,CAAC,CACxC,CAAC,EAEDF,GAAeE,GAAW,WAAY,UAAoB,CACxD,OAAO,KAAK,MAAM,UAAU,KAAK,EAAE,CAAC,CACtC,CAAC,EAEDA,GAAU,UAAU,QAAU,UAAmB,CAC/C,OAAO,KAAK,SAAS,EAAE,OAAO,KAAK,SAAS,CAAC,CAC/C,EAEAA,GAAU,UAAU,MAAQ,UAAiB,CAC3C,OAAOJ,GAAM,OAAO,KAAK,QAAQ,EAAG,KAAK,EAAE,YAAY,CACzD,EAEAF,GAAO,QAAUM,KChEjB,IAAAG,GAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,GAAO,KACPC,GAAS,KACTC,GAAQ,KACRC,GAASD,GAAM,OACfE,GAAaF,GAAM,WACnBG,GAAU,KACVC,GAAY,KAEhB,SAASC,GAAMC,EAAO,CAGpB,GAFAL,GAAOK,IAAU,UAAW,iCAAiC,EAEzD,EAAE,gBAAgBD,IACpB,OAAO,IAAIA,GAAMC,CAAK,EAExBA,EAAQP,GAAOO,GAAO,MACtB,KAAK,MAAQA,EACb,KAAK,EAAIA,EAAM,EACf,KAAK,EAAE,WAAWA,EAAM,EAAE,UAAU,EAAI,CAAC,EAEzC,KAAK,WAAaA,EAAM,MAAM,EAAE,YAChC,KAAK,eAAiB,KAAK,KAAKA,EAAM,EAAE,UAAU,EAAI,CAAC,EACvD,KAAK,KAAOR,GAAK,MACnB,CAEAD,GAAO,QAAUQ,GAOjBA,GAAM,UAAU,KAAO,SAAcE,EAASC,EAAQ,CACpDD,EAAUL,GAAWK,CAAO,EAC5B,IAAIE,EAAM,KAAK,cAAcD,CAAM,EAC/BE,EAAI,KAAK,QAAQD,EAAI,cAAc,EAAGF,CAAO,EAC7CI,EAAI,KAAK,EAAE,IAAID,CAAC,EAChBE,EAAW,KAAK,YAAYD,CAAC,EAC7BE,EAAK,KAAK,QAAQD,EAAUH,EAAI,SAAS,EAAGF,CAAO,EACpD,IAAIE,EAAI,KAAK,CAAC,EACbK,EAAIJ,EAAE,IAAIG,CAAE,EAAE,KAAK,KAAK,MAAM,CAAC,EACnC,OAAO,KAAK,cAAc,CAAE,EAAGF,EAAG,EAAGG,EAAG,SAAUF,CAAS,CAAC,CAC9D,EAQAP,GAAM,UAAU,OAAS,SAAgBE,EAASQ,EAAKC,EAAK,CAC1DT,EAAUL,GAAWK,CAAO,EAC5BQ,EAAM,KAAK,cAAcA,CAAG,EAC5B,IAAIN,EAAM,KAAK,cAAcO,CAAG,EAC5BC,EAAI,KAAK,QAAQF,EAAI,SAAS,EAAGN,EAAI,SAAS,EAAGF,CAAO,EACxDW,EAAK,KAAK,EAAE,IAAIH,EAAI,EAAE,CAAC,EACvBI,EAAUJ,EAAI,EAAE,EAAE,IAAIN,EAAI,IAAI,EAAE,IAAIQ,CAAC,CAAC,EAC1C,OAAOE,EAAQ,GAAGD,CAAE,CACtB,EAEAb,GAAM,UAAU,QAAU,UAAmB,CAE3C,QADIP,EAAO,KAAK,KAAK,EACZsB,EAAI,EAAGA,EAAI,UAAU,OAAQA,IACpCtB,EAAK,OAAO,UAAUsB,EAAE,EAC1B,OAAOpB,GAAM,UAAUF,EAAK,OAAO,CAAC,EAAE,KAAK,KAAK,MAAM,CAAC,CACzD,EAEAO,GAAM,UAAU,cAAgB,SAAuBW,EAAK,CAC1D,OAAOb,GAAQ,WAAW,KAAMa,CAAG,CACrC,EAEAX,GAAM,UAAU,cAAgB,SAAuBG,EAAQ,CAC7D,OAAOL,GAAQ,WAAW,KAAMK,CAAM,CACxC,EAEAH,GAAM,UAAU,cAAgB,SAAuBU,EAAK,CAC1D,OAAIA,aAAeX,GACVW,EACF,IAAIX,GAAU,KAAMW,CAAG,CAChC,EAUAV,GAAM,UAAU,YAAc,SAAqBgB,EAAO,CACxD,IAAIC,EAAMD,EAAM,KAAK,EAAE,QAAQ,KAAM,KAAK,cAAc,EACxD,OAAAC,EAAI,KAAK,eAAiB,IAAMD,EAAM,KAAK,EAAE,MAAM,EAAI,IAAO,EACvDC,CACT,EAEAjB,GAAM,UAAU,YAAc,SAAqBkB,EAAO,CACxDA,EAAQvB,GAAM,WAAWuB,CAAK,EAE9B,IAAIC,EAASD,EAAM,OAAS,EACxBE,EAASF,EAAM,MAAM,EAAGC,CAAM,EAAE,OAAOD,EAAMC,GAAU,IAAK,EAC5DE,GAAUH,EAAMC,GAAU,OAAU,EAEpCG,EAAI3B,GAAM,UAAUyB,CAAM,EAC9B,OAAO,KAAK,MAAM,WAAWE,EAAGD,CAAM,CACxC,EAEArB,GAAM,UAAU,UAAY,SAAmBuB,EAAK,CAClD,OAAOA,EAAI,QAAQ,KAAM,KAAK,cAAc,CAC9C,EAEAvB,GAAM,UAAU,UAAY,SAAmBkB,EAAO,CACpD,OAAOvB,GAAM,UAAUuB,CAAK,CAC9B,EAEAlB,GAAM,UAAU,QAAU,SAAiBwB,EAAK,CAC9C,OAAOA,aAAe,KAAK,UAC7B,ICrHA,IAAAC,GAAAC,EAAAC,IAAA,cAEA,IAAIC,GAAWD,GAEfC,GAAS,QAAU,KAA2B,QAC9CA,GAAS,MAAQ,KACjBA,GAAS,KAAO,KAChBA,GAAS,MAAQ,KACjBA,GAAS,OAAS,KAGlBA,GAAS,GAAK,KACdA,GAAS,MAAQ,kLCZjB,IAAAC,GAAAC,GAAA,IAAA,EACOC,GAAKF,GAAA,QAAI,GAEPG,GAAA,GAAAD,oGCHIE,GAAA,QAAU,sBCAvB,IAAAC,GAAAC,EAAAC,IAAA,6HAEA,IAAAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAE7BE,GAAa,KACjB,SAASC,IAAQ,CACb,OAAKD,KACDA,GAAS,IAAIN,GAAA,GAAG,WAAW,GAExBM,EACX,CAEA,IAAAE,GAAA,UAAA,CAYI,SAAAA,EAAYC,EAAqB,EA/BrC,EAgCQP,GAAA,gBAAe,KAAM,QAAS,WAAW,GAhCjD,EAkCQA,GAAA,gBAAe,KAAM,cAlC7B,EAkC2CD,GAAA,SAAQQ,CAAU,CAAC,GAlC9D,EAmCYR,GAAA,eAAc,KAAK,UAAU,IAAM,IACnCI,GAAO,mBAAmB,sBAAuB,aAAc,gBAAgB,EAGnF,IAAMK,EAAUH,GAAQ,EAAG,gBAvCnC,EAuCkDN,GAAA,UAAS,KAAK,UAAU,CAAC,GAvC3E,EAyCQC,GAAA,gBAAe,KAAM,YAAa,KAAOQ,EAAQ,UAAU,GAAO,KAAK,CAAC,GAzChF,EA0CQR,GAAA,gBAAe,KAAM,sBAAuB,KAAOQ,EAAQ,UAAU,GAAM,KAAK,CAAC,GA1CzF,EA4CQR,GAAA,gBAAe,KAAM,gBAAiB,EAAI,CAC9C,CAEA,OAAAM,EAAA,UAAA,UAAA,SAAUG,EAAgB,CACtB,IAAMC,EAAML,GAAQ,EAAG,eAhD/B,EAgD6CN,GAAA,UAAS,KAAK,SAAS,CAAC,EACvDY,EAAMN,GAAQ,EAAG,eAjD/B,EAiD6CN,GAAA,UAASU,CAAK,CAAC,EACpD,MAAO,KAAOC,EAAG,IAAI,IAAIC,EAAG,GAAG,EAAE,iBAAiB,KAAK,CAC3D,EAEAL,EAAA,UAAA,WAAA,SAAWM,EAAiB,CACxB,IAAMJ,EAAUH,GAAQ,EAAG,gBAtDnC,EAsDkDN,GAAA,UAAS,KAAK,UAAU,CAAC,EAC7Dc,GAvDd,EAuD4Bd,GAAA,UAASa,CAAM,EAC/BC,EAAY,SAAW,IACvBV,GAAO,mBAAmB,oBAAqB,SAAUS,CAAM,EAEnE,IAAME,EAAYN,EAAQ,KAAKK,EAAa,CAAE,UAAW,EAAI,CAAE,EAC/D,OA5DR,EA4Ded,GAAA,gBAAe,CAClB,cAAee,EAAU,cACzB,GA9DZ,EA8Def,GAAA,YAAW,KAAOe,EAAU,EAAE,SAAS,EAAE,EAAG,EAAE,EACjD,GA/DZ,EA+Def,GAAA,YAAW,KAAOe,EAAU,EAAE,SAAS,EAAE,EAAG,EAAE,EACpD,CACL,EAEAR,EAAA,UAAA,oBAAA,SAAoBS,EAAmB,CACnC,IAAMP,EAAUH,GAAQ,EAAG,gBApEnC,EAoEkDN,GAAA,UAAS,KAAK,UAAU,CAAC,EAC7DiB,EAAeX,GAAQ,EAAG,eArExC,EAqEsDN,GAAA,UAASkB,GAAiBF,CAAQ,CAAC,CAAC,EAClF,OAtER,EAsEehB,GAAA,YAAW,KAAOS,EAAQ,OAAOQ,EAAa,UAAS,CAAE,EAAE,SAAS,EAAE,EAAG,EAAE,CACtF,EAEOV,EAAA,aAAP,SAAoBY,EAAU,CAC1B,MAAO,CAAC,EAAEA,GAASA,EAAM,cAC7B,EACJZ,CAAA,EAzDA,EAAaT,GAAA,WAAAS,GA2Db,SAAgBa,GAAiBP,EAAmBE,EAAwB,CACxE,IAAMM,GA/EV,EA+EgBrB,GAAA,gBAAee,CAAS,EAC9BO,EAAK,CAAE,GAhFjB,EAgFoBtB,GAAA,UAASqB,EAAI,CAAC,EAAG,GAhFrC,EAgFwCrB,GAAA,UAASqB,EAAI,CAAC,CAAC,EACnD,MAAO,KAAOf,GAAQ,EAAG,eAjF7B,EAiF2CN,GAAA,UAASa,CAAM,EAAGS,EAAID,EAAI,aAAa,EAAE,OAAO,MAAO,EAAK,CACvG,CAJAvB,GAAA,iBAAAsB,GAMA,SAAgBF,GAAiBK,EAAgBC,EAAoB,CACjE,IAAMC,GArFV,EAqFkBzB,GAAA,UAASuB,CAAG,EAE1B,GAAIE,EAAM,SAAW,GAAI,CACrB,IAAMC,EAAa,IAAInB,GAAWkB,CAAK,EACvC,OAAID,EACO,KAAOlB,GAAQ,EAAG,eAAemB,CAAK,EAAE,UAAU,GAAM,KAAK,EAEjEC,EAAW,cAEf,IAAID,EAAM,SAAW,GACxB,OAAID,GA/FZ,EA+FiCxB,GAAA,SAAQyB,CAAK,EAC/B,KAAOnB,GAAQ,EAAG,cAAcmB,CAAK,EAAE,UAAU,GAAO,KAAK,EAEjE,GAAIA,EAAM,SAAW,GACxB,OAAKD,EACE,KAAOlB,GAAQ,EAAG,cAAcmB,CAAK,EAAE,UAAU,GAAM,KAAK,GApG3E,EAmGkCzB,GAAA,SAAQyB,CAAK,EAI3C,OAAOrB,GAAO,mBAAmB,gCAAiC,MAAO,YAAY,CACzF,CApBAN,GAAA,iBAAAoB,oGCpFaS,GAAA,QAAU,uBCAvB,IAAAC,GAAAC,EAAAC,IAAA,4rBAEA,IAAAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAAC,GAAA,IAAA,EACAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAYrBE,IAAZ,SAAYA,EAAgB,CACxBA,EAAAA,EAAA,OAAA,GAAA,SACAA,EAAAA,EAAA,QAAA,GAAA,UACAA,EAAAA,EAAA,QAAA,GAAA,SACJ,GAJYA,GAAAb,GAAA,mBAAAA,GAAA,iBAAgB,CAAA,EAAA,EA2D5B,SAASc,GAAcC,EAAa,CAChC,OAAIA,IAAU,KAAe,MArFjC,EAsFWd,GAAA,YAAWc,CAAK,CAC3B,CAEA,SAASC,GAAaD,EAAa,CAC/B,OAAIA,IAAU,KAAeX,GAAA,KACtBF,GAAA,UAAU,KAAKa,CAAK,CAC/B,CAGA,IAAME,GAAoB,CACtB,CAAE,KAAM,QAAY,UAAW,GAAI,QAAS,EAAI,EAChD,CAAE,KAAM,WAAY,UAAW,GAAI,QAAS,EAAI,EAChD,CAAE,KAAM,WAAY,UAAW,GAAI,QAAS,EAAI,EAChD,CAAE,KAAM,KAAe,OAAQ,EAAE,EACjC,CAAE,KAAM,QAAY,UAAW,GAAI,QAAS,EAAI,EAChD,CAAE,KAAM,MAAM,GAGZC,GAAuD,CACzD,QAAS,GAAM,KAAM,GAAM,SAAU,GAAM,SAAS,GAAM,MAAO,GAAM,GAAI,GAAM,KAAM,GAAM,MAAO,IAGxG,SAAgBC,GAAeC,EAAuB,CAClD,IAAMC,GA7GV,EA6GsBZ,GAAA,kBAAiBW,CAAG,EACtC,OA9GJ,EA8GWnB,GAAA,aA9GX,EA8GsBE,GAAA,eA9GtB,EA8GmCE,GAAA,YA9GnC,EA8G6CF,GAAA,cAAakB,EAAW,CAAC,CAAC,EAAG,EAAE,CAAC,CAC7E,CAHArB,GAAA,eAAAmB,GAKA,SAAgBG,GAAeC,EAAmBC,EAAwB,CACtE,OAAOL,IAlHX,EAkH0BV,GAAA,mBAlH1B,EAkH2CN,GAAA,UAASoB,CAAM,EAAGC,CAAS,CAAC,CACvE,CAFAxB,GAAA,eAAAsB,GAIA,SAASG,GAAaV,EAAqBW,EAAY,CACnD,IAAMC,GAtHV,EAsHmBxB,GAAA,YAAWD,GAAA,UAAU,KAAKa,CAAK,EAAE,YAAW,CAAE,EAC7D,OAAIY,EAAO,OAAS,IAChBf,GAAO,mBAAmB,sBAAwBc,EAAO,eAAiBA,EAAOX,CAAK,EAEnFY,CACX,CAEA,SAASC,GAAaC,EAAcC,EAA0B,CAC1D,MAAO,CACH,SA/HR,EA+HiB7B,GAAA,YAAW4B,CAAI,EACxB,aAAcC,GAAe,CAAA,GAAI,IAAI,SAACC,EAAYC,EAAK,CACnD,OAjIZ,EAiIgB7B,GAAA,eAAc4B,CAAU,IAAM,IAC9BnB,GAAO,mBAAmB,iCAAkC,cAAeiB,EAAI,IAAMG,EAAK,IAAMD,CAAU,EAEvGA,EAAW,YAAW,CACjC,CAAC,EAET,CAEA,SAAgBE,GAAclB,EAAoB,CAC9C,GAAI,MAAM,QAAQA,CAAK,EACnB,OAA0FA,EAAO,IAAI,SAACmB,EAAKF,EAAK,CAC5G,OAAI,MAAM,QAAQE,CAAG,GACbA,EAAI,OAAS,GACbtB,GAAO,mBAAmB,wDAAyD,SAAUoB,EAAK,IAAME,CAAG,EAExGN,GAAaM,EAAI,GAAIA,EAAI,EAAE,GAE/BN,GAAaM,EAAI,QAASA,EAAI,WAAW,CACpD,CAAC,EAGL,IAAMP,EAAiE,OAAO,KAAKZ,CAAK,EAAE,IAAI,SAACc,EAAI,CAC/F,IAAMC,EAAoCf,EAAMc,GAAM,OAAO,SAACM,EAAOJ,EAAU,CAC3E,OAAAI,EAAMJ,GAAc,GACbI,CACX,EAAyB,CAAA,CAAG,EAC5B,OAAOP,GAAaC,EAAM,OAAO,KAAKC,CAAW,EAAE,KAAI,CAAE,CAC7D,CAAC,EACD,OAAAH,EAAO,KAAK,SAACS,EAAGC,EAAC,CAAK,OAACD,EAAE,QAAQ,cAAcC,EAAE,OAAO,CAAlC,CAAoC,EACnDV,CACX,CAtBA3B,GAAA,cAAAiC,GAwBA,SAASK,GAAiBvB,EAAoB,CAC1C,OAAOkB,GAAclB,CAAK,EAAE,IAAI,SAACmB,EAAG,CAAK,MAAA,CAAEA,EAAI,QAASA,EAAI,WAAW,CAA9B,CAAgC,CAC7E,CAEA,SAASK,GAAkBC,EAAkChB,EAAyB,CAIlF,GAAIgB,EAAY,UAAY,KAAM,CAC9B,IAAMC,EAAWvC,GAAA,UAAU,KAAKsC,EAAY,QAAQ,EAC9CE,EAAexC,GAAA,UAAU,KAAKsC,EAAY,cAAgB,CAAC,EAC5DC,EAAS,GAAGC,CAAY,GACzB9B,GAAO,mBAAmB,6CAA8C,KAAM,CAC1E,SAAQ6B,EAAE,aAAYC,EACzB,EAIT,IAAMC,EAAc,CAChBlB,GAAae,EAAY,SAAW,EAAG,SAAS,EAChDf,GAAae,EAAY,OAAS,EAAG,OAAO,EAC5Cf,GAAae,EAAY,sBAAwB,EAAG,sBAAsB,EAC1Ef,GAAae,EAAY,cAAgB,EAAG,cAAc,EAC1Df,GAAae,EAAY,UAAY,EAAG,UAAU,EAChDA,EAAY,IAAM,MAzL5B,EAyLoCvC,GAAA,YAAWuC,EAAY,EAAE,EAAG,KACxDf,GAAae,EAAY,OAAS,EAAG,OAAO,EAC3CA,EAAY,MAAQ,KACpBF,GAAiBE,EAAY,YAAc,CAAA,CAAE,GAGlD,GAAIhB,EAAW,CACX,IAAMoB,GAhMd,EAgMoBzC,GAAA,gBAAeqB,CAAS,EACpCmB,EAAO,KAAKlB,GAAamB,EAAI,cAAe,eAAe,CAAC,EAC5DD,EAAO,MAlMf,EAkMoBxC,GAAA,YAAWyC,EAAI,CAAC,CAAC,EAC7BD,EAAO,MAnMf,EAmMoBxC,GAAA,YAAWyC,EAAI,CAAC,CAAC,EAGjC,OAtMJ,EAsMWzC,GAAA,WAAU,CAAE,OAAQI,GAAI,OAAOoC,CAAM,CAAC,CAAC,CAClD,CAEA,SAASE,GAAkBL,EAAkChB,EAAyB,CAClF,IAAMmB,EAAc,CAChBlB,GAAae,EAAY,SAAW,EAAG,SAAS,EAChDf,GAAae,EAAY,OAAS,EAAG,OAAO,EAC5Cf,GAAae,EAAY,UAAY,EAAG,UAAU,EAClDf,GAAae,EAAY,UAAY,EAAG,UAAU,EAChDA,EAAY,IAAM,MA/M5B,EA+MoCvC,GAAA,YAAWuC,EAAY,EAAE,EAAG,KACxDf,GAAae,EAAY,OAAS,EAAG,OAAO,EAC3CA,EAAY,MAAQ,KACpBF,GAAiBE,EAAY,YAAc,CAAA,CAAE,GAGlD,GAAIhB,EAAW,CACX,IAAMoB,GAtNd,EAsNoBzC,GAAA,gBAAeqB,CAAS,EACpCmB,EAAO,KAAKlB,GAAamB,EAAI,cAAe,eAAe,CAAC,EAC5DD,EAAO,MAxNf,EAwNoBxC,GAAA,YAAWyC,EAAI,CAAC,CAAC,EAC7BD,EAAO,MAzNf,EAyNoBxC,GAAA,YAAWyC,EAAI,CAAC,CAAC,EAGjC,OA5NJ,EA4NWzC,GAAA,WAAU,CAAE,OAAQI,GAAI,OAAOoC,CAAM,CAAC,CAAC,CAClD,CAGA,SAASG,GAAWN,EAAkChB,EAAyB,EAhO/E,EAiOIlB,GAAA,iBAAgBkC,EAAatB,EAAsB,EAEnD,IAAM6B,EAAkC,CAAA,EAExC9B,GAAkB,QAAQ,SAAS+B,EAAS,CACxC,IAAIjC,EAAcyB,EAAaQ,EAAU,OAAU,CAAA,EAC7CC,EAAuB,CAAA,EACzBD,EAAU,UAAWC,EAAQ,OAAS,QAC1ClC,GAzOR,EAyOgBZ,GAAA,WAzOhB,EAyOyBA,GAAA,SAAQY,EAAOkC,CAAO,CAAC,EAGpCD,EAAU,QAAUjC,EAAM,SAAWiC,EAAU,QAAUjC,EAAM,OAAS,GACxEH,GAAO,mBAAmB,sBAAwBoC,EAAU,KAAO,eAAiBA,EAAU,KAAOjC,CAAK,EAI1GiC,EAAU,YACVjC,GAlPZ,EAkPoBZ,GAAA,YAAWY,CAAK,EACpBA,EAAM,OAASiC,EAAU,WACzBpC,GAAO,mBAAmB,sBAAwBoC,EAAU,KAAO,eAAiBA,EAAU,KAAOjC,CAAK,GAIlHgC,EAAI,MAxPZ,EAwPiB5C,GAAA,SAAQY,CAAK,CAAC,CAC3B,CAAC,EAED,IAAImC,EAAU,EAsBd,GArBIV,EAAY,SAAW,MAEvBU,EAAUV,EAAY,QAElB,OAAOU,GAAa,UACpBtC,GAAO,mBAAmB,8BAA+B,cAAe4B,CAAW,GAGhFhB,GAAa,EApQ5B,EAoQ6BrB,GAAA,aAAYqB,CAAS,GAAKA,EAAU,EAAI,KAE7D0B,EAAU,KAAK,OAAO1B,EAAU,EAAI,IAAM,CAAC,GAI3C0B,IAAY,IACZH,EAAI,MA3QZ,EA2QiB5C,GAAA,SAAQ+C,CAAO,CAAC,EACzBH,EAAI,KAAK,IAAI,EACbA,EAAI,KAAK,IAAI,GAIb,CAACvB,EACD,OAAOjB,GAAI,OAAOwC,CAAG,EAKzB,IAAMH,GAvRV,EAuRgBzC,GAAA,gBAAeqB,CAAS,EAGhC2B,EAAI,GAAKP,EAAI,cACjB,OAAIM,IAAY,GACZH,EAAI,IAAG,EACPA,EAAI,IAAG,EACPA,EAAI,IAAG,EACPI,GAAKD,EAAU,EAAI,EAGfN,EAAI,EAAI,IAAMA,EAAI,IAAMO,GACvBvC,GAAO,mBAAmB,2CAA4C,YAAaY,CAAS,GAE1FoB,EAAI,IAAMO,GAChBvC,GAAO,mBAAmB,2CAA4C,YAAaY,CAAS,EAGjGuB,EAAI,MAzSR,EAySa5C,GAAA,SAAQgD,CAAC,CAAC,EACnBJ,EAAI,MA1SR,EA0Sa5C,GAAA,aA1Sb,EA0SwBA,GAAA,UAASyC,EAAI,CAAC,CAAC,CAAC,EACpCG,EAAI,MA3SR,EA2Sa5C,GAAA,aA3Sb,EA2SwBA,GAAA,UAASyC,EAAI,CAAC,CAAC,CAAC,EAE7BrC,GAAI,OAAOwC,CAAG,CACzB,CAEA,SAAgBK,GAAUZ,EAAkChB,EAAyB,CAEjF,GAAIgB,EAAY,MAAQ,MAAQA,EAAY,OAAS,EACjD,OAAIA,EAAY,YAAc,MAC1B5B,GAAO,mBAAmB,kEAAmE,cAAe4B,CAAW,EAEpHM,GAAWN,EAAahB,CAAS,EAI5C,OAAQgB,EAAY,KAAM,CACtB,IAAK,GACD,OAAOK,GAAkBL,EAAahB,CAAS,EACnD,IAAK,GACD,OAAOe,GAAkBC,EAAahB,CAAS,EACnD,QACI,MAGR,OAAOZ,GAAO,WAAW,iCAAkC4B,EAAY,KAAS9B,GAAA,OAAO,OAAO,sBAAuB,CACjH,UAAW,uBACX,gBAAiB8B,EAAY,KAChC,CACL,CAvBAxC,GAAA,UAAAoD,GAyBA,SAASC,GAAmBC,EAAiBX,EAAuBS,EAA8C,CAC9G,GAAI,CACA,IAAMG,EAAQvC,GAAa2B,EAAO,EAAE,EAAE,SAAQ,EAC9C,GAAIY,IAAU,GAAKA,IAAU,EAAK,MAAM,IAAI,MAAM,WAAW,EAC7DD,EAAG,EAAIC,OACT,CACE3C,GAAO,mBAAmB,oCAAqC,IAAK+B,EAAO,EAAE,EAGjFW,EAAG,GAlVP,EAkVWnD,GAAA,YAAWwC,EAAO,GAAI,EAAE,EAC/BW,EAAG,GAnVP,EAmVWnD,GAAA,YAAWwC,EAAO,GAAI,EAAE,EAE/B,GAAI,CACA,IAAMpB,GAtVd,EAsVuBlB,GAAA,WAAU+C,EAAUE,CAAE,CAAC,EACtCA,EAAG,KAAOhC,GAAeC,EAAQ,CAAE,EAAG+B,EAAG,EAAG,EAAGA,EAAG,EAAG,cAAeA,EAAG,CAAC,CAAE,OAC5E,CAAc,CACpB,CAEA,SAASE,GAAcC,EAAmB,CACtC,IAAMjB,EAAcjC,GAAI,OAAOkD,EAAQ,MAAM,CAAC,CAAC,EAE3CjB,EAAY,SAAW,GAAKA,EAAY,SAAW,IACnD5B,GAAO,mBAAmB,kDAAmD,WA/VrF,EA+VgGT,GAAA,SAAQsD,CAAO,CAAC,EAG5G,IAAMC,EAAuB1C,GAAawB,EAAY,EAAE,EAClDE,EAAe1B,GAAawB,EAAY,EAAE,EAC1Cc,EAAkB,CACpB,KAAuB,EACvB,QAAuBtC,GAAawB,EAAY,EAAE,EAAE,SAAQ,EAC5D,MAAuBxB,GAAawB,EAAY,EAAE,EAAE,SAAQ,EAC5D,qBAAuBkB,EACvB,aAAuBhB,EACvB,SAAuB,KACvB,SAAuB1B,GAAawB,EAAY,EAAE,EAClD,GAAuB1B,GAAc0B,EAAY,EAAE,EACnD,MAAuBxB,GAAawB,EAAY,EAAE,EAClD,KAAuBA,EAAY,GACnC,WAAuBP,GAAcO,EAAY,EAAE,GAIvD,OAAIA,EAAY,SAAW,IAE3Bc,EAAG,MArXP,EAqXcjD,GAAA,WAAUoD,CAAO,EAE3BJ,GAAmBC,EAAId,EAAY,MAAM,CAAC,EAAGD,EAAiB,GAEvDe,CACX,CAEA,SAASK,GAAcF,EAAmB,CACtC,IAAMjB,EAAcjC,GAAI,OAAOkD,EAAQ,MAAM,CAAC,CAAC,EAE3CjB,EAAY,SAAW,GAAKA,EAAY,SAAW,IACnD5B,GAAO,mBAAmB,kDAAmD,WAhYrF,EAgYgGT,GAAA,SAAQsD,CAAO,CAAC,EAG5G,IAAMH,EAAkB,CACpB,KAAY,EACZ,QAAYtC,GAAawB,EAAY,EAAE,EAAE,SAAQ,EACjD,MAAYxB,GAAawB,EAAY,EAAE,EAAE,SAAQ,EACjD,SAAYxB,GAAawB,EAAY,EAAE,EACvC,SAAYxB,GAAawB,EAAY,EAAE,EACvC,GAAY1B,GAAc0B,EAAY,EAAE,EACxC,MAAYxB,GAAawB,EAAY,EAAE,EACvC,KAAYA,EAAY,GACxB,WAAYP,GAAcO,EAAY,EAAE,GAI5C,OAAIA,EAAY,SAAW,IAE3Bc,EAAG,MAlZP,EAkZcjD,GAAA,WAAUoD,CAAO,EAE3BJ,GAAmBC,EAAId,EAAY,MAAM,CAAC,EAAGK,EAAiB,GAEvDS,CACX,CAGA,SAASM,GAAOC,EAA0B,CACtC,IAAMrB,EAAcjC,GAAI,OAAOsD,CAAc,EAEzCrB,EAAY,SAAW,GAAKA,EAAY,SAAW,GACnD5B,GAAO,mBAAmB,0BAA2B,iBAAkBiD,CAAc,EAGzF,IAAMP,EAAkB,CACpB,MAAUtC,GAAawB,EAAY,EAAE,EAAE,SAAQ,EAC/C,SAAUxB,GAAawB,EAAY,EAAE,EACrC,SAAUxB,GAAawB,EAAY,EAAE,EACrC,GAAU1B,GAAc0B,EAAY,EAAE,EACtC,MAAUxB,GAAawB,EAAY,EAAE,EACrC,KAAUA,EAAY,GACtB,QAAU,GAId,GAAIA,EAAY,SAAW,EAAK,OAAOc,EAEvC,GAAI,CACAA,EAAG,EAAIpD,GAAA,UAAU,KAAKsC,EAAY,EAAE,EAAE,SAAQ,OAEhD,CAEE,OAAOc,EAMX,GAHAA,EAAG,GAtbP,EAsbWnD,GAAA,YAAWqC,EAAY,GAAI,EAAE,EACpCc,EAAG,GAvbP,EAubWnD,GAAA,YAAWqC,EAAY,GAAI,EAAE,EAEhCtC,GAAA,UAAU,KAAKoD,EAAG,CAAC,EAAE,OAAM,GAAMpD,GAAA,UAAU,KAAKoD,EAAG,CAAC,EAAE,OAAM,EAE5DA,EAAG,QAAUA,EAAG,EAChBA,EAAG,EAAI,MAEJ,CAGHA,EAAG,QAAU,KAAK,OAAOA,EAAG,EAAI,IAAM,CAAC,EACnCA,EAAG,QAAU,IAAKA,EAAG,QAAU,GAEnC,IAAIQ,EAAgBR,EAAG,EAAI,GAErBP,EAAMP,EAAY,MAAM,EAAG,CAAC,EAE9Bc,EAAG,UAAY,IACfP,EAAI,MAzchB,EAycqB5C,GAAA,SAAQmD,EAAG,OAAO,CAAC,EAC5BP,EAAI,KAAK,IAAI,EACbA,EAAI,KAAK,IAAI,EACbe,GAAiBR,EAAG,QAAU,EAAI,GAGtC,IAAM/B,GA/cd,EA+cuBlB,GAAA,WAAUE,GAAI,OAAOwC,CAAG,CAAC,EACxC,GAAI,CACAO,EAAG,KAAOhC,GAAeC,EAAQ,CAAE,GAjd/C,EAidkDpB,GAAA,SAAQmD,EAAG,CAAC,EAAG,GAjdjE,EAidoEnD,GAAA,SAAQmD,EAAG,CAAC,EAAG,cAAeQ,CAAa,CAAE,OACvG,CAAc,CAEhBR,EAAG,MApdX,EAodkBjD,GAAA,WAAUwD,CAAc,EAGtC,OAAAP,EAAG,KAAO,KAEHA,CACX,CAGA,SAAgBS,GAAMF,EAAyB,CAC3C,IAAMJ,GA9dV,EA8doBtD,GAAA,UAAS0D,CAAc,EAGvC,GAAIJ,EAAQ,GAAK,IAAQ,OAAOG,GAAOH,CAAO,EAG9C,OAAQA,EAAQ,GAAI,CAChB,IAAK,GACD,OAAOE,GAAcF,CAAO,EAChC,IAAK,GACD,OAAOD,GAAcC,CAAO,EAChC,QACI,MAGR,OAAO7C,GAAO,WAAW,iCAAkC6C,EAAQ,GAAO/C,GAAA,OAAO,OAAO,sBAAuB,CAC3G,UAAW,mBACX,gBAAiB+C,EAAQ,GAC5B,CACL,CApBAzD,GAAA,MAAA+D,oGC7daC,GAAA,QAAU,oBCAvB,IAAAC,GAAAC,EAAAC,IAAA,ssEAEA,IAAAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,EAAA,KACAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KAEMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAgG3BE,GAAuD,CACzD,QAAS,GAAM,KAAM,GAAM,KAAM,GAAM,SAAU,GAAM,SAAS,GAAM,MAAO,GAAM,GAAI,GAAM,MAAO,GACpG,KAAM,GAAM,WAAY,GACxB,aAAc,GAAM,qBAAsB,GAC1C,WAAY,GACZ,gBAAiB,IAGrB,SAAeC,GAAYC,EAA6BC,EAAuC,mGAC9E,MAAA,CAAA,EAAMA,CAAa,SAA1BC,EAAOC,EAAA,KAAA,EAET,OAAOD,GAAU,UACjBL,GAAO,mBAAmB,8BAA+B,OAAQK,CAAI,EAIzE,GAAI,CACA,MAAA,CAAA,GA/HR,EA+HeZ,GAAA,YAAWY,CAAI,CAAC,OACzB,CAAc,CAEhB,OAAKF,GACDH,GAAO,WAAW,sDAAuDF,GAAA,OAAO,OAAO,sBAAuB,CAC1G,UAAW,cACd,EAGW,CAAA,EAAMK,EAAS,YAAYE,CAAI,CAAC,SAA1C,OAAAE,EAAUD,EAAA,KAAA,EAEZC,GAAW,MACXP,GAAO,mBAAmB,kDAAmD,OAAQK,CAAI,EAG7F,CAAA,EAAOE,CAAO,OAIlB,SAAeC,GAAiBL,EAA6BM,EAAYC,EAAuC,kGACxG,MAAM,QAAQA,CAAS,EAChB,CAAA,EAAM,QAAQ,IAAIA,EAAU,IAAI,SAACA,EAAWC,EAAK,CACpD,OAAOH,GACHL,EACE,MAAM,QAAQM,CAAK,EAAKA,EAAME,GAAQF,EAAMC,EAAU,MACxDA,CAAS,CAEjB,CAAC,CAAC,CAAC,EAPH,CAAA,EAAA,CAAA,SACA,MAAA,CAAA,EAAOJ,EAAA,KAAA,CAMJ,gBAGHI,EAAU,OAAS,UAAnB,CAAA,EAAA,CAAA,EACO,CAAA,EAAMR,GAAYC,EAAUM,CAAK,CAAC,SAAzC,MAAA,CAAA,EAAOH,EAAA,KAAA,CAAkC,gBAGzCI,EAAU,OAAS,QAAnB,CAAA,EAAA,CAAA,EACO,CAAA,EAAMF,GAAiBL,EAAUM,EAAOC,EAAU,UAAU,CAAC,SAApE,MAAA,CAAA,EAAOJ,EAAA,KAAA,CAA6D,gBAGpEI,EAAU,WAAa,QAAvB,CAAA,EAAA,CAAA,EACK,MAAM,QAAQD,CAAK,EAMjB,CAAA,EAAM,QAAQ,IAAIA,EAAM,IAAI,SAACG,EAAC,CAAK,OAAAJ,GAAiBL,EAAUS,EAAGF,EAAU,aAAa,CAArD,CAAsD,CAAC,CAAC,EAL9F,CAAA,EAAO,QAAQ,OAAOV,GAAO,UAAU,0BAA2BF,GAAA,OAAO,OAAO,iBAAkB,CAC9F,SAAU,QACV,MAAKW,EACR,CAAC,CAAC,SAEP,MAAA,CAAA,EAAOH,EAAA,KAAA,CAA2F,SAGtG,MAAA,CAAA,EAAOG,CAAK,OAGhB,SAAeI,GAAoBC,EAAoBC,EAA4BC,EAAgB,0HAE3F,OAAAC,EAA2B,CAAA,EAC3BD,EAAK,SAAWD,EAAS,OAAO,OAAS,GAAK,OAAOC,EAAKA,EAAK,OAAS,IAAQ,WAChFC,GAtLR,EAsLoBrB,EAAA,aAAYoB,EAAK,IAAG,CAAE,GAItChB,GAAO,mBAAmBgB,EAAK,OAAQD,EAAS,OAAO,OAAQ,oBAAoB,EAG/ED,EAAS,OACLG,EAAU,KAGVA,EAAU,MAjMtB,EAiM6BrB,EAAA,mBAAkB,CAC/B,SAAUM,GAAYY,EAAS,OAAQG,EAAU,IAAI,EACrD,OAAQH,EAAS,OAAO,WAAU,EACrC,EAAE,KAAK,SAAOI,EAAK,CAAA,OAAAC,GAAAC,EAAA,OAAA,OAAA,UAAA,4BAChB,OArMhB,EAqMoB3B,GAAA,YAAWyB,EAAM,MAAM,IAAMA,EAAM,UACnClB,GAAO,WAAW,8CAA+CF,GAAA,OAAO,OAAO,sBAAuB,CAClG,UAAW,iBACd,EAGL,CAAA,EAAOoB,EAAM,QAAQ,MACxB,EAGDD,EAAU,KAAOH,EAAS,OAAO,WAAU,EAGxCG,EAAU,OACjBA,EAAU,KAAOf,GAAYY,EAAS,SAAUG,EAAU,IAAI,GASjD,CAAA,GA5NrB,EA4N2BrB,EAAA,mBAAkB,CACrC,KAAMY,GAAiBM,EAAS,QAAUA,EAAS,SAAUE,EAAMD,EAAS,MAAM,EAClF,QAASD,EAAS,gBAClB,WA/NR,EA+NoBlB,EAAA,mBAAkBqB,CAAS,GAAK,CAAA,EAC/C,CAAC,SAwBF,GA5BMI,EAAWf,EAAA,KAAA,EAOXgB,EAAOR,EAAS,UAAU,mBAAmBC,EAAUM,EAAS,IAAI,EACpEE,EAA2B,CAC/B,KAAMD,EACN,GAAID,EAAS,SAITG,EAAKH,EAAS,UAGhBG,EAAG,OAAS,OAAQD,EAAG,MAAQ7B,GAAA,UAAU,KAAK8B,EAAG,KAAK,EAAE,SAAQ,GAChEA,EAAG,UAAY,OAAQD,EAAG,SAAW7B,GAAA,UAAU,KAAK8B,EAAG,QAAQ,GAC/DA,EAAG,UAAY,OAAQD,EAAG,SAAW7B,GAAA,UAAU,KAAK8B,EAAG,QAAQ,GAC/DA,EAAG,cAAgB,OAAQD,EAAG,aAAe7B,GAAA,UAAU,KAAK8B,EAAG,YAAY,GAC3EA,EAAG,sBAAwB,OAAQD,EAAG,qBAAuB7B,GAAA,UAAU,KAAK8B,EAAG,oBAAoB,GACnGA,EAAG,MAAQ,OAAQD,EAAG,KAAOC,EAAG,MAEhCA,EAAG,MAAQ,OAAQD,EAAG,KAAOC,EAAG,MAChCA,EAAG,YAAc,OAAQD,EAAG,YArPpC,EAqPiD1B,GAAA,eAAc2B,EAAG,UAAU,GAGpED,EAAG,UAAY,MAAQR,EAAS,KAAO,KAAM,CAQ7C,IAFIU,EAAY,KACVC,GA/Pd,EA+PsB/B,GAAA,UAAS2B,CAAI,EAClBK,EAAI,EAAGA,EAAID,EAAM,OAAQC,IAC9BF,GAAa,EACTC,EAAMC,KAAMF,GAAa,IAEjCF,EAAG,SAAW7B,GAAA,UAAU,KAAKqB,EAAS,GAAG,EAAE,IAAIU,CAAS,EAI5D,OAAID,EAAG,QACGI,EAAUlC,GAAA,UAAU,KAAK8B,EAAG,KAAK,EACnC,CAACI,EAAQ,OAAM,GAAM,CAACb,EAAS,SAC/Bf,GAAO,WAAW,2CAA4CF,GAAA,OAAO,OAAO,sBAAuB,CAC/F,UAAW,kBACX,MAAOmB,EAAU,MACpB,EAELM,EAAG,MAAQK,GAGXJ,EAAG,aACHD,EAAG,YApRX,EAoRwB3B,EAAA,aAAY4B,EAAG,UAAU,GAGzCA,EAAG,kBACHD,EAAG,gBAAkB,CAAC,CAACC,EAAG,iBAI9B,OAAOP,EAAU,MACjB,OAAOA,EAAU,SACjB,OAAOA,EAAU,SACjB,OAAOA,EAAU,KACjB,OAAOA,EAAU,MAEjB,OAAOA,EAAU,KACjB,OAAOA,EAAU,WAEjB,OAAOA,EAAU,aACjB,OAAOA,EAAU,qBAEjB,OAAOA,EAAU,WACjB,OAAOA,EAAU,gBAIXY,EAAY,OAAO,KAAKZ,CAAS,EAAE,OAAO,SAACa,EAAG,CAAK,OAAOb,EAAWa,IAAQ,IAA1B,CAA+B,EACpFD,EAAU,QACV7B,GAAO,WAAW,mBAAoB6B,EAAU,IAAI,SAACE,EAAC,CAAK,OAAA,KAAK,UAAUA,CAAC,CAAhB,CAAiB,EAAE,KAAK,GAAG,EAAMjC,GAAA,OAAO,OAAO,sBAAuB,CAC7H,UAAW,YACX,UAAW+B,EACd,EAGL,CAAA,EAAON,CAAE,OAIb,SAASS,GAAclB,EAAoBC,EAA0B,CACjE,OAAO,UAAA,SAASC,EAAA,CAAA,EAAAiB,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAjB,EAAAiB,GAAA,UAAAA,GACZ,OAAOpB,GAAoBC,EAAUC,EAAUC,CAAI,CACvD,CACJ,CAEA,SAASkB,GAAcpB,EAAoBC,EAA0B,CACjE,IAAMoB,EAAoBrB,EAAS,QAAUA,EAAS,SACtD,OAAO,UAAA,SAAeE,EAAA,CAAA,EAAAiB,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAjB,EAAAiB,GAAA,UAAAA,mGAClB,OAAKE,GACDnC,GAAO,WAAW,wCAAyCF,GAAA,OAAO,OAAO,sBAAuB,CAC5F,UAAW,cACd,EAGM,CAAA,EAAMe,GAAoBC,EAAUC,EAAUC,CAAI,CAAC,SAAxD,OAAAO,EAAKjB,EAAA,KAAA,EACJ,CAAA,EAAM6B,EAAiB,YAAYZ,CAAE,CAAC,SAA7C,MAAA,CAAA,EAAOjB,EAAA,KAAA,CAAsC,OAErD,CAEA,SAAS8B,GAAgBtB,EAAoBS,EAAuB,CAChE,IAAMc,EAAOd,EAAG,KAAK,KAAKA,CAAE,EAC5BA,EAAG,KAAO,SAACe,EAAsB,CAC7B,OAAOD,EAAKC,CAAa,EAAE,KAAK,SAACC,EAAwB,CACrD,OAAAA,EAAQ,OAASA,EAAQ,KAAK,IAAI,SAACC,EAAG,CAClC,IAAIC,GAlVpB,EAkV2C7C,EAAA,UAAS4C,CAAG,EACnCE,EAAyB,KAC7B,GAAI,CACAA,EAAS5B,EAAS,UAAU,SAAS0B,CAAG,OAC1C,CAAS,CAGX,OAAIE,IACAD,EAAM,KAAOC,EAAO,KACpBD,EAAM,OAAS,SAACnB,EAAiBqB,EAAmB,CAChD,OAAO7B,EAAS,UAAU,eAAe4B,EAAO,cAAepB,EAAMqB,CAAM,CAC/E,EACAF,EAAM,MAAQC,EAAO,KACrBD,EAAM,eAAiBC,EAAO,WAIlCD,EAAM,eAAiB,UAAA,CAAQ,OAAO3B,EAAS,QAAU,EACzD2B,EAAM,SAAW,UAAA,CACb,OAAO3B,EAAS,SAAS,SAASyB,EAAQ,SAAS,CACvD,EACAE,EAAM,eAAiB,UAAA,CACnB,OAAO3B,EAAS,SAAS,eAAeyB,EAAQ,eAAe,CACnE,EACAE,EAAM,sBAAwB,UAAA,CAC1B,OAAO,QAAQ,QAAQF,CAAO,CAClC,EAEOE,CACX,CAAC,EAEMF,CACX,CAAC,CACL,CACJ,CAEA,SAASK,GAAU9B,EAAoBC,EAA4B8B,EAAuB,CACtF,IAAMV,EAAoBrB,EAAS,QAAUA,EAAS,SAEtD,OAAO,UAAA,SAAeE,EAAA,CAAA,EAAAiB,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAjB,EAAAiB,GAAA,UAAAA,kHAEda,EAAW,OACX9B,EAAK,SAAWD,EAAS,OAAO,OAAS,GAAK,OAAOC,EAAKA,EAAK,OAAS,IAAQ,UAC1EC,GA7XlB,EA6X8BrB,EAAA,aAAYoB,EAAK,IAAG,CAAE,EACpCC,EAAU,UAAY,KAAtB,CAAA,EAAA,CAAA,EACW,CAAA,EAAMA,EAAU,QAAQ,GAHvC,CAAA,EAAA,CAAA,SAGI6B,EAAWxC,EAAA,KAAA,mBAEf,OAAOW,EAAU,SACjBD,EAAK,KAAKC,CAAS,0BAInBH,EAAS,mBAAqB,KAA9B,CAAA,EAAA,CAAA,EACA,CAAA,EAAMA,EAAS,UAAUgC,CAAQ,CAAC,SAAlCxC,EAAA,KAAA,mBAIO,MAAA,CAAA,EAAMO,GAAoBC,EAAUC,EAAUC,CAAI,CAAC,SAAxD,OAAAO,EAAKjB,EAAA,KAAA,EACI,CAAA,EAAM6B,EAAiB,KAAKZ,EAAIuB,CAAQ,CAAC,SAAlDC,EAASzC,EAAA,KAAA,EAEf,GAAI,CACI,OAAAG,EAAQK,EAAS,UAAU,qBAAqBC,EAAUgC,CAAM,EAChEF,GAAkB9B,EAAS,QAAQ,SAAW,IAC9CN,EAAQA,EAAM,IAElB,CAAA,EAAOA,CAAK,QAEPuC,EAAP,CACE,MAAIA,EAAM,OAASlD,GAAA,OAAO,OAAO,iBAC7BkD,EAAM,QAAUlC,EAAS,QACzBkC,EAAM,KAAOhC,EACbgC,EAAM,YAAczB,GAElByB,iBAGlB,CAEA,SAASC,GAAUnC,EAAoBC,EAA0B,CAC7D,OAAO,UAAA,SAAeC,EAAA,CAAA,EAAAiB,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAjB,EAAAiB,GAAA,UAAAA,4GACbnB,EAAS,QACVd,GAAO,WAAW,0CAA2CF,GAAA,OAAO,OAAO,sBAAuB,CAC9F,UAAW,kBACd,EAIDgB,EAAS,mBAAqB,KAA9B,CAAA,EAAA,CAAA,EACA,CAAA,EAAMA,EAAS,UAAS,CAAE,SAA1BR,EAAA,KAAA,mBAGc,MAAA,CAAA,EAAMO,GAAoBC,EAAUC,EAAUC,CAAI,CAAC,SAA/D,OAAAkC,EAAY5C,EAAA,KAAA,EAEP,CAAA,EAAMQ,EAAS,OAAO,gBAAgBoC,CAAS,CAAC,SAArD,OAAA3B,EAAKjB,EAAA,KAAA,EAGX8B,GAAgBtB,EAAUS,CAAE,EAE5B,CAAA,EAAOA,CAAE,OAEjB,CAEA,SAAS4B,GAAarC,EAAoBC,EAA4B8B,EAAuB,CACzF,OAAI9B,EAAS,SACF6B,GAAU9B,EAAUC,EAAU8B,CAAc,EAEhDI,GAAUnC,EAAUC,CAAQ,CACvC,CAEA,SAASqC,GAAYC,EAAmB,CACpC,OAAIA,EAAO,UAAYA,EAAO,QAAU,MAAQA,EAAO,OAAO,SAAW,GAC9D,KAGHA,EAAO,SAAW,KAAO,KAAOA,EAAO,OAASA,EAAO,OAAO,IAAI,SAACC,EAAK,CAC5E,OAAI,MAAM,QAAQA,CAAK,EACZA,EAAM,KAAK,GAAG,EAElBA,CACX,CAAC,EAAE,KAAK,GAAG,EAAG,GAClB,CAEA,IAAAC,GAAA,UAAA,CAKI,SAAAA,EAAYC,EAAaH,EAAmB,EAjdhD,EAkdQzD,EAAA,gBAAe,KAAM,MAAO4D,CAAG,GAldvC,EAmdQ5D,EAAA,gBAAe,KAAM,SAAUyD,CAAM,EACrC,KAAK,WAAa,CAAA,CACtB,CAEA,OAAAE,EAAA,UAAA,YAAA,SAAYE,EAAoBC,EAAa,CACzC,KAAK,WAAW,KAAK,CAAE,SAAUD,EAAU,KAAMC,CAAI,CAAE,CAC3D,EAEAH,EAAA,UAAA,eAAA,SAAeE,EAAkB,CAC7B,IAAIE,EAAO,GACX,KAAK,WAAa,KAAK,WAAW,OAAO,SAACC,EAAI,CAC1C,OAAID,GAAQC,EAAK,WAAaH,EAAmB,IACjDE,EAAO,GACA,GACX,CAAC,CACL,EAEAJ,EAAA,UAAA,mBAAA,UAAA,CACI,KAAK,WAAa,CAAA,CACtB,EAEAA,EAAA,UAAA,UAAA,UAAA,CACI,OAAO,KAAK,WAAW,IAAI,SAAC5B,EAAC,CAAK,OAAAA,EAAE,QAAF,CAAU,CAChD,EAEA4B,EAAA,UAAA,cAAA,UAAA,CACI,OAAO,KAAK,WAAW,MAC3B,EAEAA,EAAA,UAAA,IAAA,SAAIvC,EAAgB,CAApB,IAAAI,EAAA,KACUyC,EAAgB,KAAK,cAAa,EACxC,YAAK,WAAa,KAAK,WAAW,OAAO,SAACD,EAAI,CAE1C,IAAME,EAAW9C,EAAK,MAAK,EAG3B,kBAAW,UAAA,CACP4C,EAAK,SAAS,MAAMxC,EAAM0C,CAAQ,CACtC,EAAG,CAAC,EAGG,CAAEF,EAAK,IAClB,CAAC,EAEMC,CACX,EAEAN,EAAA,UAAA,aAAA,SAAad,EAAY,CACzB,EAGAc,EAAA,UAAA,QAAA,SAAQd,EAAY,CAChB,MAAO,CAAEA,CAAK,CAClB,EACJc,CAAA,EA7DA,EA+DAQ,GAAA,SAAAC,EAAA,CAAgCC,GAAAF,EAAAC,CAAA,EAC5B,SAAAD,GAAA,QACIC,EAAA,KAAA,KAAM,QAAS,IAAI,GAAC,IACxB,CACJ,OAAAD,CAAA,EAJgCR,EAAY,EAa5CW,GAAA,SAAAF,EAAA,CAAmCC,GAAAC,EAAAF,CAAA,EAK/B,SAAAE,EAAY3D,EAAiB4D,EAA8BpD,EAAyB4B,EAAoC,CAAxH,IAAAvB,EAAA,KACUiC,EAAsB,CACxB,QAAS9C,GAGT+C,EAAQa,EAAkB,cAAcpD,CAAQ,EACpD,OAAI4B,GACIW,IAAUX,EAAO,IAAM3C,GAAO,mBAAmB,iBAAkB,SAAU2C,CAAM,EACvFU,EAAO,OAASV,EAAO,MAAK,GAE5BU,EAAO,OAAS,CAAEC,CAAK,EAG3BlC,EAAA4C,EAAA,KAAA,KAAMZ,GAAYC,CAAM,EAAGA,CAAM,GAAC,MA1iB1C,EA2iBQzD,EAAA,gBAAewB,EAAM,UAAWb,CAAO,GA3iB/C,EA4iBQX,EAAA,gBAAewB,EAAM,YAAa+C,CAAiB,GA5iB3D,EA6iBQvE,EAAA,gBAAewB,EAAM,WAAYL,CAAQ,GAC7C,CAGA,OAAAmD,EAAA,UAAA,aAAA,SAAazB,EAAY,CAAzB,IAAArB,EAAA,KACI4C,EAAA,UAAM,aAAY,KAAA,KAACvB,CAAK,EAExBA,EAAM,MAAQ,KAAK,SAAS,KAC5BA,EAAM,eAAiB,KAAK,SAAS,OAAM,EAE3CA,EAAM,OAAS,SAACnB,EAAiBqB,EAAsB,CACnD,OAAOvB,EAAK,UAAU,eAAeA,EAAK,SAAUE,EAAMqB,CAAM,CACpE,EAEA,GAAI,CACAF,EAAM,KAAO,KAAK,UAAU,eAAe,KAAK,SAAUA,EAAM,KAAMA,EAAM,MAAM,QAC7EO,EAAP,CACEP,EAAM,KAAO,KACbA,EAAM,YAAcO,EAE5B,EAEAkB,EAAA,UAAA,QAAA,SAAQzB,EAAY,CAChB,IAAM2B,GApkBd,EAokBuB9E,GAAA,mBAAkBmD,EAAM,IAAI,EAC3C,GAAI2B,EAAO,OAAU,MAAMA,EAAO,GAAG,MAErC,IAAMpD,GAAQyB,EAAM,MAAQ,CAAA,GAAI,MAAK,EACrC,OAAAzB,EAAK,KAAKyB,CAAK,EACRzB,CACX,EACJkD,CAAA,EAnDmCX,EAAY,EA0D/Cc,GAAA,SAAAL,EAAA,CAAmCC,GAAAI,EAAAL,CAAA,EAI/B,SAAAK,EAAY9D,EAAiB4D,EAA4B,CAAzD,IAAA/C,EACI4C,EAAA,KAAA,KAAM,IAAK,CAAE,QAASzD,CAAO,CAAE,GAAC,KAChC,OAxlBR,EAwlBQX,EAAA,gBAAewB,EAAM,UAAWb,CAAO,GAxlB/C,EAylBQX,EAAA,gBAAewB,EAAM,YAAa+C,CAAiB,GACvD,CAEA,OAAAE,EAAA,UAAA,aAAA,SAAa5B,EAAY,CAAzB,IAAArB,EAAA,KACI4C,EAAA,UAAM,aAAY,KAAA,KAACvB,CAAK,EAExB,GAAI,CACA,IAAM6B,EAAS,KAAK,UAAU,SAAS7B,CAAK,EAC5CA,EAAM,MAAQ6B,EAAO,KACrB7B,EAAM,eAAiB6B,EAAO,UAE9B7B,EAAM,OAAS,SAACnB,EAAiBqB,EAAsB,CACnD,OAAOvB,EAAK,UAAU,eAAekD,EAAO,cAAehD,EAAMqB,CAAM,CAC3E,EAEAF,EAAM,KAAO6B,EAAO,UACtB,EAGN,EACJD,CAAA,EA3BmCd,EAAY,EAkC/CgB,GAAA,UAAA,CA8BI,SAAAA,EAAYC,EAAuBL,EAAsChC,EAAoC,wBAA7Gf,EAAA,MAlpBJ,EAqpBQxB,EAAA,gBAAe,KAAM,aArpB7B,EAqpB0CA,EAAA,WAAS6E,EAA4B,cAAc,EAAEN,CAAiB,CAAC,EAErGhC,GAAoB,OAvpBhC,EAwpBYvC,EAAA,gBAAe,KAAM,WAAY,IAAI,GAxpBjD,EAypBYA,EAAA,gBAAe,KAAM,SAAU,IAAI,GAC5BJ,GAAA,OAAO,SAAS2C,CAAgB,IA1pBnD,EA2pBYvC,EAAA,gBAAe,KAAM,WAAYuC,EAAiB,UAAY,IAAI,GA3pB9E,EA4pBYvC,EAAA,gBAAe,KAAM,SAAUuC,CAAgB,GACxC5C,GAAA,SAAS,WAAW4C,CAAgB,IA7pBvD,EA8pBYvC,EAAA,gBAAe,KAAM,WAAYuC,CAAgB,GA9pB7D,EA+pBYvC,EAAA,gBAAe,KAAM,SAAU,IAAI,GAEnCI,GAAO,mBAAmB,6BAA8B,mBAAoBmC,CAAgB,GAjqBxG,EAoqBQvC,EAAA,gBAAe,KAAM,aAAc,CAAA,CAAG,GApqB9C,EAqqBQA,EAAA,gBAAe,KAAM,cAAe,CAAA,CAAG,GArqB/C,EAsqBQA,EAAA,gBAAe,KAAM,YAAa,CAAA,CAAG,GAtqB7C,EAuqBQA,EAAA,gBAAe,KAAM,sBAAuB,CAAA,CAAG,GAvqBvD,EAyqBQA,EAAA,gBAAe,KAAM,UAAW,CAAA,CAAG,EAEnC,CACI,IAAM8E,EAAqD,CAAA,EAC3D,OAAO,KAAK,KAAK,UAAU,MAAM,EAAE,QAAQ,SAACC,EAAc,CACtD,IAAMlC,EAAQrB,EAAK,UAAU,OAAOuD,IA9qBpD,EA+qBgB/E,EAAA,gBAAewB,EAAK,QAASuD,EAAgB,UAAA,SAAC3D,EAAA,CAAA,EAAAiB,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAjB,EAAAiB,GAAA,UAAAA,GAC1C,MAAO,CACH,QAASb,EAAK,QACd,OAAQA,EAAK,UAAU,mBAAmBqB,EAAOzB,CAAI,EAE7D,CAAC,EACI0D,EAAcjC,EAAM,QAASiC,EAAcjC,EAAM,MAAQ,CAAA,GAC9DiC,EAAcjC,EAAM,MAAM,KAAKkC,CAAc,CACjD,CAAC,EAED,OAAO,KAAKD,CAAa,EAAE,QAAQ,SAACrE,EAAI,CACpC,IAAMuE,EAAUF,EAAcrE,GAC1BuE,EAAQ,SAAW,GA3rBvC,EA4rBoBhF,EAAA,gBAAewB,EAAK,QAASf,EAAMe,EAAK,QAAQwD,EAAQ,GAAG,EAE3D5E,GAAO,KAAK,2BAA4BK,EAAI,KAAOuE,EAAQ,KAAK,IAAI,EAAC,GAAG,CAEhF,CAAC,EAWL,IA3sBR,EAmsBQhF,EAAA,gBAAe,KAAM,iBAAkB,CAAA,CAAG,GAnsBlD,EAosBQA,EAAA,gBAAe,KAAM,gBAAiB,CAAA,CAAG,EAErC4E,GAAiB,MACjBxE,GAAO,mBAAmB,uCAAwC,gBAAiBwE,CAAa,GAvsB5G,EA0sBQ5E,EAAA,gBAAe,KAAM,UAAW4E,CAAa,EACzC,KAAK,UA3sBjB,EA4sBY5E,EAAA,gBAAe,KAAM,kBAAmBM,GAAY,KAAK,SAAUsE,CAAa,CAAC,MAEjF,IAAI,EA9sBhB,EA+sBgB5E,EAAA,gBAAe,KAAM,kBAAmB,QAAQ,SA/sBhE,EA+sBwEH,GAAA,YAAW+E,CAAa,CAAC,CAAC,OACpF,CAEExE,GAAO,WAAW,2DAA4DF,GAAA,OAAO,OAAO,sBAAuB,CAC/G,UAAW,eACd,EAKT,KAAK,gBAAgB,MAAM,SAAC+E,EAAC,CAAO,CAAC,EAErC,IAAMC,EAAmD,CAAA,EACnDC,EAAuD,CAAA,EAC7D,OAAO,KAAK,KAAK,UAAU,SAAS,EAAE,QAAQ,SAACC,EAAS,CACpD,IAAMjE,EAAWK,EAAK,UAAU,UAAU4D,GAI1C,GAAID,EAAiBC,GAAY,CAC7BhF,GAAO,KAAK,2BAA4B,KAAK,UAAUgF,CAAS,CAAI,EACpE,OAEJD,EAAiBC,GAAa,GAI9B,CACI,IAAMC,EAAOlE,EAAS,KACjB+D,EAAY,IAAKG,KAAYH,EAAY,IAAKG,GAAW,CAAA,GAC9DH,EAAY,IAAKG,GAAS,KAAKD,CAAS,EAG7B5D,EAAM4D,IAAc,OAhvB/C,EAivBgBpF,EAAA,gBAAyBwB,EAAM4D,EAAW7B,GAAa/B,EAAML,EAAU,EAAI,CAAC,EAM5EK,EAAK,UAAU4D,IAAc,OAvvB7C,EAwvBgBpF,EAAA,gBAAewB,EAAK,UAAW4D,EAAW7B,GAAa/B,EAAML,EAAU,EAAK,CAAC,EAG7EK,EAAK,WAAW4D,IAAc,OA3vB9C,EA4vBgBpF,EAAA,gBAAewB,EAAK,WAAY4D,EAAWpC,GAAUxB,EAAML,EAAU,EAAI,CAAC,EAG1EK,EAAK,oBAAoB4D,IAAc,OA/vBvD,EAgwBgBpF,EAAA,gBAAewB,EAAK,oBAAqB4D,EAAWhD,GAAcZ,EAAML,CAAQ,CAAC,EAGjFK,EAAK,YAAY4D,IAAc,OAnwB/C,EAowBgBpF,EAAA,gBAAewB,EAAK,YAAa4D,EAAW9C,GAAcd,EAAML,CAAQ,CAAC,CAEjF,CAAC,EAED,OAAO,KAAK+D,CAAW,EAAE,QAAQ,SAACzE,EAAI,CAElC,IAAM6E,EAAaJ,EAAYzE,GAC/B,GAAI,EAAA6E,EAAW,OAAS,GAGxB,CAAA7E,EAAOA,EAAK,UAAU,CAAC,EAEvB,IAAM2E,EAAYE,EAAW,GAG7B,GAAI,CACe9D,EAAMf,IAAS,OApxB9C,EAqxBoBT,EAAA,gBAAyBwB,EAAMf,EAAiBe,EAAM4D,EAAU,OAEtE,CAAU,CAER5D,EAAK,UAAUf,IAAS,OAzxBxC,EA0xBgBT,EAAA,gBAAewB,EAAK,UAAWf,EAAMe,EAAK,UAAU4D,EAAU,EAG9D5D,EAAK,WAAWf,IAAS,OA7xBzC,EA8xBgBT,EAAA,gBAAewB,EAAK,WAAYf,EAAMe,EAAK,WAAW4D,EAAU,EAGhE5D,EAAK,oBAAoBf,IAAS,OAjyBlD,EAkyBgBT,EAAA,gBAAewB,EAAK,oBAAqBf,EAAMe,EAAK,oBAAoB4D,EAAU,EAGlF5D,EAAK,YAAYf,IAAS,OAryB1C,EAsyBgBT,EAAA,gBAAewB,EAAK,YAAaf,EAAMe,EAAK,YAAY4D,EAAU,EAE1E,CAAC,CACL,CAEO,OAAAT,EAAA,mBAAP,SAA0BY,EAAkD,CACxE,OA5yBR,EA4yBe1F,GAAA,oBAAmB0F,CAAW,CACzC,EAEOZ,EAAA,aAAP,SAAoBJ,EAAoC,CACpD,OAAI7E,GAAA,UAAU,YAAY6E,CAAiB,EAChCA,EAEJ,IAAI7E,GAAA,UAAU6E,CAAiB,CAC1C,EAGAI,EAAA,UAAA,SAAA,UAAA,CACI,OAAO,KAAK,UAAS,CACzB,EAEAA,EAAA,UAAA,UAAA,SAAUzB,EAAmB,CAA7B,IAAA1B,EAAA,KACI,OAAK,KAAK,mBAGF,KAAK,kBACL,KAAK,iBAAmB,KAAK,kBAAkB,KAAI,EAAG,KAAK,UAAA,CACvD,OAAOA,CACX,CAAC,EAOD,KAAK,iBAAmB,KAAK,SAAS,QAAQ,KAAK,QAAS0B,CAAQ,EAAE,KAAK,SAACsC,EAAI,CAC5E,OAAIA,IAAS,MACTpF,GAAO,WAAW,wBAAyBF,GAAA,OAAO,OAAO,sBAAuB,CAC5E,gBAAiBsB,EAAK,QACtB,UAAW,cACd,EAEEA,CACX,CAAC,GAIF,KAAK,gBAChB,EAQAmD,EAAA,UAAA,SAAA,SAAStD,EAA8B,CAAvC,IAAAG,EAAA,KACS,KAAK,QACNpB,GAAO,WAAW,0CAA2CF,GAAA,OAAO,OAAO,sBAAuB,CAAE,UAAW,2BAA2B,CAAE,EAGhJ,IAAMyB,GAn2Bd,EAm2BmD3B,EAAA,aAAYqB,GAAa,CAAA,CAAE,EAEtE,OAAC,OAAQ,IAAI,EAAE,QAAQ,SAASa,EAAG,CACrBP,EAAIO,IAAQ,MACtB9B,GAAO,WAAW,mBAAqB8B,EAAKhC,GAAA,OAAO,OAAO,sBAAuB,CAAE,UAAWgC,CAAG,CAAE,CACvG,CAAC,EAEDP,EAAG,GAAK,KAAK,gBACN,KAAK,SAAQ,EAAG,KAAK,UAAA,CACxB,OAAOH,EAAK,OAAO,gBAAgBG,CAAE,CACzC,CAAC,CACL,EAGAgD,EAAA,UAAA,QAAA,SAAQpC,EAA4C,CAC5C,OAAOA,GAAsB,WAC7BA,EAAmB,IAAI3C,GAAA,WAAW2C,EAAkB,KAAK,QAAQ,GAGrE,IAAMrB,EAAW,IAAyC,KAAK,YAAc,KAAK,QAAS,KAAK,UAAWqB,CAAgB,EAC3H,OAAI,KAAK,oBAv3BjB,EAw3BYvC,EAAA,gBAAekB,EAAU,oBAAqB,KAAK,iBAAiB,EAGjEA,CACX,EAGAyD,EAAA,UAAA,OAAA,SAAOC,EAAqB,CACxB,OAAO,IAAyC,KAAK,YAAcA,EAAe,KAAK,UAAW,KAAK,QAAU,KAAK,QAAQ,CAClI,EAEOD,EAAA,UAAP,SAAiB9D,EAAU,CACvB,OAAOnB,GAAA,QAAQ,UAAUmB,CAAK,CAClC,EAEQ8D,EAAA,UAAA,uBAAR,SAA+Bc,EAA0B,CAErD,OAAI,KAAK,eAAeA,EAAa,KAC1B,KAAK,eAAeA,EAAa,KAEpCA,CACZ,EAEQd,EAAA,UAAA,iBAAR,SAAyBe,EAA+B,CACpD,GAAI,OAAOA,GAAe,SAAU,CAIhC,GAAIA,IAAc,QACd,OAAO,KAAK,uBAAuB,IAAIvB,EAAmB,EAI9D,GAAIuB,IAAc,QACd,OAAO,KAAK,uBAAuB,IAAI/B,GAAa,QAAS,IAAI,CAAC,EAItE,GAAI+B,IAAc,IACd,OAAO,KAAK,uBAAuB,IAAIjB,GAAqB,KAAK,QAAS,KAAK,SAAS,CAAC,EAI7F,IAAMtD,EAAW,KAAK,UAAU,SAASuE,CAAS,EAClD,OAAO,KAAK,uBAAuB,IAAIpB,GAAqB,KAAK,QAAS,KAAK,UAAWnD,CAAQ,CAAC,EAIvG,GAAIuE,EAAU,QAAUA,EAAU,OAAO,OAAS,EAAG,CAGjD,GAAI,CACA,IAAMhC,EAAQgC,EAAU,OAAO,GAC/B,GAAI,OAAOhC,GAAW,SAClB,MAAM,IAAI,MAAM,eAAe,EAEnC,IAAMvC,EAAW,KAAK,UAAU,SAASuC,CAAK,EAC9C,OAAO,KAAK,uBAAuB,IAAIY,GAAqB,KAAK,QAAS,KAAK,UAAWnD,EAAUuE,EAAU,MAAM,CAAC,OACvH,CAAc,CAGhB,IAAMjC,EAAsB,CACxB,QAAS,KAAK,QACd,OAAQiC,EAAU,QAGtB,OAAO,KAAK,uBAAuB,IAAI/B,GAAaH,GAAYC,CAAM,EAAGA,CAAM,CAAC,EAGpF,OAAO,KAAK,uBAAuB,IAAIgB,GAAqB,KAAK,QAAS,KAAK,SAAS,CAAC,CAC7F,EAEAE,EAAA,UAAA,oBAAA,SAAoBc,EAA0B,CAC1C,GAAIA,EAAa,cAAa,IAAO,EAAG,CACpC,OAAO,KAAK,eAAeA,EAAa,KAGxC,IAAME,EAAO,KAAK,cAAcF,EAAa,KACzCE,GAAQF,EAAa,SACrB,KAAK,SAAS,IAAIA,EAAa,OAAQE,CAAI,EAC3C,OAAO,KAAK,cAAcF,EAAa,MAGnD,EAIAd,EAAA,UAAA,WAAA,SAAWc,EAA4B7C,EAAUiB,EAAkB,CAAnE,IAAArC,EAAA,KACUqB,GAh9Bd,EAg9B6B7C,EAAA,UAAS4C,CAAG,EAEjC,OAAAC,EAAM,eAAiB,UAAA,CACf,CAACgB,IACL4B,EAAa,eAAe5B,CAAQ,EACpCrC,EAAK,oBAAoBiE,CAAY,EACzC,EAEA5C,EAAM,SAAW,UAAA,CAAQ,OAAOrB,EAAK,SAAS,SAASoB,EAAI,SAAS,CAAG,EACvEC,EAAM,eAAiB,UAAA,CAAQ,OAAOrB,EAAK,SAAS,eAAeoB,EAAI,eAAe,CAAG,EACzFC,EAAM,sBAAwB,UAAA,CAAQ,OAAOrB,EAAK,SAAS,sBAAsBoB,EAAI,eAAe,CAAG,EAGvG6C,EAAa,aAAa5C,CAAK,EAExBA,CACX,EAEQ8B,EAAA,UAAA,kBAAR,SAA0Bc,EAA4B5B,EAAoBC,EAAa,CAAvF,IAAAtC,EAAA,KAWI,GAVK,KAAK,UACNpB,GAAO,WAAW,wDAAyDF,GAAA,OAAO,OAAO,sBAAuB,CAAE,UAAW,MAAM,CAAE,EAGzIuF,EAAa,YAAY5B,EAAUC,CAAI,EAGvC,KAAK,eAAe2B,EAAa,KAAOA,EAGpC,CAAC,KAAK,cAAcA,EAAa,KAAM,CACvC,IAAMG,EAAc,SAAChD,EAAQ,CACzB,IAAIC,EAAQrB,EAAK,WAAWiE,EAAc7C,EAAKiB,CAAQ,EAGvD,GAAIhB,EAAM,aAAe,KACrB,GAAI,CACA,IAAMzB,EAAOqE,EAAa,QAAQ5C,CAAK,EACvCrB,EAAK,KAAI,MAATA,EAAIqE,GAAA,CAAMJ,EAAa,MAAM,EAAKrE,EAAI,EAAA,CAAA,QACjCgC,EAAP,CACEP,EAAM,YAAcO,EAAM,MAK9BqC,EAAa,QAAU,MACvBjE,EAAK,KAAK,QAASqB,CAAK,EAIxBA,EAAM,aAAe,MACrBrB,EAAK,KAAK,QAASqB,EAAM,YAAaA,CAAK,CAEnD,EACA,KAAK,cAAc4C,EAAa,KAAOG,EAGnCH,EAAa,QAAU,MACvB,KAAK,SAAS,GAAGA,EAAa,OAAQG,CAAW,EAG7D,EAEAjB,EAAA,UAAA,YAAA,SAAY9B,EAA6BiD,EAA0CC,EAAkB,CAArG,IAAAvE,EAAA,KACUiE,EAAe,KAAK,iBAAiB5C,CAAK,EAC1CY,GAhhCd,EAghCuBzD,EAAA,aAAYyF,EAAa,MAAM,EAE9C,OAAI,OAAOK,GAA0B,WAlhC7C,EAkhCyD/F,GAAA,aAAY+F,EAAsB,EAAE,GAC7EC,GAAW,MACX3F,GAAO,mBAAmB,wCAAyC,UAAW2F,CAAO,EAErEtC,EAAQ,UAAYqC,IAE9BrC,EAAQ,UAAcqC,GAAsD,EAC5ErC,EAAQ,QAAYsC,GAA4B,UAGvD,KAAK,SAAS,QAAQtC,CAAM,EAAE,KAAK,SAACuC,EAAI,CAC3C,OAAOA,EAAK,IAAI,SAACpD,EAAG,CAAK,OAAApB,EAAK,WAAWiE,EAAc7C,EAAK,IAAI,CAAvC,CAAwC,CACrE,CAAC,CACL,EAEA+B,EAAA,UAAA,GAAA,SAAG9B,EAA6BgB,EAAkB,CAC9C,YAAK,kBAAkB,KAAK,iBAAiBhB,CAAK,EAAGgB,EAAU,EAAK,EAC7D,IACX,EAEAc,EAAA,UAAA,KAAA,SAAK9B,EAA6BgB,EAAkB,CAChD,YAAK,kBAAkB,KAAK,iBAAiBhB,CAAK,EAAGgB,EAAU,EAAI,EAC5D,IACX,EAEAc,EAAA,UAAA,KAAA,SAAKe,EAA+B,SAAEtE,EAAA,CAAA,EAAAiB,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAjB,EAAAiB,EAAA,GAAA,UAAAA,GAClC,GAAI,CAAC,KAAK,SAAY,MAAO,GAE7B,IAAMoD,EAAe,KAAK,iBAAiBC,CAAS,EAC9CvC,EAAUsC,EAAa,IAAIrE,CAAI,EAAI,EAGzC,YAAK,oBAAoBqE,CAAY,EAE9BtC,CACX,EAEAwB,EAAA,UAAA,cAAA,SAAce,EAAgC,CAA9C,IAAAlE,EAAA,KACI,OAAK,KAAK,SACNkE,GAAa,KACN,OAAO,KAAK,KAAK,cAAc,EAAE,OAAO,SAACO,EAAO/D,EAAG,CACtD,OAAO+D,EAAQzE,EAAK,eAAeU,GAAK,cAAa,CACzD,EAAG,CAAC,EAED,KAAK,iBAAiBwD,CAAS,EAAE,cAAa,EANxB,CAOjC,EAEAf,EAAA,UAAA,UAAA,SAAUe,EAAgC,CACtC,GAAI,CAAC,KAAK,SAAY,MAAO,CAAA,EAE7B,GAAIA,GAAa,KAAM,CACnB,IAAMQ,EAA0B,CAAA,EAChC,QAAStC,KAAO,KAAK,eACjB,KAAK,eAAeA,GAAK,UAAS,EAAG,QAAQ,SAACC,EAAQ,CAClDqC,EAAO,KAAKrC,CAAQ,CACxB,CAAC,EAEL,OAAOqC,EAGX,OAAO,KAAK,iBAAiBR,CAAS,EAAE,UAAS,CACrD,EAEAf,EAAA,UAAA,mBAAA,SAAmBe,EAAgC,CAC/C,GAAI,CAAC,KAAK,SAAY,OAAO,KAE7B,GAAIA,GAAa,KAAM,CACnB,QAAW9B,KAAO,KAAK,eAAgB,CACnC,IAAMuC,EAAe,KAAK,eAAevC,GACzCuC,EAAa,mBAAkB,EAC/B,KAAK,oBAAoBA,CAAY,EAEzC,OAAO,KAIX,IAAMV,EAAe,KAAK,iBAAiBC,CAAS,EACpD,OAAAD,EAAa,mBAAkB,EAC/B,KAAK,oBAAoBA,CAAY,EAE9B,IACX,EAEAd,EAAA,UAAA,IAAA,SAAIe,EAAiC7B,EAAkB,CACnD,GAAI,CAAC,KAAK,SAAY,OAAO,KAC7B,IAAM4B,EAAe,KAAK,iBAAiBC,CAAS,EACpD,OAAAD,EAAa,eAAe5B,CAAQ,EACpC,KAAK,oBAAoB4B,CAAY,EAC9B,IACX,EAEAd,EAAA,UAAA,eAAA,SAAee,EAAiC7B,EAAkB,CAC9D,OAAO,KAAK,IAAI6B,EAAW7B,CAAQ,CACvC,EAEJc,CAAA,EA7fA,EAAalF,GAAA,aAAAkF,GA+fb,IAAAyB,GAAA,SAAAhC,EAAA,CAA8BC,GAAA+B,EAAAhC,CAAA,EAA9B,SAAAgC,GAAA,+CAGA,CAAA,OAAAA,CAAA,EAH8BzB,EAAY,EAA7BlF,GAAA,SAAA2G,GAKb,IAAAC,GAAA,UAAA,CAMI,SAAAA,EAAY9B,EAAsC+B,EAA0CC,EAAe,wBAEnGC,EAAsB,KAEtB,OAAOF,GAAc,SACrBE,EAAcF,GAnoC1B,EAooCmBvG,GAAA,SAAQuG,CAAQ,EACvBE,GAroCZ,EAqoC0BzG,GAAA,SAAQuG,CAAQ,EACvBA,GAAY,OAAOA,EAAS,QAAY,SAE/CE,EAAoBF,EAAU,OAG9BE,EAAc,IAIdA,EAAY,UAAU,EAAG,CAAC,IAAM,OAAQA,EAAc,KAAOA,IAG7D,EAlpCZ,EAkpCazG,GAAA,aAAYyG,CAAW,GAAMA,EAAY,OAAS,IACnDpG,GAAO,mBAAmB,mBAAoB,WAAYkG,CAAQ,EAIlEC,GAAU,CAAC3G,GAAA,OAAO,SAAS2G,CAAM,GACjCnG,GAAO,mBAAmB,iBAAkB,SAAUmG,CAAM,GAxpCxE,EA2pCQvG,EAAA,gBAAe,KAAM,WAAYwG,CAAW,GA3pCpD,EA4pCQxG,EAAA,gBAAe,KAAM,aA5pC7B,EA4pC0CA,EAAA,WAAS6E,EAA4B,cAAc,EAAEN,CAAiB,CAAC,GA5pCjH,EA6pCQvE,EAAA,gBAAe,KAAM,SAAUuG,GAAU,IAAI,CACjD,CAGA,OAAAF,EAAA,UAAA,qBAAA,UAAA,SAAqBjF,EAAA,CAAA,EAAAiB,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAjB,EAAAiB,GAAA,UAAAA,GACjB,IAAIV,EAAyB,CAAA,EAG7B,GAAIP,EAAK,SAAW,KAAK,UAAU,OAAO,OAAO,OAAS,GAAK,OAAOA,EAAKA,EAAK,OAAS,IAAQ,SAAU,CACvGO,GAtqCZ,EAsqCiB3B,EAAA,aAAYoB,EAAK,IAAG,CAAE,EAC3B,QAAWc,KAAOP,EACd,GAAI,CAACtB,GAAuB6B,GACxB,MAAM,IAAI,MAAM,gCAAkCA,CAAG,EAWjE,GALA,CAAC,OAAQ,OAAQ,IAAI,EAAE,QAAQ,SAACA,EAAG,CACrBP,EAAIO,IAAQ,MACtB9B,GAAO,WAAW,mBAAqB8B,EAAKhC,GAAA,OAAO,OAAO,sBAAuB,CAAE,UAAWgC,CAAG,CAAE,CACvG,CAAC,EAEGP,EAAG,MAAO,CACV,IAAMd,EAAQf,GAAA,UAAU,KAAK6B,EAAG,KAAK,EACjC,CAACd,EAAM,OAAM,GAAM,CAAC,KAAK,UAAU,OAAO,SAC1CT,GAAO,WAAW,gDAAiDF,GAAA,OAAO,OAAO,sBAAuB,CACpG,UAAW,kBACX,MAAOyB,EAAG,MACb,EAKT,OAAAvB,GAAO,mBAAmBgB,EAAK,OAAQ,KAAK,UAAU,OAAO,OAAO,OAAQ,0BAA0B,EAGtGO,EAAG,MAlsCX,EAksCkB5B,GAAA,UAlsClB,EAksC0BA,GAAA,QAAO,CACrB,KAAK,SACL,KAAK,UAAU,aAAaqB,CAAI,EACnC,CAAC,EAEKO,CACX,EAEM0E,EAAA,UAAA,OAAN,UAAA,SAAajF,EAAA,CAAA,EAAAiB,EAAA,EAAAA,EAAA,UAAA,OAAAA,IAAAjB,EAAAiB,GAAA,UAAAA,6GAEL,OAAAhB,EAAiB,CAAA,EAGjBD,EAAK,SAAW,KAAK,UAAU,OAAO,OAAO,OAAS,IACtDC,EAAYD,EAAK,IAAG,GAIxBhB,GAAO,mBAAmBgB,EAAK,OAAQ,KAAK,UAAU,OAAO,OAAO,OAAQ,0BAA0B,EAGvF,CAAA,EAAMR,GAAiB,KAAK,OAAQQ,EAAM,KAAK,UAAU,OAAO,MAAM,CAAC,SAAhF,OAAAqF,EAAS/F,EAAA,KAAA,EACf+F,EAAO,KAAKpF,CAAS,EAGfqF,EAAa,KAAK,qBAAoB,MAAzB,KAA6BD,CAAM,EAG3C,CAAA,EAAM,KAAK,OAAO,gBAAgBC,CAAU,CAAC,SAAlD,OAAA/E,EAAKjB,EAAA,KAAA,EAELC,GAhuCd,EAguCwBX,EAAA,WAA+C,KAAK,YAAa,oBAAoB,EAAE2B,CAAE,EACnGT,GAjuCd,EAiuCyBlB,EAAA,WAAgG,KAAK,YAAa,aAAa,EAAEW,EAAS,KAAK,UAAW,KAAK,MAAM,EAGtL6B,GAAgBtB,EAAUS,CAAE,GApuCpC,EAsuCQ3B,EAAA,gBAAekB,EAAU,oBAAqBS,CAAE,EAChD,CAAA,EAAOT,CAAQ,QAGnBmF,EAAA,UAAA,OAAA,SAAO1F,EAAe,CAClB,OAAc,KAAK,YAAc,YAAYA,EAAS,KAAK,UAAW,KAAK,MAAM,CACrF,EAEA0F,EAAA,UAAA,QAAA,SAAQE,EAAc,CAClB,OAAO,IAAgD,KAAK,YAAc,KAAK,UAAW,KAAK,SAAUA,CAAM,CACnH,EAEOF,EAAA,aAAP,SAAoBM,EAAqBJ,EAAe,CAChDI,GAAkB,MAClBvG,GAAO,WAAW,0BAA2BF,GAAA,OAAO,OAAO,iBAAkB,CAAE,SAAU,gBAAgB,CAAE,EAG3G,OAAOyG,GAAoB,WAC3BA,EAAiB,KAAK,MAAMA,CAAc,GAG9C,IAAMC,EAAMD,EAAe,IAEvBL,EAAgB,KACpB,OAAIK,EAAe,SACfL,EAAWK,EAAe,SACnBA,EAAe,KAAOA,EAAe,IAAI,WAChDL,EAAWK,EAAe,IAAI,UAG3B,IAAI,KAAKC,EAAKN,EAAUC,CAAM,CACzC,EAEOF,EAAA,aAAP,SAAoB9B,EAAoC,CACpD,OAAO6B,GAAS,aAAa7B,CAAiB,CAClD,EAEO8B,EAAA,mBAAP,SAA0B1E,EAA2D,CACjF,OA5wCR,EA4wCe9B,GAAA,oBAAmB8B,CAAE,CAChC,EAEO0E,EAAA,YAAP,SAAmB1F,EAAiB4D,EAAsCgC,EAAe,CACrF,OAAO,IAAIH,GAASzF,EAAS4D,EAAmBgC,CAAM,CAC1D,EACJF,CAAA,EA1JA,EAAa5G,GAAA,gBAAA4G,sHChlCb,IAAAQ,GAAA,KACAC,GAAA,KAEAC,GAAA,UAAA,CAOI,SAAAA,EAAYC,EAAgB,IACxBF,GAAA,gBAAe,KAAM,WAAYE,CAAQ,KACzCF,GAAA,gBAAe,KAAM,OAAQE,EAAS,MAAM,KAE5CF,GAAA,gBAAe,KAAM,eAAgB,CAAA,CAAG,KACxCA,GAAA,gBAAe,KAAM,UAAWE,EAAS,OAAO,CAAC,CAAC,EAGlD,QAASC,EAAI,EAAGA,EAAID,EAAS,OAAQC,IACjC,KAAK,aAAaD,EAAS,OAAOC,CAAC,GAAKA,CAEhD,CAEA,OAAAF,EAAA,UAAA,OAAA,SAAOG,EAAgB,CACnB,IAAIC,KAASN,GAAA,UAASK,CAAK,EAE3B,GAAIC,EAAO,SAAW,EAAK,MAAO,GAGlC,QADIC,EAAS,CAAE,CAAC,EACP,EAAI,EAAG,EAAID,EAAO,OAAQ,EAAE,EAAG,CAEpC,QADIE,EAAQF,EAAO,GACVG,EAAI,EAAGA,EAAIF,EAAO,OAAQ,EAAEE,EACjCD,GAASD,EAAOE,IAAM,EACtBF,EAAOE,GAAKD,EAAQ,KAAK,KACzBA,EAASA,EAAQ,KAAK,KAAQ,EAGlC,KAAOA,EAAQ,GACXD,EAAO,KAAKC,EAAQ,KAAK,IAAI,EAC7BA,EAASA,EAAQ,KAAK,KAAQ,EAOtC,QAHIE,EAAS,GAGJC,EAAI,EAAGL,EAAOK,KAAO,GAAKA,EAAIL,EAAO,OAAS,EAAG,EAAEK,EACxDD,GAAU,KAAK,QAInB,QAASE,EAAIL,EAAO,OAAS,EAAGK,GAAK,EAAG,EAAEA,EACtCF,GAAU,KAAK,SAASH,EAAOK,IAGnC,OAAOF,CACX,EAEAR,EAAA,UAAA,OAAA,SAAOG,EAAa,CAChB,GAAI,OAAOA,GAAW,SAClB,MAAM,IAAI,UAAU,iBAAiB,EAGzC,IAAIQ,EAAuB,CAAA,EAC3B,GAAIR,EAAM,SAAW,EAAK,OAAO,IAAI,WAAWQ,CAAK,EAErDA,EAAM,KAAK,CAAC,EACZ,QAAST,EAAI,EAAGA,EAAIC,EAAM,OAAQD,IAAK,CACnC,IAAIU,EAAO,KAAK,aAAaT,EAAMD,IAEnC,GAAIU,IAAS,OACT,MAAM,IAAI,MAAM,WAAa,KAAK,KAAO,YAAY,EAIzD,QADIN,EAAQM,EACHL,EAAI,EAAGA,EAAII,EAAM,OAAQ,EAAEJ,EAChCD,GAASK,EAAMJ,GAAK,KAAK,KACzBI,EAAMJ,GAAKD,EAAQ,IACnBA,IAAU,EAGd,KAAOA,EAAQ,GACXK,EAAM,KAAKL,EAAQ,GAAI,EACvBA,IAAU,EAKlB,QAASG,EAAI,EAAGN,EAAMM,KAAO,KAAK,SAAWA,EAAIN,EAAM,OAAS,EAAG,EAAEM,EACjEE,EAAM,KAAK,CAAC,EAGhB,SAAOb,GAAA,UAAS,IAAI,WAAWa,EAAM,QAAO,CAAE,CAAC,CACnD,EACJX,CAAA,EA3FA,EAAaa,GAAA,MAAAb,GA6Fb,IAAMc,GAAS,IAAId,GAAM,kCAAkC,EAGlDa,GAAA,OAAAC,GAFT,IAAMC,GAAS,IAAIf,GAAM,4DAA4D,EAEpEa,GAAA,OAAAE,KC3IjB,IAAAC,GAAAC,EAAAC,IAAA,iFAEA,IAAAC,GAAA,QAAA,UAEAC,GAAA,KAGA,SAASC,GAAUC,EAAgB,CAC/B,OAAO,OAAO,MARlB,EAQuBF,GAAA,UAASE,CAAK,CAAC,CACtC,CAEA,SAAgBC,GAAOC,EAAqBC,EAAiBC,EAAoBC,EAAgBC,EAAqB,CAClH,OAZJ,EAYWR,GAAA,UAZX,EAYmBD,GAAA,YAAQE,GAAUG,CAAQ,EAAGH,GAAUI,CAAI,EAAGC,EAAYC,EAAQC,CAAa,CAAC,CACnG,CAFAV,GAAA,OAAAK,mGCVA,IAAAM,GAAA,KAAS,OAAA,eAAAC,GAAA,SAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAD,GAAA,MAAM,CAAA,CAAA,8GCDf,IAAYE,IAAZ,SAAYA,EAAkB,CAAGA,EAAA,OAAA,SAAmBA,EAAA,OAAA,QAAkB,GAA1DA,GAAAC,GAAA,qBAAAA,GAAA,mBAAkB,CAAA,EAAA,mGCAjBC,GAAA,QAAU,eCAvB,IAAAC,GAAAC,EAAAC,IAAA,wMAEA,IAAAC,GAAA,QAAA,UAEAC,GAAAC,GAAA,IAAA,EAEAC,GAAA,KAEAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAEjC,SAAgBE,GAAUC,EAAe,CACrC,MAAO,KAAQR,GAAA,QAAK,UAAS,EAAG,QAfpC,EAe2CE,GAAA,UAASM,CAAI,CAAC,EAAE,OAAO,KAAK,CACvE,CAFAV,GAAA,UAAAS,GAIA,SAAgBE,GAAOD,EAAe,CAClC,MAAO,MAnBX,EAmBkBT,GAAA,YAAW,QAAQ,EAAE,OAAO,OAAO,MAnBrD,EAmB0DG,GAAA,UAASM,CAAI,CAAC,CAAC,EAAE,OAAO,KAAK,CACvF,CAFAV,GAAA,OAAAW,GAIA,SAAgBC,GAAOF,EAAe,CAClC,MAAO,MAvBX,EAuBkBT,GAAA,YAAW,QAAQ,EAAE,OAAO,OAAO,MAvBrD,EAuB0DG,GAAA,UAASM,CAAI,CAAC,CAAC,EAAE,OAAO,KAAK,CACvF,CAFAV,GAAA,OAAAY,GAIA,SAAgBC,GAAYC,EAA+BC,EAAgBL,EAAe,CAEtF,OAAKL,GAAA,mBAAmBS,IACpBN,GAAO,WAAW,2BAA6BM,EAAWR,GAAA,OAAO,OAAO,sBAAuB,CAC3F,UAAW,cACX,UAAWQ,EACd,EAGE,MAnCX,EAmCkBb,GAAA,YAAWa,EAAW,OAAO,MAnC/C,EAmCoDV,GAAA,UAASW,CAAG,CAAC,CAAC,EAAE,OAAO,OAAO,MAnClF,EAmCuFX,GAAA,UAASM,CAAI,CAAC,CAAC,EAAE,OAAO,KAAK,CACpH,CAVAV,GAAA,YAAAa,+JC1BA,IAAAG,GAAA,KAKI,OAAA,eAAAC,GAAA,cAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OALKD,GAAA,WAAW,CAAA,CAAA,EAOhB,OAAA,eAAAC,GAAA,YAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAPkBD,GAAA,SAAS,CAAA,CAAA,EAS3B,OAAA,eAAAC,GAAA,SAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAT6BD,GAAA,MAAM,CAAA,CAAA,EAUnC,OAAA,eAAAC,GAAA,SAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAVqCD,GAAA,MAAM,CAAA,CAAA,EAE/C,IAAAE,GAAA,KAUI,OAAA,eAAAD,GAAA,qBAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAVKC,GAAA,kBAAkB,CAAA,CAAA,mGCFdC,GAAA,QAAU,oBCAvB,IAAAC,GAAAC,EAAAC,IAAA,6FAGA,IAAMC,GAAiB,GAEvBC,GAAA,KACAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KACaL,GAAA,OAAS,IAAII,GAAA,OAAOC,GAAA,OAAO,EAExC,IAAAC,GAAA,UAAA,CAGI,SAAAA,EAAYC,EAAc,wBACtBP,GAAA,OAAO,cAAaQ,EAAaF,CAAQ,GAhBjD,EAiBQH,GAAA,gBAAe,KAAM,SAAUI,CAAM,CACzC,CAMA,OAAAD,EAAA,UAAA,MAAA,SAAMG,EAAgB,CAClB,OAAOA,EAAS,YAAW,EAAG,MAAM,KAAK,CAC7C,EAGAH,EAAA,UAAA,KAAA,SAAKI,EAAoB,CACrB,OAAOA,EAAM,KAAK,GAAG,CACzB,EAEOJ,EAAA,MAAP,SAAaK,EAAkB,CAE3B,QADMD,EAAQ,CAAA,EACLE,EAAI,EAAGA,EAAI,KAAMA,IAAK,CAC3B,IAAMC,EAAOF,EAAS,QAAQC,CAAC,EAE/B,GAAIA,IAAMD,EAAS,aAAaE,CAAI,EAAK,MAAO,KAChDH,EAAM,KAAKG,CAAI,EAEnB,OAzCR,EAyCeX,GAAA,IAAGQ,EAAM,KAAK;CAAI,EAAI;CAAI,CACrC,EAEOJ,EAAA,SAAP,SAAgBQ,EAAgBC,EAAa,CAIzC,GAHKA,IAAQA,EAAOD,EAAK,QAGrBb,GACA,GAAI,CACA,IAAMe,EAAa,OACfA,EAAU,SAAWA,EAAU,QAAQ,YAClCA,EAAU,QAAQ,UAAUD,KApDrD,EAqDyBZ,GAAA,gBAAea,EAAU,QAAQ,UAAWD,EAAMD,CAAI,QAGjE,CAAc,CAExB,EAEJR,CAAA,EAhDA,EAAsBN,GAAA,SAAAM,KCZtB,IAAAW,GAAAC,EAAAC,IAAA,kkBAEA,IAAAC,GAAA,KAEMC,GAAQ,omZAEVC,GAA0B,KAE9B,SAASC,GAAUC,EAAc,CAC7B,GAAIF,IAAY,OAChBA,GAAWD,GAAM,QAAQ,WAAY,KAAK,EAAE,YAAW,EAAG,UAAU,CAAC,EAAE,MAAM,GAAG,EAI5ED,GAAA,SAAS,MAAMI,CAAI,IAAM,sEACzB,MAAAF,GAAW,KACL,IAAI,MAAM,wCAAwC,CAEhE,CAEA,IAAAG,GAAA,SAAAC,EAAA,CAAqBC,GAAAF,EAAAC,CAAA,EACjB,SAAAD,GAAA,QACIC,EAAA,KAAA,KAAM,IAAI,GAAC,IACf,CAEA,OAAAD,EAAA,UAAA,QAAA,SAAQG,EAAa,CACjB,OAAAL,GAAU,IAAI,EACPD,GAASM,EACpB,EAEAH,EAAA,UAAA,aAAA,SAAaI,EAAY,CACrB,OAAAN,GAAU,IAAI,EACPD,GAAS,QAAQO,CAAI,CAChC,EACJJ,CAAA,EAdqBL,GAAA,QAAQ,EAgBvBU,GAAS,IAAIL,GAGVN,GAAA,OAAAW,GAFTV,GAAA,SAAS,SAASU,EAAM,ICrCxB,IAAAC,GAAAC,EAAAC,IAAA,kkBAEA,IAAAC,GAAA,KAGMC,GAAQ,+zVAEVC,GAA0B,KAG9B,SAASC,GAAUC,EAAc,CAC7B,GAAIF,IAAY,OAChBA,GAAWD,GAAM,QAAQ,WAAY,KAAK,EAAE,YAAW,EAAG,UAAU,CAAC,EAAE,MAAM,GAAG,EAI5ED,GAAA,SAAS,MAAMI,CAAI,IAAM,sEACzB,MAAAF,GAAW,KACL,IAAI,MAAM,wCAAwC,CAEhE,CAEA,IAAAG,GAAA,SAAAC,EAAA,CAAqBC,GAAAF,EAAAC,CAAA,EACjB,SAAAD,GAAA,QACIC,EAAA,KAAA,KAAM,IAAI,GAAC,IACf,CAEA,OAAAD,EAAA,UAAA,QAAA,SAAQG,EAAa,CACjB,OAAAL,GAAU,IAAI,EACPD,GAASM,EACpB,EAEAH,EAAA,UAAA,aAAA,SAAaI,EAAY,CACrB,OAAAN,GAAU,IAAI,EACPD,GAAS,QAAQO,CAAI,CAChC,EACJJ,CAAA,EAdqBL,GAAA,QAAQ,EAgBvBU,GAAS,IAAIL,GAGVN,GAAA,OAAAW,GAFTV,GAAA,SAAS,SAASU,EAAM,ICvCxB,IAAAC,GAAAC,EAAAC,IAAA,kkBAEA,IAAAC,GAAA,KAEAC,GAAA,KAGMC,GAAQ,szWAERC,GAAqC,CAAA,EACvCC,GAA0B,KAE9B,SAASC,GAAcC,EAAY,CAC/B,OAAAL,GAAA,OAAO,eAAc,GAbzB,EAcWD,GAAA,cAAa,MAAM,UAAU,OAAO,MAd/C,EAcoDA,GAAA,aAAYM,EAAK,UAAU,KAAK,EAAE,YAAW,CAAE,EAAG,SAACC,EAAS,CACxG,OAASA,GAAK,IAAMA,GAAK,IAAQA,GAAK,IAAMA,GAAK,GACrD,CAAC,CAAC,CACN,CAEA,SAASC,GAAOF,EAAY,CACxB,IAAMG,EAAwB,CAAA,EAC9B,aAAM,UAAU,QAAQ,MArB5B,EAqBiCT,GAAA,aAAYM,CAAI,EAAG,SAACC,EAAS,CAElDA,IAAM,IACNE,EAAO,KAAK,GAAG,EACfA,EAAO,KAAK,GAAG,GAERF,IAAM,KACbE,EAAO,KAAK,GAAG,EACfA,EAAO,KAAK,GAAG,EACfA,EAAO,KAAK,GAAG,GAEfA,EAAO,KAAKF,CAAC,CAErB,CAAC,GAlCL,EAoCWP,GAAA,cAAaS,CAAM,CAC9B,CAEA,SAASC,GAAUC,EAAc,CAC7B,GAAIP,IAAY,OAChBA,GAAWF,GAAM,QAAQ,WAAY,KAAK,EAAE,YAAW,EAAG,UAAU,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,SAACU,EAAC,CAAK,OAAAJ,GAAOI,CAAC,CAAR,CAAS,EACtGR,GAAS,QAAQ,SAACE,EAAMO,EAAK,CACzBV,GAAOE,GAAcC,CAAI,GAAKO,CAClC,CAAC,EAIGZ,GAAA,SAAS,MAAMU,CAAI,IAAM,sEACzB,MAAAP,GAAW,KACL,IAAI,MAAM,wCAAwC,CAEhE,CAEA,IAAAU,GAAA,SAAAC,EAAA,CAAqBC,GAAAF,EAAAC,CAAA,EACjB,SAAAD,GAAA,QACIC,EAAA,KAAA,KAAM,IAAI,GAAC,IACf,CAEA,OAAAD,EAAA,UAAA,QAAA,SAAQD,EAAa,CACjB,OAAAH,GAAU,IAAI,EACPN,GAASS,EACpB,EAEAC,EAAA,UAAA,aAAA,SAAaR,EAAY,CACrB,OAAAI,GAAU,IAAI,EACPP,GAAOE,GAAcC,CAAI,EACpC,EACJQ,CAAA,EAdqBb,GAAA,QAAQ,EAgBvBgB,GAAS,IAAIH,GAGVf,GAAA,OAAAkB,GAFThB,GAAA,SAAS,SAASgB,EAAM,ICvExB,IAAAC,GAAAC,EAAAC,IAAA,kkBAEA,IAAAC,GAAA,KAEAC,GAAA,KAGMC,GAAQ,wgcAEVC,GAA0B,KACxBC,GAAqC,CAAA,EAE3C,SAASC,GAAcC,EAAY,CAC/B,OAAAL,GAAA,OAAO,eAAc,GAbzB,EAcWD,GAAA,cAAa,MAAM,UAAU,OAAO,MAd/C,EAcoDA,GAAA,aAAYM,EAAK,UAAU,KAAK,EAAE,YAAW,CAAE,EAAG,SAACC,EAAS,CACxG,OAASA,GAAK,IAAMA,GAAK,IAAQA,GAAK,IAAMA,GAAK,GACrD,CAAC,CAAC,CACN,CAEA,SAASC,GAAOF,EAAY,CACxB,IAAMG,EAAwB,CAAA,EAE9B,aAAM,UAAU,QAAQ,MAtB5B,EAsBiCT,GAAA,aAAYM,CAAI,EAAG,SAACC,EAAS,CAElDA,IAAM,IACNE,EAAO,KAAK,GAAG,EACfA,EAAO,KAAK,GAAG,GAGRF,IAAM,IACbE,EAAO,KAAK,GAAG,EACfA,EAAO,KAAK,GAAG,GAGfA,EAAO,KAAKF,CAAC,CAErB,CAAC,GApCL,EAsCWP,GAAA,cAAaS,CAAM,CAC9B,CAEA,SAASC,GAAUC,EAAc,CAC7B,GAAIR,IAAY,OAChBA,GAAWD,GAAM,QAAQ,WAAY,KAAK,EAAE,YAAW,EAAG,UAAU,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,SAACU,EAAC,CAAK,OAAAJ,GAAOI,CAAC,CAAR,CAAS,EACtGT,GAAS,QAAQ,SAACG,EAAMO,EAAK,CACzBT,GAAOC,GAAcC,CAAI,GAAKO,CAClC,CAAC,EAIGZ,GAAA,SAAS,MAAMU,CAAI,IAAM,sEACzB,MAAAR,GAAW,KACL,IAAI,MAAM,uCAAuC,CAE/D,CAEA,IAAAW,GAAA,SAAAC,EAAA,CAAqBC,GAAAF,EAAAC,CAAA,EACjB,SAAAD,GAAA,QACIC,EAAA,KAAA,KAAM,IAAI,GAAC,IACf,CAEA,OAAAD,EAAA,UAAA,QAAA,SAAQD,EAAa,CACjB,OAAAH,GAAU,IAAI,EACPP,GAASU,EACpB,EAEAC,EAAA,UAAA,aAAA,SAAaR,EAAY,CACrB,OAAAI,GAAU,IAAI,EACPN,GAAOC,GAAcC,CAAI,EACpC,EACJQ,CAAA,EAdqBb,GAAA,QAAQ,EAgBvBgB,GAAS,IAAIH,GAGVf,GAAA,OAAAkB,GAFThB,GAAA,SAAS,SAASgB,EAAM,ICzExB,IAAAC,GAAAC,EAAAC,IAAA,kkBAEA,IAAAC,GAAA,KACAC,GAAA,KAEAC,GAAA,KAGMC,GAAO,CAGT,qrEAGA,usGAGA,6uDAGA,qlBAGA,6JAGA,2GAGA,aAIEC,GAAU,8FAEZC,GAA0B,KAE9B,SAASC,GAAIC,EAAY,CACrB,OAtCJ,EAsCWP,GAAA,UAtCX,EAsCmBC,GAAA,aAAYM,CAAI,CAAC,CACpC,CAEA,IAAMC,GAAS,uBACTC,GAAQ,uBAEd,SAASC,GAAUC,EAAc,CAC7B,GAAIN,KAAa,KAAQ,OAEzBA,GAAW,CAAA,EAGX,IAAMO,EAAiD,CAAA,EAGvDA,GArDJ,EAqDcX,GAAA,cAAa,CAAC,IAAK,IAAK,GAAG,CAAC,GAAK,GAC3CW,GAtDJ,EAsDcX,GAAA,cAAa,CAAC,IAAK,IAAK,GAAG,CAAC,GAAK,GAG3CW,GAzDJ,EAyDcX,GAAA,cAAa,CAAC,IAAK,IAAK,GAAG,CAAC,IAzD1C,EAyD+CA,GAAA,cAAa,CAAC,IAAK,IAAK,GAAG,CAAC,EACvEW,GA1DJ,EA0DcX,GAAA,cAAa,CAAC,IAAK,IAAK,GAAG,CAAC,IA1D1C,EA0D+CA,GAAA,cAAa,CAAC,IAAK,IAAK,GAAG,CAAC,EACvEW,GA3DJ,EA2DcX,GAAA,cAAa,CAAC,IAAK,IAAK,GAAG,CAAC,IA3D1C,EA2D+CA,GAAA,cAAa,CAAC,IAAK,IAAK,GAAG,CAAC,EACvEW,GA5DJ,EA4DcX,GAAA,cAAa,CAAC,IAAK,IAAK,GAAG,CAAC,IA5D1C,EA4D+CA,GAAA,cAAa,CAAC,IAAK,IAAK,GAAG,CAAC,EAIvE,SAASY,EAAUN,EAAY,CAE3B,QADIO,EAAS,GACJC,EAAI,EAAGA,EAAIR,EAAK,OAAQQ,IAAK,CAClC,IAAIC,EAAOT,EAAKQ,GACVE,EAASL,EAAUI,GACrBC,IAAW,KACXA,IAAUD,EAAeC,GAC7BH,GAAUE,GAEd,OAAOF,CACX,CAGA,SAASI,EAAaC,EAAWC,EAAS,CAGtC,OAFAD,EAAIN,EAAUM,CAAC,EACfC,EAAIP,EAAUO,CAAC,EACXD,EAAIC,EAAY,GAChBD,EAAIC,EAAY,EACb,CACX,CAGA,QAASC,EAAS,EAAGA,GAAU,EAAGA,IAE9B,QADMC,EAAInB,GAAKkB,EAAS,GACfE,EAAS,EAAGA,EAASD,EAAE,OAAQC,GAAUF,EAAQ,CAEtD,QADMd,EAAO,CAAA,EACJQ,EAAI,EAAGA,EAAIM,EAAQN,IAAK,CAC5B,IAAMS,EAAIpB,GAAQ,QAAQkB,EAAEC,EAASR,EAAE,EACvCR,EAAK,KAAK,GAAG,EACbA,EAAK,KAAMiB,EAAI,GAAQ,IAAK,GAAG,EAC/BjB,EAAK,MAAMiB,EAAI,IAAQ,GAAG,EAE/BnB,GAAS,MAhGrB,EAgG0BJ,GAAA,cAAaM,CAAI,CAAC,EAYxC,GATAF,GAAS,KAAKa,CAAY,EAStBZ,GAAID,GAAS,IAAI,IAAMG,IAAUF,GAAID,GAAS,IAAI,IAAMI,GAAO,CAC/D,IAAMgB,EAAMpB,GAAS,KACrBA,GAAS,KAAOA,GAAS,KACzBA,GAAS,KAAOoB,EAKpB,GAAIvB,GAAA,SAAS,MAAMS,CAAI,IAAM,qEACzB,MAAAN,GAAW,KACL,IAAI,MAAM,yCAAyC,CAEjE,CAEA,IAAAqB,GAAA,SAAAC,EAAA,CAAqBC,GAAAF,EAAAC,CAAA,EACjB,SAAAD,GAAA,QACIC,EAAA,KAAA,KAAM,IAAI,GAAC,IACf,CAEA,OAAAD,EAAA,UAAA,QAAA,SAAQG,EAAa,CACjB,OAAAnB,GAAU,IAAI,EACPL,GAASwB,EACpB,EAEAH,EAAA,UAAA,aAAA,SAAanB,EAAY,CACrB,OAAAG,GAAU,IAAI,EACPL,GAAS,QAAQE,CAAI,CAChC,EAEAmB,EAAA,UAAA,MAAA,SAAMI,EAAgB,CAClB,OAAA5B,GAAA,OAAO,eAAc,EACd4B,EAAS,MAAM,gBAAgB,CAC1C,EAEAJ,EAAA,UAAA,KAAA,SAAKK,EAAoB,CACrB,OAAOA,EAAM,KAAK,QAAQ,CAC9B,EACJL,CAAA,EAvBqBxB,GAAA,QAAQ,EAyBvB8B,GAAS,IAAIN,GAGV3B,GAAA,OAAAiC,GAFT9B,GAAA,SAAS,SAAS8B,EAAM,ICpJxB,IAAAC,GAAAC,EAAAC,IAAA,kkBAEA,IAAAC,GAAA,KAEAC,GAAA,KAGMC,GAAO,CACT,OACA,05JACA,+lIACA,k8BACA,moCACA,0aACA,iHACA,iFAGEC,GAAQ,yEAEd,SAASC,GAAUC,EAAY,CAC3B,OAAIA,GAAQ,GACRA,EAAOA,EAAO,IAAM,GACbA,GAAQ,KACfA,EAAOA,EAAO,GAAK,KAxB3B,EA2BWL,GAAA,cAAa,CAAE,KAAMK,GAAQ,GAAK,KAAMA,EAAO,IAAQ,GAAG,CAAC,CACtE,CAEA,IAAIC,GAA0B,KAE9B,SAASC,GAAUC,EAAc,CAC7B,GAAIF,IAAY,OAEhBA,GAAW,CAAA,EAEXJ,GAAK,QAAQ,SAACA,EAAMO,EAAM,CACtBA,GAAU,EACV,QAASC,EAAI,EAAGA,EAAIR,EAAK,OAAQQ,GAAKD,EAAQ,CAE1C,QADIE,EAAO,GACFC,EAAI,EAAGA,EAAIH,EAAQG,IACxBD,GAAQP,GAAUD,GAAM,QAAQD,EAAKQ,EAAIE,EAAE,CAAC,EAEhDN,GAAS,KAAKK,CAAI,EAE1B,CAAC,EAEDL,GAAS,KAAI,EAITL,GAAA,SAAS,MAAMO,CAAI,IAAM,sEACzB,MAAAF,GAAW,KACL,IAAI,MAAM,uCAAuC,CAE/D,CAGA,IAAAO,GAAA,SAAAC,EAAA,CAAqBC,GAAAF,EAAAC,CAAA,EACjB,SAAAD,GAAA,QACIC,EAAA,KAAA,KAAM,IAAI,GAAC,IACf,CAEA,OAAAD,EAAA,UAAA,QAAA,SAAQG,EAAa,CACjB,OAAAT,GAAU,IAAI,EACPD,GAASU,EACpB,EAEAH,EAAA,UAAA,aAAA,SAAaF,EAAY,CACrB,OAAAJ,GAAU,IAAI,EACPD,GAAS,QAAQK,CAAI,CAChC,EACJE,CAAA,EAdqBZ,GAAA,QAAQ,EAgBvBgB,GAAS,IAAIJ,GAGVd,GAAA,OAAAkB,GAFThB,GAAA,SAAS,SAASgB,EAAM,IC5ExB,IAAAC,GAAAC,EAAAC,IAAA,kkBAEA,IAAAC,GAAA,KAEMC,GAAQ,oqbAEVC,GAA0B,KAE9B,SAASC,GAAUC,EAAc,CAC7B,GAAIF,IAAY,OAChBA,GAAWD,GAAM,QAAQ,WAAY,KAAK,EAAE,YAAW,EAAG,UAAU,CAAC,EAAE,MAAM,GAAG,EAI5ED,GAAA,SAAS,MAAMI,CAAI,IAAM,sEACzB,MAAAF,GAAW,KACL,IAAI,MAAM,wCAAwC,CAEhE,CAEA,IAAAG,GAAA,SAAAC,EAAA,CAAqBC,GAAAF,EAAAC,CAAA,EACjB,SAAAD,GAAA,QACIC,EAAA,KAAA,KAAM,IAAI,GAAC,IACf,CAEA,OAAAD,EAAA,UAAA,QAAA,SAAQG,EAAa,CACjB,OAAAL,GAAU,IAAI,EACPD,GAASM,EACpB,EAEAH,EAAA,UAAA,aAAA,SAAaI,EAAY,CACrB,OAAAN,GAAU,IAAI,EACPD,GAAS,QAAQO,CAAI,CAChC,EACJJ,CAAA,EAdqBL,GAAA,QAAQ,EAgBvBU,GAAS,IAAIL,GAGVN,GAAA,OAAAW,GAFTV,GAAA,SAAS,SAASU,EAAM,ICrCxB,IAAAC,GAAAC,EAAAC,IAAA,glBAEA,IAAAC,GAAA,KAEAC,GAAA,KAGMC,GAAO,mgMACPC,GAAY,8lDAIZC,GAA6C,CAC/C,MAAO,KACP,MAAO,MAGLC,GAAoC,CACtC,MAAO,qEACP,MAAO,sEAGLC,GAAQ,mEACRC,GAAQ,6BAEd,SAASC,GAAUC,EAAc,CAC7B,GAAIL,GAASK,EAAK,UAAY,KAE9B,CAAAL,GAASK,EAAK,QAAU,CAAA,EAGxB,QADIC,EAAc,EACTC,EAAI,EAAGA,EAAI,KAAMA,IAAK,CAC3B,IAAMC,EAAIL,GAAM,QAAQL,GAAKS,EAAI,EAAE,EAC7BE,EAAQ,CACV,KAAOD,GAAK,GACZ,IAAMN,GAAM,QAAQJ,GAAKS,EAAI,EAAI,EAAE,EACnC,IAAML,GAAM,QAAQJ,GAAKS,EAAI,EAAI,EAAE,GAGvC,GAAIF,EAAK,SAAW,QAEhB,QADMK,EAASF,EAAI,EACVG,EAAID,EAAQC,EAAI,EAAGA,IACxBF,EAAME,GAAKT,GAAM,QAAQH,GAAUO,IAAc,GAAMK,GAAK,EAAK,IAAK,KAI9EX,GAASK,EAAK,QAAQ,MA9C9B,EA8CmCT,GAAA,cAAaa,CAAK,CAAC,EAKlD,GAAIZ,GAAA,SAAS,MAAMQ,CAAI,IAAMJ,GAAOI,EAAK,QACrC,MAAAL,GAASK,EAAK,QAAU,KAClB,IAAI,MAAM,sBAAwBA,EAAK,OAAS,mBAAmB,EAEjF,CAEA,IAAAO,GAAA,SAAAC,EAAA,CAAqBC,GAAAF,EAAAC,CAAA,EACjB,SAAAD,EAAYG,EAAe,QACvBF,EAAA,KAAA,KAAM,MAAQE,CAAO,GAAC,IAC1B,CAEA,OAAAH,EAAA,UAAA,QAAA,SAAQI,EAAa,CACjB,OAAAZ,GAAU,IAAI,EACPJ,GAAS,KAAK,QAAQgB,EACjC,EAEAJ,EAAA,UAAA,aAAA,SAAaK,EAAY,CACrB,OAAAb,GAAU,IAAI,EACPJ,GAAS,KAAK,QAAQ,QAAQiB,CAAI,CAC7C,EAEAL,EAAA,UAAA,MAAA,SAAMM,EAAgB,CAClB,OAAAA,EAAWA,EAAS,QAAQ,iBAAkB,EAAE,EACzCA,EAAS,MAAM,EAAE,CAC5B,EACJN,CAAA,EAnBqBf,GAAA,QAAQ,EAqBvBsB,GAAW,IAAIP,GAAO,IAAI,EAOvBjB,GAAA,SAAAwB,GANTtB,GAAA,SAAS,SAASsB,EAAQ,EAC1BtB,GAAA,SAAS,SAASsB,GAAU,IAAI,EAEhC,IAAMC,GAAW,IAAIR,GAAO,IAAI,EAGbjB,GAAA,SAAAyB,GAFnBvB,GAAA,SAAS,SAASuB,EAAQ,qGCjF1B,IAAAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAEaC,GAAA,UAA8C,CACvD,GAAIR,GAAA,OACJ,GAAIC,GAAA,OACJ,GAAIC,GAAA,OACJ,GAAIC,GAAA,OACJ,GAAIG,GAAA,OACJ,GAAIF,GAAA,OACJ,GAAIC,GAAA,OACJ,GAAIE,GAAA,SACJ,MAAOA,GAAA,SACP,MAAOA,GAAA,YCrBX,IAAAE,GAAAC,EAAAC,IAAA,0GAKA,IAAAC,GAAA,KAKI,OAAA,eAAAD,GAAA,SAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OALKC,GAAA,MAAM,CAAA,CAAA,EAMX,OAAA,eAAAD,GAAA,WAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OANaC,GAAA,QAAQ,CAAA,CAAA,EAEzB,IAAAC,GAAA,KAKI,OAAA,eAAAF,GAAA,YAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OALKE,GAAA,SAAS,CAAA,CAAA,mGCPLC,GAAA,QAAU,iBCAvB,IAAAC,GAAAC,EAAAC,IAAA,iMAOA,IAAAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KACAC,GAAA,KAEAC,GAAA,KACAC,GAAA,KACMC,GAAS,IAAIF,GAAA,OAAOC,GAAA,OAAO,EAE3BE,GAAIX,GAAA,UAAU,KAAK,oEAAoE,EAIvFY,IA1BN,EA0BqBX,GAAA,aAAY,cAAc,EAEzCY,GAAc,WAGpB,SAASC,GAAaC,EAAY,CAC/B,OAAS,GAAKA,GAAQ,GAAO,EAAIA,CACpC,CAGA,SAASC,GAAaD,EAAY,CAC/B,OAAQ,GAAKA,GAAQ,CACxB,CAEA,SAASE,GAAQC,EAA6B,CAC1C,OAzCJ,EAyCWnB,GAAA,aAzCX,EAyCsBA,GAAA,SAAQmB,CAAK,EAAG,EAAE,CACxC,CAEA,SAASC,GAAYC,EAAgB,CACjC,OAAOtB,GAAA,OAAO,QA7ClB,EA6CyBC,GAAA,QAAO,CAAEqB,GA7ClC,EA6CwCrB,GAAA,eA7CxC,EA6CqDM,GAAA,SA7CrD,EA6C4DA,GAAA,QAAOe,CAAI,CAAC,EAAG,EAAG,CAAC,CAAC,CAAE,CAAC,CACnF,CAEA,SAASC,GAAYC,EAA2B,CAC5C,GAAIA,GAAY,KACZ,OAAOf,GAAA,UAAU,GAGrB,GAAI,OAAOe,GAAc,SAAU,CAC/B,IAAMC,EAAQhB,GAAA,UAAUe,GACxB,OAAIC,GAAS,MACTb,GAAO,mBAAmB,iBAAkB,WAAYY,CAAQ,EAE7DC,EAGX,OAAOD,CACX,CAEA,IAAME,GAAyB,CAAA,EAElB3B,GAAA,YAAc,mBAQ3B,IAAA4B,GAAA,UAAA,CAwBI,SAAAA,EAAYC,EAAuBC,EAAoBC,EAAmBC,EAA2BC,EAAmBC,EAAeC,EAAeC,EAAiC,CAEnL,GAAIP,IAAqBF,GACrB,MAAM,IAAI,MAAM,8CAA8C,EAGlE,GAAIG,EAAY,CACZ,IAAMO,EAAa,IAAI9B,GAAA,WAAWuB,CAAU,GAzGxD,EA0GYxB,GAAA,gBAAe,KAAM,aAAc+B,EAAW,UAAU,GA1GpE,EA2GY/B,GAAA,gBAAe,KAAM,YAAa+B,EAAW,mBAAmB,OA3G5E,EA6GY/B,GAAA,gBAAe,KAAM,aAAc,IAAI,GA7GnD,EA8GYA,GAAA,gBAAe,KAAM,aA9GjC,EA8G8CJ,GAAA,SAAQ6B,CAAS,CAAC,GA9GhE,EAiHQzB,GAAA,gBAAe,KAAM,oBAAqB0B,CAAiB,GAjHnE,EAkHQ1B,GAAA,gBAAe,KAAM,eAlH7B,EAkH4CJ,GAAA,eAlH5C,EAkHyDM,GAAA,YAlHzD,EAkHmEA,GAAA,QAAO,KAAK,SAAS,CAAC,EAAG,EAAG,CAAC,CAAC,GAlHjG,EAoHQF,GAAA,gBAAe,KAAM,WApH7B,EAoHwCG,GAAA,gBAAe,KAAK,SAAS,CAAC,GApHtE,EAsHQH,GAAA,gBAAe,KAAM,YAAa2B,CAAS,GAtHnD,EAwHQ3B,GAAA,gBAAe,KAAM,QAAS4B,CAAK,GAxH3C,EAyHQ5B,GAAA,gBAAe,KAAM,QAAS6B,CAAK,EAE/BC,GAAkB,OA3H9B,EA6HY9B,GAAA,gBAAe,KAAM,WAAY,IAAI,GA7HjD,EA8HYA,GAAA,gBAAe,KAAM,OAAQ,IAAI,GAE1B,OAAO8B,GAAoB,WAhI9C,EAkIY9B,GAAA,gBAAe,KAAM,WAAY,IAAI,GAlIjD,EAmIYA,GAAA,gBAAe,KAAM,OAAQ8B,CAAc,KAnIvD,EAuIY9B,GAAA,gBAAe,KAAM,WAAY8B,CAAc,GAvI3D,EAwIY9B,GAAA,gBAAe,KAAM,OAAQ8B,EAAe,IAAI,EAExD,CAEA,cAAA,eAAIR,EAAA,UAAA,cAAW,KAAf,UAAA,CAOI,GAAI,KAAK,OAAS,IAAO,MAAM,IAAI,MAAM,kBAAkB,EAE3D,OAAON,IArJf,EAqJ2BpB,GAAA,QAAO,CACpB,KAAK,YAAc,KAAQ,aAAc,cAtJvD,EAuJYA,GAAA,SAAQ,KAAK,KAAK,EAClB,KAAK,mBAxJjB,EAyJYA,GAAA,aAzJZ,EAyJuBA,GAAA,SAAQ,KAAK,KAAK,EAAG,CAAC,EACjC,KAAK,UACH,KAAK,YAAc,MA3JjC,EA2JyCA,GAAA,QAAO,CAAE,OAAQ,KAAK,UAAU,CAAE,EAAG,KAAK,UAC1E,CAAC,CACN,kCAEA0B,EAAA,UAAA,OAAA,UAAA,CACI,OAAO,IAAIA,EAAOD,GAAmB,KAAM,KAAK,UAAW,KAAK,kBAAmB,KAAK,UAAW,KAAK,MAAO,KAAK,MAAO,KAAK,IAAI,CACxI,EAEQC,EAAA,UAAA,QAAR,SAAgBM,EAAa,CACzB,GAAIA,EAAQ,WAAc,MAAM,IAAI,MAAM,mBAAqB,OAAOA,CAAK,CAAC,EAG5E,IAAII,EAAO,KAAK,KACZA,IAAQA,GAAQ,KAAOJ,EAAQ,CAAClB,KAEpC,IAAMO,EAAO,IAAI,WAAW,EAAE,EAE9B,GAAIW,EAAQlB,GAAa,CACrB,GAAI,CAAC,KAAK,WACN,MAAM,IAAI,MAAM,sCAAsC,EAI1DO,EAAK,KAlLjB,EAkLqBrB,GAAA,UAAS,KAAK,UAAU,EAAG,CAAC,EAGjCoC,IAAQA,GAAQ,UAIpBf,EAAK,KAzLjB,EAyLqBrB,GAAA,UAAS,KAAK,SAAS,CAAC,EAIrC,QAAS,EAAI,GAAI,GAAK,EAAG,GAAK,EAAKqB,EAAK,IAAM,GAAK,IAAQW,GAAU,GAAK,EAAM,IAEhF,IAAMK,GA/Ld,EA+LkBrC,GAAA,WA/LlB,EA+L2BM,GAAA,aAAYA,GAAA,mBAAmB,OAAQ,KAAK,UAAWe,CAAI,CAAC,EACzEiB,EAAKD,EAAE,MAAM,EAAG,EAAE,EAClBE,EAAKF,EAAE,MAAM,EAAE,EAGjBG,EAAa,KAGbC,EAAa,KAEjB,GAAI,KAAK,WACLD,EAAKtB,GAAQjB,GAAA,UAAU,KAAKqC,CAAE,EAAE,IAAI,KAAK,UAAU,EAAE,IAAI1B,EAAC,CAAC,MACxD,CACH,IAAM8B,EAAK,IAAIrC,GAAA,YA5M3B,EA4MsCL,GAAA,SAAQsC,CAAE,CAAC,EACrCG,EAAKC,EAAG,UAAU,KAAK,SAAS,EAGpC,IAAIR,EAAoCE,EAElCO,EAAe,KAAK,SAC1B,OAAIA,IACAT,EAAiB,OAAO,OAAO,CAC3B,OAAQS,EAAY,OACpB,KAAMP,EACN,OAASO,EAAY,QAAU,KAClC,GAGE,IAAIjB,EAAOD,GAAmBe,EAAIC,EAAI,KAAK,YAAavB,GAAQqB,CAAE,EAAGP,EAAO,KAAK,MAAQ,EAAGE,CAAc,CACrH,EAEAR,EAAA,UAAA,WAAA,SAAWU,EAAY,CACnB,IAAMQ,EAAaR,EAAK,MAAM,GAAG,EAEjC,GAAIQ,EAAW,SAAW,GAAMA,EAAW,KAAO,KAAO,KAAK,QAAU,EACpE,MAAM,IAAI,MAAM,kBAAoBR,CAAI,EAGxCQ,EAAW,KAAO,KAAOA,EAAW,MAAK,EAG7C,QADIC,EAAiB,KACZ,EAAI,EAAG,EAAID,EAAW,OAAQ,IAAK,CACxC,IAAME,EAAYF,EAAW,GAC7B,GAAIE,EAAU,MAAM,WAAW,EAAG,CAC9B,IAAMd,EAAQ,SAASc,EAAU,UAAU,EAAGA,EAAU,OAAS,CAAC,CAAC,EACnE,GAAId,GAASlB,GAAe,MAAM,IAAI,MAAM,wBAA0BgC,CAAS,EAC/ED,EAASA,EAAO,QAAQ/B,GAAckB,CAAK,UACpCc,EAAU,MAAM,UAAU,EAAG,CACpC,IAAMd,EAAQ,SAASc,CAAS,EAChC,GAAId,GAASlB,GAAe,MAAM,IAAI,MAAM,wBAA0BgC,CAAS,EAC/ED,EAASA,EAAO,QAAQb,CAAK,MAE7B,OAAM,IAAI,MAAM,4BAA8Bc,CAAS,EAI/D,OAAOD,CACX,EAGOnB,EAAA,UAAP,SAAiBqB,EAAiBC,EAAkB,CAChD,IAAMC,GA5Pd,EA4PsCjD,GAAA,UAAS+C,CAAI,EAC3C,GAAIE,EAAU,OAAS,IAAMA,EAAU,OAAS,GAAM,MAAM,IAAI,MAAM,cAAc,EAEpF,IAAMZ,GA/Pd,EA+P8BrC,GAAA,WA/P9B,EA+PuCM,GAAA,aAAYA,GAAA,mBAAmB,OAAQO,GAAcoC,CAAS,CAAC,EAE9F,OAAO,IAAIvB,EAAOD,GAAmBP,GAAQmB,EAAE,MAAM,EAAG,EAAE,CAAC,EAAG,KAAM,aAAcnB,GAAQmB,EAAE,MAAM,EAAE,CAAC,EAAG,EAAG,EAAGW,CAAQ,CAC1H,EAEOtB,EAAA,aAAP,SAAoBsB,EAAkBE,EAAmB3B,EAA4B,CAGjF,OAAAA,EAAWD,GAAYC,CAAQ,EAG/ByB,EAAWG,GAAkBC,GAAkBJ,EAAUzB,CAAQ,EAAGA,CAAQ,EAErEG,EAAO,UAAU2B,GAAeL,EAAUE,CAAQ,EAAG,CACxD,OAAQF,EACR,KAAM,IACN,OAAQzB,EAAS,OACpB,CACL,EAEOG,EAAA,SAAP,SAAgBqB,EAAe,CAC3B,OAAOrB,EAAO,UAAUqB,EAAM,IAAI,CACtC,EAEOrB,EAAA,gBAAP,SAAuB4B,EAAmB,CACtC,IAAMC,EAAQxD,GAAA,OAAO,OAAOuD,CAAW,GAEnCC,EAAM,SAAW,IAAMnC,GAAYmC,EAAM,MAAM,EAAG,EAAE,CAAC,IAAMD,IAC3D3C,GAAO,mBAAmB,uBAAwB,cAAe,YAAY,EAGjF,IAAMsB,EAAQsB,EAAM,GACdzB,GA/Rd,EA+RkC9B,GAAA,SAAQuD,EAAM,MAAM,EAAG,CAAC,CAAC,EAC7CvB,EAAQ,UAhStB,EAgS+BhC,GAAA,SAAQuD,EAAM,MAAM,EAAG,EAAE,CAAC,EAAE,UAAU,CAAC,EAAG,EAAE,EAC7DxB,GAjSd,EAiS0B/B,GAAA,SAAQuD,EAAM,MAAM,GAAI,EAAE,CAAC,EACvCC,EAAMD,EAAM,MAAM,GAAI,EAAE,EAE9B,QApSR,EAoSgBvD,GAAA,SAAQuD,EAAM,MAAM,EAAG,CAAC,CAAC,EAAG,CAEhC,IAAK,aAAc,IAAK,aACpB,OAAO,IAAI7B,EAAOD,GAAmB,MAvSrD,EAuS2DzB,GAAA,SAAQwD,CAAG,EAAG1B,EAAmBC,EAAWC,EAAOC,EAAO,IAAI,EAG7G,IAAK,aAAc,IAAK,cACpB,GAAIuB,EAAI,KAAO,EAAK,MACpB,OAAO,IAAI9B,EAAOD,IA5SlC,EA4SqDzB,GAAA,SAAQwD,EAAI,MAAM,CAAC,CAAC,EAAG,KAAM1B,EAAmBC,EAAWC,EAAOC,EAAO,IAAI,EAG1H,OAAOtB,GAAO,mBAAmB,uBAAwB,cAAe,YAAY,CACxF,EACJe,CAAA,EAvOA,EAAa5B,GAAA,OAAA4B,GAyOb,SAAgB2B,GAAeL,EAAkBE,EAAiB,CACzDA,IAAYA,EAAW,IAE5B,IAAMO,GAtTV,EAsTiBvD,GAAA,aAAY,WAAagD,EAAUhD,GAAA,yBAAyB,IAAI,EAE7E,OAxTJ,EAwTWC,GAAA,SAxTX,EAwTkBD,GAAA,aAAY8C,EAAU9C,GAAA,yBAAyB,IAAI,EAAGuD,EAAM,KAAM,GAAI,QAAQ,CAChG,CANA3D,GAAA,eAAAuD,GAQA,SAAgBD,GAAkBJ,EAAkBzB,EAA4B,CAC5EA,EAAWD,GAAYC,CAAQ,EAE/BZ,GAAO,eAAc,EAErB,IAAMa,EAAQD,EAAS,MAAMyB,CAAQ,EACrC,GAAKxB,EAAM,OAAS,IAAO,EAAK,MAAM,IAAI,MAAM,kBAAkB,EAKlE,QAHMkC,GAnUV,EAmUoB1D,GAAA,UAAS,IAAI,WAAW,KAAK,KAAK,GAAKwB,EAAM,OAAS,CAAC,CAAC,CAAC,EAErEmC,EAAS,EACJC,EAAI,EAAGA,EAAIpC,EAAM,OAAQoC,IAAK,CACnC,IAAI5B,EAAQT,EAAS,aAAaC,EAAMoC,GAAG,UAAU,MAAM,CAAC,EAC5D,GAAI5B,IAAU,GAAM,MAAM,IAAI,MAAM,kBAAkB,EAEtD,QAAS6B,EAAM,EAAGA,EAAM,GAAIA,IACpB7B,EAAS,GAAM,GAAK6B,IACpBH,EAAQC,GAAU,IAAO,GAAM,EAAKA,EAAS,GAEjDA,IAIR,IAAMG,EAAc,GAAKtC,EAAM,OAAS,EAElCuC,EAAevC,EAAM,OAAS,EAC9BwC,EAAejD,GAAagD,CAAY,EAExCE,GAvVV,EAuVqBjE,GAAA,WAvVrB,EAuV8BM,GAAA,QAAOoD,EAAQ,MAAM,EAAGI,EAAc,CAAC,CAAC,CAAC,EAAE,GAAKE,EAE1E,GAAIC,KAAcP,EAAQA,EAAQ,OAAS,GAAKM,GAC5C,MAAM,IAAI,MAAM,kBAAkB,EAGtC,OA7VJ,EA6VWhE,GAAA,SAAQ0D,EAAQ,MAAM,EAAGI,EAAc,CAAC,CAAC,CACpD,CAnCAhE,GAAA,kBAAAsD,GAqCA,SAAgBD,GAAkBO,EAAoBnC,EAA4B,CAK9E,GAJAA,EAAWD,GAAYC,CAAQ,EAE/BmC,GAnWJ,EAmWc1D,GAAA,UAAS0D,CAAO,EAErBA,EAAQ,OAAS,IAAO,GAAKA,EAAQ,OAAS,IAAMA,EAAQ,OAAS,GACtE,MAAM,IAAI,MAAM,iBAAiB,EAMrC,QAHMQ,EAAyB,CAAE,CAAC,EAE9BC,EAAgB,GACX,EAAI,EAAG,EAAIT,EAAQ,OAAQ,IAG5BS,EAAgB,GAChBD,EAAQA,EAAQ,OAAS,KAAO,EAChCA,EAAQA,EAAQ,OAAS,IAAMR,EAAQ,GAEvCS,GAAiB,IAIjBD,EAAQA,EAAQ,OAAS,KAAOC,EAChCD,EAAQA,EAAQ,OAAS,IAAMR,EAAQ,IAAO,EAAIS,EAGlDD,EAAQ,KAAKR,EAAQ,GAAKzC,GAAa,EAAIkD,CAAa,CAAC,EAEzDA,GAAiB,GAKzB,IAAMJ,EAAeL,EAAQ,OAAS,EAChCO,GAnYV,EAmYqBjE,GAAA,WAnYrB,EAmY8BM,GAAA,QAAOoD,CAAO,CAAC,EAAE,GAAK3C,GAAagD,CAAY,EAGzE,OAAAG,EAAQA,EAAQ,OAAS,KAAOH,EAChCG,EAAQA,EAAQ,OAAS,IAAOD,GAAa,EAAIF,EAE1CxC,EAAS,KAAK2C,EAAQ,IAAI,SAAClC,EAAK,CAAK,OAAWT,EAAU,QAAQS,CAAK,CAAlC,CAAmC,CAAC,CACpF,CA1CAlC,GAAA,kBAAAqD,GA4CA,SAAgBiB,GAAgBpB,EAAkBzB,EAAmB,CACjE,GAAI,CACA,OAAA6B,GAAkBJ,EAAUzB,CAAQ,EAC7B,QACT,CAAc,CAChB,MAAO,EACX,CANAzB,GAAA,gBAAAsE,GAQA,SAAgBC,GAAerC,EAAa,CACxC,OAAI,OAAOA,GAAW,UAAYA,EAAQ,GAAKA,GAASlB,IAAekB,EAAQ,IAC3ErB,GAAO,mBAAmB,wBAAyB,QAASqB,CAAK,EAE9D,aAAcA,EAAK,OAC9B,CALAlC,GAAA,eAAAuE,wGCpZA,IAAAC,GAAA,QAAA,UAEAC,GAAA,KAEA,SAAgBC,GAAYC,EAAc,CACtC,SAAOF,GAAA,aAASD,GAAA,aAAaG,CAAM,CAAC,CACxC,CAFAC,GAAA,YAAAF,KCJA,IAAAG,GAAAC,EAAAC,IAAA,mFAEA,SAAgBC,GAASC,EAAiB,CACtCA,EAAQA,EAAM,MAAK,EAEnB,QAASC,EAAID,EAAM,OAAS,EAAGC,EAAI,EAAGA,IAAK,CACvC,IAAMC,EAAI,KAAK,MAAM,KAAK,OAAM,GAAMD,EAAI,EAAE,EACtCE,EAAMH,EAAMC,GAClBD,EAAMC,GAAKD,EAAME,GACjBF,EAAME,GAAKC,EAGf,OAAOH,CACX,CAXAF,GAAA,SAAAC,KCFA,IAAAK,GAAAC,EAAAC,IAAA,kGAEA,IAAAC,GAAA,KAAS,OAAA,eAAAD,GAAA,cAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAC,GAAA,WAAW,CAAA,CAAA,EACpB,IAAAC,GAAA,KAAS,OAAA,eAAAF,GAAA,WAAA,CAAA,WAAA,GAAA,IAAA,UAAA,CAAA,OAAAE,GAAA,QAAQ,CAAA,CAAA,ICHjB,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,eAEC,SAASC,EAAM,CAEZ,SAASC,EAASC,EAAO,CACrB,OAAQ,SAASA,CAAK,IAAMA,CAChC,CAEA,SAASC,EAAUC,EAAU,CACzB,GAAI,CAACH,EAASG,EAAS,MAAM,EAAK,MAAO,GAEzC,QAASC,EAAI,EAAGA,EAAID,EAAS,OAAQC,IACjC,GAAI,CAACJ,EAASG,EAASC,EAAE,GAAKD,EAASC,GAAK,GAAKD,EAASC,GAAK,IAC3D,MAAO,GAIf,MAAO,EACX,CAEA,SAASC,EAAYC,EAAKC,EAAM,CAG5B,GAAID,EAAI,QAAU,YAAY,OAAOA,CAAG,GAAKA,EAAI,OAAS,aAEtD,OAAIC,IACID,EAAI,MACJA,EAAMA,EAAI,MAAM,EAEhBA,EAAM,MAAM,UAAU,MAAM,KAAKA,CAAG,GAIrCA,EAIX,GAAI,MAAM,QAAQA,CAAG,EAAG,CACpB,GAAI,CAACJ,EAAUI,CAAG,EACd,MAAM,IAAI,MAAM,iCAAmCA,CAAG,EAG1D,OAAO,IAAI,WAAWA,CAAG,CAC7B,CAGA,GAAIN,EAASM,EAAI,MAAM,GAAKJ,EAAUI,CAAG,EACrC,OAAO,IAAI,WAAWA,CAAG,EAG7B,MAAM,IAAI,MAAM,+BAA+B,CACnD,CAEA,SAASE,EAAYC,EAAQ,CACzB,OAAO,IAAI,WAAWA,CAAM,CAChC,CAEA,SAASC,EAAUC,EAAaC,EAAaC,EAAaC,EAAaC,EAAW,EAC1ED,GAAe,MAAQC,GAAa,QAChCJ,EAAY,MACZA,EAAcA,EAAY,MAAMG,EAAaC,CAAS,EAEtDJ,EAAc,MAAM,UAAU,MAAM,KAAKA,EAAaG,EAAaC,CAAS,GAGpFH,EAAY,IAAID,EAAaE,CAAW,CAC5C,CAIA,IAAIG,EAAe,UAAW,CAC1B,SAASC,EAAQC,EAAM,CACnB,IAAIC,EAAS,CAAC,EAAGf,EAAI,EAErB,IADAc,EAAO,UAAUA,CAAI,EACdd,EAAIc,EAAK,QAAQ,CACpB,IAAIE,EAAIF,EAAK,WAAWd,GAAG,EAGvBgB,IAAM,IACND,EAAO,KAAK,SAASD,EAAK,OAAOd,EAAG,CAAC,EAAG,EAAE,CAAC,EAC3CA,GAAK,GAILe,EAAO,KAAKC,CAAC,CAErB,CAEA,OAAOf,EAAYc,CAAM,CAC7B,CAEA,SAASE,EAAUC,EAAO,CAGtB,QAFIH,EAAS,CAAC,EAAGf,EAAI,EAEdA,EAAIkB,EAAM,QAAQ,CACrB,IAAIF,EAAIE,EAAMlB,GAEVgB,EAAI,KACJD,EAAO,KAAK,OAAO,aAAaC,CAAC,CAAC,EAClChB,KACOgB,EAAI,KAAOA,EAAI,KACtBD,EAAO,KAAK,OAAO,cAAeC,EAAI,KAAS,EAAME,EAAMlB,EAAI,GAAK,EAAK,CAAC,EAC1EA,GAAK,IAELe,EAAO,KAAK,OAAO,cAAeC,EAAI,KAAS,IAAQE,EAAMlB,EAAI,GAAK,KAAS,EAAMkB,EAAMlB,EAAI,GAAK,EAAK,CAAC,EAC1GA,GAAK,EAEb,CAEA,OAAOe,EAAO,KAAK,EAAE,CACzB,CAEA,MAAO,CACH,QAASF,EACT,UAAWI,CACf,CACJ,EAAG,EAECE,EAAc,UAAW,CACzB,SAASN,EAAQC,EAAM,CAEnB,QADIC,EAAS,CAAC,EACLf,EAAI,EAAGA,EAAIc,EAAK,OAAQd,GAAK,EAClCe,EAAO,KAAK,SAASD,EAAK,OAAOd,EAAG,CAAC,EAAG,EAAE,CAAC,EAG/C,OAAOe,CACX,CAGA,IAAIK,EAAM,mBAEV,SAASH,EAAUC,EAAO,CAElB,QADIH,EAAS,CAAC,EACLf,EAAI,EAAGA,EAAIkB,EAAM,OAAQlB,IAAK,CACnC,IAAIqB,EAAIH,EAAMlB,GACde,EAAO,KAAKK,GAAKC,EAAI,MAAS,GAAKD,EAAIC,EAAI,GAAK,CACpD,CACA,OAAON,EAAO,KAAK,EAAE,CAC7B,CAEA,MAAO,CACH,QAASF,EACT,UAAWI,CACf,CACJ,EAAG,EAICK,EAAiB,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAGxCC,EAAO,CAAC,EAAM,EAAM,EAAM,EAAM,GAAM,GAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAI,EAG1LC,EAAI,CAAC,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,EAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAI,EACngDC,EAAI,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAI,EAGngDC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EACpgGC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EACpgGC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EACpgGC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,SAAU,EAGpgGC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,SAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAU,EAGpgGC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAU,EACpgGC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UA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", - "names": ["require_finish", "__commonJSMin", "exports", "module", "item", "transform", "details", "resolve", "reject", "finished", "done", "err", "require_response", "__commonJSMin", "exports", "module", "http", "headerEnd", "BODY", "HEADERS", "getString", "data", "addData", "stream", "ServerlessResponse", "res", "response", "headers", "key", "value", "statusCode", "reason", "obj", "name", "method", "encoding", "cb", "string", "index", "remainder", "require_get_framework", "__commonJSMin", "exports", "module", "http", "Response", "common", "cb", "request", "response", "app", "req", "res", "url", "method", "headers", "body", "require_clean_up_event", "__commonJSMin", "exports", "module", "removeBasePath", "path", "basePath", "basePathIndex", "isString", "value", "specialDecodeURIComponent", "decoded", "recursiveURLDecode", "decodedArray", "index", "decodedObject", "key", "evt", "options", "event", "require_request", "__commonJSMin", "exports", "module", "http", "method", "url", "headers", "body", "remoteAddress", "require_create_request", "__commonJSMin", "exports", "module", "URL", "Request", "requestMethod", "event", "requestRemoteAddress", "requestHeaders", "initialHeader", "headers", "key", "requestBody", "type", "requestUrl", "query", "context", "options", "method", "remoteAddress", "body", "url", "header", "requestId", "req", "require_is_binary", "__commonJSMin", "exports", "module", "BINARY_ENCODINGS", "BINARY_CONTENT_TYPES", "isBinaryEncoding", "headers", "contentEncoding", "value", "binaryEncoding", "isBinaryContent", "options", "contentTypes", "candidate", "contentType", "require_sanitize_headers", "__commonJSMin", "exports", "module", "headers", "memo", "key", "value", "require_format_response", "__commonJSMin", "exports", "module", "isBinary", "Response", "sanitizeHeaders", "event", "response", "options", "statusCode", "headers", "multiValueHeaders", "cookies", "isBase64Encoded", "encoding", "body", "raw", "parsed", "i", "size", "value", "formattedResponse", "require_aws", "__commonJSMin", "exports", "module", "cleanUpEvent", "createRequest", "formatResponse", "options", "getResponse", "event_", "context", "event", "request", "response", "require_clean_up_request", "__commonJSMin", "exports", "module", "getUrl", "requestPath", "url", "getRequestContext", "request", "requestContext", "forwardedIp", "clientIp", "ip", "req", "options", "basePathIndex", "require_create_request", "__commonJSMin", "exports", "module", "url", "Request", "requestHeaders", "request", "headers", "key", "requestBody", "type", "method", "query", "body", "req", "require_is_binary", "__commonJSMin", "exports", "module", "BINARY_ENCODINGS", "BINARY_CONTENT_TYPES", "isBinaryEncoding", "headers", "contentEncoding", "value", "binaryEncoding", "isBinaryContent", "options", "contentTypes", "candidate", "contentType", "require_sanitize_headers", "__commonJSMin", "exports", "module", "setCookieVariations", "headers", "memo", "key", "value", "cookie", "i", "require_format_response", "__commonJSMin", "exports", "module", "isBinary", "Response", "sanitizeHeaders", "response", "options", "statusCode", "headers", "isBase64Encoded", "encoding", "body", "require_azure", "__commonJSMin", "exports", "module", "cleanupRequest", "createRequest", "formatResponse", "options", "getResponse", "context", "req", "event", "request", "response", "require_get_provider", "__commonJSMin", "exports", "module", "aws", "azure", "providers", "options", "provider", "require_serverless_http", "__commonJSMin", "exports", "module", "finish", "getFramework", "getProvider", "defaultOptions", "app", "opts", "options", "framework", "request", "context", "response", "require_depd", "__commonJSMin", "exports", "module", "relative", "depd", "basePath", "containsNamespace", "str", "namespace", "vals", "ns", "val", "convertDataDescriptorToAccessor", "obj", "prop", "message", "descriptor", "value", "createArgumentsString", "arity", "i", "createStackString", "stack", "getStack", "site", "callSiteLocation", "file", "deprecate", "log", "isignored", "istraced", "wrapfunction", "wrapproperty", "eehaslisteners", "emitter", "type", "count", "haslisteners", "caller", "callFile", "callSite", "depSite", "seen", "key", "msg", "defaultMessage", "err", "DeprecationError", "format", "formatColor", "formatPlain", "output", "line", "colm", "funcName", "formatLocation", "context", "typeName", "timestamp", "formatted", "limit", "prep", "prepareObjectStackTrace", "fn", "args", "deprecatedfn", "get", "set", "error", "stackString", "require_bytes", "__commonJSMin", "exports", "module", "bytes", "format", "parse", "formatThousandsRegExp", "formatDecimalsRegExp", "map", "parseRegExp", "value", "options", "mag", "thousandsSeparator", "unitSeparator", "decimalPlaces", "fixedDecimals", "unit", "val", "str", "s", "i", "results", "floatValue", "require_content_type", "__commonJSMin", "exports", "PARAM_REGEXP", "TEXT_REGEXP", "TOKEN_REGEXP", "QESC_REGEXP", "QUOTE_REGEXP", "TYPE_REGEXP", "format", "parse", "obj", "parameters", "type", "string", "param", "params", "i", "qstring", "header", "getcontenttype", "index", "ContentType", "key", "match", "value", "val", "str", "require_setprototypeof", "__commonJSMin", "exports", "module", "setProtoOf", "mixinProperties", "obj", "proto", "prop", "require_statuses", "__commonJSMin", "exports", "module", "codes", "status", "createMessageToStatusCodeMap", "createStatusCodeList", "map", "code", "message", "getStatusCode", "msg", "getStatusMessage", "n", "require_inherits_browser", "__commonJSMin", "exports", "module", "ctor", "superCtor", "TempCtor", "require_inherits", "__commonJSMin", "exports", "module", "util", "require_toidentifier", "__commonJSMin", "exports", "module", "toIdentifier", "str", "token", "require_http_errors", "__commonJSMin", "exports", "module", "deprecate", "setPrototypeOf", "statuses", "inherits", "toIdentifier", "createError", "createHttpErrorConstructor", "createIsHttpErrorFunction", "populateConstructorExports", "codeClass", "status", "err", "msg", "props", "arg", "type", "HttpError", "key", "createClientErrorConstructor", "name", "code", "className", "toClassName", "ClientError", "message", "nameFunc", "val", "createServerErrorConstructor", "ServerError", "func", "desc", "codes", "CodeError", "require_ms", "__commonJSMin", "exports", "module", "s", "m", "h", "d", "y", "val", "options", "type", "parse", "fmtLong", "fmtShort", "str", "match", "n", "ms", "plural", "name", "require_debug", "__commonJSMin", "exports", "module", "createDebug", "coerce", "disable", "enable", "enabled", "prevTime", "selectColor", "namespace", "hash", "i", "debug", "self", "curr", "ms", "args", "index", "match", "format", "formatter", "val", "logFn", "namespaces", "split", "len", "name", "require_browser", "__commonJSMin", "exports", "module", "log", "formatArgs", "save", "load", "useColors", "localstorage", "v", "err", "args", "c", "index", "lastC", "match", "namespaces", "r", "require_node", "__commonJSMin", "exports", "module", "tty", "util", "init", "log", "formatArgs", "save", "load", "useColors", "key", "obj", "prop", "_", "k", "val", "fd", "stream", "createWritableStdioStream", "v", "str", "args", "name", "c", "prefix", "namespaces", "tty_wrap", "fs", "net", "debug", "keys", "i", "require_src", "__commonJSMin", "exports", "module", "require_destroy", "__commonJSMin", "exports", "module", "EventEmitter", "ReadStream", "Stream", "Zlib", "destroy", "stream", "suppress", "isFsReadStream", "destroyReadStream", "isZlibStream", "destroyZlibStream", "hasDestroy", "isEventEmitter", "noop", "onOpenClose", "closeZlibStream", "prop", "onDrainClearBinding", "val", "require_safer", "__commonJSMin", "exports", "module", "buffer", "Buffer", "safer", "key", "Safer", "value", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_bom_handling", "__commonJSMin", "exports", "BOMChar", "PrependBOMWrapper", "encoder", "options", "str", "StripBOMWrapper", "decoder", "buf", "res", "require_internal", "__commonJSMin", "exports", "module", "Buffer", "InternalCodec", "codecOptions", "iconv", "InternalEncoderBase64", "InternalEncoderCesu8", "InternalDecoderCesu8", "InternalEncoder", "InternalDecoder", "StringDecoder", "options", "codec", "str", "completeQuads", "buf", "bufIdx", "i", "charCode", "acc", "contBytes", "accBytes", "res", "curByte", "require_utf16", "__commonJSMin", "exports", "Buffer", "Utf16BECodec", "Utf16BEEncoder", "Utf16BEDecoder", "str", "buf", "i", "tmp", "buf2", "j", "Utf16Codec", "codecOptions", "iconv", "Utf16Encoder", "Utf16Decoder", "options", "codec", "encoding", "detectEncoding", "res", "trail", "defaultEncoding", "enc", "asciiCharsLE", "asciiCharsBE", "_len", "require_utf7", "__commonJSMin", "exports", "Buffer", "Utf7Codec", "codecOptions", "iconv", "Utf7Encoder", "Utf7Decoder", "nonDirectChars", "options", "codec", "str", "chunk", "base64Regex", "base64Chars", "i", "plusChar", "minusChar", "andChar", "buf", "res", "lastI", "inBase64", "base64Accum", "b64str", "canBeDecoded", "Utf7IMAPCodec", "Utf7IMAPEncoder", "Utf7IMAPDecoder", "base64AccumIdx", "bufIdx", "uChar", "base64IMAPChars", "require_sbcs_codec", "__commonJSMin", "exports", "Buffer", "SBCSCodec", "codecOptions", "iconv", "asciiString", "i", "encodeBuf", "SBCSEncoder", "SBCSDecoder", "options", "codec", "str", "buf", "decodeBuf", "newBuf", "idx1", "idx2", "require_sbcs_data", "__commonJSMin", "exports", "module", "require_sbcs_data_generated", "__commonJSMin", "exports", "module", "require_dbcs_codec", "__commonJSMin", "exports", "Buffer", "DBCSCodec", "UNASSIGNED", "GB18030_CODE", "SEQ_START", "NODE_START", "UNASSIGNED_NODE", "DEF_CHAR", "i", "codecOptions", "iconv", "mappingTable", "skipEncodeChars", "val", "j", "uChar", "thirdByteNodeIdx", "thirdByteNode", "fourthByteNodeIdx", "fourthByteNode", "secondByteNodeIdx", "secondByteNode", "DBCSEncoder", "DBCSDecoder", "addr", "bytes", "node", "chunk", "curAddr", "writeTable", "k", "part", "l", "code", "codeTrail", "len", "seq", "m", "charCode", "uCode", "high", "dbcsCode", "bucket", "low", "oldVal", "nodeIdx", "prefix", "mbCode", "options", "codec", "str", "newBuf", "leadSurrogate", "seqObj", "nextChar", "resCode", "subtable", "idx", "findIdx", "buf", "prevBuf", "prevBufOffset", "seqStart", "curByte", "curSeq", "ptr", "uCodeLead", "ret", "table", "r", "mid", "require_dbcs_data", "__commonJSMin", "exports", "module", "require_encodings", "__commonJSMin", "exports", "module", "modules", "i", "enc", "require_streams", "__commonJSMin", "exports", "module", "Buffer", "Transform", "iconv", "encoding", "options", "IconvLiteEncoderStream", "IconvLiteDecoderStream", "conv", "chunk", "done", "res", "e", "cb", "chunks", "require_extend_node", "__commonJSMin", "exports", "module", "Buffer", "iconv", "original", "nodeNativeEncodings", "enc", "SlowBuffer", "encoding", "start", "end", "string", "offset", "length", "swap", "remaining", "buf", "str", "_offset", "_length", "_encoding", "Readable", "options", "require_lib", "__commonJSMin", "exports", "module", "Buffer", "bomHandling", "iconv", "str", "encoding", "options", "encoder", "res", "trail", "buf", "decoder", "enc", "codecOptions", "codec", "codecDef", "key", "nodeVer", "nodeVerArr", "require_unpipe", "__commonJSMin", "exports", "module", "unpipe", "hasPipeDataListeners", "stream", "listeners", "i", "listener", "require_raw_body", "__commonJSMin", "exports", "module", "asyncHooks", "tryRequireAsyncHooks", "bytes", "createError", "iconv", "unpipe", "getRawBody", "ICONV_ENCODING_MESSAGE_REGEXP", "getDecoder", "encoding", "stream", "options", "callback", "done", "opts", "limit", "length", "readStream", "wrap", "resolve", "reject", "err", "buf", "halt", "complete", "sync", "state", "received", "decoder", "buffer", "onAborted", "cleanup", "onData", "onEnd", "args", "i", "invokeCallback", "chunk", "string", "fn", "res", "require_ee_first", "__commonJSMin", "exports", "module", "first", "stuff", "done", "cleanups", "i", "arr", "ee", "j", "event", "fn", "listener", "callback", "cleanup", "x", "thunk", "arg1", "args", "err", "require_on_finished", "__commonJSMin", "exports", "module", "onFinished", "isFinished", "asyncHooks", "tryRequireAsyncHooks", "first", "defer", "fn", "msg", "listener", "attachListener", "wrap", "socket", "attachFinishedListener", "callback", "eeMsg", "eeSocket", "finished", "onFinish", "error", "onSocket", "patchAssignSocket", "attached", "createListener", "err", "queue", "res", "assignSocket", "require_read", "__commonJSMin", "exports", "module", "createError", "destroy", "getBody", "iconv", "onFinished", "unpipe", "zlib", "read", "req", "res", "next", "parse", "debug", "options", "length", "opts", "stream", "encoding", "verify", "contentstream", "err", "error", "body", "_error", "dump", "str", "inflate", "callback", "require_media_typer", "__commonJSMin", "exports", "paramRegExp", "textRegExp", "tokenRegExp", "qescRegExp", "quoteRegExp", "subtypeNameRegExp", "typeNameRegExp", "typeRegExp", "format", "parse", "obj", "parameters", "subtype", "suffix", "type", "string", "param", "params", "i", "qstring", "getcontenttype", "index", "key", "match", "splitType", "value", "val", "str", "require_mime_db", "__commonJSMin", "exports", "module", "require_mime_types", "__commonJSMin", "exports", "db", "extname", "EXTRACT_TYPE_REGEXP", "TEXT_TYPE_REGEXP", "charset", "contentType", "extension", "lookup", "populateMaps", "type", "match", "mime", "str", "exts", "path", "extensions", "types", "preference", "i", "from", "to", "require_type_is", "__commonJSMin", "exports", "module", "typer", "mime", "typeofrequest", "typeis", "hasbody", "normalize", "mimeMatch", "value", "types_", "i", "types", "val", "tryNormalizeType", "type", "req", "expected", "actual", "actualParts", "expectedParts", "normalizeType", "require_json", "__commonJSMin", "exports", "module", "bytes", "contentType", "createError", "debug", "read", "typeis", "json", "FIRST_CHAR_REGEXP", "options", "opts", "limit", "inflate", "reviver", "strict", "type", "verify", "shouldParse", "typeChecker", "parse", "body", "first", "firstchar", "createStrictSyntaxError", "e", "normalizeJsonSyntaxError", "req", "res", "next", "charset", "getCharset", "str", "char", "index", "partial", "match", "error", "obj", "keys", "i", "key", "require_raw", "__commonJSMin", "exports", "module", "bytes", "debug", "read", "typeis", "raw", "options", "opts", "inflate", "limit", "type", "verify", "shouldParse", "typeChecker", "parse", "buf", "req", "res", "next", "require_text", "__commonJSMin", "exports", "module", "bytes", "contentType", "debug", "read", "typeis", "text", "options", "opts", "defaultCharset", "inflate", "limit", "type", "verify", "shouldParse", "typeChecker", "parse", "buf", "req", "res", "next", "charset", "getCharset", "require_shams", "__commonJSMin", "exports", "module", "obj", "sym", "symObj", "symVal", "syms", "descriptor", "require_has_symbols", "__commonJSMin", "exports", "module", "origSymbol", "hasSymbolSham", "require_implementation", "__commonJSMin", "exports", "module", "ERROR_MESSAGE", "slice", "toStr", "funcType", "that", "target", "args", "bound", "binder", "result", "boundLength", "boundArgs", "i", "Empty", "require_function_bind", "__commonJSMin", "exports", "module", "implementation", "require_src", "__commonJSMin", "exports", "module", "bind", "require_get_intrinsic", "__commonJSMin", "exports", "module", "undefined", "$SyntaxError", "$Function", "$TypeError", "getEvalledConstructor", "expressionSyntax", "$gOPD", "throwTypeError", "ThrowTypeError", "hasSymbols", "getProto", "x", "needsEval", "TypedArray", "INTRINSICS", "e", "errorProto", "doEval", "name", "value", "fn", "gen", "LEGACY_ALIASES", "bind", "hasOwn", "$concat", "$spliceApply", "$replace", "$strSlice", "$exec", "rePropName", "reEscapeChar", "stringToPath", "string", "first", "last", "result", "match", "number", "quote", "subString", "getBaseIntrinsic", "allowMissing", "intrinsicName", "alias", "parts", "intrinsicBaseName", "intrinsic", "intrinsicRealName", "skipFurtherCaching", "i", "isOwn", "part", "desc", "require_call_bind", "__commonJSMin", "exports", "module", "bind", "GetIntrinsic", "$apply", "$call", "$reflectApply", "$gOPD", "$defineProperty", "$max", "originalFunction", "func", "desc", "applyBind", "require_callBound", "__commonJSMin", "exports", "module", "GetIntrinsic", "callBind", "$indexOf", "name", "allowMissing", "intrinsic", "require_util_inspect", "__commonJSMin", "exports", "module", "require_object_inspect", "__commonJSMin", "exports", "module", "hasMap", "mapSizeDescriptor", "mapSize", "mapForEach", "hasSet", "setSizeDescriptor", "setSize", "setForEach", "hasWeakMap", "weakMapHas", "hasWeakSet", "weakSetHas", "hasWeakRef", "weakRefDeref", "booleanValueOf", "objectToString", "functionToString", "$match", "$slice", "$replace", "$toUpperCase", "$toLowerCase", "$test", "$concat", "$join", "$arrSlice", "$floor", "bigIntValueOf", "gOPS", "symToString", "hasShammedSymbols", "toStringTag", "isEnumerable", "gPO", "O", "addNumericSeparator", "num", "str", "sepRegex", "int", "intStr", "dec", "utilInspect", "inspectCustom", "inspectSymbol", "isSymbol", "inspect_", "obj", "options", "depth", "seen", "opts", "has", "customInspect", "numericSeparator", "inspectString", "bigIntStr", "maxDepth", "isArray", "indent", "getIndent", "indexOf", "inspect", "value", "from", "noIndent", "newOpts", "isRegExp", "name", "nameOf", "keys", "arrObjKeys", "symString", "markBoxed", "isElement", "s", "attrs", "i", "wrapQuotes", "quote", "xs", "singleLineValues", "indentedJoin", "isError", "parts", "isMap", "mapParts", "key", "collectionOf", "isSet", "setParts", "isWeakMap", "weakCollectionOf", "isWeakSet", "isWeakRef", "isNumber", "isBigInt", "isBoolean", "isString", "isDate", "ys", "isPlainObject", "protoTag", "stringTag", "toStr", "constructorTag", "tag", "defaultStyle", "quoteChar", "hasOwn", "f", "m", "x", "l", "remaining", "trailer", "lowbyte", "c", "n", "type", "size", "entries", "joinedEntries", "baseIndent", "lineJoiner", "isArr", "syms", "symMap", "k", "j", "require_side_channel", "__commonJSMin", "exports", "module", "GetIntrinsic", "callBound", "inspect", "$TypeError", "$WeakMap", "$Map", "$weakMapGet", "$weakMapSet", "$weakMapHas", "$mapGet", "$mapSet", "$mapHas", "listGetNode", "list", "key", "prev", "curr", "listGet", "objects", "node", "listSet", "value", "listHas", "$wm", "$m", "$o", "channel", "require_formats", "__commonJSMin", "exports", "module", "replace", "percentTwenties", "Format", "value", "require_utils", "__commonJSMin", "exports", "module", "formats", "has", "isArray", "hexTable", "array", "i", "compactQueue", "queue", "item", "obj", "compacted", "j", "arrayToObject", "source", "options", "merge", "target", "mergeTarget", "targetItem", "acc", "key", "value", "assign", "decode", "str", "decoder", "charset", "strWithoutPlus", "encode", "defaultEncoder", "kind", "format", "string", "$0", "out", "c", "compact", "refs", "keys", "val", "isRegExp", "isBuffer", "combine", "a", "b", "maybeMap", "fn", "mapped", "require_stringify", "__commonJSMin", "exports", "module", "getSideChannel", "utils", "formats", "has", "arrayPrefixGenerators", "prefix", "key", "isArray", "split", "push", "pushToArray", "arr", "valueOrArray", "toISO", "defaultFormat", "defaults", "date", "isNonNullishPrimitive", "v", "sentinel", "stringify", "object", "generateArrayPrefix", "commaRoundTrip", "strictNullHandling", "skipNulls", "encoder", "filter", "sort", "allowDots", "serializeDate", "format", "formatter", "encodeValuesOnly", "charset", "sideChannel", "obj", "tmpSc", "step", "findFlag", "pos", "value", "keyValue", "valuesArray", "valuesJoined", "i", "values", "objKeys", "keys", "adjustedPrefix", "j", "keyPrefix", "valueSideChannel", "normalizeStringifyOptions", "opts", "options", "arrayFormat", "joined", "require_parse", "__commonJSMin", "exports", "module", "utils", "has", "isArray", "defaults", "interpretNumericEntities", "str", "$0", "numberStr", "parseArrayValue", "val", "options", "isoSentinel", "charsetSentinel", "parseValues", "obj", "cleanStr", "limit", "parts", "skipIndex", "i", "charset", "part", "bracketEqualsPos", "pos", "key", "encodedVal", "parseObject", "chain", "valuesParsed", "leaf", "root", "cleanRoot", "index", "parseKeys", "givenKey", "brackets", "child", "segment", "parent", "keys", "normalizeParseOptions", "opts", "tempObj", "newObj", "require_lib", "__commonJSMin", "exports", "module", "stringify", "parse", "formats", "require_urlencoded", "__commonJSMin", "exports", "module", "bytes", "contentType", "createError", "debug", "deprecate", "read", "typeis", "urlencoded", "parsers", "options", "opts", "extended", "inflate", "limit", "type", "verify", "queryparse", "extendedparser", "simpleparser", "shouldParse", "typeChecker", "parse", "body", "req", "res", "next", "charset", "getCharset", "parameterLimit", "parser", "paramCount", "parameterCount", "arrayLimit", "count", "index", "name", "mod", "require_body_parser", "__commonJSMin", "exports", "module", "deprecate", "parsers", "bodyParser", "createParserGetter", "options", "opts", "_urlencoded", "_json", "req", "res", "next", "err", "name", "loadParser", "parserName", "parser", "require_merge_descriptors", "__commonJSMin", "exports", "module", "merge", "hasOwnProperty", "dest", "src", "redefine", "name", "descriptor", "require_ms", "__commonJSMin", "exports", "module", "s", "m", "h", "d", "y", "val", "options", "type", "parse", "fmtLong", "fmtShort", "str", "match", "n", "ms", "plural", "name", "require_debug", "__commonJSMin", "exports", "module", "createDebug", "coerce", "disable", "enable", "enabled", "prevTime", "selectColor", "namespace", "hash", "i", "debug", "self", "curr", "ms", "args", "index", "match", "format", "formatter", "val", "logFn", "namespaces", "split", "len", "name", "require_browser", "__commonJSMin", "exports", "module", "log", "formatArgs", "save", "load", "useColors", "localstorage", "v", "err", "args", "c", "index", "lastC", "match", "namespaces", "r", "require_node", "__commonJSMin", "exports", "module", "tty", "util", "init", "log", "formatArgs", "save", "load", "useColors", "key", "obj", "prop", "_", "k", "val", "fd", "stream", "createWritableStdioStream", "v", "str", "args", "name", "c", "prefix", "namespaces", "tty_wrap", "fs", "net", "debug", "keys", "i", "require_src", "__commonJSMin", "exports", "module", "require_encodeurl", "__commonJSMin", "exports", "module", "encodeUrl", "ENCODE_CHARS_REGEXP", "UNMATCHED_SURROGATE_PAIR_REGEXP", "UNMATCHED_SURROGATE_PAIR_REPLACE", "url", "require_escape_html", "__commonJSMin", "exports", "module", "matchHtmlRegExp", "escapeHtml", "string", "str", "match", "escape", "html", "index", "lastIndex", "require_parseurl", "__commonJSMin", "exports", "module", "url", "parse", "Url", "parseurl", "originalurl", "req", "parsed", "fresh", "fastparse", "str", "pathname", "query", "search", "parsedUrl", "require_finalhandler", "__commonJSMin", "exports", "module", "debug", "encodeUrl", "escapeHtml", "onFinished", "parseUrl", "statuses", "unpipe", "DOUBLE_SPACE_REGEXP", "NEWLINE_REGEXP", "defer", "fn", "isFinished", "createHtmlDocument", "message", "body", "finalhandler", "req", "res", "options", "opts", "env", "onerror", "err", "headers", "msg", "status", "headersSent", "getErrorStatusCode", "getResponseStatusCode", "getErrorHeaders", "getErrorMessage", "getResourceName", "send", "keys", "i", "key", "write", "setHeaders", "require_ms", "__commonJSMin", "exports", "module", "s", "m", "h", "d", "y", "val", "options", "type", "parse", "fmtLong", "fmtShort", "str", "match", "n", "ms", "plural", "name", "require_debug", "__commonJSMin", "exports", "module", "createDebug", "coerce", "disable", "enable", "enabled", "prevTime", "selectColor", "namespace", "hash", "i", "debug", "self", "curr", "ms", "args", "index", "match", "format", "formatter", "val", "logFn", "namespaces", "split", "len", "name", "require_browser", "__commonJSMin", "exports", "module", "log", "formatArgs", "save", "load", "useColors", "localstorage", "v", "err", "args", "c", "index", "lastC", "match", "namespaces", "r", "require_node", "__commonJSMin", "exports", "module", "tty", "util", "init", "log", "formatArgs", "save", "load", "useColors", "key", "obj", "prop", "_", "k", "val", "fd", "stream", "createWritableStdioStream", "v", "str", "args", "name", "c", "prefix", "namespaces", "tty_wrap", "fs", "net", "debug", "keys", "i", "require_src", "__commonJSMin", "exports", "module", "require_array_flatten", "__commonJSMin", "exports", "module", "arrayFlatten", "flattenWithDepth", "array", "result", "depth", "i", "value", "flattenForever", "require_path_to_regexp", "__commonJSMin", "exports", "module", "pathtoRegexp", "MATCHING_GROUP_REGEXP", "path", "keys", "options", "strict", "end", "flags", "extraOffset", "keysOffset", "i", "name", "m", "value", "match", "slash", "format", "key", "capture", "star", "optional", "offset", "result", "index", "len", "escapeCount", "require_layer", "__commonJSMin", "exports", "module", "pathRegexp", "debug", "hasOwnProperty", "Layer", "path", "options", "fn", "opts", "error", "req", "res", "next", "err", "match", "decode_param", "keys", "params", "i", "key", "prop", "val", "require_methods", "__commonJSMin", "exports", "module", "http", "getCurrentNodeMethods", "getBasicNodeMethods", "method", "require_route", "__commonJSMin", "exports", "module", "debug", "flatten", "Layer", "methods", "slice", "toString", "Route", "path", "method", "name", "i", "req", "res", "done", "idx", "stack", "sync", "next", "err", "layer", "handles", "handle", "type", "msg", "require_utils_merge", "__commonJSMin", "exports", "module", "a", "b", "key", "require_router", "__commonJSMin", "exports", "module", "Route", "Layer", "methods", "mixin", "debug", "deprecate", "flatten", "parseUrl", "setPrototypeOf", "objectRegExp", "slice", "toString", "proto", "options", "opts", "router", "req", "res", "next", "name", "fn", "params", "len", "ret", "i", "out", "self", "idx", "protohost", "getProtohost", "removed", "slashAdded", "sync", "paramcalled", "stack", "parentParams", "parentUrl", "done", "restore", "wrap", "old", "err", "sendOptionsResponse", "layerError", "path", "getPathname", "layer", "match", "route", "matchLayer", "method", "has_method", "appendMethods", "mergeParams", "layerPath", "trim_prefix", "c", "called", "keys", "paramIndex", "key", "paramVal", "paramCallbacks", "paramCalled", "param", "paramCallback", "e", "offset", "arg", "callbacks", "gettype", "list", "addition", "url", "searchIndex", "pathLength", "fqdnIndex", "obj", "type", "parent", "o", "props", "vals", "body", "args", "require_init", "__commonJSMin", "exports", "setPrototypeOf", "app", "req", "res", "next", "require_query", "__commonJSMin", "exports", "module", "merge", "parseUrl", "qs", "options", "opts", "queryparse", "req", "res", "next", "val", "require_view", "__commonJSMin", "exports", "module", "debug", "path", "fs", "dirname", "basename", "extname", "join", "resolve", "View", "name", "options", "opts", "fileName", "mod", "fn", "roots", "root", "loc", "dir", "file", "callback", "ext", "stat", "tryStat", "require_safe_buffer", "__commonJSMin", "exports", "module", "buffer", "Buffer", "copyProps", "src", "dst", "key", "SafeBuffer", "arg", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_content_disposition", "__commonJSMin", "exports", "module", "contentDisposition", "parse", "basename", "Buffer", "ENCODE_URL_ATTR_CHAR_REGEXP", "HEX_ESCAPE_REGEXP", "HEX_ESCAPE_REPLACE_REGEXP", "NON_LATIN1_REGEXP", "QESC_REGEXP", "QUOTE_REGEXP", "PARAM_REGEXP", "TEXT_REGEXP", "TOKEN_REGEXP", "EXT_VALUE_REGEXP", "DISPOSITION_TYPE_REGEXP", "filename", "options", "opts", "type", "params", "createparams", "format", "ContentDisposition", "fallback", "name", "isQuotedString", "fallbackName", "getlatin1", "hasFallback", "obj", "parameters", "string", "param", "i", "val", "ustring", "qstring", "decodefield", "str", "match", "charset", "encoded", "value", "binary", "pdecode", "index", "key", "names", "hex", "pencode", "char", "require_ms", "__commonJSMin", "exports", "module", "s", "m", "h", "d", "y", "val", "options", "type", "parse", "fmtLong", "fmtShort", "str", "match", "n", "ms", "plural", "name", "require_debug", "__commonJSMin", "exports", "module", "createDebug", "coerce", "disable", "enable", "enabled", "prevTime", "selectColor", "namespace", "hash", "i", "debug", "self", "curr", "ms", "args", "index", "match", "format", "formatter", "val", "logFn", "namespaces", "split", "len", "name", "require_browser", "__commonJSMin", "exports", "module", "log", "formatArgs", "save", "load", "useColors", "localstorage", "v", "err", "args", "c", "index", "lastC", "match", "namespaces", "r", "require_node", "__commonJSMin", "exports", "module", "tty", "util", "init", "log", "formatArgs", "save", "load", "useColors", "key", "obj", "prop", "_", "k", "val", "fd", "stream", "createWritableStdioStream", "v", "str", "args", "name", "c", "prefix", "namespaces", "tty_wrap", "fs", "net", "debug", "keys", "i", "require_src", "__commonJSMin", "exports", "module", "require_etag", "__commonJSMin", "exports", "module", "etag", "crypto", "Stats", "toString", "entitytag", "entity", "hash", "len", "options", "isStats", "isstats", "weak", "tag", "stattag", "obj", "stat", "mtime", "size", "require_fresh", "__commonJSMin", "exports", "module", "CACHE_CONTROL_NO_CACHE_REGEXP", "fresh", "reqHeaders", "resHeaders", "modifiedSince", "noneMatch", "cacheControl", "etag", "etagStale", "matches", "parseTokenList", "i", "match", "lastModified", "modifiedStale", "parseHttpDate", "date", "timestamp", "str", "end", "list", "start", "len", "require_mime", "__commonJSMin", "exports", "module", "path", "fs", "Mime", "map", "type", "exts", "i", "file", "content", "lines", "line", "fields", "fallback", "ext", "mimeType", "mime", "require_ms", "__commonJSMin", "exports", "module", "s", "m", "h", "d", "w", "y", "val", "options", "type", "parse", "fmtLong", "fmtShort", "str", "match", "n", "ms", "msAbs", "plural", "name", "isPlural", "require_range_parser", "__commonJSMin", "exports", "module", "rangeParser", "size", "str", "options", "index", "arr", "ranges", "i", "range", "start", "end", "combineRanges", "ordered", "mapWithIndex", "sortByRangeStart", "j", "current", "combined", "sortByRangeIndex", "mapWithoutIndex", "a", "b", "require_send", "__commonJSMin", "exports", "module", "createError", "debug", "deprecate", "destroy", "encodeUrl", "escapeHtml", "etag", "fresh", "fs", "mime", "ms", "onFinished", "parseRange", "path", "statuses", "Stream", "util", "extname", "join", "normalize", "resolve", "sep", "BYTES_RANGE_REGEXP", "MAX_MAXAGE", "UP_PATH_REGEXP", "send", "req", "options", "SendStream", "opts", "normalizeList", "val", "paths", "index", "maxAge", "status", "err", "hasListeners", "createHttpError", "res", "msg", "doc", "createHtmlDocument", "clearHeaders", "setHeaders", "match", "parseTokenList", "unmodifiedSince", "parseHttpDate", "lastModified", "statusCode", "error", "ifRange", "loc", "collapseLeadingSlashes", "root", "decode", "parts", "containsDotFile", "access", "stat", "len", "ranges", "offset", "headersSent", "bytes", "contentRange", "prop", "i", "self", "next", "p", "stream", "cleanup", "type", "charset", "cacheControl", "modified", "headers", "getHeaderNames", "str", "part", "size", "range", "title", "body", "emitter", "count", "name", "list", "date", "timestamp", "end", "start", "keys", "key", "require_forwarded", "__commonJSMin", "exports", "module", "forwarded", "req", "proxyAddrs", "parse", "socketAddr", "getSocketAddr", "addrs", "header", "end", "list", "start", "require_ipaddr", "__commonJSMin", "exports", "module", "expandIPv6", "ipaddr", "ipv4Part", "ipv4Regexes", "ipv6Part", "ipv6Regexes", "matchCIDR", "root", "zoneIndex", "first", "second", "partSize", "cidrBits", "part", "shift", "address", "rangeList", "defaultName", "k", "len", "rangeName", "rangeSubnets", "subnet", "IPv4", "octets", "octet", "other", "cidrRange", "ref", "cidr", "i", "stop", "zeros", "zerotable", "string", "match", "parseIntAuto", "value", "results", "IPv6", "parts", "zoneId", "l", "bestMatchIndex", "bestMatchLength", "regex", "bytes", "addr", "suffix", "high", "low", "colonCount", "lastColon", "replacement", "replacementCount", "e", "error1", "maskLength", "parsed", "prefix", "filledOctetCount", "j", "error", "ipInterfaceOctets", "subnetMaskOctets", "length", "require_proxy_addr", "__commonJSMin", "exports", "module", "proxyaddr", "alladdrs", "compile", "forwarded", "ipaddr", "DIGIT_REGEXP", "isip", "parseip", "IP_RANGES", "req", "trust", "addrs", "i", "val", "compileTrust", "compileRangeSubnets", "arr", "rangeSubnets", "parseipNotation", "len", "trustNone", "trustSingle", "trustMulti", "note", "pos", "str", "ip", "max", "range", "parseNetmask", "netmask", "kind", "addr", "subnets", "ipconv", "subnet", "subnetip", "subnetkind", "subnetrange", "trusted", "subnetisipv4", "require_utils", "__commonJSMin", "exports", "Buffer", "contentDisposition", "contentType", "deprecate", "flatten", "mime", "etag", "proxyaddr", "qs", "querystring", "createETagGenerator", "path", "type", "acceptParams", "types", "ret", "i", "str", "index", "parts", "pms", "val", "fn", "newObject", "parseExtendedQueryString", "a", "v", "charset", "parsed", "options", "body", "encoding", "buf", "require_application", "__commonJSMin", "exports", "module", "finalhandler", "Router", "methods", "middleware", "query", "debug", "View", "http", "compileETag", "compileQueryParser", "compileTrust", "deprecate", "flatten", "merge", "resolve", "setPrototypeOf", "hasOwnProperty", "slice", "app", "trustProxyDefaultSymbol", "env", "parent", "req", "res", "callback", "router", "done", "logerror", "fn", "offset", "path", "arg", "fns", "next", "orig", "err", "ext", "extension", "name", "i", "setting", "val", "settings", "method", "route", "args", "options", "cache", "engines", "opts", "renderOptions", "view", "dirs", "tryRender", "server", "require_charset", "__commonJSMin", "exports", "module", "preferredCharsets", "simpleCharsetRegExp", "parseAcceptCharset", "accept", "accepts", "i", "j", "charset", "parseCharset", "str", "match", "q", "params", "p", "getCharsetPriority", "accepted", "index", "priority", "spec", "specify", "s", "provided", "isQuality", "compareSpecs", "getFullCharset", "priorities", "type", "a", "b", "require_encoding", "__commonJSMin", "exports", "module", "preferredEncodings", "simpleEncodingRegExp", "parseAcceptEncoding", "accept", "accepts", "hasIdentity", "minQuality", "j", "encoding", "parseEncoding", "specify", "str", "i", "match", "q", "params", "p", "getEncodingPriority", "accepted", "index", "priority", "spec", "s", "provided", "isQuality", "compareSpecs", "getFullEncoding", "priorities", "type", "a", "b", "require_language", "__commonJSMin", "exports", "module", "preferredLanguages", "simpleLanguageRegExp", "parseAcceptLanguage", "accept", "accepts", "i", "j", "language", "parseLanguage", "str", "match", "prefix", "suffix", "full", "q", "params", "p", "getLanguagePriority", "accepted", "index", "priority", "spec", "specify", "s", "provided", "isQuality", "compareSpecs", "getFullLanguage", "priorities", "type", "a", "b", "require_mediaType", "__commonJSMin", "exports", "module", "preferredMediaTypes", "simpleMediaTypeRegExp", "parseAccept", "accept", "accepts", "splitMediaTypes", "i", "j", "mediaType", "parseMediaType", "str", "match", "params", "q", "subtype", "type", "kvps", "splitParameters", "splitKeyValuePair", "pair", "key", "val", "value", "getMediaTypePriority", "accepted", "index", "priority", "spec", "specify", "p", "s", "keys", "k", "provided", "isQuality", "compareSpecs", "getFullType", "priorities", "a", "b", "quoteCount", "string", "count", "parameters", "require_negotiator", "__commonJSMin", "exports", "module", "preferredCharsets", "preferredEncodings", "preferredLanguages", "preferredMediaTypes", "Negotiator", "request", "available", "set", "require_accepts", "__commonJSMin", "exports", "module", "Negotiator", "mime", "Accepts", "req", "types_", "types", "i", "mimes", "extToMime", "accepts", "validMime", "first", "encodings_", "encodings", "charsets_", "charsets", "languages_", "languages", "type", "require_request", "__commonJSMin", "exports", "module", "accepts", "deprecate", "isIP", "typeis", "http", "fresh", "parseRange", "parse", "proxyaddr", "req", "name", "lc", "accept", "size", "options", "range", "defaultValue", "params", "body", "query", "args", "types", "arr", "i", "defineGetter", "proto", "trust", "header", "index", "addrs", "hostname", "offset", "subdomains", "host", "method", "res", "status", "val", "obj", "getter", "require_cookie_signature", "__commonJSMin", "exports", "crypto", "val", "secret", "str", "mac", "sha1", "require_cookie", "__commonJSMin", "exports", "parse", "serialize", "__toString", "fieldContentRegExp", "str", "options", "obj", "opt", "dec", "decode", "index", "eqIdx", "endIdx", "key", "val", "tryDecode", "name", "enc", "encode", "value", "maxAge", "expires", "isDate", "priority", "sameSite", "require_vary", "__commonJSMin", "exports", "module", "vary", "append", "FIELD_NAME_REGEXP", "header", "field", "fields", "parse", "j", "val", "vals", "i", "fld", "end", "list", "start", "len", "res", "require_response", "__commonJSMin", "exports", "module", "Buffer", "contentDisposition", "createError", "deprecate", "encodeUrl", "escapeHtml", "http", "isAbsolute", "onFinished", "path", "statuses", "merge", "sign", "normalizeType", "normalizeTypes", "setCharset", "cookie", "send", "extname", "mime", "resolve", "vary", "res", "charsetRegExp", "code", "links", "link", "rel", "body", "chunk", "encoding", "req", "type", "app", "etagFn", "generateETag", "len", "etag", "obj", "val", "escape", "replacer", "spaces", "stringify", "callback", "statusCode", "options", "done", "next", "opts", "pathname", "file", "sendfile", "err", "filename", "name", "headers", "keys", "i", "key", "fullPath", "ct", "v", "o", "field", "prev", "value", "charset", "secret", "signed", "maxAge", "url", "loc", "address", "status", "u", "view", "self", "str", "streaming", "onaborted", "ondirectory", "onerror", "onend", "onfile", "onfinish", "onstream", "k", "json", "c", "require_serve_static", "__commonJSMin", "exports", "module", "encodeUrl", "escapeHtml", "parseUrl", "resolve", "send", "url", "serveStatic", "root", "options", "opts", "fallthrough", "redirect", "setHeaders", "onDirectory", "createRedirectDirectoryListener", "createNotFoundDirectoryListener", "req", "res", "next", "forwardError", "originalUrl", "path", "stream", "err", "collapseLeadingSlashes", "str", "i", "createHtmlDocument", "title", "body", "loc", "doc", "require_express", "__commonJSMin", "exports", "module", "bodyParser", "EventEmitter", "mixin", "proto", "Route", "Router", "req", "res", "createApplication", "app", "next", "removedMiddlewares", "name", "require_express", "__commonJSMin", "exports", "module", "require_object_assign", "__commonJSMin", "exports", "module", "getOwnPropertySymbols", "hasOwnProperty", "propIsEnumerable", "toObject", "val", "shouldUseNative", "test1", "test2", "i", "order2", "n", "test3", "letter", "target", "source", "from", "to", "symbols", "s", "key", "require_lib", "__commonJSMin", "exports", "module", "assign", "vary", "defaults", "isString", "s", "isOriginAllowed", "origin", "allowedOrigin", "i", "configureOrigin", "options", "req", "requestOrigin", "headers", "isAllowed", "configureMethods", "methods", "configureCredentials", "configureAllowedHeaders", "allowedHeaders", "configureExposedHeaders", "configureMaxAge", "maxAge", "applyHeaders", "res", "n", "header", "cors", "next", "method", "middlewareWrapper", "o", "optionsCallback", "cb", "err", "corsOptions", "originCallback", "err2", "require_bn", "__commonJSMin", "exports", "module", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "b", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "move", "src", "size", "inspect", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "allocate", "ArrayType", "byteLength", "reqLength", "res", "postfix", "position", "shift", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "isNegNum", "q", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "exports", "require_lib", "__commonJSMin", "exports", "_permanentCensorErrors", "_censorErrors", "LogLevels", "_logLevel", "_version_1", "_globalLogger", "_checkNormalize", "missing_1", "form", "error", "_normalizeError", "LogLevel", "ErrorCode", "HEX", "Logger", "version", "logLevel", "args", "level", "_i", "message", "code", "params", "messageDetails", "key", "value", "hex", "i", "reason", "url", "fault", "name", "condition", "count", "expectedCount", "target", "kind", "censorship", "permanent", "exports", "require_lib", "__commonJSMin", "exports", "logger_1", "_version_1", "logger", "isHexable", "value", "addSlice", "array", "args", "isBytesLike", "isHexString", "isBytes", "isInteger", "i", "v", "arrayify", "options", "result", "hex", "concat", "items", "objects", "item", "length", "accum", "offset", "object", "stripZeros", "start", "zeroPad", "HexCharacters", "hexlify", "hexDataLength", "data", "hexDataSlice", "endOffset", "hexConcat", "hexValue", "trimmed", "hexStripZeros", "hexZeroPad", "splitSignature", "signature", "bytes", "vs_1", "recoveryParam", "s", "recId", "vs", "_vs", "joinSignature", "exports", "require_bignumber", "__commonJSMin", "exports", "bn_js_1", "__importDefault", "BN", "bytes_1", "logger_1", "_version_1", "logger", "_constructorGuard", "MAX_SAFE", "isBigNumberish", "value", "BigNumber", "_warnedToStringRadix", "constructorGuard", "hex", "toBigNumber", "toBN", "other", "o", "throwFault", "key", "toHex", "anyValue", "fault", "operation", "params", "_base36To16", "_base16To36", "require_fixednumber", "__commonJSMin", "exports", "bytes_1", "logger_1", "_version_1", "logger", "bignumber_1", "_constructorGuard", "Zero", "NegativeOne", "throwFault", "message", "fault", "operation", "value", "params", "zeros", "getMultiplier", "decimals", "formatFixed", "multiplier", "negative", "fraction", "whole", "parseFixed", "comps", "wholeValue", "fractionValue", "wei", "FixedFormat", "constructorGuard", "signed", "width", "match", "check", "key", "type", "defaultValue", "FixedNumber", "hex", "format", "other", "a", "b", "result", "hasFraction", "ONE", "factor", "bump", "BUMP", "fixedFormat", "numeric", "decimal", "error", "bignumber_1", "exports", "fixednumber_1", "bignumber_2", "exports", "require_lib", "__commonJSMin", "exports", "logger_1", "_version_1", "logger", "defineReadOnly", "object", "name", "value", "getStatic", "ctor", "key", "i", "resolveProperties", "promises", "v", "results", "_a", "accum", "result", "checkProperties", "properties", "shallowCopy", "opaque", "_isFrozen", "keys", "_deepCopy", "item", "deepCopy", "Description", "info", "exports", "require_fragments", "__commonJSMin", "exports", "bignumber_1", "properties_1", "logger_1", "_version_1", "logger", "_constructorGuard", "ModifiersBytes", "ModifiersNest", "checkModifier", "type", "name", "parseParamType", "param", "allowIndexed", "originalParam", "throwError", "i", "newNode", "parent", "node", "c", "verifyType", "child", "sibling", "populate", "object", "params", "key", "paramTypeArray", "ParamType", "constructorGuard", "match", "format", "result_1", "comp", "result", "value", "ParamTypify", "parseParams", "allowIndex", "splitNesting", "Fragment", "FunctionFragment", "EventFragment", "ConstructorFragment", "ErrorFragment", "_super", "__extends", "input", "verifyIdentifier", "regexParen", "anonymous", "modifier", "parseGas", "comps", "parseModifiers", "verifyState", "state", "parens", "output", "returns", "checkForbidden", "fragment", "sig", "regexIdentifier", "accum", "depth", "offset", "require_abstract_coder", "__commonJSMin", "exports", "bytes_1", "bignumber_1", "properties_1", "logger_1", "_version_1", "logger", "checkResultErrors", "result", "errors", "checkErrors", "path", "object", "key", "childPath", "error", "Coder", "name", "type", "localName", "dynamic", "message", "value", "Writer", "wordSize", "data", "writer", "bytes", "paddingOffset", "_this", "offset", "Reader", "coerceFunc", "allowLoose", "match", "length", "loose", "alignedLength", "require_sha3", "__commonJSMin", "exports", "module", "INPUT_ERROR", "FINALIZE_ERROR", "WINDOW", "root", "WEB_WORKER", "NODE_JS", "COMMON_JS", "AMD", "ARRAY_BUFFER", "HEX_CHARS", "SHAKE_PADDING", "CSHAKE_PADDING", "KECCAK_PADDING", "PADDING", "SHIFT", "RC", "BITS", "SHAKE_BITS", "OUTPUT_TYPES", "CSHAKE_BYTEPAD", "obj", "createOutputMethod", "bits", "padding", "outputType", "message", "Keccak", "createShakeOutputMethod", "outputBits", "createCshakeOutputMethod", "n", "s", "methods", "createKmacOutputMethod", "key", "createOutputMethods", "method", "createMethod", "i", "type", "createShakeMethod", "createCshakeMethod", "w", "createKmacMethod", "Kmac", "algorithms", "methodNames", "algorithm", "j", "methodName", "newMethodName", "notString", "blocks", "byteCount", "length", "blockCount", "index", "code", "f", "x", "right", "o", "bytes", "str", "strs", "paddingBytes", "zeros", "outputBlocks", "extraBytes", "hex", "block", "buffer", "array", "offset", "h", "l", "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "b16", "b17", "b18", "b19", "b20", "b21", "b22", "b23", "b24", "b25", "b26", "b27", "b28", "b29", "b30", "b31", "b32", "b33", "b34", "b35", "b36", "b37", "b38", "b39", "b40", "b41", "b42", "b43", "b44", "b45", "b46", "b47", "b48", "b49", "require_lib", "__commonJSMin", "exports", "js_sha3_1", "__importDefault", "bytes_1", "keccak256", "data", "exports", "require_lib", "__commonJSMin", "exports", "bytes_1", "logger_1", "_version_1", "logger", "arrayifyInteger", "value", "result", "unarrayifyInteger", "data", "offset", "length", "_encode", "object", "payload_1", "child", "length_1", "encode", "_decodeChildren", "childOffset", "decoded", "_decode", "lengthLength", "length_2", "length_3", "length_4", "length_5", "decode", "bytes", "exports", "require_lib", "__commonJSMin", "exports", "bytes_1", "bignumber_1", "keccak256_1", "rlp_1", "logger_1", "_version_1", "logger", "getChecksumAddress", "address", "chars", "expanded", "i", "hashed", "MAX_SAFE_INTEGER", "log10", "x", "ibanLookup", "safeDigits", "ibanChecksum", "c", "block", "checksum", "getAddress", "result", "isAddress", "getIcapAddress", "base36", "getContractAddress", "transaction", "from", "nonce", "getCreate2Address", "salt", "initCodeHash", "require_address", "__commonJSMin", "exports", "address_1", "bytes_1", "abstract_coder_1", "AddressCoder", "_super", "__extends", "localName", "writer", "value", "error", "reader", "require_anonymous", "__commonJSMin", "exports", "abstract_coder_1", "AnonymousCoder", "_super", "__extends", "coder", "_this", "writer", "value", "reader", "require_array", "__commonJSMin", "exports", "logger_1", "_version_1", "logger", "abstract_coder_1", "anonymous_1", "pack", "writer", "coders", "values", "arrayValues", "unique_1", "coder", "name", "staticWriter", "dynamicWriter", "updateFuncs", "index", "value", "dynamicOffset_1", "updateFunc_1", "baseOffset", "func", "length", "unpack", "reader", "baseReader", "offset", "offsetReader", "error", "uniqueNames", "accum", "i", "ArrayCoder", "_super", "__extends", "localName", "_this", "type", "dynamic", "defaultChild", "result", "count", "require_boolean", "__commonJSMin", "exports", "abstract_coder_1", "BooleanCoder", "_super", "__extends", "localName", "writer", "value", "reader", "require_bytes", "__commonJSMin", "exports", "bytes_1", "abstract_coder_1", "DynamicBytesCoder", "_super", "__extends", "type", "localName", "writer", "value", "length", "reader", "BytesCoder", "require_fixed_bytes", "__commonJSMin", "exports", "bytes_1", "abstract_coder_1", "FixedBytesCoder", "_super", "__extends", "size", "localName", "_this", "name", "writer", "value", "data", "reader", "require_null", "__commonJSMin", "exports", "abstract_coder_1", "NullCoder", "_super", "__extends", "localName", "writer", "value", "reader", "exports", "bignumber_1", "NegativeOne", "exports", "Zero", "One", "Two", "WeiPerEther", "MaxUint256", "MinInt256", "MaxInt256", "exports", "exports", "require_lib", "__commonJSMin", "exports", "addresses_1", "bignumbers_1", "hashes_1", "strings_1", "require_number", "__commonJSMin", "exports", "bignumber_1", "constants_1", "abstract_coder_1", "NumberCoder", "_super", "__extends", "size", "signed", "localName", "_this", "name", "writer", "value", "v", "maxUintValue", "bounds", "reader", "exports", "require_utf8", "__commonJSMin", "exports", "bytes_1", "logger_1", "_version_1", "logger", "UnicodeNormalizationForm", "Utf8ErrorReason", "errorFunc", "reason", "offset", "bytes", "output", "badCodepoint", "ignoreFunc", "i", "replaceFunc", "getUtf8CodePoints", "onError", "result", "c", "extraLength", "overlongMask", "res", "j", "nextChar", "toUtf8Bytes", "str", "form", "c2", "pair", "escapeChar", "value", "hex", "_toEscapedUtf8String", "codePoint", "_toUtf8String", "codePoints", "toUtf8String", "toUtf8CodePoints", "require_bytes32", "__commonJSMin", "exports", "constants_1", "bytes_1", "utf8_1", "formatBytes32String", "text", "bytes", "parseBytes32String", "data", "length", "require_idna", "__commonJSMin", "exports", "utf8_1", "bytes2", "data", "result", "i", "createTable", "func", "value", "lo", "pair", "comps", "createRangeTable", "hi", "v", "matchMap", "ranges", "range", "Table_A_1_ranges", "Table_B_1_flags", "Table_B_2_ranges", "Table_B_2_lut_abs", "Table_B_2_lut_rel", "Table_B_2_complex", "Table_C_ranges", "flatten", "values", "accum", "_nameprepTableA1", "codepoint", "_nameprepTableB2", "codes", "shift", "complex", "_nameprepTableC", "nameprep", "code", "codesTableB2", "name", "require_lib", "__commonJSMin", "exports", "bytes32_1", "idna_1", "utf8_1", "require_string", "__commonJSMin", "exports", "strings_1", "bytes_1", "StringCoder", "_super", "__extends", "localName", "writer", "value", "reader", "require_tuple", "__commonJSMin", "exports", "abstract_coder_1", "array_1", "TupleCoder", "_super", "__extends", "coders", "localName", "_this", "dynamic", "types", "coder", "type", "values", "uniqueNames", "accum", "name", "index", "writer", "value", "reader", "require_abi_coder", "__commonJSMin", "exports", "bytes_1", "properties_1", "logger_1", "_version_1", "logger", "abstract_coder_1", "address_1", "array_1", "boolean_1", "bytes_2", "fixed_bytes_1", "null_1", "number_1", "string_1", "tuple_1", "fragments_1", "paramTypeBytes", "paramTypeNumber", "AbiCoder", "coerceFunc", "param", "_this", "component", "match", "size", "data", "allowLoose", "types", "coders", "type", "coder", "values", "writer", "loose", "keccak256_1", "strings_1", "id", "text", "exports", "exports", "require_base64", "__commonJSMin", "exports", "bytes_1", "decode", "textData", "encode", "data", "require_lib", "__commonJSMin", "exports", "base64_1", "flat", "array", "depth", "result", "forEach", "flatDeep", "arr", "val", "fromEntries", "i", "value", "decode_arithmetic", "bytes", "pos", "u16", "symbol_count", "total", "acc", "skip", "pos_payload", "read_width", "read_buffer", "read_bit", "N", "FULL", "HALF", "QRTR", "MASK", "register", "symbols", "low", "range", "start", "end", "mid", "a", "b", "offset", "x", "exports", "read_payload", "v", "read_compressed_payload", "signed", "read_counts", "n", "next", "read_ascending", "read_deltas", "read_member_array", "lookup", "vX", "vN", "j", "read_mapped_map", "ret", "w", "read_linear_table", "read_replacement_table", "read_zero_terminated_array", "read_transposed", "m", "dx", "dy", "ys", "_", "j_dy", "y", "read_emoji_trie", "sorted", "read", "branches", "keys", "temp", "valid", "fe0f", "save", "check", "base64_1", "decoder_js_1", "getData", "exports", "strings_1", "include_js_1", "r", "decoder_js_1", "VALID", "IGNORED", "MAPPED", "EMOJI_ROOT", "HYPHEN", "UNDERSCORE", "explode_cp", "name", "filter_fe0f", "cps", "cp", "ens_normalize_post_check", "_i", "_a", "label", "i", "err", "exports", "ens_normalize", "normalize", "emoji_filter", "input", "output", "emoji", "consume_emoji_reversed", "nfc", "s", "eaten", "node", "saved", "stack", "pos", "x", "bytes_1", "strings_1", "keccak256_1", "logger_1", "_version_1", "logger", "lib_1", "Zeros", "checkComponent", "comp", "ensNameSplit", "name", "bytes", "comps", "last", "d", "ensNormalize", "exports", "isValidName", "namehash", "result", "dnsEncode", "bytes_1", "keccak256_1", "strings_1", "exports", "hashMessage", "message", "address_1", "bignumber_1", "bytes_1", "keccak256_1", "properties_1", "logger_1", "_version_1", "logger", "id_1", "padding", "NegativeOne", "Zero", "One", "MaxUint256", "hexPadRight", "value", "bytes", "padOffset", "hexTrue", "hexFalse", "domainFieldTypes", "domainFieldNames", "checkString", "key", "domainChecks", "getBaseEncoder", "type", "match", "signed", "width", "boundsUpper_1", "boundsLower_1", "v", "width_1", "encodeType", "name", "fields", "_a", "TypedDataEncoder", "types", "links", "parents", "subtypes", "name_1", "uniqueNames", "field", "baseType", "encoder", "primaryTypes", "n", "t", "checkCircular", "found", "child", "subtype", "name_2", "st", "_this", "subtype_1", "subEncoder_1", "length_1", "result", "encodedType_1", "values", "callback", "subtype_2", "length_2", "accum", "domain", "domainFields", "name_3", "b", "resolveName", "ensCache", "_c", "_d", "name_4", "_e", "domainValues", "domainTypes", "typesWithDomain", "exports", "require_lib", "__commonJSMin", "exports", "id_1", "namehash_1", "message_1", "namehash_2", "typed_data_1", "require_interface", "__commonJSMin", "exports", "address_1", "bignumber_1", "bytes_1", "hash_1", "keccak256_1", "properties_1", "abi_coder_1", "abstract_coder_1", "fragments_1", "logger_1", "_version_1", "logger", "LogDescription", "_super", "__extends", "TransactionDescription", "ErrorDescription", "Indexed", "value", "BuiltinErrors", "wrapAccessError", "property", "error", "wrap", "Interface", "fragments", "_this", "abi", "fragment", "_newTarget", "bucket", "signature", "format", "j", "address", "eventFragment", "nameOrSignatureOrSighash", "name_1", "name_2", "matching", "f", "result", "nameOrSignatureOrTopic", "topichash", "name_3", "name_4", "getSighash", "name_5", "name_6", "params", "data", "values", "bytes", "functionFragment", "reason", "message", "errorArgs", "errorName", "errorSignature", "selector", "builtin", "topics", "encodeTopic", "param", "index", "dataTypes", "dataValues", "topicHash", "indexed", "nonIndexed", "dynamic", "resultIndexed", "resultNonIndexed", "nonIndexedIndex", "indexedIndex", "value_1", "i", "tx", "log", "hexData", "require_lib", "__commonJSMin", "exports", "fragments_1", "abi_coder_1", "interface_1", "exports", "require_lib", "__commonJSMin", "exports", "bignumber_1", "bytes_1", "properties_1", "logger_1", "_version_1", "logger", "ForkEvent", "_super", "__extends", "value", "BlockForkEvent", "blockHash", "expiry", "_this", "TransactionForkEvent", "hash", "TransactionOrderForkEvent", "beforeHash", "afterHash", "Provider", "_newTarget", "error", "_a", "_b", "block", "gasPrice", "lastBaseFeePerGas", "maxFeePerGas", "maxPriorityFeePerGas", "eventName", "listener", "exports", "require_lib", "__commonJSMin", "exports", "properties_1", "logger_1", "_version_1", "logger", "allowedTransactionKeys", "forwardErrors", "Signer", "_newTarget", "blockTag", "_a", "transaction", "tx", "signedTx", "network", "name", "key", "result", "to", "__awaiter", "_this", "address", "error", "hasEip1559", "feeData", "gasPrice", "results", "operation", "value", "VoidSigner", "_super", "__extends", "provider", "message", "domain", "types", "require_bn", "__commonJSMin", "exports", "module", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "b", "q", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_minimalistic_assert", "__commonJSMin", "exports", "module", "assert", "val", "msg", "l", "require_utils", "__commonJSMin", "exports", "utils", "toArray", "msg", "enc", "res", "i", "c", "hi", "lo", "zero2", "word", "toHex", "arr", "require_utils", "__commonJSMin", "exports", "utils", "BN", "minAssert", "minUtils", "getNAF", "num", "w", "bits", "naf", "ws", "k", "i", "z", "mod", "getJSF", "k1", "k2", "jsf", "d1", "d2", "m8", "m14", "m24", "u1", "u2", "cachedProperty", "obj", "name", "computer", "key", "parseBytes", "bytes", "intFromLE", "require_brorand", "__commonJSMin", "exports", "module", "r", "len", "Rand", "rand", "n", "res", "i", "arr", "crypto", "require_base", "__commonJSMin", "exports", "module", "BN", "utils", "getNAF", "getJSF", "assert", "BaseCurve", "type", "conf", "adjustCount", "p", "k", "doubles", "naf", "I", "repr", "j", "nafW", "l", "a", "b", "i", "w", "nafPoints", "wnd", "acc", "z", "defW", "points", "coeffs", "len", "jacobianResult", "wndWidth", "max", "comb", "index", "jsf", "ja", "jb", "tmp", "zero", "BasePoint", "curve", "bytes", "enc", "res", "compact", "x", "power", "precomputed", "step", "dbl", "require_short", "__commonJSMin", "exports", "module", "utils", "BN", "inherits", "Base", "assert", "ShortCurve", "conf", "beta", "lambda", "betas", "lambdas", "basis", "vec", "num", "red", "tinv", "ntinv", "s", "l1", "l2", "aprxSqrt", "u", "v", "x1", "y1", "x2", "y2", "a0", "b0", "a1", "b1", "a2", "b2", "prevR", "i", "r", "x", "q", "y", "len1", "len2", "k", "v1", "v2", "c1", "c2", "p1", "p2", "q1", "q2", "k1", "k2", "odd", "isOdd", "point", "ax", "rhs", "points", "coeffs", "jacobianResult", "npoints", "ncoeffs", "split", "p", "res", "j", "Point", "curve", "isRed", "obj", "pre", "endoMul", "obj2point", "c", "nx", "ny", "ys1", "a", "dyinv", "_precompute", "negate", "JPoint", "z", "zinv", "zinv2", "ay", "pz2", "z2", "u1", "u2", "s1", "s2", "h", "h2", "h3", "nz", "pow", "jx", "jy", "jz", "jz4", "jyd", "jx2", "jyd2", "jyd4", "t1", "t2", "dny", "xx", "yy", "yyyy", "m", "t", "yyyy8", "b", "d", "e", "f", "c8", "delta", "gamma", "alpha", "beta4", "beta8", "ggamma8", "jy2", "jxd4", "jyd8", "zz", "mm", "ee", "yyu4", "kbase", "z3", "pz3", "zs", "rx", "xc", "require_mont", "__commonJSMin", "exports", "module", "BN", "inherits", "Base", "utils", "MontCurve", "conf", "point", "x", "x2", "rhs", "y", "Point", "curve", "z", "bytes", "enc", "obj", "a", "aa", "b", "bb", "c", "nx", "nz", "p", "diff", "d", "da", "cb", "k", "t", "bits", "i", "other", "require_edwards", "__commonJSMin", "exports", "module", "utils", "BN", "inherits", "Base", "assert", "EdwardsCurve", "conf", "num", "x", "y", "z", "t", "odd", "x2", "rhs", "lhs", "y2", "isOdd", "point", "Point", "curve", "obj", "a", "b", "c", "d", "e", "g", "f", "h", "nx", "ny", "nt", "nz", "j", "p", "tmp", "k", "k1", "k2", "zi", "other", "rx", "xc", "require_curve", "__commonJSMin", "exports", "curve", "require_utils", "__commonJSMin", "exports", "assert", "inherits", "isSurrogatePair", "msg", "i", "toArray", "enc", "res", "p", "c", "toHex", "zero2", "htonl", "w", "toHex32", "endian", "zero8", "word", "join32", "start", "end", "len", "k", "split32", "m", "rotr32", "b", "rotl32", "sum32", "a", "sum32_3", "sum32_4", "d", "sum32_5", "e", "sum64", "buf", "pos", "ah", "al", "bh", "bl", "lo", "hi", "sum64_hi", "sum64_lo", "sum64_4_hi", "ch", "cl", "dh", "dl", "carry", "sum64_4_lo", "sum64_5_hi", "eh", "el", "sum64_5_lo", "rotr64_hi", "num", "r", "rotr64_lo", "shr64_hi", "shr64_lo", "require_common", "__commonJSMin", "exports", "utils", "assert", "BlockHash", "msg", "enc", "r", "len", "bytes", "k", "res", "i", "t", "require_common", "__commonJSMin", "exports", "utils", "rotr32", "ft_1", "s", "x", "y", "z", "ch32", "p32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "require__", "__commonJSMin", "exports", "module", "utils", "common", "shaCommon", "rotl32", "sum32", "sum32_5", "ft_1", "BlockHash", "sha1_K", "SHA1", "msg", "start", "W", "b", "d", "e", "s", "t", "enc", "require__", "__commonJSMin", "exports", "module", "utils", "common", "shaCommon", "assert", "sum32", "sum32_4", "sum32_5", "ch32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "BlockHash", "sha256_K", "SHA256", "msg", "start", "W", "b", "d", "e", "g", "h", "T1", "T2", "enc", "require__", "__commonJSMin", "exports", "module", "utils", "SHA256", "SHA224", "enc", "require__", "__commonJSMin", "exports", "module", "utils", "common", "assert", "rotr64_hi", "rotr64_lo", "shr64_hi", "shr64_lo", "sum64", "sum64_hi", "sum64_lo", "sum64_4_hi", "sum64_4_lo", "sum64_5_hi", "sum64_5_lo", "BlockHash", "sha512_K", "SHA512", "msg", "start", "W", "c0_hi", "g1_512_hi", "c0_lo", "g1_512_lo", "c1_hi", "c1_lo", "c2_hi", "g0_512_hi", "c2_lo", "g0_512_lo", "c3_hi", "c3_lo", "ah", "al", "bh", "bl", "ch", "cl", "dh", "dl", "eh", "el", "fh", "fl", "gh", "gl", "hh", "hl", "i", "s1_512_hi", "s1_512_lo", "ch64_hi", "ch64_lo", "c4_hi", "c4_lo", "T1_hi", "T1_lo", "s0_512_hi", "s0_512_lo", "maj64_hi", "maj64_lo", "T2_hi", "T2_lo", "enc", "xh", "xl", "yh", "yl", "zh", "r", "zl", "require__", "__commonJSMin", "exports", "module", "utils", "SHA512", "SHA384", "enc", "require_sha", "__commonJSMin", "exports", "require_ripemd", "__commonJSMin", "exports", "utils", "common", "rotl32", "sum32", "sum32_3", "sum32_4", "BlockHash", "RIPEMD160", "msg", "start", "A", "B", "C", "D", "E", "Ah", "Bh", "Ch", "Dh", "Eh", "j", "T", "f", "r", "K", "s", "rh", "Kh", "sh", "enc", "x", "y", "z", "require_hmac", "__commonJSMin", "exports", "module", "utils", "assert", "Hmac", "hash", "key", "enc", "i", "msg", "require_hash", "__commonJSMin", "exports", "hash", "require_secp256k1", "__commonJSMin", "exports", "module", "require_curves", "__commonJSMin", "exports", "curves", "hash", "curve", "utils", "assert", "PresetCurve", "options", "defineCurve", "name", "pre", "require_hmac_drbg", "__commonJSMin", "exports", "module", "hash", "utils", "assert", "HmacDRBG", "options", "entropy", "nonce", "pers", "seed", "i", "kmac", "entropyEnc", "add", "addEnc", "len", "enc", "temp", "res", "require_key", "__commonJSMin", "exports", "module", "BN", "utils", "assert", "KeyPair", "ec", "options", "pub", "enc", "priv", "compact", "key", "msg", "signature", "require_signature", "__commonJSMin", "exports", "module", "BN", "utils", "assert", "Signature", "options", "enc", "Position", "getLength", "buf", "p", "initial", "octetLen", "val", "i", "off", "rmPadding", "len", "data", "rlen", "r", "slen", "s", "constructLength", "arr", "octets", "backHalf", "res", "require_ec", "__commonJSMin", "exports", "module", "BN", "HmacDRBG", "utils", "curves", "rand", "assert", "KeyPair", "Signature", "EC", "options", "priv", "enc", "pub", "drbg", "bytes", "ns2", "msg", "truncOnly", "delta", "key", "bkey", "nonce", "ns1", "iter", "k", "kp", "kpX", "r", "s", "recoveryParam", "signature", "sinv", "u1", "u2", "p", "j", "n", "e", "isYOdd", "isSecondKey", "rInv", "s1", "s2", "Q", "Qprime", "require_key", "__commonJSMin", "exports", "module", "utils", "assert", "parseBytes", "cachedProperty", "KeyPair", "eddsa", "params", "pub", "secret", "hash", "lastIx", "a", "message", "sig", "enc", "require_signature", "__commonJSMin", "exports", "module", "BN", "utils", "assert", "cachedProperty", "parseBytes", "Signature", "eddsa", "sig", "require_eddsa", "__commonJSMin", "exports", "module", "hash", "curves", "utils", "assert", "parseBytes", "KeyPair", "Signature", "EDDSA", "curve", "message", "secret", "key", "r", "R", "Rencoded", "s_", "S", "sig", "pub", "h", "SG", "RplusAh", "i", "point", "enc", "bytes", "lastIx", "normed", "xIsOdd", "y", "num", "val", "require_elliptic", "__commonJSMin", "exports", "elliptic", "elliptic_1", "__importDefault", "EC", "exports", "exports", "require_lib", "__commonJSMin", "exports", "elliptic_1", "bytes_1", "properties_1", "logger_1", "_version_1", "logger", "_curve", "getCurve", "SigningKey", "privateKey", "keyPair", "other", "p0", "p1", "digest", "digestBytes", "signature", "otherKey", "otherKeyPair", "computePublicKey", "value", "recoverPublicKey", "sig", "rs", "key", "compressed", "bytes", "signingKey", "exports", "require_lib", "__commonJSMin", "exports", "address_1", "bignumber_1", "bytes_1", "constants_1", "keccak256_1", "properties_1", "RLP", "__importStar", "signing_key_1", "logger_1", "_version_1", "logger", "TransactionTypes", "handleAddress", "value", "handleNumber", "transactionFields", "allowedTransactionKeys", "computeAddress", "key", "publicKey", "recoverAddress", "digest", "signature", "formatNumber", "name", "result", "accessSetify", "addr", "storageKeys", "storageKey", "index", "accessListify", "set", "accum", "a", "b", "formatAccessList", "_serializeEip1559", "transaction", "gasPrice", "maxFeePerGas", "fields", "sig", "_serializeEip2930", "_serialize", "raw", "fieldInfo", "options", "chainId", "v", "serialize", "_parseEipSignature", "tx", "recid", "_parseEip1559", "payload", "maxPriorityFeePerGas", "_parseEip2930", "_parse", "rawTransaction", "recoveryParam", "parse", "exports", "require_lib", "__commonJSMin", "exports", "abi_1", "abstract_provider_1", "abstract_signer_1", "address_1", "bignumber_1", "bytes_1", "properties_1", "transactions_1", "logger_1", "_version_1", "logger", "allowedTransactionKeys", "resolveName", "resolver", "nameOrPromise", "name", "_a", "address", "resolveAddresses", "value", "paramType", "index", "v", "populateTransaction", "contract", "fragment", "args", "overrides", "check", "__awaiter", "_this", "resolved", "data", "tx", "ro", "intrinsic", "bytes", "i", "roValue", "leftovers", "key", "l", "buildPopulate", "_i", "buildEstimate", "signerOrProvider", "addContractWait", "wait", "confirmations", "receipt", "log", "event", "parsed", "topics", "buildCall", "collapseSimple", "blockTag", "result", "error", "buildSend", "txRequest", "buildDefault", "getEventTag", "filter", "topic", "RunningEvent", "tag", "listener", "once", "done", "item", "listenerCount", "argsCopy", "ErrorRunningEvent", "_super", "__extends", "FragmentRunningEvent", "contractInterface", "errors", "WildcardRunningEvent", "parsed_1", "BaseContract", "addressOrName", "_newTarget", "uniqueFilters_1", "eventSignature", "filters", "e", "uniqueNames", "uniqueSignatures", "signature", "name_1", "signatures", "transaction", "code", "runningEvent", "eventName", "emit", "wrappedEmit", "__spreadArray", "fromBlockOrBlockhash", "toBlock", "logs", "accum", "result_1", "runningEvent_1", "Contract", "ContractFactory", "bytecode", "signer", "bytecodeHex", "params", "unsignedTx", "compilerOutput", "abi", "bytes_1", "properties_1", "BaseX", "alphabet", "i", "value", "source", "digits", "carry", "j", "string", "k", "q", "bytes", "byte", "exports", "Base32", "Base58", "require_pbkdf2", "__commonJSMin", "exports", "crypto_1", "bytes_1", "bufferify", "value", "pbkdf2", "password", "salt", "iterations", "keylen", "hashAlgorithm", "pbkdf2_1", "exports", "SupportedAlgorithm", "exports", "exports", "require_sha2", "__commonJSMin", "exports", "crypto_1", "hash_js_1", "__importDefault", "bytes_1", "types_1", "logger_1", "_version_1", "logger", "ripemd160", "data", "sha256", "sha512", "computeHmac", "algorithm", "key", "sha2_1", "exports", "types_1", "exports", "require_wordlist", "__commonJSMin", "exports", "exportWordlist", "hash_1", "properties_1", "logger_1", "_version_1", "Wordlist", "locale", "_newTarget", "mnemonic", "words", "wordlist", "i", "word", "lang", "name", "anyGlobal", "require_lang_cz", "__commonJSMin", "exports", "wordlist_1", "words", "wordlist", "loadWords", "lang", "LangCz", "_super", "__extends", "index", "word", "langCz", "require_lang_en", "__commonJSMin", "exports", "wordlist_1", "words", "wordlist", "loadWords", "lang", "LangEn", "_super", "__extends", "index", "word", "langEn", "require_lang_es", "__commonJSMin", "exports", "strings_1", "wordlist_1", "words", "lookup", "wordlist", "dropDiacritic", "word", "c", "expand", "output", "loadWords", "lang", "w", "index", "LangEs", "_super", "__extends", "langEs", "require_lang_fr", "__commonJSMin", "exports", "strings_1", "wordlist_1", "words", "wordlist", "lookup", "dropDiacritic", "word", "c", "expand", "output", "loadWords", "lang", "w", "index", "LangFr", "_super", "__extends", "langFr", "require_lang_ja", "__commonJSMin", "exports", "bytes_1", "strings_1", "wordlist_1", "data", "mapping", "wordlist", "hex", "word", "KiYoKu", "KyoKu", "loadWords", "lang", "transform", "normalize", "result", "i", "kana", "target", "sortJapanese", "a", "b", "length_1", "d", "offset", "k", "tmp", "LangJa", "_super", "__extends", "index", "mnemonic", "words", "langJa", "require_lang_ko", "__commonJSMin", "exports", "strings_1", "wordlist_1", "data", "codes", "getHangul", "code", "wordlist", "loadWords", "lang", "length", "i", "word", "j", "LangKo", "_super", "__extends", "index", "langKo", "require_lang_it", "__commonJSMin", "exports", "wordlist_1", "words", "wordlist", "loadWords", "lang", "LangIt", "_super", "__extends", "index", "word", "langIt", "require_lang_zh", "__commonJSMin", "exports", "strings_1", "wordlist_1", "data", "deltaData", "wordlist", "Checks", "codes", "style", "loadWords", "lang", "deltaOffset", "i", "s", "bytes", "common", "i_1", "LangZh", "_super", "__extends", "country", "index", "word", "mnemonic", "langZhCn", "langZhTw", "lang_cz_1", "lang_en_1", "lang_es_1", "lang_fr_1", "lang_ja_1", "lang_ko_1", "lang_it_1", "lang_zh_1", "exports", "require_lib", "__commonJSMin", "exports", "wordlist_1", "wordlists_1", "exports", "require_lib", "__commonJSMin", "exports", "basex_1", "bytes_1", "bignumber_1", "strings_1", "pbkdf2_1", "properties_1", "signing_key_1", "sha2_1", "transactions_1", "wordlists_1", "logger_1", "_version_1", "logger", "N", "MasterSecret", "HardenedBit", "getUpperMask", "bits", "getLowerMask", "bytes32", "value", "base58check", "data", "getWordlist", "wordlist", "words", "_constructorGuard", "HDNode", "constructorGuard", "privateKey", "publicKey", "parentFingerprint", "chainCode", "index", "depth", "mnemonicOrPath", "signingKey", "path", "I", "IL", "IR", "ki", "Ki", "ek", "srcMnemonic", "components", "result", "component", "seed", "mnemonic", "seedArray", "password", "entropyToMnemonic", "mnemonicToEntropy", "mnemonicToSeed", "extendedKey", "bytes", "key", "salt", "entropy", "offset", "i", "bit", "entropyBits", "checksumBits", "checksumMask", "checksum", "indices", "remainingBits", "isValidMnemonic", "getAccountPath", "crypto_1", "bytes_1", "randomBytes", "length", "exports", "require_shuffle", "__commonJSMin", "exports", "shuffled", "array", "i", "j", "tmp", "require_lib", "__commonJSMin", "exports", "random_1", "shuffle_1", "require_aes_js", "__commonJSMin", "exports", "module", "root", "checkInt", "value", "checkInts", "arrayish", "i", "coerceArray", "arg", "copy", "createArray", "length", "copyArray", "sourceArray", "targetArray", "targetStart", "sourceStart", "sourceEnd", "convertUtf8", "toBytes", "text", "result", "c", "fromBytes", "bytes", "convertHex", "Hex", "v", "numberOfRounds", "rcon", "S", "Si", "T1", "T2", "T3", "T4", "T5", "T6", "T7", "T8", "U1", "U2", "U3", "U4", "convertToInt32", "AES", "key", "rounds", "roundKeyCount", "KC", "tk", "index", "rconpointer", "t", "tt", "r", "plaintext", "a", "ciphertext", "ModeOfOperationECB", "block", "ModeOfOperationCBC", "iv", "j", "ModeOfOperationCFB", "segmentSize", "encrypted", "xorSegment", "ModeOfOperationOFB", "Counter", "initialValue", "ModeOfOperationCTR", "counter", "pkcs7pad", "data", "padder", "pkcs7strip", "aesjs", "exports", "require_utils", "__commonJSMin", "exports", "bytes_1", "strings_1", "looseArrayify", "hexString", "zpad", "value", "length", "getPassword", "password", "searchPath", "object", "path", "currentChild", "comps", "matchingChild", "key", "uuidV4", "randomBytes", "bytes", "require_crowdsale", "__commonJSMin", "exports", "aes_js_1", "__importDefault", "address_1", "bytes_1", "keccak256_1", "pbkdf2_1", "strings_1", "properties_1", "logger_1", "_version_1", "logger", "utils_1", "CrowdsaleAccount", "_super", "__extends", "value", "decrypt", "json", "password", "data", "ethaddr", "encseed", "key", "iv", "encryptedSeed", "aesCbc", "seed", "seedHex", "i", "seedHexBytes", "privateKey", "require_inspect", "__commonJSMin", "exports", "address_1", "isCrowdsaleWallet", "json", "data", "isKeystoreWallet", "getJsonWalletAddress", "require_scrypt", "__commonJSMin", "exports", "module", "root", "SHA256", "m", "K", "h0", "h1", "h2", "h3", "h4", "h5", "h6", "h7", "w", "blocks", "off", "len", "a", "b", "c", "d", "e", "f", "g", "h", "u", "i", "j", "t1", "t2", "bytesLeft", "bitLenHi", "bitLenLo", "numZeros", "p", "PBKDF2_HMAC_SHA256_OneIter", "password", "salt", "dkLen", "innerLen", "inner", "outerKey", "dk", "incrementCounter", "blockmix_salsa8", "BY", "Yi", "r", "x", "_X", "arraycopy", "blockxor", "salsa20_8", "R", "B", "S", "Si", "D", "src", "srcPos", "dest", "destPos", "length", "checkBufferish", "o", "v", "ensureInteger", "value", "name", "_scrypt", "N", "callback", "XY", "V", "totalOps", "currentOp", "lastPercent10", "stop", "state", "i0", "i1", "Bi", "limit", "nextTick", "incrementalSMix", "steps", "percent10", "offset", "derivedKey", "lib", "progressCallback", "resolve", "reject", "lastProgress", "error", "progress", "key", "require_keystore", "__commonJSMin", "exports", "aes_js_1", "__importDefault", "scrypt_js_1", "address_1", "bytes_1", "hdnode_1", "keccak256_1", "pbkdf2_1", "random_1", "properties_1", "transactions_1", "utils_1", "logger_1", "_version_1", "logger", "hasMnemonic", "value", "KeystoreAccount", "_super", "__extends", "_decrypt", "data", "key", "ciphertext", "cipher", "iv", "counter", "aesCtr", "_getAccount", "computedMAC", "privateKey", "mnemonicKey", "address", "check", "account", "mnemonicCiphertext", "mnemonicIv", "mnemonicCounter", "mnemonicAesCtr", "path", "locale", "entropy", "mnemonic", "node", "error", "pbkdf2Sync", "passwordBytes", "salt", "count", "dkLen", "prfFunc", "pbkdf2", "_computeKdfKey", "password", "pbkdf2Func", "scryptFunc", "progressCallback", "kdf", "throwError", "name", "N", "r", "p", "prf", "decryptSync", "json", "decrypt", "_a", "encrypt", "options", "e", "srcMnemonic", "client", "uuidRandom", "derivedKey", "macPrefix", "mac", "now", "timestamp", "require_lib", "__commonJSMin", "exports", "crowdsale_1", "inspect_1", "keystore_1", "decryptJsonWallet", "json", "password", "progressCallback", "account", "decryptJsonWalletSync", "exports", "require_lib", "__commonJSMin", "exports", "address_1", "abstract_provider_1", "abstract_signer_1", "bytes_1", "hash_1", "hdnode_1", "keccak256_1", "properties_1", "random_1", "signing_key_1", "json_wallets_1", "transactions_1", "logger_1", "_version_1", "logger", "isAccount", "value", "hasMnemonic", "mnemonic", "Wallet", "_super", "__extends", "privateKey", "provider", "_this", "signingKey_1", "srcMnemonic_1", "node", "signingKey_2", "transaction", "tx", "signature", "message", "domain", "types", "name", "populated", "_a", "password", "options", "progressCallback", "entropy", "json", "account", "path", "wordlist", "verifyMessage", "verifyTypedData", "exports", "require_lib", "__commonJSMin", "exports", "logger_1", "_version_1", "logger", "isRenetworkable", "value", "ethDefaultProvider", "network", "func", "providers", "options", "providerList", "skip", "provider", "quorum", "etcDefaultProvider", "url", "homestead", "ropsten", "classicMordor", "networks", "getNetwork", "name_1", "standard_1", "standard_2", "standard", "defaultProvider", "exports", "require_geturl", "__commonJSMin", "exports", "http_1", "__importDefault", "https_1", "zlib_1", "url_1", "bytes_1", "properties_1", "logger_1", "_version_1", "logger", "getResponse", "request", "resolve", "reject", "resp", "response", "accum", "name", "value", "chunk", "error", "nonnull", "getUrl", "href", "options", "url", "req", "_a", "require_lib", "__commonJSMin", "exports", "base64_1", "bytes_1", "properties_1", "strings_1", "logger_1", "_version_1", "logger", "geturl_1", "staller", "duration", "resolve", "bodyify", "value", "type", "unpercent", "all", "code", "_fetchData", "connection", "body", "processFunc", "attemptLimit", "throttleCallback", "throttleSlotInterval", "errorPassThrough", "headers", "url", "options", "allow304", "timeout", "key", "authorization", "reData", "dataMatch", "response", "result", "error", "flatHeaders", "header", "runningTimeout", "timer", "promise", "reject", "cancel", "runningFetch", "attempt", "_a", "location_1", "tryAgain", "stall", "retryAfter", "error_1", "body_1", "error_2", "timeout_1", "fetchJson", "json", "processJsonFunc", "updated", "hasContentType", "k", "poll", "func", "done", "retryLimit", "check", "require_bech32", "__commonJSMin", "exports", "module", "ALPHABET", "ALPHABET_MAP", "z", "x", "polymodStep", "pre", "b", "prefixChk", "prefix", "chk", "i", "c", "v", "encode", "words", "LIMIT", "result", "__decode", "str", "lowered", "uppered", "split", "wordChars", "decodeUnsafe", "res", "decode", "convert", "data", "inBits", "outBits", "pad", "value", "bits", "maxV", "toWordsUnsafe", "bytes", "toWords", "fromWordsUnsafe", "fromWords", "exports", "require_formatter", "__commonJSMin", "exports", "address_1", "bignumber_1", "bytes_1", "constants_1", "properties_1", "transactions_1", "logger_1", "_version_1", "logger", "Formatter", "_this", "formats", "address", "bigNumber", "blockTag", "data", "hash", "hex", "number", "type", "strictData", "v", "accessList", "value", "strict", "result", "format", "difficulty", "transaction", "chainId", "value_1", "object", "key", "error", "nullValue", "replaceValue", "array", "isCommunityResourcable", "isCommunityResource", "throttleMessage", "showThrottleMessage", "require_base_provider", "__commonJSMin", "exports", "abstract_provider_1", "base64_1", "basex_1", "bignumber_1", "bytes_1", "constants_1", "hash_1", "networks_1", "properties_1", "sha2_1", "strings_1", "web_1", "bech32_1", "__importDefault", "logger_1", "_version_1", "logger", "formatter_1", "MAX_CCIP_REDIRECTS", "checkTopic", "topic", "serializeTopics", "topics", "unique_1", "sorted", "deserializeTopics", "data", "comps", "getEventTag", "eventName", "getTime", "stall", "duration", "resolve", "PollableEvents", "Event", "tag", "listener", "once", "address", "filter", "coinInfos", "bytes32ify", "value", "base58Encode", "matcherIpfs", "matchers", "_parseString", "result", "start", "_parseBytes", "offset", "length", "getIpfsLink", "link", "numPad", "padded", "bytesPad", "encodeBytes", "datas", "byteCount", "i", "Resolver", "provider", "name", "resolvedAddress", "_this", "error", "selector", "parameters", "tx", "parseBytes", "_a", "error_1", "coinType", "hexBytes", "coinInfo", "bytes", "p2pkh", "length_1", "p2sh", "length_2", "length_3", "version_1", "words", "error_2", "linkage", "avatar", "_h", "match", "scheme", "_b", "owner", "addr", "tokenId", "_d", "_c", "tokenOwner", "_f", "_e", "balance", "_g", "metadataUrl", "metadata", "imageUrl", "ipfs", "length_4", "ipns", "length_5", "swarm", "skynet", "urlSafe_1", "hash", "a", "key", "keyBytes", "defaultFormatter", "nextPollId", "BaseProvider", "_super", "__extends", "network", "_newTarget", "knownNetwork", "calldata", "urls", "sender", "errorMessages", "url", "href", "json", "response", "errorMessage", "m", "maxAge", "internalBlockNumber", "reqTime", "checkInternalBlockNumber", "blockNumber", "networkError", "respTime", "pollId", "runners", "error_6", "eventBlockNumber", "event", "hash_2", "runner", "receipt", "filter_1", "minFromBlock", "logs", "log", "currentNetwork", "now", "transactionHash", "confirmations", "timeout", "replaceable", "reject", "cancelFuncs", "done", "alreadyDone", "func", "minedHandler", "lastBlockNumber_1", "scannedBlock_1", "replaceHandler_1", "__awaiter", "nonce", "mined", "block", "ti", "receipt_1", "reason", "timer_1", "addressOrName", "blockTag", "params", "position", "p", "startBlock", "confirms", "replacement", "signedTransaction", "t", "hexTx", "error_7", "transaction", "values", "v", "attempt", "txSender", "urlsOffset", "urlsLength", "urlsData", "u", "callbackSelector", "extraData", "ccipResult", "error_8", "resolved", "blockHashOrBlockTag", "includeTransactions", "blockNumber_1", "blockWithTxs", "currentName", "resolver", "operation", "addrData", "node", "resolverAddr", "nameOrAddress", "resolverAddress", "avatar_1", "error_11", "name_1", "error_12", "method", "e", "args", "_i", "stopped", "eventTag", "found", "eventTag_1", "require_json_rpc_provider", "__commonJSMin", "exports", "abstract_signer_1", "bignumber_1", "bytes_1", "hash_1", "properties_1", "strings_1", "transactions_1", "web_1", "logger_1", "_version_1", "logger", "base_provider_1", "errorGas", "spelunk", "value", "requireData", "data", "key", "result", "checkError", "method", "error", "params", "transaction", "message", "timer", "timeout", "resolve", "getResult", "payload", "getLowerCase", "_constructorGuard", "JsonRpcSigner", "_super", "__extends", "constructorGuard", "provider", "addressOrIndex", "_this", "UncheckedJsonRpcSigner", "accounts", "fromAddress", "address", "estimate", "to", "__awaiter", "_a", "tx", "sender", "hexTx", "hash", "blockNumber", "error_1", "error_2", "error_3", "domain", "types", "name", "populated", "error_4", "password", "confirmations", "allowedTransactionKeys", "JsonRpcProvider", "url", "network", "networkOrReady", "reject", "chainId", "getNetwork", "a", "request", "cache", "hexlifyTransaction", "feeData", "args", "error_7", "event", "self", "pendingFilter", "filterId", "poll", "hashes", "seq", "allowExtra", "allowed", "require_constants", "__commonJSMin", "exports", "module", "require_node_gyp_build", "__commonJSMin", "exports", "module", "fs", "path", "os", "runtimeRequire", "vars", "prebuildsOnly", "abi", "runtime", "isElectron", "arch", "platform", "libc", "isAlpine", "armv", "uv", "load", "dir", "name", "release", "getFirst", "matchBuild", "debug", "prebuild", "resolve", "nearby", "target", "tuples", "readdirSync", "parseTuple", "tuple", "matchTuple", "compareTuples", "prebuilds", "parsed", "parseTags", "candidates", "matchTags", "winner", "compareTags", "filter", "files", "arr", "architectures", "a", "b", "file", "extension", "tags", "tag", "runtimeAgnostic", "require_fallback", "__commonJSMin", "exports", "module", "mask", "source", "output", "offset", "length", "i", "unmask", "buffer", "require_bufferutil", "__commonJSMin", "exports", "module", "require_buffer_util", "__commonJSMin", "exports", "module", "EMPTY_BUFFER", "concat", "list", "totalLength", "target", "offset", "buf", "_mask", "source", "mask", "output", "length", "i", "_unmask", "buffer", "toArrayBuffer", "toBuffer", "data", "bufferUtil", "bu", "require_limiter", "__commonJSMin", "exports", "module", "kDone", "kRun", "Limiter", "concurrency", "job", "require_permessage_deflate", "__commonJSMin", "exports", "module", "zlib", "bufferUtil", "Limiter", "kStatusCode", "NOOP", "TRAILER", "kPerMessageDeflate", "kTotalLength", "kCallback", "kBuffers", "kError", "zlibLimiter", "PerMessageDeflate", "options", "isServer", "maxPayload", "concurrency", "params", "configurations", "callback", "offers", "opts", "accepted", "response", "key", "value", "num", "data", "fin", "done", "err", "result", "endpoint", "windowBits", "inflateOnError", "inflateOnData", "deflateOnData", "chunk", "require_fallback", "__commonJSMin", "exports", "module", "isValidUTF8", "buf", "len", "i", "require_utf_8_validate", "__commonJSMin", "exports", "module", "require_validation", "__commonJSMin", "exports", "module", "isValidStatusCode", "code", "_isValidUTF8", "buf", "len", "i", "isValidUTF8", "require_receiver", "__commonJSMin", "exports", "module", "Writable", "PerMessageDeflate", "BINARY_TYPES", "EMPTY_BUFFER", "kStatusCode", "kWebSocket", "concat", "toArrayBuffer", "unmask", "isValidStatusCode", "isValidUTF8", "GET_INFO", "GET_PAYLOAD_LENGTH_16", "GET_PAYLOAD_LENGTH_64", "GET_MASK", "GET_DATA", "INFLATING", "Receiver", "binaryType", "extensions", "isServer", "maxPayload", "chunk", "encoding", "cb", "n", "buf", "dst", "offset", "err", "error", "compressed", "num", "data", "er", "messageLength", "fragments", "code", "ErrorCtor", "message", "prefix", "statusCode", "require_sender", "__commonJSMin", "exports", "module", "randomFillSync", "PerMessageDeflate", "EMPTY_BUFFER", "isValidStatusCode", "applyMask", "toBuffer", "mask", "Sender", "socket", "extensions", "data", "options", "merge", "offset", "payloadLength", "target", "code", "cb", "buf", "length", "readOnly", "perMessageDeflate", "opcode", "rsv1", "opts", "compress", "_", "err", "i", "callback", "params", "list", "require_event_target", "__commonJSMin", "exports", "module", "Event", "type", "target", "MessageEvent", "data", "CloseEvent", "code", "reason", "OpenEvent", "ErrorEvent", "error", "EventTarget", "listener", "options", "onMessage", "onClose", "message", "onError", "onOpen", "method", "listeners", "i", "require_extension", "__commonJSMin", "exports", "module", "tokenChars", "push", "dest", "name", "elem", "parse", "header", "offers", "params", "mustUnescape", "isEscaping", "inQuotes", "extensionName", "paramName", "start", "end", "i", "code", "value", "token", "format", "extensions", "extension", "configurations", "k", "values", "v", "require_websocket", "__commonJSMin", "exports", "module", "EventEmitter", "https", "http", "net", "tls", "randomBytes", "createHash", "URL", "PerMessageDeflate", "Receiver", "Sender", "BINARY_TYPES", "EMPTY_BUFFER", "GUID", "kStatusCode", "kWebSocket", "NOOP", "addEventListener", "removeEventListener", "format", "parse", "toBuffer", "readyStates", "protocolVersions", "closeTimeout", "WebSocket", "address", "protocols", "options", "initAsClient", "type", "socket", "head", "maxPayload", "receiver", "receiverOnConclude", "receiverOnDrain", "receiverOnError", "receiverOnMessage", "receiverOnPing", "receiverOnPong", "socketOnClose", "socketOnData", "socketOnEnd", "socketOnError", "code", "data", "msg", "abortHandshake", "err", "mask", "cb", "sendAfterClose", "opts", "readyState", "i", "descriptor", "property", "method", "listeners", "listener", "websocket", "parsedUrl", "isUnixSocket", "isSecure", "defaultPort", "key", "get", "perMessageDeflate", "tlsConnect", "netConnect", "parts", "req", "res", "location", "statusCode", "addr", "digest", "serverProt", "protList", "protError", "extensions", "stream", "message", "length", "reason", "receiverOnFinish", "chunk", "require_stream", "__commonJSMin", "exports", "module", "Duplex", "emitClose", "stream", "duplexOnEnd", "duplexOnError", "err", "createWebSocketStream", "ws", "options", "resumeOnReceiverDrain", "receiverOnDrain", "duplex", "msg", "callback", "called", "chunk", "encoding", "require_websocket_server", "__commonJSMin", "exports", "module", "EventEmitter", "createHash", "createServer", "STATUS_CODES", "PerMessageDeflate", "WebSocket", "format", "parse", "GUID", "kWebSocket", "keyRegex", "WebSocketServer", "options", "callback", "req", "res", "body", "emitConnection", "addListeners", "socket", "head", "cb", "client", "server", "emitClose", "index", "socketOnError", "key", "version", "extensions", "abortHandshake", "perMessageDeflate", "offers", "info", "verified", "code", "message", "headers", "ws", "protocol", "trim", "params", "value", "map", "event", "h", "str", "require_ws", "__commonJSMin", "exports", "module", "WebSocket", "ws_1", "__importDefault", "exports", "require_websocket_provider", "__commonJSMin", "exports", "bignumber_1", "properties_1", "json_rpc_provider_1", "ws_1", "logger_1", "_version_1", "logger", "NextId", "WebSocketProvider", "_super", "__extends", "url", "network", "_this", "id", "messageEvent", "data", "result", "request", "error", "sub", "fauxPoll", "value", "blockNumber", "method", "params", "rid", "resolve", "reject", "callback", "payload", "tag", "param", "processFunc", "subIdPromise", "subId", "_a", "event", "emitReceipt_1", "hash", "receipt", "e", "require_url_json_rpc_provider", "__commonJSMin", "exports", "properties_1", "logger_1", "_version_1", "logger", "json_rpc_provider_1", "StaticJsonRpcProvider", "_super", "__extends", "network", "_a", "UrlJsonRpcProvider", "apiKey", "_this", "_newTarget", "connection", "key", "address", "require_alchemy_provider", "__commonJSMin", "exports", "properties_1", "formatter_1", "websocket_provider_1", "logger_1", "_version_1", "logger", "url_json_rpc_provider_1", "defaultApiKey", "AlchemyWebSocketProvider", "_super", "__extends", "network", "apiKey", "_this", "provider", "AlchemyProvider", "url", "host", "attempt", "formatter_1", "url_json_rpc_provider_1", "logger_1", "_version_1", "logger", "defaultApiKey", "getHost", "name", "AnkrProvider", "_super", "__extends", "apiKey", "network", "connection", "attempt", "url", "exports", "require_cloudflare_provider", "__commonJSMin", "exports", "url_json_rpc_provider_1", "logger_1", "_version_1", "logger", "CloudflareProvider", "_super", "__extends", "apiKey", "network", "host", "method", "params", "block", "_a", "require_etherscan_provider", "__commonJSMin", "exports", "bytes_1", "properties_1", "transactions_1", "web_1", "formatter_1", "logger_1", "_version_1", "logger", "base_provider_1", "getTransactionPostData", "transaction", "result", "key", "value", "set", "getResult", "error", "getJsonResult", "checkLogTag", "blockTag", "checkError", "method", "e", "data", "message", "EtherscanProvider", "_super", "__extends", "network", "apiKey", "_this", "module", "params", "query", "accum", "post", "url", "payload", "procFunc", "connection", "attempt", "payloadStr", "_a", "postData", "_c", "error_1", "error_2", "args", "topic0", "logs", "blocks", "i", "log", "block", "_b", "addressOrName", "startBlock", "endBlock", "tx", "item", "require_fallback_provider", "__commonJSMin", "exports", "abstract_provider_1", "bignumber_1", "bytes_1", "properties_1", "random_1", "web_1", "base_provider_1", "formatter_1", "logger_1", "_version_1", "logger", "now", "checkNetworks", "networks", "result", "i", "network", "median", "values", "maxDelta", "middle", "a", "b", "serialize", "value", "keys", "key", "v", "nextRid", "stall", "duration", "cancel", "timer", "promise", "resolve", "wait", "func", "getPromise", "ForwardErrors", "ForwardProperties", "exposeDebugConfig", "config", "normalizedTally", "normalize", "quorum", "configs", "tally", "check", "getProcessFunc", "provider", "method", "params", "blockNumber", "c", "tx", "block", "waitForSync", "reject", "getRunner", "currentBlockNumber", "_a", "_b", "filter", "FallbackProvider", "_super", "__extends", "providers", "_this", "providerConfigs", "configOrProvider", "index", "stallTimeout", "priority", "weight", "total", "accum", "networkOrReady", "error", "results", "i_1", "processFunc", "first", "t0", "inflightWeight", "rid", "this_1", "waiting", "errors", "code", "errorCode", "e", "props", "name", "require_ipc_provider", "__commonJSMin", "exports", "net_1", "properties_1", "logger_1", "_version_1", "logger", "json_rpc_provider_1", "IpcProvider", "_super", "__extends", "path", "network", "_this", "method", "params", "payload", "resolve", "reject", "response", "stream", "data", "error", "require_infura_provider", "__commonJSMin", "exports", "properties_1", "websocket_provider_1", "formatter_1", "logger_1", "_version_1", "logger", "url_json_rpc_provider_1", "defaultProjectId", "InfuraWebSocketProvider", "_super", "__extends", "network", "apiKey", "_this", "provider", "InfuraProvider", "connection", "url", "apiKeyObj", "host", "attempt", "properties_1", "web_1", "json_rpc_provider_1", "JsonRpcBatchProvider", "_super", "__extends", "method", "params", "_this", "request", "inflightRequest", "promise", "resolve", "reject", "batch", "inflight", "result", "index", "payload", "error", "exports", "require_nodesmith_provider", "__commonJSMin", "exports", "url_json_rpc_provider_1", "logger_1", "_version_1", "logger", "defaultApiKey", "NodesmithProvider", "_super", "__extends", "apiKey", "network", "host", "require_pocket_provider", "__commonJSMin", "exports", "logger_1", "_version_1", "logger", "url_json_rpc_provider_1", "defaultApplicationId", "PocketProvider", "_super", "__extends", "apiKey", "apiKeyObj", "network", "host", "url", "connection", "require_web3_provider", "__commonJSMin", "exports", "properties_1", "logger_1", "_version_1", "logger", "json_rpc_provider_1", "_nextId", "buildWeb3LegacyFetcher", "provider", "sendFunc", "fetcher", "method", "params", "_this", "request", "resolve", "reject", "error", "response", "error_1", "buildEip1193Fetcher", "Web3Provider", "_super", "__extends", "network", "path", "jsonRpcFetchFunc", "subprovider", "require_lib", "__commonJSMin", "exports", "abstract_provider_1", "networks_1", "base_provider_1", "alchemy_provider_1", "ankr_provider_1", "cloudflare_provider_1", "etherscan_provider_1", "fallback_provider_1", "ipc_provider_1", "infura_provider_1", "json_rpc_provider_1", "json_rpc_batch_provider_1", "nodesmith_provider_1", "pocket_provider_1", "url_json_rpc_provider_1", "web3_provider_1", "websocket_provider_1", "formatter_1", "logger_1", "_version_1", "logger", "getDefaultProvider", "network", "options", "match", "exports", "require_lib", "__commonJSMin", "exports", "bignumber_1", "bytes_1", "keccak256_1", "sha2_1", "strings_1", "regexBytes", "regexNumber", "regexArray", "Zeros", "logger_1", "_version_1", "logger", "_pack", "type", "value", "isArray", "match", "size", "baseType_1", "count", "result_1", "pack", "types", "values", "tight", "index", "keccak256", "sha256", "exports", "require_lib", "__commonJSMin", "exports", "bignumber_1", "logger_1", "_version_1", "logger", "names", "commify", "value", "comps", "whole", "negative", "suffix", "formatted", "index", "formatUnits", "unitName", "parseUnits", "formatEther", "wei", "parseEther", "ether", "require_utils", "__commonJSMin", "exports", "abi_1", "address_1", "base64", "__importStar", "basex_1", "bytes_1", "hash_1", "hdnode_1", "json_wallets_1", "keccak256_1", "logger_1", "sha2_1", "solidity_1", "random_1", "properties_1", "RLP", "signing_key_1", "strings_1", "transactions_1", "units_1", "wallet_1", "web_1", "sha2_2", "strings_2", "exports", "require_ethers", "__commonJSMin", "exports", "contracts_1", "bignumber_1", "abstract_signer_1", "wallet_1", "constants", "__importStar", "providers", "providers_1", "wordlists_1", "utils", "logger_1", "_version_1", "logger", "require_lib", "__commonJSMin", "exports", "ethers", "__importStar", "anyGlobal", "ethers_1", "src_exports", "__export", "handler", "__toCommonJS", "import_serverless_http", "import_express", "import_cors", "import_express", "import_ethers", "useEthers", "verifyMessage", "loginCredentials", "address", "message", "signedMessage", "recoveredAddress", "error", "user", "userCollection", "useUsers", "getMessage", "address", "user", "userCollection", "updateMessage", "provider", "generateNonce", "verifyMessage", "useEthers", "updateMessage", "useUsers", "router", "express", "req", "res", "body", "provider", "address", "currency", "message", "signedMessage", "user", "userCollection", "accounts", "response", "signupLogin_default", "import_express", "router", "express", "req", "res", "body", "address", "provider", "currency", "user", "userCollection", "newUser", "generateNonce", "err", "signup_default", "import_express", "verifyMessage", "useEthers", "updateMessage", "useUsers", "router", "express", "req", "res", "body", "address", "message", "signedMessage", "provider", "response", "user", "userCollection", "login_default", "import_express", "router", "express", "getMessage", "updateMessage", "useUsers", "req", "res", "provider", "address", "message", "user", "userCollection", "auth_default", "import_express", "router", "express", "req", "res", "primaryAddress", "updatedProvider", "updatedAddress", "user", "userCollection", "account", "address", "existingUser", "err", "provider", "currency", "accountedRemoved", "users_default", "app", "express", "cors", "signupLogin_default", "signup_default", "login_default", "auth_default", "users_default", "handler", "event", "context", "serverless"] -} diff --git a/services/users/Dockerfile b/services/users/Dockerfile index f802bf481..4404be5fb 100644 --- a/services/users/Dockerfile +++ b/services/users/Dockerfile @@ -1,5 +1,5 @@ -# Use Node 18 as the base image -FROM --platform=linux/amd64 node:18 +# Use Alpine with Node 18 as the base image +FROM --platform=arm64 node:18-alpine # Set the working directory to /app WORKDIR /app @@ -8,7 +8,7 @@ WORKDIR /app COPY package.json ./ # Install the dependencies -RUN npm ci +RUN npm install # Copy the rest of the files to the working directory COPY . .