w-converhp 2.0.8 → 2.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- !function(g,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("worker_threads")):"function"==typeof define&&define.amd?define(["worker_threads"],e):(g="undefined"!=typeof globalThis?globalThis:g||self).mergeFiles=e(g.worker_threads)}(this,(function(g){"use strict";"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var e={};!function(e,C){e.exports=function(g){var e={};!function(g){var e=Object.prototype.hasOwnProperty,C="~";function I(){}function t(g,e,C){this.fn=g,this.context=e,this.once=C||!1}function n(g,e,I,n,A){if("function"!=typeof I)throw new TypeError("The listener must be a function");var o=new t(I,n||g,A),c=C?C+e:e;return g._events[c]?g._events[c].fn?g._events[c]=[g._events[c],o]:g._events[c].push(o):(g._events[c]=o,g._eventsCount++),g}function A(g,e){0==--g._eventsCount?g._events=new I:delete g._events[e]}function o(){this._events=new I,this._eventsCount=0}Object.create&&(I.prototype=Object.create(null),(new I).__proto__||(C=!1)),o.prototype.eventNames=function(){var g,I,t=[];if(0===this._eventsCount)return t;for(I in g=this._events)e.call(g,I)&&t.push(C?I.slice(1):I);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(g)):t},o.prototype.listeners=function(g){var e=C?C+g:g,I=this._events[e];if(!I)return[];if(I.fn)return[I.fn];for(var t=0,n=I.length,A=new Array(n);t<n;t++)A[t]=I[t].fn;return A},o.prototype.listenerCount=function(g){var e=C?C+g:g,I=this._events[e];return I?I.fn?1:I.length:0},o.prototype.emit=function(g,e,I,t,n,A){var o=C?C+g:g;if(!this._events[o])return!1;var c,i,r=this._events[o],l=arguments.length;if(r.fn){switch(r.once&&this.removeListener(g,r.fn,void 0,!0),l){case 1:return r.fn.call(r.context),!0;case 2:return r.fn.call(r.context,e),!0;case 3:return r.fn.call(r.context,e,I),!0;case 4:return r.fn.call(r.context,e,I,t),!0;case 5:return r.fn.call(r.context,e,I,t,n),!0;case 6:return r.fn.call(r.context,e,I,t,n,A),!0}for(i=1,c=new Array(l-1);i<l;i++)c[i-1]=arguments[i];r.fn.apply(r.context,c)}else{var s,u=r.length;for(i=0;i<u;i++)switch(r[i].once&&this.removeListener(g,r[i].fn,void 0,!0),l){case 1:r[i].fn.call(r[i].context);break;case 2:r[i].fn.call(r[i].context,e);break;case 3:r[i].fn.call(r[i].context,e,I);break;case 4:r[i].fn.call(r[i].context,e,I,t);break;default:if(!c)for(s=1,c=new Array(l-1);s<l;s++)c[s-1]=arguments[s];r[i].fn.apply(r[i].context,c)}}return!0},o.prototype.on=function(g,e,C){return n(this,g,e,C,!1)},o.prototype.once=function(g,e,C){return n(this,g,e,C,!0)},o.prototype.removeListener=function(g,e,I,t){var n=C?C+g:g;if(!this._events[n])return this;if(!e)return A(this,n),this;var o=this._events[n];if(o.fn)o.fn!==e||t&&!o.once||I&&o.context!==I||A(this,n);else{for(var c=0,i=[],r=o.length;c<r;c++)(o[c].fn!==e||t&&!o[c].once||I&&o[c].context!==I)&&i.push(o[c]);i.length?this._events[n]=1===i.length?i[0]:i:A(this,n)}return this},o.prototype.removeAllListeners=function(g){var e;return g?(e=C?C+g:g,this._events[e]&&A(this,e)):(this._events=new I,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=C,o.EventEmitter=o,g.exports=o}({get exports(){return e},set exports(g){e=g}});var C=e;let I;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let e=(t="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5Xnt6jora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5Xnt6jora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5Xnt6jora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgZT1yZXF1aXJlKCJwYXRoIikscj1yZXF1aXJlKCJmcyIpO2Z1bmN0aW9uIHQoKXtsZXQgZSxyLHQ9bmV3IFByb21pc2UoKGZ1bmN0aW9uKCl7ZT1hcmd1bWVudHNbMF0scj1hcmd1bWVudHNbMV19KSk7cmV0dXJuIHQucmVzb2x2ZT1lLHQucmVqZWN0PXIsdH1mdW5jdGlvbiBuKGUpe3JldHVybiEhci5leGlzdHNTeW5jKGUpJiYoIXIubHN0YXRTeW5jKGUpLmlzRGlyZWN0b3J5KCkmJiFyLmxzdGF0U3luYyhlKS5pc1N5bWJvbGljTGluaygpKX1mdW5jdGlvbiBpKGUpe2lmKCFyLmV4aXN0c1N5bmMoZSkpcmV0dXJue3N1Y2Nlc3M6ImZpbGUgZG9lcyBub3QgZXhpc3Q6ICIrZX07aWYoIW4oZSkpcmV0dXJue2Vycm9yOiJpbnB1dCBwYXRoIGlzIG5vdCBhIGZpbGU6ICIrZX07dHJ5e3IudW5saW5rU3luYyhlKX1jYXRjaChlKXtyZXR1cm57ZXJyb3I6ZX19cmV0dXJue3N1Y2Nlc3M6ImRvbmU6ICIrZX19bGV0IG1lcmdlRmlsZXM9YXN5bmMocyxvLGMsYSk9PntsZXQgdT0iIixsPXQoKTt0cnl7bGV0IGY9ZS5qb2luKHMsbyksbT1yLmNyZWF0ZVdyaXRlU3RyZWFtKGYpO2ZvcihsZXQgbD0wO2w8YztsKyspe2xldCBjPWwsZj1lLmpvaW4ocyxgJHtvfV8ke2N9YCk7aWYoIW4oZikpdGhyb3cgbmV3IEVycm9yKGBtaXNzaW5nIGNodW5rICR7bH0gb2YgZmlsZW5hbWVbJHthfV1gKTtsZXQgeT0oKT0+e2xldCBlPXQoKSxuPXIuY3JlYXRlUmVhZFN0cmVhbShmKTtyZXR1cm4gbi5vbigiZXJyb3IiLChyPT57dT1yLm1lc3NhZ2UsZS5yZWplY3Qocil9KSksbi5vbigiZW5kIiwoKCk9PntpKGYpLGUucmVzb2x2ZSgpfSkpLG4ucGlwZShtLHtlbmQ6ITF9KSxlfTthd2FpdCB5KCl9bS5lbmQoKSxtLm9uKCJlcnJvciIsKGU9Pnt1PWUubWVzc2FnZSxsLnJlamVjdCh1KX0pKSxtLm9uKCJmaW5pc2giLCgoKT0+e2xldCBlPXtmaWxlbmFtZTphLHBhdGg6Zn07bC5yZXNvbHZlKGUpfSkpfWNhdGNoKGUpe3U9ZS5tZXNzYWdlLGwucmVqZWN0KHUpfXJldHVybiBsfTsKCgpsZXQgaW5zdGFuY2UgPSBudWxsCmZ1bmN0aW9uIGluaXQoaW5wdXQpewoKICAgIC8vaW5pdAogICAgbGV0IHIKICAgIAogICAgICAgIHIgPSB7CiAgICAgICAgICAgIG1haW46IG1lcmdlRmlsZXMKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gbWVyZ2VGaWxlcwogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZScsIHJlY3ZNZXNzYWdlKQogICAgICAgIAoKdHJ5ewogICAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKfQpjYXRjaChlcnIpe30KCg==",Buffer.from(t,"base64").toString("utf8"));var t;function n(){let I=new C,t=function(e){try{return new g.Worker(e,{eval:!0})}catch(g){A(g)}}(e);if(!t)return A("invalid worker"),null;function n(){let g=function(){let g,e,C=new Promise((function(){g=arguments[0],e=arguments[1]}));return C.resolve=g,C.reject=e,C}(),e=function(){let g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,e=[],C="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),I=C.length;for(let t=0;t<g;t++)e[t]=C[0|Math.random()*I];return e.join("")}(),C={mode:"call",id:e,fun:"main",input:[...arguments]};return t.postMessage(C),I.once(e,(e=>{"success"===e.state?g.resolve(e.msg):g.reject(e.msg)})),g}function A(g){I.emit("error",g)}return t.on("message",(function(g){let e=g,C=e.mode;"emit"!==C&&"return"!==C||("emit"===C&&I.emit(e.evName,e.msg),"return"===C&&I.emit(e.id,e))})),t.on("error",A),t.on("exit",(g=>{1!==g&&A("exit code["+g+"] !== 1")})),function(){let g={mode:"init",type:"function",input:[...arguments]};t.postMessage(g)}([...arguments]),I.main=n,I.main=n,I.terminate=function(){t?(t.terminate(),t=void 0):A("worker has been terminated")},I}I=async function(){let g=[...arguments],e=n();return await e.main(...g).finally((()=>{e.terminate()}))}}();try{process.on("unhandledRejection",(g=>{console.log("outer:unhandledRejection",g)})),process.on("uncaughtException",(g=>{console.log("outer:uncaughtException",g)})),process.on("uncaughtExceptionMonitor",(g=>{console.log("outer:uncaughtExceptionMonitor",g)}))}catch(g){}return I}(g)}({get exports(){return e},set exports(g){e=g}});var C=e,I={};!function(g,e){g.exports=function(){const g="function"==typeof Buffer,e="function"==typeof TextDecoder?new TextDecoder:void 0,C=(g=>{let e={};return g.forEach(((g,C)=>e[g]=C)),e})(("function"==typeof TextEncoder&&new TextEncoder,Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="))),I=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,t=String.fromCharCode.bind(String),n="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):g=>new Uint8Array(Array.prototype.slice.call(g,0)),A=g=>g.replace(/[^A-Za-z0-9\+\/]/g,""),o=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,c=g=>{switch(g.length){case 4:var e=((7&g.charCodeAt(0))<<18|(63&g.charCodeAt(1))<<12|(63&g.charCodeAt(2))<<6|63&g.charCodeAt(3))-65536;return t(55296+(e>>>10))+t(56320+(1023&e));case 3:return t((15&g.charCodeAt(0))<<12|(63&g.charCodeAt(1))<<6|63&g.charCodeAt(2));default:return t((31&g.charCodeAt(0))<<6|63&g.charCodeAt(1))}},i=g=>g.replace(o,c),r=g=>{if(g=g.replace(/\s+/g,""),!I.test(g))throw new TypeError("malformed base64.");g+="==".slice(2-(3&g.length));let e,n,A,o="";for(let I=0;I<g.length;)e=C[g.charAt(I++)]<<18|C[g.charAt(I++)]<<12|(n=C[g.charAt(I++)])<<6|(A=C[g.charAt(I++)]),o+=64===n?t(e>>16&255):64===A?t(e>>16&255,e>>8&255):t(e>>16&255,e>>8&255,255&e);return o},l="function"==typeof atob?g=>atob(A(g)):g?g=>Buffer.from(g,"base64").toString("binary"):r,s=g?g=>n(Buffer.from(g,"base64")):g=>n(l(g).split("").map((g=>g.charCodeAt(0)))),u=g?g=>Buffer.from(g,"base64").toString("utf8"):e?g=>e.decode(s(g)):g=>i(l(g)),a=g=>A(g.replace(/[-_]/g,(g=>"-"==g?"+":"/"))),d=g=>u(a(g)),p=d;var b={};!function(g){var e=Object.prototype.hasOwnProperty,C="~";function I(){}function t(g,e,C){this.fn=g,this.context=e,this.once=C||!1}function n(g,e,I,n,A){if("function"!=typeof I)throw new TypeError("The listener must be a function");var o=new t(I,n||g,A),c=C?C+e:e;return g._events[c]?g._events[c].fn?g._events[c]=[g._events[c],o]:g._events[c].push(o):(g._events[c]=o,g._eventsCount++),g}function A(g,e){0==--g._eventsCount?g._events=new I:delete g._events[e]}function o(){this._events=new I,this._eventsCount=0}Object.create&&(I.prototype=Object.create(null),(new I).__proto__||(C=!1)),o.prototype.eventNames=function(){var g,I,t=[];if(0===this._eventsCount)return t;for(I in g=this._events)e.call(g,I)&&t.push(C?I.slice(1):I);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(g)):t},o.prototype.listeners=function(g){var e=C?C+g:g,I=this._events[e];if(!I)return[];if(I.fn)return[I.fn];for(var t=0,n=I.length,A=new Array(n);t<n;t++)A[t]=I[t].fn;return A},o.prototype.listenerCount=function(g){var e=C?C+g:g,I=this._events[e];return I?I.fn?1:I.length:0},o.prototype.emit=function(g,e,I,t,n,A){var o=C?C+g:g;if(!this._events[o])return!1;var c,i,r=this._events[o],l=arguments.length;if(r.fn){switch(r.once&&this.removeListener(g,r.fn,void 0,!0),l){case 1:return r.fn.call(r.context),!0;case 2:return r.fn.call(r.context,e),!0;case 3:return r.fn.call(r.context,e,I),!0;case 4:return r.fn.call(r.context,e,I,t),!0;case 5:return r.fn.call(r.context,e,I,t,n),!0;case 6:return r.fn.call(r.context,e,I,t,n,A),!0}for(i=1,c=new Array(l-1);i<l;i++)c[i-1]=arguments[i];r.fn.apply(r.context,c)}else{var s,u=r.length;for(i=0;i<u;i++)switch(r[i].once&&this.removeListener(g,r[i].fn,void 0,!0),l){case 1:r[i].fn.call(r[i].context);break;case 2:r[i].fn.call(r[i].context,e);break;case 3:r[i].fn.call(r[i].context,e,I);break;case 4:r[i].fn.call(r[i].context,e,I,t);break;default:if(!c)for(s=1,c=new Array(l-1);s<l;s++)c[s-1]=arguments[s];r[i].fn.apply(r[i].context,c)}}return!0},o.prototype.on=function(g,e,C){return n(this,g,e,C,!1)},o.prototype.once=function(g,e,C){return n(this,g,e,C,!0)},o.prototype.removeListener=function(g,e,I,t){var n=C?C+g:g;if(!this._events[n])return this;if(!e)return A(this,n),this;var o=this._events[n];if(o.fn)o.fn!==e||t&&!o.once||I&&o.context!==I||A(this,n);else{for(var c=0,i=[],r=o.length;c<r;c++)(o[c].fn!==e||t&&!o[c].once||I&&o[c].context!==I)&&i.push(o[c]);i.length?this._events[n]=1===i.length?i[0]:i:A(this,n)}return this},o.prototype.removeAllListeners=function(g){var e;return g?(e=C?C+g:g,this._events[e]&&A(this,e)):(this._events=new I,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=C,o.EventEmitter=o,g.exports=o}({get exports(){return b},set exports(g){b=g}});var m=b;let Z;!function(){if("browser"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let g=p("CgoKInVzZSBzdHJpY3QiO3ZhciBlPXJlcXVpcmUoInBhdGgiKSxyPXJlcXVpcmUoImZzIik7ZnVuY3Rpb24gdCgpe2xldCBlLHIsdD1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oKXtlPWFyZ3VtZW50c1swXSxyPWFyZ3VtZW50c1sxXX0pKTtyZXR1cm4gdC5yZXNvbHZlPWUsdC5yZWplY3Q9cix0fWZ1bmN0aW9uIG4oZSl7cmV0dXJuISFyLmV4aXN0c1N5bmMoZSkmJighci5sc3RhdFN5bmMoZSkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKGUpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIGkoZSl7aWYoIXIuZXhpc3RzU3luYyhlKSlyZXR1cm57c3VjY2VzczoiZmlsZSBkb2VzIG5vdCBleGlzdDogIitlfTtpZighbihlKSlyZXR1cm57ZXJyb3I6ImlucHV0IHBhdGggaXMgbm90IGEgZmlsZTogIitlfTt0cnl7ci51bmxpbmtTeW5jKGUpfWNhdGNoKGUpe3JldHVybntlcnJvcjplfX1yZXR1cm57c3VjY2VzczoiZG9uZTogIitlfX1sZXQgbWVyZ2VGaWxlcz1hc3luYyhzLG8sYyxhKT0+e2xldCB1PSIiLGw9dCgpO3RyeXtsZXQgZj1lLmpvaW4ocyxvKSxtPXIuY3JlYXRlV3JpdGVTdHJlYW0oZik7Zm9yKGxldCBsPTA7bDxjO2wrKyl7bGV0IGM9bCxmPWUuam9pbihzLGAke299XyR7Y31gKTtpZighbihmKSl0aHJvdyBuZXcgRXJyb3IoYG1pc3NpbmcgY2h1bmsgJHtsfSBvZiBmaWxlbmFtZVske2F9XWApO2xldCB5PSgpPT57bGV0IGU9dCgpLG49ci5jcmVhdGVSZWFkU3RyZWFtKGYpO3JldHVybiBuLm9uKCJlcnJvciIsKHI9Pnt1PXIubWVzc2FnZSxlLnJlamVjdChyKX0pKSxuLm9uKCJlbmQiLCgoKT0+e2koZiksZS5yZXNvbHZlKCl9KSksbi5waXBlKG0se2VuZDohMX0pLGV9O2F3YWl0IHkoKX1tLmVuZCgpLG0ub24oImVycm9yIiwoZT0+e3U9ZS5tZXNzYWdlLGwucmVqZWN0KHUpfSkpLG0ub24oImZpbmlzaCIsKCgpPT57bGV0IGU9e2ZpbGVuYW1lOmEscGF0aDpmfTtsLnJlc29sdmUoZSl9KSl9Y2F0Y2goZSl7dT1lLm1lc3NhZ2UsbC5yZWplY3QodSl9cmV0dXJuIGx9OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogbWVyZ2VGaWxlcwogICAgICAgIH0KICAgICAgICAKCiAgICAvL29uCiAgICAKCiAgICAvL3NhdmUKICAgIGluc3RhbmNlID0gcgoKfQoKZnVuY3Rpb24gc2VuZE1lc3NhZ2UoZGF0YSkgewogICAgCiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShkYXRhKQogICAgICAgIAp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtZXJnZUZpbGVzCiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgCiAgICAgICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdlbWl0JywKICAgICAgICAgICAgICAgIGV2TmFtZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgIG1zZzogZXJyLAogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICAgICAgfQogICAgICAgICAgICAKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9mdW4KICAgICAgICAgICAgbGV0IGZ1biA9IGluc3RhbmNlW2RhdGEuZnVuXQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CgogICAgICAgICAgICAvL2V4ZWMKICAgICAgICAgICAgYXdhaXQgZnVuKC4uLmlucHV0KQogICAgICAgICAgICAgICAgLnRoZW4oKHN1YykgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdzdWNjZXNzJwogICAgICAgICAgICAgICAgICAgIG1zZz1zdWMKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdlcnJvcicKICAgICAgICAgICAgICAgICAgICBtc2c9ZXJyCiAgICAgICAgICAgICAgICB9KQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KICAgICAgICAKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIHJlY3ZNZXNzYWdlKGUuZGF0YSkKICAgICAgICB9CiAgICAgICAgCgp0cnl7CiAgICBwcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuaGFuZGxlZFJlamVjdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCBlcnIpCiAgICB9KQp9CmNhdGNoKGVycil7fQoK");function e(){let e=new m,C=function(g){try{let e=new Blob([g]),C=window.URL||window.webkitURL;return new Worker(C.createObjectURL(e))}catch(g){t(g)}}(g);if(!C)return t("invalid worker"),null;function I(){let g=function(){let g,e,C=new Promise((function(){g=arguments[0],e=arguments[1]}));return C.resolve=g,C.reject=e,C}(),I=function(){let g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,e=[],C="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),I=C.length;for(let t=0;t<g;t++)e[t]=C[0|Math.random()*I];return e.join("")}(),t={mode:"call",id:I,fun:"main",input:[...arguments]};return C.postMessage(t),e.once(I,(e=>{"success"===e.state?g.resolve(e.msg):g.reject(e.msg)})),g}function t(g){e.emit("error",g)}return C.onmessage=function(g){!function(g){let C=g,I=C.mode;"emit"!==I&&"return"!==I||("emit"===I&&e.emit(C.evName,C.msg),"return"===I&&e.emit(C.id,C))}(g.data)},C.onerror=t,C.onmessageerror=function(g){t(g.data)},function(){let g={mode:"init",type:"function",input:[...arguments]};C.postMessage(g)}([...arguments]),e.main=I,e.main=I,e.terminate=function(){C?(C.terminate(),C=void 0):t("worker has been terminated")},e}Z=async function(){let g=[...arguments],C=e();return await C.main(...g).finally((()=>{C.terminate()}))}}();try{process.on("unhandledRejection",(g=>{console.log("outer:unhandledRejection",g)})),process.on("uncaughtException",(g=>{console.log("outer:uncaughtException",g)})),process.on("uncaughtExceptionMonitor",(g=>{console.log("outer:uncaughtExceptionMonitor",g)}))}catch(g){}return Z}()}({get exports(){return I},set exports(g){I=g}});var t=I;let n;return n="undefined"!=typeof window&&void 0!==window.document?t:C,n}));
1
+ !function(I,C){"object"==typeof exports&&"undefined"!=typeof module?module.exports=C(require("worker_threads")):"function"==typeof define&&define.amd?define(["worker_threads"],C):(I="undefined"!=typeof globalThis?globalThis:I||self).mergeFiles=C(I.worker_threads)}(this,(function(I){"use strict";"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var C={};!function(C,g){C.exports=function(I){var C={};!function(I){var C=Object.prototype.hasOwnProperty,g="~";function e(){}function t(I,C,g){this.fn=I,this.context=C,this.once=g||!1}function c(I,C,e,c,d){if("function"!=typeof e)throw new TypeError("The listener must be a function");var n=new t(e,c||I,d),i=g?g+C:C;return I._events[i]?I._events[i].fn?I._events[i]=[I._events[i],n]:I._events[i].push(n):(I._events[i]=n,I._eventsCount++),I}function d(I,C){0==--I._eventsCount?I._events=new e:delete I._events[C]}function n(){this._events=new e,this._eventsCount=0}Object.create&&(e.prototype=Object.create(null),(new e).__proto__||(g=!1)),n.prototype.eventNames=function(){var I,e,t=[];if(0===this._eventsCount)return t;for(e in I=this._events)C.call(I,e)&&t.push(g?e.slice(1):e);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(I)):t},n.prototype.listeners=function(I){var C=g?g+I:I,e=this._events[C];if(!e)return[];if(e.fn)return[e.fn];for(var t=0,c=e.length,d=new Array(c);t<c;t++)d[t]=e[t].fn;return d},n.prototype.listenerCount=function(I){var C=g?g+I:I,e=this._events[C];return e?e.fn?1:e.length:0},n.prototype.emit=function(I,C,e,t,c,d){var n=g?g+I:I;if(!this._events[n])return!1;var i,l,o=this._events[n],m=arguments.length;if(o.fn){switch(o.once&&this.removeListener(I,o.fn,void 0,!0),m){case 1:return o.fn.call(o.context),!0;case 2:return o.fn.call(o.context,C),!0;case 3:return o.fn.call(o.context,C,e),!0;case 4:return o.fn.call(o.context,C,e,t),!0;case 5:return o.fn.call(o.context,C,e,t,c),!0;case 6:return o.fn.call(o.context,C,e,t,c,d),!0}for(l=1,i=new Array(m-1);l<m;l++)i[l-1]=arguments[l];o.fn.apply(o.context,i)}else{var A,b=o.length;for(l=0;l<b;l++)switch(o[l].once&&this.removeListener(I,o[l].fn,void 0,!0),m){case 1:o[l].fn.call(o[l].context);break;case 2:o[l].fn.call(o[l].context,C);break;case 3:o[l].fn.call(o[l].context,C,e);break;case 4:o[l].fn.call(o[l].context,C,e,t);break;default:if(!i)for(A=1,i=new Array(m-1);A<m;A++)i[A-1]=arguments[A];o[l].fn.apply(o[l].context,i)}}return!0},n.prototype.on=function(I,C,g){return c(this,I,C,g,!1)},n.prototype.once=function(I,C,g){return c(this,I,C,g,!0)},n.prototype.removeListener=function(I,C,e,t){var c=g?g+I:I;if(!this._events[c])return this;if(!C)return d(this,c),this;var n=this._events[c];if(n.fn)n.fn!==C||t&&!n.once||e&&n.context!==e||d(this,c);else{for(var i=0,l=[],o=n.length;i<o;i++)(n[i].fn!==C||t&&!n[i].once||e&&n[i].context!==e)&&l.push(n[i]);l.length?this._events[c]=1===l.length?l[0]:l:d(this,c)}return this},n.prototype.removeAllListeners=function(I){var C;return I?(C=g?g+I:I,this._events[C]&&d(this,C)):(this._events=new e,this._eventsCount=0),this},n.prototype.off=n.prototype.removeListener,n.prototype.addListener=n.prototype.on,n.prefixed=g,n.EventEmitter=n,I.exports=n}({get exports(){return C},set exports(I){C=I}});var g=C;let e;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let C=(t="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5Xnt6jora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5Xnt6jora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5Xnt6jora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIikscj1yZXF1aXJlKCJmcyIpO2Z1bmN0aW9uIGUoKXtsZXQgdCxyLGU9bmV3IFByb21pc2UoKGZ1bmN0aW9uKCl7dD1hcmd1bWVudHNbMF0scj1hcmd1bWVudHNbMV19KSk7cmV0dXJuIGUucmVzb2x2ZT10LGUucmVqZWN0PXIsZX1mdW5jdGlvbiBuKHQpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9ZnVuY3Rpb24gaSh0KXtpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2ZvcihsZXQgciBpbiB0KXJldHVybiExO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIG8odCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gdCE9dH1mdW5jdGlvbiBjKHQpe3JldHVybiEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgVW5kZWZpbmVkXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdWxsXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFpKHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4hKCFvKHQpfHwiIiE9PXQpfSh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuISFuKHQpJiYwPT09dC5sZW5ndGh9KHQpfHwhIXUodCkpKSkpfWZ1bmN0aW9uIGYodCl7cmV0dXJuISghbyh0KXx8IiI9PT10KX12YXIgbD0vXHMvO3ZhciBhPS9eXHMrLztmdW5jdGlvbiBzKHQpe3JldHVybiB0P3Quc2xpY2UoMCxmdW5jdGlvbih0KXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZsLnRlc3QodC5jaGFyQXQocikpOyk7cmV0dXJuIHJ9KHQpKzEpLnJlcGxhY2UoYSwiIik6dH1mdW5jdGlvbiBwKHQpe3ZhciByPXR5cGVvZiB0O3JldHVybiBudWxsIT10JiYoIm9iamVjdCI9PXJ8fCJmdW5jdGlvbiI9PXIpfXZhciB5PSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxiPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaD15fHxifHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHY9aC5TeW1ib2wsZz1PYmplY3QucHJvdG90eXBlLGo9Zy5oYXNPd25Qcm9wZXJ0eSxTPWcudG9TdHJpbmcsZD12P3YudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBtPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIE89IltvYmplY3QgTnVsbF0iLHg9IltvYmplY3QgVW5kZWZpbmVkXSIsUj12P3YudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIHcodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD94Ok86UiYmUiBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIHI9ai5jYWxsKHQsZCksZT10W2RdO3RyeXt0W2RdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIGk9Uy5jYWxsKHQpO3JldHVybiBuJiYocj90W2RdPWU6ZGVsZXRlIHRbZF0pLGl9KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBtLmNhbGwodCl9KHQpfXZhciBOPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uICQodCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fSh0KSYmdyh0KT09Tn12YXIgQT1OYU4saz0vXlstK10weFswLTlhLWZdKyQvaSxGPS9eMGJbMDFdKyQvaSxJPS9eMG9bMC03XSskL2kscT1wYXJzZUludDtmdW5jdGlvbiBFKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZigkKHQpKXJldHVybiBBO2lmKHAodCkpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PXAocik/cisiIjpyfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PXModCk7dmFyIGU9Ri50ZXN0KHQpO3JldHVybiBlfHxJLnRlc3QodCk/cSh0LnNsaWNlKDIpLGU/Mjo4KTprLnRlc3QodCk/QTordH12YXIgTD0xLzAsTT0xNzk3NjkzMTM0ODYyMzE1N2UyOTI7ZnVuY3Rpb24gUCh0KXtyZXR1cm4gdD8odD1FKHQpKT09PUx8fHQ9PT0tTD8odDwwPy0xOjEpKk06dD09dD90OjA6MD09PXQ/dDowfWZ1bmN0aW9uIFQodCl7dmFyIHI9UCh0KSxlPXIlMTtyZXR1cm4gcj09cj9lP3ItZTpyOjB9ZnVuY3Rpb24gVSh0KXtsZXQgcj0hMTtpZihmKHQpKXI9IWlzTmFOKE51bWJlcih0KSk7ZWxzZSBpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2lmKHUodCkpcmV0dXJuITE7cj0hMH1yZXR1cm4gcn1mdW5jdGlvbiBEKHQpe2lmKCFVKHQpKXJldHVybiAwO3JldHVybiBQKHQpfWZ1bmN0aW9uIFcodCl7cmV0dXJuISFVKHQpJiYodD1EKHQpLCJudW1iZXIiPT10eXBlb2Yocj10KSYmcj09VChyKSk7dmFyIHJ9dmFyIF89QXJyYXkuaXNBcnJheSx6PTEvMCxCPXY/di5wcm90b3R5cGU6dm9pZCAwLEM9Qj9CLnRvU3RyaW5nOnZvaWQgMDtmdW5jdGlvbiBHKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihfKHQpKXJldHVybiBmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxpPUFycmF5KG4pOysrZTxuOylpW2VdPXIodFtlXSxlLHQpO3JldHVybiBpfSh0LEcpKyIiO2lmKCQodCkpcmV0dXJuIEM/Qy5jYWxsKHQpOiIiO3ZhciByPXQrIiI7cmV0dXJuIjAiPT1yJiYxL3Q9PS16PyItMCI6cn1mdW5jdGlvbiBIKHQpe3JldHVybiBudWxsPT10PyIiOkcodCl9dmFyIEo9aC5pc0Zpbml0ZSxLPU1hdGgubWluO3ZhciBRLFY9KFE9TWF0aFsicm91bmQiXSxmdW5jdGlvbih0LHIpe2lmKHQ9RSh0KSwocj1udWxsPT1yPzA6SyhUKHIpLDI5MikpJiZKKHQpKXt2YXIgZT0oSCh0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygoZT0oSChRKGVbMF0rImUiKygrZVsxXStyKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygrZVsxXS1yKSl9cmV0dXJuIFEodCl9KTtmdW5jdGlvbiBYKHQpe2lmKCFVKHQpKXJldHVybiAwO3Q9RCh0KTtsZXQgcj1WKHQpO3JldHVybiIwIj09PVN0cmluZyhyKT8wOnJ9ZnVuY3Rpb24gWSh0KXtpZighVyh0KSlyZXR1cm4hMTtyZXR1cm4gWCh0KT49MH1mdW5jdGlvbiBaKHQscil7aWYoIWYodCkpcmV0dXJuIiI7aWYoIVkocikpcmV0dXJuIiI7aWYoMD09PShyPVgocikpKXJldHVybiIiO2xldCBlPXQubGVuZ3RoLXI7cmV0dXJuIGU8MCYmKGU9MCksdC5zdWJzdHJpbmcoZSxlK3IpfWZ1bmN0aW9uIHR0KHQscil7cmV0dXJuIGYodCkmJlkocik/MD09PShyPVgocikpP3Q6ZnVuY3Rpb24odCxyKXtyZXR1cm4gZih0KSYmWShyKT8wPT09KHI9WChyKSk/IiI6dC5zdWJzdHJpbmcoMCxyKToiIn0odCx0Lmxlbmd0aC1yKToiIn1mdW5jdGlvbiBydCh0KXtpZighZih0KSlyZXR1cm57cGF0aDoiIixpc1Jvb3Q6ITF9O2Zvcig7dC5pbmRleE9mKCJcXFxcIik+PTA7KXQ9dC5yZXBsYWNlKCJcXFxcIiwiXFwiKTtmb3IoO3QuaW5kZXhPZigiLy8iKT49MDspdD10LnJlcGxhY2UoIi8vIiwiLyIpO2lmKCI6Ij09PVoodCwxKSlyZXR1cm57cGF0aDpgJHt0fVxcYCxpc1Jvb3Q6ITB9O2lmKCJcXCI9PT1aKHQsMSkpe2xldCByPXR0KHQsMSk7cmV0dXJuIjoiPT09WihyLDEpP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19aWYoIi8iPT09Wih0LDEpKXtsZXQgcj10dCh0LDEpO3JldHVybiAwPT09ci5sZW5ndGg/e3BhdGg6dCxpc1Jvb3Q6ITB9OntwYXRoOnIsaXNSb290OiExfX1yZXR1cm57cGF0aDp0LGlzUm9vdDohMX19ZnVuY3Rpb24gZXQodCl7aWYoIWYodCkpcmV0dXJuIiI7bGV0IHI9cnQodCk7aWYoci5pc1Jvb3QpcmV0dXJuIHIucGF0aDtsZXQgZT1mdW5jdGlvbih0KXtpZighZih0KSlyZXR1cm4iIjtsZXQgcj1ydCh0KTtpZihyLmlzUm9vdClyZXR1cm4gci5wYXRoO2xldCBlPXIucGF0aDt0cnl7ZT1lLnNwbGl0KCJcXCIpLnBvcCgpLnNwbGl0KCIvIikucG9wKCl9Y2F0Y2godCl7fXJldHVybiBlfSh0PXIucGF0aCk7aWYoIWYoZSkpcmV0dXJuIHQ7bGV0IG49cnQodD10dCh0LGUubGVuZ3RoKSk7cmV0dXJuIG4uaXNSb290LG4ucGF0aH1mdW5jdGlvbiBudCh0KXtyZXR1cm4hIXIuZXhpc3RzU3luYyh0KSYmKCFyLmxzdGF0U3luYyh0KS5pc0ZpbGUoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIGl0KHQpe3JldHVybiEhci5leGlzdHNTeW5jKHQpJiYoIXIubHN0YXRTeW5jKHQpLmlzRGlyZWN0b3J5KCkmJiFyLmxzdGF0U3luYyh0KS5pc1N5bWJvbGljTGluaygpKX1mdW5jdGlvbiBvdCh0KXtpZighci5leGlzdHNTeW5jKHQpKXJldHVybntzdWNjZXNzOiJmaWxlIGRvZXMgbm90IGV4aXN0OiAiK3R9O2lmKCFpdCh0KSlyZXR1cm57ZXJyb3I6ImlucHV0IHBhdGggaXMgbm90IGEgZmlsZTogIit0fTt0cnl7ci51bmxpbmtTeW5jKHQpfWNhdGNoKHQpe3JldHVybntlcnJvcjp0fX1yZXR1cm57c3VjY2VzczoiZG9uZTogIit0fX1hc3luYyBmdW5jdGlvbiB1dCh0LGksbyl7bGV0IHU9IiI7aWYoIW4oZj1pKXx8MD09PWYubGVuZ3RofHwxPT09Zi5sZW5ndGgmJmMoZlswXSkpdGhyb3cgbmV3IEVycm9yKCJmcHNJbiBpbiBub3QgYW4gZWZmZWN0aXZlIGFycmF5Iik7dmFyIGY7bGV0IGw9ZXQobyk7bnQobCl8fGZ1bmN0aW9uKHQpe2lmKG50KHQpKXJldHVybntzdWNjZXNzOiJpbnB1dCBmb2xkZXIgaXMgYWxyZWFkeSBleGlzdHM6ICIrdH07aWYoci5leGlzdHNTeW5jKHQpKXJldHVybntlcnJvcjoiaW5wdXQgcGF0aCBhbHJlYWR5IGV4aXN0czogIit0fTt0cnl7ci5ta2RpclN5bmModCx7cmVjdXJzaXZlOiEwfSl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOnR9fX0obCk7bGV0IGE9ZSgpO3RyeXtsZXQgbj1yLmNyZWF0ZVdyaXRlU3RyZWFtKG8pO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXtsZXQgbz1pW3RdO2lmKCFpdChvKSl0aHJvdyBuZXcgRXJyb3IoYGZwSW5bJHtvfV0gaXMgbm90IGEgZmlsZWApO2xldCBjPSgpPT57bGV0IHQ9ZSgpLGk9ci5jcmVhdGVSZWFkU3RyZWFtKG8pO3JldHVybiBpLm9uKCJlcnJvciIsKHI9Pnt1PXIubWVzc2FnZSx0LnJlamVjdChyKX0pKSxpLm9uKCJlbmQiLCgoKT0+e290KG8pLHQucmVzb2x2ZSgpfSkpLGkucGlwZShuLHtlbmQ6ITF9KSx0fTthd2FpdCBjKCl9bi5lbmQoKSxuLm9uKCJlcnJvciIsKHQ9Pnt1PXQubWVzc2FnZSxhLnJlamVjdCh1KX0pKSxuLm9uKCJmaW5pc2giLCgoKT0+e2xldCByPXtmaWxlbmFtZTp0LHBhdGg6b307YS5yZXNvbHZlKHIpfSkpfWNhdGNoKHQpe3U9dC5tZXNzYWdlLGEucmVqZWN0KHUpfXJldHVybiBhfWxldCBtZXJnZUZpbGVzPWFzeW5jKHIsZSxuLGkpPT57bGV0IG89W107Zm9yKGxldCBpPTA7aTxuO2krKyl7bGV0IG49dC5qb2luKHIsYCR7ZX1fJHtpfWApO28ucHVzaChuKX1sZXQgdT10LmpvaW4ocixlKTtyZXR1cm4gYXdhaXQgdXQoaSxvLHUpfTsKCgpsZXQgaW5zdGFuY2UgPSBudWxsCmZ1bmN0aW9uIGluaXQoaW5wdXQpewoKICAgIC8vaW5pdAogICAgbGV0IHIKICAgIAogICAgICAgIHIgPSB7CiAgICAgICAgICAgIG1haW46IG1lcmdlRmlsZXMKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gbWVyZ2VGaWxlcwogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZScsIHJlY3ZNZXNzYWdlKQogICAgICAgIAoKdHJ5ewogICAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKfQpjYXRjaChlcnIpe30KCg==",Buffer.from(t,"base64").toString("utf8"));var t;function c(){let e=new g,t=function(C){try{return new I.Worker(C,{eval:!0})}catch(I){d(I)}}(C);if(!t)return d("invalid worker"),null;function c(){let I=function(){let I,C,g=new Promise((function(){I=arguments[0],C=arguments[1]}));return g.resolve=I,g.reject=C,g}(),C=function(){let I=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,C=[],g="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),e=g.length;for(let t=0;t<I;t++)C[t]=g[0|Math.random()*e];return C.join("")}(),g={mode:"call",id:C,fun:"main",input:[...arguments]};return t.postMessage(g),e.once(C,(C=>{"success"===C.state?I.resolve(C.msg):I.reject(C.msg)})),I}function d(I){e.emit("error",I)}return t.on("message",(function(I){let C=I,g=C.mode;"emit"!==g&&"return"!==g||("emit"===g&&e.emit(C.evName,C.msg),"return"===g&&e.emit(C.id,C))})),t.on("error",d),t.on("exit",(I=>{1!==I&&d("exit code["+I+"] !== 1")})),function(){let I={mode:"init",type:"function",input:[...arguments]};t.postMessage(I)}([...arguments]),e.main=c,e.main=c,e.terminate=function(){t?(t.terminate(),t=void 0):d("worker has been terminated")},e}e=async function(){let I=[...arguments],C=c();return await C.main(...I).finally((()=>{C.terminate()}))}}();try{process.on("unhandledRejection",(I=>{console.log("outer:unhandledRejection",I)})),process.on("uncaughtException",(I=>{console.log("outer:uncaughtException",I)})),process.on("uncaughtExceptionMonitor",(I=>{console.log("outer:uncaughtExceptionMonitor",I)}))}catch(I){}return e}(I)}({get exports(){return C},set exports(I){C=I}});var g=C,e={};!function(I,C){I.exports=function(){const I="function"==typeof Buffer,C="function"==typeof TextDecoder?new TextDecoder:void 0,g=(I=>{let C={};return I.forEach(((I,g)=>C[I]=g)),C})(("function"==typeof TextEncoder&&new TextEncoder,Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="))),e=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,t=String.fromCharCode.bind(String),c="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):I=>new Uint8Array(Array.prototype.slice.call(I,0)),d=I=>I.replace(/[^A-Za-z0-9\+\/]/g,""),n=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,i=I=>{switch(I.length){case 4:var C=((7&I.charCodeAt(0))<<18|(63&I.charCodeAt(1))<<12|(63&I.charCodeAt(2))<<6|63&I.charCodeAt(3))-65536;return t(55296+(C>>>10))+t(56320+(1023&C));case 3:return t((15&I.charCodeAt(0))<<12|(63&I.charCodeAt(1))<<6|63&I.charCodeAt(2));default:return t((31&I.charCodeAt(0))<<6|63&I.charCodeAt(1))}},l=I=>I.replace(n,i),o=I=>{if(I=I.replace(/\s+/g,""),!e.test(I))throw new TypeError("malformed base64.");I+="==".slice(2-(3&I.length));let C,c,d,n="";for(let e=0;e<I.length;)C=g[I.charAt(e++)]<<18|g[I.charAt(e++)]<<12|(c=g[I.charAt(e++)])<<6|(d=g[I.charAt(e++)]),n+=64===c?t(C>>16&255):64===d?t(C>>16&255,C>>8&255):t(C>>16&255,C>>8&255,255&C);return n},m="function"==typeof atob?I=>atob(d(I)):I?I=>Buffer.from(I,"base64").toString("binary"):o,A=I?I=>c(Buffer.from(I,"base64")):I=>c(m(I).split("").map((I=>I.charCodeAt(0)))),b=I?I=>Buffer.from(I,"base64").toString("utf8"):C?I=>C.decode(A(I)):I=>l(m(I)),p=I=>d(I.replace(/[-_]/g,(I=>"-"==I?"+":"/"))),Z=I=>b(p(I)),u=Z;var X={};!function(I){var C=Object.prototype.hasOwnProperty,g="~";function e(){}function t(I,C,g){this.fn=I,this.context=C,this.once=g||!1}function c(I,C,e,c,d){if("function"!=typeof e)throw new TypeError("The listener must be a function");var n=new t(e,c||I,d),i=g?g+C:C;return I._events[i]?I._events[i].fn?I._events[i]=[I._events[i],n]:I._events[i].push(n):(I._events[i]=n,I._eventsCount++),I}function d(I,C){0==--I._eventsCount?I._events=new e:delete I._events[C]}function n(){this._events=new e,this._eventsCount=0}Object.create&&(e.prototype=Object.create(null),(new e).__proto__||(g=!1)),n.prototype.eventNames=function(){var I,e,t=[];if(0===this._eventsCount)return t;for(e in I=this._events)C.call(I,e)&&t.push(g?e.slice(1):e);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(I)):t},n.prototype.listeners=function(I){var C=g?g+I:I,e=this._events[C];if(!e)return[];if(e.fn)return[e.fn];for(var t=0,c=e.length,d=new Array(c);t<c;t++)d[t]=e[t].fn;return d},n.prototype.listenerCount=function(I){var C=g?g+I:I,e=this._events[C];return e?e.fn?1:e.length:0},n.prototype.emit=function(I,C,e,t,c,d){var n=g?g+I:I;if(!this._events[n])return!1;var i,l,o=this._events[n],m=arguments.length;if(o.fn){switch(o.once&&this.removeListener(I,o.fn,void 0,!0),m){case 1:return o.fn.call(o.context),!0;case 2:return o.fn.call(o.context,C),!0;case 3:return o.fn.call(o.context,C,e),!0;case 4:return o.fn.call(o.context,C,e,t),!0;case 5:return o.fn.call(o.context,C,e,t,c),!0;case 6:return o.fn.call(o.context,C,e,t,c,d),!0}for(l=1,i=new Array(m-1);l<m;l++)i[l-1]=arguments[l];o.fn.apply(o.context,i)}else{var A,b=o.length;for(l=0;l<b;l++)switch(o[l].once&&this.removeListener(I,o[l].fn,void 0,!0),m){case 1:o[l].fn.call(o[l].context);break;case 2:o[l].fn.call(o[l].context,C);break;case 3:o[l].fn.call(o[l].context,C,e);break;case 4:o[l].fn.call(o[l].context,C,e,t);break;default:if(!i)for(A=1,i=new Array(m-1);A<m;A++)i[A-1]=arguments[A];o[l].fn.apply(o[l].context,i)}}return!0},n.prototype.on=function(I,C,g){return c(this,I,C,g,!1)},n.prototype.once=function(I,C,g){return c(this,I,C,g,!0)},n.prototype.removeListener=function(I,C,e,t){var c=g?g+I:I;if(!this._events[c])return this;if(!C)return d(this,c),this;var n=this._events[c];if(n.fn)n.fn!==C||t&&!n.once||e&&n.context!==e||d(this,c);else{for(var i=0,l=[],o=n.length;i<o;i++)(n[i].fn!==C||t&&!n[i].once||e&&n[i].context!==e)&&l.push(n[i]);l.length?this._events[c]=1===l.length?l[0]:l:d(this,c)}return this},n.prototype.removeAllListeners=function(I){var C;return I?(C=g?g+I:I,this._events[C]&&d(this,C)):(this._events=new e,this._eventsCount=0),this},n.prototype.off=n.prototype.removeListener,n.prototype.addListener=n.prototype.on,n.prefixed=g,n.EventEmitter=n,I.exports=n}({get exports(){return X},set exports(I){X=I}});var K=X;let y;!function(){if("browser"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let I=u("CgoKInVzZSBzdHJpY3QiO3ZhciB0PXJlcXVpcmUoInBhdGgiKSxyPXJlcXVpcmUoImZzIik7ZnVuY3Rpb24gZSgpe2xldCB0LHIsZT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oKXt0PWFyZ3VtZW50c1swXSxyPWFyZ3VtZW50c1sxXX0pKTtyZXR1cm4gZS5yZXNvbHZlPXQsZS5yZWplY3Q9cixlfWZ1bmN0aW9uIG4odCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBpKHQpe2lmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE9iamVjdF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7Zm9yKGxldCByIGluIHQpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gbyh0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiB1KHQpe3JldHVybiB0IT10fWZ1bmN0aW9uIGModCl7cmV0dXJuISFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBVbmRlZmluZWRdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCghIWZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bGxdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCghIWkodCl8fCghIWZ1bmN0aW9uKHQpe3JldHVybiEoIW8odCl8fCIiIT09dCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4hIW4odCkmJjA9PT10Lmxlbmd0aH0odCl8fCEhdSh0KSkpKSl9ZnVuY3Rpb24gZih0KXtyZXR1cm4hKCFvKHQpfHwiIj09PXQpfXZhciBsPS9ccy87dmFyIGE9L15ccysvO2Z1bmN0aW9uIHModCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aDtyLS0mJmwudGVzdCh0LmNoYXJBdChyKSk7KTtyZXR1cm4gcn0odCkrMSkucmVwbGFjZShhLCIiKTp0fWZ1bmN0aW9uIHAodCl7dmFyIHI9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09cnx8ImZ1bmN0aW9uIj09cil9dmFyIHk9Im9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbCYmZ2xvYmFsLk9iamVjdD09PU9iamVjdCYmZ2xvYmFsLGI9Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixoPXl8fGJ8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksdj1oLlN5bWJvbCxnPU9iamVjdC5wcm90b3R5cGUsaj1nLmhhc093blByb3BlcnR5LFM9Zy50b1N0cmluZyxkPXY/di50b1N0cmluZ1RhZzp2b2lkIDA7dmFyIG09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgTz0iW29iamVjdCBOdWxsXSIseD0iW29iamVjdCBVbmRlZmluZWRdIixSPXY/di50b1N0cmluZ1RhZzp2b2lkIDA7ZnVuY3Rpb24gdyh0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA9PT10P3g6TzpSJiZSIGluIE9iamVjdCh0KT9mdW5jdGlvbih0KXt2YXIgcj1qLmNhbGwodCxkKSxlPXRbZF07dHJ5e3RbZF09dm9pZCAwO3ZhciBuPSEwfWNhdGNoKHQpe312YXIgaT1TLmNhbGwodCk7cmV0dXJuIG4mJihyP3RbZF09ZTpkZWxldGUgdFtkXSksaX0odCk6ZnVuY3Rpb24odCl7cmV0dXJuIG0uY2FsbCh0KX0odCl9dmFyIE49IltvYmplY3QgU3ltYm9sXSI7ZnVuY3Rpb24gJCh0KXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHR8fGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9KHQpJiZ3KHQpPT1OfXZhciBBPU5hTixrPS9eWy0rXTB4WzAtOWEtZl0rJC9pLEY9L14wYlswMV0rJC9pLEk9L14wb1swLTddKyQvaSxxPXBhcnNlSW50O2Z1bmN0aW9uIEUodCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKCQodCkpcmV0dXJuIEE7aWYocCh0KSl7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9cChyKT9yKyIiOnJ9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9cyh0KTt2YXIgZT1GLnRlc3QodCk7cmV0dXJuIGV8fEkudGVzdCh0KT9xKHQuc2xpY2UoMiksZT8yOjgpOmsudGVzdCh0KT9BOit0fXZhciBMPTEvMCxNPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBQKHQpe3JldHVybiB0Pyh0PUUodCkpPT09THx8dD09PS1MPyh0PDA/LTE6MSkqTTp0PT10P3Q6MDowPT09dD90OjB9ZnVuY3Rpb24gVCh0KXt2YXIgcj1QKHQpLGU9ciUxO3JldHVybiByPT1yP2U/ci1lOnI6MH1mdW5jdGlvbiBVKHQpe2xldCByPSExO2lmKGYodCkpcj0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYodSh0KSlyZXR1cm4hMTtyPSEwfXJldHVybiByfWZ1bmN0aW9uIEQodCl7aWYoIVUodCkpcmV0dXJuIDA7cmV0dXJuIFAodCl9ZnVuY3Rpb24gVyh0KXtyZXR1cm4hIVUodCkmJih0PUQodCksIm51bWJlciI9PXR5cGVvZihyPXQpJiZyPT1UKHIpKTt2YXIgcn12YXIgXz1BcnJheS5pc0FycmF5LHo9MS8wLEI9dj92LnByb3RvdHlwZTp2b2lkIDAsQz1CP0IudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIEcodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKF8odCkpcmV0dXJuIGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLGk9QXJyYXkobik7KytlPG47KWlbZV09cih0W2VdLGUsdCk7cmV0dXJuIGl9KHQsRykrIiI7aWYoJCh0KSlyZXR1cm4gQz9DLmNhbGwodCk6IiI7dmFyIHI9dCsiIjtyZXR1cm4iMCI9PXImJjEvdD09LXo/Ii0wIjpyfWZ1bmN0aW9uIEgodCl7cmV0dXJuIG51bGw9PXQ/IiI6Ryh0KX12YXIgSj1oLmlzRmluaXRlLEs9TWF0aC5taW47dmFyIFEsVj0oUT1NYXRoWyJyb3VuZCJdLGZ1bmN0aW9uKHQscil7aWYodD1FKHQpLChyPW51bGw9PXI/MDpLKFQociksMjkyKSkmJkoodCkpe3ZhciBlPShIKHQpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChlPShIKFEoZVswXSsiZSIrKCtlWzFdK3IpKSkrImUiKS5zcGxpdCgiZSIpKVswXSsiZSIrKCtlWzFdLXIpKX1yZXR1cm4gUSh0KX0pO2Z1bmN0aW9uIFgodCl7aWYoIVUodCkpcmV0dXJuIDA7dD1EKHQpO2xldCByPVYodCk7cmV0dXJuIjAiPT09U3RyaW5nKHIpPzA6cn1mdW5jdGlvbiBZKHQpe2lmKCFXKHQpKXJldHVybiExO3JldHVybiBYKHQpPj0wfWZ1bmN0aW9uIFoodCxyKXtpZighZih0KSlyZXR1cm4iIjtpZighWShyKSlyZXR1cm4iIjtpZigwPT09KHI9WChyKSkpcmV0dXJuIiI7bGV0IGU9dC5sZW5ndGgtcjtyZXR1cm4gZTwwJiYoZT0wKSx0LnN1YnN0cmluZyhlLGUrcil9ZnVuY3Rpb24gdHQodCxyKXtyZXR1cm4gZih0KSYmWShyKT8wPT09KHI9WChyKSk/dDpmdW5jdGlvbih0LHIpe3JldHVybiBmKHQpJiZZKHIpPzA9PT0ocj1YKHIpKT8iIjp0LnN1YnN0cmluZygwLHIpOiIifSh0LHQubGVuZ3RoLXIpOiIifWZ1bmN0aW9uIHJ0KHQpe2lmKCFmKHQpKXJldHVybntwYXRoOiIiLGlzUm9vdDohMX07Zm9yKDt0LmluZGV4T2YoIlxcXFwiKT49MDspdD10LnJlcGxhY2UoIlxcXFwiLCJcXCIpO2Zvcig7dC5pbmRleE9mKCIvLyIpPj0wOyl0PXQucmVwbGFjZSgiLy8iLCIvIik7aWYoIjoiPT09Wih0LDEpKXJldHVybntwYXRoOmAke3R9XFxgLGlzUm9vdDohMH07aWYoIlxcIj09PVoodCwxKSl7bGV0IHI9dHQodCwxKTtyZXR1cm4iOiI9PT1aKHIsMSk/e3BhdGg6dCxpc1Jvb3Q6ITB9OntwYXRoOnIsaXNSb290OiExfX1pZigiLyI9PT1aKHQsMSkpe2xldCByPXR0KHQsMSk7cmV0dXJuIDA9PT1yLmxlbmd0aD97cGF0aDp0LGlzUm9vdDohMH06e3BhdGg6cixpc1Jvb3Q6ITF9fXJldHVybntwYXRoOnQsaXNSb290OiExfX1mdW5jdGlvbiBldCh0KXtpZighZih0KSlyZXR1cm4iIjtsZXQgcj1ydCh0KTtpZihyLmlzUm9vdClyZXR1cm4gci5wYXRoO2xldCBlPWZ1bmN0aW9uKHQpe2lmKCFmKHQpKXJldHVybiIiO2xldCByPXJ0KHQpO2lmKHIuaXNSb290KXJldHVybiByLnBhdGg7bGV0IGU9ci5wYXRoO3RyeXtlPWUuc3BsaXQoIlxcIikucG9wKCkuc3BsaXQoIi8iKS5wb3AoKX1jYXRjaCh0KXt9cmV0dXJuIGV9KHQ9ci5wYXRoKTtpZighZihlKSlyZXR1cm4gdDtsZXQgbj1ydCh0PXR0KHQsZS5sZW5ndGgpKTtyZXR1cm4gbi5pc1Jvb3Qsbi5wYXRofWZ1bmN0aW9uIG50KHQpe3JldHVybiEhci5leGlzdHNTeW5jKHQpJiYoIXIubHN0YXRTeW5jKHQpLmlzRmlsZSgpJiYhci5sc3RhdFN5bmModCkuaXNTeW1ib2xpY0xpbmsoKSl9ZnVuY3Rpb24gaXQodCl7cmV0dXJuISFyLmV4aXN0c1N5bmModCkmJighci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIG90KHQpe2lmKCFyLmV4aXN0c1N5bmModCkpcmV0dXJue3N1Y2Nlc3M6ImZpbGUgZG9lcyBub3QgZXhpc3Q6ICIrdH07aWYoIWl0KHQpKXJldHVybntlcnJvcjoiaW5wdXQgcGF0aCBpcyBub3QgYSBmaWxlOiAiK3R9O3RyeXtyLnVubGlua1N5bmModCl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOnR9fXJldHVybntzdWNjZXNzOiJkb25lOiAiK3R9fWFzeW5jIGZ1bmN0aW9uIHV0KHQsaSxvKXtsZXQgdT0iIjtpZighbihmPWkpfHwwPT09Zi5sZW5ndGh8fDE9PT1mLmxlbmd0aCYmYyhmWzBdKSl0aHJvdyBuZXcgRXJyb3IoImZwc0luIGluIG5vdCBhbiBlZmZlY3RpdmUgYXJyYXkiKTt2YXIgZjtsZXQgbD1ldChvKTtudChsKXx8ZnVuY3Rpb24odCl7aWYobnQodCkpcmV0dXJue3N1Y2Nlc3M6ImlucHV0IGZvbGRlciBpcyBhbHJlYWR5IGV4aXN0czogIit0fTtpZihyLmV4aXN0c1N5bmModCkpcmV0dXJue2Vycm9yOiJpbnB1dCBwYXRoIGFscmVhZHkgZXhpc3RzOiAiK3R9O3RyeXtyLm1rZGlyU3luYyh0LHtyZWN1cnNpdmU6ITB9KX1jYXRjaCh0KXtyZXR1cm57ZXJyb3I6dH19fShsKTtsZXQgYT1lKCk7dHJ5e2xldCBuPXIuY3JlYXRlV3JpdGVTdHJlYW0obyk7Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspe2xldCBvPWlbdF07aWYoIWl0KG8pKXRocm93IG5ldyBFcnJvcihgZnBJblske299XSBpcyBub3QgYSBmaWxlYCk7bGV0IGM9KCk9PntsZXQgdD1lKCksaT1yLmNyZWF0ZVJlYWRTdHJlYW0obyk7cmV0dXJuIGkub24oImVycm9yIiwocj0+e3U9ci5tZXNzYWdlLHQucmVqZWN0KHIpfSkpLGkub24oImVuZCIsKCgpPT57b3QobyksdC5yZXNvbHZlKCl9KSksaS5waXBlKG4se2VuZDohMX0pLHR9O2F3YWl0IGMoKX1uLmVuZCgpLG4ub24oImVycm9yIiwodD0+e3U9dC5tZXNzYWdlLGEucmVqZWN0KHUpfSkpLG4ub24oImZpbmlzaCIsKCgpPT57bGV0IHI9e2ZpbGVuYW1lOnQscGF0aDpvfTthLnJlc29sdmUocil9KSl9Y2F0Y2godCl7dT10Lm1lc3NhZ2UsYS5yZWplY3QodSl9cmV0dXJuIGF9bGV0IG1lcmdlRmlsZXM9YXN5bmMocixlLG4saSk9PntsZXQgbz1bXTtmb3IobGV0IGk9MDtpPG47aSsrKXtsZXQgbj10LmpvaW4ocixgJHtlfV8ke2l9YCk7by5wdXNoKG4pfWxldCB1PXQuam9pbihyLGUpO3JldHVybiBhd2FpdCB1dChpLG8sdSl9OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogbWVyZ2VGaWxlcwogICAgICAgIH0KICAgICAgICAKCiAgICAvL29uCiAgICAKCiAgICAvL3NhdmUKICAgIGluc3RhbmNlID0gcgoKfQoKZnVuY3Rpb24gc2VuZE1lc3NhZ2UoZGF0YSkgewogICAgCiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShkYXRhKQogICAgICAgIAp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtZXJnZUZpbGVzCiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgCiAgICAgICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdlbWl0JywKICAgICAgICAgICAgICAgIGV2TmFtZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgIG1zZzogZXJyLAogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICAgICAgfQogICAgICAgICAgICAKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9mdW4KICAgICAgICAgICAgbGV0IGZ1biA9IGluc3RhbmNlW2RhdGEuZnVuXQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CgogICAgICAgICAgICAvL2V4ZWMKICAgICAgICAgICAgYXdhaXQgZnVuKC4uLmlucHV0KQogICAgICAgICAgICAgICAgLnRoZW4oKHN1YykgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdzdWNjZXNzJwogICAgICAgICAgICAgICAgICAgIG1zZz1zdWMKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdlcnJvcicKICAgICAgICAgICAgICAgICAgICBtc2c9ZXJyCiAgICAgICAgICAgICAgICB9KQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KICAgICAgICAKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIHJlY3ZNZXNzYWdlKGUuZGF0YSkKICAgICAgICB9CiAgICAgICAgCgp0cnl7CiAgICBwcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuaGFuZGxlZFJlamVjdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCBlcnIpCiAgICB9KQp9CmNhdGNoKGVycil7fQoK");function C(){let C=new K,g=function(I){try{let C=new Blob([I]),g=window.URL||window.webkitURL;return new Worker(g.createObjectURL(C))}catch(I){t(I)}}(I);if(!g)return t("invalid worker"),null;function e(){let I=function(){let I,C,g=new Promise((function(){I=arguments[0],C=arguments[1]}));return g.resolve=I,g.reject=C,g}(),e=function(){let I=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,C=[],g="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),e=g.length;for(let t=0;t<I;t++)C[t]=g[0|Math.random()*e];return C.join("")}(),t={mode:"call",id:e,fun:"main",input:[...arguments]};return g.postMessage(t),C.once(e,(C=>{"success"===C.state?I.resolve(C.msg):I.reject(C.msg)})),I}function t(I){C.emit("error",I)}return g.onmessage=function(I){!function(I){let g=I,e=g.mode;"emit"!==e&&"return"!==e||("emit"===e&&C.emit(g.evName,g.msg),"return"===e&&C.emit(g.id,g))}(I.data)},g.onerror=t,g.onmessageerror=function(I){t(I.data)},function(){let I={mode:"init",type:"function",input:[...arguments]};g.postMessage(I)}([...arguments]),C.main=e,C.main=e,C.terminate=function(){g?(g.terminate(),g=void 0):t("worker has been terminated")},C}y=async function(){let I=[...arguments],g=C();return await g.main(...I).finally((()=>{g.terminate()}))}}();try{process.on("unhandledRejection",(I=>{console.log("outer:unhandledRejection",I)})),process.on("uncaughtException",(I=>{console.log("outer:uncaughtException",I)})),process.on("uncaughtExceptionMonitor",(I=>{console.log("outer:uncaughtExceptionMonitor",I)}))}catch(I){}return y}()}({get exports(){return e},set exports(I){e=I}});var t=e;let c;return c="undefined"!=typeof window&&void 0!==window.document?t:g,c}));
package/srv.mjs CHANGED
@@ -73,6 +73,44 @@ wo.on('upload', (input, pm) => {
73
73
  pm.reject('upload error')
74
74
  }
75
75
 
76
+ })
77
+ wo.on('download', (input, pm) => {
78
+ console.log(`Server[port:${opt.port}]: download`, input)
79
+
80
+ try {
81
+ ms.push({ 'download': input })
82
+
83
+ //fp
84
+ let fp = `./test/1mb.7z`
85
+
86
+ //streamRead
87
+ let streamRead = fs.createReadStream(fp)
88
+
89
+ //fileName
90
+ let fileName = `1mb.7z`
91
+
92
+ //fileSize
93
+ let stats = fs.statSync(fp)
94
+ let fileSize = stats.size
95
+
96
+ //fileType
97
+ let fileType = 'application/x-7z-compressed'
98
+
99
+ //output
100
+ let output = {
101
+ streamRead,
102
+ fileName,
103
+ fileSize,
104
+ fileType,
105
+ }
106
+
107
+ pm.resolve(output)
108
+ }
109
+ catch (err) {
110
+ console.log('download error', err)
111
+ pm.reject('download error')
112
+ }
113
+
76
114
  })
77
115
  wo.on('error', (err) => {
78
116
  console.log(`Server[port:${opt.port}]: error`, err)
@@ -85,7 +123,7 @@ setTimeout(() => {
85
123
  console.log('ms', ms)
86
124
  // console.log('ms', JSON.stringify(ms))
87
125
  wo.stop()
88
- }, 3000)
126
+ }, 1003000)
89
127
 
90
128
 
91
129
  //node --experimental-modules srv.mjs
package/test/1mb.7z CHANGED
Binary file
@@ -0,0 +1,166 @@
1
+ import assert from 'assert'
2
+ import fs from 'fs'
3
+ // import _ from 'lodash-es'
4
+ import w from 'wsemi'
5
+ import WConverhpServer from '../src/WConverhpServer.mjs'
6
+ import WConverhpClient from '../src/WConverhpClient.mjs'
7
+
8
+
9
+ describe('downloadLargeFile', function() {
10
+
11
+ let msAll = []
12
+
13
+ let runServer = () => {
14
+
15
+ let ms = []
16
+
17
+ let opt = {
18
+ port: 8083, //同時test故得要不同port
19
+ apiName: 'api',
20
+ pathStaticFiles: '.', //要存取專案資料夾下web.html, 故不能給dist
21
+ verifyConn: async ({ apiType, authorization, headers, query }) => {
22
+ // console.log('verifyConn', `apiType[${apiType}]`, `authorization[${authorization}]`)
23
+ let token = w.strdelleft(authorization, 7) //刪除Bearer
24
+ if (!w.isestr(token)) {
25
+ return false
26
+ }
27
+ // await w.delay(3000)
28
+ return true
29
+ },
30
+ }
31
+
32
+ //new
33
+ let wo = new WConverhpServer(opt)
34
+
35
+ wo.on('download', (input, pm) => {
36
+ // console.log(`Server[port:${opt.port}]: download`, input)
37
+
38
+ try {
39
+ ms.push({ 'download': input })
40
+ // console.log('ms', ms)
41
+ msAll.push({ server: ms })
42
+
43
+ //fp
44
+ let fp = `./test/1mb.7z`
45
+
46
+ //streamRead
47
+ let streamRead = fs.createReadStream(fp) //createReadStream得指定使用test內檔案
48
+
49
+ //fileName
50
+ let fileName = `1mb.7z`
51
+
52
+ //fileSize
53
+ let stats = fs.statSync(fp)
54
+ let fileSize = stats.size
55
+
56
+ //fileType
57
+ let fileType = 'application/x-7z-compressed'
58
+
59
+ //output
60
+ let output = {
61
+ streamRead,
62
+ fileName,
63
+ fileSize,
64
+ fileType,
65
+ }
66
+
67
+ pm.resolve(output)
68
+ }
69
+ catch (err) {
70
+ // console.log('download error', err)
71
+ pm.reject('download error')
72
+ }
73
+
74
+ })
75
+ wo.on('error', () => {
76
+ // console.log(`Server[port:${opt.port}]: error`, err)
77
+ })
78
+ wo.on('handler', (data) => {
79
+ // console.log(`Server[port:${opt.port}]: handler`, data)
80
+ })
81
+
82
+ setTimeout(() => {
83
+ wo.stop()
84
+ }, 2000)
85
+
86
+ }
87
+
88
+ let runClient = () => {
89
+
90
+ let ms = []
91
+
92
+ let opt = {
93
+ FormData,
94
+ url: 'http://localhost:8083', //同時test故得要不同port
95
+ apiName: 'api',
96
+ getToken: () => {
97
+ return 'token-for-test'
98
+ },
99
+ }
100
+
101
+ //new
102
+ let wo = new WConverhpClient(opt)
103
+
104
+ wo.on('error', () => {
105
+ // console.log(`error`, err)
106
+ })
107
+
108
+ function downloadLargeFile() {
109
+ let core = async() => {
110
+
111
+ await wo.download('id-for-file',
112
+ function ({ prog, p, m }) {
113
+ // console.log('client web: download: prog', prog, p, m)
114
+ if (m === 'download') {
115
+ // console.log('client web: download: prog', prog)
116
+ }
117
+ },
118
+ {
119
+ fdDownload: './',
120
+ })
121
+ .then(function(res) {
122
+ // console.log('client web: download: then', res)
123
+
124
+ //getFileName
125
+ res = w.getFileName(res)
126
+ ms.push({ 'download output': res })
127
+
128
+ fs.unlinkSync(res) //測試完刪除臨時檔
129
+
130
+ })
131
+ .catch(function () {
132
+ // console.log('client web: download: catch', err)
133
+ })
134
+
135
+ // console.log('ms', ms)
136
+ msAll.push({ client: ms })
137
+
138
+ }
139
+ core()
140
+ }
141
+
142
+ downloadLargeFile()
143
+
144
+ }
145
+
146
+ let run = () => {
147
+ let pm = w.genPm()
148
+ runServer()
149
+ runClient()
150
+ setTimeout(() => {
151
+ // console.log('msAll', msAll)
152
+ // fs.writeFileSync('./test_downloadLargeFile.json', JSON.stringify(msAll), 'utf8')
153
+ pm.resolve(msAll)
154
+ }, 4000)
155
+ return pm
156
+ }
157
+
158
+ let res = `[{"server":[{"download":{"fileId":"id-for-file"}}]},{"client":[{"download output":"1mb.7z"}]}]`
159
+ it(`should return ${res} when test`, async function() {
160
+ let r = await run()
161
+ r = JSON.stringify(r)
162
+ let rr = res
163
+ assert.strict.deepEqual(r, rr)
164
+ })
165
+
166
+ })
@@ -15,7 +15,7 @@ describe('executeWithFile', function() {
15
15
  let ms = []
16
16
 
17
17
  let opt = {
18
- port: 8081, //8080, //同時test故得要不同port
18
+ port: 8081, //同時test故得要不同port
19
19
  apiName: 'api',
20
20
  pathStaticFiles: '.', //要存取專案資料夾下web.html, 故不能給dist
21
21
  verifyConn: async ({ apiType, authorization, headers, query }) => {
@@ -15,7 +15,7 @@ describe('uploadLargeFile', function() {
15
15
  let ms = []
16
16
 
17
17
  let opt = {
18
- port: 8082, //8080, //同時test故得要不同port
18
+ port: 8082, //同時test故得要不同port
19
19
  apiName: 'api',
20
20
  pathStaticFiles: '.', //要存取專案資料夾下web.html, 故不能給dist
21
21
  verifyConn: async ({ apiType, authorization, headers, query }) => {
@@ -43,7 +43,7 @@ describe('uploadLargeFile', function() {
43
43
  let ts = [t[0], t[1], t[2]]
44
44
  ms.push({ 'receive and return': ts })
45
45
 
46
- fs.unlinkSync(`./${input.path}`) //測試完刪除暫存檔
46
+ fs.unlinkSync(`./${input.path}`) //測試完刪除臨時檔
47
47
 
48
48
  let output = input
49
49
  pm.resolve(output)
@@ -93,14 +93,14 @@ describe('uploadLargeFile', function() {
93
93
  let core = async() => {
94
94
 
95
95
  //u8a
96
- let u8a = new Uint8Array(fs.readFileSync('./test/1mb.7z')) //使用test內檔案
96
+ let u8a = new Uint8Array(fs.readFileSync('./test/1mb.7z')) //readFileSync得指定使用test內檔案
97
97
  // console.log('u8a.length', u8a.length)
98
98
  // console.log('uploadLargeFile u8a', u8a)
99
99
  let t = u8a
100
100
  let ts = [t[0], t[1], t[2]]
101
101
  ms.push({ 'upload u8a.length': ts })
102
102
 
103
- await wo.upload('1mb.7z', u8a,
103
+ await wo.upload('./1mb.7z', u8a,
104
104
  function ({ prog, p, m }) {
105
105
  // console.log('client web: upload: prog', prog, p, m)
106
106
  if (m === 'upload') {
@@ -138,7 +138,7 @@ describe('uploadLargeFile', function() {
138
138
  return pm
139
139
  }
140
140
 
141
- let res = `[{"client":[{"upload u8a.length":[55,122,188]},{"upload output":{"filename":"1mb.7z"}}]},{"server":[{"receive and return":[55,122,188]}]}]`
141
+ let res = `[{"client":[{"upload u8a.length":[55,122,188]},{"upload output":{"filename":"./1mb.7z"}}]},{"server":[{"receive and return":[55,122,188]}]}]`
142
142
  it(`should return ${res} when test`, async function() {
143
143
  let r = await run()
144
144
  r = JSON.stringify(r)
package/web.html CHANGED
@@ -149,6 +149,27 @@
149
149
  core()
150
150
  }
151
151
 
152
+ function downloadLargeFile(){
153
+ let core = async()=>{
154
+
155
+ await wo.download('id-for-file',
156
+ function ({ prog, p, m }) {
157
+ // console.log('client web: download: prog', prog, p, m)
158
+ if (m === 'download') {
159
+ console.log('client web: download: prog', prog)
160
+ }
161
+ })
162
+ .then(function(res) {
163
+ console.log('client web: download: then', res)
164
+ })
165
+ .catch(function (err) {
166
+ console.log('client web: download: catch', err)
167
+ })
168
+
169
+ }
170
+ core()
171
+ }
172
+
152
173
  </script>
153
174
 
154
175
  </head>
@@ -172,7 +193,13 @@
172
193
  <button onclick="uploadLargeFile()">upload large file</button>
173
194
 
174
195
  </div>
175
-
196
+
197
+ <div style="padding:10px;">
198
+
199
+ <button onclick="downloadLargeFile()">download large file</button>
200
+
201
+ </div>
202
+
176
203
  </body>
177
204
 
178
205
  </html>